问题标签 [linpack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
performance-testing - 了解 linpack 输入配置
我已经阅读了文档,但是 2,3, 5 不清楚(我不知道 FORTRAN)。
第 2 行 - 是否要求创建 1000*1000、2000*2000 ... 5000*5000 矩阵?如果是,方程与创建矩阵有什么关系?如果否,该方程有多复杂?它像求解a = 1.2+2.2
或其他一些复杂问题一样简单
第 3 行 - 它可能指的是子矩阵。但是创建子矩阵有什么意义呢?如果所有 LDA 值都等于相应的问题大小会发生什么
Line5-对齐值到底是什么?
r - LAPACK 的 `dtrcon` 底层算法
我目前正在尝试重构 R 的kappa
条件数估计函数的一些函数,该函数通过以下方式估计矩阵 X 的条件数:
- 计算 X 的 QR 分解。
- 调用
LAPACK
'sdtrcon
或LINPACK
'sdtrco
(取决于用户系统的底层依赖项是什么),并计算 R 的条件数,上三角矩阵应该具有与 X 相同的条件数(参见此处)。
我一直在尝试了解LAPACK
和LINPACK
算法的作用,因为它可能对我自己的编码非常有用。
我设法找到了LINPACK
使用的算法,这在此处描述,但没有找到LAPACK
's 算法的起源。R 函数中的注释kappa
表明它们使用不同的算法(请参见此处),但我不确定...
长话短说,我的问题是:
有谁知道LAPACK
'dtrcon
和LINPACK
'是否使用相同的算法,如果没有, '使用dtrco
的是什么算法?LAPACK
dtrcon
先感谢您!
benchmarking - 如何编辑 Make.Linux_intel64 以获得与英特尔® 优化 MP LINPACK 基准测试相同的性能
我的 KNL 平台基于 Intel(R) Xeon Phi(TM) CPU 7250 @ 1.40GHz,1 个节点,68 个内核,96GB 内存。我在 linpack 基准测试中有一些问题。
当我执行以下英特尔® 优化 MP LINPACK 基准测试时:/opt/intel/compilers_and_libraries_2018.5.274/linux/mkl/benchmarks/mp_linpack 我得到了大约 1700 gflops 的良好性能(N = 40k - 编译器:mpirun -np 1 ./xhpl )。
但是当我在 netlib hpl-2.3 上下载开源并安装它时,我的性能变得如此糟糕(大约 700gflops,具有相同的大小和编译器)。我认为我的问题是安装处理(编辑文件 Make.Linux_Intel64)。
大家,请帮我解决我的问题,或者如果您有任何想法以获得良好的性能,请指导我。
非常感谢。
c - 未定义的参考错误:编译 HPL 基准
我一直在尝试编译 HPL 基准测试,我认为在解决了许多问题后我已经停下来了。我会很感激帮助。
我已经安装了 cblas 和 mpi:
现在我只是在链接中获得了与 HPL_* 相关的未定义引用。
就像是:
即使我手动执行如下编译器命令,它也不起作用:
这是我的 Make.arch 文件(减去许可证头):
multithreading - OpenMPI 和 OpenMP 核心绑定
我已阅读有关在 AMD 上运行 linpack 的文章 [1]。根据我的理解,执行策略是每个 L3 缓存有 1 个 MPI 等级,每个有 4 个线程,因为 L3 缓存用于四个物理内核。现在,通过阅读这篇文章,我有三个无法通过谷歌搜索回答的问题:
1) 他正在对单个 CPU 系统进行基准测试。我想通常 OpenMPI 用于在集群上部署 linpack。但是使用多个 MPI 等级而不是具有更多线程的等级是否有任何性能优势?在多插槽/共享内存机器上,根据我的理解,这应该没有任何区别。
2) 他运行基准测试如下:
我的问题是 mpirun 的 bind-to 的默认设置是绑定到核心。据我了解,这意味着每个等级都绑定到一个核心。现在,即使 OMP 线程也绑定到核心,我看不到每个等级的四个线程将在四个核心上执行。相反,由于等级(进程)绑定到一个核心,等级由四个 OMP 线程组成,它们都共享同一个核心,这不是预期的吗?我没有 CPU 来验证我的假设。我是否正确,这里缺少 --bind-to l3cache 设置以允许 OMP 线程分布在共享 l3 缓存的所有内核上?如果不是,为什么?
3) 他指出,在进行基准测试时应该禁用 SMT。为什么?我知道如果像 FPU 这样的共享执行单元已经饱和,硬件线程可能不会总是提高性能,但为什么它们会降低性能呢?
非常感谢您的帮助。
亲切的问候,马克西米利安
linux - OpenMPI / 高性能 Linpack 新手问题
我有一个由 4 个节点组成的小集群,每个节点有 4 个核心。我可以愉快地在一个节点上运行 HP Linpack,但我很难让它在多个节点上运行。
我使用 OpenMPI 和 OpenBLAS 从源代码编译了 HPL-2.3。一切似乎都适用于单节点测试。
我的“节点”文件是:
如果我运行,mpirun -np 16 -hostfile nodes uptime
我会得到以下信息:
向我建议,OpenMPI 正在工作并分发uptime
到 4 个处理器、16 个内核。
但是,当我运行时,mpirun -np 16 -hostfile nodes xhpl
我得到以下信息:
这向我表明xhpl
在 node 上找不到192.168.0.3
,这似乎是合理的,因为它只存在于192.168.0.1
我的开发节点上。但从概念上讲,我的印象是我可以在一个节点上开发,然后让 OpenMPI 将可执行文件分发到其他节点执行,而无需事先将可执行文件复制到其他节点。我从根本上误解了这一点吗?
任何指导将不胜感激。
亲切的问候
约翰
linux - 编译 HPL Linpack 基准测试时禁用矢量化
我尝试编译 netlib hpl linpack 基准测试,但我想禁用矢量化。
我删除了 make 文件中的所有优化标志,并且只-qno-openmp-simd -no-vec -no-simd
设置了这些标志。
但是,当我执行 binaryxhpl
时,walltime 和 FLOPs 与设置所有优化标志并且代码被矢量化时相同。此外,likwid 的矢量化率约为 98%。
我读到这些标志不会阻止像 MKL 这样的库被矢量化。netlib HPL 使用来自 MKLROOT 的线性代数库(BLAS 或 VSIPL)。
在编译这个特定的基准测试时,我可以强制编译器禁用矢量化吗?如果可以,怎么做?
openmp - 使用 OpenMP BLAS 库的高性能 Linpack (HPL) 编译选项
Ubuntu 20.04 64 位 aarch64
我已经从源代码成功构建了高性能 Linpack (HPL-2.3),并在 HPL Make.myconfig 文件中指定了 OpenBLAS串行共享库。HPL 运行愉快。
我现在想使用 OpenBLAS OpenMP 共享库版本构建 HPL。在对 HPL 源目录进行递归grep omp
之后,我在源代码中找不到任何 OpenMP 编译指示。
我的问题是,当我构建 HPL 时,是否需要指定-fopenmp
为编译选项?我的想法是 HPL 没有使用 OpenMP,并且不需要知道它链接的 OpenBLAS 共享库确实使用了 OpenMP。我敢肯定我错了,但我不知道为什么...
此致
mpi - 什么是一组一致的英特尔 HPL 选项?
我正在尝试在这里运行 Intel 版本的 HPL 基准测试,但我对这些选项感到有些困惑。
我想做的(现在)是单节点运行。该节点有 2 个 Xeon Platinum 8276 处理器,因此总共有 56 个内核。所以我的 PxQ 应该是 56。
然而,英特尔文档说:
- MPI_PROC_NUM 应该等于 PxQ(即 56) - 这被传递给
mpirun -np
- MPI_PER_NODE 应该等于系统中的套接字数(即 2) - 这被传递给
mpirun -perhost
对我来说,那些似乎不一致?以及如何使用 OMP_NUM_THREADS 适应这一点?
centos - 构建 HPL 的问题
我正在尝试在我的笔记本电脑上构建 Linpack。我正在运行 CentOS 8,以及 Open MPI 和 blas 3.8.0。
在启动和刷新之前,makefile 运行良好,但在构建部分出现错误。
错误
Make.LINPACK_PII_CBLAS