OpenMP là một tập hợp các chỉ thị trình biên dịch cũng như một API cho các chương trình được viết bằng C, C ++ hoặc FORTRAN cung cấp hỗ trợ cho lập trình song song trong môi trường bộ nhớ dùng chung. OpenMP xác định các vùng song song là các khối mã có thể chạy song song. Các nhà phát triển ứng dụng chèn các chỉ thị trình biên dịch vào mã của họ tại các vùng song song và các chỉ thị này hướng dẫn thư viện thời gian chạy OpenMP thực thi vùng song song. Chương trình C sau minh họa một chỉ thị trình biên dịch phía trên vùng song song chứa câu lệnh printf () -
#include <omp.h> #include <stdio.h> int main(int argc, char *argv[]){ /* sequential code */ #pragma omp parallel{ printf("I am a parallel region."); } /* sequential code */ return 0; }
Khi OpenMP gặp chỉ thị
#pragma omp parallel
Nó tạo ra bao nhiêu luồng là lõi xử lý trong hệ thống. Do đó, đối với hệ thống lõi kép, hai luồng được tạo ra, đối với hệ thống lõi tứ, bốn luồng được tạo; và kể từ đó trở đi. Sau đó, tất cả các luồng đồng thời thực hiện vùng song song. Khi mỗi luồng thoát ra khỏi vùng song song, nó sẽ bị kết thúc. OpenMP cung cấp một số chỉ thị bổ sung để chạy các vùng mã song song, bao gồm cả các vòng lặp song song.
Ngoài việc cung cấp các chỉ thị cho song song, OpenMP cho phép các nhà phát triển lựa chọn giữa một số cấp độ song song. Ví dụ:họ có thể đặt số lượng chủ đề theo cách thủ công. Nó cũng cho phép các nhà phát triển xác định xem dữ liệu được chia sẻ giữa các luồng hay là riêng tư đối với một luồng. OpenMP có sẵn trên một số trình biên dịch mã nguồn mở và thương mại cho các hệ thống Linux, Windows và Mac OS X.