您的位置:首页 > 其它

第一个cuda例子

2010-05-31 16:19 183 查看
首先安装CUDA Driver,CUDA Toolkit 以及SDK,大家可以在Nvidia的官方网站上面下载。

我用的编译环境是windows, vs 2005

文本编辑

  由于CUDA使用的源文件是.cu文件,因此默认情况下VS不会识别它里面的语法,会把它当成普通的txt文件。

  Tools->options,左侧树形图展开Text Editor,在File Extension子项中:

  Extension:cu Editor:Microsoft Visual C++

  点击Add,这样cu文件就会被当做cpp文件显示了。由于VS不会立即更新,需要重新启动VS。

这样我们在vs中打开cu后缀的文件,c语言的语法就会高亮显示了。

这里以 Visual Studio 2005 为例:

首先,建立一个 Win32 Console 模式的 project(在 Application Settings 中记得勾选 Empty project),并新增一个档案,例如 main.cu。

在 main.cu 上右键单击,并选择 Properties。点选 General,确定 Tool 的部份是选择 Custom Build Tool

选择 Custom Build Step,在 Command Line 使用以下设定:

Release 模式:"$(CUDA_BIN_PATH)/nvcc.exe" -ccbin "$(VCInstallDir)bin" -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)" -o $(ConfigurationName)/$(InputName).obj $(InputFileName)

Debug 模式:"$(CUDA_BIN_PATH)/nvcc.exe" -ccbin "$(VCInstallDir)bin" -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)" -o $(ConfigurationName)/$(InputName).obj $(InputFileName)

如果想要使用软件仿真的模式,可以新增两个额外的设定:

EmuRelease 模式:"$(CUDA_BIN_PATH)/nvcc.exe" -ccbin "$(VCInstallDir)bin" -deviceemu -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)" -o $(ConfigurationName)/$(InputName).obj $(InputFileName)

EmuDebug 模式:"$(CUDA_BIN_PATH)/nvcc.exe" -ccbin "$(VCInstallDir)bin" -deviceemu -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)" -o $(ConfigurationName)/$(InputName).obj $(InputFileName)

对所有的配置文件,在 Custom Build StepOutputs 中加入 $(ConfigurationName)/$(InputName).obj。

选择 project,右键单击选择 Properties,再点选 Linker。对所有的配置文件修改以下设定:

General/Enable Incremental Linking:No

General/Additional Library Directories:$(CUDA_LIB_PATH)

Input/Additional Dependencies:cudart.lib

这里是每个cu的文件的配置。

简单的例子,vs 2005那例

1.创建一个空的Win32 Console 模式的 project(在 Application Settings 中记得勾选 Empty project).

2.创建一个文本文档命名为main.cu,不会插图,就不截图了

3.按上面的方式配置cu文件

4.
#include <stdio.h>
#include <stdlib.h>
#include <cuda_runtime.h>
bool InitCUDA()
{
int count;

cudaGetDeviceCount(&count);
if(count == 0) {
fprintf(stderr, "There is no device./n");
return false;
}

int i;
for(i = 0; i < count; i++) {
cudaDeviceProp prop;
if(cudaGetDeviceProperties(&prop, i) == cudaSuccess) {
if(prop.major >= 1) {
break;
}
}
}

if(i == count) {
fprintf(stderr, "There is no device supporting CUDA 1.x./n");
return false;
}

cudaSetDevice(i);

return true;
}

int main()
{
if(!InitCUDA()) {
return 0;
}

printf("CUDA initialized./n");
system("pause");

return 0;
}
在cu文件中编写如下代码

5.编译运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: