在Julia中使用FFTW时,我可以链接到FFTW的本地编译版本吗?

问题描述

当我安装Pkg.add("FFTW")时,Julia如何链接到FFTW?我猜它下载了一个预编译的版本,因为我没有给它提供链接我的本地版本的路径,而且它似乎并不需要花费很长时间从源代码编译FFTW。那是对的吗?如果是这样,是否有办法将Julia设置为使用本地编译和优化的FFTW版本?我问是因为我有一个同时具有Julia版本和C ++版本的仿真代码,并且C ++的运行速度大约提高了6-7倍,尽管我认为两者都应该将大部分时间都花在FFTW调用上。因此,我想知道两者之间的区别是否在于Julia版本使用的FFTW优化版本不够完善。

解决方法

许多Julia软件包通过所谓的JLL提供了预构建的库。朱莉娅还提供了a mechanism to override these artifacts

尤其是您的~/.julia/artifacts/Overrides.toml看起来像

[f5851436-0d7a-5f13-b9de-f02708fd171a]
FFTW = "...."

其中....是FFTW的安装位置的“前缀”,即lib/libfftw....文件所在的目录。您可以在https://juliapackaging.github.io/BinaryBuilder.jl/dev/jll/#Non-dev'ed-JLL-packages

中阅读有关JLL包的替代工件的更多信息。

如果您发现速度下降是由于库不同而引起的,请务必将其报告给https://github.com/JuliaPackaging/Yggdrasil/