ROCm چیست؟
ROCm یک پشته open-source است که عمدتاً از نرم افزار open-source تشکیل شده و برای محاسبات واحد پردازش گرافیکی (GPU) طراحی شده است. ROCm شامل مجموعه ای از درایورها، ابزارهای توسعه و API است که برنامه نویسی GPU را از کرنل سطح پایین تا برنامه های کاربردی end-user قادر می سازد.
با ROCm، میتوانید نرمافزار GPU خود را برای رفع نیازهای خاص خود سفارشی کنید. میتوانید برنامههای خود را در یک اکوسیستم نرمافزاری رایگان، منبع باز، یکپارچه و امن توسعه دهید، آزمایش کنید و به کار ببرید. ROCm به ویژه برای محاسبات با کارایی بالا (HPC)، هوش مصنوعی (AI)، محاسبات علمی و طراحی به کمک رایانه (CAD) مناسب است.
ROCm توسط رابط محاسباتی ناهمگن برای حملپذیری (HIP) پردازنده AMD، یک محیط برنامهنویسی C++ GPU نرمافزار متنباز و زمان اجرا متناظر آن پشتیبانی میشود. HIP به توسعه دهندگان ROCm اجازه می دهد تا با استقرار کد بر روی طیف وسیعی از پلتفرم ها، از پردازنده های گرافیکی اختصاصی بازی گرفته تا خوشه های HPC، برنامه های قابل حمل را روی پلتفرم های مختلف ایجاد کنند.
ROCm از مدل های برنامه نویسی مانند OpenMP و OpenCL پشتیبانی می کند و شامل تمام کامپایلرهای نرم افزار منبع باز، دیباگرها و کتابخانه ها می باشد. ROCm به طور کامل در چارچوب های یادگیری ماشین (ML) مانند PyTorch و TensorFlow ادغام (Integration) شده است.
پروژه های ROCm
ROCm از درایورها، ابزارهای توسعه و API های زیر تشکیل شده است.
پروژه | شرح |
AMD Compute Language Runtimes (CLR) | حاوی کد منبع برای زمان اجرا زبان های محاسباتی AMD: HIP و OpenCL |
AOMP | یک ساخت اسکریپت شده از LLVM و نرم افزار پشتیبانی |
Asynchronous Task and Memory Interface (ATMI) | یک چارچوب زمان اجرا برای مدیریت کار کارآمد در سیستم های CPU-GPU ناهمگن |
Composable Kernel | کتابخانه ای که هدف آن ارائه یک مدل برنامه نویسی برای نوشتن هسته های حیاتی عملکرد برای بارهای کاری یادگیری ماشین در چندین معماری است. |
Flang | یک کامپایلر خارج از درخت Fortran که LLVM را هدف قرار می دهد |
Half-precision floating point library (half) | یک کتابخانه فقط سرصفحه ++C که یک نوع ممیز شناور نیمه دقیق 16 بیتی منطبق با IEEE 754 به همراه عملگرهای حسابی مربوطه، تبدیل نوع و توابع ریاضی رایج را ارائه می دهد. |
HIP | پسوند زبان برنامه نویسی GPU AMD و زمان اجرای GPU |
hipBLAS | یک کتابخانه BLAS-marshaling که از backendهای rocBLAS و cuBLAS پشتیبانی می کند |
HIPCC | یک ابزار درایور کامپایلر که Clang یا NVCC را فراخوانی میکند و گزینههای شامل و کتابخانه مناسب را برای کامپایلر هدف و زیرساخت HIP ارسال میکند. |
hipCUB | یک کتابخانه پوششی نازک فقط با سربرگ در بالای rocPRIM یا CUB که امکان انتقال پروژه با استفاده از کتابخانه CUB به لایه HIP را فراهم می کند. |
hipFFT | یک کتابخانه سریع تبدیل فوریه (FFT) که از backendهای rocFFT یا CUFFT پشتیبانی می کند. |
hipfort | یک کتابخانه رابط فرترن برای دسترسی به هسته های GPU |
HIPIFY | مجموعه ای از ابزارها برای ترجمه کد منبع CUDA به HIP C++ قابل حمل |
hipify-clang | ابزاری مبتنی بر Clang برای ترجمه منابع CUDA به منابع HIP |
hipify-perl | یک اسکریپت مبتنی بر پرل تولید شده خودکار که کد منبع CUDA را به HIP C++ قابل حمل ترجمه میکند. |
hipSOLVER | یک کتابخانه LAPACK-marshalling که از backend های rocSOLVER و cuSOLVER پشتیبانی می کند |
hipSPARSE | یک کتابخانه SPARSE-marshalling که از backendهای rocSPARSE و cuSPARSE پشتیبانی می کند |
hipTensor | کتابخانه C++ AMD برای تسریع تانسورهای اولیه بر اساس کتابخانه هسته قابل ترکیب |
LLVM | یک جعبه ابزار برای ساخت کامپایلرها، بهینه سازها و محیط های زمان اجرا بسیار بهینه شده |
MIGraphX | یک موتور استنتاج گراف که استنتاج مدل یادگیری ماشین را تسریع می کند |
MIOpen | یک کتابخانه یادگیری عمیق منبع باز |
MIOpenGEMM | یک API ضرب ماتریس عمومی OpenCL (GEMM) و مولد هسته |
MIOpenTensile | رابط های قابل فراخوانی میزبان را برای کتابخانه Tensile فراهم می کند |
MIVisionX | مجموعه ای از کتابخانه ها، ابزارها و برنامه های کاربردی جامع بینایی کامپیوتر و یادگیری ماشین |
Radeon Compute Profiler (RCP) | یک ابزار تجزیه و تحلیل عملکرد که داده ها را از API زمان اجرا و GPU برای برنامه های OpenCL و ROCm/HSA جمع آوری می کند. |
RCCL | یک کتابخانه مستقل که ارتباطات اولیه چند GPU و چند گره ای را ارائه می دهد |
rocAL | یک کتابخانه تقویتی که برای رمزگشایی و پردازش تصاویر و ویدیوها طراحی شده است |
ROCALUTION | یک کتابخانه جبر خطی پراکنده برای کاوش موازی سازی ریز دانه در زمان اجرا ROCm و زنجیره های ابزار |
RocBandwidthTest | ویژگی های عملکرد کپی بافر و عملیات خواندن/نوشتن هسته را به تصویر می کشد |
rocBLAS | پیاده سازی BLAS (در زبان برنامه نویسی HIP) در زمان اجرا و زنجیره ابزار ROCm |
rocFFT | یک کتابخانه نرم افزاری برای محاسبه تبدیل فوریه سریع (FFT) که به زبان HIP نوشته شده است |
ROCK-Kernel-Driver | یک درایور AMDGPU با KFD که توسط ROCm استفاده می شود |
ROCmCC | یک کامپایلر مبتنی بر Clang/LLVM |
ROCm cmake | مجموعه ای از ماژول های CMake برای کارهای رایج ساخت و توسعه |
ROCm Data Center Tool | مدیریت را ساده میکند و چالشهای زیرساختی کلیدی را در پردازندههای گرافیکی AMD در محیطهای خوشهای و مرکز داده برطرف میکند. |
ROCm Debug Agent Library (ROCdebug-agent) | کتابخانهای که میتواند وضعیت تمام جبهههای موج GPU AMD را که با ارسال سیگنال SIGQUIT به فرآیند در حین اجرای برنامه باعث خطای صف شدهاند، چاپ کند. |
ROCm Debugger (ROCgdb) | یک اشکالزدای سطح منبع برای لینوکس، بر اساس اشکالزدای گنو (GDB) |
ROCdbgapi | کتابخانه API دیباگر ROCm |
rocminfo | اطلاعات سیستم را گزارش می کند |
ROCm SMI | کتابخانه AC برای لینوکس که یک رابط فضای کاربری برای برنامه ها برای نظارت و کنترل برنامه های GPU فراهم می کند |
ROCm Validation Suite | ابزاری برای تشخیص و عیبیابی مشکلات رایجی که بر روی پردازندههای گرافیکی AMD در حال اجرا در یک محیط محاسباتی با کارایی بالا تأثیر میگذارند. |
rocPRIM | یک کتابخانه فقط هدر برای HIP های اولیه موازی |
ROCProfiler | یک ابزار پروفایل برای برنامه های کاربردی HIP |
rocRAND | توابعی را ارائه می دهد که اعداد شبه تصادفی و شبه تصادفی تولید می کنند |
ROCR-Runtime | رابطهای API حالت کاربر و کتابخانههای لازم برای برنامههای میزبان برای راهاندازی هستههای محاسباتی روی عاملهای هسته HSA ROCm موجود |
rocSOLVER | اجرای روتین های LAPACK بر روی نرم افزار ROCm، پیاده سازی شده در زبان برنامه نویسی HIP و بهینه سازی شده برای آخرین GPU های گسسته AMD |
rocSPARSE | یک رابط مشترک را نشان می دهد که BLAS را برای محاسبات پراکنده پیاده سازی شده در زمان اجرا ROCm و زنجیره های ابزار (در زبان برنامه نویسی HIP) ارائه می دهد. |
rocThrust | کتابخانه الگوریتم موازی |
ROCT-Thunk-Interface | رابط های API حالت کاربر که برای تعامل با درایور ROck استفاده می شود |
ROCTracer | تماس های API در زمان اجرا را قطع می کند و فعالیت های ناهمزمان را ردیابی می کند |
rocWMMA | یک کتابخانه ++C برای تسریع عملیات چند برابری-انباشتگی ماتریس با دقت مخلوط (MMA) |
Tensile | ابزاری برای ایجاد کتابخانههای باطنی مبتنی بر معیار برای GEMM، مشکلات GEMM مانند و انقباضات تانسور کلی N بعدی |
TransferBench | ابزاری برای محک زدن انتقال همزمان بین دستگاه های مشخص شده توسط کاربر (CPU/GPU) |
پلتفرم ROCm