![]() |
سلام، من خالق کتابخانه VkFFT – GPU Fast Fourier Transform برای Vulkan/CUDA/HIP/OpenCL/Level Zero و Metal هستم. معیارهای مستقل زیادی برای مقایسه راهحلهای HPC مدرن Nvidia (H100 SXM5) و AMD (MI300X) وجود ندارد، بنابراین به محض اینکه این پردازندههای گرافیکی بر حسب تقاضا در دسترس قرار گرفتند، علاقهمند شدم بدانم که چگونه میتوانند تبدیل فوریه سریع را انجام دهند – و چگونه کتابخانههای فروشنده ، مانند CUFFT و rocFFT، در مقایسه با اجرای من عمل می کنند. اجاره بر اساس تقاضا بسیار گران است، بنابراین این نتایج اولیه فقط شامل توان دستهای 1 بعدی از 2 FFT پیچیده به پیچیده با دقت تک و دوگانه میشود. این معیار معمولاً در پردازندههای گرافیکی محدود به حافظه است، به این معنی که بیشتر زمان صرف استفاده از گذرگاه VRAM و انتقال دادهها از VRAM به تراشه میشود (اندازه دسته به اندازهای بزرگ انتخاب میشود که استفاده مجدد از حافظه پنهان و استفاده از تمام واحدهای محاسباتی را کاهش دهد). من از پهنای باند تخمینی به عنوان معیار معیار استفاده می کنم که به صورت (2 x اندازه سیستم) محاسبه می شود [GB]) / زمان اجرا [s]. ضریب دو وجود دارد زیرا باید داده ها را آپلود کرده و از تراشه بارگیری کنیم. بنابراین برای کدهای مربوط به حافظه، این مقدار باید نزدیک به پهنای باند حافظه دستگاه باشد. https://preview.redd.it/ngv6qqxvbd7d1.png?width=4500&format=png&auto=webp&s=d4bdc8893462561f307e758cafb10e3f76636174 در دقت تک، هر دو پردازنده گرافیکی نتایج مشابهی دارند – حدود 3 ترابایت بر ثانیه پهنای باند برای الگوریتم FFT تک آپلود. پس از تقریباً 2^14 (وابسته به پیادهسازی) همه کتابخانهها به الگوریتم FFT دو بارگذاری (و دو بارگیری) تغییر میکنند که منجر به انتقال 2 برابر حافظه و متعاقباً 2 برابر کاهش پهنای باند میشود. تغییر به آپلود 3 در حدود 2^24 اتفاق می افتد. به طور کلی، هر دو پردازنده گرافیکی در پهنای باند نظری خود نیستند (3.35 ترابایت بر ثانیه برای H100 و 5.3 ترابایت بر ثانیه برای MI300X)، اما معمولاً مقادیر واقعی کمتر از مشخصات هستند. برای AMD MI300X نیز ناهماهنگی در نتایج برای اندازههای کوچک وجود دارد، احتمالاً به دلیل نیاز به بهینهسازی بیشتر برای طراحی جدید چند تراشه و وجود حافظه پنهان L3. نسخه فعلی VkFFT (بهینهسازی شده برای سختافزار نسل قبلی) مطابقت دارد و اغلب از راهحلهای فروشنده برای حالت بسیار بهینهشده قدرتهای 2 عملکرد بهتری دارد. https://preview.redd.it/9q0wt6m3cd7d1.png?width=4500&format=png&auto=webp&s=19644a0945cd9f4a6acd4172d956c467bca94856 نتایج با دقت دوگانه به طور مشابه با دقت تک مقیاس می شوند. AMD MI300X در اینجا به پهنای باند پایه بالاتری نسبت به تک دقیق دست می یابد، هنوز دقیقاً مطمئن نیستم که چرا (شاید نسبت هسته 1:1 FP64:FP32 مفید باشد). VkFFT همچنین برای کیس های بدون قدرت 2 بسیار بهینه شده است، بنابراین باید با آنها در سخت افزار جدید عملکرد خوبی داشته باشد. می توانید شرح الگوریتم های پیاده سازی شده و مقایسه عملکرد کامل نسل قبلی پردازنده های گرافیکی HPC را در مقاله VkFFT بیابید. زمانی که مشکلات مربوط به هزینه های دسترسی را برای آزمایش گسترده حل کردم، کد را برای GPU های جدید تنظیم می کنم. به طور کلی، MI300X با H100 قابل رقابت است و به نظر می رسد AMD در بسیاری از مسائل مربوط به نسل های قبلی CDNA (یعنی سریال سازی پین حافظه برای دسترسی های ادغام شده از راه دور) بهبود یافته است. به نظر می رسد که هر واحد محاسباتی هنوز ضعیف تر از چند پردازنده جریان مربوطه است – حافظه مشترک کوچکتر و کندتر دارد/ حافظه نهان L1 و L2، با این حال، با داشتن کش L3 و طراحی چند تراشه جدید (اتصال 304 واحد محاسباتی) جبران می شود. ، که تاثیر آن باید برآورد شود. از خواندن شما متشکرم، و اگر در مورد VkFFT یا روش آزمایش سؤالی دارید – خوشحال می شوم به آنها پاسخ دهم. ارسال شده توسط /u/xdtolm |