基于OFI的OpenSHMEM设计与实现
在高性能计算(HPC)领域,数据中心和并行编程模型至关重要。本文将深入探讨OpenSHMEM这一并行编程模型,以及基于OpenFabrics Interface(OFI)的Sandia OpenSHMEM(SOS)库的设计与实现。
1. OpenSHMEM简介
OpenSHMEM是一种并行编程模型,它定义了单程序多数据(SPMD)执行模型和分区全局地址空间(PGAS)通信库。它允许程序员通过单边读写和原子访问例程,将内存区域暴露给远程访问。
SHMEM已经使用了二十多年,大多数主要的HPC供应商都有其实现。然而,缺乏开放规范导致不同实现之间存在差异,限制了用户社区对编程模型的扩展能力。为了解决这些问题,OpenSHMEM规范应运而生,旨在对SHMEM通信库进行标准化和扩展。
目前有多种OpenSHMEM的实现,包括开源的参考实现、OpenMPI的OSHMEM、Mellanox的Scalable SHMEM和MVAPICH2 - X等。在本文中,我们使用开源的Sandia OpenSHMEM(SOS)库,它基于早期的Portals SHMEM库,并支持新的OpenSHMEM 1.3规范和OpenFabrics Interface libfabric通信层。
2. SOS的设计
SOS定义了内部网络数据传输和共享内存层。其传输层旨在减少每种网络所需实现的函数数量,同时暴露核心的OpenSHMEM通信语义,以优化可扩展性和性能。SOS支持Portals 4和OFI,本文主要关注OFI传输层,并扩展其以支持广泛的libfabric功能,通过libfabric uGNI提供商高效利用A
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



