Der*_*rek 7 c++ profiling memory-management cuda
我很快将负责使用C/C++编写的代码的正确内存配置文件,并使用CUDA来利用GPU处理.
我最初的想法是创建宏和运算符重载,这将允许我在源代码中跟踪对malloc,free,delete和new调用的调用.我只能包含一个不同的标题,并使用__FILE__ and __LINE__宏来打印日志文件的内存调用.这种策略可以在这里找到:http://www.almostinfinite.com/memtrack.html
在链接的第三方库中跟踪该用法的最佳方法是什么?我假设我几乎只能在函数调用之前和之后跟踪内存使用情况,对吗?在我的宏/过载场景中,我可以简单地跟踪请求的大小,以确定要求的内存量.我怎样才能知道第三方lib正在使用多少?我的理解是,跟踪"免费"并不能真正让您了解代码在任何特定时间使用了多少,因为它不一定返回到操作系统.我很感激对此事的任何讨论.
我真的不想使用任何内存分析工具,如Totalview或valgrind,因为它们通常做很多其他事情(边界检查等)似乎使软件运行速度非常慢.另一个原因是我希望这有点线程安全 - 软件使用MPI我相信产生进程.我将尝试实时分析这个,以便我可以转储到日志文件或其他进程可以读取的内容,以便在软件运行时可视化内存使用情况.这也主要是在linux环境中运行.
谢谢
您可以使用 Visual Studio 2010 Premium 和 Ultimate 中包含的探查器。
它允许您在不同的性能测量方法之间进行选择,对您来说最有用的可能是 CPU 采样,因为它会以任意时间间隔冻结您的程序并找出它当前正在执行的函数,从而不会使您的程序运行速度显着减慢。