CuPy
Оригинальный автор(ы) | Сейя Токуи |
---|---|
Разработчик(и) | Сообщество, Preferred Networks, Inc. |
Первоначальный выпуск | 2 сентября 2015 г [1] | .
Стабильная версия | |
Предварительный выпуск | |
Репозиторий | github |
Написано в | Питон , Китон , CUDA |
Операционная система | Линукс, Винда |
Платформа | Кросс-платформенный |
Тип | Численный анализ |
Лицензия | С |
Веб-сайт | капризный |
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.*
упаковка.
- Многомерный массив (
cupy.ndarray
) для логических, целочисленных, плавающих и сложных типов данных. - Функции уровня модуля
- линейной алгебры Функции
- Быстрое преобразование Фурье
- Генератор случайных чисел
SciPy-совместимые API
[ редактировать ]Тот же набор API, определенный в пакете SciPy ( scipy.*
) доступны под cupyx.scipy.*
упаковка.
- Разреженные матрицы (
cupyx.scipy.sparse.*_matrix
) формата CSR, COO, CSC и DIA. - Дискретное преобразование Фурье
- Продвинутая линейная алгебра
- Многомерная обработка изображений
- Разреженная линейная алгебра
- Специальные функции
- Обработка сигналов
- Статистические функции
Пользовательские ядра графического процессора
[ редактировать ]- Шаблоны ядра для поэлементных операций и операций сокращения.
- Необработанное ядро (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)
Приложения
[ редактировать ]- простор [24] [25]
- XGBoost [26]
- turboSETI ( Berkeley SETI ) [27]
- NVIDIA РАПИДЫ [28] [29] [30] [31]
- эйнопс [32] [33]
- Цепной [34]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Релиз v1.3.0 – цепочка/цепочка» . Проверено 25 июня 2022 г. - через GitHub .
- ^ Перейти обратно: а б с д «Выпуски – купи/купи» . Проверено 18 июня 2022 г. - через GitHub .
- ^ Окута, Рёске; Унно, Юя; Нишино, Дайсуке; Хидо, Сёхей; Лумис, Криссман (2017). CuPy: совместимая с NumPy библиотека для вычислений на графическом процессоре NVIDIA (PDF) . Материалы семинара по системам машинного обучения (LearningSys) на Тридцать первой ежегодной конференции по нейронным системам обработки информации (NIPS).
- ^ «CuPy 9.0 обеспечивает поддержку графических процессоров AMD в этой совместимой с Numpy библиотеке — Phoronix» . Фороникс . 29 апреля 2021 г. Проверено 21 июня 2022 г.
- ^ «AMD ведет высокопроизводительные вычисления к экзафлопсу и за его пределами» . 28 июня 2021 г. Проверено 21 июня 2022 г.
Совсем недавно CuPy, библиотека массивов с открытым исходным кодом на Python, расширила свою традиционную поддержку графических процессоров, выпустив версию 9.0, которая теперь предлагает поддержку стека ROCm для вычислений с графическим ускорением.
- ^ «Preferred Networks выпустила версию 2 Chainer, фреймворка с открытым исходным кодом для глубокого обучения — Preferred Networks, Inc» . 2 июня 2017 г. Проверено 18 июня 2022 г.
- ^ «НумПи» . numpy.org . Проверено 21 июня 2022 г.
- ^ Горелик, Миша; Озсвальд, Ян (апрель 2020 г.). Высокопроизводительный Python: Практическое производительное программирование для людей (2-е изд.). О'Рейли Медиа, Инк. с. 190. ИСБН 9781492055020 .
- ^ Вычислительный центр для руководителей в Ок-Ридже . «Установка CuPy» . Пользовательская документация OLCF . Проверено 21 июня 2022 г.
- ^ Национальный научно-вычислительный центр энергетических исследований . «Использование Python в Perlmutter» . Документация NERSC . Проверено 21 июня 2022 г.
- ^ ETH Цюрих . «КуПи» . Научные вычисления . Проверено 21 июня 2022 г.
- ^ Национальный институт передовых промышленных наук и технологий . «Цепочка» . Руководство пользователя ABCI 2.0 . Проверено 21 июня 2022 г.
- ^ «Партнерские проекты — NumFOCUS» . Проверено 18 июня 2022 г.
- ^ «Обзор» . Документация 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) . Природа . 585 (7825): 357–362. arXiv : 2006.10256 . дои : 10.1038/S41586-020-2649-2 . ISSN 1476-4687 . ПМЦ 7759461 . ПМИД 32939066 . Викиданные Q99413970 .
- ^ «Отчет за 2021 год — Консорциум API данных Python» (PDF) . Проверено 21 июня 2022 г.
- ^ «Цель и сфера применения» . Документация по стандарту API массивов Python 2021.12 . Проверено 21 июня 2022 г.
- ^ «Установить SpaCy» . Документация по использованию spaCy . Проверено 21 июня 2022 г.
- ^ Патель, Анкур А.; Арасанипалаи, Аджай Уппили (май 2021 г.). Прикладная обработка естественного языка на предприятии (1-е изд.). О'Рейли Медиа, Инк. п. 68. ИСБН 9781492062578 .
- ^ «Введение в пакет Python» . Документация xgboost 1.6.1 . Проверено 21 июня 2022 г.
- ^ «UCBerkeleySETI/turbo_seti: TurboSETI — алгоритм поиска SETI на основе Python» . Гитхаб . Проверено 21 июня 2022 г.
- ^ «Открытая наука о данных графического процессора | RAPIDS» . Проверено 21 июня 2022 г.
- ^ «API-документы» . Документы RAPIDS . Проверено 21 июня 2022 г.
- ^ «Эффективный обмен данными между CuPy и RAPIDS» . Проверено 21 июня 2022 г.
- ^ «10 минут до cuDF и CuPy» . Проверено 21 июня 2022 г.
- ^ Алексей, Рогожников (2022). Einops: понятные и надежные тензорные манипуляции с обозначениями, подобными Эйнштейну . Международная конференция по обучению представлений.
- ^ «арогожников/einops: заново изобретены операции глубокого обучения (для pytorch, tensorflow, jax и других)» . Гитхаб . Проверено 21 июня 2022 г.
- ^ Токуи, Сейя; Окута, Рёске; Акиба, Такуя; Ниитани, Юсуке; Огава, Тору; Сайто, Шунта; Сузуки, Сюдзи; Уэниши, Кота; Фогель, Брайан; Винсент, Хироюки Ямадзаки (2019). Чейнер: платформа глубокого обучения для ускорения исследовательского цикла . Материалы 25-й Международной конференции ACM SIGKDD по обнаружению знаний и интеллектуальному анализу данных. дои : 10.1145/3292500.3330756 .
Внешние ссылки
[ редактировать ]- Языки программирования массивов
- Бесплатное математическое программное обеспечение
- Бесплатное научное программное обеспечение
- Программное обеспечение для численного анализа для Linux
- Программное обеспечение для численного анализа для Windows
- Языки числового программирования
- Научные библиотеки Python (язык программирования)
- Программное обеспечение, использующее лицензию MIT