ATLAS 3.10.1 不会安装在我组织的 CentOS 6.x 平台上,因为它检测到 CPU 节流。在旧版本的软件包中,有一个配置标志可以关闭油门检查 ( -Si cputhrchk 0
) 并继续前进。该选项在几个版本前被取消。我理解该决定背后的原因——开发人员担心他们的软件的性能和声誉,而 CPU 节流使 ATLAS 无法自行调整。美好的。我的问题是,不管 ATLAS 的性能如何,我只需要构建这个东西. 我知道有一些方法可以停止节流,但我没有也可能不会获得在这台机器上弄乱 CPU 频率的权限。所以我需要的是一种通过 ATLAS 油门检查的方法。我看过一些关于破解配置脚本的讨论,但我自己看不到如何去做。没有人在 ATLAS sourceforge 网站上回答,这并不是要批评那里的任何人。只是想表明我的情况。所以:有人知道如何通过 ATLAS 的油门检查吗?谢谢。
5 回答
免责声明:以下内容是一种肮脏、低俗、卑鄙的黑客行为(包含所有暗示的负面含义,没有任何正面含义),仅用作最后的手段。我和 ATLAS 开发人员对您的 ATLAS 库因使用它而遭受的性能损失不承担任何责任。
确保您首先了解 CPU 节流检查的原因:ATLAS 提供了一些算法的“自动调整”,如果启用了 CPU 节流,它就无法调整(因为基准测试时序不可靠)。用以下话说INSTALL.txt
:“CPU 节流几乎使所有时间都完全随机,因此任何 ATLAS 安装都将是垃圾”(强调我的)。如果可能,请关闭 CPU 节流。
如果您绝对无法关闭 CPU 节流,并且您只需要安装有效的 ATLAS 即可,无论性能有多么下降,请尝试以下操作:
cd /path/to/ATLAS
patch -p0 CONFIG/src/probe_arch.c << EOF
@@ -238,8 +238,7 @@ int main(int nargs, char **args)
printf("CPU MHZ=%d\n",
ProbeOneInt(OS, asmd, targ, "-m", "CPU MHZ=", &sure));
if (flags & Pthrottle)
- printf("CPU THROTTLE=%d\n",
- ProbeOneInt(OS, asmd, targ, "-t", "CPU THROTTLE=", &sure));
+ printf("CPU THROTTLE=0\n");
if (flags & P64)
{
if (asmd == gas_x86_64)
EOF
该补丁适用于 atlas 3.10.1。
另一种禁用 CPU 节流的方法(从 3.10.2 开始)是将CONFIG/src/config.c
'GetFlags()
方法修改为设置ThrChk
为 0。
cd /path/to/ATLAS/CONFIG/src
patch -p0 config.c << EOF
@@ -1026,7 +1026,7 @@
*verb = 0;
*NoCygwin = 0;
*NoF77 = 0;
- *ThrChk = 1;
+ *ThrChk = 0;
*nthreads = -1;
*tids = NULL;
*omp = *AntThr = 0;
EOF
请注意,维护者-Si cputhrchk 0
因滥用而被删除,如以下评论所示config.c
:
/* Disabled due to abuse
fprintf(stderr,
" -Si cputhrchk <0/1> : Ignore/heed CPU throttle probe\n");
*/
在 3.10.3 版本中,实际上有一个配置标志--cripple-atlas-performance
,可以编译 ATLAS 而无需关心限制。
如何在最近使用较新版本的 Fedora Linux(例如 Fedora 22)的计算机中关闭 CPU 节流。食谱:
1) 使用 root 权限打开文件 /etc/default/grub 并在变量 GRUB_CMDLINE_LINUX 中添加参数“intel_pstate=disable”,然后保存文件,例如:
GRUB_CMDLINE_LINUX="intel_pstate=disable rhgb quiet" #(其他参数)
2) 重新生成 GRUB 配置以应用新的更改:
a) 对于 BIOS 系统:# grub2-mkconfig -o /boot/grub/grub2.cfg
b) 对于 UEFI 系统:# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
并重新启动。
关于 (i) 配置 GRUB 引导加载程序和 (ii) 当系统是 UEFI 或 BIOS 时,在 Fedora Linux 中,例如参见:
https://docs.fedoraproject.org/en-US/Fedora/22/html/Multiboot_Guide/GRUB-configuration.html
https://docs.fedoraproject.org/en-US/Fedora/23/html/Multiboot_Guide/BOOT-BIOS_or_UEFI.html
好吧,这不是一个很好的答案,但以防万一有人想知道:这里的系统管理员实际上允许我对 CPU 节流进行监控,所以现在 ATLAS 正在构建中。但是,嘿,如果有人有真正的答案,请让我和其他看过这个问题的人知道。我很确定我会再次面对这种情况,也许还有一个更顽固的系统管理员要担心。