Numba-Cuda 和数据类型
Numba-Cuda and data types
前段时间,我问了以下问题:
是关于使用GPU进行简单的计算。我注意到计算花了很长时间。我收到的答复是,问题是编译是在运行时完成的,可以通过在 cuda.jit-装饰器之后提供数据类型来强制提前编译。这非常有效。但是,我想了解更多相关信息,并问自己是否有官方来源。我知道在 numba 文档中有一个关于提前编译的部分,但据我所知,那里描述的进行提前编译的方法涉及更多步骤,例如创建一个单独的模块。结果,好像是导出了一个文件,为了避免即时编译,必须稍后再导入。
显然也可以通过简单地定义数据类型来跳过此文件导出等。如果这在文档或其他官方来源中也有解释,有人可以指点我吗?
Eager compilation should not be confused with ahead of time compilation。前者在定义函数时(更准确地说,在执行装饰器函数时)使用 JIT 编译器动态编译函数。稍后使用静态编译器 (PyCC) 编译函数一次,生成一个模块,然后由其他脚本导入。 PyCC 编译有额外的限制(例如,不支持 AFAIK prange
也不支持 fastmath
,我怀疑 CUDA 是否也受支持)。导出步骤对于提前编译是强制性的(因为没有使用 JIT 编译器)。请注意,您可以在 Numba 装饰器中使用标志 cache=True
缓存急切编译的函数(因此该函数应该在目标平台上编译一次)。
PS: 我澄清了链接的问题(之前错误地提到了提前编译)。
前段时间,我问了以下问题:
是关于使用GPU进行简单的计算。我注意到计算花了很长时间。我收到的答复是,问题是编译是在运行时完成的,可以通过在 cuda.jit-装饰器之后提供数据类型来强制提前编译。这非常有效。但是,我想了解更多相关信息,并问自己是否有官方来源。我知道在 numba 文档中有一个关于提前编译的部分,但据我所知,那里描述的进行提前编译的方法涉及更多步骤,例如创建一个单独的模块。结果,好像是导出了一个文件,为了避免即时编译,必须稍后再导入。
显然也可以通过简单地定义数据类型来跳过此文件导出等。如果这在文档或其他官方来源中也有解释,有人可以指点我吗?
Eager compilation should not be confused with ahead of time compilation。前者在定义函数时(更准确地说,在执行装饰器函数时)使用 JIT 编译器动态编译函数。稍后使用静态编译器 (PyCC) 编译函数一次,生成一个模块,然后由其他脚本导入。 PyCC 编译有额外的限制(例如,不支持 AFAIK prange
也不支持 fastmath
,我怀疑 CUDA 是否也受支持)。导出步骤对于提前编译是强制性的(因为没有使用 JIT 编译器)。请注意,您可以在 Numba 装饰器中使用标志 cache=True
缓存急切编译的函数(因此该函数应该在目标平台上编译一次)。
PS: 我澄清了链接的问题(之前错误地提到了提前编译)。