繁体   English   中英

英特尔至强融核-运行多个单线程可执行文件

[英]Intel Xeon Phi - running multiple single-threaded executables

我正在尝试确定是否可以使用Intel Xeon Phi协处理器来“并行化”以下问题:

假设我有2000个文件需要由单线程可执行文件处理。 对于每个文件,可执行文件都将其读取,执行其操作并将其输出到相应的输出文件中,然后退出。

例如:

FILES=/path/to/*
for f in $FILES
do
    # take action on each file
    ./executable $f outFileCorrespondingTo_f
done

这些工具尚未编码用于多线程执行或遍历文件,我们现在也不希望更改其代码中的任何内容。 它们是用C编写的,带有一些外部库。

我的问题是:

  1. 是否可以在Xeon Phi的本机OS上运行这种“脚本循环”,以使其并行化对可执行文件的调用,从而使它们在其所有内核上并行运行? 足够“通用”吗?

  2. 文件本身很小,因此其8GB内存足以在运行时存储数据,而不是将所有输出保留在设备上,因此我需要在主机上输出。 因此,我的第二个问题是:这种内存交换是否可以“外部”进行?

也就是说,对于可执行文件的每次执行,都不会被编码到工具中,而是由主机OS和设备进行管理。

  1. 如果可行,它是否可以以任何方式提高性能,还是内存和线程分配瓶颈过于密集? 基本上,每次执行都需要几秒钟的时间,具体取决于输入文件的长度,但是我非常有信心,这比传输文件所需的时间长几个数量级。

Xeon phi协处理器运行功能非常强大的Linux操作系统版本,因此您在Linux机器上习惯的大多数功能也可能在Xeon Phi上运行。

现在,对于您的特定问题,我想GNU Parallel应该让您喘口气。 简单来说,您必须将文件系统安装在卡上,以便可以直接访问文件,但这只是Xeon Phi节点的标准配置。 并且请注意,这将在主机和协处理器之间的PCIe链接上生成一些流量,以进行文件传输。

关于性能,这很难说:Xeon Phi内核的较低单线程性能以及传输时间无疑暗示了该领域的巨大成功,但是您可以从设备中提取的并行性水平可能会很好地克服这一问题。 ,具体取决于您的工作负载的计算强度。 最好的答案是您尝试一下...

这是Gilles给出的答案的补充。

是的,Xeon Phi应该能够在基本操作级别上完成您想要的操作。

即使如此,出于某些原因,我仍然认为这是错误的平台

  • 至强融核上的每个核心都是奔腾核心。 尽管它得到了增强(每核4个线程,512位矢量引擎等),但它仍然是Pentium。 这意味着它可以像奔腾一样运行标量代码。 您的任务听起来像一堆并行运行的串行过程。 因此,每个进程都将像在奔腾上一样运行。
  • 为了获得出色的性能,您需要能够很好地并行化(以OpenMP,轻量级线程和线程池的形式读取)和向量化(利用512位向量引擎的优势)的代码。 如果没有这两种增强功能,则您将在奔腾上运行,并且支持许多奔腾。
  • 跨PCIe总线移动数据的速度很慢。 如果要传输大量文件,尽管可以通过隐藏延迟(取决于您的应用程序)来稍微减少争用,但这可能会更慢。 如果您在启动时遇到244个文件读取请求的PCIe总线,那将是很多争论。 即使在稳定状态下,听起来您在任何给定时间都将读取20个以上的文件(而且考虑到我们将奔腾代码作为奔腾执行,我怀疑还会更多)。

现在,KNL架构可能更适合您的需求,但是还没有出来。

如果您仍然认为至强融核可能适合您想做的事情,可以咨询至强融核英特尔论坛专家。 如果您的应用程序是专有的/敏感的,您可以私下询问英特尔专家。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM