CuPy
CuPy مكتبة مفتوحة المصدر للحوسبة المُسرّعة بواسطة وحدة معالجة الرسومات (GPU) باستخدام لغة برمجة بايثون ، وتوفر دعمًا للمصفوفات متعددة الأبعاد، والمصفوفات المتفرقة، ومجموعة متنوعة من الخوارزميات العددية المُطبقة عليها. [ 3 ] تشترك CuPy في نفس مجموعة واجهات برمجة التطبيقات (API) مع NumPy و SciPy ، مما يسمح باستخدامها كبديل مباشر لتشغيل أكواد NumPy/SciPy على وحدة معالجة الرسومات. تدعم CuPy منصة Nvidia CUDA لوحدات معالجة الرسومات، ومنصة AMD ROCm لوحدات معالجة الرسومات بدءًا من الإصدار 9.0. [ 4 ] [ 5 ]
تم تطوير CuPy في البداية كخلفية لإطار عمل التعلم العميق Chainer ، وتم تأسيسه لاحقًا كمشروع مستقل في عام 2017. [ 6 ]
تُعد CuPy جزءًا من مكتبات المصفوفات في نظام NumPy البيئي [ 7 ] ، وهي تُستخدم على نطاق واسع للاستفادة من وحدة معالجة الرسومات (GPU) مع لغة بايثون [ 8 ] ، وخاصة في بيئات الحوسبة عالية الأداء مثل Summit [ 9 ] و Perlmutter [ 10 ] و EULER [ 11 ] و ABCI [ 12 ] .
سمات
تُنفّذ مكتبة CuPy واجهات برمجة تطبيقات متوافقة مع NumPy/SciPy، بالإضافة إلى ميزات لكتابة نواة GPU مُعرّفة من قِبل المستخدم أو الوصول إلى واجهات برمجة التطبيقات منخفضة المستوى. [ 14 ] [ 15 ]
واجهات برمجة تطبيقات متوافقة مع NumPy
numpy.*تتوفر نفس مجموعة واجهات برمجة التطبيقات المحددة في حزمة NumPy ( ) ضمن cupy.*الحزمة.
- مصفوفة متعددة الأبعاد (
cupy.ndarray) لأنواع البيانات المنطقية، والأعداد الصحيحة، والأعداد العشرية، والبيانات المركبة - وظائف على مستوى الوحدة
- دوال الجبر الخطي
- تحويل فورييه السريع
- مولد الأرقام العشوائية
واجهات برمجة التطبيقات المتوافقة مع SciPy
scipy.*تتوفر نفس مجموعة واجهات برمجة التطبيقات المحددة في حزمة SciPy ( ) ضمن cupyx.scipy.*الحزمة.
- المصفوفات المتفرقة (
cupyx.scipy.sparse.*_matrix) بتنسيق CSR و COO و CSC و DIA - تحويل فورييه المنفصل
- الجبر الخطي المتقدم
- معالجة الصور متعددة الأبعاد
- الجبر الخطي المتفرق
- وظائف خاصة
- معالجة الإشارات
- الدوال الإحصائية
نواة وحدة معالجة الرسومات المحددة من قبل المستخدم
- قوالب النواة لعمليات العناصر وعمليات الاختزال
- النواة الخام (CUDA C/C++)
- المترجم الفوري (JIT)
- دمج النواة
الحوسبة الموزعة
- حزمة اتصالات موزعة (
cupyx.distributed)، توفر أساسيات جماعية ونظير إلى نظير
ميزات CUDA منخفضة المستوى
- البث المباشر والفعاليات
- مجمع الذاكرة
- محلل الملفات الشخصية
- ربط واجهة برمجة تطبيقات المضيف
- دعم CUDA لـ Python [ 16 ]
قابلية التشغيل البيني
أمثلة
إنشاء مصفوفة
>>> import cupy as cp >>> x = cp.array ([ 1 , 2 , 3 ] ) >>> x array ([ 1 , 2 , 3 ] ) >>> y = cp.arange ( 10 ) >>> y array ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] )العمليات الأساسية
>>> import cupy as cp >>> x = cp.arange ( 12 ) .reshape ( 3 , 4 ) .astype ( cp.float32 ) >>> x array ( [ [ 0 , 1 , 2 , 3 ] , [ 4 , 5 , 6 , 7 ] , [ 8 , 9 , 10 , 11 ] ] , dtype = float32 ) >>> x.sum ( axis = 1 ) array ( [ 6 , 22 , 38 ] , dtype = float32 )نواة CUDA C/C++ الخام
>>> import cupy as cp >>> kern = cp.RawKernel ( r ' '' ... extern "C" __global__ ... void multiply_elemwise(const float* in1, const float* in2, float* out) { ... int tid = blockDim.x * blockIdx.x + threadIdx.x; ... out[tid] = in1[tid] * in2[tid] ; ... } ... ' ' ' , ' multiply_elemwise ' ) >>> in1 = cp.arange ( 16 , dtype = cp.float32 ) .reshape ( 4 , 4 ) >>> in2 = cp.arange ( 16 , dtype = cp.float32 ) .reshape ( 4 , 4 ) >>> out = cp . zeros (( 4 , 4 ), dtype = cp.float32 ) >>> kern (( 4 , ) , ( 4 ,), ( in1 , in2 , out )) # الشبكة، والكتلة، والوسائط >>> out array ([[ 0 , 1 , 4 , 9 ], [ 16 , 25 , 36 , 49 ], [ 64 , 81 , 100 , 121 ], [ 144 , 169 , 196 , 225 ]], dtype = float32 )التطبيقات
انظر أيضاً
مراجع
- ↑ "الإصدار v1.3.0 – chainer/chainer" . تم الاطلاع عليه بتاريخ 25 يونيو 2022 – عبر GitHub .
- 1 2 "الإصدارات - cupy/cupy" . تم الاسترجاع في 13 نوفمبر 2025 - عبر GitHub .
- ↑ أوكوتا، ريوسوكي؛ أونو، يويا؛ نيشينو، دايسوكي؛ هيدو، شوهي؛ لوميس، كريسمان (2017). CuPy: مكتبة متوافقة مع NumPy لحسابات NVIDIA GPU (ملف PDF) . وقائع ورشة عمل أنظمة التعلم الآلي (LearningSys) في المؤتمر السنوي الحادي والثلاثين لأنظمة معالجة المعلومات العصبية (NIPS).
- ↑ "CuPy 9.0 يُضيف دعمًا لوحدات معالجة الرسومات من AMD إلى هذه المكتبة المتوافقة مع Numpy - Phoronix" . Phoronix . 29 أبريل 2021. تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ " شركة AMD تقود الحوسبة عالية الأداء نحو الحوسبة فائقة الأداء وما بعدها" . 28 يونيو 2021. تم الاطلاع عليه في 21 يونيو 2022.
في الآونة الأخيرة، وسّعت مكتبة CuPy، وهي مكتبة مصفوفات مفتوحة المصدر مكتوبة بلغة بايثون، دعمها التقليدي لوحدات معالجة الرسومات (GPU) مع إصدار النسخة 9.0 التي توفر الآن دعمًا لحزمة ROCm للحوسبة المُسرّعة بواسطة وحدات معالجة الرسومات.
- ↑ "أصدرت شركة Preferred Networks الإصدار الثاني من Chainer، وهو إطار عمل مفتوح المصدر للتعلم العميق - Preferred Networks, Inc" . 2 يونيو 2017. تم الاطلاع عليه بتاريخ 18 يونيو 2022 .
- ↑ "NumPy" . numpy.org . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ غورليك، ميخا؛ أوزسفالد، إيان (أبريل 2020). بايثون عالية الأداء: برمجة عملية عالية الأداء للبشر ( الطبعة الثانية). دار نشر أورايلي ميديا، ص 190. ISBN 9781492055020.
- ↑ مرفق أوك ريدج للحوسبة القيادية . "تثبيت CuPy" . وثائق مستخدم OLCF . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ المركز الوطني لأبحاث الطاقة والحوسبة العلمية . "استخدام بايثون على بيرلموتر" . وثائق المركز الوطني لأبحاث الطاقة والحوسبة العلمية . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ جامعة زيورخ التقنية . "CuPy" . الحوسبة العلمية . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ المعهد الوطني للعلوم والتكنولوجيا الصناعية المتقدمة . "Chainer" . دليل مستخدم ABCI 2.0 . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ "المشاريع المدعومة - NumFOCUS" . تم الاطلاع عليه بتاريخ 8 سبتمبر 2024 .
- ↑ "نظرة عامة" . وثائق CuPy . تم الاطلاع عليها بتاريخ 18 يونيو 2022 .
- ↑ "جدول المقارنة" . وثائق CuPy . تم الاطلاع عليه بتاريخ 18 يونيو 2022 .
- ↑ "CUDA Python | مطور NVIDIA" . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ "مرحباً بكم في وثائق DLPack!" . وثائق DLPack 0.6.0 . تم الاطلاع عليها بتاريخ 21 يونيو 2022 .
- ↑ "واجهة مصفوفة CUDA (الإصدار 3)" . وثائق Numba 0.55.2+0.g2298ad618.dirty-py3.7-linux-x86_64.egg . تم الاطلاع عليها بتاريخ 21 يونيو 2022 .
- ↑ "NEP 13 — آلية لتجاوز Ufuncs — مقترحات تحسين NumPy" . numpy.org . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ "NEP 18 — آلية إرسال لوظائف المصفوفات عالية المستوى في NumPy — مقترحات تحسين NumPy" . numpy.org . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ تشارلز ر. هاريس؛ ك. جارود ميلمان؛ ستيفان ج. فان دير والت؛ وآخرون . (16 سبتمبر 2020). " برمجة المصفوفات باستخدام NumPy" ( ملف PDF) . Nature . 585 (7825): 357–362 . arXiv : 2006.10256 . Bibcode : 2020Natur.585..357H . doi : 10.1038/S41586-020-2649-2 . ISSN 1476-4687 . PMC 7759461. PMID 32939066. Wikidata Q99413970 .
- ↑ "تقرير 2021 - اتحاد واجهات برمجة تطبيقات بيانات بايثون" (ملف PDF) . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ "الغرض والنطاق" . وثائق معيار واجهة برمجة تطبيقات المصفوفات في بايثون 2021.12 . تم الاطلاع عليها بتاريخ 21 يونيو 2022 .
- ↑ "تثبيت spaCy" . وثائق استخدام spaCy . تم الاطلاع عليها بتاريخ 21 يونيو 2022 .
- ^ باتيل، أنكور أ. أراسانيبالاي ، أجاي أوبيلي (مايو 2021). معالجة اللغات الطبيعية التطبيقية في المؤسسة ( الطبعة الأولى). شركة O'Reilly Media، Inc.، ص. 68. ردمك 9781492062578.
- ↑ "مقدمة عن حزمة بايثون" . وثائق xgboost 1.6.1 . تم الاطلاع عليها بتاريخ 21 يونيو 2022 .
- ↑ "UCBerkeleySETI/turbo_seti: turboSETI -- خوارزمية بحث SETI قائمة على لغة بايثون" . GitHub . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ "علوم البيانات المفتوحة باستخدام وحدة معالجة الرسومات | RAPIDS" . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ "وثائق واجهة برمجة التطبيقات" . وثائق RAPIDS . تم الاطلاع عليها بتاريخ 21 يونيو 2022 .
- ↑ "مشاركة البيانات بكفاءة بين CuPy و RAPIDS" . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ "10 دقائق لـ cuDF و CuPy" . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ أليكس، روجوزنيكوف (2022). إينوبس: عمليات معالجة الموترات الواضحة والموثوقة باستخدام تدوين يشبه تدوين أينشتاين . المؤتمر الدولي حول تمثيلات التعلم.
- ↑ "arogozhnikov/einops: إعادة ابتكار عمليات التعلم العميق (لـ pytorch و tensorflow و jax وغيرها)" . GitHub . تم الاطلاع عليه بتاريخ 21 يونيو 2022 .
- ↑ "دعم واجهة برمجة تطبيقات المصفوفات (تجريبي) - وثائق مكتبة scikit-learn" . تم الاطلاع عليه بتاريخ 8 سبتمبر 2024 .
- ↑ توكوي، سيا؛ أوكوتا، ريوسوكي؛ أكيبا، تاكويا؛ نيتاني، يوسوكي؛ أوغاوا، تورو؛ سايتو، شونتا؛ سوزوكي، شوجي؛ أونيشي، كوتا؛ فوغل، برايان؛ فينسنت، هيرويوكي يامازاكي (2019). تشينر: إطار عمل للتعلم العميق لتسريع دورة البحث . وقائع المؤتمر الدولي الخامس والعشرين لجمعية ACM SIGKDD حول اكتشاف المعرفة واستخراج البيانات. doi : 10.1145/3292500.3330756 .
روابط خارجية
- لغات برمجة المصفوفات
- برنامج رياضيات مجاني
- برامج علمية مجانية
- برنامج التحليل العددي لنظام لينكس
- برنامج التحليل العددي لنظام التشغيل ويندوز
- لغات البرمجة العددية
- مكتبات بايثون (لغة برمجة) العلمية
- برنامج مرخص بموجب ترخيص MIT
