NVIDIA زبان های برنامه نویسی بیشتری برای پشتیبانی از CUDA می خواهد

پلت فرم محاسبات موازی CUDA را می توان با C++، Fortran و Python برنامه ریزی کرد، اما این شرکت به دنبال سایرین برای اجرای GPU های خود است

NVIDIA به دنبال گسترش پشتیبانی از زبان های برنامه نویسی بیشتر است زیرا تلاش می کند توسعه دهندگان بیشتری را برای نوشتن برنامه های کاربردی برای پردازنده های گرافیکی خود جذب کند.

چارچوب برنامه نویسی CUDA این شرکت در حال حاضر از زبان هایی که شامل C++، Fortran و Python هستند پشتیبانی می کند. جف لارکین، معمار HPC در NVIDIA، در یک جلسه فنی در کنفرانس فناوری GPU این شرکت در اوایل ماه جاری، گفت: اما زبان‌های برنامه‌نویسی جدید در حال تکامل هستند و این شرکت مشتاق است دسترسی به پردازنده‌های گرافیکی خود را برای توسعه‌دهندگانی که از آن زبان‌ها استفاده می‌کنند باز کند.

لارکین جزئیاتی در مورد زبان های برنامه نویسی که به آن نگاه می کند ارائه نکرده است.

تیم من قطعاً آن‌ها را زیر نظر دارد و سعی می‌کند به دنبال فرصت‌هایی برای مشارکت در آن‌ها باشد. اما [C++، Fortran و Python] آنهایی هستند که امروزه به طور خاص در محصولات ما پشتیبانی می شوند. لارکین گفت: برخی از فناوری‌ها وجود دارد که من از آنها آگاهم و نمی‌توانم در اینجا به آنها اشاره کنم که زبان‌های بیشتری را نیز فعال می‌کنند.

لارکین نمونه هایی از نحوه بهره برداری برخی از زبان های برنامه نویسی از پردازنده های گرافیکی آن را ارائه کرد که به نام حذف Judia و Rust نامیده می شود.

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

مدل های اولیه برنامه نویسی حول محور CPU ها می چرخیدند. معماری x86 کاهونای بزرگ بود، در حالی که پردازنده‌های گرافیکی به بازی و گرافیک واگذار شدند.

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

لارکین گفت: «معمولاً، اگرچه یک GPU از قدرت بیشتری استفاده می‌کند، اما بهره‌وری بیشتری از آن استفاده می‌کند، و این همان جایی است که شما شروع به صرفه‌جویی خواهید کرد.» “شما سریع تر و با قدرت کارآمدتر کار خواهید کرد.”

انویدیا به شدت CPU مبتنی بر ARM خود به نام Grace Hopper را به همراه پردازنده‌های گرافیکی متصل می‌کند. اما توسعه دهندگان برای استفاده کامل از GPU ها به CUDA نیاز دارند.

CUDA چگونه کار می کند

هسته‌های Tensor در قلب پردازنده‌های گرافیکی انویدیا قرار دارند که فناوری داغی است که امروزه بیشتر محاسبات هوش مصنوعی را هدایت می‌کند. هسته های Tensor قادر به ضرب ریاضی و ماتریس با دقت پایین برای محاسبات هوش مصنوعی هستند.

سبک ماتریسی محاسبات بر اساس الگوریتم GEMM ساخته شده است که از هسته های Tensor بهره می برد و در مدل محاسباتی AI NVIDIA مرکزی است. الگوریتم GEMM با کتابخانه هایی در CUDA کار می کند تا برنامه نویسان با هسته های GPU تعامل داشته باشند.

کتابخانه ها عبارتند از:

cuBLAS: این کتابخانه ترجیحی انویدیا است که دسترسی مستقیم به هسته های Tensor را فراهم می کند و حداکثر کارایی را ارائه می دهد. «این اسب کار اصلی شماست که از همان ابتدای CUDA وجود داشته است. این APIهای جبر خطی است. cuBLAS ساده ترین راه را برای مهار عملکرد پردازنده های گرافیکی فراهم می کند. این پیکربندی هسته‌های Tensor را خودکار می‌کند و توسعه‌دهندگان مجبور نیستند دستگیره‌ها را بچرخانند – cuBLAS فقط خارج از جعبه کار می‌کند.

CUTLASS: کتابخانه سطح پایین CUTLASS رابط های C++ و Python را برای کدنویس ها فراهم می کند تا با هسته های Tensor GPU کار کنند. توسعه دهندگان برای کنترل استفاده از Tensor Cores، که به معنای کار بیشتر برای توسعه دهندگان است. CUTLASS با cuBLAS که آن فرآیند را خودکار می کند متفاوت است. انویدیا در حال ساخت ابزارهای بیشتری برای توسعه دهندگان پایتون است تا به CUTLASS دسترسی داشته باشند که یک توسعه اخیر است و در حال انجام است. جونز گفت: «می‌توانید از پسوند PyTorch استفاده کنید، و بنابراین می‌توانید کد PyTorch را از CUTLASS منتشر کنید، و می‌توانید به طور خودکار هسته‌های سفارشی Tensor Core پسوند CUTLASS را در پایتون به PyTorch بیاورید.

cuBLASLt: این کتابخانه جایی بین کتابخانه های cuBLAS و CUTLASS قرار دارد و سطوح مختلفی از کنترل را برای Tensor Cores فراهم می کند. CUTLASS در واقع آن را در وسط، cuBLASLt می نامد، که می توانید خودتان نیز به آن دسترسی داشته باشید. این یک کتابخانه عمومی است. جونز گفت: این APIهای پیشرفته را در اختیار شما قرار می دهد که واقعاً می توانید جنبه های بیشتری از کارهایی که Tensor Cores انجام می دهند را کنترل کنید. cuBLASLt دارای API های پیشرفته ای برای کتابخانه های GEMM است که راه را برای محاسبات با دقت ترکیبی باز می کند که شامل محاسبات ترکیبی و کم دقت است.

cuBLASDx: این می تواند توابع جبر خطی انتخابی را از cuBLAS در سمت دستگاه انجام دهد که عملکرد و توان عملیاتی را بهبود می بخشد. جونز گفت: “ایده این است که هسته های cuBLAS خود را دریافت کنید، آن را فقط با یک هسته GEMM در هسته خود فعال کنید، همانطور که با cuBLAS از یک CPU انجام می دهید.”

پایتون در اولویت است

انویدیا به دنبال گسترش دسترسی به SDK ها و فریمورک های خود به پایتون است که امکان دسترسی را برای توسعه دهندگان بیشتری فراهم می کند. این به نوبه خود توسعه دهندگان بیشتری را به پردازنده های گرافیکی خود می آورد.

جونز گفت: «با نگاهی به پشته پایتون، باید در همه جا سرمایه گذاری کنید، در تمام طول آن.

جونز گفت: انویدیا می‌خواهد پایتون را به یک تجربه کامل انویدیا تبدیل کند و توسعه‌دهنده پایتون و کل اکوسیستم CUDA را در دسترس و در دسترس برنامه‌نویس پایتون قرار دهد.

هدف این است که SDK ها، چارچوب ها و زبان های خاص دامنه در بالای پشته در دسترس توسعه دهندگان بیشتری قرار گیرند. در عین حال، لایه‌های پایین‌تر – کتابخانه‌های تسریع‌شده، کتابخانه‌های سیستم و ابزارهای کمکی، و هسته‌های دستگاه – برای کاربران نامرئی می‌شوند. جونز گفت: این هنوز یک کار در حال پیشرفت است.

NVIDIA روی ادغام کتابخانه ها و ابزارهای خود با فریمورک های محبوب پایتون مانند PyTorch کار کرده است.

کامپایل JIT در پایتون بسیار مهم است زیرا پایتون یک زبان بسیار تفسیر شده در زمان اجرا است و شما دائما در حال تولید داده ها به صورت پویا هستید. یک کامپایلر در حلقه کاملاً عادی است. جونز گفت در واقع، مفسر پایتون اساساً یکی از این موارد است.

خوب برنامه بنویسید و پاداش دریافت کنید

برنامه نویسی – و انجام صحیح آن – برای بهره وری بیشتر هوش مصنوعی مهم است.

شرکت ها هزینه هر تراکنش را اندازه گیری می کنند و سعی می کنند آن را کاهش دهند. هوش مصنوعی یک مشکل کریپتو دارد – برای اجرا انرژی زیادی لازم است – و هزینه استنتاج در GTC زیر ذره بین قرار گرفت.

جونز استدلال کرد که پردازنده‌های گرافیکی در معادله نهایی کارآمدتر هستند: آن‌ها می‌توانند FLOPS بیشتری – عملیات نقطه شناور در ثانیه – در هنگام فاکتورگیری در فضای رک، زمان و مصرف انرژی ارائه دهند.

جونز گفت: «هیچ کس اهمیتی نمی‌دهد که شما چند سرور می‌خرید، هیچ‌کس اهمیتی نمی‌دهد که چند مرکز داده اجاره می‌کنید، شما ماهانه برق را اجاره می‌کنید، زیرا قدرت معیاری است که واقعاً برای محاسبات مهم است.

NVIDIA انواع داده های جدیدی را معرفی کرد – FP4 و FP6 – که دقت کمتری دارند اما می توانند عملکرد بیشتری را در هر وات کاهش دهند.

این شرکت یک GPU جدید با اسم رمز Blackwell در GTC معرفی کرد. سرور جدیدی به نام DGX-B200 دارای هشت تراشه بلک ول است و حدود 1000 وات مصرف می کند. این پردازنده گرافیکی جانشین پردازنده گرافیکی H100 است، که پردازنده گرافیکی تقویت کننده تلاش‌های محاسباتی هوش مصنوعی در مایکروسافت، متا، تسلا و سایر شرکت‌ها است.

چارلی بویل، معاون و مدیر کل سیستم‌های DGX در NVIDIA، در مصاحبه‌ای گفت: در مقایسه با DGX-H100، مصرف برق سیستم DGX-B200 مشابه است، اما عملکرد بین دو تا سه برابر بهبود می‌یابد.

به روز رسانی جدیدی برای CUDA وجود ندارد

مدل سخت افزاری و نرم افزاری NVIDIA بسیار شبیه به اپل است: سخت افزار و نرم افزار دست به دست هم می دهند. این نرم افزار برای سخت افزار طراحی شده است و بالعکس.

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

هدف این شرکت ادغام سخت‌افزار و نرم‌افزار در یک کارخانه به‌اصطلاح AI است، جایی که ورودی داده‌های خام و خروجی نتیجه است. سخت افزار و نرم افزار برای مشتریان نامرئی باقی می ماند.

معمولا انویدیا نسخه جدیدی از CUDA را با پردازنده گرافیکی جدید منتشر می کند. با این حال، جونز هیچ به روز رسانی قابل توجهی برای CUDA در جلسه GTC ارائه نکرد. NVIDIA اخیراً نسخه CUDA 12.4 را منتشر کرده است و ممکن است در اواخر این ماه با نزدیک شدن به انتشار GPU Blackwell خود جزئیات بیشتری را به اشتراک بگذارد.

منبع

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *