在 ARM 平台上安装、编译和运行 Mlucas 并进行 FFTs 测试
在 ARM 平台上安装、编译和运行 Mlucas 并进行 FFTs 测试
概述
Mlucas 是一个用 C 编写的开源软件,专门用于多平台架构的高性能梅森数素性测试。在 ARM 平台上,由于 prime95/mprime 仅支持 x86 架构,Mlucas 成为理想的替代方案。详细介绍了如何在 ARM 平台上安装、编译并运行 Mlucas,包括对各类参数的深入介绍与示例,并结合硬件资源优化进行了详细的配置步骤。
范围
适用于希望在 ARM 平台上执行 FFTs 测试并优化硬件性能的技术人员。本文主要针对运行 Debian 系统的 ARM64 设备,但同样适用于其他 Linux 发行版,步骤可能略有不同。
职责
- 系统管理员:确保 ARM 平台上所需的软件和库均已正确安装,具备系统管理权限。
- 操作员:严格按照本 SOP 进行 Mlucas 的安装、编译、调优和运行。
要求
- ARM64 架构的设备,运行 Linux 操作系统(如 Debian 或 RHEL9)。
- 基本的命令行操作知识。
- 具备 sudo 或 root 权限。
- 有效的互联网连接以下载必要的软件包和源码。
过程
1. 系统环境准备
1.1 更新系统软件包列表
- 在进行软件安装前,先确保系统软件包是最新的。
1
2sudo apt-get update
sudo apt-get upgrade
1.2 安装必要的依赖包
Debian
1
sudo apt-get install build-essential libgmp-dev libhwloc-dev git clang
RHEL9
1
2sudo dnf group install "Development Tools"
sudo dnf install gmp-devel hwloc-devel clang git
2. 下载和准备 Mlucas
2.1 从 GitHub 克隆 Mlucas 源码
- 使用以下命令克隆 Mlucas 项目到本地目录。也可以从 Release 页面 下载源码包。
1
git clone https://github.com/primesearch/Mlucas.git
2.2 进入 Mlucas 项目目录
1
cd Mlucas
3. 编译 Mlucas
3.1 设置编译器
- 将编译器设置为
clang以优化编译过程。1
export CC=clang
3.2 使用 makemake.sh 脚本编译 Mlucas
- 执行
makemake.sh脚本,确保启用hwloc支持,以优化 CPU 绑定和内存访问性能。1
bash makemake.sh use_hwloc
3.3 确认编译成功
- 编译完成后,编译生成的可执行文件将位于
obj目录中。使用以下命令查看生成的文件:1
ls obj
- 生成的文件名可能会因编译选项的不同而变化,如
Mlucas.
4. 性能调优:为您的机器进行优化
STEP 2 − PERFORMANCE-TUNE FOR YOUR MACHINE
在 Mlucas 编译完成后,重要的是对软件进行调优,以便充分利用您的硬件资源。这一步骤涉及运行一系列测试,以确定适合您机器的最佳 FFT 长度和 CPU 绑定配置。
4.1 运行自检
自检测试将评估您的硬件性能,并生成配置文件,帮助确定适合的 FFT 长度和其他参数。运行以下命令:
1
./Mlucas -s
该命令将测试多个 FFT 长度和 CPU 配置,以确定最佳配置。测试结果将存储在生成的日志文件中。
4.2 分析自检结果
自检完成后,打开并分析生成的日志文件(通常是
mlucas.cfg或其他输出文件),查看不同 FFT 长度下的性能表现。1
cat mlucas.cfg
该文件会列出每个 FFT 长度的平均迭代时间。较短的时间意味着更优的性能。选择那些具有最短迭代时间的 FFT 长度和配置。
4.3 配置 Mlucas
- 根据自检结果,手动编辑
mlucas.cfg文件,以使用最佳配置进行实际测试。例如,设置合适的 FFT 长度和 CPU 绑定。1
nano mlucas.cfg
- 在配置文件中指定最佳 FFT 长度和 CPU 核心分配,如:
1
2FFTlength=2048K
CPU=0-7
4.4 再次测试并验证
- 使用优化后的配置重新运行 Mlucas,并通过日志文件验证性能是否有所提升。
1
./Mlucas -s m -logfile optimized_test.log
- 实时查看日志文件以确认测试正在按预期的配置进行:
1
tail -f optimized_test.log
5. Mlucas 参数设置与执行 FFTs 测试
5.1 获取系统的 CPU 信息
- 在执行测试之前,获取并了解测试机器的 CPU 配置情况。
1
lscpu
- 例如,输出结果可能为:
1
2
3
4CPU(s): 32
Thread(s) per core: 1
NUMA node0 CPU(s): 0-15
NUMA node1 CPU(s): 16-31
5.2 Mlucas 常用参数介绍
-s:指定自检或特定素性测试模式。常见值包括:-s:自检模式,测试系统性能并生成配置文件。-s m:启动梅森数的快速测试。-s q:启动快速素数测试(例如 Fermat 测试)。
-cpu:指定使用的 CPU 核心范围。格式为-cpu start:end,例如-cpu 0:15表示使用 CPU 0 到 15 号核心。-fftlen:设置 FFT 长度。FFT 长度决定了可处理的最大数字大小。常见值为 1024K, 2048K, 4096K 等。-iters:设置每个测试的迭代次数。更高的迭代次数可提供更精确的结果,但需要更多时间。-logfile:指定日志文件路径。默认值为mlucas.log。
5.3 FFT 测试的参数示例
- 自检模式:
1
./Mlucas -s
- 运行 FFTs 测试并指定 CPU 核心范围:
1
./Mlucas -s m -cpu 0:3 -fftlen 2048K -iters 10000 -logfile fft_test.log
- 对不同核心组运行 FFTs 测试:
1
2
3
4
5
6
7
8./Mlucas -s m -cpu 0:3
./Mlucas -s m -cpu 4:7
./Mlucas -s m -cpu 8:11
./Mlucas -s m -cpu 12:15
./Mlucas -s m -cpu 16:19
./Mlucas -s m -cpu 20:23
./Mlucas -s m -cpu 24:27
./Mlucas -s m -cpu 28:31
5.4 监控测试进度
- Mlucas 运行过程中会生成日志文件,可以使用以下命令实时查看日志以监控测试进度和性能表现:
1
tail -f mlucas.log
5.5 常见优化建议
- 调整 FFT 长度:根据硬件配置和测试目标,选择适合的 FFT 长度。较大的 FFT 长度通常适用于处理更大的数字,但可能会增加计算时间。
- 核心绑定:通过
-cpu参数绑定特定核心组,以避免不同进程争夺相同的 CPU 资源,从而提升性能。
6. 优化与维护
6.1 优化 CPU 绑定
- 根据测试需求和系统资源,调整
-cpu参数中的核心范围,以进一步优化计算性能。
6.2 定期更新
- 通过定期从 GitHub 仓库获取最新的源码,并重新编译,以确保使用最新版的 Mlucas 并获得最新的性能优化。
7. 自动化测试脚本
7.1 编写自动化测试脚本
- 以下是 Bash 脚本
run_mlucas.sh的详细说明,用于自动化 Mlucas 的测试过程。该脚本支持两种 FFT 模式 (small和large),根据 CPU 核心数量自动分配核心组,并并行运行多个 Mlucas 实例。
1 |
|
7.2 脚本运行说明
- 该脚本在启动时会根据传入的参数选择 FFT 模式(small 或 large),并自动初始化相应的配置文件。
- 脚本自动检测系统中的 CPU 核心数量,并将核心划分为多个组,每组运行一个或多个 Mlucas 实例。
- 生成的任务脚本
jobs.sh会在后台启动所有的 Mlucas 实例,并记录测试日志。
7.3 执行脚本
- 在终端中执行脚本,传入所需的 FFT 模式(如
small或large)。1
bash run_mlucas.sh small
7.4 监控日志
- 脚本将测试日志记录在每个核心组的
test.log文件中,可以通过以下命令实时监控日志:1
tail -f /Mlucas/runset/run0/test0.log
7.5 停止测试
- 如果需要终止测试,可以使用以下命令终止所有正在运行的 Mlucas 实例:
1
pkill -x Mlucas
