Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

OpenMP là gì?

Giới thiệu

OpenMP (Open Multi-Processing) là bộ chỉ thị trình biên dịch và API cho C/C++/Fortran, hỗ trợ lập trình song song trên môi trường bộ nhớ chung (shared-memory).

Cơ chế hoạt động

  • Nhà phát triển chèn chỉ thị #pragma omp parallel vào vùng code có thể chạy song song
  • Thư viện runtime OpenMP tạo nhóm luồng (team of threads) và thực thi vùng đó song song
  • Số luồng mặc định = số lõi CPU (có thể đặt thủ công)
  • Hỗ trợ: song song hóa vòng lặp, đồng bộ, dữ liệu shared/private, reduction

Ví dụ cơ bản

#include <omp.h>
#include <stdio.h>

int main() {
    /* Code tuần tự */
    #pragma omp parallel
    {
        printf("I am a parallel region.\n");
    }
    /* Code tuần tự */
    return 0;
}

Kết quả (ví dụ 4 lõi)

I am a parallel region.
I am a parallel region.
I am a parallel region.
I am a parallel region.

Các chỉ thị phổ biến

Chỉ thịMô tả
#pragma omp parallelTạo vùng song song
#pragma omp forSong song hóa vòng lặp
#pragma omp criticalVùng critical section
#pragma omp atomicThao tác nguyên tử
#pragma omp barrierRào cản đồng bộ
#pragma omp singleChỉ 1 luồng thực thi

Hỗ trợ trình biên dịch

  • GCC: -fopenmp
  • Clang: -fopenmp
  • MSVC: /openmp
  • Intel ICC: -qopenmp

Hệ điều hành: Linux, Windows, macOS.