تفاوت بین هسته های CUDA و هسته های تانسور چیست؟ (توضیح داده شده) - همه تفاوت ها
فهرست مطالب
هسته های CUDA و Tensor محصولاتی هستند که توسط شرکتی به نام Nvidia توسعه یافته اند. پس هسته های CUDA و هسته های Tensor چیست؟ CUDA مخفف Compute Unified Device Architecture است. همانطور که توسعهدهندگان انویدیا میگویند، هستههای CUDA در پردازندههای گرافیکی، تلفنهای هوشمند و حتی ماشینهای شما وجود دارند.
هسته های CUDA یک پلت فرم محاسباتی موازی و رابط برنامه نویسی کاربردی (API) هستند که نرم افزار را قادر می سازد از انواع خاصی از واحدهای پردازش گرافیکی (GPU) برای پردازش همه منظوره استفاده کند.
در حالی که هسته های تانسور که توسط انویدیا نیز توسعه یافته اند، در پردازنده های گرافیکی نیز استفاده می شوند. هستههای تانسور محاسبات با دقت ترکیبی را فعال میکنند و محاسبات را به صورت پویا برای افزایش توان و در عین حال حفظ دقت تطبیق میدهند.
به عبارت ساده، این هستهها بخش مهمی از GPUهای کامپیوتر شما برای انجام محاسبات خاص هستند. هسته های CUDA برای ضرب دو عدد و اضافه کردن آنها به عدد دیگر استفاده می شوند.
در حالی که هسته Tensor یکسان است اما با ماتریس های 4×4. این محاسبات اساساً گرافیک را سریعتر برای شما ارائه می کنند.
CUDA چیست؟
Compute Unified Device Architecture به طور خلاصه CUDA توسعه یافته توسط Nvidia، منتشر شده در 23 ژوئن 2007، یک پلت فرم محاسباتی موازی و رابط برنامه نویسی برنامه (API) است.
که نرم افزار را قادر می سازد تا از انواع خاصی از واحدهای پردازش گرافیکی (GPU) برای پردازش همه منظوره استفاده کند، روشی که به عنوان محاسبات همه منظوره شناخته می شود.پردازنده های گرافیکی (GPU).
همچنین ببینید: برای تأیید در مقابل تأیید: استفاده صحیح - همه تفاوت هاCUDA یک لایه نرم افزاری است که دسترسی مستقیم به مجموعه دستورات مجازی GPU و عناصر محاسباتی موازی برای اجرای هسته های محاسباتی را فراهم می کند. CUDA برای کار با زبان های برنامه نویسی مختلف از جمله C، C++ و Fortran توسعه یافته است.
توانایی کار با زبان های برنامه نویسی مختلف، استفاده از منابع GPU را برای متخصصان برنامه نویسی موازی آسان تر می کند، اگر آن را از API های قبلی مانند Direct3D یا OpenGL متمایز کنیم، که به شما نیاز به داشتن یک برنامه پیشرفته تر دارد. پایه مهارت در برنامه نویسی گرافیکی
GPU با CUDA همچنین از چارچوب های برنامه نویسی مانند OpenMP، OpenACC، OpenCL و همچنین HIP پشتیبانی می کند که می تواند چنین کدهایی را در CUDA کامپایل کند. اولین نامی که برای CUDA استفاده شد مخفف Compute Unified Device Architecture بود. با این حال، انویدیا بعداً نام اختصاری رایج را حذف کرد.
یک کارت گرافیک قدرتمند Nvidia GTX 1080 Ti
اطلاعات بیشتر درباره CUDA
به عنوان یک پردازنده کامپیوتری تخصصی، واحد پردازش گرافیکی (GPU) نیازهای واقعی را برآورده می کند حجم کاری گرافیکی سه بعدی با زمان، محاسبات فشرده.
در حدود سال 2012 GPUها تکامل یافتند و به سیستم های چند هسته ای بسیار موازی تبدیل شدند که پردازش داده های موثر را برای بلوک های بزرگ ممکن می ساخت.
هنگام پردازش بلوک های عظیم داده به صورت موازی، این طراحی نسبت به واحدهای پردازش مرکزی همه منظوره (CPU) برای الگوریتم ها، مانند:
- هش رمزنگاری برتر است.توابع
- یادگیری ماشین
- شبیه سازی دینامیک مولکولی
- موتورهای فیزیک
- الگوریتم های مرتب سازی 12>> استفاده از معماری CUDA در حال حاضر و در آینده
- پردازش سریع گرافیک های سه بعدی
- تبدیل سریع فرمت های فایل های ویدئویی
- رمزگذاری، رمزگشایی و فشرده سازی سریع
- بیوانفورماتیک، به عنوان مثال، توالی یابی DNA NGS BarraCUDA
- محاسبات توزیع شده، مانند پیش بینی ترکیب بومی پروتئین ها
- شبیه سازی های تجزیه و تحلیل پزشکی، به عنوان مثال، واقعیت مجازی بر اساس تصاویر اسکن CT و MRI
- شبیه سازی های فیزیکی، به ویژه در دینامیک سیالات
- آموزش شبکه عصبی در مشکلات یادگیری ماشین
- تشخیص چهره
- پروژه های محاسباتی توزیع شده، مانند [email protected] و پروژه های دیگر با استفاده از BOINC
- دینامیک مولکولی
- استخراج ارزهای دیجیتال
- ساختار از نرم افزار حرکت (SfM)
- هسته های CUDA و Tensor محصولاتی هستند که هر دو توسط شرکتی به نام انویدیا توسعه یافته اند. CUDA مخفف Compute Unified Device Architecture است. این هستههای CUDA در پردازندههای گرافیکی، تلفنهای هوشمند و حتی خودروهای شما وجود دارند.
- در حالی که هسته های تانسور، که توسط انویدیا نیز ساخته شده اند، در پردازنده های گرافیکی نیز استفاده می شوند. هسته های تخصصی به نام "هسته های تنسور" امکان آموزش با دقت ترکیبی را فراهم می کنند. نسل اول Tensor Cores امکان آموزش با دقت ترکیبی و فرمت شماره FP16 را فراهم کرد.
- این میتواند تا 12 برابر افزایش توان عملیاتی teraFLOP را برای GPUهای خاص داشته باشد. Int8، Int4 و Int1 به لیست دقت های Tensor Core پشتیبانی شده اضافه شدند.
- به دلیل مختلطبا روشهای تمرینی دقیق، عملکرد GPU تا 32 برابر افزایش یافت. نسخه بعدی نسل چهارم Tensor Cores مبتنی بر ریزمعماری Hopper برنامه ریزی شده است.
هسته تانسور چیست؟
هسته های تخصصی به نام هسته های تنسور امکان آموزش با دقت ترکیبی را فراهم می کنند. نسل اولیه این هسته های تخصصی این کار را با یک الگوریتم ضرب-افزودن ذوب شده انجام می دهد. این امکان ضرب و اضافه کردن دو ماتریس 4×4 FP16 را به یک ماتریس 4×4 FP16 یا FP32 می دهد.
نتیجه نهایی FP32 تنها با کاهش جزئی دقت خواهد بود.ماتریس های ورودی ممکن است FP16 با دقت پایین باشند.
در عمل، این به طور قابل توجهی سرعت محاسبات را با تأثیر کمی بر اثربخشی نهایی مدل افزایش می دهد. این ظرفیت توسط ریزمعماری های بعدی به نمایش اعداد رایانه ای حتی با دقت کمتری گسترش یافته است.
نسل اول با ریزمعماری ولتا معرفی شد که از V100 شروع شد، فرمتهای دقیق اعداد رایانه برای محاسبه با ریزمعماریهای جدید GPU با هر نسل در دسترس قرار گرفت.
ما در مورد اینکه چگونه ظرفیت و عملکرد Tensor Cores با هر نسل ریزمعماری تغییر کرده و بهبود یافته است در بخش بعدی صحبت خواهیم کرد.
یک تصویر رندر شده گرافیکی ساخته شده توسط Titan V
هسته های تانسور چگونه کار می کنند؟
نسل اول:
ریزمعماری GPU Volta با اولین نسل از هسته های Tensor گنجانده شد. این هسته ها امکان آموزش با دقت ترکیبی و فرمت شماره FP16 را فراهم کردند.
این می تواند تا 12 برابر افزایش توان عملیاتی teraFLOP برای برخی از GPU ها داشته باشد. 640 هسته رده بالای V100 باعث افزایش 5 برابری سرعت عملکرد نسبت به پردازندههای گرافیکی پاسکال نسل قبلی میشود.
نسل دوم:
با معرفی پردازنده های گرافیکی تورینگ، نسل دوم Tensor Cores معرفی شد. Int8، Int4 و Int1 به لیست تنظیمات Tensor Core پشتیبانی شده اضافه شدند کهقبلاً به FP16 محدود شده بود.
به دلیل ترکیبی از روش های آموزشی دقیق، توان عملیاتی GPU تا 32 برابر در مقایسه با GPU های پاسکال افزایش یافته است.
نسل سوم:
معماری در یک GPU Ampere با افزودن پشتیبانی از دقت FP64، TF32 و bfloat16، پیشرفت های قبلی ریزمعماری Volta و Turing را گسترش می دهد.
آموزش یادگیری عمیق و فعالیتهای استنتاج با این قالبهای دقیق بسیار بیشتر تسریع میشوند. به عنوان مثال، فرمت TF32 عملکردی مشابه با FP32 دارد و در عین حال بدون تغییر کد، تا 20 برابر سرعت را تضمین می کند.
سپس، تنها با چند خط کد، اجرای خودکار با دقت ترکیبی، سرعت آموزش را تا 2 برابر افزایش میدهد.
نسل سوم NVLink برای فعال کردن فعل و انفعالات سریع چند GPU، هسته های نسل سوم Ray Tracing و تخصص با ریاضیات ماتریس پراکنده جنبه های اضافی ریزمعماری Ampere هستند .
نسل چهارم:
انتشار آینده نسل چهارم Tensor Cores مبتنی بر ریزمعماری Hopper برنامه ریزی شده است. نسل چهارم Tensor Cores در H100 بعدی.
که انتظار میرود در مارس 2022 منتشر شود، میتواند فرمتهای دقیق FP8 را مدیریت کند و به گفته انویدیا، مدلهای زبانی بزرگ را با سرعت حیرتانگیز 30X سرعت میبخشد. نسبت به نسل قبلی."
یک کارت گرافیک RTX استبرای نمایش گرافیکی بسیار سریع استفاده می شود زیرا حاوی هسته های تانسور است.
همچنین ببینید: تفاوت بین 2πr و πr^2 - همه تفاوت هاتفاوت بین هسته های CUDA و هسته های تانسور
هسته های تانسور در حال حاضر به Titan V و Tesla V100 محدود می شوند. 5120 هسته CUDA در هر دو پردازنده گرافیکی دارای حداکثر ظرفیت یک عملیات انباشته چند برابری دقیق (مثلاً در fp32: x += y * z) در هر ساعت GPU هستند (به عنوان مثال فرکانس PCIe Tesla V100 1.38Gz است).
هر هسته تانسور بر روی ماتریس های کوچک 4×4 برای ماتریس های کوچک عمل می کند. در هر ساعت GPU، هر هسته تانسوری می تواند یک عملیات ضرب-انباشتگی ماتریس را تکمیل کند.
دو ماتریس 4×4 FP16 را ضرب می کند و ماتریس 4×4 FP32 را اضافه می کند که منجر به انباشته می شود (که همچنین یک ماتریس 4×4 fp32 است).
از آنجایی که ماتریس های ورودی fp16 هستند در حالی که نتایج ضرب و انباشتگر fp32 هستند، الگوریتم به عنوان دقت ترکیبی شناخته می شود.
اصطلاح صحیح احتمالاً فقط «هستههای ماتریس 4×4» است، اما تیم بازاریابی NVIDIA استفاده از «هستههای تانسور» را انتخاب کرد.
توضیحات کامل هسته های Tensor به طور خلاصه
کارت GPU | هسته های CUDA | VRAM |
---|---|---|
GeForce GTX 1660 Ti | 1536 | 6GB |
GeForce GTX 1660 Super | 1408 | 6GB |
GeForce GTX 1660 | 1408 | 6GB |
GeForce GTX 1650 Super | 1408 | 4GB |
GeForce GTX 1650 | 1024 و896 | 4GB |
GeForce GTX 1060 3GB | 1280 | 4GB |
GeForce GTX 1650 | 1280 | 3GB |
GeForce GTX 1060 6GB | 768 | 6GB |
GeForce GTX 1050 Ti (3GB) | 768 | 4GB |
GeForce GTX 1050 (2GB) | 640 | 3GB |
GeForce GTX 960 | 1024 | 2GB |
GeForce GTX 950 | 786 | 2GB |
GeForce GTX 780 Ti | 2880 | 2GB |
GeForce GTX 780 | 2304 | 3GB |
GeForce GTX 750 Ti | 640 | 2 گیگابایت |
GeForce GTX 750 | 512 | 1 گیگابایت یا 2 گیگابایت |
GPUهایی که حاوی هسته های CUDA هستند