问题求助:该程序是否可以修改为CUDA的并行程序?要怎么修改?

carmeloanthony07 2018-10-24 08:03:27
a,b是两个三维数[X][Y][Z]写成一维形式
B函数遍历a数组的x,y,z方向上的每一条,赋值给in这个一维数组传给A做运算,结果由out数组带回,再赋值到b数组

这个对a,b的运算可以用cuda写成并行化么?
我的映射是这样的
int z = blockIdx.y;
int y = blockIdx.x;
int x = threadIdx.x;
索引int p = z*Y*X+y*X+x;

void A(double *in, double *out){
//对in数组做运算,结果放在out数组里
}
void B(){
for(int k=0;k<Z;k++){
for(int j=0;j<Y;j++){
for(int i=0;i<X;i++) in[i] = a[k*DY*DX + j*DX + i];
A(in,out);
for(int i=0;i<X;i++){
b[k*DY*DX + j*DX + i] = out[i];
}
}
}
for(int k=0;k<Z;k++){
for(int i=0;i<X;i++){
for(int j=0;j<Y;j++) in[j] = a[k*DY*DX + j*DX + i];
A(in,out);
for(int j=0;j<Y;j++){
b[k*DY*DX + j*DX + i] = out[j];
}
}
}
for(int i=0;i<X;i++){
for(int j=0;j<Y;j++){
for(int k=0;k<Z;k++) in[k] = a[k*DY*DX + j*DX + i];
A(in,out);
for(int k=0;k<Z;k++){
b[k*DY*DX + j*DX + i] = out[k];
}
}
}
}

...全文
1214 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

579

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧