c语言cuda核函数 c语言内核深度解析( 二 )


在Fermi以后的架构中 , 可以在核函数中使用printf 。
在合理范围内缩小数据量,进而减少线程数,比如输入图像大小改为16*16 。或者修改线程为1,1 , printf打印,看是否与预期结果相同 。
3预防bug
每一个写CUDAer大概都有花几个小时甚至几天调一个bug的经历 。既然bug这么难调,那么预防bug就显得尤其重要了 。
3.1写代码前一定要完全构思好架构
社会快速发展,人的心也变得着急了 。写CUDA代码之前,一定要沉得住气,多花点时间在纸上构思代码,将代码模块化,哪里容易出问题 , 哪里该写输出,哪里该检查 。
3.2函数返回结果检查
函数返回结果检查能够非常好的定位bug,是基本的编程意识 。
虽然代码可能看起来会比较冗余,示例如下 , 也可以参考cuda sample里的代码 。
3.3函数输入检查
在调用比较重要的函数时,建议用assert检查输入参数与预期值是否相同 。
3.4核函数内检查
举个例子,遇到的情况是在拷贝shred memory时,拷贝逻辑比较复杂 。此时可以写一个检查函数,以保证拷贝的正确性 。
核函数内代码如下:
如何使用CUDA写OpenCV自己的核函数只了解一些SVM中的核函数 , 欢迎交流
SVM本身是线性分类器,使用了核函数后 , 相当于把原来的数据,映射到一个高维空间(在相对低维度的空间中难分类的样本 , 很可能在映射到高维空间后用线性分类器就可以分开) 。
而在SVM中使用核函数,我理解是替换了SVM中衡量内积的方式 (x * z)为K(x,z),以此来达到映射的目的的 。
cuda里面的核函数怎么调用第三方库的函数你的静态库是编译后的x86代码,而你的CUDA核心是不能执行x86代码的,所以肯定不能这么用 。
你可以用CPU把Mat转换成基本元素的数组,然后再交给CUDA处理 。
关于c语言cuda核函数和c语言内核深度解析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读