【发布时间】:2017-07-10 11:15:15
【问题描述】:
我正在尝试在 CUDA 内核中使用一些 LAPACKE 函数来求解小型线性方程组。我有一个包含我要调用的内核函数的主源文件。在该内核函数中,我想调用 LAPACKE 函数LAPACKE_dgesv(),它在不同的源文件中定义。
在我的主源文件中,我包含了头文件lapacke.h,其中包含LAPACKE_dgesv() 的声明。此外,我编辑了lapacke.h 以将__device__ 添加到LAPACKE_dgesv() 的函数声明中。
我将包含LAPACKE_dgesv() 定义的源文件的目录添加到我的Python 代码中SourceModule 调用的include_dirs 参数中。但是,当我运行代码时,出现此错误:
ptxas fatal : Unresolved extern function 'LAPACKE_dgesv'
我的猜测是包含LAPACKE_dgesv() 定义的源文件没有被编译。
有没有办法让 PyCuda 编译多个包含设备代码的源文件? PyCuda 似乎需要一种方法来运行带有 --relocatable-device-code=true 标志的 CUDA 编译器。
【问题讨论】: