最近、NVIDIA Cuda Toolkitのコンパイル環境を研究しましたが、xmake 2.1.10の開発バージョンでは、cudaコンパイル環境のサポートが追加され、*.cu
コードを直接コンパイルできます。
Cuda Toolkit関連の手順とインストールドキュメントについては、公式ドキュメント:CUDAToolkitドキュメントを参照してください。
Cuda SDKをダウンロードしてインストールした後、macosxのデフォルトの/Developer/NVIDIA/CUDA-x.x
ディレクトリにインストールします。CUDA_PATH
対応するSDKディレクトリはWindowsの環境変数から見つけることができ、
Linuxではデフォルトでディレクトリがインストールされます/usr/local/cuda
。
xmakeが$ xmake
コマンドを実行して*.cu
コードをコンパイルすると、これらのデフォルトのインストールディレクトリを検出し、nvccコンパイラを呼び出してcudaプログラムを直接コンパイルしようとします。ほとんどの場合、実行する必要があるのは次のとおりです。
$ xmake
Cudaプロジェクトを作成してコンパイルする
コンパイルする前に、xmakeを使用して空のcudaプロジェクトを作成できます。次に例を示します。
$ xmake create -l cuda test
$ cd test
$ xmake
-l
パラメータ指定によりcudacodeプロジェクトを作成し、プロジェクト名はtest、実行出力は次のとおりです。
[00%]: ccache compiling.release src/main.cu
[100%]: linking.release test
このcudaプログラムを直接実行することもできます。
$ xmake run
次にxmake.lua
、このcudaプロジェクトのファイルを見てみましょう。
-- define target
target("test")
-- set kind
set_kind("binary")
-- add include directories
add_includedirs("inc")
-- add files
add_files("src/*.cu")
-- generate SASS code for each SM architecture
for _, sm in ipairs({
"30", "35", "37", "50", "52", "60", "61", "70"}) do
add_cuflags("-gencode arch=compute_" .. sm .. ",code=sm_" .. sm)
add_ldflags("-gencode arch=compute_" .. sm .. ",code=sm_" .. sm)
end
-- generate PTX code from the highest SM architecture to guarantee forward-compatibility
sm = "70"
add_cuflags("-gencode arch=compute_" .. sm .. ",code=compute_" .. sm)
add_ldflags("-gencode arch=compute_" .. sm .. ",code=compute_" .. sm)
それらのほとんどはC / C ++プロジェクトの説明に似ていますが、唯一の違いは、add_cuflags
いくつかのcudaコード固有のコンパイルオプションを設定することにより、構成のこの部分をユーザーのニーズに応じて自分で調整できることです。
詳細add_cuflags
な手順については、xmakeの公式ドキュメントを参照してください。
Cudaコンパイル環境の構成
デフォルトでは、xmakeはシステムにインストールされているCuda SDK環境を正常に検出できます。ユーザーは追加の構成操作を行う必要はありません。もちろん、検出されない場合、ユーザーはCudaSDKのパスを手動で指定することもできます。
$ xmake f --cuda_dir=/usr/local/cuda
$ xmake
xmakeに現在のCudaSDKインストールディレクトリがどこにあるか教えてください。
現在のcuda環境に対するxmakeの検出サポートをテストする場合は、直接実行できます。
$ xmake l detect.sdks.find_cuda_toolchains
{
linkdirs =
{
/Developer/NVIDIA/CUDA-9.1/lib
}
, bindir = /Developer/NVIDIA/CUDA-9.1/bin
, includedirs =
{
/Developer/NVIDIA/CUDA-9.1/include
}
, cudadir = /Developer/NVIDIA/CUDA-9.1
}
検出状況をテストするために、関連する検出コードfind_cuda_toolchains.luaを提供して、xmakeの検出プロセスを改善することもできます。
その他の指示
注:現在、cudaのサポートは完了したばかりで、正式なバージョンは発行されていません。xmakeのサポートとprogress cudaの詳細については、AND DELINQUENCY#158を参照してください。
この機能を試してみたい場合は、最新のマスターバージョンをダウンロードしてインストールするか、Windows2.1.10-devインストールパッケージをダウンロードしてください。