gpt4 book ai didi

c++ - 并行编程的内存使用

转载 作者:行者123 更新时间:2023-11-28 07:40:26 25 4
gpt4 key购买 nike

我对并行计算知之甚少,但我想就作业的“进一步工作”提出建议,并希望确保我是正确的。我用 C++ 编写了一个光线追踪器。我在 vector 中存储射线信息,例如命中点,并在模拟结束时将这些 vector 写入 CSV(这样的编程好吗?)如果我追踪多条射线,比如 1000与跟踪 100 条光线 10 次相比,模拟需要更多时间。我认为这是因为我的 vector's 的大小较大,因此它们在堆内存中占用了大量空间(?)。每条光线都可以在没有来自其他光线的信息的情况下被追踪(该程序正在乞求并行)。我说的对吗,如果程序是并行的,每个处理器都会有自己的内存,所以不会有一个大 vector 占用一大块内存,而是分散在周围的小 vector 可以更有效地处理?

最佳答案

您关于每个处理器都有自己的“内存”的假设听起来像是在尝试提高 CPU 缓存的使用率(RAM 保持不变,无论您的任务有多并行 - 除非您将其分布在集群上)。虽然通常并行化会提供更多的 CPU 缓存,但可能会出现更多的缓存未命中,因为线程将在内核之间迁移(Windows 实际上就是这样做的)。

也许您只是以低效的方式使用 std::vector。例如。您正在开头插入项目或一个接一个地附加项目(这些操作可能占用 O(vector.size()))。或者可能有其他数据结构在光线数量增加时减慢速度。这可能可以在不将任务分配给多个处理器的情况下解决。

虽然程序肯定会从并行化中获益。

关于c++ - 并行编程的内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15932007/

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