我有一个CUDA编程的问题!输入是一个2x2的矩阵A,输出是每个新值都是旧值的3次方的2x2矩阵A。例如:
输入:A:{2,2} 输出:A {8,8}
{2,2} {8,8}
我在CudaCode.CU文件中有2个函数:
我在CudaCode.CU文件中有2个函数:
__global__ void Power_of_02(int &a)
{
a=a*a;
}
//***************
__global__ void Power_of_03(int &a)
{
int tempt = a;
Power_of_02(a); //a=a^2;
a= a*tempt; // a = a^3
}
操作系统内核:
__global__ void CudaProcessingKernel(int *dataA ) //kernel function
{
int bx = blockIdx.x;
int tx = threadIdx.x;
int tid = bx * XTHREADS + tx;
if(tid < 16)
{
Power_of_03(dataA[tid]);
}
__syncthreads();
}
我认为代码是正确的,但出现了错误:从一个__global__函数("Power_of_03")调用另一个__global__函数("Power_of_02")只允许在compute_35架构及以上
为什么会出错?如何修复它?