gpt4 book ai didi

r - 哪个 Valgrind 工具和选项用于调查每个函数的 RAM 分配?

转载 作者:行者123 更新时间:2023-12-04 23:48:29 26 4
gpt4 key购买 nike

我没用过Valgrind ,但我认为这个工具可以帮助我解决我的问题。我将不胜感激任何帮助。

在我的 R代码,我使用 MixedModels Julia包裹。

我集成 JuliaR使用 JuliaCall包裹。

我使用非常大的数据集(~ 1 GB ,~ 4x10^6 观察)并且在建模步骤( mixed models )分配了大量 RAM(~ 130 GB ),其中大部分不会返回到系统计算结束后。

我想分析一下代码和查看 R 的整个堆栈和 Julia功能 .

对我来说很重要了解在mixed models期间调用了哪些函数用 Julia 计算(尤其是低级函数,最有可能写成 C / C ++ ),以及每个这些函数使用多少内存 .

了解内存究竟花在什么上,RAM 中究竟发生了什么也很重要。当函数来自 MixedModels包正在运行。


或许理解这一点会帮助我提高代码的性能并减少内存分配。

也许对于我的任务,一些其他工具(而不是 Valgrind )会更有用 - 我将非常感谢相关建议!

最佳答案

Valgrind 包含多种工具,其中两三个可能对您有用。

但是,您需要做的第一件事是减小模型的大小。 Valgrind 有很大的时间和内存开销。在分配 130Gb 内存的应用程序上运行 Valgrind 可能会非常慢。但是,如果您只是缩小数据规模,您获得的见解应该仍然有效。

首先要考虑的工具是 memcheck .这是最常用的 Valgrind 工具。除了其他类型的错误,它还可以检测内存泄漏。跑

valgrind --leak-check=full --show-reachable=yes {your app} {your app arguments}

您需要检查输出以确定是否存在任何泄漏或内存是否被保留(可能供以后重用)。

下一个要考虑的工具是 massif .这是一个堆内存分析器。它将生成一个关于内存使用在应用程序执行期间如何演变的图表。跑
valgrind --tool=massif {your app} {your app arguments}

这将生成一个文本文件,您可以使用 massif visualizer 查看该文件。 (一个 kde5 图形应用程序)或使用 ms_print(Valgrind 发行版的一部分),一个将生成 ascii-art 图的命令行工具。此外,如果您使用的是相对较新版本的 Valgrind,您可以将 xtree 选项与 massif 一起使用。并将生成一个文本文件,您可以在 kcachegrind 中加载该文件(另一个 kde5 图形应用程序)。这将为您提供一个“树” View ,了解哪些调用分配了多少内存。

最后是 DHAT ( exp-dhat 如果您使用的是旧版本的 Valgrind)。这分析了堆内存的使用情况。它将生成一个文本文件,您可以从作为 Valgrind 发行版一部分的 html 文件加载该文件。 (或者只是一个旧版本的文本文件)。使用 --tool=dhat使用它。此工具可以帮助追踪未真正使用或很少使用且可能在程序执行过程中更早释放的内存。

您可能还想查看其他工具。例如,谷歌性能工具有一个 heapprofiler零件。

关于r - 哪个 Valgrind 工具和选项用于调查每个函数的 RAM 分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61048434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com