|||
这两天发现,fluent UDF 并行计算的时候,
2个CPU的workstation只用了1个
(i.e. CPU占用率50%)。
UDF是在出口加随时间变化的压力,i.e.
DEFINE_PROFILE(Pres_Exit, thread, position)
更奇怪的是:
如果我手动打开fluent(并行,核数全上)
不管出口压力constant,还是UDF,
CPU 都是100%
但是,如果我用command line启动fluent的话
(i.e. fluent 2d -t48 )
当出口压力constant时,CPU 100%
当出口压力采用UDF时,CPU 50%
我一度怀疑是command line启动时,
没有开启 shared memory machine 选项!
因为,当我手动启动fluent时,
如果选择distributed memory(i.e.不开启shared memory 选项),
但是没给具体distribution设置时,
CPU也会50%。
我也怀疑,是不是UDF编译的时候,
需要特殊处理c文件?
fluent帮助确实是这么讲的。
不过,太难了,没搞懂。
后来,我把compiled的方式改成interpreted时,
任然有这样的问题。
我又把udf源文件中的命令给成固定值,
等效于出口constant。
结果,OK 了!CPU 100%
我猜到是udf源文件写错了。
原因是:
我在里面加入了一个读取外部文本的命令。
本来是想把出口压力扰动频率和扰动幅值保存在外部文件中,
随时可以更改,在udf中读取。
但由于udf在每个step都执行,
这个读取外部程序的命令也在每一步都运行。
造成了资源浪费。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-7-28 11:23
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社