我试图找出是否可以使用英特尔至强融核协处理器来“并行化”以下问题:
假设我有 2000 个文件需要由单线程可执行文件处理。对于每个文件,可执行文件读取它,执行它的操作并将其输出到相应的输出文件,然后退出。
例如:
FILES=/path/to/*
for f in $FILES
do
# take action on each file
./executable $f outFileCorrespondingTo_f
done
这些工具不是为多线程执行或循环文件而编码的,我们现在也不希望更改其代码中的任何内容。它们是用 C 语言编写的,带有一些外部库。
我的问题是:
这种“脚本循环”能否在 Xeon Phi 的本机操作系统上运行,使其并行调用可执行文件,从而在其所有内核上同时运行?它足够“通用”吗?
文件本身很小,所以它的 8GB 内存足以在运行时存储数据,但不能将所有输出保存在设备上,所以我需要在主机上输出。所以我的第二个问题是:这种内存交换是否可能“在外部”?
即不是编码到工具中,而是由主机操作系统和设备管理,用于可执行文件的每次执行。
- 如果这是可能的,它能否以任何方式提供性能提升,或者内存和线程分配瓶颈是否过于密集?基本上每次执行都需要几秒钟,具体取决于输入文件的长度,但我很有信心这比传输文件所需的时间长几个数量级。