2016-08-16 4 views
0

私は助けが必要です。 私はLinuxの新しいユーザーです。私はCUDA Cドライバをインストールしました。私は帯域幅のサンプルをテストし、それはうまく動作します。私はこのプログラムのコンパイル時に:LinuxのCUDA Cのプログラム "Hello world"について

#include <stdio.h> 
__global__ void helloFromGPU (void) 
{ 
printf("Hello World from GPU!\n"); 
} 
int main(void) 
{ 
// hello from cpu 
printf("Hello World from CPU!\n"); 
helloFromGPU <<<1, 10>>>(); 
cudaDeviceReset(); 
return 0; 
} 

をし、そのバイナリを実行しようとした私は

$ ./code_1 
Hello World from CPU! 

を持って、デバイスコードは、文字列を10回繰り返すの予想結果は表示されません。 私はこの結果親愛なるロバートました:私はあなたが@Robertを尋ね行っている

[email protected]:~/Documents/Programming$ cuda-memcheck ./code_1 
    ========= CUDA-MEMCHECK 
    Hello World from CPU! 
    ========= ERROR SUMMARY: 0 errors 
    [email protected]:~/Documents/Programming$ 

を:ここで

$ nvcc --version 
nvcc: NVIDIA (R) Cuda compiler driver 
Copyright (c) 2005-2013 NVIDIA Corporation 
Built on Wed_Jul_17_18:36:13_PDT_2013 
Cuda compilation tools, release 5.5, V5.5.0 
[email protected]:~$ nvidia-smi 
Failed to initialize NVML: Unknown Error 
[email protected]:~$ 
+0

1. 'cudaDeviceReset();'の前に 'cudaDeviceSynchronize();'を追加する。2. 'cuda-memcheck'でコードを実行し、結果を報告する。 –

+0

結果は期待されません。どうしたの? – Yasien

+0

'cuda-memcheck'でコードを実行するときの実際の出力は何ですか?出力をコピーしてあなたの質問に貼り付けてください。質問を編集するには、 'linux''cuda'タグの下の編集リンクをクリックしてください。このように: 'cuda-memcheck。/ code_1' –

答えて

-1

  1. カーネルコードがデバイス
  2. に送られ、それが実行する方法であります
  3. デバイス上でカーネルコードが実行されています。
  4. 結果がCPUに返されます。

デバイスの制御がほとんどないので、printfで返信しないでください。より良いことは、出力を文字列に連結し、それをCPUに送り返すことです。

+0

このコードは、テキストブック "Professional CUDA C Programming"から引用したものです。予想される結果は、「Hello World from GPU!」という香りの繰り返しです。 – Yasien

1

CUDAが正しくインストールされていないという問題がありました。

関連する問題