ओपनएमपी संकलक निर्देशों का एक सेट है और साथ ही सी, सी ++, या फोरट्रान में लिखे गए कार्यक्रमों के लिए एक एपीआई है जो साझा-स्मृति वातावरण में समानांतर प्रोग्रामिंग के लिए समर्थन प्रदान करता है। OpenMP समानांतर क्षेत्रों को कोड के ब्लॉक के रूप में पहचानता है जो समानांतर में चल सकते हैं। एप्लिकेशन डेवलपर समानांतर क्षेत्रों में अपने कोड में कंपाइलर निर्देश सम्मिलित करते हैं, और ये निर्देश OpenMP रन-टाइम लाइब्रेरी को क्षेत्र को समानांतर में निष्पादित करने का निर्देश देते हैं। निम्नलिखित सी प्रोग्राम समानांतर क्षेत्र के ऊपर एक कंपाइलर निर्देश दिखाता है जिसमें प्रिंटफ () कथन होता है -
#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; }
जब OpenMP निर्देश का सामना करता है
#pragma omp parallel
यह कई धागे बनाता है जो सिस्टम में कोर को संसाधित कर रहे हैं। इस प्रकार, एक डुअल-कोर सिस्टम के लिए, दो थ्रेड बनाए जाते हैं, क्वाड-कोर सिस्टम के लिए, चार बनाए जाते हैं; इत्यादि। फिर सभी धागे समानांतर क्षेत्र को एक साथ निष्पादित करते हैं। जब प्रत्येक धागा समानांतर क्षेत्र से बाहर निकलता है, तो इसे समाप्त कर दिया जाता है। OpenMP समानांतर में कोड क्षेत्रों को चलाने के लिए कई अतिरिक्त निर्देश प्रदान करता है, जिसमें समानांतर लूप शामिल हैं।
समानांतरकरण के लिए निर्देश प्रदान करने के अलावा, ओपनएमपी डेवलपर्स को समानता के कई स्तरों में से चुनने की अनुमति देता है। उदाहरण के लिए, वे मैन्युअल रूप से थ्रेड्स की संख्या सेट कर सकते हैं। यह डेवलपर्स को यह पहचानने की भी अनुमति देता है कि डेटा थ्रेड के बीच साझा किया जाता है या थ्रेड के लिए निजी है। OpenMP Linux, Windows और Mac OS X सिस्टम के लिए कई ओपन-सोर्स और कमर्शियल कंपाइलर पर उपलब्ध है।