求指教,CUDA 多重循环嵌套的实现
各位大神,由于项目需要,初学CUDA,不知道应该如何实现多重循环嵌套相关的代码
问题代码如下:
循环变量K以及J在循环内部都是变化的,这样感觉无法并行化,希望大家能够指点一下。
(这是实现哈达玛变换的例子,如果有更好的实现方案,也可以提供一下,谢谢!)
void __fwhtrans(FLOAT* dev_ext,FLOAT* dev_out,int n,int p){
int M,J,K;
FLOAT *temp;
int L=1;
for(int nStage=2;nStage<=p;++nStage){
M=pow(2.0,L);
J=0;
K=0;
while(K<n-1){
for(int j=J;j<J+M-1;j=j+2){
dev_out[K]=dev_ext[j]+dev_ext[j+M];
dev_out[K+1]=dev_ext[j]+dev_ext[j+M];
dev_out[K+2]=dev_ext[j+1]-dev_ext[j+1+M];
dev_out[K+3]=dev_ext[j+1]-dev_ext[j+1+M];
K=K+4;
}
J=J+2*M;
}
temp=dev_ext;
dev_ext=dev_out;
dev_out=temp;
L=L+1;
}
}