gpt4 book ai didi

c++ - 当 RDMA 在映射区域上运行时会发生什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:59 26 4
gpt4 key购买 nike

RDMA 是绕过应用程序和操作系统内核之间无用数据拷贝的有效方法。 Mmap 是处理大文件的有效方法,就好像它只是一个字节数组一样。

我正在使用支持进程间 RDMA 网络操作的 Infiniband 上的 MPI。每个 MPI 进程都有一个非常大的文件要与其他进程共享。

每个 MPI 进程能否在每个大文件上创建 mmap 区域并与其他进程共享?我想让每个进程读取任何进程的任何文件,就好像它通过 RDMA(MPI 的单向通信)读取它们的内存一样。

据我所知,当应用程序调用 RDMA 操作时,它会将“虚拟内存地址”直接传递给 NIC。 NIC 将处理从虚拟内存地址到其物理内存地址的转换。如果 RDMA 驱动程序在向 NIC 发出请求之前固定兴趣页面,我认为它会起作用。有没有人对此有任何经验? :D

谢谢

最佳答案

是的,您可以向 RDMA 注册使用 mmap() 映射的内存区域。请参阅 ibv_reg_mr ( http://www.rdmamojo.com/2012/09/07/ibv_reg_mr/) 的文档,其中说:

Every memory address in the virtual space of the calling process can be registered, including, but not limited to:

  • Local memory (either variable or array)
  • Global memory (either variable or array)
  • Dynamically allocated memory (using malloc() or mmap())

关于c++ - 当 RDMA 在映射区域上运行时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33971851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com