質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Q&A

解決済

1回答

1584閲覧

cudaでビルドするときエラーがなくてもエラーメッセージが出てくる。

hanamur

総合スコア45

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

0グッド

0クリップ

投稿2022/06/07 18:40

現在visual studio 2022でCUDAを使ってプログラミングしています。

sample.cu

1#include <stdio.h> 2 3__global__ 4void saxpy(int n, float a, float *x, float *y) 5{ 6 int i = blockIdx.x*blockDim.x + threadIdx.x; 7 if (i < n) y[i] = a*x[i] + y[i]; 8} 9 10int main(void) 11{ 12 int N = 1<<20; 13 float *x, *y, *d_x, *d_y; 14 x = (float*)malloc(N*sizeof(float)); 15 y = (float*)malloc(N*sizeof(float)); 16 17 cudaMalloc(&d_x, N*sizeof(float)); 18 cudaMalloc(&d_y, N*sizeof(float)); 19 20 for (int i = 0; i < N; i++) { 21 x[i] = 1.0f; 22 y[i] = 2.0f; 23 } 24 25 cudaMemcpy(d_x, x, N*sizeof(float), cudaMemcpyHostToDevice); 26 cudaMemcpy(d_y, y, N*sizeof(float), cudaMemcpyHostToDevice); 27 28 // Perform SAXPY on 1M elements 29 saxpy<<<(N+255)/256, 256>>>(N, 2.0f, d_x, d_y); 30 31 cudaMemcpy(y, d_y, N*sizeof(float), cudaMemcpyDeviceToHost); 32 33 float maxError = 0.0f; 34 for (int i = 0; i < N; i++) maxError = max(maxError, abs(y[i]-4.0f)); 35 printf("Max error: %f", maxError); 36}

これは
https://developer.nvidia.com/blog/easy-introduction-cuda-c-and-c/
からコピペしたサンプルプログラムです。これをvisual studio2022で
ソリューションのビルドを行ったのですが、例えばC++だとビルドが失敗するレベルの
エラーメッセージが出てきます。
・この宣言にはストレージクラスまたは型指定子がありません
・';'が必要です。
・宣言が必要です
・この宣言にはストレージクラスまたは型指定子がありません
・識別子"maxError"が定義されていません
・宣言が必要です
ビルド自体は成功しますし出力される結果も予定通りのものです。
これを解消する方法をご存じの方いればどうかよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/06/07 22:53

エラーが出たなら、エラーメッセージを提示しましょう エラーメッセージは、よけいな省略翻訳しないで出たそのママをコピペで提示してください
guest

回答1

0

ベストアンサー

~.cu はC++だとビルドが失敗するレベルで言語拡張されています。
Visual StudioはそれをC++文法に則って解釈し、件のerror/warningをレポートしています。
ビルドできているなら問題ありません、見て見ぬフリしてください。

投稿2022/06/07 23:21

編集2022/06/07 23:40
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hanamur

2022/06/08 15:56

ありがとうございます。 しかし、どこか(わからない)にエラーのあるコードをかいた時、 質問に書いたエラーが原因として表示されビルドが失敗に終わってしまい、コードのどこに原因があるのか わからないということがあり苦労しています。 visual studio以外ででも、なんとかこれを解消する方法をご存じありませんか。 どうかよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問