Что такое CuPy? Продолжаем знакомиться с терминами из мира нейросетей. Спасибо коллегам из лаборатории больших данных компании «Криптонит», что помогают нам делать эти посты.
CuPy — это совместимая с NumPy/SciPy библиотека для вычислений на графических процессорах (ГП) с помощью Python. CuPy позволяет использовать существующий код на NumPy/SciPy, запуская его на платформах Nvidia CUDA или AMD ROCm.
В среде AMD ROCm CuPy автоматически переводит все вызовы CUDA API в ROCm HIP, что позволяет запускать код на ГП Nvidia и AMD без каких-либо модификаций.
CuPy реализует стандартные API (DLPack, CUDA Array Interface), благодаря которым легко интегрируется с NumPy, PyTorch, TensorFlow, MPI4Py и другими библиотеками.
Кстати, одной из них является библиотека XNumPy, которую написал исследователь компании «Криптонит» Игорь Нетай. Она позволяет контролировать точность расчётов на каждом этапе вычислений.
CuPy может работать с несколькими GPU или кластерами через пакет распределённых вычислений (cupyx.distributed). В CuPy доступны низкоуровневые функции CUDA (профилировщик CUDA Profiler, прямой вызов библиотек CUDA, настройка выделенной памяти и другие).