思想和方法来自CUDA SDK的Samples——【convolutionTexture】
首先,也是最关键的思想是定义一个共用头文件——例子中【convolutionTexture_common.h】
这个头文件中声明了几个函数:在GPU中执行的和在CPU中比较执行的(这个程序加入CPU对比执行,测试GPU加速效果),注意声明为extern外连接形式;
具体代码为:
// convolutionTexture_common.h
#ifndef CONVOLUTIONTEXTURE_COMMON_H
#define CONVOLUTIONTEXTURE_COMMON_H
#include <cuda_runtime.h>
////////////////////////////////////////////////////////////////////////////////
// Convolution kernel size (the only parameter inlined in the code)
////////////////////////////////////////////////////////////////////////////////
#define KERNEL_RADIUS 8
#define KERNEL_LENGTH (2 * KERNEL_RADIUS + 1)
////////////////////////////////////////////////////////////////////////////////
// Reference CPU convolution
//////////////
CUDA与C++集成实践:从接口到kernel

本文基于CUDA SDK的convolutionTexture示例,探讨如何将CUDA与C++集成。通过定义共用头文件,声明GPU和CPU函数,实现在GPU上的计算。CUDA函数采用接口函数封装kernel,设置执行配置,并在main函数中调用。此方法提高了代码的独立性、可维护性和可读性。
最低0.47元/天 解锁文章
1138

被折叠的 条评论
为什么被折叠?



