1 / 25

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

Использование возможностей CUDA на языке Python. Александр Мыльцев (Parallel Compute). CUDA из Python. Copperhead data-parallelism для Python Theano mathematical expressions evaluator Computer vision Python binding to OpenVIDIA PyCUDA. CUDA из Python. Copperhead

braith
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. CUDA из Python • Copperhead • data-parallelism для Python • Theano • mathematical expressions evaluator • Computer vision • Python binding toOpenVIDIA • PyCUDA

  3. CUDA из Python • Copperhead • data-parallelism для Python • Theano • mathematical expressions evaluator • Computer vision • Python binding toOpenVIDIA • 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 Вопросы

More Related