询问kernel中的参数使用

wts_net 2009-06-03 08:09:30
假如现在有两个kernel其一:__global void ss(int m,int k),其二__global void tt( int m,int g)而二中的kernel中的参数m要使用其一kernel计算出来的m,那么m是不是可以直接使用呢?如是可以直接使用的话,如果ss < < <1,4>>>(m,k);再执行tt < < <2,8>>>(m,g)那么m跟ss这个kernel中的m是不是一样的数据呢?我的本意是想让他们一样。如果这样不对的话,还请各位大虾指导一下!
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ticcy521 2009-06-03
  • 打赏
  • 举报
回复
真是厉害。望多发好贴
qieqielala 2009-06-03
  • 打赏
  • 举报
回复
牛。。。
观弈道童 2009-06-03
  • 打赏
  • 举报
回复
厉害
观弈道童 2009-06-03
  • 打赏
  • 举报
回复
niurena
mwt666 2009-06-03
  • 打赏
  • 举报
回复
学习了回帖是一种美德
  • 打赏
  • 举报
回复
[Quote=引用楼主 wts_net 的帖子:]
假如现在有两个kernel其一:__global void ss(int m,int k),其二__global void tt( int m,int g)而二中的kernel中的参数m要使用其一kernel计算出来的m,那么m是不是可以直接使用呢?如是可以直接使用的话,如果ss < < <1,4>>>(m,k);再执行tt < < <2,8>>>(m,g)那么m跟ss这个kernel中的m是不是一样的数据呢?我的本意是想让他们一样。如果这样不对的话,还请各位大虾指导一下!
[/Quote]

m不要是参数,而是global地址就可以了.
例如:
host程序:
int *pm;
int m;
cudaMalloc((void**)&pm,sizeof(int));
......
cudaMemcpy(pm,&m,sizeof(int),cudaMemcpyHostToDevice);
ss<<<1,4>>>(pm, k);
......
tt<<<2,8>>>(pm, g);
......

kernel程序:
__global__ static void ss(int *pm, int k)
{
.......
*pm=m_value;
}

__global__ static void tt(int *pm, int k)
{
m_value=*pm;
.......
}

579

社区成员

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

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