首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MPI进行碰撞静态分析

用MPI进行碰撞静态分析
EN

Stack Overflow用户
提问于 2015-09-08 06:24:19
回答 3查看 901关注 0票数 2

我想使用Clang's static analyzer来分析并行代码,即需要MPI编译器包装器的代码。但是,在使用CMake进行配置时,我总是得到

代码语言:javascript
复制
$ scan-build cmake /path/to/source
-- Check for working CXX compiler: /usr/share/clang/scan-build/c++-analyzer
-- Check for working CXX compiler: /usr/share/clang/scan-build/c++-analyzer -- works

随后的编译(make)将失败,并显示

代码语言:javascript
复制
/usr/include/some/header.hpp:56:17: fatal error: mpi.h: No such file or directory

#include "mpi.h“

如何在这里正确使用scan-build

EN

回答 3

Stack Overflow用户

发布于 2016-01-28 04:01:54

我还没有找到在scan-build中直接使用MPI编译器包装器的方法。但是,您可以绕过包装器,将标志手动提供给编译器。例如,这适用于我的环境:

代码语言:javascript
复制
$ export CXXFLAGS=`mpicxx --showme:compile`
$ export LDFLAGS=`mpicxx --showme:link`
$ export CXX=`mpicxx --showme:command`
$ scan-build ./configure && scan-build make #Or your cmake equivalent

不同版本的--showme:标志似乎略有不同,但mpicc --showme:help通常会给出特定包装器支持的命令列表。

票数 2
EN

Stack Overflow用户

发布于 2016-07-25 01:44:03

请参阅MPI-Checker/examples

要调用Clang Static Analyzer,建议使用用Python语言实现的scan-build包。您可以使用LLVM主干(llvm/tools/clang/tools/scan-build-py/bin)中包含的脚本,也可以使用pip install scan-build安装这些脚本。请注意,在make install上,LLVM会将脚本的旧Perl版本复制到/usr/local/bin,因此这可能会覆盖使用pip安装的版本。

由于MPI wrapper编译器会干扰扫描构建脚本,因此建议基于intercept-build (make|ninja|...)生成的编译数据库调用分析。请注意,CMake生成的数据库可能与intercept-build生成的数据库不同。如果compile_commands.json文件将mpicc|mpic++表示为所使用的编译器,则不会发出任何报告。

编译数据库创建完成后,可以通过以下方式触发分析:

analyze-build --enable-checker your.check --use-analyzer /path/to/clang

票数 1
EN

Stack Overflow用户

发布于 2015-09-08 06:29:32

你需要为你的c编译器准备一个MPI包装器。这意味着一个用CLang编译的MPI库。获得该命令后,需要将构建环境中的c编译器设置为mpicc。这将为您提供正确的包含和链接选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32446755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档