我有一个结构可以是
struct type1{ double a,b,c;}
或者它可以是
struct type2{ double a,b,c,d,e;}
在我的 cuda 代码的主机功能中,我有类似的东西
void compute(){
// some code
// data on devices (up to 10)
type *xxx[10]; // this is where i want either type1 or type2 structures
// the "type" is not known at compile time but i want to
// determine at runtime based on some input variable. this
// part is not real code rather this is what i want to achive.
int DevUsed; // some code to give value to int DevUsed
for(int idev=0;idev<DevUsed;idev++){
// set cuda device
if ( cudaMalloc(&xxx[iDev], sizeof(type)) != cudaSuccess )
// print error message;
cudaMemcpy(xxx[iDev], pIF1, sizeof(type), cudaMemcpyHostToDevice);
function2<<<grid, block>>>(xxx[iDev]); // where function2 is the kernel
}
}
我的问题是使用“type *xxx[10];”等通用代码在 type1 和 type2 数据结构之间进行选择的方法是什么?