gpt4 book ai didi

C++ #pragma omp 并行 : big tasks or small ones?

转载 作者:太空宇宙 更新时间:2023-11-03 10:26:02 24 4
gpt4 key购买 nike

我的程序逐行读取文本文件,在每一行中提取特定类型的单词(在哪一行找到单词很重要)。按文件分隔线程(每个线程将读取不同的文件)或按行分隔线程(每个线程将从同一文件读取不同的行)哪个更好?

最佳答案

除非您有多个硬盘驱动器,否则可能都没有。

硬盘本质上是单线程的——也就是说,它在任何给定时间只产生一个数据流。对于带有旋转磁盘和绕磁盘搜索的磁头的实际硬盘驱动器,您的最佳吞吐量通常来自顺序读取。在文件中或在不同的文件之间搜索不同的位置会大大降低吞吐量。

如果您确实有多个驱动器,那么这将取决于您的数据在驱动器之间的分布方式,但理想情况下,您可能需要一个专用于从每个物理驱动器读取数据的线程。

如果在读取数据后您有足够的处理时间,您可以让一个线程读取数据,并将该数据放入某种线程安全的队列中。从那里你有处理线程,这些线程获取单个数据项,处理它们,并将结果写入......任何你想要输出的地方。

如果要返回到一个文件(或多个文件),您可能希望在这里或多或少地相反:单个线程将输出写入每个结果盘,处理线程将它们的数据存放在某种队列中。在典型情况下,这将是一个按数据写入输出文件的顺序排序的优先级队列,因此输出线程始终按顺序写入数据。

关于C++ #pragma omp 并行 : big tasks or small ones?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998575/

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