4

我正在从这个笔记本学习如何在 GPU 上加速 python 计算,其中一行让我感到困惑:

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

在这里,mandel_kernel是一个装饰的 (by cuda.jit) 函数,griddim并且blockdim是长度为 2: 的元griddim=(32,16)blockdim=(32,8)

这个方括号是python语法的函数名和参数列表的一部分,还是特定于cuda.jit装饰的东西?

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)因此使用括号内的任何参数调用该方法。

这一行可以改写成三行,如下所示:

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 回答