stream測試內存性能


1、下載安裝Stream

tar -xvf stream.tar

參數說明:

首先看下源碼中對於編譯stream.c的參數介紹:

#ifdef _OPENMP 定義開啟多處理器運行環境,
extern int omp_get_num_threads();
#endif


#ifndef STREAM_ARRAY_SIZE 定義計算的數組大小(成員個數)
# define STREAM_ARRAY_SIZE 45000000
#endif
#ifdef NTIMES 定義值非法時,若定義計算次數,10
#if NTIMES<=1
# define NTIMES 10
#endif
#endif
#ifndef NTIMES 若定義計算次數,10
# define NTIMES 10
#endif
#ifndef OFFSET 定義數組偏移量
# define OFFSET 0
#endif

#ifndef STREAM_TYPE 定義數組為雙精度,64bit,8Bytes
#define STREAM_TYPE double
#endif
以上參數可以在執行前編譯指定具體值

1. -mtune=native -march=native   \\針對CPU指令的優化,由於測試編譯機即運行機器,故采用native的優化方法

2. -O3                                           \\優化級別

3. -mcmodel=medium                  \\當單個Memory Array Size 大於2GB時需要設置此參數

4. -fopenmp                                 \\適應多處理器環境;開啟后,程序默認線程為CPU線程數,也可以運行時也可以動態指定運行的進程數 。例如:export OMP_NUM_THREADS=12 #12為自定義的要使用的處理器數

5. -DSTREAM_ARRAY_SIZE     \\計算方法參考stream.c中的說明 例如本環境中查詢cpu資料 L3緩存 8MB  其值為 8MB*4*2*1000*1000/8 = 8millions (此值為最小值,可以適當大於此值,增大array size會增加測試時間)注意 double 64bit= 8byte

6. -DNTIMES                              \\執行次數,並從所有結果中取最優

7. -DOFFSET=4096                   \\數組的偏移,一般可以不設置

 

 2、使用stream測試內存帶寬

單線程編譯:

gcc -O -mtune=native -march=native -mcmodel=large -DSTREAM_ARRAY_SIZE=100000000  -DNTIME=30 -DOFFSET=4096  stream.c -o stream.o

單線程測試:./stream.o

 

 

 

 多線程編譯:

gcc -O -mtune=native -march=native -mcmodel=large -fopenmp -DSTREAM_ARRAY_SIZE=100000000 -DNTIMES=30 -DOFFSET=4096 stream.c -o stream.o

多線程測試:./stream.o

 

 

 

 

3、測試內存延遲

下載安裝英特爾MLC工具:

(在新型的Intel處理器上精確測試內存延遲是非常困難的,因為它有復雜的硬件預取器。Intel MLC在測試延遲時會自動禁用這些預取器,並且在測試完成后自動恢復預取器原狀態。預取器控制是通過修改MSR實現(Disclosure of H/W prefetcher control on some Intel processors),在Linux上需要root權限。Windows平台,提供了簽名的驅動用於訪問MSR)
下載地址:

https://software.intel.com/content/www/us/en/develop/articles/intelr-memory-latency-checker.html

tar -zxvf mlc_xxx.tgz -C mlc

進入mlc / Linux目錄下測試

命令行參數:

mlc --latency_matrix

      打印本地和跨插槽內存延遲矩陣

mlc --idle_latency

      打印平台的空閑內存延遲

mlc --loaded_latency

      打印平台的加載內存延遲

mlc --c2c_latency

      打印平台的緩存到緩存傳輸延遲

mlc -e

      不要修改預取器設置

 

 

 

參考:

https://software.intel.com/content/www/us/en/develop/articles/intelr-memory-latency-checker.html

 


免責聲明!

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



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