摘要:MPI已经成为高性能计算编程模型的事实标准,但其丰富灵活的接口语义使得程序易于出现通信死锁,严重影响系统的可用性,然而,现有的MPI通信死锁检测工具可扩展性不高,难以适应持续扩大的系统规模.为此,本文提出一种MPI运行时的通信死锁检测框架MPI-RCDD,该框架包含三种主要机制.首先,MPI-RCDD设计实现与死锁检测相适应的消息日志协议,确保死锁检测必需的通信消息不丢失;其次,使用MPI环境提供的消息异步处理线程实现进程之间依赖关系的传递,使得众多进程能够同时参与死锁检测工作,缓解集中式分析的性能瓶颈问题;此外,提出一种基于AND(+)OR模型的死锁分析算法AODA,该算法将基于消息超时和基于依赖关系两种死锁分析方式相结合,能够在超时等待进程之间的依赖关系传递过程中搜索死锁环或结,准确定位引发死锁的进程并且不会产生误报.在Umpire Test Suit等典型MPI通信死锁测试程序上的实验结果验证了MPI-RCDD框架的有效性,同时,在NPB基准测试程序上的实验获得了令人满意的性能开销,表明本文提出的MPI-RCDD框架具备较强的可扩展性.