xmake新增对Cuda代码编译支持
最近研究了下NVIDIA Cuda Toolkit的编译环境,并且在xmake 2.1.10开发版中,新增了对cuda编译环境的支持,可以直接编译*.cu代码。
关于Cuda Toolkit相关说明以及安装文档,可参考官方文档:CUDA Toolkit Documentation。
下载安装好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安装包。

原文出处:http://tboox.org/cn/2018/03/09/support-cuda/
xmake新增对Cuda代码编译支持的更多相关文章
- xmake新增对WDK驱动编译环境支持
xmake v2.2.1新版本现已支持WDK驱动编译环境,我们可以直接在系统原生cmd终端下,执行xmake进行驱动编译,甚至配合vscode, sublime text, IDEA等编辑器+xmak ...
- Android Studio增加NDK代码编译支持--Mac环境
Android的APP开发基本都是使用Java或者跨平台框架进行开发的,对于很多APP来说已经足够了,但是,对于提供功能给外部使用或者性能要求很高的需求下,如图像处理等,可能会需要C/C++库的支持, ...
- xmake新增智能代码扫描编译模式
最近给xmake增加了一个新特性,对于一份工程源码,可以不用编写makefile,也不用编写各种make相关的工程描述文件(例如:xmake.lua,makefile.am, cmakelist.tx ...
- xmake v2.5.7 发布,包依赖锁定和 Vala/Metal 语言编译支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- xmake v2.6.1 发布,使用 Lua5.4 运行时,Rust 和 C++ 混合编译支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- CUDA 动态编译(NVRTC)简记
在linux上用sublime text 3上写完CUDA代码和c++代码后,想用code::blocks去一并编译,就像visual studio那样一键编译运行,但发现在code::blocks上 ...
- Clang调试CUDA代码
Clang调试CUDA代码全过程 有空再进行编辑,最近有点忙,抱歉 使用的llvm4.0+Clang4.0的版本,依据的是上次发的llvm4.0和clang4.0源码安装的教程https://www. ...
- CUDA代码的高亮设置
以下基于"WIN7(64位)+Visual Studio 2010+CUDA7.5". 语法高亮除了看起来舒服之外,还可以使用F11寻找函数.变量定义,输入函数的时候也会有相应的提 ...
- java-cef系列视频第一集:从官方代码编译
本视频介绍了如何从官方给出步骤编译java-cef代码,生成可运行可移植的发行版. 值得一提的是:截至2016-09-24java-cef代码编译方式有所改变,读者请自行查看bitbucket上关于编 ...
随机推荐
- dubbo SPI机制
源码分析: /** * 获取扩展类 */ @SuppressWarnings("unchecked") public T getExtension(String name) { i ...
- Vue框架使用sass
引入: cnpm install node-sass --save-dev //安装node-sass cnpm install sass-loader@7.3.1 --save-dev cnpm i ...
- Python---webserver3
一.v07-添加路由功能 - 路由:能够理解请求并按照请求调用相应处理函数的模块 - 理解请求内容 - 能够调用或者指定相应业务处理模块 - 算法: - 按行读取传入报文 - 假如报文能用空格分割成三 ...
- layui静态表格固定td宽度,table固定td宽度
正在做一个项目,要求数据表的列是不固定的,有可能是有10列,有可能是20列,第一列宽度要固定,然后我怎么设置都没有用, 这个问题困扰了我三天,后来终于百度到了, 这个博客: https://www.c ...
- 【leetcode】689. Maximum Sum of 3 Non-Overlapping Subarrays
题目如下: In a given array nums of positive integers, find three non-overlapping subarrays with maximum ...
- yaf 生成项目
yaf 生成项目 yaf下载安装地址 https://github.com/laruence/yaf/releases 生成项目 一定需要在安装yaf的php版本环境中执行该语句 sudo /usr/ ...
- BZOJ 4423: [AMPPZ2013]Bytehattan 平面图转对偶图 + 并查集
Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的.有k次操作,每次会删掉图中的一条边(u,v),你需要回答在删除这条边之后u和v是否仍然连通. Input 第一 ...
- ELK+Filebeat+redis整合
前面的博客,有具体的ELK安装配置步骤,此处在其基础上修改 修改配置文件并启动 [root@topcheer filebeat-6.2.3-linux-x86_64]# vim filebeat.ym ...
- 神经网络内在逻辑:没打开的AI“黑匣子”
转载自:http://www.elecfans.com/rengongzhineng/592200.html 伴随着大数据,AI在沉寂了多年之后,又迎来了新的高潮.在这场涉及大部分科学的革命中,人工神 ...
- dell笔记本 win10 下安装 ubuntu16.04 踩坑记录
硬件配置情况: dell笔记本-灵越-5577 —— I5七代(带有集显),8G内存条DDR4,GTX1050,128G固态硬盘,1T机械硬盘. 固态硬盘划分为3部分,100GB给win10的C盘,1 ...