构建InfiniBand集群上的OpenMP执行环境
1. ViSMI简介
ViSMI实现了基于家节点的延迟释放一致性(HLRC)协议。在初始化阶段,为每个共享页面指定一个默认家节点,首次访问该页面的节点将成为其家节点。每个处理器可以维护共享页面的副本,但通过同步操作会使所有副本失效,此时家节点会创建页面的最新版本。
ViSMI使用基于差异(diff)的机制,计算每个脏副本与干净副本之间的差异。为了传播更新,它利用InfiniBand提供的基于硬件的多播来最小化互连流量的开销。差异被应用到干净副本上,生成页面的最新版本。对于进一步的计算,其他处理器会发出页面错误信号,并从家节点获取缺失的页面。
为了处理传入的通信,每个节点除了应用线程外,还维护一个额外的通信线程。该通信线程仅在发生通信请求时才会激活,通过InfiniBand的事件通知方案实现。
ViSMI为开发共享内存应用程序建立了一个编程接口,主要由一组处理并行性问题的注释组成。以下是一些重要注释及其描述:
| 注释 | 描述 |
| ---- | ---- |
| HLRC Malloc | 在共享空间中分配内存 |
| HLRC Myself | 查询调用进程的ID |
| HLRC InitParallel | 并行阶段的初始化 |
| HLRC Barrier | 建立进程间的同步 |
| HLRC Acquire | 获取指定的锁 |
| HLRC Release | 释放指定的锁 |
| HLRC End | 释放所有资源并终止 |
2. Omni/Infini编译器
O
超级会员免费看
订阅专栏 解锁全文
18

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



