5月24日 – 6月11日 CUDA编程学习笔记

1、 下载CUDA工具包、驱动和SDK,依次安装,编译SDK里的工程文件,具体配置方法可谷歌百度,基本步骤就是先编译sdk里面的几个库,然后设置代码相应库函数关键字高亮。

2、 下载CUDA调试工具Nsight,可以实现单卡双机调试或双卡单机调试,虽然听说2.2可以单卡单机,但还没找到方法。具体调试可参考Nsight的help文档和cudabbs.it168.com上的别人笔记(CUDA双机Nsight调试总结)。

3、 Nsight2.2中包含cuda4.0,cuda4.1, cuda4.2 rules。

4、如果在运行cuda程序时出现黑屏花屏显卡驱动奔溃几秒然后重新启动,个人认为应该是显存不足造成的,后来发现不是这个原因,其实是(http://msdn.microsoft.com/zh-cn/windows/hardware/gg487368)。 这时候打开Nsight 的Monitor,将Options/General下的WDDM TDR enabled 设置为 False,重启电脑,这时再运行程序,显示器不会更新画面,GPU会提供完全的显存专注于运行我们的程序。直到运行结束,显示器画面恢复更新。这种方法当然只有用在实验上,不能用在实际中。

5、 普通C++控制台和MFC程序中如何新建调用CUDA程序(VS2010):

1) 首先新建一个C++工程,然后右击工程,打开“生成自定义“,选择最新的cudarules。

2) 然后新建两个.cu文件,分别命名为kernel.cu和func.cu,前者存放核函数,后者存放调用核函数的基本cuda函数。然后打开两个文件的属性,将项类型设置为CUDA C/C++,然后在CUDAC/C++下的Device里的Code Generation参数修改为运行电脑GPU的计算等级,例如1.1的就写成compute_11,sm_11。还有,前者kernel.cu属性中“从生成中排除“要选”是“。

3) 在func.cu文件中将kernel.cu当做头文件包含,里面的函数进行基本的cuda程序操作:分配显卡内存、拷贝内存到显存、调用kernel函数、拷贝显存到内存。

4) 在func.cu文件中定义函数时,将func函数定义为C扩展函数:extern “C”void func();

5) 新建一个cpp文件,作为主程序,先在程序上面添加C扩展函数func()的说明,此时不需要include “func.cu”。然后再下面的代码中调用func函数即可。

6) 打开整个工程的属性,在CUDA C/C++下的Device里的Code Generation参数依然修改为运行电脑GPU的计算等级。

7) 在工程属性的“链接器/附加依赖项”中添加cudart.lib;

6、 CUDA Tookit中的NVIDIAVisual Profiler是个不错的cuda程序性能分析软件,能生成程序中GPU处理部分的各个步骤的时间条,以及各个阶段的具体参数。

7、 CUDA提供了CUBLA(具有基本的向量和矩阵运算)库,SDK中已经自带了,不用另外下载。它的运算函数分为三个级别:1)向量与向量的运行2)矩阵与向量的运算3)矩阵与矩阵的运算。

工程属性的链接器中的附加依赖项需添加:cublas.lib。

基本的调用步骤举例:

1) 包含cublas的头文件:


2) 创建一个cublas上下文句柄:


3) 调用cublas函数处理向量或矩阵运算:


4) 销毁cublas句柄:


8、 在CUBLAS中矩阵是按列优先存储的,这与C中按行存储矩阵的思想正好相反。

 

Author: Jimye

Email:jimye.china@gmail.com

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值