کودا (CUDA) یک سکوی پردازش موازی و مدل برنامهنویسی است که توسط شرکت انویدیا بهوجود آمده است و در واحدهای پردازش گرافیکی این شرکت پشتیبانی میشود.کودا به توسعه دهنده گان نرمافزار اجازه میدهد تا از یک GPU که ویژگی CUDA-enabled دارد برای هدف پردازش استفاده کنند، رویکردی که GPGPU شناخته میشود. کودا به توسعهدهنده گان امکان دسترسی مستقیم به حافظه و مجموعه دستورالعمل در واحد پردازش گرافیکی را میدهد.
سکوی کودا برای کار با زبانهای برنامهنویسی مانند C و ++C و فرترن طراحی شدهاست.این دسترسی باعث میشود تا برای متخصصان استفاده از منابع GPU آسانتر شود برخلاف راه کار های API دیگر چون DIRECT3D و OpenGL که نیاز به توانایی حرفه ای در برنامه نویسی گرافیک داشتند.همچین کودا از چارچوبهایی چون OpenACC و OpenCL پشتیبانی می کند.
کودا توسط کتابخانههای مجهز شده کودا ،دستوردهنده کامپایلر مانند 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 ،سکو کودا از سایر رابطهای محاسباتی شامل موارد زیر پشتیبانی می کند.
OpenCL گروه Khronos
DirectCompute مایکروسافت
محاسبات سایه زنی OpenGL
C++ AMP
همچنین لفافه سوم شخص (Third party wrappers) برای زبان هایی مانند پرل (Perl)،پایتون (Python)،آر (R) ،فرترن (FORTRAN)،جاوا (Java)،روبی (Ruby)،هسکل (Haskell)،متلب (Matlab) ،آی دی ال (IDL)،لوآ (Lua) و نیز به طور پیشفرض متمتیکا (Mathematica) در دسترس هستند.
در صنعت بازیهای کامپیوتری ،GPUها تنها برای رندر کردن گرافیک نیست بلکه در محاسبات فیزیکی بازی (اثرات فیزیکی شبیه دود ،آتش ،ترشحات و آوار) نیز هستند.مثالهایی نظیر فیز-اکس و گلوله شامل این مورد هستند.کودا همچنین برای کاربردهای شتابدهی غیرگرافیکی در زیستشناسی محاسباتی ،رمزنگاری و حوزه های دیگر نیز استفاده میشود.
کودا هم یک API سطح پایین و هم یک API سطح بالا فراهم می کند.SDK اولیه کودا در 15 فوریه 2007 برای ویندوز مایکروسافت و لینوکس انتشار عمومی شد.پشتیبانی در سیستمعامل مک در نسخه دوم اضافه شد که جای نسخه تست 14 فوریه 2008 را میگیرد.کودا با تمامی GPUهای از سری G8x به بعد شامل جیفورس ،کوادرو و تسلا(گرافیک) کار میکند.کودا با بیشتر سیستمعاملهای استاندارد کار میکند.انویدیا میگوید برنامههایی که برای سری G8x توسعهیافتهاند همچنین بدون تغییر روی نسلهای آینده کارتهای گرافیک بسته به سازگاری دودویی کارخواهند کرد.
کودا چندین برتری در برابر محاسبات عمومی سنتی روی GPU ها (در کل منظور GPGPU) که از واسطهای گرافیکی استفاده میکنند، دارد.
خواندن پراکنده یعنی کد میتواند از آدرسهای دلخواه در حافظه بخواند.
حافظه مجازی یکپارچه (کودا نسخه 4.0 به بعد)
حافظه یکپارچه (کودا نسخه 6.0 به بعد)
حافظه مشترک کودا ناحیه ای که یک حافظه سریع مشترک است، نشان میدهد که میتواند میان نخها به اشتراک گذاشته شود. این حافظه میتواند به عنوان یک حافظه نهان مدیریت شده تحت دسترسی کاربر استفاده شود و پهنای باند بیشتری داریم یعنی امکان استفاده را از جستجو بافتی.
دانلودهای سریع تر و مجدد خوانی (بازخوانی)
پشتیبانی کامل برای اعداد صحیح و عملیات بیتی، شامل جستجوی بافتی صحیح