پرش به محتوای اصلی
پرش به محتوای مقاله

ان‌ویدیا: cuTile Rust خطاهای حافظه را در ۹۲٪ عملکرد پیک حذف می‌کند

·۲۷ خرداد ۱۴۰۵۵ دقیقه مطالعه
cuTile Rust یک DSL ایمن مبتنی بر کاشی برای برنامه‌نویسی هسته به زبان Rust است که API ایمن میزبان برای ارسال تنسورها به توابع
cuTile Rust یک DSL ایمن مبتنی بر کاشی برای برنامه‌نویسی هسته به زبان Rust است که API ایمن میزبان برای ارسال تنسورها به توابع
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

پیاده‌سازی عملیاتی امنیت حافظه زبان Rust در سطح کرنل‌های GPU با بازدهی بالای ۹۰٪ از توان پیک سخت‌افزار؛ چیزی که پیش از این به دلیل هزینه‌ی پردازشی (Overhead) غیرممکن بود.

اگر از عیب‌یابی خطاهای Segmentation Fault در CUDA C++ خسته شده‌اید، جریان کاری شما از امروز تغییر می‌کند. در ۱۶ ژوئن ۲۰۲۶، NVlabs سیستم cuTile Rust (cutile-rs) را منتشر کرد؛ سیستمی که امنیت سخت‌گیرانه حافظه و پیشگیری از تداخل داده‌ها (Data-race prevention) در زبان راست را مستقیماً به برنامه‌نویسی کرنل‌های GPU می‌آورد.

نوشتن کرنل‌های GPU همیشه یک معامله‌ی دشوار بود: یا از C++ سطح پایین برای حداکثر سرعت استفاده می‌کردید و با ریسک خطاهای فاجعه‌بار حافظه دست‌وپنجه نرم می‌کردید، یا از انتزاع‌های سطح بالا بهره می‌بردید که سرعت را می‌کشتند. cuTile Rust این دوگانگی را می‌شکند و نظم مالکیت (Ownership discipline) زبان راست را به آن سوی مرز اجرای GPU گسترش می‌دهد. طبق مستندات گیت‌هاب این پروژه، این سیستم تضمین می‌کند که تانسورهای تغییرپذیر پیش از اجرا به قطعات مجزا (Disjoint pieces) تقسیم شوند تا تداخل داده‌ها که کابوس توسعه‌دهندگان GPU است، کاملاً حذف شود.

همان‌طور که در تحلیل‌های قبلی ما درباره‌ی امنیت مدل‌های بازمتن اشاره کردیم، انتقال کنترل‌های امنیتی به لایه‌های زیرین، پایداری کل سیستم را تضمین می‌کند. در این ابزار، استنتاج (Inference) — که شبیه لحظه‌ی واقعی آشپزی است، نه دوره‌ی آموزش آشپز — با سرعت حداکثری و بدون ترس از کرش کردن انجام می‌شود.

سازوکار فنی

این سیستم از یک خط لوله تخصصی برای تبدیل کد راست به ماشین‌کد با کارایی بالا استفاده می‌کند:

  • ضبط AST: ماکروی #[cutile::module] یک درخت نحو انتزاعی (AST) از کد راست را ضبط کرده و درون فایل باینری میزبان جای‌گذاری می‌کند.
  • کامپایل JIT: هنگام فراخوانی یک کرنل، cuTile Rust این AST را از طریق CUDA Tile IR به یک فایل cubin برای GPU تبدیل (JIT-compile) می‌کند.
  • حفظ مالکیت: لانچرهای تولیدشده، مالکیت داده‌ها را هنگام اجرای عملیات در GPU حفظ می‌کنند. این قابلیت از اجرای هم‌گام (Synchronous)، خط لوله‌های ناهم‌گام (Asynchronous pipelines) و بازپخش گراف‌های CUDA (CUDA graph replay) پشتیبانی می‌کند.

معماری و جریان کاری

هدف cuTile Rust، کرنل‌های مبتنی بر تایل (Tile-based) هستند که از طریق CUDA Tile IR پایین آورده می‌شوند. APIهای این سیستم به‌طور خاص برای تقسیم‌بندی تانسورها و عملیات‌های متمرکز بر هسته‌های تانسور (Tensor-core-oriented) طراحی شده‌اند. با این حال، در حالی که سیستم بر امنیت تأکید دارد، امکان Opt-out محلی برای توسعه‌دهندگانی که به کنترل سطح پایین‌تر روی سخت‌افزار نیاز دارند، فراهم شده است.

ساختار پروژه به صورت یک Workspace شامل چندین کریت (Crate) مجزا برای تفکیک وظایف است:

  • cutile: کریت اصلی و کاربر-محور برای نوشتن و اجرای کرنل‌های تایل.
  • cutile-compiler: مدیریت کامپایل کرنل‌های راست به فایل‌های اجرایی با استفاده از cutile-ir (که یک سازنده Pure Rust برای Tile IR و نویسنده بایت‌کد است).
  • cuda-async: ارائه قابلیت اجرای ناهم‌گام CUDA از طریق Async Rust.
  • cuda-core و cuda-bindings: ارائه یک API امن و اصیل (Idiomatic) برای CUDA و همچنین رابط‌های زیرساختی (Bindings) به NVIDIA CUDA.

بنچمارک‌های عملکرد

به نقل از گزارش‌های NVlabs، آزمایش‌ها روی NVIDIA B200 نشان می‌دهد که امنیت حافظه لزوماً به معنای کاهش سرعت نیست. پروژه معیارهای زیر را گزارش کرده است:

  • عملیات‌های تک‌عنصری (Element-wise): رسیدن به ۷ ترابایت بر ثانیه، که تقریباً ۹۱٪ از حداکثر پهنای باند حافظه است.
  • ضرب ماتریسی (GEMM): دستیابی به ۲ پتافلاپس (PFlop/s)، معادل ۹۲٪ از توان حداکثری B200 در حالت f16 متراکم. این نتیجه به عنوان رقابتی با cuBLAS ذکر شده است.
  • سربار امنیتی: میکرو-بنچمارک‌ها نشان می‌دهند که GEMM امن و پایدار در راست، در ابعاد M=N=K=8192 به سرعت ۲.۰۷ پتافلاپس می‌رسد که تنها ۰.۳٪ با نسخه‌ی سطح پایین Tile IR فاصله دارد.

کاربرد واقعی: پروژه Grout

برای اثبات کارایی و قابلیت اطمینان سیستم، NVlabs با همکاری Hugging Face موتور استنتاج Grout را برای مدل Qwen3 ساخت. نتایج نشان‌دهنده عملکرد رقابتی در سطح State-of-the-art در وظایف محدود به حافظه (Memory-bound) است، که توسط تحلیل HBM roofline اندازه‌گیری شده است:

  • Qwen3-4B: رسیدن به ۱۷۱ توکن بر ثانیه روی NVIDIA GeForce RTX 5090 در حالت Decode با Batch-1.
  • Qwen3-32B: رسیدن به ۸۲ توکن بر ثانیه روی B200.

الزامات و راه‌اندازی

برای شروع به GPU انویدیا با قابلیت Compute Capability sm_80 یا بالاتر نیاز دارید. تیم توسعه برای بهره‌گیری از قابلیت‌هایی مثل FP4 packing و block-scaled MMA، استفاده از CUDA 13.3 را توصیه می‌کند. پشتیبانی از معماری‌ها به شرح زیر است:

  • sm_80: حداقل معماری پشتیبانی‌شده.
  • sm_100+: پشتیبانی شده توسط CUDA 13.1+.
  • sm_8x: پشتیبانی در CUDA 13.2 اضافه شده است.
  • sm_90: پشتیبانی در CUDA 13.3 اضافه شده است.

این نرم‌افزار به Rust 1.89+ نیاز دارد و در حال حاضر روی Ubuntu 24.04 تست شده است. برای نصب ساده و سریع، پروژه یک Nix flake ارائه داده است که کتابخانه‌های درایور انویدیا را به‌طور خودکار در هر دو سیستم NixOS و غیر NixOS شناسایی می‌کند.

تجربه توسعه‌دهنده

توسعه‌دهندگان می‌توانند از امضاهای ساده برای توابع (مانند تابع add) استفاده کنند، جایی که نظم دسترسی مستقیماً در کد تعبیه شده است. برای مثال، تانسور خروجی تغییرپذیر z به عنوان یک خروجی انحصاری (Exclusive output) در نظر گرفته می‌شود، در حالی که تانسورهای x و y ورودی‌های مشترک و فقط‌خواندنی (Shared read-only) هستند.

در یک پیاده‌سازی معمولی، کد میزبان عملیات تانسورهای تنبل (Lazy) را می‌سازد و خروجی تغییرپذیر را به تکه‌های کوچک (مثلاً تکه‌های ۱۲۸ عنصری) تقسیم می‌کند. سیستم به‌طور خودکار شبکه اجرا (Launch Grid) را از روی تقسیم‌بندی استنتاج می‌کند؛ مثلاً برای یک تانسور ۱۰۲۴ عنصری که به تکه‌های ۱۲۸ تایی تقسیم شده، سیستم یک گرید (۸، ۱، ۱) را استنتاج می‌کند. این کار محاسبات دستی Thread Blockها را که منبع اصلی باگ‌ها در CUDA بود، کاملاً حذف می‌کند.

این تغییر یعنی «هم‌روندی بدون ترس» (Fearless Concurrency) که راست در CPU به آن معروف است، حالا برای GPU هم فراهم شده است. با انتقال بررسی‌های امنیتی به مرحله‌ی تقسیم‌بندی در میزبان، اجرای واقعی روی دستگاه سریع و سبک باقی می‌ماند.

برای کسانی که از پایتون می‌آیند، cuTile Python تجربه مشابهی ارائه می‌دهد و TileGym الگوهای بهینه‌سازی (Tuning patterns) را برای کسانی که می‌خواهند آخرین قطره‌ی توان سخت‌افزار را استخراج کنند، فراهم می‌کند. همچنین پروژه آزمایشی cuda-oxide به عنوان یک کامپایلر Rust-to-CUDA برای کرنل‌های سبک SIMT در دسترس است.

گام بعدی شما

  • اگر در حال توسعه کرنل‌های LLM هستید، مقاله پژوهشی "Fearless Concurrency on the GPU" (نوشته Elibol و همکاران، ۲۰۲۶) را در arXiv بخوانید تا تحلیل کامل HBM roofline را ببینید.
  • برای کاهش چرخه‌ی عیب‌یابی، جایگزینی بخش‌های حساس CUDA C++ با cuTile Rust را تست کنید.
  • در صورت نیاز به بهینه‌سازی‌های حداکثری، ابزار TileGym را بررسی کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

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

تأثیر برای ایران

این ابزار برای برنامه‌نویسان ایرانی که با محدودیت سخت‌افزاری مواجه‌اند و روی بهینه‌سازی مدل‌ها در GPUهای موجود (مثل سری RTX) متمرکز هستند، فرصتی برای نوشتن کدهای ایمن‌تر و سریع‌تر است.

·نگاه ما
تحریریه دات‌هوش

تحلیل ما نشان می‌دهد که cuTile Rust تنها یک ابزار برنامه‌نویسی نیست، بلکه تلاشی برای شکستن انحصار C++ در لایه‌های سخت‌افزاری است. آنچه از این خبر می‌توان آموخت این است که ان‌ویدیا می‌خواهد با کاهش «هزینه خطا» در توسعه، چرخه تولید مدل‌های بهینه را سریع‌تر کند و Rust را به استاندارد صنعتی تبدیل نماید.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.