GNU Parallel和GPU?

问题描述 投票:1回答:1

我有兴趣让GNU Parallel在GPU上运行一些数值计算任务。一般来说,这是我最初的方法:

  1. 编写任务以使用OpenCL或其他一些GPU接口库
  2. 在任务列表上调用GNU parallel(我不确定是否需要执行此步骤)

这提出了以下问题:

  1. 我的方法/用例是否受益于GNU Parallel的使用(即我应该在这里使用它)?
  2. GNU Parallel是否提供了在GPU上并行运行任务的内置机制?
  3. 如果是这样,我如何配置GNU Parallel来做到这一点?
gpu gnu-parallel
1个回答
1
投票

现代CPU具有多个内核,这意味着它们可以同时运行不同的指令;因此,当核心1运行时,MUL核心2可能正在运行ADD。这也称为MIMD - 多指令,多数据。

但是,GPU无法同时运行不同的指令。他们擅长对大量数据运行相同的指令; SIMD - 单指令,多数据。

现代GPU具有多个核心,每个核心都是SIMD。

那么GNU Parallel在哪里适合这种组合?

GNU Parallel启动程序。如果您的程序使用GPU并且系统上只有一个GPU核心,那么GNU Parallel将没有多大意义。但是,如果您的系统上有4个GPU内核,那么保持这4个内核同时运行是有意义的。因此,如果您的程序读取变量CUDA_ VISIBLE_ DEVICES以决定运行哪个GPU核心,您可以执行以下操作:

seq 10000 | parallel -j4 CUDA_​VISIBLE_​DEVICES='$(({%} - 1))' compute {}
© www.soinside.com 2019 - 2024. All rights reserved.