2017-10-02 21 views
0

cuda.hファイルとcudaライブラリ(特にMLライブラリ)に依存するさまざまなGoライブラリがあります。私はWindows上でこれらのライブラリのいずれかをインストールしようとするたびに、私はエラーを取得する私は何をする必要があるかを認識していWindows上でcudaを使用しようとしています

fatal error: cuda.h: No such file or directory 
//#include <cuda.h> 

を言って(私がしようとしています、外出先ライブラリにクーダライブラリ/ヘッダファイルをリンクしますインストールするには)、しかし、私はWindows上でこれを特に行う方法についてはわかりません。私はさまざまな理由でMSVCではなくGCCを使用していますが、MSVCを使用しようとしても同じ問題がありました。

私はGo envに直接cudaコンパイラ/ヘッダーファイルをリンクすることができますか、手動でGo/cgoコンパイラをCudaヘッダーを保持するディレクトリに向ける必要があります。 ?

これらのライブラリを作成する開発者には尋ねてみましたが、そのほとんどはLinuxユーザーであり、実際にはわかりません。網羅的なGoogle検索が本当に私をどこにも導かないので、私はここで尋ねています。

+1

WindowsマシンにCUDAをインストールしましたか?それが最初のステップになります。また、CUDAを使用する予定の場合、GCCは公式にサポートされているコンパイラではありません。 MSVCを使用してください。 –

+0

もちろん私のマシンにはcudaがインストールされています。 MSVCも同じエラーを表示します。 – Abeltensor

+0

MSVCを使用する場合は、MSVCプロジェクトにインクルードパスを追加して、 'cuda.h 'があるディレクトリを指定します。 –

答えて

1

私は答えを見つけることができました。

窓のCUDAインストーラは奇妙なパスにデフォルトで物事をインストールします。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include 

このパスは、フォルダ名にスペースの結果として、コンパイラのための多くの痛みを引き起こしました。 C:\CUDA\v8.0にCudaを再インストールした後、自分のCGLファイルにCFLAGSとLDFLAGSを適切に追加すると、正常に動作するようになりました。ここでは参考のため

はCFLAGSと私が取得するために使用LDFLAGSはこれが動作するようになっています:これは行くgithub.com/chewxy/cuライブラリと

//#cgo windows LDFLAGS:-LC:/cuda/v8.0/lib/x64 
//#cgo windows CFLAGS: -IC:/cuda/v8.0/include 
import "C" 

ました。また、メンテナが既にバージョン8またはバージョン9を持っていなかったので、新しいフラグをそのライブラリのcgoflags.goファイルに追加しました。私は彼にこれを言及し、彼はそれを後で更新するかもしれないが、今のところそれはあなたがしなければならないことである。

+1

パスを引用符で囲むことで、スペースの問題を回避することができます。 '' C:\ Program Files \ NVIDIA GPUコンピューティングツールキット\ CUDA \ v8.0 \ include ''MSVSプロジェクトの" extra include paths "エントリにパスを入れている場合、これは必要ではありません。 –

+0

私はGCCを使っていました。 MSVSは私がこれでやろうとしていたことに対してはあまり役に立たなかった。私はMSVCのツールベルに私のコンパイラを入れ替えました(そして簡単にLLVMも試しました)。ウィンドウリンカがこれらのタイプの問題でうまくいくかどうかを見てみましたが、実際には同じようには見えませんでした。おそらく、私がcgoで図書館を構築していただけではなく、これが潜在的な解決策になるかもしれませんが、正直言って、ほとんどの場合、パスをより単純なものにする方が良いでしょう。 – Abeltensor

関連する問題