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

25
Использование возможностей CUDA на языке Python Александр Мыльцев (Parallel Compute) 1

Upload: braith

Post on 14-Feb-2016

208 views

Category:

Documents


2 download

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

TRANSCRIPT

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

1

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

Александр Мыльцев (Parallel Compute)

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

2

CUDA из Python

• Copperhead– data-parallelism для Python

• Theano– mathematical expressions evaluator

• Computer vision– Python binding to OpenVIDIA

• PyCUDA

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

3

CUDA из Python

• Copperhead– data-parallelism для Python

• Theano– mathematical expressions evaluator

• Computer vision– Python binding to OpenVIDIA

• PyCUDA

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

4

Высокопроизводительный код

• «Традиционный» подход:– C/C++/Fortran– Библиотеки

• «Альтернативный» подход:– Скрипты для управления– GPU для ускорения

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

5

Скриптовый язык

• Интерактивный• Автоматическое управление памятью• Динамически типизированный• Хорошо подходит для «склейки»

низкоуровневых частей

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

6

Интерпретация без компиляции

• Создание программы

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

7

Интерпретация без компиляции

• Создание программы

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

8

Python

• Пример скриптового языка– Зрелый– Большое сообщество– Написан на C (портируемость)– Мультипарадигмальный

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

9

Как это выглядит?

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

10

GPU

• GPU не программируется скриптами– Параллельность– Аппаратно-зависим– Делается для быстродействия

• Дополнить друг друга

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

11

GPU

• GPU не программируется скриптами– Параллельность– Аппаратно-зависим– Делается для быстродействия

• Дополнить друг друга

• Скриптовый язык на CPU– Для управления задачами

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

12

GPU

• GPU не программируется скриптами– Параллельность– Аппаратно-зависим– Делается для быстродействия

• Дополнить друг друга

• Скриптовый язык на CPU– Для управления задачами

• Python + CUDA = PyCUDA

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

13

Простой пример

• examples/demo.py в пакете PyCUDA

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

14

Простой пример

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

15

Простой пример. Проще

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

16

Особенности PyCUDA

• Предоставляет полный доступ• Автоматическое управление памятью• Предоставляет абстракции• Можно работать в интерактивно режиме• Автоматическая проверка ошибок• Интеграция с numpy

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

17

Поддержка CUDA

• Полная• Например:– Массивы и текстуры– Передача данных– Streams и events– GL– …

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

18

Операционные системы

• Все, которые поддерживает CUDA– Linux– Windows– OS X

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

19

Документация

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

20

Процесс разработки

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

21

Авточистка

• Достижимые объекты (память, потоки, …) никогда не удаляются

• Недостижимые объекты удалятся когда-нибудь в будущем

• Можно удалить вручную– obj.free()

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

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” для отладки

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

23

Поэлементные выражения

• Экономия циклов

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

24

Редукция. Проще

• Пример: вычисление скалярного произведения

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

25

• Брошюра «Вычисления на NVIDIA Tesla»– На последней странице контакты

Антона Джораева• http://mathema.tician.de/software/pycuda– Основана на лекции Андреаса Клёкнера

(Andreas Klockner)– http://mathema.tician.de/news.tiker.net/files/main.pdf

[email protected]

Вопросы