首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动并行友好编程实践

自动并行友好编程实践
EN

Stack Overflow用户
提问于 2011-03-05 08:56:00
回答 1查看 90关注 0票数 1

本论文:避免不必要的序列化算法:算法,如必须将种子传递给下一个生成器调用的随机数生成器,在线程内调用生成器的次数无法准确预测时,不必要地序列化该算法。这些算法应该被更多的分布式版本所取代。

问:请大家解释一下,“如果线程内调用生成器的次数不能准确预测,就不必要地序列化算法。”对于随机数生成,我们必须传递一个种子。因此,如何避免序列化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-05 09:04:39

如果您有一个依赖于它以前的值(大多数)的RNG,并且您按照如下方式编写它:

代码语言:javascript
复制
r = Random.new();
for(int i=0; i<100*usersInput; i++) 
    r.rand();
}

它甚至不能被智能编译器自动并行化。但是,如果您像这样写它:

代码语言:javascript
复制
for(int i=0; i<usersInput; i++) {
    r = Random.new();
    [for(int j=0; j<100; j++) {
        r.rand();
    }] fork
}

一个非常聪明的编译器可以让程序运行在usersInput数量的线程中,每个线程只需要运行100个迭代,而不是usersInput*100。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5202738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档