开发者

PyCUDA Passing variable by value to kernel

开发者 https://www.devze.com 2023-02-27 02:29 出处:网络
Should be simple enough; I literally want to send an int to the a SourceModule kernel declaration, where the C function

Should be simple enough; I literally want to send an int to the a SourceModule kernel declaration, where the C function

__global__......(i开发者_JAVA技巧nt value,.....)

with the value being declared and called...

value = 256
...
...
func(value,...)

But I'm getting a variety of errors from pycuda that I'm using the wrong type.


The standard PyCUDA function interface requires argument have numpy dtypes, because it internally does mapping to C types under the hood. So for scalar arguments which are passed by value, you need to "cast" to a suitable numpy dtype first. Something like

value = 256
va = numpy.int32(value)

func(va)

should work. If you are passing single precision floating point values or arrays, make sure to explicitly use a dtype of np.float32, because numpy uses double precision by default and you will wind up with similar errors.

0

精彩评论

暂无评论...
验证码 换一张
取 消