開始學習openMP遇到的問題

來源:互聯網
上載者:User

最近開始學習openMP,OpenMP提供對於並行描述的高層抽象降低了並行編程的難度和複雜度,這樣程式員可以把更多的精力投入到並行演算法本身,而非其具體實現細節。

openMP經常與MPI同時提到,這兩個的區別在於openMP針對單機上的多核環境,而MPI主要目的是協調主機間的並行運算,兩者抽象的粒度不同。

初次寫openMP程式,會遇到很多問題,現在我慢慢的整理匯總自己遇到的問題,給自己做個筆記也可以協助其他入門人員儘早解決問題。

開發環境linux ubuntu,編譯環境gcc

1. openMP內建一些庫函數,常用的有omp_get_num_threads, omp_get_thread_num, 這些庫函數存在於 omp.h中 

在代碼開始處添加 #include<omp.h> 即可使用這些庫函數 

2.使用gcc編譯openMP檔案

gcc -o XXX  YYY.c -fopenmp

gcc -o 選項 將輸入的檔案yyy.c編譯成一個名為xxx的二進位可執行程式

-fopen 參數用來識別openmp檔案

3.運行產生的可執行程式 使用命令 ./  ,跟運行shell指令碼一樣

4.使用#pragma omp parall sections 可以指定不同的部分運行於不同的核,每套sections佔用全部的核去分配

eg.

#pragma omp parallel sections
{
#pragma omp section
{printf("1 threadID=%d\n", omp_get_thread_num());}
#pragma omp section
{printf("2 threadID=%d\n", omp_get_thread_num());}
#pragma omp section
{printf("3 threadID=%d\n", omp_get_thread_num());}
#pragma omp section
{printf("4 threadID=%d\n", omp_get_thread_num());}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.