Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

OpenMP คืออะไร?


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