【发布时间】:2020-01-03 13:27:58
【问题描述】:
考虑一种 SIMD 类型的代码,它从这样的文件中提取模式匹配的所有实例:
grep grep -n <some_pattern>
使用 GNU Parallel 和一些类似的修改可以加快速度
cat fileName | parallel -j{cores} --pipe --block {chunk_size}M --cat LC_ALL=C grep -n '/some_pattern/'
如果将单个输入文件拆分为多个单独的文件,我也可以使用xargs 进行并行执行:
xargs -P {cores} -L {line_per_process} bash -c grep {1}< fileID*
但这种并行性受到您可以拥有的 CPU 内核数量的限制。
我想知道是否有任何方法可以将此类命令转换为 GPU(CUDA) 线程? 整个任务可以分成与 CPU 核心数量相等的块,然后每个 CPU 核心将这些块作为 GPU 中的单独线程处理?
【问题讨论】:
-
Q1:您是如何得出这样一个假设的,即 GNU 并行以 SIMD 方式运行(通过什么机制“粘合”-在所有 CPU 内核中same S-ingle I-nstruction,从而有资格被命名为 SIMD 执行模式)? Q2:您是否曾尝试将几 GB 的数据从主机端移动到设备端内存 (GPU) 中,您对这种尝试的延迟和吞吐量的亲身体验是什么? Q3: 是什么让您开始考虑 SIMD-GPU 内核从 SIMD 处理中获得任何优势,在
标签: bash parallel-processing gpu gnu-parallel