问题描述
当我安装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
如果您发现速度下降是由于库不同而引起的,请务必将其报告给https://github.com/JuliaPackaging/Yggdrasil/