CLBlast 库无法在带有 Nvidia GPU 的 Mingw-w64 上运行

CLBlast library not working on Mingw-w64 with Nvidia GPUs

我正在尝试 运行 来自 CLBlast 存储库的示例 samples/sgemm.cpp Windows 10个带有Nvidia显卡。我从 link 获得了 cl.hpp。 makefile简单如下:

a.exe: sgemm.cpp
    g++ sgemm.cpp -lopencl -clblast -O0 -g -DCL_TARGET_OPENCL_VERSION=300

我安装了 Nvidia CUDA 工具包 v11.6,包含目录在环境变量 CPATH 上,因此 g++ 可以找到它。此外,编译器是安装了 clblast 的 Mingw-w64 安装的一部分。

问题是编译似乎成功了,但是一旦我尝试执行 a.exe 它就崩溃了,没有任何错误消息。同样,附加 gdb 也无济于事,因为程序会立即退出并 gdb 打印

During startup the program exited with code 0xc0000135.

有什么问题?

更新

我已经打开 issue on the clblas github. Note that I can compile clinfo from here 没有问题。因此,丢失的图书馆不应该是我想到的第一件事。

要回答这个问题,这不是 gdba.exe 或 CUDA 工具包的问题,​​而是使用 Visual Studio 构建的已安装库的问题。生成的二进制文件似乎与 g++ 不兼容。因此,使用 g++ 从源安装库修复了这个问题。