找回密码
 注册
查看: 3208|回复: 8

编写的UDF函数可以用多核计算吗?

[复制链接]
发表于 2010-3-17 16:42:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我的那些个udf函数好像只能用一个核算,如果在运行里面输入 -t2或者 -t3 -t4的话就会出现错误,说找不到。 请问编写的UDF函数可以用多核计算吗?应该如何设置?谢谢!!
发表于 2010-3-18 09:19:32 | 显示全部楼层
单机并行吧,看看并行编程一章。
发表于 2010-3-18 09:40:34 | 显示全部楼层

回复 2# gearboy78 的帖子

可以在udf中加入一组用于并行运算的语句
 楼主| 发表于 2010-3-18 13:08:58 | 显示全部楼层

回复 3# uknowho 的帖子

不知有没有那种适合所有函数的万能语句哈,可否提供一例?谢啦!
发表于 2010-3-18 15:20:12 | 显示全部楼层

回复 1# xueyeguchou 的帖子

更新一下环境变量试试
发表于 2010-3-19 13:39:24 | 显示全部楼层

回复 4# xueyeguchou 的帖子

我也没有怎么涉及过这个方面,用户手册里应该有的,类似于
# !RP_HOST
之类的语句
你UDF里应用了哪些宏啊?
 楼主| 发表于 2010-3-22 11:19:15 | 显示全部楼层

回复 6# uknowho 的帖子

我想定义一个面上关于x方向不同位置处的温度函数,但是make后显示的没有错误,也没有用到什么宏,可应用和貌似没有加载上,不知怎么回事,哪位大侠帮忙看一下……
DEFINE_PROFILE(inlet_x_temperature, thread, index)
{
        real position[ND_ND];
        real x;
        face_t f;

        begin_f_loop(f, thread)
        {
                F_CENTROID(position,f,thread);
                x = position[0];
               
                if (x >= 3.325 && x <5.9) {
                        F_PROFILE(f, thread, index) = 2040 * x / 103 + 1530; // NO.1
                } else if (x >= 5.9 && x < 9) {
                        F_PROFILE(f, thread, index) = 540 * x / 31 + 47871 / 31; // NO.2
                } else if (x >= 9 && x < 12.1) {
                        F_PROFILE(f, thread, index) = 320 * x / 31 + 49851 / 31; // NO.3
                } else if (x >= 12.1 && x < 15.2) {
                        F_PROFILE(f, thread, index) = 150 * x / 31 + 51908 / 31; // NO.4
                } else if (x >= 15.2 && x < 18.3) {
                        F_PROFILE(f, thread, index) = 57988 / 31 -  250 * x / 31; // NO.5
                } else if (x >= 18.3 && x < 21.4) {
                        F_PROFILE(f, thread, index) = 57805 / 31 - 240 * x / 31; // NO.6
                                } else if (x >= 21.4 && x < 33) {
                        F_PROFILE(f, thread, index) = 50127 / 29 - 40 * x / 29; // NO.7
                                } else if (x >= 33 && x < 36.4) {
                        F_PROFILE(f, thread, index) = 30261 / 17 - 50 * x / 17; // NO.8
                                } else if (x >= 36.4 && x < 38.9) {
                        F_PROFILE(f, thread, index) = 2401 - 20 * x; // NO.9
                                } else if (x >= 38.9 && x < 41.4) {
                        F_PROFILE(f, thread, index) = 13561 / 5 - 28 * x; // NO.10
                                } else if (x >= 41.4 && x < 56.4) {
                        F_PROFILE(f, thread, index) = 50831 / 25 - 58 * x / 5; // NO.11
                                } else if (x >= 56.4 && x < 58.4) {
                        F_PROFILE(f, thread, index) = 22377 / 15 - 2 * x; // NO.12
                        }
        }

        end_f_loop(f, thread)
}
发表于 2010-4-30 00:04:06 | 显示全部楼层

回复 1# xueyeguchou 的帖子

并行之后,重新编译UDF!
发表于 2010-8-13 09:25:54 | 显示全部楼层
利用江帆的VC++工程进行并行,完全可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表