微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyCUDA通过值将变量传递给内核

如何解决PyCUDA通过值将变量传递给内核

应该足够简单;我从字面上想将int发送到SourceModule内核声明,其中C函数
__global__......(int value,.....)
值被声明并调用...
value = 256
...
...
func(value,...)
但是我从pycuda中收到各种错误,这些错误是我使用了错误的类型。

解决方法

标准的PyCUDA函数接口要求参数具有numpy dtypes,因为它在内部确实映射到C类型。因此,对于按值传递的标量参数,您需要先“投射”到合适的numpy dtype。就像是
value = 256
va = numpy.int32(value)

func(va)
应该管用。如果要传递单精度浮点值或数组,请确保显式使用np.float32的dtype,因为numpy默认情况下使用双精度,并且最终会出现类似错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。