2017-02-18 12 views
2

私はVisual Studio Community 2015でCUDA Toolkit 8を使用しています。NVidiaのPDFマニュアル(* .hのエラーチェックなしのマイナスチェック)から単純なベクターの追加を試みると、未定義の値として出力配列が決して満たされなかったことを意味します。私が0でそれをあらかじめ埋めると、それは私が最後に得るすべてです。CUDAカーネルは何も返さない

他にもこの問題があり、間違った計算機能のためにコンパイルされているという人もいます。しかし、私はCompute Capability 5であるはずのNVidia GTX 750 Tiを使用しています。私はCompute Capability 2.0(私のSDKのための最小)と5.0のためにコンパイルを試みました。

「デバイスベクトルA(エラーコード初期化エラー)の割り当てに失敗しました!」というvectoradd.exeのように、プリコンパイルされた例は動作しません。そして、oceanfft.exeは、 "GLSL頂点とフラグメントシェーダーを見つけることができません!" GLSLとフラグメントシェーディングは非常に基本的な機能であるため意味がありません。

私のドライバのバージョンは361.43で、CUDAモードとStellariumのBlender Cyclesなどのアプリは完全に動作します。

#include "cuda_runtime.h" 
#include "device_launch_parameters.h" 

#include <stdio.h> 
#include <iostream> 
#include <algorithm> 
#define N 10 

__global__ void add(int *a, int *b, int *c) { 
    int tid = blockIdx.x; // handle the data at this index 
    if (tid < N) 
     c[tid] = a[tid] + b[tid]; 
} 

int main(void) { 
    int a[N], b[N], c[N]; 
    int *dev_a, *dev_b, *dev_c; 
    // allocate the memory on the GPU 
    cudaMalloc((void**)&dev_a, N * sizeof(int)); 
    cudaMalloc((void**)&dev_b, N * sizeof(int)); 
    cudaMalloc((void**)&dev_c, N * sizeof(int)); 
    // fill the arrays 'a' and 'b' on the CPU 
    for (int i = 0; i<N; i++) { 
     a[i] = -i; 
     b[i] = i * i; 
    } 
    // copy the arrays 'a' and 'b' to the GPU 
    cudaMemcpy(dev_a, a, N * sizeof(int),cudaMemcpyHostToDevice); 
    cudaMemcpy(dev_b, b, N * sizeof(int),cudaMemcpyHostToDevice); 
    add << <N, 1 >> >(dev_a, dev_b, dev_c); 
    // copy the array 'c' back from the GPU to the CPU 
    cudaMemcpy(c, dev_c, N * sizeof(int),cudaMemcpyDeviceToHost); 
    // display the results 
    for (int i = 0; i<N; i++) { 
     printf("%d + %d = %d\n", a[i], b[i], c[i]); 
    } 
    // free the memory allocated on the GPU 
    cudaFree(dev_a); 
    cudaFree(dev_b); 
    cudaFree(dev_c); 
    return 0; 
} 

私はCUDAを開発しようとしているので、任意の助けをいただければ幸いアプリ:ここ

べき作業はコードです。

+0

コードが動作するはずです確認することができます。 – Mikhail

+1

CUDAのインストールが壊れているようです。 361.43はCUDA 8 Windowsインストーラに同梱されているドライバではないため、運用システムを入手するまではそのドライバを使用しているはずです。私の提案は[最新のインストーラをダウンロードする](https://developer.nvidia.com/cuda-downloads)で、CUDA 8を再インストールすることです。[Windows CUDAインストールガイド](http:// docs .nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#abstract)。 –

+0

さて、私は今、最新のCUDA 8.0.61ツールキットをダウンロードして試しており、ドライバのインストールを選択します。私はすでにディスプレイドライバを持っていたので、私は現在のドライバにインストールする必要はないので、ツールキットのドライバをスキップしているに違いありません。 –

答えて

1

これは、CUDA 8ツールキットで互換性のないドライババージョンを使用したことによると思われます。バージョン8ツールキットと共に配布されているドライバをインストールすると、問題が解決しました。

[回答のコメントから組み立ておよびCUDAタグの未回答キューから質問を取得するためにコミュニティのwikiのエントリとして追加]