Boost 使用Cuda并行读取多个文本文件
我想使用CUDA在多个文件中并行搜索给定字符串。我计划使用pfac库来搜索给定的字符串。问题是如何并行访问多个文件 示例:我们有一个文件夹,其中包含1000个必须搜索的文件 这里的问题是如何访问给定文件夹中的多个文件。应该动态获取文件夹中的文件,并为每个线程分配一个文件以搜索给定字符串 有可能吗 编辑: 在本文中:。他正在使用boost库在16秒内读取一个3 GB的文本文件。而在我的情况下,我必须读取1000个较小的文件Boost 使用Cuda并行读取多个文本文件,boost,cuda,pattern-matching,parallel-processing,Boost,Cuda,Pattern Matching,Parallel Processing,我想使用CUDA在多个文件中并行搜索给定字符串。我计划使用pfac库来搜索给定的字符串。问题是如何并行访问多个文件 示例:我们有一个文件夹,其中包含1000个必须搜索的文件 这里的问题是如何访问给定文件夹中的多个文件。应该动态获取文件夹中的文件,并为每个线程分配一个文件以搜索给定字符串 有可能吗 编辑: 在本文中:。他正在使用boost库在16秒内读取一个3 GB的文本文件。而在我的情况下,我必须读取1000个较小的文件 谢谢在CUDA中执行任务对在CPU中执行同样的任务没有多大帮助 假设您的文
谢谢在CUDA中执行任务对在CPU中执行同样的任务没有多大帮助 假设您的文件存储在标准的磁性硬盘上,典型的单线程CPU程序将消耗:
在更一般的情况下:如果考虑使用CUDA,请扪心自问:实际计算是问题的瓶颈吗?< /P>
- 如果是-继续在CUDA世界中寻找可能的解决方案
- 如果没有-CUDA无法帮助您
如果你处理数以千计的微小文件,你需要经常阅读,考虑一些可以“攻击”你瓶颈的技术。其中包括:
- RAM缓冲
- 将硬盘驱动器置于RAID配置中
- 获得固态硬盘
可能有更多的选择,我不是这方面的专家。是的,如果您可以减少读取延迟/带宽的影响,使用CUDA可能会提高速度。一种方法是同时执行多个搜索。即,如果您可以搜索[1]。。[needle1000]在你的大草堆中,每条线都可以搜索草堆碎片并存储命中结果。需要对每次比较所需的吞吐量进行一些分析,以确定使用CUDA是否有可能改进您的搜索。这可能很有用通常有多少文件?10秒,100秒,1000秒,更多?这是可能的。问题在于,由于只有一个磁头,从磁盘上读取它们本质上是顺序的。如果搜索是类似字符串的搜索,你可能很难打败grep。因此,你的意思是可以并行读取文件,但这比grep慢。我必须在文件内容中搜索给定字符串,如果你错了,我不会搜索文件名。是的,对于CUDA来说,这似乎不是一个好的ft——从磁盘读取文件,然后将数据复制到GPU内存的成本可能远远大于字符串搜索中任何可能的速度优势。如果你需要在同一组文件上进行多次搜索,并且可以同时将所有文件加载到GPU内存中,这是唯一有意义的方法。如果这听起来很愚蠢,我深表歉意,因为我是cuda的新手,但是必须将文件传输到GPU内存。我不想将文件复制到GPU内存中。有其他选择吗???