gpt4 book ai didi

boost - 使用 Cuda 并行读取多个文本文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:41 25 4
gpt4 key购买 nike

我想使用 CUDA 在多个文件中并行搜索给定的字符串。我计划使用 pfac 库来搜索给定的字符串。问题在于如何并行访问多个文件。

示例:我们有一个包含 1000 多个文件的文件夹,需要对其进行搜索。

这里的问题是我应该如何访问给定文件夹中的多个文件。文件夹中的文件应该是动态获取的,并且应该为每个线程分配一个文件来搜索给定的字符串。

这可能吗????

编辑:

在这篇文章中:very fast text file processing (C++) .他正在使用 boost 库在 16 秒内读取一个 3 GB 的文本文件。而在我的情况下,我必须读取 1000 个较小的文件

谢谢

最佳答案

在 CUDA 中完成您的任务与在 CPU 中完成相同的任务没有多大帮助。

假设您的文件存储在标准的磁性 HDD 上,典型的单线程 CPU 程序将消耗:

  1. 5ms左右找到存放文件的扇区,放到读头下。
  2. 将 1MB 文件(假设读取速度为 100MB/s)加载到 RAM 内存中大约需要 10 毫秒
  3. 将 1MB 数据从 RAM 加载到 CPU 缓存并使用线性搜索算法对其进行处理的时间不到 0.1 毫秒。

单个文件为 15.1 毫秒。如果您有 1000 个文件,完成这项工作需要 15.1 秒。

现在,如果我给你 super 强大的 GPU,具有无限的内存带宽、无延迟和无限的处理器速度,你将能够立即执行任务 (3)。但是,HDD 读取仍将消耗完全相同的时间。 GPU 无法并行处理另一个独立设备的工作。因此,您现在将在 15.0 秒内完成,而不是花费 15.1 秒。

无限 GPU 会给你 0.6% 的 boost 。真正的 GPU 离那个还差得远!


在更一般的情况下:如果您考虑使用 CUDA,请问问自己:实际计算是否是问题的瓶颈?

  • 如果是 - 继续在 CUDA 世界中寻找可能的解决方案。
  • 如果否 - CUDA 无法帮助您。

如果您处理数以千计的小文件并且需要经常执行读取,请考虑可以“解决”瓶颈的技术。一些可能包括:

  • 内存缓冲
  • 将您的硬盘置于 RAID 配置中
  • 获取固态硬盘

可能还有更多选择,我不是那个领域的专家。

关于boost - 使用 Cuda 并行读取多个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359096/

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