Steam內存測試工具


Stream測試是內存測試中業界公認的內存帶寬性能測試基准工具。

Stream安裝

官方源碼地址:http://www.cs.virginia.edu/stream/FTP/Code/stream.c

配好軟件源,安裝編譯器:

yum -y install gcc

上傳Stream.c(stream.c版本為5.9)到待測試機器。編譯:

gcc -O3 -fopenmp -DN=2000000 -DNTIMES=10 stream.c -o stream

編譯參數解釋:

  • -O3:指定最高編譯優化級別,即3
  • -fopenmp:啟用OpenMP,適應多處理器環境,更能得到內存帶寬實際最大值。開啟后,程序默認運行線程為CPU線程數
  • -DN=2000000:指定測試數組a[]、b[]、c[]的大小(Array size)。該值對測試結果影響較大(5.9版本默認值2000000,。若stream.c為5.10版本,參數名變為-DSTREAM_ARRAY_SIZE,默認值10000000)。注意:必須設置測試數組大小遠大於CPU 最高級緩存(一般為L3 Cache)的大小,否則就是測試CPU緩存的吞吐性能,而非內存吞吐性能。

推薦計算公式:

{最高級緩存X MB}×1024×1024×4.1×CPU路數/8,結果取整數

解釋:由於stream.c源碼推薦設置至少4倍最高級緩存,且STREAM_ARRAY_SIZE為double類型=8 Byte。所以公式為:最高級緩存(單位:Byte)×4.1倍×CPU路數/8

例如:測試機器是雙路CPU,最高級緩存32MB,則計算值為32×1024×1024×4.1×2/8≈34393292

Stream測試原理

  • -DNTIMES=10:執行的次數,並從這些結果中選最優值。
  • stream.c:待編譯的源碼文件
  • stream:輸出的可執行文件名

其他參數:

  • -mtune=native -march=native:針對CPU指令的優化,此處由於編譯機即運行機器。故采用native的優化方法。更多編譯器對CPU的優化參考
  • -mcmodel=medium ;當單個Memory Array Size 大於2GB時需要設置此參數
  • -DOFFSET=4096 ;數組的偏移,一般可以不定義

Stream使用

使用命令指定運行線程為X:
export OMP_NUM_THREADS=X

在編譯輸出的可執行文件(stream)所在目錄下運行:
./stream
Stream測試結果示例:

Stream測試結果示例

附stream.c v5.10源碼中的介紹:

附stream.c v5.10源碼中的介紹

參考:

內存性能的正確解讀

內存測試Stream程序分析


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM