OpenSHMEM Checker - A Clang Based Static Checker for OpenSHMEM

OpenSHMEM Checker - A Clang Based Static Checker for OpenSHMEM
复制标题

DOI:
10.1109/ispdc52870.2021.9521645
复制
发表时间:
2021-07
期刊:
2021 20th International Symposium on Parallel and Distributed Computing (ISPDC)
影响因子:
--
通讯作者:
Md Abdullah Shahneous Bari;Ujjwal Arora;Varun Hegde;Tony Curtis;B. Chapman
Md Abdullah Shahneous Bari;Ujjwal Arora;Varun Hegde;Tony Curtis;B. Chapman
中科院分区:
其他
文献类型:
--
作者:
Md Abdullah Shahneous Bari;Ujjwal Arora;Varun Hegde;Tony Curtis;B. Chapman

文献摘要

被引文献

相似文献

编译器通常不知道基于库的并行编程模型(例如 MPI 和 OpenSHMEM)的语义,因此无法检测与其使用相关的编程错误。为了缓解这个问题,我们基于 LLVM 的 Clang 静态分析器框架 (CSA) 为 OpenSHMEM 程序开发了一个自定义静态检查器。我们利用核心静态分析器框架的符号执行引擎及其路径敏感分析来检查所有 OpenSHMEM 程序路径上的错误。我们已经确定了 OpenSHMEM 程序中可在编译时检测到的常见编程错误,并在分析器中提供了检查。它们涵盖: 使用正确类型的内存(私有内存与对称内存);在存在异步、单向通信的情况下安全/同步地访问程序数据;以及使用 OpenSHMEM 内存分配例程分配的内存的双重释放。我们的实验分析表明,静态检查器成功检测 OpenSHMEM 代码中的错误。
Compilers are generally not aware of the semantics of library-based parallel programming models such as MPI and OpenSHMEM, and hence are unable to detect programming errors related to their use. To alleviate this issue, we developed a custom static checker for OpenSHMEM programs based on LLVM’s Clang Static Analyzer framework (CSA). We leverage the Symbolic Execution engine of the core Static Analyzer framework and its path-sensitive analysis to check for bugs on all OpenSHMEM program paths. We have identified common programming mistakes in OpenSHMEM programs that are detectable at compile-time and provided checks for them in the analyzer. They cover: utilization of the right type of memory (private vs. symmetric memory); safe/synchronized access to program data in the presence of asynchronous, one-sided communication; and double-free of memories allocated using OpenSHMEM memory allocation routines. Our experimental analysis showed that the static checker successfully detects bugs in OpenSHMEM code.