xmakeはCudaコードコンパイルのサポートを追加します

最近、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インストールパッケージをダウンロードしてください。

元のソース:http//tboox.org/cn/2018/03/09/support-cuda/

おすすめ

転載: blog.csdn.net/waruqi/article/details/79662958