思想和方法来自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
extern "C" void convolutionRowsCPU(
float *h_Dst,
float *h_Src,
float *h_Kernel,
int imageW,
int imageH,
int kernelR
);
extern "C" void convolutionColu