Использование возможностей CUDA на языке Python

Preview:

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 Presentation

Citation preview

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

• alexander.myltsev@parallel-compute.com

Вопросы