溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

xmake新增對(duì)Cuda代碼編譯支持的示例分析

發(fā)布時(shí)間:2021-12-08 15:51:09 來源:億速云 閱讀:118 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹xmake新增對(duì)Cuda代碼編譯支持的示例分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

最近研究了下NVIDIA Cuda Toolkit的編譯環(huán)境,并且在xmake 2.1.10開發(fā)版中,新增了對(duì)cuda編譯環(huán)境的支持,可以直接編譯*.cu代碼。

下載安裝好Cuda SDK后,在macosx上回默認(rèn)安裝到/Developer/NVIDIA/CUDA-x.x目錄下,Windows上可以通過CUDA_PATH的環(huán)境變量找到對(duì)應(yīng)的SDK目錄,而 Linux下默認(rèn)會(huì)安裝到/usr/local/cuda目錄下。

xmake在執(zhí)行$ xmake 命令編譯*.cu代碼的時(shí)候,會(huì)嘗試探測(cè)這些默認(rèn)的安裝目錄,然后嘗試調(diào)用nvcc編譯器直接編譯cuda程序,大部分情況下只需要執(zhí)行:

$ xmake
創(chuàng)建和編譯Cuda工程

我之前編譯之前,我們可以通過xmake創(chuàng)建一個(gè)空的cuda工程,例如:

$ xmake create -l cuda test$ cd test$ xmake

通過-l參數(shù)指定創(chuàng)建一個(gè)cuda代碼工程,工程名為test,執(zhí)行輸出如下:

[00%]: ccache compiling.release src/main.cu
[100%]: linking.release test

我們也可以嘗試直接運(yùn)行這個(gè)cuda程序:

$ xmake run

接著我們來看下,這個(gè)cuda工程的xmake.lua文件:

-- 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++的工程描述類似,唯一的區(qū)別就是通過add_cuflags設(shè)置了一些cuda代碼特有的編譯選項(xiàng),這部分配置根據(jù)用戶的需求,可自己調(diào)整。

關(guān)于add_cuflags的更多說明,可閱讀xmake的官方文檔。

Cuda編譯環(huán)境的配置

默認(rèn)情況下,xmake都能成功檢測(cè)到系統(tǒng)中安裝的Cuda SDK環(huán)境,用戶不需要做額外的配置操作,當(dāng)然如果遇到檢測(cè)不到的情況,用戶也可以手動(dòng)指定Cuda SDK的路徑:

$ xmake f --cuda_dir=/usr/local/cuda$ xmake

來告訴xmake,你當(dāng)前的Cuda SDK的安裝目錄在哪里。

如果想要測(cè)試xmake對(duì)當(dāng)前cuda環(huán)境的探測(cè)支持,可以直接運(yùn)行:

$ 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}

來測(cè)試檢測(cè)情況,甚至可以幫忙貢獻(xiàn)相關(guān)檢測(cè)代碼find_cuda_toolchains.lua來改進(jìn)xmake的檢測(cè)過程。

其他說明

注:目前對(duì)cuda的支持剛剛完成,還沒正式發(fā)版,更多關(guān)于xmake對(duì)cuda的支持情況和進(jìn)展,見:issues #158。

如果要試用此特性,可下載安裝最新master版本,或者下載windows 2.1.10-dev安裝包。

xmake新增對(duì)Cuda代碼編譯支持的示例分析

關(guān)于xmake新增對(duì)Cuda代碼編譯支持的示例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI