亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

openMP編程探索1——編程基礎(chǔ)

系統(tǒng) 1772 0

在學(xué)習(xí)并行編程之前,你應(yīng)該知道進(jìn)程、線程、主線程、從線程等基本概念。進(jìn)程是一個(gè)大型應(yīng)用程序的基本單位,在任務(wù)管理器里進(jìn)程都有一個(gè)名稱,后面跟隨的是與他有關(guān)的資源。線程是程序執(zhí)行的基本單位,它必須從屬與一個(gè)進(jìn)程,一個(gè)進(jìn)程可以有多個(gè)線程,同一個(gè)進(jìn)程的線程可以共享進(jìn)程的資源,例如他們可以引用同一個(gè)變量的值。一個(gè)進(jìn)程一般會(huì)與一個(gè).EXE文件關(guān)聯(lián),所以我把程序和進(jìn)程不加區(qū)分。一個(gè)程序中有多個(gè)線程時(shí),它必然會(huì)有一個(gè)主線程,主線程執(zhí)行完后,其它從線程也應(yīng)該結(jié)束執(zhí)行。

并行化編程一般可以理解為多個(gè)線程的創(chuàng)建和并行化編程,并行化編程的東西很多,但他們都會(huì)有兩個(gè)必須的規(guī)定:1、程序執(zhí)行模型。2、存儲(chǔ)模型。

程序執(zhí)行模型,他規(guī)定了并行化線程的執(zhí)行方式,規(guī)則,或者說(shuō)邏輯結(jié)構(gòu)。openMP的執(zhí)行采用了Fork-Join模型。主線程在執(zhí)行過(guò)程中遇到要并行處理的部分,根據(jù)openMP的編譯指導(dǎo)語(yǔ)句來(lái)創(chuàng)建,執(zhí)行多個(gè)線程,創(chuàng)建的線程個(gè)數(shù)一般與計(jì)算機(jī)的核心數(shù)成正比,可以通過(guò)添加一個(gè)環(huán)境變量(OMP_NUM_THREADS)來(lái)規(guī)定創(chuàng)建線程的個(gè)數(shù),注意環(huán)境變量添加后要注銷或者重啟系統(tǒng)才會(huì)生效。

image

圖1 omp程序執(zhí)行模型

存儲(chǔ)模型,omp針對(duì)的是一個(gè)計(jì)算機(jī)或者分布式計(jì)算機(jī)的并行,在一臺(tái)計(jì)算機(jī)上他采用共享存儲(chǔ)的方式,多個(gè)線程共享一塊進(jìn)程的內(nèi)存資源。

下面先寫個(gè)程序例子,能讓大家有個(gè)初步認(rèn)識(shí)。這個(gè)程序是在VS2008中編譯的,項(xiàng)目類型為Win32ConsoleApplication。

例1、并行HelloWorld程序

#include <stdio.h>
#include "omp.h"
int main(int argc, char* argv[])
{
printf("Hello World! Serial Begin./n");
#pragma omp parallel //開(kāi)始并行執(zhí)行
{ printf("Hello World! Parallel/n"); }
printf("Hello World! Serial again./n");
return 0;
}

此程序編譯之前,還需要你對(duì)你的編譯器項(xiàng)目屬性設(shè)置一下。這里我們以VS2008為例,首先設(shè)置項(xiàng)目支持openMP。右擊項(xiàng)目->屬性->C/C++->語(yǔ)言->openMP支持修改為是,如圖2所示,然后代碼生成修改為多線程調(diào)試,如圖3所示。執(zhí)行結(jié)果如圖4所示。

image

圖2、添加openMP支持

image

圖3、多線程調(diào)試支持

image

圖4、執(zhí)行結(jié)果

以上程序我并沒(méi)有設(shè)置環(huán)境變量,因?yàn)槲业挠?jì)算機(jī)是雙核的,所以他的并行部分輸出了兩行Hello World! Parallel,這說(shuō)明他有兩個(gè)線程執(zhí)行并行部分,每個(gè)線程完全執(zhí)行了相同的一段程序。我們?cè)谠O(shè)置一下環(huán)境變量后在執(zhí)行一下。順便說(shuō)明一下怎樣設(shè)置環(huán)境變量。

計(jì)算機(jī)右擊-》屬性-》高級(jí)-》環(huán)境變量-》系統(tǒng)變量-》新建。。。如圖5所示。

image

圖5、Win7環(huán)境下設(shè)置環(huán)境變量

設(shè)置完環(huán)境后,注銷或重啟系統(tǒng)后,再次執(zhí)行例1的程序后得到的結(jié)果中 Hello World! Parallel 將被執(zhí)行四遍。因?yàn)槟阋呀?jīng)設(shè)置了四個(gè)線程了。

到現(xiàn)在為止,大家可以模仿著例1寫幾個(gè)小程序了,可是還有一句話大家可能還不大明白吧,#pragma omp parallel這句話標(biāo)記{}中的程序?qū)⒃贠MP_NUM_THREADS個(gè)線程中執(zhí)行。

在下面的幾篇文章中我將繼續(xù)講解openMP編程的基礎(chǔ)知識(shí)。歡迎繼續(xù)關(guān)注。

openMP編程探索1——編程基礎(chǔ)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日本不卡1| 韩国日本一级毛片免费视频 | 欧美伊人 | 天天干天天操天天添 | 欧美毛片免费看 | 亚洲天堂久久 | 国产精品一级片 | 最新69成人精品毛片 | 欧美一级毛片免费大全 | 能在线观看的一区二区三区 | 91久久视频 | 日本成片网| 中文在线亚洲 | 二区三区 | 理论片毛片 | 欧美aⅴ在线| 亚洲美女视频在线观看 | 网红被免费网站视频在线 | 久久一区 | 日本一级毛片中文字幕 | 久久se精品一区二区影院 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 日本不卡在线一区二区三区视频 | 久青草免费视频手机在线观看 | 亚洲免费一级片 | 亚洲国产精品线观看不卡 | 亚洲视频在线观 | 国产精彩视频在线 | 亚洲一区二区影院 | 精品一区二区乱码久久乱码 | 尹人香蕉网 | 亚洲天天干 | 2020久久精品永久免费 | 国内成人免费视频 | 亚洲精品综合 | 国内视频在线 | 国产精品精品视频 | 人人揉人人爽五月天视频 | 日韩中文精品亚洲第三区 | 日日干天天| 6080一级毛片|