NumaPro Cuda设备功能 - 返回多个阵列和本地内存

时间:2015-11-02 09:03:46

标签: cuda numba numba-pro

如果你想编写一个返回多个数组的设备函数,有谁知道cuda.jit装饰器的正确语法是什么?

如果我的设备函数应该返回一个浮点数并且有两个整数参数,我的装饰器将是:

@cuda.jit('float64(int64,int64)', device=True, inline=True)

现在我希望我的函数接受两个整数参数和两个浮点数,并返回2个浮点数组和2个整数数组,所有长度(3到5之间)都取决于输入参数。我怎么做? 这是否正确:

@cuda.jit(restype=[float64[:], int64[:], float64[:], int64[:]], argtypes=[int64, int64, float64, float64], device=True, inline = True)

同样在我的函数中,我将使用:cuda.local.array()创建我想要返回的数组 因为我使用inline = True,我怀疑这会工作,数组只能由相应的线程访问,对吗?

1 个答案:

答案 0 :(得分:1)

  

现在我希望我的函数接受两个整数参数和两个浮点数   并返回2个浮点数组和2个整数数组

你真正说的是你希望你的JIT内核返回一个元组(两个数组)。不幸的是,在nopython前端,我不相信这是合法的。 nopython中没有对象支持,因此您无法实例化并返回元组对象。

  

同样在我的函数中,我将使用以下命令创建我想要返回的数组:cuda.local.array()

不幸的是,也不支持。返回一个作为参数传递给函数的数组是合法的。