xmake新增对Cuda代码编译支持的示例分析

发布时间:2021-12-08 15:51:09 作者:柒染
来源:亿速云 阅读:134

这篇文章给大家介绍xmake新增对Cuda代码编译支持的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

最近研究了下NVIDIA Cuda Toolkit的编译环境,并且在xmake 2.1.10开发版中,新增了对cuda编译环境的支持,可以直接编译*.cu代码。

下载安装好Cuda SDK后,在macosx上回默认安装到/Developer/NVIDIA/CUDA-x.x目录下,Windows上可以通过CUDA_PATH的环境变量找到对应的SDK目录,而 Linux下默认会安装到/usr/local/cuda目录下。

xmake在执行$ xmake 命令编译*.cu代码的时候,会尝试探测这些默认的安装目录,然后尝试调用nvcc编译器直接编译cuda程序,大部分情况下只需要执行:

$ xmake
创建和编译Cuda工程

我之前编译之前,我们可以通过xmake创建一个空的cuda工程,例如:

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

通过-l参数指定创建一个cuda代码工程,工程名为test,执行输出如下:

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

我们也可以尝试直接运行这个cuda程序:

$ xmake run

接着我们来看下,这个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++的工程描述类似,唯一的区别就是通过add_cuflags设置了一些cuda代码特有的编译选项,这部分配置根据用户的需求,可自己调整。

关于add_cuflags的更多说明,可阅读xmake的官方文档。

Cuda编译环境的配置

默认情况下,xmake都能成功检测到系统中安装的Cuda SDK环境,用户不需要做额外的配置操作,当然如果遇到检测不到的情况,用户也可以手动指定Cuda SDK的路径:

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

来告诉xmake,你当前的Cuda SDK的安装目录在哪里。

如果想要测试xmake对当前cuda环境的探测支持,可以直接运行:

$ 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对cuda的支持情况和进展,见:issues #158。

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

xmake新增对Cuda代码编译支持的示例分析

关于xmake新增对Cuda代码编译支持的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. nginx 编译新增加模块
  2. 对HTML5中表单新增属性的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

cuda xmake

上一篇:如何进行@Aspect注解的详细分析

下一篇:xmake v2.1.3版本中如何修复安全和稳定性问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》