CUDA

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

CUDA מייצגת את הדור החדש של שפות התכנות אשר מיועדות לתכנות מקבילי. 

היסטוריה
מעבד גרפי (GPU) נוצר במענה לדרישות של משימות עתירות מחשוב בזמן אמת של גרפיקת תלת-ממד ברזולוציה גבוהה, שהכבידו על מעבד CPU רגיל. בשנת 2000 יצר איאן באק באוניברסיטת סטנפורד מתקן גיימינג באמצעות 32 כרטיסי GeForce, ולאחר מכן השיג מענק מ-DARPA לביצוע תכנות מקבילי למטרות כלליות על מעבדים גרפיים (GPGPU). לאחר מכן הצטרף באק ל-אנבידיה, שם מאז 2004 הוא מפקח על פיתוח CUDA. בדחיפה ל-CUDA, שפורסם בשנת 2006, מנכ"ל Nvidia ג'נסן הואנג כיוון שמעבדי Nvidia יהפכו לחומרה כללית למחשוב מדעי. עם התפתחות עולמות הבינה המלאכותית, בסביבות 2015 השתנה המוקד של CUDA לרשתות נוירונים.

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

ב-2012 מעבדי GPU התפתחו למערכות מרובות ליבות מקבילות, המאפשרות עיבוד יעיל של בלוקים גדולים של נתונים. עיצוב זה יעיל יותר מיחידות עיבוד מרכזיות (CPU) עבור אלגוריתמים במצבים שבהם עיבוד בלוקים גדולים של נתונים מתבצע במקביל, כגון:
 פונקציות גיבוב קריפטוגרפיות
 למידת מכונה
 סימולציות דינמיקה מולקולרית
 סימולציה של מערכות פיזיקליות.

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

תכנות בסביבת CUDA
שמאל|ממוזער|250px|תרשים זרימה של תהליך העיבוד
התכנות בסביבת CUDA מורכב משני אלמנטי תוכנה עיקריים:
 הקוד המתמטי-מדעי, הנכתב בשפות תכנות פופולריות כגון C, , Fortran, פייתון ו-MATLAB, ומכיל את הגרעין (באנגלית Kernels) החישובי.
 קוד המעטפת (בדרך כלל בשפת C) אשר אחראי להקצאות ושחרור זיכרון, העתקות יחידות מידע אל ההתקן ומן ההתקן חזרה אל המחשב המארח, והפעלת גרעיני החישוב.

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

 ראו גם 
 GPGPU

 קישורים חיצוניים 



הערות שוליים

קטגוריה:ארכיטקטורת מחשב
קטגוריה:Nvidia