کودا
کودا به انگلیسی (CUDA) که مخفف عبارت انگلیسی Compute Unified Device Architecture است یک سکوی پردازش موازی و مدل برنامه‌نویسی است که توسط شرکت انویدیا به‌وجود آمده‌است و در واحدهای پردازش گرافیکی این شرکت پشتیبانی می‌شود. کودا به توسعه دهنده گان نرم‌افزار اجازه می‌دهد تا از یک GPU که ویژگی CUDA-enabled دارد برای هدف پردازش استفاده کنند، رویکردی که واحد پردازش گرافیکی همه منظوره (GPGPU) شناخته می‌شود. کودا به توسعه‌دهنده گان امکان دسترسی مستقیم به حافظه و مجموعه دستورالعمل در واحد پردازش گرافیکی را می‌دهد.
سکوی کودا برای کار با زبان‌های برنامه‌نویسی مانند C و ++C و فرترن طراحی شده‌است. این دسترسی باعث می‌شود تا برای متخصصان استفاده از منابع GPU آسان‌تر شود برخلاف راه کارهای API دیگر چون DIRECT3D و OpenGL که نیاز به توانایی حرفه‌ای در برنامه‌نویسی گرافیک داشتند. همچین کودا از چارچوب‌هایی چون OpenACC و OpenCL پشتیبانی می‌کند.
GPU به عنوان یک پردازنده خاص، درخواست‌های‌های بلادرنگ با کیفیت بالا گرافیک سه بعدی که از نظر وظایف محاسباتی فشرده هستند را مختصات‌دهی می‌کند. از سال ۲۰۱۲ میلادی GPUها به سیستم‌های چند هسته ای قدرتمندی ارتقا یافتند که قادر به دستکاری بلوک‌های بزرگی از داده‌ها هستند. این طراحی بسیار از هدف عامه CPU‌ها برای الگوریتم‌ها در مواقعی که پردازش موازی روی بلوک‌های داده انجام می‌شود مؤثرتر است. به عنوان مثال:
کودا توسط کتابخانه‌های مجهز شده کودا ،دستوردهنده کامپایلر مانند OpenACC و همین‌طور توسعه‌هایی استاندارد صنعتی از زبان‌هایی شامل C، ++C و فرترن برای توسعه‌دهندگان قابل دسترسی است. برنامه‌نویسان C++/C از '++CUDA C/C' استفاده می‌کنند که کامپایل شده با "nvcc" است.nvcc یک کامپایلر C++/C بر پایه LLVM شرکت انویدیا است. برنامه نویسان فرترن نیز می‌توانند از 'CUDA Fortran' استفاده کنند که کامپایل شده با PGI CUDA Fortran Complier شرکت The Portland Group است. علاوه بر کتابخانه‌ها، دستوردهنده‌های کامپایلر و ++CUDA C/C و CUDA Fortran، سکو کودا از سایر رابط‌های محاسباتی شامل موارد زیر پشتیبانی می‌کند. همچنین لفافه سوم شخص (Third party wrappers) برای زبان‌هایی مانند پرل (Perl)، پایتون (Python)، آر (R) ،فرترن (FORTRAN)، جاوا (Java)، روبی (Ruby)، هسکل (Haskell)، متلب (Matlab) ،آی دی ال (IDL)، لوآ (Lua) و نیز به‌طور پیشفرض متمتیکا (Mathematica) در دسترس هستند.
در صنعت بازی‌های کامپیوتری ،GPUها تنها برای رندر کردن گرافیک نیست بلکه در محاسبات فیزیکی بازی (اثرات فیزیکی شبیه دود، آتش، ترشحات و آوار) نیز هستند. مثال‌هایی نظیر فیز-اکس و گلوله شامل این مورد هستند. کودا همچنین برای کاربردهای شتاب‌دهی غیر گرافیکی در زیست‌شناسی محاسباتی ،رمزنگاری و حوزه‌های دیگر نیز استفاده می‌شود.
کودا هم یک API سطح پایین و هم یک API سطح بالا فراهم می‌کند. SDK اولیه کودا در ۱۵ فوریه ۲۰۰۷ برای ویندوز مایکروسافت و لینوکس انتشار عمومی شد. پشتیبانی در سیستم‌عامل مک در نسخه دوم اضافه شد که جای نسخه تست ۱۴ فوریه ۲۰۰۸ را می‌گیرد. کودا با تمامی GPUهای از سری G8x به بعد شامل جی‌فورس ،کوادرو و تسلا (گرافیک) کار می‌کند. کودا با بیشتر سیستم‌عامل‌های استاندارد کار می‌کند. انویدیا می‌گوید برنامه‌هایی که برای سری G8x توسعه‌یافته‌اند همچنین بدون تغییر روی نسل‌های آینده کارت‌های گرافیک بسته به سازگاری دودویی کارخواهند کرد.
کودا چندین برتری در برابر محاسبات عمومی سنتی روی GPUها (در کل منظور GPGPU) که از واسط‌های گرافیکی استفاده می‌کنند، دارد.
جدول قدرت محاسبه (نسخه‌های پشتیبانی شده کودا) مرتب شده با GPU و کارت گرافیک که همچنین از طریق انویدیا مستقیماً قابل دسترسی است. '*' - OEM- محصولات به تنهایی
دستگاه‌هایی که کودا را پشتیبانی می‌کنند:
جهت مطالعه تخصصی در مورد نسخه‌های مختلف و مقایسه دقیق آن‌ها به مقاله زبان اصلی مراجعه کنید.
این نمونه کد به زبان ++C یک بافت را از یک عکس به یک آرایه در GPU بارگذاری(Load) می‌کند.
texture tex;
void foo()
} //end foo()
__global__ void kernel(float* odata, int height, int width)