关于CUDA内核函数

zjr448948193 2016-09-12 05:15:21
下列C语言代码我想转换到在GPU上运行,其中涉及一个最外部的循环,代码如下

for(t=1;t<=10;t++)
{
for(int i=1;i<A;i++)
{
for(int j=1;j<B;j++)
{
if(data[i*B+j]!=-9999||data[i*B+j]!=1)
{
/*for(int m=i-1;m<i+2;m++)
{
for(int n=j-1;n<j+2;n++)
{
if(data[m*B+n]==1)
{
near=near+1;
}
}
}
float near2=near/48;
float randdata;
float rad=rand()/(RAND_MAX+1.0);
randdata=1+pow(-log(rad), 2);
int suitdata=suit[i*B+j];
float posdata=so[i*B+j];
P[i*B+j]=suitdata*posdata*randdata;
//near=0;
//printf("P[%d][%d]=%f\n",i,j,P[i*B+j]);
}
}
}

int count;
for(count=1;count<=250;)
{
for(int i=0;i<A;i++)
{
for(int j=0;j<B;j++)
{
float max=0;
//int x=0;
//int y=0;
for(int m=0;m<A;m++)
{
for(int n=0;n<B;n++)
{
if(P[m*B+n]>max)
{
max=P[m*B+n];
//x=m;
//y=n;
}
}
}
if(P[i*B+j]==max)//将转换概率最大的非建设用地变为建设用地,然后将对应的P值变为0
{
if(data[i*B+j]!=1)
{
data[i*B+j]=1;
P[i*B+j]=0;

count=count+1;
if(count>250)
break;

}

}

}
}
}
}

我想在GPU上先实现一次内部循环,然后更新数据再次循环,如此反复10次,请问有什么需要注意的地方,要用到什么函数吗?
...全文
245 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

580

社区成员

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

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