2015-11-02 74 views
0

有誰知道cuda.jit修飾符的正確語法是如果你想寫一個返回多個數組的設備函數嗎?NumaPro Cuda設備功能 - 返回多個數組和本地內存

如果我的設備函數返回一個浮子,有兩個整型參數我的裝飾是:

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

現在,我想我的功能需要兩個整數paramters和兩個浮標和返回2列彩車和2所有長度相同(3到5之間)的整數數組,取決於輸入參數。我怎麼做? 這是正確:

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

而且在我的功能我會創造我想要通過使用返回數組:cuda.local.array() 由於我使用內嵌=真我懷疑,這將工作和陣列將是唯一由相應的線程訪問,對吧?

回答

1

現在,我想我的功能需要兩個整型參數和兩個浮標 並返回花車2個陣列和2個陣列整數

你真正說有你想讓你的JIT內核返回一個元組(兩個數組)。不幸的是,在nopython前端,我不認爲這是合法的。 nopython中沒有對象支持,所以你不能實例化並返回一個元組對象。

而且在我的功能我會創造我想要通過使用返回數組:cuda.local.array()

不幸的是也不支持。返回一個作爲參數傳遞給函數的數組只是合法的。

+0

謝謝你的回答!所以我唯一的選擇是事先傳遞數組作爲參數,但有幾個設備函數來計算這些數組的條目,併爲每個設備函數返回一個數組? – Escapado

+0

@Escapado:從效率的角度來看,我不認爲這是非常明智的。爲什麼不將結果返回到同一個數組的不同切片中? – talonmies

+0

這可能會更有意義。但我想出了一個完全不同的方案來解決我的問題,所以這在我的代碼中並不適用。但你可能是對的! – Escapado