CTranslate2 如何在Windows 11上从源代码编译?

3hvapo4f  于 6个月前  发布在  Windows
关注(0)|答案(3)|浏览(75)

我遇到了运行时错误:找不到或无法加载库cublas64_11.dll。我搜索后发现,我需要从源代码编译它,以使其支持12.1 CUDA。

在Windows上如何操作?文档中只提到了Linux。

6rvt4ljy

6rvt4ljy1#

你可以在ctranslate2源目录下的python/tools中查看Windows编译脚本。
它应该使用类似于Linux的shell环境来为Windows(如msys2)进行编译。当我编译它时,我直接使用了cmd终端。以下是简要描述,主要内容与上述脚本相似。

  1. 安装Visual Studio 2022

  2. 从官方网站安装Intel MKLNvidia CudaToolkitCudnn
    重要提示!在安装cudnn时,你可以参考pdf文件将cudnn和cuda的bin、include、lib目录合并,否则在cmake阶段无法找到cudnn库。

  3. 安装oneDNN(可以参考prepare_build_environment_windows.sh脚本,使用cmake进行编译)

  4. 将源代码克隆到D盘

  5. 打开由Intel mkl提供的构建环境“Intel oneAPI命令提示符 for Intel 64 for Visual Studio 2022”。

  6. cmake配置

djmepvbi

djmepvbi2#

你好,@seclog,@panosk。根据上述指示,我已经修改了我的cmake命令,仅使用DNNL而不使用CUDA,如下所示:

`cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%CTRANSLATE2_ROOT% -DWITH_DNNL=ON ..`

在构建完成后,我按照prepare_build_environment_windows.sh中的说明操作,将DLL文件复制到了python/ctranslate2/文件夹。

稍后,当我完成pip安装后,我发现dlls作为ctranslate2包的site-packages目录的一部分存在。然而,当我尝试在代码中导入ctranslate2包时,我遇到了DLL未找到的错误,如下图所示。

我复制的DLL列表如下:

  • ctranslate2.dll
  • libiomp5md.dll
  • cudnn64_8.dll
  • dnnl.dll

请问您能建议我如何解决这个问题,以便让导入运行吗?此外,我已经从我的机器上卸载了CUDA,因为我的优先级是使用DNNL并保留了dll。

谢谢!

0vvn1miw

0vvn1miw3#

我通过将所有 .dlls 从 oneapi/compiler 目录复制到 site-packages/ctranslate2/ 目录来解决了上述问题。这有所帮助,不再出现上述导入错误。
如果有其他建议,请不吝赐教,因为我觉得自己做的更多的是一种粗糙的方法/权宜之计。

相关问题