ATLAS 3.10.1不会安装在我的组织的CentOS 6.x平台上,因为它检测到CPU节流。在较早版本的包中,有一个配置标志可以关闭节气门检查(-Si cputhrchk 0
),并不顾一切地前进。这一选择是几个版本前提出的。我理解这个决定背后的理由--开发人员担心他们的软件的性能和声誉,CPU节流使得ATLAS无法自我调整。很好。我的问题是,不管ATLAS的性能如何,我只需要构建这个东西就行了。有方法来停止节流,我知道,但我没有,也可能不会得到许可,在这台机器上乱搞CPU频率。所以我需要的是一个通过ATLAS油门检查的方法。我已经看到了一些关于破解配置脚本的讨论,但我不知道如何自己动手。在ATLAS sourceforge网站上没有人接电话,这是为了不批评那里的任何人。只是想说明一下我的处境。有人知道如何通过ATLAS的油门检查吗?谢谢。
发布于 2013-07-30 16:36:45
免责声明:以下是一个肮脏的、下流的、下流的黑客(带有所有的负面含义,没有任何积极的含义)只能作为最后手段使用。我和ATLAS开发人员都不对您的ATLAS库的性能承担任何责任,因为使用这个.。
首先要确保您理解CPU节流检查的原因: ATLAS提供了一些算法的“自动调优”,如果启用CPU节流,它就无法进行调优(因为基准时间不是固定的)。用INSTALL.txt
的话说:"CPU节流使得几乎所有的时间都是随机的,而因此任何安装都是垃圾“(强调我的)。如果可能的话,关闭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
该补丁适用于地图集3.10.1。
发布于 2015-02-11 21:52:31
另一种禁用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");
*/
发布于 2017-05-23 06:49:40
在3.10.3版本中,实际上有一个配置标志--cripple-atlas-performance
,它使编译ATLAS成为可能,而不关心节流。
https://stackoverflow.com/questions/14592401
复制相似问题