我正在学习如何从“AA>”加速GPU上的Python计算,其中有一行让我感到困惑:
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)
。函数名和参数列表之间的方括号是python语法的一部分,还是特定于
cuda.jit
装饰的内容? 最佳答案
这是有效的python语法,我将尝试为您分解它:mandel_kernel
是一个dict,其键是2元组(griddim,blockdim),值是method(这是有效的,因为methods是python中的对象)mandel_kernel[griddim, blockdim]
因此“返回”(或评估为)方法mandel_kernel[griddim, blockdim](-2.0, 1.0, -1.0, 1.0, d_image, 20)
因此使用括号内的任何参数调用该方法。
这一行可以重写为三行,如下所示:
key = tuple(griddim, blockdim)
method = mandel_kernel[key]
method(-2.0, 1.0, -1.0, 1.0, d_image, 20)