1

如果您想编写一个返回多个数组的设备函数,有谁知道 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 我会怀疑这会起作用,并且数组只能由相应的线程访问,对吧?

4

1 回答 1

1

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

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

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

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

于 2015-11-02T10:57:54.920 回答