【发布时间】:2015-10-01 07:34:45
【问题描述】:
我正在尝试找出是否可以使用英特尔至强融核协处理器来“并行化”以下问题:
假设我有 2000 个文件需要由单线程可执行文件处理。对于每个文件,可执行文件读取它,执行它的操作并将其输出到相应的输出文件,然后退出。
例如:
FILES=/path/to/*
for f in $FILES
do
# take action on each file
./executable $f outFileCorrespondingTo_f
done
这些工具没有针对多线程执行或循环文件进行编码,我们目前也不希望更改其代码中的任何内容。它们是用 C 语言编写的,带有一些外部库。
我的问题是:
这种“脚本循环”能否在 Xeon Phi 的本机操作系统上运行,使其并行调用可执行文件,以便它们在其所有内核上同时运行?够“通用”吗?
文件本身很小,所以它的 8GB 内存足以在运行时存储数据,但不能将所有输出保存在设备上,所以我需要在主机上输出.所以我的第二个问题是:这种内存交换是否可能“在外部”?
即没有编码到工具中,而是由主机操作系统和设备管理,用于可执行文件的每次执行。
- 如果可能,它能否以任何方式提供性能提升,或者内存和线程分配瓶颈是否过于密集?基本上每次执行都需要几秒钟,具体取决于输入文件的长度,但我很有信心这比传输文件所需的时间长几个数量级。
【问题讨论】:
-
关于并发运行多个进程的性能可能会导致大量的 L2 缓存争用/抖动。良好的 L2 使用通常对于在 KNC 上获得良好的性能非常重要。不过,这取决于工作量,所以 YMMV。
标签: c++ concurrency xeon-phi