新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 网格中比较CPU计算能力的一种方法

网格中比较CPU计算能力的一种方法

作者:时间:2012-04-20来源:网络收藏

引 言

本文引用地址:http://www.eepw.com.cn/article/171585.htm

中,常常需要使用多台机协同工作完成一台超级机才能完成的计算任务,为实现上述目标,首先应通过信息服务获得中各台主机计算的指标,然后进行判断选择,决定由哪些主机参与计算。

当前,已有的网格信息服务模块、网格监控模块,如MDS2将系统平均负载作为反映状态的动态指标提供给用户;另外,通过系统命令或系统调用也可以获得 使用率这个动态指标。系统平均负载是在特定时间间隔内运行队列中的平均进程数,CPU使用率表示CPU使用程度的指标,能够反映出CPU的工作状态,但由于网格中CPU型号性能的差异,因此,无法用它们直接网格中CPU的计算

为直接网格中主机 CPU的计算,获得具有可比性的反映CPU计算能力的指标,我们采用计算量动态选择算法,在各台主机上周期性地瞬间执行计算量适中的Whestone 基准计算,通过PAPI接口编程对CPU所完成的浮点数计算进行精确计数,用得到的每秒百万浮点数MFLOPS作为主机CPU计算能力的指标,定义为 WMFLOPS。得到WMFLOPS后,通过Globus提供的监控和发现服务(Monitoring and Discovery Service,MDS),将该指标作为资源信息进行发布,作为比较网格节点CPU计算能力的依据,为用户选择计算节点提供参考。我们编写了程序 WfpSensor用于上述的实现。WfpSensor作为传感器工作于网格中的各个节点,周期性地对CPU进行计算测试,获得WMFLOPS的返回值,同时,WfpSensor也是MDS服务中的本地信息提供者,定时将最新的WMFLOPS值传递给MDS系统,供用户查阅。

计算测试子程序

CPU 的计算能力主要体现在浮点数计算能力、定点数计算能力和矩阵计算能力等方面,其中某一类程序在CPU上运行的效果并不能全面地反映CPU的计算能力,所以许多国际基准组织开发了测试CPU计算能力的基准测试程序,在这类程序中进行的操作和运算可以相对全面客观地考察CPU的计算能力。本文采用综合型基准测试程序Whestone作为WfpSensor的计算测试子程序,Whestone程序中主要包括浮点运算、整数运算、涉及到数组下标索引、子程序调用、参数传递、条件转移和三角/超越函数等,可以综合考察CPU提供的计算能力。

返回指标WM FLOPS

WfpSensor 进程对CPU进行计算测试后,取出CPU在测试过程中的指标来反映CPU的计算能力。绝大多数网格计算都是科学计算,而浮点计算是科学计算程序中最主要的计算,所以选用每秒百万浮点数MFLOPS作为反映CPU计算能力的指标。MFLOPS反映了CPU的浮点计算能力,并且MFLOPS是基于操作而非指令的,可以用它来比较两种不同CPU的计算能力。由于是调用Whestone程序进行测试所得的结果,因此定义该指标为WMFLOPS。

指标精确计数

指标确定后,如何在WfpSensor中精确得到Whestone计算结束后的WMFLOPS值成为问题的关键。由美国田纳西大学计算机学院创新计算实验室开发的标准应用编程接口PAPI( portable application programming interface)能够满足上述要求。该软件通过CPU上的硬件计数器,对CPU运行时产生的某些事件进行计数,并建立了一个标准应用编程接口方便用户读出计数器的值,通过这些值就可以了解当前CPU的工作状态。由于CPU生产厂商及型号的不同,CPU硬件计数器所计数的硬件事件会有所不同,为标准化指标的名称,使同一工具可以计数相似的可比较事件,促进跨平台调试程序的能力,PAPI开发者选择了一套和调试应用程序相关的硬件事件称为预定义事件,作为反映CPU当前工作状态的指标。这些指标是跨平台的通用事件,包括了大部分主流RISC类事件,并且尽可能把这些预定义事件映射到给定CPU的硬件计数器事件中。在本文中,使用了PAPI_FP_INS这个PAPI预定义事件,它表示进程执行过程中完成的浮点数计算。PAPI提供了精确的计时器,精确到微秒,能够准确地对进程的执行时间进行计时,如果经计数,PAPI_FP_INS事件总数为n,计算执行时间为t(单位:μs) ,那么WMFLOPS=n/t。

计算量动态选择

采用计算测试CPU的计算能力,必须保证以下两点:

(1) 测试进程应尽可能不影响CPU的正常工作,当然由于测试进程的引入必将影响到CPU正常运行,应设法让这种影响降到一个可以接受的程度,并且使计算给系统带来的开销尽可能小。

(2) 测试进程要有一定的计算量,如果计算量过小,会使初始化、函数调用等操作消耗的时间在进程的执行时间t中占有较大的比重,从而使WMFLOPS的值比真实值小,影响测试结果的精确性。

为同时保证(1)需要较小的计算量和(2)需要较大的计算量,选择合适的测试计算量十分重要,为此,提出采用计算量动态选择的算法确定计算量。

计算量的大小控制可以通过改变WfpSensor中调用Whestone程序的次数(NUM_LOOPS)实现。假定使计算执行时间t(单位:s)在 0.5~1.5的计算量是合理值,计算量调节系数为xs。WfpSensor启动时,NUM_LOOPS赋初值。调用Whestone计算结束后,如果:

(1) 0.5≤t≤1.5,在合理区间内,NUM_LOOPS的值保持不变。

(2) t>1.5,计算量偏大,下次测试应减小Whestone的调用次数,则NUM_LOOPS=NUM_LOOPS/xs。xs为t四舍五入后的整数值。

(3) t0.5,计算量偏小,下次测试应增加Whestone的调用次数,则NUM_LOOPS=NUM_LOOPS3xs。xs为(1/t)四舍五入后的整数值。

具体算法如下:

start_usec=PAPI_get_real_usec();//通过PAPI函数获得计算开始时的时刻

do_wst(NUM_LOOPS);//Whestone写成函数,对它进行调用,NUM_LOOPS是调用次数

end_usec=PAPI_get_real_usec();//通过PAPI函数获得计算结束时的时刻

t=(end_usec-start_usec);//获得计算执行的时间

if(t>1.5)//根据本次计算执行时间决定下次测试的调用次数

{

if((t-floor(t))>0.5)//取最靠近t的整数

xs=floor(t)+1;

else

xs=floor(t)

NUM_LOOPS=NUM_LOOPS/xs;//修改调用次数

}

else

if(t0.5)

{

if((1/t-floor(1/t))>0.5)//取最靠近1/t的整数

xs=floor(1/t)+1;

else

xs=floor(1/t);

NUM_LOOPS =NUM_LOOPS3xs;//修改调用次数

}


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭