在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一些對OpenMP進(jìn)行優(yōu)化的方法

openEuler ? 來源:畢昇編譯 ? 作者:謝依暉 ? 2022-10-18 09:44 ? 次閱讀

作者介紹

謝依暉

湖南大學(xué)碩士研究生在讀,

本科畢業(yè)于湖南大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)

Abstract

本文調(diào)研了一些對OpenMP進(jìn)行優(yōu)化的方法:

H. Ma, R. Zhao, X. Gao and Y. Zhang針對OpenMP程序中的barrier提出幾種新功能的支持和性能的優(yōu)化[1];

在SC20的Booth Talks上,Johannes Doerfert分享了在LLVM上對OpenMP做的一些優(yōu)化[2]。

Barrier Optimization for OpenMP Program[1]

刪除冗余的barrier

通過并行數(shù)據(jù)流分析,兩個(gè)循環(huán)之間無數(shù)據(jù)依賴,所以S1的barrier是冗余的;parallel結(jié)束的時(shí)候有一個(gè)隱式的barrier,所以S2的barrier也是冗余的。

!$ompparallel
!$ompdo
doi=1,100
a(i)=d(i)
enddo!barrierS1
!$ompenddo
!$ompdo
doi=1,100
b(i)=c(i)
enddo!barrierS2
!$ompenddo
!$ompendparallel

優(yōu)化時(shí),可以在該語句塊加上顯式的nowait(!$omp end do nowait)。

實(shí)現(xiàn)DOACROSS并行

當(dāng)并行化循環(huán)的時(shí)候,如果循環(huán)依賴距離是一個(gè)常數(shù),如下代碼:

doi=2,100
doj=2,100
a(i,j)=a(i-1,j)+a(i,j-1)
enddo
enddo

對外層循環(huán)i進(jìn)行數(shù)據(jù)依賴檢查,可以得到a[i][j]和a[i-1][j]之間的依賴距離為1。因此循環(huán)可以以DOACROSS并行的方式運(yùn)行。OpenMP只實(shí)現(xiàn)了DOALL并行,沒有與DOACROSS對應(yīng)的語句。

實(shí)現(xiàn)時(shí),定義共享數(shù)組“_mylocks [ threadid ]”來存儲(chǔ)每個(gè)線程的事件,定義私有變量_counter0指示當(dāng)前線程正在等待的事件。數(shù)組“_mylocks”中的元素總數(shù)是線程數(shù),每個(gè)元素表示相應(yīng)線程的當(dāng)前狀態(tài)。實(shí)現(xiàn)的代碼如下:

int_mylocks[256];//thread'ssynchronizedarray
#pragmaompparallel
{
int_counter0=l;
int_my_id=omp_get_thread_num();
int_my_nprocs=omp_get_num_threads();
_mylocks[my_id]= 0;
for (j_tile=0;j_tile0){
do{
#pragmaompflush(_mylock)
}while(_mylock[myid-l]

Region Barrier

當(dāng)線程遇到region barrier時(shí)會(huì)繼續(xù)執(zhí)行。但是直到其他所有線程都進(jìn)入這個(gè)區(qū)域之后,它才能運(yùn)行出該區(qū)域。這樣的好處是允許線程繼續(xù)運(yùn)行而不空轉(zhuǎn),可以實(shí)現(xiàn)CPU的負(fù)載均衡。

region barrier的實(shí)現(xiàn)代碼如下:

unsigned_counter=0;
#pragmaompparallel
{
{firstparallelregion}
#pragmaompatomic
_counter++;
{barrierregion}
#pragmaompflush(counter)
while(counter%omp_get_num_threads())
{
#pragmaompflush(counter)
}
#pragmaompflush
{thirdparallelregion}
}

當(dāng)使用region barrier時(shí),需要保證并行域R1和R3與并行域R2無依賴關(guān)系。

OpenMP SC20 Booth Talk Series : OpenMP compiler optimizations in LLVM [2]

OpenMP運(yùn)行時(shí)調(diào)用重復(fù)數(shù)據(jù)的消除

double*A=malloc(size*omp_get_thread_limit());
double*B=malloc(size*omp_get_thread_limit());
#pragmaompparallel
do_work(&A[omp_get_thread_num()*size]);
#pragmaompparallel
do_work(&B[omp_get_thread_num()*size]);

示例代碼中重復(fù)調(diào)用了omp_get_thread_limit()和omp_get_thread_num()函數(shù),可以將重復(fù)調(diào)用合并至一次調(diào)用。該功能已在LLVM實(shí)現(xiàn),可通過如下編譯選項(xiàng)進(jìn)行優(yōu)化:

$clangdeduplicate.c-g-O2-fopenmp-Rpass=openmp-opt

Tracking OpenMP Internal Control Variables

voidfoo(){
#pragmaompparallel
bar();
}
voidbar(){
if(omp_in_parallel()){
...
}else{
...
}
}

以上代碼,如果omp_in_parallel()的返回值可以判斷為真,那么這個(gè)if結(jié)構(gòu)就可以被刪除。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 優(yōu)化
    +關(guān)注

    關(guān)注

    0

    文章

    220

    瀏覽量

    24157
  • OpenMP
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    5747
  • abstract
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1717

原文標(biāo)題:OpenMP優(yōu)化調(diào)研系列文章(1)

文章出處:【微信號(hào):openEulercommunity,微信公眾號(hào):openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于一些OpenMP優(yōu)化的方式

    本文調(diào)研了一些OpenMP優(yōu)化的方式。
    發(fā)表于 11-22 09:36 ?1222次閱讀

    求分享一些關(guān)于優(yōu)化示波器測量的提示與技巧

    求分享一些關(guān)于優(yōu)化示波器測量的提示與技巧
    發(fā)表于 05-12 06:26

    關(guān)于java性能優(yōu)化一些細(xì)節(jié)

    代碼優(yōu)化個(gè)很重要的課題??赡苡行┤擞X得沒用,一些細(xì)小的地方有什么好修改的,改與不改對于代碼的運(yùn)行效率有什么影響呢?這個(gè)問題我是這么考慮的,就像大海里面的鯨魚樣,它吃
    發(fā)表于 10-11 09:23

    openmp的相關(guān)資料下載

    嵌入式算法移植優(yōu)化學(xué)習(xí)筆記1——openmp參考:1、https://www.oschina.net/p/openmp?hmsr=aladdin1e11、openmp簡介
    發(fā)表于 12-14 09:03

    請問JPEG編碼如何并行優(yōu)化?

    使用QT對Jpeg編碼與解碼功能進(jìn)行優(yōu)化,可以使用openmp,neon等各種方法
    發(fā)表于 05-16 21:25

    OpenMP優(yōu)化調(diào)研系列文章(1)

    Abstract本文調(diào)研了一些OpenMP進(jìn)行優(yōu)化方法:H. Ma, R. Zhao, X. Gao and Y. Zhang針對
    發(fā)表于 10-28 10:18

    OpenMP優(yōu)化調(diào)研系列文章(3)

    極大大小的數(shù)組,要在Cache中次容納整個(gè)數(shù)組是有困難的,但可以將數(shù)組分為多塊,可有效降低Cache失效率。循環(huán)調(diào)度優(yōu)化OpenMP中可對并行循環(huán)指定調(diào)度方案,以將每個(gè)迭代分配給多個(gè)工作線程執(zhí)行
    發(fā)表于 12-23 16:05

    一些在文本數(shù)據(jù)量不夠大的時(shí)候可用的一些實(shí)用方法

    在這篇文章中,我將展示一些由我自己開發(fā)或是我在文章、博客、論壇、Kaggle和其他一些地方發(fā)現(xiàn)的方法,看看它們是如何在沒有大數(shù)據(jù)的情況下讓深度學(xué)習(xí)更好地完成我的任務(wù)的。其中許多方法都基
    的頭像 發(fā)表于 11-19 17:39 ?6950次閱讀
    <b class='flag-5'>一些</b>在文本數(shù)據(jù)量不夠大的時(shí)候可用的<b class='flag-5'>一些</b>實(shí)用<b class='flag-5'>方法</b>

    5G網(wǎng)絡(luò)優(yōu)化一些案例資料下載

    電子發(fā)燒友網(wǎng)為你提供5G網(wǎng)絡(luò)優(yōu)化一些案例資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-28 08:45 ?14次下載
    5G網(wǎng)絡(luò)<b class='flag-5'>優(yōu)化</b>的<b class='flag-5'>一些</b>案例資料下載

    Zigbee 3.0網(wǎng)絡(luò)優(yōu)化一些方法和建議

    本則實(shí)操演示視頻中,Silicon Labs(亦稱“芯科科技”)高級硬件應(yīng)用工程師Jason Hou介紹了Zigbee 3.0網(wǎng)絡(luò)優(yōu)化一些方法和建議來幫助開發(fā)人員快速搭建穩(wěn)定的Zigbee3.0
    的頭像 發(fā)表于 06-18 18:17 ?3131次閱讀

    嵌入式linux系統(tǒng)快速啟動(dòng)優(yōu)化一些方法

    嵌入式linux快速啟動(dòng)的一些優(yōu)化方法,主要是要掌握嵌入式linux系統(tǒng)的啟動(dòng)流程,以便能夠在優(yōu)化時(shí)有所指引。下面是一些總結(jié):嵌入式lin
    發(fā)表于 11-01 17:06 ?8次下載
    嵌入式linux系統(tǒng)快速啟動(dòng)<b class='flag-5'>優(yōu)化</b>的<b class='flag-5'>一些</b><b class='flag-5'>方法</b>

    NEON編程中的一些常見優(yōu)化技巧

      讀過上篇文章“ARM NEON快速上手指南”之后,相信你已經(jīng)對ARM NEON編程有了基本的認(rèn)識(shí)。但在真正利用ARM NEON優(yōu)化程序性能時(shí),還有很多編程技巧和注意事項(xiàng)。本文將結(jié)合本人的一些開發(fā)經(jīng)歷,介紹NEON編程中的
    的頭像 發(fā)表于 12-12 09:11 ?2251次閱讀

    分享一些Python代碼加速工具

    這篇文章會(huì)提供一些優(yōu)化代碼的工具。會(huì)讓代碼變得更簡潔,或者更迅速。
    發(fā)表于 07-07 11:18 ?485次閱讀

    介紹得物App在資源優(yōu)化上做的一些實(shí)踐

    包體積優(yōu)化中,資源優(yōu)化般都是首要且容易有成效的優(yōu)化方向。資源優(yōu)化是通過優(yōu)化APK中的資源項(xiàng)來
    的頭像 發(fā)表于 07-24 09:00 ?970次閱讀
    介紹得物App在資源<b class='flag-5'>優(yōu)化</b>上做的<b class='flag-5'>一些</b>實(shí)踐

    單片機(jī)“低耦合”的一些方法

    單片機(jī)“低耦合”的一些方法
    的頭像 發(fā)表于 10-17 18:30 ?639次閱讀
    主站蜘蛛池模板: 黄色a∨| 免费的黄色大片 | 色网站在线 | 国产精品久久自在自2021 | 欧美性猛交xxxx免费看久久 | 日韩精品免费一区二区三区 | 国产在线综合网 | www.xxx.日本| 亚洲一区二区免费在线观看 | 天天看天天碰 | 性欧美大战久久久久久久野外 | 午夜黄色影片 | 亚洲爱爱视频 | 91激情在线 | 欧美在线色视频 | hs网站在线观看 | 日韩av线观看 | 一级毛片免费全部播放完整 | 色狠狠xx| 日本xxxxbbbb | 欧美综合成人网 | 色爽爽爽爽爽爽爽爽 | 天堂在线www网亚洲 天堂在线观看 | www.综合色| 日本一区二区视频在线观看 | 人人洗澡人人洗澡人人 | 成人精品人成网站 | 亚洲综合久久久 | 欧美性free免费 | 日本久久久久久久 | 久久久噜久噜久久gif动图 | 亚洲欧美视频一区二区 | 日日夜夜天天操 | 夜夜网站| 久久精品re | 午夜亚洲 | 天天色天天综合网 | 亚洲高清美女一区二区三区 | 99久久香蕉国产综合影院 | 精品一级毛片 | 新版天堂中文在线8官网 |