Jump to content

CuPy

CuPy
Оригинальный автор(ы) Сейя Токуи
Разработчик(и) Сообщество, Preferred Networks, Inc.
Первоначальный выпуск 2 сентября 2015 г .; 8 лет назад ( 2015-09-02 ) . [1]
Стабильная версия
v10.5.0 [2] / 26 мая 2022 г .; 2 года назад ( 26 мая 2022 ) [2]
Предварительный выпуск
v11.0.0b3 [2] / 26 мая 2022 г .; 2 года назад ( 26 мая 2022 ) [2]
Репозиторий github /чашка /чашка
Написано в Питон , Китон , CUDA
Операционная система Линукс, Винда
Платформа Кросс-платформенный
Тип Численный анализ
Лицензия С
Веб-сайт капризный .dev

CuPy — это библиотека с открытым исходным кодом для вычислений с ускорением на графическом процессоре с языком программирования Python , обеспечивающая поддержку многомерных массивов, разреженных матриц и множества числовых алгоритмов, реализованных на их основе. [3] CuPy использует тот же набор API, что и NumPy и SciPy , что позволяет ему быть полной заменой для запуска кода NumPy/SciPy на графическом процессоре. CuPy поддерживает платформу графического процессора Nvidia CUDA и AMD ROCm , начиная с версии 9.0. платформу графического процессора [4] [5]

CuPy изначально был разработан как бэкэнд платформы глубокого обучения Chainer , а затем создан как независимый проект в 2017 году. [6]

CuPy является частью библиотек массивов экосистемы NumPy. [7] и широко применяется для использования графического процессора с Python, [8] особенно в высокопроизводительных вычислительных средах, таких как Summit , [9] Перлмуттер , [10] ЭЙЛЕР , [11] и АБКИ . [12]

CuPy — это дочерний проект NumFOCUS . [13]

CuPy реализует API-интерфейсы, совместимые с NumPy/SciPy, а также функции для написания определяемых пользователем ядер графического процессора или доступа к низкоуровневым API. [14] [15]

NumPy-совместимые API

[ редактировать ]

Тот же набор API, определенный в пакете NumPy ( numpy.*) доступны под cupy.* упаковка.

SciPy-совместимые API

[ редактировать ]

Тот же набор API, определенный в пакете SciPy ( scipy.*) доступны под cupyx.scipy.* упаковка.

Пользовательские ядра графического процессора

[ редактировать ]
  • Шаблоны ядра для поэлементных операций и операций сокращения.
  • Необработанное ядро ​​(CUDA C/C++)
  • Транспилятор «точно в срок» (JIT)
  • Слияние ядер

Распределенные вычисления

[ редактировать ]
  • Распределенный коммуникационный пакет ( cupyx.distributed), предоставляя коллективные и одноранговые примитивы

Низкоуровневые функции CUDA

[ редактировать ]
  • Трансляция и событие
  • Пул памяти
  • Профилировщик
  • Привязка API хоста
  • Поддержка CUDA Python [16]

Совместимость

[ редактировать ]
  • ДЛПак [17]
  • Интерфейс массива CUDA [18]
  • НЭП 13 ( __array_ufunc__) [19]
  • НЭП 18 ( __array_function__) [20] [21]
  • Стандарт API массива [22] [23]

Создание массива

[ редактировать ]
>>> import cupy as cp>>> x = cp.array([1, 2, 3])>>> xarray([1, 2, 3])>>> y = cp.arange(10)>>> yarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

Основные операции

[ редактировать ]
>>> import cupy as cp>>> x = cp.arange(12).reshape(3, 4).astype(cp.float32)>>> xarray([[ 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))  # grid, block and arguments>>> outarray([[  0.,   1.,   4.,   9.],       [ 16.,  25.,  36.,  49.],       [ 64.,  81., 100., 121.],       [144., 169., 196., 225.]], dtype=float32)

Приложения

[ редактировать ]

См. также

[ редактировать ]
  1. ^ «Релиз v1.3.0 – цепочка/цепочка» . Проверено 25 июня 2022 г. - через GitHub .
  2. ^ Перейти обратно: а б с д «Выпуски – купи/купи» . Проверено 18 июня 2022 г. - через GitHub .
  3. ^ Окута, Рёске; Унно, Юя; Нишино, Дайсуке; Хидо, Сёхей; Лумис, Криссман (2017). CuPy: совместимая с NumPy библиотека для вычислений на графическом процессоре NVIDIA (PDF) . Материалы семинара по системам машинного обучения (LearningSys) на Тридцать первой ежегодной конференции по нейронным системам обработки информации (NIPS).
  4. ^ «CuPy 9.0 обеспечивает поддержку графических процессоров AMD в этой совместимой с Numpy библиотеке — Phoronix» . Фороникс . 29 апреля 2021 г. Проверено 21 июня 2022 г.
  5. ^ «AMD ведет высокопроизводительные вычисления к экзафлопсу и за его пределами» . 28 июня 2021 г. Проверено 21 июня 2022 г. Совсем недавно CuPy, библиотека массивов с открытым исходным кодом на Python, расширила свою традиционную поддержку графических процессоров, выпустив версию 9.0, которая теперь предлагает поддержку стека ROCm для вычислений с графическим ускорением.
  6. ^ «Preferred Networks выпустила версию 2 Chainer, фреймворка с открытым исходным кодом для глубокого обучения — Preferred Networks, Inc» . 2 июня 2017 г. Проверено 18 июня 2022 г.
  7. ^ «НумПи» . numpy.org . Проверено 21 июня 2022 г.
  8. ^ Горелик, Миша; Озсвальд, Ян (апрель 2020 г.). Высокопроизводительный Python: Практическое производительное программирование для людей (2-е изд.). О'Рейли Медиа, Инк. с. 190. ИСБН  9781492055020 .
  9. ^ Вычислительный центр для руководителей в Ок-Ридже . «Установка CuPy» . Пользовательская документация OLCF . Проверено 21 июня 2022 г.
  10. ^ Национальный научно-вычислительный центр энергетических исследований . «Использование Python в Perlmutter» . Документация NERSC . Проверено 21 июня 2022 г.
  11. ^ ETH Цюрих . «КуПи» . Научные вычисления . Проверено 21 июня 2022 г.
  12. ^ Национальный институт передовых промышленных наук и технологий . «Цепочка» . Руководство пользователя ABCI 2.0 . Проверено 21 июня 2022 г.
  13. ^ «Партнерские проекты — NumFOCUS» . Проверено 18 июня 2022 г.
  14. ^ «Обзор» . Документация CuPy . Проверено 18 июня 2022 г.
  15. ^ «Таблица сравнения» . Документация CuPy . Проверено 18 июня 2022 г.
  16. ^ «CUDA Python | Разработчик NVIDIA» . Проверено 21 июня 2022 г.
  17. ^ «Добро пожаловать в документацию DLPack!» . Документация DLPack 0.6.0 . Проверено 21 июня 2022 г.
  18. ^ «Интерфейс массива CUDA (версия 3)» . Документация Numba 0.55.2+0.g2298ad618.dirty-py3.7-linux-x86_64.egg . Проверено 21 июня 2022 г.
  19. ^ «NEP 13 — Механизм переопределения Ufuncs — предложения по расширению NumPy» . numpy.org . Проверено 21 июня 2022 г.
  20. ^ «NEP 18 — Механизм диспетчеризации для функций массива высокого уровня NumPy — Предложения по улучшению NumPy» . numpy.org . Проверено 21 июня 2022 г.
  21. ^ Чарльз Р. Харрис; К. Джаррод Миллман; Стефан Дж. ван дер Вальт; и др. (16 сентября 2020 г.). «Программирование массивов с помощью NumPy» (PDF) . Природа . 585 (7825): 357–362. arXiv : 2006.10256 . дои : 10.1038/S41586-020-2649-2 . ISSN   1476-4687 . ПМЦ   7759461 . ПМИД   32939066 . Викиданные   Q99413970 .
  22. ^ «Отчет за 2021 год — Консорциум API данных Python» (PDF) . Проверено 21 июня 2022 г.
  23. ^ «Цель и сфера применения» . Документация по стандарту API массивов Python 2021.12 . Проверено 21 июня 2022 г.
  24. ^ «Установить SpaCy» . Документация по использованию spaCy . Проверено 21 июня 2022 г.
  25. ^ Патель, Анкур А.; Арасанипалаи, Аджай Уппили (май 2021 г.). Прикладная обработка естественного языка на предприятии (1-е изд.). О'Рейли Медиа, Инк. п. 68. ИСБН  9781492062578 .
  26. ^ «Введение в пакет Python» . Документация xgboost 1.6.1 . Проверено 21 июня 2022 г.
  27. ^ «UCBerkeleySETI/turbo_seti: TurboSETI — алгоритм поиска SETI на основе Python» . Гитхаб . Проверено 21 июня 2022 г.
  28. ^ «Открытая наука о данных графического процессора | RAPIDS» . Проверено 21 июня 2022 г.
  29. ^ «API-документы» . Документы RAPIDS . Проверено 21 июня 2022 г.
  30. ^ «Эффективный обмен данными между CuPy и RAPIDS» . Проверено 21 июня 2022 г.
  31. ^ «10 минут до cuDF и CuPy» . Проверено 21 июня 2022 г.
  32. ^ Алексей, Рогожников (2022). Einops: понятные и надежные тензорные манипуляции с обозначениями, подобными Эйнштейну . Международная конференция по обучению представлений.
  33. ^ «арогожников/einops: заново изобретены операции глубокого обучения (для pytorch, tensorflow, jax и других)» . Гитхаб . Проверено 21 июня 2022 г.
  34. ^ Токуи, Сейя; Окута, Рёске; Акиба, Такуя; Ниитани, Юсуке; Огава, Тору; Сайто, Шунта; Сузуки, Сюдзи; Уэниши, Кота; Фогель, Брайан; Винсент, Хироюки Ямадзаки (2019). Чейнер: платформа глубокого обучения для ускорения исследовательского цикла . Материалы 25-й Международной конференции ACM SIGKDD по обнаружению знаний и интеллектуальному анализу данных. дои : 10.1145/3292500.3330756 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cdf11750b2eda8b2048a38081d804ff9__1709793240
URL1:https://arc.ask3.ru/arc/aa/cd/f9/cdf11750b2eda8b2048a38081d804ff9.html
Заголовок, (Title) документа по адресу, URL1:
CuPy - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)