HPC高性能計算項目Stream內(nèi)存帶寬測試報告_第1頁
HPC高性能計算項目Stream內(nèi)存帶寬測試報告_第2頁
HPC高性能計算項目Stream內(nèi)存帶寬測試報告_第3頁
HPC高性能計算項目Stream內(nèi)存帶寬測試報告_第4頁
HPC高性能計算項目Stream內(nèi)存帶寬測試報告_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、HPC高性能計算項目Stream內(nèi)存帶寬測試報告目 錄 TOC o 1-3 h z u HYPERLINK l _Toc529044528 1 Stream簡介 PAGEREF _Toc529044528 h 1 HYPERLINK l _Toc529044529 2 HPC集群測試環(huán)境 PAGEREF _Toc529044529 h 3 HYPERLINK l _Toc529044530 3 單線程Stream測試 PAGEREF _Toc529044530 h 4 HYPERLINK l _Toc529044531 3.1 數(shù)組大小的影響 PAGEREF _Toc529044531 h 4

2、 HYPERLINK l _Toc529044532 3.2 CPU主頻的影響 PAGEREF _Toc529044532 h 6 HYPERLINK l _Toc529044533 3.3 編譯器的影響 PAGEREF _Toc529044533 h 8 HYPERLINK l _Toc529044534 4 多線程Stream測試 PAGEREF _Toc529044534 h 10 HYPERLINK l _Toc529044535 4.1 數(shù)組大小的影響 PAGEREF _Toc529044535 h 10 HYPERLINK l _Toc529044536 4.2 編譯器的影響 PA

3、GEREF _Toc529044536 h 10 HYPERLINK l _Toc529044537 4.3 線程綁定的影響 PAGEREF _Toc529044537 h 11 HYPERLINK l _Toc529044538 4.4 線程數(shù)的影響 PAGEREF _Toc529044538 h 12 HYPERLINK l _Toc529044539 5 Stream的大頁面優(yōu)化 PAGEREF _Toc529044539 h 13 HYPERLINK l _Toc529044540 5.1 HugeTLBFS大頁面簡介 PAGEREF _Toc529044540 h 13 HYPERL

4、INK l _Toc529044541 5.2 Stream的大頁面優(yōu)化測試 PAGEREF _Toc529044541 h 15 HYPERLINK l _Toc529044542 5.2.1 Stream的大頁面優(yōu)化方法分析 PAGEREF _Toc529044542 h 15 HYPERLINK l _Toc529044543 5.2.2 大頁面準(zhǔn)備 PAGEREF _Toc529044543 h 16 HYPERLINK l _Toc529044544 5.2.3 大頁面Stream的測試結(jié)果 PAGEREF _Toc529044544 h 17 Stream簡介Stream是業(yè)界廣為

5、流行的綜合性內(nèi)存帶寬實際性能測量工具之一。隨著處理器處理核心數(shù)量的增多,內(nèi)存帶寬對于提升整個系統(tǒng)性能越發(fā)重要,如果某個系統(tǒng)不能夠足夠迅速地將內(nèi)存中的數(shù)據(jù)傳輸?shù)教幚砥鳟?dāng)中,若干處理核心就會處于等待數(shù)據(jù)的閑置狀態(tài),而這其中所產(chǎn)生的閑置時間不僅會降低系統(tǒng)的效率還會抵消多核心和高主頻所帶來的性能提升因素。Stream具有良好的空間局部性,是對TLB友好、Cache友好的一款測試。Stream測試包含Copy、Scale、Add、Triad四種操作:測試項實際操作訪存次數(shù)/每循環(huán)浮點計算次數(shù)/每循環(huán)Copya(i) = b(i)20Scalea(i) = q * b(i)21Adda(i) = b(i)

6、 + c(i)31Triada(i) = b(i) + q * c(i)32測試結(jié)果一般的規(guī)律是Add Triad Copy Scale。一次Add操作需要訪問三次內(nèi)存(兩個讀操作,一個寫操作),Triad操作也需要三次訪問內(nèi)存,Copy和Scale操作需要兩次訪問內(nèi)存。單位操作內(nèi),訪問內(nèi)存次數(shù)越多,越能夠掩蓋訪存延遲,帶寬越大。另一方面,單位操作內(nèi),浮點計算次數(shù)越多,操作完成時間越長,導(dǎo)致整個操作循環(huán)完成的時間越長,帶寬越低。Add操作簡單且訪存次數(shù)多,故而帶寬最大,Scale操作復(fù)雜且訪存次數(shù)少,故而帶寬最小。Stream的官方下載地址: HYPERLINK /stream/FTP/Cod

7、e/stream.c /stream/FTP/Code/stream.c,目前最新的版本為2013/01/17發(fā)布的v5.10。stream.c由C語言編寫,可編譯為串行版本進(jìn)行單線程測試,或者編譯成OpenMP版本,進(jìn)行多線程測試。Stream主要的調(diào)節(jié)參數(shù)如下:STREAM_ARRAY_SIZE調(diào)節(jié)測試數(shù)組的大小,可以在編譯參數(shù)中通過“-DSTREAM_ARRAY_SIZE=”指定,默認(rèn)為10,000,000。Stream的測試數(shù)組類型為雙精度浮點,單個數(shù)組的占用內(nèi)存為STREAM_ARRAY_SIZE*8字節(jié)(OFFSET為0時)。如果數(shù)組太小,CPU Cache會干擾測試結(jié)果,不能測試

8、出真實的內(nèi)存帶寬,如果數(shù)組太大,測試時間過長。Stream官方建議數(shù)組占用內(nèi)存達(dá)到CPU最后一級Cache的4倍。另外,如果STREAM_ARRAY_SIZE指定過大,單個數(shù)組超過2GB,需要在編譯選項中添加“-mcmodel=medium”。NTIMES每次測試運行NTIMES,選取最好的一次輸出??梢栽诰幾g參數(shù)中通過“-DNTIMES=”指定,默認(rèn)為10。為增加測試結(jié)果的穩(wěn)定性,可以適當(dāng)增大,但測試時間也會變長。OFFSET調(diào)節(jié)數(shù)組的內(nèi)存對齊。可以在編譯參數(shù)中通過“-DOFFSET=”指定,默認(rèn)為0,一般不用修改。STREAM_TYPE指定測試數(shù)組的數(shù)據(jù)類型,默認(rèn)為double雙精度浮點。

9、可以在編譯參數(shù)中通過“-DSTREAM_TYPE=float”修改為單精度。一般公認(rèn)的測試均使用雙精度,一般不用修改。OpenMP多線程支持gcc編譯器添加“-fopenmp”選項,icc為“-openmp”,pgcc為“-mp”,Open64的opencc為“-openmp”。HPC集群測試環(huán)境注釋:報告完成后請刪除1、請根據(jù)硬件配置實際情況修改;本文測試硬件為曙光I620-G15雙路服務(wù)器。處理器:2*Intel Xeon E5-2670 8C2.6GHz,每CPU的L3 Cache大小為20MB。內(nèi)存:8*8GB DDR3 ECC 1600MHz,每顆CPU配置四通道。單節(jié)點理論內(nèi)存帶寬

10、為1600MHz*64bit*4通道*2顆CPU/8bit/1024=100GB/s。單線程Stream測試注釋:報告完成后請刪除1、本節(jié)介紹Stream測試和優(yōu)化方法,可酌情選擇優(yōu)化測試選項;數(shù)組大小的影響我們選擇20MB對應(yīng)的數(shù)組大小2,621,440作為基準(zhǔn),考察測試數(shù)組大小對測試結(jié)果的影響。選用gcc編譯器:rootnode4# gcc -O3 -DSTREAM_ARRAY_SIZE=【數(shù)組大小】stream.c測試結(jié)果如下表,單位為MB/s:數(shù)組大小L3 Cache的倍數(shù)CopyScaleAddTriad819200.0328633.10 2735130317.42987816384

11、00.0627351.00 26494.328883.8285342457600.0927533.70 26773.828934.528633.13276800.1327317.10 26622.629036.428707.94096000.1628134.90 27542.929899.729599.24915200.1927305.80 26752.128985.428633.15734400.2228151.40 27487.829924.529526.56553600.2528030.90 27165.22957029346.47372800.2827953.70 26744.9295

12、33.2288678192000.3126700.10 24774.927690.926046.59011200.3424404.00 2167524436.9222719830400.3820969.70 18335.420676.118576.310649600.4117716.50 16855.717246.215565.911468800.4415681.70 16354.815864.914942.912288000.4714543.80 15677.414751.914628.113107200.5013376.10 1354712725.813351.719660800.7512

13、127.00 13031.213329.213416.926214401.0012264.50 1211512412.212525.332768001.2512071.90 13028.913356.613470.639321601.5012266.20 12411.612363.71238045875201.7511950.30 12922.413331.313499.252428802.0012011.20 12104.612336.212301.158982402.2511991.40 12771.813432.913570.865536002.5012065.00 12126.5122

14、68.812279.372089602.7512197.70 132581354013881.178643203.0012097.80 12111.912328.312253.785196803.2512015.50 1314913392.313510.791750403.5012003.40 11968.21239812256.598304003.7512060.00 12960.313410.313504.7104857604.0011983.80 12076.112269.512279.6111411204.2512035.50 13059.213370.613547.511796480

15、4.5011951.90 12084.21234612253124518404.7511861.60 12946.313359.113481.5131072005.0012109.70 12159.512272.712177.2137625605.2511986.40 13176.313664.613457144179205.5012062.10 12080.912280.612229.4150732805.7511981.90 13006.113362.913470.3157286406.0011903.20 11947.312237.812151.5163840006.2512002.40

16、 12987.113273.113407170393606.5011968.00 12070.812191.612361.5176947206.7511936.70 12896.513381.813410.6183500807.0011927.70 12098.812300.812221.2190054407.2512016.90 12994.613301.713404.2196608007.5012008.00 12076.112266.912272.7203161607.7511952.10 1286913319.213504.7209715208.0012056.00 12095.612

17、257.212226.6可以看到當(dāng)數(shù)組大小遠(yuǎn)小于CPU L3 Cache時,測試帶寬很高,并非真實的訪存帶寬,數(shù)組大小接近CPU L3 Cache時,測試結(jié)果回落到正常范圍,隨著數(shù)組增大,測試結(jié)果趨于穩(wěn)定,測試出真實的訪存帶寬。另外,數(shù)組大小為L3 Cache的不同倍數(shù)時,測試結(jié)果呈現(xiàn)規(guī)律性變化。數(shù)組大小為L3 Cache的整數(shù)倍時,測試結(jié)果不是最高。針對Intel Xeon E5-2600系列處理器,Stream單線程測試,推薦數(shù)組大小為L3 Cache的4.25倍。其它平臺最好通過初步測試確定。CPU主頻的影響CPU主頻對Stream測試結(jié)果影響較大。選取STREAM_ARRAY_SIZE

18、=11141120(L3 Cache的4.25倍),采用gcc編譯器:rootnode4# gcc -O3 -DSTREAM_ARRAY_SIZE=11141120 stream.c查看CPU支持的頻率step:rootnode4# cpufreq-info -c 0 cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009Report errors and bugs to cpufreq, please.analyzing CPU 0: driver: acpi-cpufreq CPUs which run at the s

19、ame hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 10.0 us. hardware limits: 1.20 GHz - 2.60 GHz available frequency steps: 2.60 GHz, 2.60 GHz, 2.50 GHz, 2.40 GHz, 2.30 GHz, 2.20 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 G

20、Hz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz available cpufreq governors: ondemand, userspace, performance current policy: frequency should be within 1.20 GHz and 2.60 GHz. The governor userspace may decide which speed to use within this range. current CPU frequency is 1.20 GHz (asserted by

21、call to hardware).使用cpufreq-set等命令設(shè)置CPU到不同的頻率,測試Stream,測試結(jié)果如下,單位MB/s:CPU主頻CopyScaleAddTriadTurboBoost12085.312984.21339213447.92.610637.811114.111248.411359.32.510393.510821.21106511061.42.410203.210482.110705.310749.72.39850.21015610405.910386.32.29704.39958.510024.210061.22.19252.99457.29709.49711

22、.82.09054.59227.69445.39446.31.98615.78785.19038.29050.81.88237.88374.48665.18695.81.77839.779908339.18316.61.67425.87565.57932.97912.71.57038.37182.67529.77561.21.46624.96742.57124.47096.61.36221.76328.86691.26675.11.25827.95924.86295.66293.8可以看到,測試結(jié)果和設(shè)置的CPU主頻成正比。因此測試Stream時,最好把cpuspeed服務(wù)關(guān)閉,把CPU主頻調(diào)

23、到最高,同時打開CPU的TurboBoost超頻。同時,這也可以解釋,同樣的機型,同樣的內(nèi)存配置,配置高規(guī)格CPU會比低規(guī)格CPU的Stream測試結(jié)果好。編譯器的影響使用不同的C編譯器,Stream的測試結(jié)果是有差異的。本文比較gcc和icc,使用的版本為:rootnode4 stream_test# gcc -versiongcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)rootnode4 stream_test# icc -versionicc (ICC) 14.0.0 20130728都使用相同的-O3優(yōu)化級別,數(shù)組大小選取為11141120(L3

24、Cache的4.25倍):rootnode4# gcc -O3 -DSTREAM_ARRAY_SIZE=11141120 -o stream.gcc stream.crootnode4# icc -O3 -DSTREAM_ARRAY_SIZE=11141120 -o stream.icc stream.c測試結(jié)果如下,單位為MB/s:編譯器及優(yōu)化選項CopyScaleAddTriadgcc -O312085.312984.21339213447.9icc -O39767.68682.410344.510489.5可以看到,對于單線程Stream測試,默認(rèn)情況下icc的測試結(jié)果比gcc低很多,I

25、ntel編譯器自11開始的版本存在這樣的問題。主要問題在于Intel編譯器的“-opt-streaming-stores”優(yōu)化選項,Intel默認(rèn)為“-opt-streaming-stores auto”。在單線程Stream測試時,強制關(guān)閉icc的-opt-streaming-stores優(yōu)化選項,同時降低優(yōu)化級別到-O1,會大幅度提升測試性能,達(dá)到和gcc -O3的測試結(jié)果相近:編譯器及優(yōu)化選項CopyScaleAddTriadgcc -O312085.312984.21339213447.9icc -O39767.68682.410344.510489.5icc -O1 -opt-str

26、eaming-stores never12006.313699.613992.713906.1簡單起見,單線程Stream測試推薦使用gcc編譯器,-O3優(yōu)化選項。多線程Stream測試數(shù)組大小的影響和單線程Stream測試一樣,同樣可以做不同數(shù)組大小的多線程Stream測試,選取最優(yōu)值。針對本文測試使用的Intel Xeon E5-2600雙路平臺,多線程Stream測試推薦數(shù)組大小為單顆CPU L3 Cache的7.75倍或8.25倍。本章節(jié)的測試都選用STREAM_ARRAY_SIZE=20316160(單顆CPU L3 Cache的7.75倍)。編譯器的影響對比幾組不同的編譯器和編譯選

27、項:rootnode4# gcc -fopenmp -O3 -DSTREAM_ARRAY_SIZE=20316160 -o stream.1 stream.crootnode4# icc -openmp -O3 -DSTREAM_ARRAY_SIZE=20316160 -o stream.2 stream.crootnode4# icc -openmp -O3 -xHost -DSTREAM_ARRAY_SIZE=20316160 -o stream.3 stream.crootnode4# icc -openmp -O1 -xHost -opt-streaming-stores never

28、-DSTREAM_ARRAY_SIZE=20316160 -o stream.4 stream.crootnode4# icc -openmp -O3 -xHost -opt-streaming-stores always -DSTREAM_ARRAY_SIZE=20316160 -o stream.5 stream.c運行時,啟動的線程數(shù)等于測試節(jié)點的CPU核數(shù)(本測試平臺共2顆物理CPU、共16個CPU核),同時進(jìn)行了線程的CPU綁定。運行方式如下。針對gcc:rootnode4# OMP_NUM_THREADS=16 GOMP_CPU_AFFINITY=seq -s 0 15 ./str

29、eam.1針對icc:rootnode4# OMP_NUM_THREADS=16 KMP_AFFINITY=granularity=fine,nowarnings,compact ./stream.2測試結(jié)果如下,單位為MB/s:編譯器及優(yōu)化選項CopyScaleAddTriadgcc -fopenmp -O344504.545348.242974.048303.9icc -openmp -O348371.366245.364650.665273.7icc -openmp -O3 -xHost 48479.765708.964402.264131.6icc -openmp -O1 -xHost

30、 -opt-streaming-stores never45616.846778.148405.750272.7icc -openmp -O3 -xHost -opt-streaming-stores always64508.866097.664081.364375.8可以看到多線程Stream測試,gcc的表現(xiàn)很差;icc性能表現(xiàn)明顯更好,而且icc強制打開-opt-streaming-stores優(yōu)化,即指定-opt-streaming-stores always會大幅度改善Copy操作性能。針對多線程Stream測試,推薦采用Intel icc編譯器,推薦的編譯參數(shù):-openmp -O

31、3 -xHost -opt-streaming-stores always。線程綁定的影響多核CPU時代,CPU的核數(shù)越來越多,OpenMP多線程程序運行時發(fā)生線程在CPU核間遷移的概率越來越大,線程遷移會帶來很大開銷,同時不利于利用內(nèi)存的局域性??梢灶A(yù)計多線程Stream測試時,進(jìn)行線程綁定可以提升測試性能,并保障多次測試結(jié)果的穩(wěn)定性??梢宰鲆粋€簡單的測試。采用icc -openmp -O3 -xHost -opt-streaming-stores always編譯stream.c,數(shù)組大小20316160,運行時指定線程數(shù)等于節(jié)點CPU核數(shù)16。不進(jìn)行線程綁定、以及不同線程綁定方式下的測試

32、結(jié)果如下,單位為MB/s:線程綁定方式CopyScaleAddTriad不綁定(多次測試結(jié)果不穩(wěn)定,也可能測試出好結(jié)果)41530.242078.843009.442175.7KMP_AFFINITY=granularity=fine,nowarnings,compact64920.566692.564375.864097.4KMP_AFFINITY=granularity=fine,nowarnings,scatter57493.262068.459281.559555.9KMP_AFFINITY=explicit,proclist=0,1,2,3,4,5,6,7,8,9,10,11,12,

33、13,14,15(相當(dāng)于compact綁定方式)64545.566585.064309.064139.6可以看到,采用Intel編譯器OpenMP的compact線程綁定方式,測試結(jié)果最好,且能保持多次測試的穩(wěn)定性。因此,多線程Stream測試時一定要進(jìn)行線程綁定!線程數(shù)的影響再考查一下OpenMP線程數(shù)對測試結(jié)果的影響。本次測試,雙路節(jié)點CPU核數(shù)為16,設(shè)定線程數(shù)為2、4、8、16、32、64,測試結(jié)果如下,單位為MB/s,每組測試選用效果最好的線程綁定方式:線程數(shù)線程綁定方式CopyScaleAddTriad2proclist=1,915787.217048.219966.720288.

34、44proclist=1,5,9,1330201.732216.337782.538003.78proclist=1,3,5,7,9,11,13,1552916.555831.160435.960622.316proclist=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,1564545.566585.064309.064139.632proclist=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,1563799.565560.464181.964282.864procl

35、ist=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,1562127.864341.463654.563561.5可以看到,當(dāng)線程數(shù)小于CPU核數(shù)時,內(nèi)存帶寬沒有壓到最大;當(dāng)線程數(shù)大于CPU核數(shù)時,內(nèi)存帶寬沒有增加,反而由于資源爭搶帶寬呈現(xiàn)下降趨勢。因此,多線程Stream測試,推薦線程數(shù)等于節(jié)點CPU核心數(shù)。Stream的大頁面優(yōu)化HugeTL

36、BFS大頁面簡介Linux操作系統(tǒng)對虛擬內(nèi)存管理采用分頁管理機制,內(nèi)存頁面默認(rèn)大小為4KB。在Linux操作系統(tǒng)上運行內(nèi)存需求量較大的應(yīng)用程序時,采用默認(rèn)4KB的頁面,將會產(chǎn)生較多TLB Miss和缺頁中斷,從而影響應(yīng)用程序的性能。當(dāng)操作系統(tǒng)以2MB或更大作為分頁的單位時,將會大大減少TLB Miss和缺頁中斷的數(shù)量,提高應(yīng)用程序的性能。這也正是Linux內(nèi)核引入大頁面支持的主要原因。Linux采用了基于HugeTLBFS的特殊文件系統(tǒng)來支持2MB大頁面。Linux的HugeTLBFS主要包含幾個部分:hugetlbfs是一種內(nèi)存文件系統(tǒng)。該文件系統(tǒng)上的所有文件都分配大頁面,可用mmap()等

37、直接進(jìn)行訪問,也可以通過libhugetlbfs底層調(diào)用。在使用大頁面前,操作系統(tǒng)都需要先掛載hugetlbfs(掛載命令一般為mount -t hugetlbfs none );libhugetlbfs是HugeTLBFS的庫函數(shù)??梢哉{(diào)用它的函數(shù)在程序代碼中使用大頁面,這需要修改程序源代碼;也可以采用透明的大頁面使用方式,不用修改代碼,只需將libhugetlbfs.so動態(tài)庫連接link進(jìn)可執(zhí)行文件,或者運行程序前Pre-Load預(yù)加載libhugetlbfs.so(需要動態(tài)連接的可執(zhí)行文件),libhugetlbfs會自動(通過環(huán)境變量或hugectl命令控制)將原程序中的malloc

38、()等內(nèi)存分配函數(shù)替換成大頁面方式,或者將可執(zhí)行程序的.BSS(未初始化的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域)、.DATA(初始化后的全局變量和靜態(tài)變量)、.TEXT(存放程序執(zhí)行代碼)段采用大頁面分配;HugeTLBFS提供自己的ld連接工具。如果想為程序的.BSS、DATA、.TEXT段分配大頁面,最好的方式是調(diào)用HugeTLBFS的ld重新連接可執(zhí)行程序;一些管理命令,比如hugeadm、hugectl、pagesize等,方便HugeTLBFS管理和使用。我們重點關(guān)注的是不用修改程序代碼,透明使用HugeTLBFS大頁面。簡單總結(jié)一下透明使用HugeTLBFS大頁面的幾種方式:Share

39、 Memory把libhugetlbfs.so連接進(jìn)可執(zhí)行文件,或者在運行前預(yù)加載libhugetlbfs.so后,通過設(shè)置環(huán)境變量HUGETLB_SHM=yes,可以自動將shmget()系統(tǒng)調(diào)用替換成大頁面方式。使用方式如下:export LD_PRELOAD=/usr/lib64/libhugetlbfs.soexport HUGETLB_SHM=yes./application或者采用hugectl -shm調(diào)用可執(zhí)行程序:hugectl -shm ./application如果libhugetlbfs已經(jīng)連接進(jìn)可執(zhí)行程序,可以給hugectl添加-no-preload參數(shù),避免二次加

40、載:hugectl -shm -no-preload ./applicationHeap通過設(shè)置環(huán)境變量HUGETLB_MORECORE=yes,可以自動將malloc()等內(nèi)存分配函數(shù)替換成大頁面方式。使用方式如下:export LD_PRELOAD=/usr/lib64/libhugetlbfs.soexport HUGETLB_MORECORE=yes./application或者采用hugectl -heap調(diào)用可執(zhí)行程序:hugectl -heap ./application.BSS、DATA、.TEXT段通過設(shè)置環(huán)境變量HUGETLB_FORCE_ELFMAP=yes,可以自動將程

41、序的.BSS、DATA、.TEXT段自動分配大頁面。使用方式如下:export LD_PRELOAD=/usr/lib64/libhugetlbfs.soexport HUGETLB_FORCE_ELFMAP=yes./application或者通過hugectl調(diào)用:hugectl -text -data -bss ./application需要注意的是,設(shè)置HUGETLB_FORCE_ELFMAP的方式不能確保生效,推薦采用另外一種方式,將libhugetlbfs.so連接進(jìn)可執(zhí)行文件,并且調(diào)用HugeTLBFS的ld連接器執(zhí)行連接操作: -B/usr/share/libhugetlbfs

42、 -Wl,-melf_x86_64 -Wl,-hugetlbfs-align 或者: -Wl,-T/usr/share/libhugetlbfs/ldscripts/elf_x86_64.xBDT 執(zhí)行時通過hugectl調(diào)用:hugectl -text -data -bss -no-preload ./applicationStream的大頁面優(yōu)化測試Stream的大頁面優(yōu)化方法分析分析stream.c代碼可以看到,實際承載訪存操作的是3個數(shù)組a、b、c,數(shù)據(jù)類型STREAM_TYPE默認(rèn)為double雙精度浮點,數(shù)組大小為STREAM_ARRAY_SIZE+OFFSET。想利用大頁面優(yōu)化Stream,主要是想辦法把這3個數(shù)組分配到大頁面上。這3個數(shù)組采用靜態(tài)分配內(nèi)存方式,沒有采用malloc()動態(tài)分配內(nèi)存,也沒有shmget()系統(tǒng)調(diào)用。靜態(tài)分配內(nèi)存的變量位于可執(zhí)行程序的.BSS或.DATA段,因此我們可以使用上面介紹的相應(yīng)方法,為Stream可執(zhí)行程序的.BSS、DATA、.TEXT段分配大頁面。編譯stream.c時,調(diào)用HugeTLBFS的ld連接器,以便將.BSS、DATA、.TEXT數(shù)據(jù)字段分配大頁面:rootnode4# icc -openmp -O3 -xHost -opt-streaming-stores always

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論