ATLAS安装:确实需要通过CPU限制检查吗?

12

ATLAS 3.10.1无法安装在我们组织的CentOS 6.x平台上,因为它检测到CPU限制。在早期版本的软件包中,有一个配置标志可以关闭限制检查(-Si cputhrchk 0)并继续前进。但是该选项已经在几个版本之前取消了。我理解该决定背后的原因--开发人员担心软件性能和声誉,而CPU限制使得ATLAS无法进行自我调整。不错。我的问题是,无论ATLAS的性能如何,我只是需要构建这个东西。我知道有一些停止限制的方法,但我没有也可能不会获得在这台机器上操作CPU频率的权限。所以我需要一种方法来跳过ATLAS的限制检查。我看到有一些关于破解配置脚本的讨论,但我自己不知道如何操作。ATLAS sourceforge网站上没有任何回答,这并不是要批评那里的任何人。我只是想说明我的情况。所以:有人知道如何越过ATLAS的限制检查吗?谢谢。


我本来想建议你在Atlas讨论组中发帖 - 但你已经做过了:http://sourceforge.net/p/math-atlas/support-requests/886/. - paulsm4
@paulsm4,没错。这是我的最后一招!谢谢。 - bob.sacamento
另一个选择是下载并构建ATLAS 3.9.79(发布于06/13/12)。这是在他们禁用“被滥用的-Si cputhrchk 0”之前的版本。有关详细信息,请参阅源目录中的“ChangeLog”。 - paulsm4
3.9.79 在 SourceForge 上似乎不可用。看起来在此切换之前的最后一个稳定版本是 3.8.4(我想是这样,没有在我面前)。你知道那个版本的情况吗?是否存在任何错误或问题?谢谢。 - bob.sacamento
1
就此而言,“-Si cputhrchk 0”似乎已经作为“configure”选项被重新启用(我正在构建3.10.2)。 - jrk
5个回答

9
免责声明:以下是一种肮脏、卑鄙、不光彩的黑客方式(带有所有负面含义,但没有任何正面含义),只能作为最后的手段使用。我和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版本。

谢谢。我理解性能问题。我会非常小心处理。如果必须采取这种措施,我承诺不会抱怨性能。非常感谢。 - bob.sacamento
3
我明白你已经知道了,鲍勃,但是我只是觉得如果我不把那个放进去,其他人就会来并且会受到影响。 :) - Paul Price
所以这已经是3年前的事了,而Atlas构建仍然抱怨 - 这还是一个问题吗?其次,为什么Atlas不能在关闭限流的情况下自动调整自身,保存参数,然后让我们将事物恢复到“正常”呢? - duanev

3

另一种禁用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

从3.10.3版本开始,实际上有一个配置标志--cripple-atlas-performance,使得可以编译ATLAS而不必担心限制性能。


1
如何在较新版本的 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
然后重新启动。
关于配置 GRUB 引导加载程序和系统是 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


0

好吧,这不是一个很好的答案,但以防万一有人想知道:这里的系统管理员实际上给了我权限来调整CPU限制,所以现在ATLAS正在构建。但是,如果有人有真正的答案,请让我和其他查看此问题的人知道。我相信我将再次面临这种情况,也许还要担心更顽固的系统管理员。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接