Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 下 OpenMP 多線程編程關鍵指令語法與編譯實例完整指南

編輯:關於 Linux

OpenMP 以編譯器指令實現共享記憶體多線程並行,支援 C/C++/Fortran。本文彙整核心指令語法、API 函數與 GCC 編譯實例。

核心指令語法

#include 

#pragma omp parallel for
#pragma omp for reduction(+: var)
#pragma omp critical { ... }
#pragma omp parallel for private(x,y)
#pragma omp parallel for schedule(static|dynamic|guided, k)
#pragma omp parallel sections { #pragma omp section ... }
#pragma omp parallel { #pragma omp master/single { ... } }
#pragma omp barrier / nowait
#pragma omp parallel for firstprivate(var) / lastprivate(var)

常用 API 函數

omp_get_num_threads()        // 獲取當前線程數
omp_set_num_threads(n)       // 設定線程數
omp_get_thread_num()         // 獲取當前線程 ID
omp_get_num_procs()          // 獲取可用核心數

編譯與運行範例 (Ubuntu)

// omp.c
#include 
int main() {
  int rank, size;
  #pragma omp parallel num_threads(3) private(rank)
  {
    rank = omp_get_thread_num();
    size = omp_get_num_threads();
    printf("using %d of %d now.\n", rank, size);
  }
  return 0;
}

// 編譯
gcc -fopenmp -o omp omp.c

// 運行
./omp

Ubuntu 無需額外包含 omp.h,僅需編譯加 -fopenmp 即可啟用 OpenMP 支援。

Copyright © Windows教程網 All Rights Reserved