Mac OS X下CUDA Host端的编译选项设定

来源:互联网 发布:费用优化步骤 编辑:程序博客网 时间:2024/05/17 22:27

为了方便编译,我们一般将一个CUDA项目放入nVidia所提供的samples的默认目录下。比如:/Developer/GPU/ Computing/C/src

一个项目中应该至少有一个Host端的C/C++源文件(.c/.cpp/.m/.mm等),一个Device端的CUDA文件(.cu/.ptx等)以及一个makefile。

在默认情况下,Host端的源文件是用g++来编译的。但我们可以通过修改makefile来指定用何编译器,用何选项来编译指定的源文件。

 

比如,我们有如下的一个makefile:

 

上面有几个脚本变量说明一下:

CUFILES指明目标cuda源文件;

CCFILES指明目标C++源文件。这里要注意的是CCFILES总是以g++编译器去编译,不管你后面指定的源文件的后缀名是.c还是.cpp或其它。

上面我们指定了一个matrixMul.cu的CUDA源文件以及一个test.cpp源文件用g++去编译。

那么如果我们要以gcc,并且使用C99标准+GNU编译器扩展去编译一个test.c文件,我们该如何做呢?

下面给出这个这个make脚本:

这边我们可以看到两个新的变量:

CFILES用于指明后面所指定的源文件用gcc去编译;

CFLAGS用来指定gcc编译器的编译选项。

以上变量都将在common.mk中被引用。

 

另外要注意的是,用gcc或g++编译好的函数在用nvcc中编译的源文件中调用前都要使用extern "C"去声明。

 

如果我们要将一个cuda源文件编译为一个ptx文件,可以采取如下命令:

/usr/local/cuda/bin/nvcc --ptx cudafilename.cu

原创粉丝点击