我想知道为什么R3协议在使用多个不同的缓冲区时会显示出很好的性能,从而耗尽了注册缓存。是否不需要固定和取消固定为发送提供的缓冲区或如何隐藏此开销?坚持R3协议总是一个不错的选择吗?
在底部,您会看到一个显示我观察结果的图表。我使用2个节点并行发送和接收。 x轴表示用于发送的缓冲区数n(每个1MB)。主循环看起来像这样:
\\ Take time
for(i to 20){
for(a to n) IRecv(rec_buffer[a])
for(a to n) ISend(send_buffer[a])
waitForAllRecv()
waitForAllSend()
}
\\ Plot time