CuPy؛ نامپای و سایپای با شتاب GPU
خلاصهٔ کاملتر
CuPy یه کتابخانهٔ آرایهای سازگار با NumPy و SciPy ـه که برای محاسبات شتابگرفته با GPU تو پایتون ساخته شده. ایدهٔ اصلیش سادهست: بهجای اینکه مجبور بشی کدت رو دور بریزی و از صفر با CUDA بنویسی، CuPy همون API آشنا رو میده و کد فعلی NumPy/SciPy رو روی پلتفرمهای CUDA انویدیا یا ROCm ایامدی اجرا میکنه.
تو مستندات پروژه از CuPy بهعنوان یه drop-in replacement یاد شده. نمونهٔ کوچیک خود ریپازیتوری خوب نشون میده منظور چیه — کافیه cupy رو بهجای numpy ایمپورت کنی و بقیهٔ کد همون شکلی میمونه:
>>> import cupy as cp
>>> x = cp.arange(6).reshape(2, 3).astype('f')
>>> x.sum(axis=1)
array([ 3., 12.], dtype=float32)ولی CuPy فقط یه لایهٔ راحتی نیست. برای وقتی که به کنترل بیشتری نیاز داری، دسترسی سطحپایین به امکانات CUDA هم میده: میتونی ndarray رو به برنامههای CUDA C/C++ موجود پاس بدی، با RawKernel کرنل خودت رو بنویسی، از Stream برای بهبود کارایی استفاده کنی، یا حتی مستقیم CUDA Runtime API رو صدا بزنی.
نصبش هم دردسری نداره. بستههای باینری (wheel) برای لینوکس و ویندوز روی PyPI هست و بسته به نسخهٔ CUDA پکیج مناسب رو نصب میکنی: cupy-cuda12x برای CUDA 12.x و cupy-cuda13x برای CUDA 13.x. پشتیبانی از ROCm 7.0 هم با cupy-rocm-7-0 موجوده ولی هنوز آزمایشی حساب میشه. از کانال conda-forge هم میشه نصبش کرد (نسخهٔ cupy-core بدون وابستگیهای سنگین CUDA) و ایمیج داکر رسمی هم داره.
پروژه زیر لایسنس MIT منتشر شده و توسعهش دست شرکت Preferred Networks و مشارکتکنندههای جامعهٔ اوپنسورسه. یه نکتهٔ خوب برای اهالی پردازش سیگنال: کتابخانهٔ cuSignal از نسخهٔ ۱۳ به بعد داخل خود CuPy ادغام شده، پس دیگه لازم نیست جدا نصبش کنی.
نکات کلیدی:
- CuPy آرایههای سازگار با NumPy/SciPy رو روی GPU اجرا میکنه و عملاً drop-in replacement ـه.
- از CUDA انویدیا پشتیبانی کامل داره و ROCm ایامدی هنوز آزمایشیه.
- دسترسی سطحپایین: RawKernel، استریمها و CUDA Runtime API.
- نصب با pip (cupy-cuda12x / cupy-cuda13x)، conda-forge یا ایمیج داکر.
- لایسنس MIT، توسعه توسط Preferred Networks؛ cuSignal از نسخهٔ ۱۳ داخلش ادغام شده.




