当我运行一个包含两个不同部分的程序时,我正试图弄错页面。
我所做的是使用两种矩阵乘法方法进行的一些操作,并试图找出导致更多页面错误的方法。
/Operations for method 1
getrusage (RUSAGE_SELF, &usage);
fault1=usage.ru_minflt;
/operations for Method 2
getrusage (RUSAGE_SELF, &usage);
fault2=usage.ru_minflt-fault1;
但似乎fault2 = 0,我认为不正确。如果我使用两个不同的变量usage和usage2,似乎也不起作用。 是否有任何命令可以开始计算每种乘法的故障? 我错了代码吗?
感谢您的回答
答案 0 :(得分:0)
页面错误的数量完全可能为零。它更多地与你加载数据的方式有关,你正在使用哪些共享库(以及它们是否已经在内存中),写时复制使用和类似于你的算法
您确定不是在寻找处理器缓存未命中数吗?对于大矩阵的矩阵乘法,朴素算法的缓存使用率可能比最佳算法差得多。尝试将valgrind
与cachegrind
工具一起使用。