我不确定我是否做错了什么,或者我只是不了解优化 BLAS 的概念。
我是一名 FEM 工程师,试图优化我在小型集群计算机(六个节点)上的设置。我在开源工具上构建一切。我的目标是使用强大的设置来管理大型机械模拟。在最终使用 MPI 编译我的程序后,我正在阅读使用优化的 BLAS 将帮助我进一步缩短计算时间。
我安装了OpenBlas并构建了 Lapack 3.4.2。lapack 基准测试的结果令人惊讶。它们在系统(未优化)BLAS 中速度最快,并且运行时间随着指定线程数量的增加而增加(export OPENBLAS_NUM_THREADS=i
)。scalapack也是如此。此外,虽然我在这台机器上可用,但i>16
似乎只使用线程。没关系,因为无论如何我都希望有人在一个节点上运行几个 MPI 进程(4 个?),但我觉得这很可疑。16
32
我是初学者,不知道从哪里开始挖掘。有人可以给我一个提示吗?我在这里i=32
有一个日志的粘贴箱。
OpenBLAS build complete.
OS ... Linux
Architecture ... x86_64
BINARY ... 64bit
C compiler ... GCC (command line : gcc)
Fortran compiler ... GFORTRAN (command line : gfortran)
Library Name ... libopenblas_sandybridgep-r0.2.5.a (Multi threaded; Max num-threads is 32)
Lapack 3.4.2 make.inc(默认更改)
BLASLIB = /path/to/libopenblas.a -lpthread
-编辑:(更多信息,因为@Aron Ahmadia的评论)
- 系统 BLAS 日志
i=1
日志i=32
日志- CentOS 6.3 版(最终版)
blas-devel-3.2.1-4.el6.x86_64
gcc
版本 4.4.6 20120305(Red Hat 4.4.6-4)(GCC)(与 相同gfortran
)。MemTotal: 198202172 kB
$ grep "Xeon(R) CPU E5-2690 0 @ 2.90GHz" /proc/cpuinfo | wc -l 32.