gpt4 book ai didi

c++ - 不改变框架的平台独立并行化?

转载 作者:行者123 更新时间:2023-11-30 04:33:39 24 4
gpt4 key购买 nike

希望标题没有误导你。

我的问题如下:目前我尝试加速光线追踪器,这是在显卡的帮助下完成的。尽管它因此变慢了,但它工作正常。 :)

这是因为我在图形卡(我的“跟踪服务器”)上一次在整个几何体上跟踪一条光线然后获取结果,这非常慢,所以我必须收集一些光线并计算它们并将结果放在一起以加快速度。

下一个问题是,不允许我重写对这种并行化一无所知或至少不可能了解的周围框架。

所以这是我的方法:我考虑过使用多个线程,每个线程都获得一条射线并请求我的“跟踪服务器”计算交叉点。然后停止线程,直到收集到足够的光线来计算显卡上的交点并有效地返回结果。这意味着每个线程将等待直到获取结果。

你看我已经有了一些计划,但我不知道:

  • 我应该采用哪个线程框架来独立于平台?
  • 我应该使用固定大小的线程池还是根据需要创建它们?
  • 任何给定的线程库能否处理至少 1000 个等待线程(因为这将是我需要收集的数量以使我的提取有效)?

但我也可以想象用一个线程来做这件事

  1. 将其负载(一条新射线)转储到“跟踪服务器”并获取下一个负载,直到
  2. 有足够的数据来获取结果。
  3. 然后线程将一个一个地获取结果,进行进一步的计算,直到所有结果都被处理,然后返回到第一步,直到所有光线都完成。

此外,如果您对如何并行化它有更好的想法,请告诉我。

问候,

没有人

附言如果您需要此信息:我想使用的两个平台是 Linux 和 Windows。

最佳答案

使用线程构建 block 或 boost::thread。

http://www.boost.org/doc/libs/1_46_0/doc/html/thread.html

http://threadingbuildingblocks.org/

就线程池/按需线程而言 - 线程池通常是更好的主意,因为它避免了创建开销。

等待线程的数量将更多地取决于底层系统:

Maximum number of threads per process in Linux?

关于c++ - 不改变框架的平台独立并行化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6635985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com