280 likes | 821 Views
Использование возможностей CUDA на языке Python. Александр Мыльцев (Parallel Compute). CUDA из Python. Copperhead data-parallelism для Python Theano mathematical expressions evaluator Computer vision Python binding to OpenVIDIA PyCUDA. CUDA из Python. Copperhead
E N D
Использование возможностей CUDA на языке Python Александр Мыльцев(Parallel Compute)
CUDA из Python • Copperhead • data-parallelism для Python • Theano • mathematical expressions evaluator • Computer vision • Python binding toOpenVIDIA • PyCUDA
CUDA из Python • Copperhead • data-parallelism для Python • Theano • mathematical expressions evaluator • Computer vision • Python binding toOpenVIDIA • PyCUDA
Высокопроизводительный код • «Традиционный» подход: • C/C++/Fortran • Библиотеки • «Альтернативный» подход: • Скрипты для управления • GPU для ускорения
Скриптовый язык • Интерактивный • Автоматическое управление памятью • Динамически типизированный • Хорошо подходит для «склейки» низкоуровневых частей
Интерпретация без компиляции • Создание программы
Интерпретация без компиляции • Создание программы
Python • Пример скриптового языка • Зрелый • Большое сообщество • Написан на C (портируемость) • Мультипарадигмальный
GPU • GPU не программируется скриптами • Параллельность • Аппаратно-зависим • Делается для быстродействия • Дополнить друг друга
GPU • GPU не программируется скриптами • Параллельность • Аппаратно-зависим • Делается для быстродействия • Дополнить друг друга • Скриптовый язык на CPU • Для управления задачами
GPU • GPU не программируется скриптами • Параллельность • Аппаратно-зависим • Делается для быстродействия • Дополнить друг друга • Скриптовый язык на CPU • Для управления задачами • Python + CUDA = PyCUDA
Простой пример • examples/demo.py в пакете PyCUDA
Особенности PyCUDA • Предоставляет полный доступ • Автоматическое управление памятью • Предоставляет абстракции • Можно работать в интерактивно режиме • Автоматическая проверка ошибок • Интеграция с numpy
Поддержка CUDA • Полная • Например: • Массивы и текстуры • Передача данных • Streams и events • GL • …
Операционные системы • Все, которые поддерживает CUDA • Linux • Windows • OS X
Авточистка • Достижимые объекты (память, потоки, …) никогда не удаляются • Недостижимые объекты удалятся когда-нибудь в будущем • Можно удалить вручную • obj.free()
gpuarray • pycuda.gpuarray • numpy.ndarray • gpuarray.to_gpu(numpy_array) • numpy_array = gpuarray.get() • +, -, *, /, fill, sin, exp, rand, norm, … • Разные типы (int32 + float32 = float64) • “print gpuarray” для отладки
Поэлементные выражения • Экономия циклов
Редукция. Проще • Пример: вычисление скалярного произведения
Брошюра «Вычисления на NVIDIA Tesla» • На последней странице контакты Антона Джораева • http://mathema.tician.de/software/pycuda • Основана на лекцииАндреаса Клёкнера (Andreas Klockner) • http://mathema.tician.de/news.tiker.net/files/main.pdf • alexander.myltsev@parallel-compute.com Вопросы