2

共有アレイで小さなデバイス カーネル関数を実行しようとしています。

from numbapro import cuda, float32

@cuda.jit('void(float32[:,:],float32,float32)',device=True)
def cu_calculate_distance(template, dx, dy) : 
    side_length = template.shape[0]
    cen = side_length/2
    for i in xrange(side_length) : 
        for j in xrange(side_length) : 
            template[i,j] = math.sqrt(((i-cen)*dx)**2 + ((j-cen)*dy)**2)

@cuda.autojit
def cuda_test() :
    t = cuda.shared.array(shape=(100,100),dtype=float32)
    dx = float32(1/100.)
    cu_calculate_distance(t,dx,dx)

cuda_test() 関数を実行しようとすると、次のエラーが表示されます。

CompilerError: At line 523:
During: instruction codegen
TypeError: array(float32, 2, C) does not support casting when trying to cast to array(float32, 2, A)

このキャスト エラーがわかりません。私が知る限り、実際に配列を再キャストしているわけではありません。float32 共有配列として宣言されており、float32 配列を受け取る関数に渡されています。私は何が欠けていますか?

4

0 に答える 0