c++代码分析/分析Mac和MPI
C++ Code profiling/analysis for Mac and MPI
我正在寻找MacOS上的c++代码分析/分析工具。我知道有关于这个线程的帖子,但我需要的应用程序是非常具体的,所以也许有人可以给我一些更具体的建议。
所以这是我的问题:我正在用c++写一个科学代码(硕士项目),所以它是一个纯粹的控制台应用程序,没有交互性。代码应该在大规模并行计算机上运行,因此我使用MPI。但是,现在我还没有针对可伸缩性进行优化,而只是针对单核性能进行优化。由于我不想将整个程序重写为串行程序,所以我只使用带有1线程的MPI。它工作得很好,但优化器显然需要能够处理这个问题。
我想分析什么?从某种意义上说,代码并不复杂,因为它有一个非常简单的结构,因此我所需要的只是一个程序在某些函数上花费了多长时间的列表,这样我就知道它在哪里浪费了最多的时间,并且我可以测量我的优化的加速。
谢谢你的建议
您应该使用Instruments。app包含一个CPU采样器和线程活动查看器…除此之外。(在Xcode中选择"Product> Profile…")
如果您想要更细粒度的东西,您可以检测您的代码。巧合的是,我为这种情况编写了一组分析宏:)
https://github.com/nielsbot/Profiler这将显示一个很好的嵌套打印在仪表例程中花费的时间。
您是否尝试过kcachgrind: http://kcachegrind.sourceforge.net/html/Home.html with valgrind ?
我可以推荐http://www.scalasca.org/。您还可以将其用于之后的并行性能。
不要寻找"慢函数",也不要寻找测量不同部分使用的时间。这些概念是间接的,对于告诉你应该优化什么几乎是无用的。
相反,用频闪x射线,在墙上时钟的时间,观察整个程序正在做什么,并研究每一个,看看为什么程序会花费那个瞬间。这个效果更好的原因是它不需要戴功能性有色眼镜。它是带着特定颜色的眼镜看的,你可以判断程序是否需要做它正在做的事情。它在定位大问题方面非常准确。测量它们是不准确的,也不需要。
当你只是做测量时,会发生这样的事情:你得到了一堆例程上的一堆数字。你看着它们,然后问:"这是什么意思?"如果它没有告诉你应该做什么,你就拍拍自己的背,说这个程序一定是最优的。事实上,可能有些东西是你可以修复的,但你无法从侧写器中发现它。更重要的是,如果你找到它并修复它,它可以暴露你可以修复的其他东西,以获得更大的加速。
这就是随机暂停的作用
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- MPI突然停止了对多个核心的操作
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 如何使用CLion在Mac上创建一个新的.txt文件
- 如何使用Clang/GCC在Mac上为C/C++设置VSCode
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- 有人安装"IITB Simplecpp in mac"吗?
- libprotobuf 检查在 Mac OS 上执行程序时失败
- 设置 Visual Studio for MPI: 找不到标识符错误
- 如何在 Mac 上使用 c++17 并行标准库算法?
- 在 Mac 上的 python 上提升
- 我可以在 iOS 或 mac 应用程序中使用C++代码吗?
- 如何在 Mac 上正确编译C++,当它在 Linux 上编译没有问题时?
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何在 MAC OS c/c++ 中阻止 USB 存储设备
- 如何使用 MPI 的远程内存访问 (RMA) 功能并行化数据聚合?
- 如何在 Mac OS 上安装 boost-mpi 及其对 clang 的依赖关系?
- c++代码分析/分析Mac和MPI