gpt4 book ai didi

octave - 如何修复在 Ubuntu 中使用 Intel MKL 产生错误结果的 Octave?

转载 作者:行者123 更新时间:2023-12-03 16:20:41 26 4
gpt4 key购买 nike

尽管英特尔 MKL 加速了 GNU Octave 中的计算,但当矩阵的大小很大时,结果有时(在 Xubuntu 20.04 中使用 Octave 5.2.0 测试)完全错误。这已被提及 herehere .
例如,this gist 显示了 Octave 和 Scilab 产生不同结果的示例,并且 Octave 的结果是错误的(每次运行脚本时都会更改。Octave 使用 OpenBLAS 给出正确的结果)。
这是要点中的代码。

for a = 1:500
for b = 1:500
c(a,b) = sin(a + b^2);
endfor
endfor

g = eig(c);

m = max(real(g))

%Correct result is ans = 16.915
%With MKL in Ubuntu 20.04, I get random numbers of order 10^5 - 10^6, which changes on every run

如何解决这个问题?

最佳答案

一些 Debian 错误报告(见 thisthis)和 bug report 中已经提到了这个问题。在 Octave 。
根据 Debian 维护人员的说法,这既不是 Octave 的错误,也不是 MKL 的错误。它是由于 libgomp 和 libiomp 之间的竞争条件而产生的。
这是修复它的方法。
输入命令

export MKL_THREADING_LAYER=gnu
在终端中,然后调用 octave从同一个终端。现在不应该出现这个问题。
要使此修复永久生效,请添加行 export MKL_THREADING_LAYER=gnu给您的 .bashrc文件。

备注 : 安装MKL后,我画了一个图,发现严重错误(虽然计算速度更快)。
我把它贴在 MKL community ,他们说这不是他们的错误。最后我用 Octave 打开了一个错误报告,有人提到了这个解决方法。
警告 :如错误报告中所述,即使应用此解决方法,Octave ( __run_test_suite__) 的测试套件也会因段错误而失败。因此,建议谨慎使用带有 MKL 的 Octave。

关于octave - 如何修复在 Ubuntu 中使用 Intel MKL 产生错误结果的 Octave?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63352781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com