CUDA

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
תרשים זרימה של תהליך העיבוד

CUDA (ראשי תיבות של Compute Unified Device Architecture – ארכיטקטורת מחשב מאוחדת התקנים) הנה ארכיטקטורת מחשוב מקבילי שפותחה על ידי חברת NVIDIA. החברה, אשר מפתחת מעבדים גרפיים, פיתחה את סביבת CUDA כדי לאפשר לקהילת מתכנתי ומדעני המחשב לפתח ולהריץ תוכניות מחשב בעזרת כרטיסי GPU. התכנות עצמו מתבצע בעזרת שימוש בשפת C for CUDA. סביבת CUDA מאפשרת למפתחים גישה לזיכרון ההתקן, ולסט הפקודות של המכונה הווירטואלית, המכילה אלמנטים חישוביים. סביבת CUDA מיועדת למשימות עיבוד מקבילי מסיבי (Massively Parallel Programming).

CUDA מייצגת את הדור החדש של שפות התכנות אשר מיועדות לתכנות מקבילי. עד שנת 2007, השנה שבה הופצה הגרסה הראשונה של סביבת הפיתוח CUDA, היה על המתכנת להשתמש בממשק התוכנה OpenGL. בעזרת מנגנון מיוחד הצליחו שני היצרנים המובילים בתחום: חברת NVIDIA וחברת ATI (החל מ-2006, חברת AMD) לאפשר הפעלת תוכניות מחשב מקביליות, הכתובות בשפת התכנות GLSL (קיצור של OpenGL Shading Language), על גבי חומרה מסוג GPUs. ממשק תוכנה זה הנו קשה לתכנות, וקהילת המפתחים אשר השתמשה בממשק זה, נותרה מצומצמת. הופעתה של CUDA, אפשרה לקהילת המדענים, בפעם הראשונה, לייצר תוכניות מחשב אשר רצות על חומרה מקבילית מסוג GPUs בשפת תכנות המתאימה לחישוב מדעי-מתמטי.

התכנות בסביבת CUDA, ובעיקר בשפת התכנות C for CUDA, מורכב משני אלמנטי תוכנה עיקריים:

  • הקוד המתמטי-מדעי, הנכתב בשפת C for CUDA ומכיל את הגרעין (באנגלית Kernels) החישובי.
  • קוד המעטפת (בדרך כלל בשפת C) אשר אחראי להקצאות ושחרור זיכרון, העתקות יחידות מידע אל ההתקן ומן ההתקן חזרה אל המחשב המארח, והפעלת גרעיני החישוב.

סביבת הפיתוח כוללת את המרכיבים הבאים:

  • מהדר (Compiler) בשם nvcc (קיצור של NVIDIA Cuda Compiler)
  • ממשק תוכנה (סט קובצי C header files) וספריות תוכנה.
  • מנהל התקן (driver)
  • סביבת הרצה: CUDA תומכת במערכות ההפעלה: Microsoft Windows, לינוקס ו-Mac OS.

באופן טבעי, סביבת CUDA אשר פותחה על ידי חברת NVIDIA, מסוגלת לרוץ אך ורק על חומרה מסוג GPU אשר מיוצרת על ידי החברה. בחודש נובמבר 2008, הגדירו קבוצת חוקרים ואנשי תעשייה בכירים, החברים בקבוצת Khronos Group סביבת תכנות מקבילי העונה לשם OpenCL (קיצור של Open Computing Language). סביבה זו מהווה מתחרה עיקרית לסביבת CUDA, מכיוון שהיא מאפשרת הרצת תוכניות מקביליות על חומרה הטרוגנית, כגון: CPU‏, GPU‏, DSP, ו-FPGA.

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

  • CUDA באתר NVIDIA
  • OpenCL באתר קבוצת Khronos