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

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

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

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

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

1回答

1235閲覧

C4819エラーについて

another

総合スコア8

CUDA

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

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

0クリップ

投稿2018/02/01 07:05

前提・実現したいこと

cudaを用いて粒子法解析のサンプルプログラムを動かそうとしましたところ以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Warning 1 warning C4819: The file contains a character that cannot be represented in the current code page (932). Save the file in Unicode format to prevent data loss C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include\cuda_runtime.h 1 1 simpleGL
エラーメッセージ
Warning 2 warning C4819: The file contains a character that cannot be represented in the current code page (932). Save the file in Unicode format to prevent data loss c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\cuda_runtime_api.h 1950 1 simpleGL

該当のソースコード

ソースコード #include <helper_math.h> #define PI 3.141592653589793 // GPU処理. #define d_U(x, y, t) (- 2.0f * __cosf(PI * (t) / 8.0f) * __sinf(PI * (x)) * __sinf(PI * (x)) * __cosf(PI * (y)) * __sinf(PI * (y))) #define d_V(x, y, t) (2.0f * __cosf(PI * (t) / 8.0f) * __cosf(PI * (x)) * __sinf(PI * (x)) * __sinf(PI * (y)) * __sinf(PI * (y))) // GPU用ルンゲ・クッタ法 __global__ void d_RungeKutta(unsigned int num_particles, float(*pos)[2], float time, float dt) // unsigned int num_particles; 粒子の総数. // float (*pos)[2]; 粒子位置. // float time; 時刻. // float dt; 時間刻み. { unsigned int index; float xn, yn, p1, q1, p2, q2, p3, q3, p4, q4; float x, y, t; // 処理対象の粒子の決定. index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= num_particles) return; xn = pos[index][0]; yn = pos[index][1]; // 1段目. p1 = d_U(xn, yn, time); q1 = d_V(xn, yn, time); // 2段目. x = xn + 0.5f * p1 * dt; y = yn + 0.5f * q1 * dt; t = time + 0.5f * dt; p2 = d_U(x, y, t); q2 = d_V(x, y, t); // 3段目. x = xn + 0.5f * p2 * dt; y = yn + 0.5f * q2 * dt; t = time + 0.5f * dt; p3 = d_U(x, y, t); q3 = d_V(x, y, t); // 4段目. x = xn + p3 * dt; y = yn + q3 * dt; t = time + dt; p4 = d_U(x, y, t); q4 = d_V(x, y, t); // 粒子位置の更新. pos[index][0] = xn + (p1 + 2 * p2 + 2 * p3 + p4) / 6.0f * dt; pos[index][1] = yn + (q1 + 2 * q2 + 2 * q3 + q4) / 6.0f * dt; } // GPU処理の起動. void launchGPUKernel(unsigned int num_particles, float(*pos)[2], float time, float dt) // unsigned int num_particles; 粒子の総数. // float (*pos)[2]; 粒子位置. // float time; 時刻. // float dt; 時間刻み. { dim3 grid(num_particles / 512 + 1, 1); dim3 block(512, 1, 1); d_RungeKutta <<< grid, block >> > (num_particles, pos, time, dt); } ### 試したこと ネットをみてファイルをunicode形式にしようとしましたが元からutf-8になっていました ### 補足情報(FW/ツールのバージョンなど) visual studio 2013 cuda9.1を使用しています。 また、今回使用したサンプルプログラムは参考書に書いてあるものをネットからダウンロードしました。 参考書が使用したバージョンはvisual studio 2010 cuda7.0となっています。 ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

それはwarningであり、errorではありません。

えー...結論から言うと「無視しなさい」
気になって仕方ないなら、コンパイル・オプション -wd4819 を追加しなさい。

CUDAヘッダが BOMなしUTF-8 であることが原因です。

投稿2018/02/01 07:08

episteme

総合スコア16614

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問