




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、HPC高性能計(jì)算項(xiàng)目Stream內(nèi)存帶寬測(cè)試報(bào)告目 錄 TOC o 1-3 h z u HYPERLINK l _Toc529044528 1 Stream簡介 PAGEREF _Toc529044528 h 1 HYPERLINK l _Toc529044529 2 HPC集群測(cè)試環(huán)境 PAGEREF _Toc529044529 h 3 HYPERLINK l _Toc529044530 3 單線程Stream測(cè)試 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測(cè)試 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)化測(cè)試 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的測(cè)試結(jié)果 PAGEREF _Toc529044544 h 17 Stream簡介Stream是業(yè)界廣為
5、流行的綜合性內(nèi)存帶寬實(shí)際性能測(cè)量工具之一。隨著處理器處理核心數(shù)量的增多,內(nèi)存帶寬對(duì)于提升整個(gè)系統(tǒng)性能越發(fā)重要,如果某個(gè)系統(tǒng)不能夠足夠迅速地將內(nèi)存中的數(shù)據(jù)傳輸?shù)教幚砥鳟?dāng)中,若干處理核心就會(huì)處于等待數(shù)據(jù)的閑置狀態(tài),而這其中所產(chǎn)生的閑置時(shí)間不僅會(huì)降低系統(tǒng)的效率還會(huì)抵消多核心和高主頻所帶來的性能提升因素。Stream具有良好的空間局部性,是對(duì)TLB友好、Cache友好的一款測(cè)試。Stream測(cè)試包含Copy、Scale、Add、Triad四種操作:測(cè)試項(xiàng)實(shí)際操作訪存次數(shù)/每循環(huán)浮點(diǎn)計(jì)算次數(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測(cè)試結(jié)果一般的規(guī)律是Add Triad Copy Scale。一次Add操作需要訪問三次內(nèi)存(兩個(gè)讀操作,一個(gè)寫操作),Triad操作也需要三次訪問內(nèi)存,Copy和Scale操作需要兩次訪問內(nèi)存。單位操作內(nèi),訪問內(nèi)存次數(shù)越多,越能夠掩蓋訪存延遲,帶寬越大。另一方面,單位操作內(nèi),浮點(diǎn)計(jì)算次數(shù)越多,操作完成時(shí)間越長,導(dǎo)致整個(gè)操作循環(huán)完成的時(shí)間越長,帶寬越低。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)行單線程測(cè)試,或者編譯成OpenMP版本,進(jìn)行多線程測(cè)試。Stream主要的調(diào)節(jié)參數(shù)如下:STREAM_ARRAY_SIZE調(diào)節(jié)測(cè)試數(shù)組的大小,可以在編譯參數(shù)中通過“-DSTREAM_ARRAY_SIZE=”指定,默認(rèn)為10,000,000。Stream的測(cè)試數(shù)組類型為雙精度浮點(diǎn),單個(gè)數(shù)組的占用內(nèi)存為STREAM_ARRAY_SIZE*8字節(jié)(OFFSET為0時(shí))。如果數(shù)組太小,CPU Cache會(huì)干擾測(cè)試結(jié)果,不能測(cè)試
8、出真實(shí)的內(nèi)存帶寬,如果數(shù)組太大,測(cè)試時(shí)間過長。Stream官方建議數(shù)組占用內(nèi)存達(dá)到CPU最后一級(jí)Cache的4倍。另外,如果STREAM_ARRAY_SIZE指定過大,單個(gè)數(shù)組超過2GB,需要在編譯選項(xiàng)中添加“-mcmodel=medium”。NTIMES每次測(cè)試運(yùn)行NTIMES,選取最好的一次輸出??梢栽诰幾g參數(shù)中通過“-DNTIMES=”指定,默認(rèn)為10。為增加測(cè)試結(jié)果的穩(wěn)定性,可以適當(dāng)增大,但測(cè)試時(shí)間也會(huì)變長。OFFSET調(diào)節(jié)數(shù)組的內(nèi)存對(duì)齊??梢栽诰幾g參數(shù)中通過“-DOFFSET=”指定,默認(rèn)為0,一般不用修改。STREAM_TYPE指定測(cè)試數(shù)組的數(shù)據(jù)類型,默認(rèn)為double雙精度浮點(diǎn)。
9、可以在編譯參數(shù)中通過“-DSTREAM_TYPE=float”修改為單精度。一般公認(rèn)的測(cè)試均使用雙精度,一般不用修改。OpenMP多線程支持gcc編譯器添加“-fopenmp”選項(xiàng),icc為“-openmp”,pgcc為“-mp”,Open64的opencc為“-openmp”。HPC集群測(cè)試環(huán)境注釋:報(bào)告完成后請(qǐng)刪除1、請(qǐng)根據(jù)硬件配置實(shí)際情況修改;本文測(cè)試硬件為曙光I620-G15雙路服務(wù)器。處理器:2*Intel Xeon E5-2670 8C2.6GHz,每CPU的L3 Cache大小為20MB。內(nèi)存:8*8GB DDR3 ECC 1600MHz,每顆CPU配置四通道。單節(jié)點(diǎn)理論內(nèi)存帶寬
10、為1600MHz*64bit*4通道*2顆CPU/8bit/1024=100GB/s。單線程Stream測(cè)試注釋:報(bào)告完成后請(qǐng)刪除1、本節(jié)介紹Stream測(cè)試和優(yōu)化方法,可酌情選擇優(yōu)化測(cè)試選項(xiàng);數(shù)組大小的影響我們選擇20MB對(duì)應(yīng)的數(shù)組大小2,621,440作為基準(zhǔn),考察測(cè)試數(shù)組大小對(duì)測(cè)試結(jié)果的影響。選用gcc編譯器:rootnode4# gcc -O3 -DSTREAM_ARRAY_SIZE=【數(shù)組大小】stream.c測(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í),測(cè)試帶寬很高,并非真實(shí)的訪存帶寬,數(shù)組大小接近CPU L3 Cache時(shí),測(cè)試結(jié)果回落到正常范圍,隨著數(shù)組增大,測(cè)試結(jié)果趨于穩(wěn)定,測(cè)試出真實(shí)的訪存帶寬。另外,數(shù)組大小為L3 Cache的不同倍數(shù)時(shí),測(cè)試結(jié)果呈現(xiàn)規(guī)律性變化。數(shù)組大小為L3 Cache的整數(shù)倍時(shí),測(cè)試結(jié)果不是最高。針對(duì)Intel Xeon E5-2600系列處理器,Stream單線程測(cè)試,推薦數(shù)組大小為L3 Cache的4.25倍。其它平臺(tái)最好通過初步測(cè)試確定。CPU主頻的影響CPU主頻對(duì)Stream測(cè)試結(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到不同的頻率,測(cè)試Stream,測(cè)試結(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可以看到,測(cè)試結(jié)果和設(shè)置的CPU主頻成正比。因此測(cè)試Stream時(shí),最好把cpuspeed服務(wù)關(guān)閉,把CPU主頻調(diào)
23、到最高,同時(shí)打開CPU的TurboBoost超頻。同時(shí),這也可以解釋,同樣的機(jī)型,同樣的內(nèi)存配置,配置高規(guī)格CPU會(huì)比低規(guī)格CPU的Stream測(cè)試結(jié)果好。編譯器的影響使用不同的C編譯器,Stream的測(cè)試結(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)化級(jí)別,數(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測(cè)試結(jié)果如下,單位為MB/s:編譯器及優(yōu)化選項(xiàng)CopyScaleAddTriadgcc -O312085.312984.21339213447.9icc -O39767.68682.410344.510489.5可以看到,對(duì)于單線程Stream測(cè)試,默認(rèn)情況下icc的測(cè)試結(jié)果比gcc低很多,I
25、ntel編譯器自11開始的版本存在這樣的問題。主要問題在于Intel編譯器的“-opt-streaming-stores”優(yōu)化選項(xiàng),Intel默認(rèn)為“-opt-streaming-stores auto”。在單線程Stream測(cè)試時(shí),強(qiáng)制關(guān)閉icc的-opt-streaming-stores優(yōu)化選項(xiàng),同時(shí)降低優(yōu)化級(jí)別到-O1,會(huì)大幅度提升測(cè)試性能,達(dá)到和gcc -O3的測(cè)試結(jié)果相近:編譯器及優(yōu)化選項(xiàng)CopyScaleAddTriadgcc -O312085.312984.21339213447.9icc -O39767.68682.410344.510489.5icc -O1 -opt-str
26、eaming-stores never12006.313699.613992.713906.1簡單起見,單線程Stream測(cè)試推薦使用gcc編譯器,-O3優(yōu)化選項(xiàng)。多線程Stream測(cè)試數(shù)組大小的影響和單線程Stream測(cè)試一樣,同樣可以做不同數(shù)組大小的多線程Stream測(cè)試,選取最優(yōu)值。針對(duì)本文測(cè)試使用的Intel Xeon E5-2600雙路平臺(tái),多線程Stream測(cè)試推薦數(shù)組大小為單顆CPU L3 Cache的7.75倍或8.25倍。本章節(jié)的測(cè)試都選用STREAM_ARRAY_SIZE=20316160(單顆CPU L3 Cache的7.75倍)。編譯器的影響對(duì)比幾組不同的編譯器和編譯選
27、項(xiàng):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運(yùn)行時(shí),啟動(dòng)的線程數(shù)等于測(cè)試節(jié)點(diǎn)的CPU核數(shù)(本測(cè)試平臺(tái)共2顆物理CPU、共16個(gè)CPU核),同時(shí)進(jìn)行了線程的CPU綁定。運(yùn)行方式如下。針對(duì)gcc:rootnode4# OMP_NUM_THREADS=16 GOMP_CPU_AFFINITY=seq -s 0 15 ./str
29、eam.1針對(duì)icc:rootnode4# OMP_NUM_THREADS=16 KMP_AFFINITY=granularity=fine,nowarnings,compact ./stream.2測(cè)試結(jié)果如下,單位為MB/s:編譯器及優(yōu)化選項(xiàng)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測(cè)試,gcc的表現(xiàn)很差;icc性能表現(xiàn)明顯更好,而且icc強(qiáng)制打開-opt-streaming-stores優(yōu)化,即指定-opt-streaming-stores always會(huì)大幅度改善Copy操作性能。針對(duì)多線程Stream測(cè)試,推薦采用Intel icc編譯器,推薦的編譯參數(shù):-openmp -O
31、3 -xHost -opt-streaming-stores always。線程綁定的影響多核CPU時(shí)代,CPU的核數(shù)越來越多,OpenMP多線程程序運(yùn)行時(shí)發(fā)生線程在CPU核間遷移的概率越來越大,線程遷移會(huì)帶來很大開銷,同時(shí)不利于利用內(nèi)存的局域性??梢灶A(yù)計(jì)多線程Stream測(cè)試時(shí),進(jìn)行線程綁定可以提升測(cè)試性能,并保障多次測(cè)試結(jié)果的穩(wěn)定性??梢宰鲆粋€(gè)簡單的測(cè)試。采用icc -openmp -O3 -xHost -opt-streaming-stores always編譯stream.c,數(shù)組大小20316160,運(yùn)行時(shí)指定線程數(shù)等于節(jié)點(diǎn)CPU核數(shù)16。不進(jìn)行線程綁定、以及不同線程綁定方式下的測(cè)試
32、結(jié)果如下,單位為MB/s:線程綁定方式CopyScaleAddTriad不綁定(多次測(cè)試結(jié)果不穩(wěn)定,也可能測(cè)試出好結(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線程綁定方式,測(cè)試結(jié)果最好,且能保持多次測(cè)試的穩(wěn)定性。因此,多線程Stream測(cè)試時(shí)一定要進(jìn)行線程綁定!線程數(shù)的影響再考查一下OpenMP線程數(shù)對(duì)測(cè)試結(jié)果的影響。本次測(cè)試,雙路節(jié)點(diǎn)CPU核數(shù)為16,設(shè)定線程數(shù)為2、4、8、16、32、64,測(cè)試結(jié)果如下,單位為MB/s,每組測(cè)試選用效果最好的線程綁定方式:線程數(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ù)時(shí),內(nèi)存帶寬沒有壓到最大;當(dāng)線程數(shù)大于CPU核數(shù)時(shí),內(nèi)存帶寬沒有增加,反而由于資源爭(zhēng)搶帶寬呈現(xiàn)下降趨勢(shì)。因此,多線程Stream測(cè)試,推薦線程數(shù)等于節(jié)點(diǎn)CPU核心數(shù)。Stream的大頁面優(yōu)化HugeTL
36、BFS大頁面簡介Linux操作系統(tǒng)對(duì)虛擬內(nèi)存管理采用分頁管理機(jī)制,內(nèi)存頁面默認(rèn)大小為4KB。在Linux操作系統(tǒng)上運(yùn)行內(nèi)存需求量較大的應(yīng)用程序時(shí),采用默認(rèn)4KB的頁面,將會(huì)產(chǎn)生較多TLB Miss和缺頁中斷,從而影響應(yīng)用程序的性能。當(dāng)操作系統(tǒng)以2MB或更大作為分頁的單位時(shí),將會(huì)大大減少TLB Miss和缺頁中斷的數(shù)量,提高應(yīng)用程序的性能。這也正是Linux內(nèi)核引入大頁面支持的主要原因。Linux采用了基于HugeTLBFS的特殊文件系統(tǒng)來支持2MB大頁面。Linux的HugeTLBFS主要包含幾個(gè)部分: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動(dòng)態(tài)庫連接link進(jìn)可執(zhí)行文件,或者運(yùn)行程序前Pre-Load預(yù)加載libhugetlbfs.so(需要?jiǎng)討B(tài)連接的可執(zhí)行文件),libhugetlbfs會(huì)自動(dòng)(通過環(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管理和使用。我們重點(diǎn)關(guān)注的是不用修改程序代碼,透明使用HugeTLBFS大頁面。簡單總結(jié)一下透明使用HugeTLBFS大頁面的幾種方式:Share
39、 Memory把libhugetlbfs.so連接進(jìn)可執(zhí)行文件,或者在運(yùn)行前預(yù)加載libhugetlbfs.so后,通過設(shè)置環(huán)境變量HUGETLB_SHM=yes,可以自動(dòng)將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,可以自動(dòng)將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,可以自動(dòng)將程
41、序的.BSS、DATA、.TEXT段自動(dòng)分配大頁面。使用方式如下: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í)行時(shí)通過hugectl調(diào)用:hugectl -text -data -bss -no-preload ./applicationStream的大頁面優(yōu)化測(cè)試Stream的大頁面優(yōu)化方法分析分析stream.c代碼可以看到,實(shí)際承載訪存操作的是3個(gè)數(shù)組a、b、c,數(shù)據(jù)類型STREAM_TYPE默認(rèn)為double雙精度浮點(diǎn),數(shù)組大小為STREAM_ARRAY_SIZE+OFFSET。想利用大頁面優(yōu)化Stream,主要是想辦法把這3個(gè)數(shù)組分配到大頁面上。這3個(gè)數(shù)組采用靜態(tài)分配內(nèi)存方式,沒有采用malloc()動(dòng)態(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時(shí),調(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電焊工施工合同協(xié)議書
- 湖北省隨州市部分高中2024-2025學(xué)年高一下學(xué)期2月聯(lián)考地理試卷(含答案)
- 洗衣設(shè)備購銷合同共
- 健身房運(yùn)營管理作業(yè)指導(dǎo)書
- 會(huì)議策劃與活動(dòng)執(zhí)行服務(wù)協(xié)議
- 健康科技在老年健康管理中的應(yīng)用解決方案
- 水利建設(shè)工程施工合同協(xié)議書
- 大學(xué)生科普小說讀后感
- 觀看紀(jì)錄片長江觀后感
- 車隊(duì)土石方運(yùn)輸合同
- 魚骨圖分析法(30P PPT)
- 化學(xué)電源電化學(xué)原理
- 英語國家概況謝福之chapter-1
- 高頻訂單失衡及價(jià)差因子
- 部門預(yù)算與預(yù)算管理(PPT-38頁)課件
- (KPI績效考核)某制造業(yè)公司X年績效考核全套考核指標(biāo)
- 布朗德戰(zhàn)略導(dǎo)向的薪酬管理體系
- SOP標(biāo)準(zhǔn)作業(yè)指導(dǎo)書樣板
- 食品經(jīng)營餐飲操作流程(共1頁)
- JTS 144-1-2010 港口工程荷載規(guī)范
- 產(chǎn)液剖面介紹
評(píng)論
0/150
提交評(píng)論