【发布时间】:2017-11-03 07:20:29
【问题描述】:
我读到我可以使用 TCP/IP 在两个应用程序之间发送数据,但我想知道这是否比使用二进制文件和轮询文件以进行更改更快?我没有时间同时实现方法和基准测试,所以如果有人知道这一点,我会很感激您的意见。
我需要来回发送两个缓冲区,一个非常小(几 KB),另一个可能是 0.1 - 1 MB。 p>
我还应该提到,C++ 应用程序在集群上运行并与 MPI 并行化,因此每个进程都需要读取整个缓冲区。在读取二进制文件时,它们可以同时并行执行,所以这不是问题。我不确定这是否可以通过 TCP/IP 完成。
【问题讨论】:
-
好吧,恕我直言,先生,读取文件永远不可能以
[PARALLEL]方式完成,因为无论是 O/S fileIO 服务还是设备原则上,可以同时在 BoF 和 EoF 以及任何其他 fileSeek() 位置读取。 O/S fileIO 服务可能会产生一种“just”-[CONCURRENT]fileIO 的错误错觉,但一旦经过技术检查,它就是纯[SERIAL]-一系列操作的时间表。一旦您最初的想法必须处理一对文件(+添加所有其他许多 fileIO 操作,这些操作将在 O/S 内部进行) -
我不知道,谢谢。那么你会说读取 0 级的文件然后将该数据发送到其他 rank 会更快,而不是每个 rank 都读取文件吗? (假设我最终使用文件 I/O 进行通信)
-
我总是会说,避免使用 fileIO 是一种方法。鉴于初始文件更改是由某个进程“产生”的,即使该进程端也可以避免支付这些初始且昂贵的数百 [ms],并且可能更明确地将新数据通告给 { all |相关的}-分布式计算代理通过非阻塞、低延迟工具,其中 许多数量级 -- CMP 数千 [ms] >> 数十 [us] -- 被保存。这也节省了 parallel-computing 优势 - 较少的开销减少了破坏 - 因为它遵守开销严格的阿姆达尔定律重新制定
标签: c++ matlab parallel-processing buffer ipc