これは非常に基本的な質問ですが、Visual Studio 2008で新しいCUDAプロジェクトを開始するにはどうすればよいですか? CUDA関連の問題に関する膨大な量のドキュメントを見つけましたが、新しいプロジェクトを開始する方法については何もありません。私はWindows 7 x64 Visual Studio 2008 C++を使用しています。基本的なプログラムをコンパイルして実行するために、本当に本当に基本的なHello Worldアプリを見つけたいと思っています。
編集:
私はあなたの手順トムを試してみました。コンソールアプリをセットアップしました。次に、デフォルトの.cppを削除し、それをドロップして、コンパイルするためにテンプレートプロジェクトから3つのファイルをコピーしました。それをコンパイルすると、stdafx.hが含まれていないとtemplate_gold.cppが不平を言ったので、それを含めました。ビルドはこれで失敗します:
1> ------ビルドが開始されました:プロジェクト:CUDASandbox、構成:Debug x64 ------ 1>コンパイルしています... 1> template_gold。 cpp 1>リンクしています... 1> LIBCMT.lib(crt0.obj):エラーLNK2019:関数__tmainCRTStartup 1> D:\ Stuffで参照されている未解決の外部シンボルメイン\ Programming\Visual Studio 2008\Projects\CUDASandbox\x64\Debug\CUDASandbox.exe:fatal error LNK1120:1 unresolved externals 1> Build log was saved at "file:// d:\ Stuff\Programming\Visual Studio 2008\Projects\CUDASandbox\CUDASandbox\x64\Debug\BuildLog.htm " 1> CUDASandbox-2 error(s)、0 warning(s) ======= ===ビルド:0成功、1失敗、0最新、0スキップ==========
[〜#〜] note [〜#〜]CUDAツールキットのバージョン3.2のリリースに伴い、NVIDIAにはSDKとは対照的に、ツールキットを含むrulesファイル。したがって、私はこの答えを2つに分けました。使用しているツールキットのバージョンに合った正しい手順を使用してください。
[〜#〜] note [〜#〜]これらの手順は、Visual Studio 2005および2008に有効です。VisualStudioの場合2010参照 この答え 。
CUDA TOOLKIT 3.2以降
NVIDIAが提供する_NvCudaRuntimeApi.rules
_ファイル(またはドライバーAPIを使用する場合は_NvCudaDriverApi.rules
_)を使用することをお勧めします。これはツールキットでリリースされ、最新のコンパイラフラグをわかりやすくサポートしています。個人的には、VSウィザードを使用しないことをお勧めしますが、それは本当に必要だとは思わないからです。
ルールファイル(_Program Files\Microsoft Visual Studio 9.0\VC\VCProjectDefaults
_ディレクトリにインストール)は、プロジェクト内の.cuファイルをコンパイルしてアプリケーションにリンクする方法をVisual Studioに「教えます」。
NvCudaRuntimeApi.rules
_を追加します(プロジェクトを右クリックしますカスタムビルドルール、関連するボックスをチェックします)、注記 1 を参照してください$(CUDA_PATH)\lib\$(PlatformName)
をAdditionalライブラリディレクトリおよびLinker-> Inputに_cudart.lib
_をAdditional Dependencies)に追加します。注記[2]および[3]を参照してください$(CUDA_PATH)\include
をAdditional Include Directories)に追加します。注記[3]を参照してくださいその他のヒント:
<sdk_install_dir>\C\doc\syntax_highlighting\visual_studio_8
_のreadme.txtを参照してくださいまた、次のレジストリエントリでIntellisenseサポートを有効にすることをお勧めします(VS2008ではなく、VS2005の9.0を8.0に置き換えます)。
_[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Languages\Language Services\C/C++]
"NCB Default C/C++ Extensions"=".cpp;.cxx;.c;.cc;.h;.hh;.hxx;.hpp;.inl;.tlh;.tli;.cu;.cuh;.cl"
_
ちなみに私は、可能であればcutilを避け、代わりに独自のチェックを行うことを推奨します。 CutilはNVIDIAでサポートされていません。これは、SDKの例を実際のプログラムとアルゴリズムの設計に焦点を合わせたままにし、すべての例で同じことを繰り返さないようにするために使用されます(例:コマンドラインの解析)。あなたがあなた自身のものを書くならば、あなたははるかに優れた制御を持ち、何が起こっているかを知るでしょう。たとえば、cutilSafeCall
ラッパーは、関数が失敗した場合にexit()
を呼び出します。実際のアプリケーション(サンプルではなく)は、おそらくよりエレガントに失敗を処理する必要があります。
CUDA TOOLKIT 3.1以前
私は、SDKとともにNVIDIAによって提供される_Cuda.rules
_ファイルを使用します。これは、ツールキットと一緒にリリースされ、フレンドリーな方法で最新のコンパイラフラグをサポートします。個人的には、VSウィザードを使用しないことをお勧めしますが、それは本当に必要だとは思わないからです。
ルールファイル(SDKのC\commonディレクトリにあります)は、プロジェクト内の.cuファイルをコンパイルしてアプリケーションにリンクする方法をVisual Studioに「教えます」。
Cuda.rules
_を追加します(プロジェクトを右クリックしますカスタムビルドルール、ルールファイルを参照し、チェックされていることを確認します)$(CUDA_LIB_PATH)
をAdditionalライブラリディレクトリおよびLinker-> Inputに_cudart.lib
_をAdditional Dependencies)に追加します。以下の注[2]を参照してください$(CUDA_INC_PATH)
をAdditional Include Directories)に追加しますその他のヒント:
<sdk_install_dir>\C\doc\syntax_highlighting\visual_studio_8
_のreadme.txtを参照してくださいまた、次のレジストリエントリでIntellisenseサポートを有効にすることをお勧めします(VS2008ではなく、VS2005の9.0を8.0に置き換えます)。
_[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Languages\Language Services\C/C++]
"NCB Default C/C++ Extensions"=".cpp;.cxx;.c;.cc;.h;.hh;.hxx;.hpp;.inl;.tlh;.tli;.cu;.cuh;.cl"
_
ちなみに私は、可能であればcutilを避け、代わりに独自のチェックを行うことを推奨します。 CutilはNVIDIAでサポートされていません。これは、SDKの例を実際のプログラムとアルゴリズムの設計に焦点を合わせたままにし、すべての例で同じことを繰り返さないようにするために使用されます(例:コマンドラインの解析)。あなたがあなた自身のものを書くならば、あなたははるかに優れた制御を持ち、何が起こっているかを知るでしょう。たとえば、cutilSafeCall
ラッパーは、関数が失敗した場合にexit()
を呼び出します。実際のアプリケーション(サンプルではなく)は、おそらくよりエレガントに失敗を処理する必要があります。
[〜#〜]ノート[〜#〜]
NvCudaRuntimeApi.v3.2.rules
_。これは、%CUDA_PATH%でCUDAツールキットを探す代わりに、%CUDA_PATH_V3_2%を探すことを意味します。つまり、システムに複数のバージョンのCUDAツールキットをインストールし、さまざまなプロジェクトでさまざまなバージョンをターゲットにすることができます。注[3]も参照してください。LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs
_)または標準ライブラリ関数用に複数定義されたシンボルに関するエラーがある場合は、これが最初の疑いです。なんて素晴らしい質問だ!そこにあるすべてのCUDAドキュメンテーションについて、これは私がいつも明らかな省略だと思っていたものです...実際、私はこの投稿を見つけて本当にうれしいです。なぜなら、CUDAをしばらく使用した後も、 t VSがCUDAプログラムを最初から作成するための公式の正しい方法を見つけました。
新しいCUDAプログラムを開始する必要があるときは、常にSDKディレクトリから "template"の例をコピーして変更しました。これは最初から始まっていないので、あなたが探しているものとは正確には一致しないかもしれませんが、CUDA対応にするための簡単な方法ですすべての正しいプロジェクト/ファイル名でVSで作業しているプロジェクト...
このガイドをご覧になることをお勧めします: http://www.programmerfish.com/how-to-run-cuda-on-visual-studio-2008-vs08/
VS2008へのCUDAウィザードのインストールに関する追加情報は、 ここ および ここ にあります。
[編集]
ウィザードを使用しない場合は、CUDA lib/include/nvccパスを手動でセットアップし、新しいCUDAプログラムごとにカスタムビルドルールを追加する必要があります。詳細については、トムの回答をご覧ください。