پاسخ کوتاه:

هسته‌های CUDA در کارت‌های گرافیک انویدیا، واحدهای پردازشی موازی هستند که محاسبات ریاضی پیچیده (مانند عملیات شناور) را سریع‌تر از CPU انجام می‌دهند. وظیفه اصلی آن‌ها اجرای وظایف گرافیکی و محاسباتیِ موازی، نظیر رندر کردن صحنه‌های سه‌بعدی، پردازش داده‌های تصویری یا اجرای الگوریتم‌های یادگیری ماشینی است. 

 

عبارت CUDA همیشه یکی از متفاوت‌ترین و مهم‌ترین قسمت‌های اطلاعات فنی کارت‌های گرافیک‌ شرکت انویدیا Ndivia بوده و برخی کاربران به درستی نمی‌دانند که هسته کودا دقیقاً چیست و چه تاثیری در سرعت بازی‌ها دارد. به همین خاطر در ادامه این مطلب از شهر سخت افزار به صورت خلاصه به هسته‌ CUDA پرداخته و از تاثیر آن در بازی‌ها برای شما خواهیم گفت.

اگر شما هم به دنبال خرید کارت گرافیک بوده و به سراغ برندهای انویدیا رفته باشید در مشخصات این کارت‌های گرافیک با عبارت CUDA برخورد کرده‌اید. اما این هسته کودا به چه معنا بوده و چه نقشی در عملکرد کارت گرافیک دارند، موضوعی است که در این مطلب از شهر سخت افزار بدان پرداخته شده است.

فهرست مطالب این مقاله:

- عملکرد پردازنده گرافیکی به چه صورت است؟
- هسته‌ CUDA چیست؟
- تاثیر هسته‌های کودا روی سرعت بازی‌ها
- چه تعداد هسته‌ کودا نیاز است؟

تمامی پردازنده‌های گرافیکی فارغ از اینکه متعلق به کدام برند هستند، معمولاً عملکرد یکسانی دارند. پردازنده‌های گرافیکی شرکت‌های انویدیا و اینتل و AMD هر سه دارای اجزاهای کلیدی مشابهی بوده و از طراحی تقریباً مشابهی بهره می‌برند.

Cuda چیست

اما شرکت‌های سازنده نظیر انویدیا تمایل دارند که از عبارت‌های منحصر به فرد برای متمایز کردن کارت گرافیک‌های خود از محصولات شرکت‌های رقیب مانند AMD استفاده کنند. به همین دلیل شاهد استفاده از عبارت هسته‌های CUDA انویدیا در کارت‌های گرافیک این شرکت هستیم و این در حالی است که AMD در این رابطه از عبارت Compute Unit استفاده می‌کند.

عملکرد پردازنده گرافیکی به چه صورت است؟

اولین چیزی که باید درک کنید، این است که یک پردازنده گرافیکی می‌تواند هزاران و حتی میلیون‌ها دستور را به‌صورت همزمان پردازش کند. یک GPU جهت انجام چنین کاری، به تعداد زیادی هسته‌های کوچک نیاز دارد که به صورت موازی و هم‌زمان این پردازش‌ها را انجام دهند.

البته باید در نظر داشت که هسته‌های کوچک GPU تفاوت‌های بسیاری با هسته‌های بزرگ پردازنده‌ها دارند. به‌ عنوان مثال کارت گرافیک Nvidia RTX 3090 دارای 16384 هسته CUDA است و در مقابل پردازنده رده بالای AMD Threadripper 3970X فقط 64 هسته دارد.

در همین رابطه بخوانید:

- چگونه بهترین کارت گرافیک سازگار با سیستم خود را خریداری کنیم
تفاوت کارت گرافیک GTX با RTX انویدیا

پردازنده‌های گرافیکی و مرکزی (CPU)، تفاوت‌های بسیاری با یکدیگر دارند، زیرا مهندسان آن‌ها را جهت انجام کارهای متفاوتی طراحی کرده‌‎اند. علاوه بر این، برخلاف یک پردازنده معمولی تمامی هسته‌های پردازنده‌های گرافیکی در قالب گروه‌ها و یا خوشه‌ها سازماندهی می‌شوند.

معنی کودا

در نهایت هر گروه از هسته‌های یک پردازنده گرافیکی وظایف متفاوتی را بر عهده دارند تا بدین ترتیب بهتر بتوانند میلیون‌ها دستور را به‌صورت هم‌زمان پردازش کنند. همین انجام پردازش‌ها به‌صورت همزمان، معماری یک پردازنده گرافیکی را مشخص می‌کند. از بارگذاری یک دستورالعمل گرفته تا پردازش آن، یک GPU همه کارهای خود را بر اساس اصول پردازش موازی انجام می‌دهد.

هسته‌ CUDA چیست؟

CUDA مخفف عبارت Compute Unified Device Architecture است، یک مدل زبان برنامه‌ نویسی است که توسط انویدیا ساخته شده است. هدف اصلی این مدل را می‌توان در پردازش موثر دستورات موازی خلاصه کرد.

به وسیله تکنولوژی کودا، برنامه‌نویسان با استفاده از زبان‌های C و ++C یا امثال آن می‌توانند کدها را بدون نیاز به اسمبل شدن به صورت مستقیم برای پردازش به کارت گرافیک ارسال کنند تا سرعت اجرای بازی افزایش یابد.

در همین رابطه بخوانید:

- کدامیک از کارت های گرافیک انویدیا یا AMD عملکرد بهتری دارند؟
فناوری DLSS انویدیا چیست؟

درباره کاربرد هسته کودا باید گفت که این هسته‌ به تنهایی چیزی مشابه با یک هسته‌ پردازنده گرافیکی GPU است، با این تفاوت که نسبت به آن دارای معماری ساده‌تری بوده اما در تعداد بسیار بالاتری درون کارت گرافیک قرار می‌گیرد.

هسته‌های CUDA در مقابل هسته های پردازنده

پردازنده‌های معمول در بازار معمولا چیزی بین 2 تا 16 عدد هسته دارند، اما هسته‌های کودای کارت‌های گرافیک می‌تواند به هزار هم برسد. این مقدار برای کارت گرافیک‌های جدیدتر و قوی‌تر به هزاران هسته نیز می‌رسد.

هسته‌های CUDA در اصل هسته نبوده و انویدیا جهت مقاصد بازاریابی خود، آنها را هسته می‌نامد. در واقع یک هسته CUDA یک عنصر پردازشی بوده که عملیات پردازشی متفاوتی را انجام می‌دهد.

تاثیر هسته‌های CUDA در اجرای بازی‌ها

در پردازش‌های گرافیکی حجم بسیار سنگینی از محاسبات پیچیده به سرعت و به صورت هم‌زمان انجام شود. به همین دلیل است که تعداد زیادی از هسته‌های کودا در کارت‌های گرافیک انویدیا تعبیه شده‌اند. با توجه به معماری متفاوت کارت‌های گرافیک باید درنظر داشت که هسته‌های پردازنده‌های گرافیکی نسبت به هسته‌های پردازنده حجم بسیار کمتر و تعداد بسیار بیشتری دارند.

در همین رابطه بخوانید:

- کارت گرافیک دست دوم بخریم یا نه؟
آموزش تمیز کردن کارت‌ گرافیک

در میان تنظیمات و فناوری‌های مختلف گرافیکی، آن‌هایی که نیاز به پردازش چندین دستور به صورت هم‌زمان دارند بیشترین بهره را از هسته‌های کودا خواهند برد. نورها و سایه‌ها و فیزیک بازی و تکنیک‌های نرم نشان دادن لبه‌های اجسام از جمله این موارد هستند.

کاربرد هسته کودا

چه تعداد هسته‌ کودا نیاز است؟

نکته‌ای که باید در نظر داشته باشید، این است که تنها با یک عدد بخصوصی نمی‌توان عملکرد کارت گرافیگ را بیان کرد. علاوه بر تعداد هسته‌های کودا، عوامل دیگری مثل ظرفیت حافظه‌ رم نیز اهمیت دارد. همچنین بسیار مهم است که کارت گرافیک از لحاظ نرم افزاری برای سیستم عامل و بازی‌های مختلف بهینه شده باشد.

همانطور که گفته شد کارت‌های گرافیک انویدیا سری RTX می‌توانند بالای سه یا حتی چهار هزار هسته‌ی کودا داشته باشند. شکی نیست که قدرت این محصولات بسیار زیاد است، اما بهتر است برای انتخاب کارت گرافیک فاکتور‌های دیگری را مد نظر داشته باشید.

در همین رابطه بخوانید:

- هسته RT در گرافیک انویدیا چیست؟

فرکانس هسته‌ پردازنده، نوع و ظرفیت و سرعت حافظه‌ نیز در کنار هسته‌های کودا اهمیت دارد. در نهایت باید گفت که هسته‌های کودا با پردازش موازی دستورات سنگین، نقشی مهمی در قدرت کارت گرافیک‌های انویدیا ایفا می‌کنند. 

جمع‌بندی و پاسخ به سوالات پرتکرار 

شرکت‌ها تمایل دارند که از اصطلاحات پیچیده برای بازاریابی محصولات خود استفاده کنند. این رویه باعث سردرگمی گیمرها شده تا نتوانند به ویژگی‌های مهم و کلیدی یک محصول بپردازند. هسته CUDA نیز یکی از این عبارات فنی است که در این مطلب از شهر سخت افزار توضیحات مختصری را درباره آن بیان کردیم. همچنین باید در نظر داشت هنگام خرید کارت گرافیک این تنها هسته کودا نیست که باید مورد توجه قرار بگیرد و باید به سراغ سایر مشخصات سخت افزاری کارت گرافیک هم رجوع کرد.

آیا GPU من CUDA دارد؟

CUDA با تمام پردازنده‌های گرافیکی Nvidia از سری G8x به بعد، از جمله GeForce، Quadro، سری Tesla و NVidia GRID کار می‌کند. CUDA همچنین با اکثر سیستم عامل های استاندارد سازگار است.

آیا CUDA برای C یا ++C است؟

کودا یک مدل زبان برنامه‌ نویسی است که توسط انویدیا توسعه داده شده تا برنامه نویسان بتوانند دستورات خود را مستقیماً بر روی هسته‌های کودا اجرا کنند.

آیا CUDA بهتر از CPU است؟

توان پردازشی یک هسته کودا به مراتب کمتر از هسته CPU است.

آیا CUDA یک زبان برنامه نویسی است؟

بله. کودا یک مدل زبان برنامه‌ نویسی است که توسط انویدیا توسعه داده شده و هسته‌های کودا نیز قادر به اجرای دستورات این زبان برنامه نویسی هستند.

نظر خود را اضافه کنید.

ارسال نظر بدون عضویت در سایت

0
نظر شما پس از تایید مدیر منتشر خواهد شد.

نظرات (4)

  • مهمان - سعید مداحی

    سلام. پس اینقدر cuda cuda می کند; بیشتر یک اسم و با جنبه تبلیغاتی است و کلا چیز انحصاری و خاص انویدیا محسوب نمی شود. بقیه اسامی اش که هر یکی دو سال اضافه می شوند هم "تقریبا" همین وضع را دارند. حالا amd که اصولا خیلی ادعایی در هیچ زمینه نمی کند; مغضوب کل دنیاست. چون همه جای دنیا اکثریت عوامند و به کلیشه و کلمات دهان پرکن نگاه می کنند. اصلا کارتهای amd بد; این کنسول ها بدون این همه فناوری انویدیا چطور ری تریسینگ را بهتر از 309ti به گفته مدیر 4A GAMES سازنده بازی سنگین مترو اجرا می کنند؟!...کمی تفکر و تامل باید.(بقول شاعر)

  • مهمان - SajjadKhati

    در پاسخ به: مهمان - سعید مداحی

    سلام
    ببینید ، کلا اینو در نظر بگیرید که اگه برنامه ای بخواد با هر سخت افزاری ارتباط برقرار کنه ، این طور نیست که بصورت مستقیم بتونه با اون سخت افزار مد نظرش ارتباط برقرار کنه و دستوری به اون سخت افزار بتونه بده .

    وقتی یک نرم افزار ، بخواد با یک سخت افزار ، ارتباط برقرار کنه ، این ارتباط ، فقط و فقط از طریق درایوری هست که سازنده ی اون سخت افزار ارائه میکنه . بجز این ، هیچ راهی نداره .

    در واقع ، درایورها ، به عنوان یک رابط (api) برای برنامه نویس برای ارتباط با سخت افزار مورد نظر هستند .

    =====================

    اما این ارتباط ، میتونه توسط یک تیکه از برنامه ی دیگه (api ئه دیگه) باشه که در نهایت ، اون برنامه ، باز توسط درایور ، اون دستور را به درایور سخت افزار ارسال میکنه .

    مثلا برنامه ای بنام A ، با برنامه (یا تیکه کد) ای بنام B که این قطعه کدِ B ، خودش یک رابط برنامه نویسی (api) هست ، ارتباط برقرار میکنه و بهش دستور میده و این تیکه کد B ، خودش ، با درایور مورد نظر ، ارتباط برقرار میکنه و دستورات اون را فراخونی میکنه .
    تیکه کد B ، مجددا خودش به عنوان یک رابط و میانجی گر را بازی میکنه .

    این تیکه کد B ، میتونه کدهای سیستم عامل یا مولفه هایی از سیستم عامل باشه (که اغلب ، این طور هست) یا مولفه های شرکت های دیگه و هر یا هر تیکه کد دیگری از هر شخص یا شرکت دیگری باشه .

    یعنی برنامه ی A ، یک تیکه کدی از فرضا سیستم عامل را استفاده و فراخوانی میکنه (تیکه کد B را فراخوانی میکنه) و تیکه کد B ، درون خودش ، درایور مورد نظر را فراخوانی میکنه و درایور هم به سخت افزار ، دستور میده .

    اینکه یک برنامه ی میانجی گر (تیکه کد B) ای وجود داشته باشه ، یک مزایا و معایبی داره :
    1) اولین مزیت بزرگ اش اینه که اگه برنامه ی B نباشه ، برنامه ی A ، برای ارتباط با سخت افزار ، باید مستقیما با درایور مورد نظرش ارتباط برقرار کنه .

    این کار ممکنه گاها (نه در همه ی بخش های کد) ، برای بعضی از زبان های سطح بالا حتی امکان پذیر نباشه (دقیقا مطمئن نیستم) چون همه ی زبان ها ، همه ی قابلیت زبان های سطح پایین را ندارن .

    2) دومین مزیت مهمِ وجودِ تیکه کد B ، آسون کردنِ استفاده و ارتباط با سخت افزار هست چون دیگه برنامه نویس با پیچیدگی های ارتباط با درایور بصورت مستقیم در تماس نیست و مخصوصا کار را برای برنامه های سطح بالا ، خیلی خیلی راحت تر میکنه .

    اما وجود برنامه ی B ، معایبی هم داره :
    1) اول اینکه سرعت برنامه ممکنه پایین تر بیاد . هر چند ، چندان ممکنه به چشم نیاد اما در برنامه هایی که سرعت اجرا براشون خیلی مهم هست و یا برنامه هایی که دستورات بسیاری را مکررا اجرا میکنند ، این اختلاف سرعت ، بیشتر میشه .

    2) مهمتر اینکه تیکه کد B ، ممکنه همه ی کدها و متدهای درایور در سخت افزار را پشتیبانی نکنه .
    یعنی مثلا درایوری ، ممکنه 10 تا تابع یا متد را برای انجام کاری داشته باشه اما اون تیکه کد B ، فقط 6 تا از اون توابع را در ازاش داشته باشه و 4 تای دیگه را نداشته باشه که در این حالت ، برنامه ی A ، زمانی که توسط تیکه کد B با درایور سخت افزاری ارتباط برقرار کنه ، نمیتونه 4 تا از کارهایی که اون سخت افزار انجام میده را انجام بده .

    مخصوصا این نکته برای برنامه های و کدها و مولفه هایی (منظورم تیکه کد B هست) که با چندین درایور کار میکنن ، رایج تر هست .

    فرض کنید برنامه ی A میخواد توسط توابع و api های سیستم عامل (همون تیکه کد B) ، به یک موس خاص که قابلیت و برنامه ی خاصی داره ، یک دستوری بده .
    مثلا یک موس ای ، 5 تا چراغ داره که در درایورش ، یک متد و تابعی هست که میگه کدوم چراغ را با کدوم رنگ و با چه شدت از نور ، تنظیم کنه . یا فرض کنید یک موس ای که فرضا قابلیت ویبره داشته باشه .

    اما در اغلب اوقات ، برنامه ی B که برای عموم درایورها هست ، این قابلیت های اضافی برای سخت افزارهای خاص را پوشش نمیده . یعنی فرضا برنامه ی A ، نمیتونه توسط تیکه کد و برنامه ی B ، به یک موس خاص دستور بده که فلان چراغ ات را با فلان رنگ و با شدت فلان ، تنظیم کن چون هر موس ای این قابلیت را نداره و برنامه ی B هم بصورت عمومی برای همه ی موس ها طراحی شد (البته این ها مثال بود ها) .

    =================

    حالا چه ربطی به موضوع بحث داشت؟

    اون برنامه و تیکه کد و مولفه ی B که در سیستم عامل صحبت کردم ، بجاش api ئه Directx یا هر api ئه دیگه ای که با کارت گرافیک و کارت صوت ، ارتباط برقرار میکنه را بذارید (مثل opengl یا vulkan) .

    برنامه ی A ، به این api های گرافیکی ، دستوری میدن و اینها ، مجددا طبق اون دستور ، توابعی در درایور کارت گرافیک و کارت صوت را فراخوانی میکنند (و کلا ازشون استفاده میکنند) .

    بنابراین این api ها (که به عنوان تیکه کد B عمل میکنند) ، ممکنه عملیاتی را در یک درایور کارت گرافیک خاص ، پشتیبانی نکنند (نگفتم که نمیکنند . گفتم ممکنه نکنند) .

    ===========

    حالا اون cuda ، هم یک رابط (api) برای کارت های nvidia هست که برای محاسبات خاص طراحی شد (برای اینکه برنامه ی A بتونه اون محاسبات را انجام بده) .
    و احتمال داره که رابط های (api های) گرافیکیِ عمومی مثل Directx و ... ، توابع یا بخشی از توابع اون را پشتیبانی نکنند .

    برای همین ، برنامه های A ، برای انجام این نوع محاسبات که برای کارت های گرافیکی nvidia هست ، مجبورن که توسط رابط cuda ، با کارت گرافیک nvidia ارتباط برقرار کنن .

    برای همین ، بعضی از برنامه ها مثل بعضی از پلاگین هایی که برای adobe طراحی شدن ، از cuda ، استفاده میکنند .

    اما اینکه amd هم مثل nvidia ، این نوع رابط را برای کارت های شرکت اش در اختیار برنامه نویس ها قرار میده یا نه را نمیدونم .

  • مهمان - سعید مداحی

    در پاسخ به: مهمان - SajjadKhati

    تشکر می کنم بابت توضیحات مفصل و زمانیکه صرف کردید.

  • مهمان - pejman

    آیا GPU من CUDA دارد؟
    تنها کارت‌های گرافیک سری RTX؟؟؟ انویدیا از هسته‌های کودا بهره می‌برند!!!!!

ورود به شهرسخت‌افزار

ثبت نام در شهر سخت افزار
ورود به شهر سخت افزار

ثبت نام در شهر سخت افزار

نام و نام خانوادگی(*)
لطفا نام خود را وارد کنید

ایمیل(*)
لطفا ایمیل خود را به درستی وارد کنید

رمز عبور(*)
لطفا رمز عبور خود را وارد کنید

شماره موبایل
Invalid Input

جزو کدام دسته از اشخاص هستید؟(*)

لطفا یکی از موارد را انتخاب کنید