如果某个项目有一个可选的CUDA构建,那么如何在两个项目变体之间共享代码,从而最大限度地实现代码重用?
例如,在保证建立数据自动化系统的项目中,可以在项目的CPU和GPU部分之间共享代码,如下所示:
//shared_functions.h
float computeEta(float lambda, int t);
//shared_functions.cu
__host__ __device__
float computeEtaDevice(float lambda, int t){
return (1.0/(lambda*(float)t));
}
float computeEta(float lambda, int t){
return computeEtaDevice(lambda, t);
}
//test.cpp
#include "shared_functions.h"
...
computeEta(lambda, t);然而,在编译时没有数据自动化系统的情况下,如何做到这一点尚不清楚。
发布于 2016-02-20 16:46:04
所以,经过一些实验,看起来类似的东西起了作用(用浏览器写的例子):-
//shared.h
#if defined(__CUDACC__) && defined(__CUDA_ARCH__)
#define __SHARED_CODE__ __device__
#else
#define __SHARED_CODE__
#endif
__SHARED_CODE__
inline float func1(float a, float b){
return a + b;
}https://stackoverflow.com/questions/35524904
复制相似问题