cuda第0课环境配置+建立第一个程序:cuda4.2+VS2010+GeForce8500GT

来源:互联网 发布:彩虹岛网络传输异常 编辑:程序博客网 时间:2024/05/21 05:23

1、首先下载最新的显卡驱动、cuda toolkit、cuda sdk我这里为4.2版

306.23-desktop-winxp-32bit-international-whql.exe显卡驱动(通用版或适用自己电脑的,我的为GeForce8500GT显卡)

cuda 下载

2、先安装VS2010,然后分别安装显卡驱动、cuda toolkit和cuda sdk。

示例文档将装在

C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation

安装完成后,在系统环境里面会发现新添加了两个环境变量:CUDA_PATH_V4_2和CUDA_PATH。但是这些还不够。保险起见,手动配置环境变量。在系统环境变量中新建如下项,已有就不必了:

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v4.2\common
CUDA_LIB_PATH = %CUDA_PATH%\lib\Win32
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\Win32
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\Win32

然后在系统环境变量Path 后添加如下内容:
;%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;

 

测试cdua  :windows图标+R,打开运行窗口,输入cmd点确定,输入nvcc  - - version查看版本,安装成功。

3、工具库生成

 现在VS可以打开Cuda SDK的例子试试了,不过在这之前有两个工具库最好先生成一下。

①使用VS2010打开

C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\common\cutil vs2010.sln
VS2010 生成->”,生成所有配置需要的lib.

目的:生成各配置需要的cutilxx[D].lib XX:32 [D]debug模式  
lib存放的位置:SDK_PATH \ c\common\lib\(win32)

生成之前lib下有

生成之前lib\win32下已经有

生成,批生成——生成

lib下文件不变,而lib\win32下为

 

cutil32dll下载

我这里为

C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\common\lib\Win32

同上方法,打开

C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\shared\ shrUtils_vs2010.sln

 生成
目的:生成各配置需要的shrUtilxx.lib XX:32 [D]debug模式  
 lib存放的位置:SDK_PATH\share\lib\(Win32)

我这里为

C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\shared\lib\Win32

生成

shrUtils32.lib、shrUtils32D.lib,一起的文件还有freeglut.lib、glew32.lib

SDK_PATH\C\bin\win32\ReleaseSDK_PATH\C\bin\win32\Debug中包含了相应的dll。

4、测试SDK例子

(C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\bin\win32\Release)

相应例子的源代码

C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\src

VS2010 打开SDK例子的源代码:deviceQuery,和matrixMul各种配置均可编译执行成功, CUDA的基本配置就完了。

下面是deviceQuery测试程序,可以编译成功Passed,失败为failed。

5、CUDA C/C++关键字及函数高亮显示

这个设置是让Visual Studio2010 在编辑.cu 文件时,把.cu 文件里的C/C++语法高亮。设置方法: 在Visual Studio 2010 的菜单依次选“ Tools|Options|Text Editor|File Extension(工具|选项|文本编辑器|文件扩展名)”,在该窗口中将“Editor(编辑器)”下拉框选择“Microsoft Visual C++”,在“Extension(扩展名)”文本框中输入cu 点击“Add(添加)”按钮,重复工作把cuh 添加为Visual C++类型,添加完成后点击“OK(确定)”按钮,如下图所示:

6、CUDA关键字高亮

为了让CUDA的关键字,象 __device__dim3之类的文字高亮,需要如下步骤:
SDK_PATH\C\doc\syntax_highlighting\usertype.dat 复制到X:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ 目录下  

里面只有VS7和VS8的,把VS8的copy过来。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

7、在vs2010中编写第一个cuda程序

   在vs2010中新建一个win32控制台空工程,添加一个*.cu文件(新建文件,选择*.cpp格式,但填写文件名时写*.cu即可),本例中为main.cu

    右键项目名称(非解决方案名称) -> 生成自定义(build customization)中,选择CUDA 4.2,

    修改新建的工程的对应*.vcxproj文件。在本例中为CUDAtest.vcxproj。找到:
    <ImportGroup Label=”ExtensionSettings”>
    </ImportGroup>
    替换成:
    <ImportGroup Label=”ExtensionSettings”>
    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 4.2.props" />   (注意使用英文双引号而不是中文双引号)
    </ImportGroup>

    注意必须完成这个修改,不然在下一步中,无法正常打开*.cu的属性页面。

    右键打开main.cu的属性页面,在general选项中将Item Type改为CUDA C/C++,如果没有此选项,重新配置生成自定义



    右键打开整个工程的属性页面,确认platform toolset是v100(之前有人说必须用 V90 编译,经测试 V100 就可以)



    打开linker -> general选项,添加“$(CUDA_PATH_V4_2)\lib\$(Platform);” 到 Additional Libraries Directories
    本例中为:lib:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\lib\Win32

    打开 Linker | Input 选项页,添加 “cudart.lib;” 到 Additional Dependencies



    配置完成。

8、编写代码测试程序:main.cu

#include <stdio.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;}



 

第0课到此结束,恭喜您,之后就可以进行开发了。

 

 

THE END


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

CUDA 函数高亮,及CUDA 函数输入代码提示

http://blog.csdn.net/diyoosjtu/article/details/8454253

cuda相关lib

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\lib\Win32

cuda.lib cublas.lib、opencl.lib 

扩展VS高亮及规则

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\extras\visual_studio_integration

包含有

MSBuildExtensions(CUDA 4.2.props、CUDA 4.2.targets、CUDA 4.2.xml、Nvda.Build.CudaTasks.v4.2.dll)

copy all files under MsBuildExtension subfolder directly into C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations (C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations on 64 bit) folder.4.2已默认安装好

rules(NvCudaRuntimeApi.v4.2.rules、NvCudaDriverApi.rules、NvCudaDriverApi.v4.2.rules、NvCudaRuntimeApi.rules)

Extra rules files are provided here for deployment into VisualStudioDir\VC\VCProjectDefaults folder. 

These files should not be used from this folder. To deploy files into Visual Studio, copy *.rules contained in the rules subfolder directly into VisualStudioDir\VC\VCProjectDefaults. 

D:\Program Files\Microsoft Visual Studio 10.0\VC\VCProjectDefaults

gpucomputing_intellisense.reg

-----------------------------------------------------------------------------------------------------------

语法高亮

①现在CUDA4.0的基本配置已经完了,下一步是语法高亮,配置VassistX 函数高亮,代码提示等功能。

 进注册HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Languages\File Extensions\中添加子键 .cu 然后copy .cpp的键值到.cu,这样才能表示cu也是VS下的VC的工程文件。

----------------------------------------------------------------------------------------------------------------

以下我没有实验

13.        CUDA 函数高亮,及CUDA函数输入代码提示
 实现这个功能就要使用VAssistX了。首先安装支持VS2010VAssistX。这个可以在CUDA 安装前、后安装都行。
 需要两步实现需要的功能:
a) VAssistX支持CUDA函数高亮和代码完成
 这个在VAssistX的菜单里设置完成:在Vs2010菜单里依次点击:
 VassistX->Visual assist X Options->Projects->C/C++Directories
 在这个界面的 “Platform”下拉框选 Custom,在“Show Directories for..“下拉框选 Other include files,然后在下面的输入框里,新建、添加三个路径,点击确定,三个路径分别如下
 SDK_PATH\c\common\inc
 SDK_PATH\shared\inc
 D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include
这样分别在这三个目录里面的.h文件定义的函数和类型VAssistX会帮我们在编辑文件时候实现高亮和完成代码
如果少包含一个路径,这个目录里的.h定义的函数和类型就不会高亮和提示了。
b)VAssistX支持.cu文件,也就是编辑.cu文件是VAssistX帮我们实现高亮和代码完成功能。这个需要编辑注册表了。
 首先关闭VS2010,使用regedit打开注册表,找到如下位置:
 HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10
在右边找到ExtSource项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh; 确定后关闭注册表,重新打开vs2010VAssistX开始支持.cu.cuh文件的语法高亮及代码完成。
 此时.cu文件了的CUDA函数是高亮的,使用函数名符号就会自动提示函数全称,参数类型等信息了。

14.        其他问题

经过上面的安装,开发程序应该没问题了,但是发现有如下的问题:
(1). VS2010显示.cu文件时,有很多CUDA函数下有波浪线
(2). .cu文件里使用VS2010转到定义功能查无法找到CUDA函数的定义

--------------------------------

这两个问题的解决方法其实是一样的,原因是VS2010不认识这些函数,不指定它们在那个头文件里包含的,解决的方法很简单,

CUDA tookit CUDA SDK的头文件路径加到VS2010VC++目录里面。

VS2008里面使用工具->选项对话框里面可以设置,但是VS2010的这个对话框里显示工具">"选项"中的VC++目标编辑功能已被否决。   

经过网上搜索发现此工作已经变成了项目属性里的选项。
修改方法是:使用视图>其它窗口->属性窗口,打开属性管理器视图。
属性管理器显示是项目所有的配置信息:如Debug|win32 Debug|X64Release|32 Relase|x64 ,32位和64位配置需要单独,同一平台的DebugRelase只要修改一个就形了,如修改了Debug|Win32 ,Release|win32就无需修改了。

具体方法,假设修改Debug|win32,鼠标点击展开Debug|win32项目,可以看到第一个子项目是“microsoft.Cpp.Win32.user",双击该项目,出现“microsoft .Cpp.Win32.user”对话框,对话框里面有VC++目录选项,在右边的包含目录选项里,单击鼠标,选编辑,添加CUDA toolkitinclude目录,CUDA SDK目录下的\C\common\inc\share\inc 目录信息,这三个目录也就是添加到VAssistX里的头文件目录,目的是让VC2010知道这些头文件里定义的函数,重启VS2010,打开CUDAVS2010就不会在CUDA函数下显示红色波浪线了,而且可以使用转到定义转到声明功能定位到CUDA函数和类型定义的文件。

 

同时,可以将库文件的路径也加进去。选择编辑“库目录”,添加D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\libD:\Program Files\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\shared\libD:\Program Files\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\lib

最后一个小问题:经过如上的设置,基本上不会再有波浪线出现,个别符号例外,有波浪线也可以转到定义。
是发现一些小问题,如sdk例子template项目和MatrixMul项目,打开后发现在xxxx_kernel.cu里定义的函数,在其它.cu还是有波浪线,也不能使用转到定义功能,如matrixMul.cu里无法查找在matrixMul_kernel.cu里定义的函数 matrixMul() ,查看matrixMul.cu文件发现该文件采用如下形式包含matrixMul_kernel.cu件:include<matrixMul_kernel.cu>  

 

这是告诉VS2010要到VS2010系统定义的include目录里面查找包含文件,实际上该文件是在当前项目的目录里。CUDA的编译器可以找到该文件(有点怪),VS2010找不到该文件,该文件里定义的函数VS2010也不认识,解决方法很简单,改成 include“matrixMul_kernel.cu“,这样CDUA编译器能找到该文件,VS也能找到该文件,该文件里定义的函数就不会有下划线了,可以使用转到定义转到声明查找引用功能定位到了。

------------------------------------------------------------------------------------------------------------------------------------------------------------

另外

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\extras\visual_studio_integration

包含有

MSBuildExtensions(CUDA 4.2.props、CUDA 4.2.targets、CUDA 4.2.xml、Nvda.Build.CudaTasks.v4.2.dll)

拷贝所有在MsBuildExtension 子目录下的文件到

 C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations (C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations on 64 bit) folder.

cuda4.2已默认安装好,不必管。

rules(NvCudaRuntimeApi.v4.2.rules、NvCudaDriverApi.rules、NvCudaDriverApi.v4.2.rules、NvCudaRuntimeApi.rules)

Extra rules files are provided here for deployment into VisualStudioDir\VC\VCProjectDefaults folder. 

------------------------------------------------------------------------------------------------------------------------------------------------------------



 


原创粉丝点击