Использование возможностей cuda на языке python
DESCRIPTION
Использование возможностей CUDA на языке Python. Александр Мыльцев (Parallel Compute). CUDA из Python. Copperhead data-parallelism для Python Theano mathematical expressions evaluator Computer vision Python binding to OpenVIDIA PyCUDA. CUDA из Python. Copperhead - PowerPoint PPT PresentationTRANSCRIPT
1
Использование возможностей CUDA на языке Python
Александр Мыльцев (Parallel Compute)
2
CUDA из Python
• Copperhead– data-parallelism для Python
• Theano– mathematical expressions evaluator
• Computer vision– Python binding to OpenVIDIA
• PyCUDA
3
CUDA из Python
• Copperhead– data-parallelism для Python
• Theano– mathematical expressions evaluator
• Computer vision– Python binding to OpenVIDIA
• PyCUDA
4
Высокопроизводительный код
• «Традиционный» подход:– C/C++/Fortran– Библиотеки
• «Альтернативный» подход:– Скрипты для управления– GPU для ускорения
5
Скриптовый язык
• Интерактивный• Автоматическое управление памятью• Динамически типизированный• Хорошо подходит для «склейки»
низкоуровневых частей
6
Интерпретация без компиляции
• Создание программы
7
Интерпретация без компиляции
• Создание программы
8
Python
• Пример скриптового языка– Зрелый– Большое сообщество– Написан на C (портируемость)– Мультипарадигмальный
9
Как это выглядит?
10
GPU
• GPU не программируется скриптами– Параллельность– Аппаратно-зависим– Делается для быстродействия
• Дополнить друг друга
11
GPU
• GPU не программируется скриптами– Параллельность– Аппаратно-зависим– Делается для быстродействия
• Дополнить друг друга
• Скриптовый язык на CPU– Для управления задачами
12
GPU
• GPU не программируется скриптами– Параллельность– Аппаратно-зависим– Делается для быстродействия
• Дополнить друг друга
• Скриптовый язык на CPU– Для управления задачами
• Python + CUDA = PyCUDA
13
Простой пример
• examples/demo.py в пакете PyCUDA
14
Простой пример
15
Простой пример. Проще
16
Особенности PyCUDA
• Предоставляет полный доступ• Автоматическое управление памятью• Предоставляет абстракции• Можно работать в интерактивно режиме• Автоматическая проверка ошибок• Интеграция с numpy
17
Поддержка CUDA
• Полная• Например:– Массивы и текстуры– Передача данных– Streams и events– GL– …
18
Операционные системы
• Все, которые поддерживает CUDA– Linux– Windows– OS X
19
Документация
20
Процесс разработки
21
Авточистка
• Достижимые объекты (память, потоки, …) никогда не удаляются
• Недостижимые объекты удалятся когда-нибудь в будущем
• Можно удалить вручную– obj.free()
22
gpuarray
• pycuda.gpuarray• numpy.ndarray– gpuarray.to_gpu(numpy_array)– numpy_array = gpuarray.get()
• +, -, *, /, fill, sin, exp, rand, norm, …• Разные типы (int32 + float32 = float64)• “print gpuarray” для отладки
23
Поэлементные выражения
• Экономия циклов
24
Редукция. Проще
• Пример: вычисление скалярного произведения
25
• Брошюра «Вычисления на NVIDIA Tesla»– На последней странице контакты
Антона Джораева• http://mathema.tician.de/software/pycuda– Основана на лекции Андреаса Клёкнера
(Andreas Klockner)– http://mathema.tician.de/news.tiker.net/files/main.pdf
Вопросы