AMD数学核心库acml的安装使用

由于需要在共享内存机器上实现Lapack+openmp,安装acml(Intel® MKL也是可以的,不过考虑到服务器使用的是AMD多核心CPU就用acml了)。acml包含BLAS, Lapack, FFT, RNG四个部分,内建了openmp,也就是说不用手动控制多线程和多任务。在运用acml的程序中,只需要在运行的时候设置OMP_NUM_THREADS=n(例如export OMP_NUM_THREADS=n)就会以n线程运行。

根据操作系统和编译器,选择的acml版本,目前安装的版本是acml_gfortran_64bit_fma4_mp_int64用于gcc/gfortran编译器,acml_open64_64_fma4_mp_int64用于open64编译器。

安装目录/opt/acml。

编译方式:gfortran -fopenmp -m64 test.f -L/opt/acml/gfortran64_fma4_mp_int64/lib -static -lacml_mp -lrt
gcc需要加上-I, -lgfortran参数。
openf95 -mp test.f -L/opt/acml/open64_64_fma4_mp_int64/lib -lacml_mp
opencc需要加上-I,-lfortran参数
如果使用动态链接库so库文件而不是a库文件,需要
export LD_LIBRARY_PATH=open64_64_fma4_mp_int64/lib:$LD_LIBRARY_PATH

gcc(gfortran)是一个好的选择。

如果一定要使用open64的话,需要做以下open64的路径设置:
在个人用户.profile,或者/etc/profile文件添加:
AMDSDK_ROOT=/opt/amdsdk/v1.0
CodeAnalyst=/opt/CodeAnalyst
export PATH=$AMDSDK_ROOT/x86_open64-4.2.4/bin:$PATH
export PATH=$CodeAnalyst/bin:$PATH

由于open64的部分核心是32位的,必须安装i386的库:sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386
然后建立lib64的符号链接:sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
注意,修改的路径在sudo下不能识别,必须用 sudo su – 模拟一个有通常路径的sudo用户。
(AMD的open64还是做的不够好!难道就不能完全64bit?)

fma4在Intel CPU上会出错,因此在Intel CPU上用acml_gfortran_mp就可以。当然,这种情况用Intel® MKL更好。

我会编辑一个gcc的和open64的Makefile。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注