OpenMP คือชุดของคำสั่งคอมไพเลอร์ เช่นเดียวกับ API สำหรับโปรแกรมที่เขียนด้วย C, C++ หรือ FORTRAN ที่ให้การสนับสนุนสำหรับการเขียนโปรแกรมแบบขนานในสภาพแวดล้อมหน่วยความจำที่ใช้ร่วมกัน OpenMP ระบุขอบเขตคู่ขนานเป็นบล็อกของโค้ดที่อาจทำงานแบบขนาน นักพัฒนาแอปพลิเคชันแทรกคำสั่งคอมไพเลอร์ลงในโค้ดของตนที่ขอบเขตคู่ขนาน และคำสั่งเหล่านี้จะสั่งให้ไลบรารีรันไทม์ของ OpenMP ดำเนินการในภูมิภาคแบบขนาน โปรแกรม C ต่อไปนี้แสดงคำสั่งคอมไพเลอร์เหนือพื้นที่คู่ขนานที่มีคำสั่ง 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; }
เมื่อ OpenMP พบกับคำสั่ง
#pragma omp parallel
มันสร้างเธรดจำนวนมากซึ่งเป็นแกนประมวลผลในระบบ ดังนั้นสำหรับระบบดูอัลคอร์จะมีการสร้างสองเธรดสำหรับระบบควอดคอร์สี่เธรดถูกสร้างขึ้น และอื่นๆ จากนั้นเธรดทั้งหมดจะดำเนินการพื้นที่คู่ขนานพร้อมกัน เมื่อแต่ละเธรดออกจากขอบเขตคู่ขนาน เธรดจะสิ้นสุดลง OpenMP ให้คำสั่งเพิ่มเติมหลายประการสำหรับการรันขอบเขตโค้ดแบบขนาน รวมถึงการวนซ้ำแบบขนาน
นอกเหนือจากการจัดเตรียมคำสั่งสำหรับการทำให้ขนานกัน OpenMP ยังช่วยให้นักพัฒนาสามารถเลือกระหว่างหลายระดับของการขนาน เช่น สามารถกำหนดจำนวนเธรดได้ด้วยตนเอง นอกจากนี้ยังช่วยให้นักพัฒนาสามารถระบุได้ว่าข้อมูลจะถูกแบ่งปันระหว่างเธรดหรือเป็นข้อมูลส่วนตัวของเธรด OpenMP มีอยู่ในคอมไพเลอร์โอเพนซอร์สและคอมไพเลอร์เชิงพาณิชย์หลายตัวสำหรับระบบ Linux, Windows และ Mac OS X