亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OpenMP并行程序設計方法是什么

發布時間:2021-11-17 16:21:01 來源:億速云 閱讀:146 作者:iii 欄目:web開發

本篇內容主要講解“OpenMP并行程序設計方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“OpenMP并行程序設計方法是什么”吧!

在VC8.0中項目的屬性對話框中,左邊框里的“配置屬性”下的“C/C++”下的“語言”頁里,將OpenMP支持改為“是/(OpenMP)”就可以支持OpenMP了。

先看一個簡單的使用了OpenMP程序

int main(int argc, char* argv[]) { #pragma omp parallel for      for (int i = 0; i < 10; i++ )      {          printf("i = %d/n", i);      }      return 0; } 這個程序執行后打印出以下結果: i = 0 i = 5 i = 1 i = 6 i = 2 i = 7 i = 3 i = 8 i = 4 i = 9

可見for 循環語句中的內容被并行執行了。(每次運行的打印結果可能會有區別)

這里要說明一下,#pragma omp parallel for 這條語句是用來指定后面的for循環語句變成并行執行的,當然for循環里的內容必須滿足可以并行執行,即每次循環互不相干,后一次循環不依賴于前面的循環。

有關#pragma omp parallel for 這條語句的具體含義及相關OpenMP指令和函數的介紹暫時先放一放,只要知道這條語句會將后面的for循環里的內容變成并行執行就行了。

 將for循環里的語句變成并行執行后效率會不會提高呢,我想這是我們最關心的內容了。下面就寫一個簡單的測試程序來測試一下:

void test() {      int a = 0;      clock_t t1 = clock();      for (int i = 0; i < 100000000; i++)      {          a = i+1;      }      clock_t t2 = clock();      printf("Time = %d/n", t2-t1); }   int main(int argc, char* argv[]) {      clock_t t1 = clock(); #pragma omp parallel for      for ( int j = 0; j < 2; j++ ){          test();      }      clock_t t2 = clock();      printf("Total time = %d/n", t2-t1);        test();      return 0; }   在test()函數中,執行了1億次循環,主要是用來執行一個長時間的操作。 在main()函數里,先在一個循環里調用test()函數,只循環2次,我們還是看一下在雙核CPU上的運行結果吧: Time = 297 Time = 297 Total time = 297 Time = 297

可以看到在for循環里的兩次test()函數調用都花費了297ms, 但是打印出的總時間卻只花費了297ms,后面那個單獨執行的test()函數花費的時間也是297ms,可見使用并行計算后效率提高了整整一倍。

到此,相信大家對“OpenMP并行程序設計方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

峨眉山市| 福鼎市| 彭水| 阜阳市| 南丹县| 万盛区| 西峡县| 福鼎市| 贺兰县| 云梦县| 满城县| 舞阳县| 拉孜县| 四平市| 武鸣县| 石景山区| 惠来县| 开远市| 宁强县| 南澳县| 富民县| 甘泉县| 华坪县| 阿勒泰市| 镶黄旗| 定陶县| 高州市| 万安县| 中江县| 金溪县| 长阳| 西畴县| 锡林郭勒盟| 彭泽县| 健康| 额济纳旗| 永寿县| 桃源县| 康平县| 仪陇县| 温州市|