1 回答

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
您不會(huì)使用作為輸入提供給內(nèi)核的數(shù)組復(fù)制到常量數(shù)組。該類型的輸入數(shù)組已在設(shè)備中,設(shè)備代碼無(wú)法寫(xiě)入常量?jī)?nèi)存。
常量?jī)?nèi)存只能從主機(jī)代碼寫(xiě)入,并且常量語(yǔ)法期望數(shù)組是主機(jī)數(shù)組。
這是一個(gè)例子:
$ cat t32.py
import numpy as np
from numba import cuda, types, int32, int64
a = np.ones(3,dtype=np.int32)
@cuda.jit
def generate_mutants(b):
c_a = cuda.const.array_like(a)
b[0] = c_a[0]
if __name__ == "__main__":
b = np.zeros(3,dtype=np.int32)
generate_mutants[1, 1](b)
print(b)
$ python t32.py
[1 0 0]
$
請(qǐng)注意,與 CUDA C/C++ 相比,Numba CUDA 中常量?jī)?nèi)存的實(shí)現(xiàn)有一些行為差異,這個(gè)問(wèn)題突出了其中的一些差異。
添加回答
舉報(bào)