簡體   English   中英

GProf輸出中缺少功能

[英]Missing function from GProf output

我正在嘗試分析一些C代碼,但最直觀的昂貴函數之一沒有出現在GProf輸出中。

int main() {
    initialise...
    haloSwap();

    for(...) {
        functions...

        propagate();

        functions...
    }
}

void propagate() {
    for (x)
        for (y)
            for (z)
                grid[xNew][yNew][zNew] = grid[x][y][z];

    haloSwap();
}

void haloSwap() {
    // Horizontal swap
    create buffers...
    MPI_Sendrecv(buffers);
    recreate grid from buffers...

    // Vertical swap
    create buffers...
    MPI_Sendrecv(buffers);
    recreate grid from buffers...
}

希望偽代碼能以某種方式解釋設置。 haloSwap()涉及線程之間的大量通信,我認為這是算法中昂貴的一部分。 在初始化期間調用,然后在算法循環期間重復調用。

GProf使用只顯示1次來電, haloSwap (初始化期間),盡管我知道這就是所謂的1000+次從內propagate()

propagate()被顯示為代碼中最昂貴的部分,但是我想知道這是xyz循環還是MPI壓縮。

有誰知道為什么從propagate中調用haloSwap的調用在調用次數和在函數中花費的時間都被忽略了?

haloSwap是在另一個.c文件中定義的,這可能是一個因素嗎?

如果在調用propagate (而不是在內部)之后haloSwap的調用haloSwap主循環,則GProf仍然僅顯示對其的1次調用。

@Hristo_Iliev和@Angelos是正確的,我正在優化中進行編譯,而我的問題通過使用-O0進行了解決。 愚蠢的錯誤,我敢肯定我以前做過。

啟用優化進行性能分析絕對不是愚蠢的錯誤。 相反,它是一個就應該剖析的方式-否則會浪費你的時間和精力手工優化程序編譯器可能已經為您解決。

如果您需要的個人資料報告與gprof提供的報告不同,則Google性能工具 (也稱為gperftools)可能對您有用。 這些報告將記錄嵌入式功能所花費的時間。 這是一個示例報告,您可以在其中查看Google工具如何報告內聯函數:

% ~/soft/gperftools/bin/pprof --text \
    bigio_mpi bigio-profiling/prof-ca-fill-inline1-0.out| head -10
Using local file bigio_mpi.
Using local file bigio-profiling/prof-ca-fill-inline1-0.out.
Total: 29680 samples
10837  36.5%  36.5%    24056  81.1% ADIOI_P2PContigReadAggregation
3534  11.9%  48.4%     3534  11.9% _init@3a858
2954  10.0%  58.4%     2954  10.0% unshuffle_sse2
2448   8.2%  66.6%     2448   8.2% __memcpy_ssse3
1742   5.9%  72.5%     2661   9.0% type_create_contiguous_x (inline)
1373   4.6%  77.1%     1373   4.6% shuffle_sse2
1176   4.0%  81.1%     6205  20.9% ADIOI_Type_create_hindexed_x
1104   3.7%  84.8%    19082  64.3% ADIOI_Get_eof_offset
831   2.8%  87.6%    28184  95.0% ADIOI_Flatten

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM