AMD Ryzen 上能否使用 Intel Math Kernel Library(MKL)

時間 2021-05-31 16:05:54

1樓:腹黑小太陽

效能方面的問題其它答主已經說了,最新的解決問題的方法是

設定(新建)乙個MKL_DEBUG_CPU_TYPE的環境變數為5即可

也不知道是哪位想出來這種undocument的方法的

2樓:范逸

用ryzen 1700測試過,MKL是可以執行的,但是並行的效能有點糟糕。

測試了兩個例子:

第乙個是cblas_dgemm,和openBLAS相比,同樣用8個核心,MKL的dgemm可以達到77GFLOP左右的效能,而openBLAS可以達到177GFLOPS左右,差距非常大。openBLAS編譯時設定target=ZEN,MKL可以設定環境變數強制呼叫指定指令集版本的庫但實際測試沒有效果。編譯都使用Intel C Compiler。

第二個是課題組的量子化學計算軟體VASP,把BLAS,LAPACK,BLACS,Scalapack的庫從Intel的(鏈結引數-mkl)改成openBLAS和netlib LAPACK、Scalapack等之後計算速度提公升平均能到10%左右。編譯都使用Intel Fortran Compiler,其他引數都一樣,只有鏈結的庫的區別;執行引數是mpirun -n 4 -env OMP_NUM_THREADS=2。

而且,在第二個例子裡,Intel的mpirun會有很不好的操作,經常把兩個程序分配到第乙個物理核心的兩個SMT執行緒上(taskset裡可以看到rank0的mpi程序的affinity總是CPU 0,並且會有另乙個程序的affinity也包含了CPU 0和CPU 1的。mpirun加了debug引數以後看到affiniy都很正常,和taskset看到的完全不一樣,但事實就是計算效能很低,affinity應該和tasksetk的結果那樣不正常),必須結合I_MPI_PIN_DOMAIN之類的環境變數來加以干預才能有正常的效能。

當然,如果只用序列版的數學庫,那第乙個例子和第二個例子中兩者的效率差別並不大,而且一套都用Intel的還方便。

3樓:

可以正常執行,優化肯定不如intel自家的。另一位答主說的ACML已經終止有段時間了:

可以試試OpenBLAS

xianyi/OpenBLAS

Develop版最近加入了對Ryzen的支援

4樓:

理論上可以,但是 MKL 是針對 Intel CPU 測試和優化的,在 AMD CPU 上效能很可能不好。AMD 那邊和 MKL 對應的是 ACML,這個沒用過,不知道是不是和 MKL 相容。

飛機能否使用環形跑道?

AngusC 好歸好,但靠空管的話根本不能完全發揮圓形跑道不用盤旋改航向降落的優勢 畢竟空管的工作量已經很大,不能還要求他們控制航班的同時讓多班航班降落 起飛,而且由於圓形跑道其實是等於一條大跑道,對於空管之間的互相協調的能力要求會進一步提公升 不過如果等到將來AGI普及 包括無人駕駛以及空中管制 ...

人用藥能否給貓使用?

modich 吡喹酮的話,可以。5mg kg,自己找劑量低的版本,通常是0.1 0.2g,分藥別搞出簍子來。人藥動物用是很常見的事情,不然動物醫院裡會少一大堆藥物。很多藥物是沒有獸用版本的。前提是你知道你在用什麼,用多少。因為絕大多數人不會真的去查藥典,看資料用藥,總體上不被鼓勵。 karas 人用...

typescript能否使用高階型別解決根據方法入參生成動態型別的問題?

HDDDDD 按我理解如果你的函式也有type,可以用infer 推斷出來的這篇文章可以學下ts比較深入的用法Typescript 高階語法高階 WuYang export type PickPayload Type Types extends?P never const ADD ADD const...