4

このノートブックから GPU での Python 計算を高速化する方法を学んでいましたが、1 行で混乱します。

mandel_kernel[griddim, blockdim](-2.0, 1.0, -1.0, 1.0, d_image, 20)

ここで、mandel_kernelは (によってcuda.jit) 装飾された関数でgriddimありblockdim、長さ 2 のタプルです: griddim=(32,16), blockdim=(32,8).

cuda.jit関数名と引数リストの間のこの角括弧は、Python 構文の一部ですか、それとも装飾に固有のものですか?

4

1 に答える 1

5

これは有効な Python 構文です。分解してみます。

mandel_kernelキーが2タプル(griddim、blockdim)で値がメソッドである辞書です(メソッドはpythonのオブジェクトであるため、これは有効です)

mandel_kernel[griddim, blockdim]したがって、メソッドを「返す」(または評価する)

mandel_kernel[griddim, blockdim](-2.0, 1.0, -1.0, 1.0, d_image, 20)したがって、括弧内の引数を指定してそのメソッドを呼び出します。

この 1 行は、次のように 3 行に書き換えることができます。

key = tuple(griddim, blockdim)
method = mandel_kernel[key]
method(-2.0, 1.0, -1.0, 1.0, d_image, 20)
于 2016-09-14T08:56:49.957 に答える