|
楼主 |
发表于 2009-9-14 23:38:12
|
显示全部楼层
app_info.xml里的<cmdline>参数说明
首先,感谢 cuihao 和 Nye 的翻译以及 yuan234yuan 的修正工作
你可以通过修改app_info.xml文件里的一些参数来设置这个应用。
你所需要做的就是编辑以下这行代码:
<cmdline></cmdline>
这行代码里你可以放置很多选项,其顺序无所谓先后。
如果同一个参数设置出现两次,只运行第二个设置。
谨记,要编辑app_info.xml文件必须和安装本应用一样采取某些预备措施,也就是说,你应当先彻底停止BOINC客户端,待编辑完成后再重启。
内核频率: f (默认 30)
计算程序动态地决定送交GPU任务包的大小。
程序会试图输送高于这里设定数字的每秒计算任务数量,这时程序会把任务包分割成较小的部分。
在一个任务包的运行时期间,操作系统对显卡的访问将被阻断,这会导致用户界面反应迟钝现象的发生。
限制包的大小并因此缩短每个包占用的时间,会给操作系统更多时间响应用户输入。
默认值30Hz(即每秒发出30个包)对于系统是比较合理的,减少这个值会稍微增加程序运行效率。
例子:
<cmdline>f10</cmdline>
程序每秒会运行10个任务包(这将把运行时间限制在100毫秒以内)。
等待系数:w(默认 1.0)
程序在进行GPU计算时,会尝试释放CPU资源。
计算程序会预计GPU调用(即CPU向GPU发出运算命令)所需要的时间,并告知CPU线程在GPU运算期间休息。
通过这个因数,可以人为校正程序的预测时间。
若提升此参数,CPU线程会闲置更长时间,若减少,会导致CPU线程更快被唤醒。这一时间过后,对GPU的轮询会重新开始。
设置此数值为0.0将会关闭CPU资源释放。
默认值自然是1.0(100%),如果你发现GPU使用率低,可以尝试减少这个值(如果使用率为80%,设置为0.8)。
若CPU使用率过高,增加这个数值或许有所帮助。
增加该值过多会减慢GPU运算效率(但响应用户会加快)。万一过高的GPU使用率使你的计算机相应太慢甚至VPU重置,设置成w1.1可以减少GPU调用,缓解这种情况(另见f,b,p参数)。
例子:
<cmdline>w1.3</cmdline>
这样会增加30%的休息时间。
最大显存使用率:r (默认 33.4)
计算程序在显存中开辟空间以记录计算内容。
增加该值可以为进程提供更多的并行数据,并会有更多的空间使f参数接近指定的值(不大理解)。
如果超过一个WU同时处理,则不应该增加显存使用。
此数值是占用实际显存的百分率。
注意,太高或太低的数值可能导致程序崩溃。
另见readme最后关于显存用量的说明。
例子:
<cmdline>r40</cmdline>
将增加最大显存使用率到40%。
优先级:p (默认 1)
正常情况下,所有的BOINC计算程序为了不影响其他程序,都会以最低优先级运行。
当所有CPU核心在被使用时,程序暂时可能无法启动下一次计算(没有空闲的CPU资源来调用GPU)。这样做可能会导致GPU使用率过低.
提高优先级可能对计算效率会有一些帮助。
对于GPU计算程序,BOINC提供了一个略高的优先级。
有以下可行的设置:
p0:低优先级,BOINC的CPU计算程序使用。
p1:较低优先级,GPU计算程序推荐。
p2:普通优先级。
p3:高优先级,谨慎使用。
优先级会影响到计算程序在释放CPU时间后多久可以重新获得控制(另见b参数)。
例子:
<cmdline>p2</cmdline>
提升优先级到普通优先级(与大多数应用程序相同)。
带有Brook运行时的GPU轮询行为: b (default 1)
首先请看w参数的介绍。
在等待时间过去后,GPU轮询开始。
GPU轮询可以通过持续不断地进行检查运算是否完成来实现(b-1),这样用的时间最少,但是可能导致很高的CPU使用率(部分依赖于硬件驱动版本)。
第二种选择是由操作系统分配处理时间,这样别的程序可以正常运行(b0)。
需要注意的是,优先级在这里会有一些影响。
处理时间只会分配给相同优先级的其它进程。
所以提升优先级,禁止释放计算资源,实质上和设置此参数为-1作用相同。
如果你提升优先级并且希望所用的CPU时间尽量少,你应该设置此参数为默认值1。
b参数设为1,每次调用GPU计算中间至少会有1毫秒间隔,使得低优先级的任务在此期间可以使用CPU资源。
可行的设置:
b-1:忙等待
b0:向同一优先级程序释放CPU处理时间
b1:至少释放1毫秒处理时间
另见p、w参数
例子:
<cmdline>b-1</cmdline>
允许忙等待(GPU轮询期间不释放CPU资源)
各个参数可以以任意顺序写在同一行,因此这条参数是允许的:
<cmdline>w0.9 f20 r50 p2 b1</cmdline>
(等待系数0.9,内核频率20,最大显存使用率50%,标准优先级,CPU优先的轮询方式)
新BOINC客户端(6.10.3及以上版本)下设置并行WU数量
内含的app_info.xml文件表明本应用是新版6.10.x客户端的GPU应用。
关于GPU的设置是通过<coproc></coproc> 语句进行的。
这个语句也能决定本应用可以使用多少GPU.
如果使用少于一个完整GPU,客户端会为每个检测到的GPU开启数个WU。在app_info.xml文件里搜索以下语句:
<coproc>
<type>ATI</type>
<count>1</count>
</coproc>
将count至改成0.5意味着每个GPU运行2个WU,改成0.33则是每个GPU运行3个WU.
配置6.10之前旧版本BOINC方法:
在新的6.10.X版本客户端中,通过app_info.xml文件中的<coproc></coproc>声明表示计算程序为GPU版本。
旧版本客户端可能由于无法识别需要的GPU型号导致错误。
旧版本客户端在这种情况下会拒绝计算程序运行。
若要使程序正常运行,删除
<coproc>
...
</coproc>
和中间的任何内容。
如果该声明出现了不止一次,需要删除所有的这些声明。
然后你需要调高<avg_ncpus>0.05</avg_ncpus>中的数值(在coproc声明之前),数值的大小取决于你的需要(推荐0.5,甚至1)。
关于ATI催化剂驱动版本:
ATI/AMD在新版本驱动中重命名了CAL库文件。
你需要安装适合CAL库文件的计算程序版本(意思是如果你不想换驱动版本,就换计算程序版本)。
催化剂8.12和9.1版本使用了AMD前缀的名称,之后的版本使用ATI前缀的名称(CAL 1.4)。
如果你选择的版本正确,你就不用更改dll文件名称了。
但如果你用的是使用amd前缀dll文件的计算程序,请复制一下Windows\system32下面的这些文件(左边是32位,右边是64位):
aticalrt.dll or aticalrt64.dll
aticalcl.dll or aticalcl64.dll
aticaldd.dll or aticaldd64.dll
保留原来的3个文件(切记),创建3个文件的副本重命名为(与上面对应):
amdcalrt.dll or amdcalrt64.dll
amdcalcl.dll or amdcalcl64.dll
amdcaldd.dll or amdcaldd64.dll
用命令行会更简单。开始菜单 -> 运行,输入cmd回车。输入下述命令:
cd %systemroot%\system32
copy atical*.dll amdcal*.dll
现在,Windows\system32文件夹中应该有6个dll文件,3个amdcal*.dll,另外3个事atical*.dll。不要简单的重命名3个dll!
关于Windows 7的说明:
有些Catalyst驱动不会在Windows 7下安装CAL库。
你必须将它们从驱动包里提取出来(通常使用expand命令),然后放到Windows\system32文件夹下。
所需要的文件包括(后缀为“64”的文件只适用于64位系统):
amdcalrt.dll 或 amdcalrt64.dll
amdcalcl.dll 或 amdcalcl64.dll
amdcaldd.dll 或 amdcaldd64.dll
默认显存使用:
作为一个法则,Collatz根据显存的大小,一个WU使用总量不超过1/3。
最多的情况下,每个WU会使用528MB显存(总显存超过1.5GB时)。
显存的用量始终是(16+2^n)MB(n为正整数),例如17MB, 18MB, 20MB, 24MB, 32MB, 48MB, 80MB, 144MB, 272MB, 528MB.
这就意味着在128MB显存的显卡上,一个WU占用32MB显存,256MB显卡上占用80MB,512MB显卡上占用144MB,1GB的显卡使用272MB,等等。
但并不是说,大显存的显卡会因为显存多而计算更快。
只有真正快的显卡(比如下一代的那些显卡)才需要为并行计算任务提供更多显存。
对于HD4870显卡,512MB显存和1GB显存不会有什么区别。
使用r参数,情况类似,只不过指定了不同的使用比例。
[ 本帖最后由 ledled 于 2009-12-8 22:55 编辑 ] |
|