首页 文章

Intel Xeon Phi - 运行多个单线程可执行文件

提问于
浏览
0

我试图找出是否可以使用英特尔至强融合协处理器来“并行化”以下问题:

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

例如:

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

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

我的问题是:

  • 这种“脚本循环”可以在Xeon Phi的本机操作系统上运行,它可以并行调用可执行文件,因此它们可以在所有内核上同时运行吗?那是“通用”吗?

  • 文件本身相当小,所以它的8GB内存足以在运行时存储数据,但不能保留设备上的所有输出,所以我需要在主机上输出 . 所以我的第二个问题是:这种内存交换是否可能“外部”?

即,对于每次执行可执行文件,未编码到工具中,但由主机OS和设备管理 .

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

2 回答

  • 0

    Xeon phi协处理器运行Linux操作系统的功能完整版本,因此您在Linux机器上习惯的大部分内容也可能适用于Xeon Phi .

    现在,针对您的具体问题,我想GNU Parallel应该只允许您一口气做您想做的事 . 简单地说,您必须将文件系统安装在卡上才能直接访问文件,但这只是Xeon Phi节点的标准内容 . 请注意,这将在主机和协处理器之间的PCIe链路上生成一些流量以进行文件传输 .

    关于性能,这很难说:Xeon Phi核心的较低单线程性能以及传输时间肯定会在这个领域引起很大的冲击,但是你可以从设备中提取的并行性水平可能会很好地克服这个问题 . ,取决于您的工作负载的计算密集程度 . 最好的答案是你尝试一下......

  • 0

    这是吉尔斯给出的答案的补充 .

    是的,Xeon Phi应该能够在基本的操作级别上做你想做的事 .

    即便如此,我认为出于某些原因,这是出于你的目的而来的 wrong platform .

    • Xeon Phi上的每个核心都是奔腾核心 . 虽然它是增强的(4线程/核心,512位矢量引擎等),它仍然是奔腾 . 这意味着它将标量代码作为奔腾运行 . 您的任务听起来像是一大堆并行运行的串行进程 . 因此,每个进程都将像在Pentium上运行一样运行 .

    • 为了获得卓越的性能,您需要能够很好地并行化的代码(读取为OpenMP,轻量级线程和线程池)以及矢量化(利用512位向量引擎) . 如果没有这两种增强功能,那么你就可以在Pentium上运行,并且需要很多Pentiums .

    • 在PCIe总线上移动数据的速度很慢 . 如果要传输大量文件,虽然可以通过隐藏延迟(取决于您的应用程序)来减少争用,但这可能会更慢 . 如果你在启动时使用244个文件读取请求命中PCIe总线,那么_2877378将在任何给定时间读取超过20个文件(并且我怀疑我们正在执行标量代码作为奔腾) .

    现在KNL架构可能更适合您的需求,但目前还没有 .

    如果你仍然认为Xeon Phi可能适合你想做的事情,你可以问问Xeon Phi Intel forum专家 . 如果您的应用程序是专有/敏感的,您可以向英特尔专家询问私人消息 .

相关问题