Применение платформы Python для высокопроизводительных вычислений

Руководители научной школы: 

Русол Андрей Владимирович, к.т.н., с.н.с. ГЕОХИ РАН

Аннотация: 

Данная научная школа посвящена обзору основных возможностей языка Python, которые превращают его в платформу научных и инженерных вычислений. В настоящий момент Python обладает широким набором инструментов для построения вычислительных систем в широком диапазоне архитектур: от ноутбуков до высокопроизводительных суперкомпьютеров. В рамках школы предполагается дать основные сведения о применении Python для решения научных и инженерных вычислительных задач, хранению и обработке полученных результатов. В качестве базовых возможностей решения вычислительных задач и визуализации результатов, хранения и обработки данных в Python будут рассмотрены пакеты NumPy, SciPy, Matplotlib, H5Py, Pandas. Планируется уделить внимание реализованным в Python механизмам поддержки функциональности технологий параллельного программирования MPI и Nvidia CUDA, существенно расширяющим базовые возможности. Пакет MPI4Py обеспечивает Python такие возможности, как работа с группами и коммуникаторами, организация параллельного ввода-вывода, односторонние коммуникации, обработка ошибок и т.п. Основную возможность использования технологии Nvidia CUDA в Python обеспечивает пакет PyCUDA, при рассмотрении которого будут отмечены способы распределения работ и синхронизации, а также дополнительные вспомогательные процедуры. Помимо этих возможностей, для выполнения высокопроизводительных вычислений в Python реализован ряд специализированных JIT компиляторов, существенно ускоряющих выполнение кода. Существующие в настоящий момент JIT-компиляторы позволяют ускорять выполнение Python-скриптов не только за счет преобразования в компилированный последовательный код С/С++ или FORTRAN, но и обеспечивают возможность реализации GPGPU вычислений, используя технологии CUDA и OpenCL. В школе предполагается уделить внимание использованию JIT-компиляторов, представленных в пакетах Numba, Compyle и пр. Для платформы Python реализован целый ряд пакетов, реализующих технологии ускорения работы кода так, чтобы пользователь был максимально изолирован от необходимости переписывания работающего кода, основанного на базовых пакетах Python. Например, пакет JAX объединяет несколько технологий, в том числе JIT-компиляцию, так чтобы вызовы функций NumPy могли выполняться существенно быстрее. Пакет Modin предназначен для организации параллельной обработки данных в Pandas-подобных объектах хранения данных. Некоторые возможности таких пакетов будут рассмотрены на занятиях школы. Школа предполагает выполнение практических заданий, в том числе и на суперкомпьютерах.

 

Требования: Слушатели должны обладать базовыми знаниями по алгоритмизации и программированию, знать особенности синтаксиса языка программирования Python.

Материалы находятся по cсылке.

Подробная информация: 

Программное Обеспечение:  На компьютерах слушателей должен быть установлен определенный набор пакетов Python. Рекомендуется установить платформу Anaconda 3. Не нужно брать последние версии, т. к. далеко не все необходимые пакеты уже представлены для последней версии интерпретатора Python 3.Х.

Рекомендуется версия Anaconda 3: https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

Необходимые пакеты, отсутствующие в сборке Anaconda 3, будут устанавливаться во время занятий.

Внимание пользователям Windows: Практически все рассматриваемые во время занятий технологии программирования реализованы для работы в операционной системе Linux. Портированные в Windows варианты пакетов не всегда корректно работают, а некоторые пакеты вообще не имеют официальных версий для ОС Windows. Поиск вариантов для операционной системы Windows рекомендуется проводить на сайте разработчика Christoph Gohlke: https://www.lfd.uci.edu/~gohlke/pythonlibs/