c# – 为什么在CUDA内核中z始终为零
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 为什么在CUDA内核中z始终为零,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含978字,纯文字阅读大概需要2分钟。
内容图文
![c# – 为什么在CUDA内核中z始终为零](/upload/InfoBanner/zyjiaocheng/810/0134fdeb85e04b6e87c4302ff7f037f5.jpg)
我正在使用Cudafy在NVIDIA GPU上进行一些计算.
(Quadro K1100M功能3.0,如果重要的话)
我的问题是,当我使用以下内容时
cudaGpu.Launch(new dim3(44,8,num), new dim(8, 8)).MyKernel...
当我在内核中使用它时,为什么来自GThread实例的z索引总是为零?
int z = thread.blockIdx.z * thread.blockDim.z + thread.threadIdx.z;
此外,如果我必须做类似的事情
cudaGpu.Launch(new dim3(44,8,num), new dim(8, 8, num)).MyKernel...
z确实提供了不同的索引,但由于每个块的线程数限制,num不能很大.有关如何解决这个问题的任何消息?
编辑
另一种表达方式.当块大小只有2D时,我可以在我的内核中使用thread.z(对于任何有用的东西)吗?
解决方法:
在所有当前支持的硬件上,CUDA允许使用三维网格和三维块.在计算能力1.x设备(不再支持)上,网格被限制为两个维度.
但是,CUDAfy目前使用不推荐的运行时API函数来启动内核,并且只使用gridDim.x和gridDim.y,而不是考虑使用gridDim.z:
_cuda.Launch(function, gridSize.x, gridSize.y);
如the function DoLaunch() in CudaGPU.cs所示.
因此,虽然您可以在CUDAfy中指定三维网格,但在内核启动期间会忽略第三个维度.感谢Florent指出这一点!
内容总结
以上是互联网集市为您收集整理的c# – 为什么在CUDA内核中z始终为零全部内容,希望文章能够帮你解决c# – 为什么在CUDA内核中z始终为零所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。