Рубрика «CUDA» - 2
Перенос молекулярной динамики на CUDA. Часть I: Основы
2020-06-26 в 11:27, admin, рубрики: CUDA, математическое моделирование, молекулярная динамика, Научно-популярное, параллельное программирование, физика, химия, численные методыЦель данной статьи – поднять вопросы распараллеливания кода программы для численного моделирования методом молекулярной динамики (МД) с помощью технологии CUDA. Зачем это вообще нужно, ведь уже существуют программные пакеты по МД, работающие в том числе и на CUDA? Дело в том, что я развиваю свою собственную концепцию «непостоянного поля сил» (non-constant force field), которая не реализована в существующих МД-программах.
Переделывать чужой код под эти нужды – довольно неблагодарное занятие, поэтому я взялся перенести уже написанный свой последовательный код и заодно поделится некоторыми размышлениями. Кроме того, это ответ на часто мелькающий здесь комментарий к статьям по CUDA, вроде этого .
Итак, что же такое молекулярная динамика? На Хабре уже есть несколько постов на эту тему, например здесь или вот здесь. Кратко, МД – это метод, позволяющий моделировать движение множества частиц (в том числе атомов, ионов, молекул) и рассчитывать коллективные свойства системы, зависящие от этого движения. Как это работает? Допустим для множества из N частиц заданы некоторые начальные координаты, скорости, массы и (главное!) законы взаимодействия между ними. Изменяем координаты согласно скоростям. На основе законов взаимодействия вычисляем силы, действующие между частицами. Раз знаем силу и массу – знаем ускорение. Поправляем скорость с учетом ускорения. И снова переходим к изменению координат. И так повторяем тысячи раз, пока не надоест не наберем достаточную статистику.
Как GPU-вычисления буквально спасли меня на работе. Пример на Python
2020-06-06 в 6:56, admin, рубрики: CUDA, gpgpu, gpu, Nvidia, python, Блог компании Издательский дом «Питер», высокая производительность, ПрограммированиеПривет!
Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!
Вычисления на GPU – зачем, когда и как. Плюс немного тестов
2020-04-23 в 12:00, admin, рубрики: cpu, CUDA, gpgpu, GPU вычисления, Nvidia, opencl, Алгоритмы, Блог компании Технологический Центр Дойче Банка, Видеокарты, высокая производительность, производительность, сортировкаВсем давно известно, что на видеокартах можно не только в игрушки играть, но и выполнять вещи, никак не связанные с играми, например, нейронную сеть обучить, криптовалюту помайнить или же научные расчеты выполнить. Как так получилось, можно прочитать тут, а я хотел затронуть тему того, почему GPU может быть вообще интересен рядовому программисту (не связанному с GameDev), как подступиться к разработке на GPU, не тратя на это много времени, принять решение, нужно ли вообще в эту сторону смотреть, и «прикинуть на пальцах», какой профит можно получить.
Простая хэш-таблица для GPU
2020-03-17 в 10:44, admin, рубрики: CUDA, gpu, hash table, Алгоритмы, Блог компании Mail.Ru Group, Видеокарты, высокая производительность, никто не читает теги, хранение данныхЯ выложил на Github новый проект A Simple GPU Hash Table.
Это простая хэш-таблица для GPU, способная обрабатывать в секунду сотни миллионов вставок. На моём ноутбуке с NVIDIA GTX 1060 код вставляет 64 миллиона случайно сгенерированных пар ключ-значение примерно за 210 мс и удаляет 32 миллиона пар примерно за 64 мс.
То есть скорость на ноутбуке составляет примерно 300 млн вставок/сек и 500 млн удалений/сек.
Таблица написана на CUDA, хотя ту же методику можно применить к HLSL или GLSL. У реализации есть несколько ограничений, обеспечивающих высокую производительность на видеокарте:
- Обрабатываются только 32-битные ключи и такие же значения.
- Хэш-таблица имеет фиксированный размер.
- И этот размер должен быть равен двум в степени.
Для ключей и значений нужно зарезервировать простой разграничивающий маркер (в приведённом коде это 0xffffffff).
Читать полностью »
GoLang и OpenCV (OpenVino && Cuda)
2020-02-07 в 12:18, admin, рубрики: CUDA, Go, gocv, golang, intel, Nvidia, OpenVINO, Работа с видеоВсем доброго времени суток. На хабре (да и вообще в интернете) уже не мало статей о работе с OpenCV на Go.
Готовый код — это конечно интересно, а более подробную информацию об установке драйверов приходится собирать по кусочкам — постараюсь объединить все нужные телодвижения в одну статью.
У меня имеется ноутбук с Ubuntu 18.04 на борту,
- CPU: intel
- GPU: Intel/Nvidia
Nvidia и Intel пытаются превзойти друг друга, а я постараюсь одновременно использовать все преимущества OpenVino и Cuda.
Сразу предупреждаю, для использования Cuda нужно минимально Compute capability (version) 5.3, посмотреть для своей видеокарты можно тут
Джедайская техника уменьшения сверточных сетей — pruning
2019-12-27 в 7:10, admin, рубрики: cnn, convolutional neural network, CUDA, deep learning, eco, gpu, keras, machine learning, neural networks, Nvidia, optimization, pruning, python, speedup, TensorFlow, tensorrt, yolo, высокая производительность, искусственный интеллект, Исследования и прогнозы в IT, машинное обучение
Перед тобой снова задача детектирования объектов. Приоритет — скорость работы при приемлемой точности. Берешь архитектуру YOLOv3 и дообучаешь. Точность(mAp75) больше 0.95. Но скорость прогона всё еще низкая. Черт.
Сегодня обойдём стороной квантизацию. А под катом рассмотрим Model Pruning — обрезание избыточных частей сети для ускорения Inference без потери точности. Наглядно — откуда, сколько и как можно вырезать. Разберем, как сделать это вручную и где можно автоматизировать. В конце — репозиторий на keras.
Посторонись, CUDA — Intel анонсировала 7-нанометровый GPU для дата-центров
2019-11-18 в 15:43, admin, рубрики: amd, api, CUDA, DevCloud, DPC++, gpgpu, intel, miran, Nvidia, oneapi, Ponte Vecchio, Sapphire Rapids, Xe, Xeon Scalable, Блог компании Дата-центр «Миран», высокая производительность, дата-центр "Миран", Производство и разработка электроники
По прогнозам аналитиков, рынок дата-центров в ближайшие годы будет расти на 38% в год и за пять лет вырастет до $35 млрд, а самая ресурсоёмкая ниша (по интенсивности вычислений) — глубокое обучение, нейросети и задачи AI.
Конечно, Intel не собирается равнодушно смотреть, как Nvidia (и AMD, в меньшей степени) со своими GPU захватывают этот рынок, включая самый быстрорастущий сектор. На прошлой неделе гигант микроэлектронной промышленности сделал сразу несколько громких анонсов:
- процессоры для нейросетей Nervana NNP-T1000 и NNP-I1000 (NNP: neural network processors), а также чип Movidius VPU;
- 10-нанометровые процессоры Xeon Scalable (кодовое название Sapphire Rapids);
- унифицированные программные интерфейсы oneAPI (для CPU, GPU, FPGA) — конкурента Nvidia CUDA;
- 7-нанометровый GPU для дата-центров с кодовым названием Ponte Vecchio на новой архитектуре Xe.
Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз
2019-11-08 в 15:01, admin, рубрики: CUDA, opencl, Wolfram, wolfram language, wolfram mathematica, абсолютная точность, Алгоритмы, ассоциативные массивы, Блог компании Wolfram Research, векторизация, вычисления, дебаг, компиляция, компиляция в c, машинная точность, мемоизация, оптимизация кода, отладка, плавающая запятая, правила замены, Программирование, распараллеливание, символьные вычисления, списки, точность, ускорение кода, функциональное программирование, хеш-таблицы, хэширование, шаблоныСкачать файл с кодом и данные можно в оригинале поста в моем блоге
Картинка к вебинару и посту взята не просто так: в определенном смысле символьное ядро Wolfram Language можно сравнить с Таносом — если бы его мощь была бы направлена в правильное русло, он мог бы стать самым мощным и полезным «добряком». Так же и с символьным ядром Wolfram — его чудовищную мощь нужно правильно использовать, а если это делать не так, оно может стать настоящим «злом», замедляющим все очень сильно. Начинающие разработчики не знают многих важнейших парадигм, идей и принципов языка Wolfram Language, пишут код, который на самом деле дико неэффективен и после этого разочаровываются, хотя тут нет вины Wolfram Language. Эту ситуацию призвана исправить эта статья.
Мне довелось работать с Wolfram Language начиная с (уже довольно далекого) 2005 года (тогда еще была версия Mathematica 5.2, сейчас уже 12-я). За эти почти 15 лет произошло очень много: добавились тысячи новых встроенных функций и областей, в которых они работают (машинное обучение, точная геометрия, работа с аудио, работа в вебе, облачные возможности, глубокая поддержка единиц измерения, интеграция с базами данных Wolfram|Alpha, географические вычисления, поддержка работы с CUDA, Python, распараллеливание операций и многое многое другое), появились новые сервисы — облако Wolfram Cloud, широко известная система вычислительных значeний Wolfram|Alpha, репозиторий функций, репозиторий нейросетей и пр.
Читать полностью »
Грокаем PyTorch
2019-10-12 в 10:49, admin, рубрики: CUDA, gpu, python, pytorch, Алгоритмы, Блог компании Издательский дом «Питер», книги, машинное обучение, Профессиональная литератураПривет!
У нас в предзаказе появилась долгожданная книга о библиотеке PyTorch.
Поскольку весь необходимый базовый материал о PyTorch вы узнаете из этой книги, мы напоминаем о пользе процесса под названием «grokking» или «углубленное постижение» той темы, которую вы хотите усвоить. В сегодняшней публикации мы расскажем, как Кай Арулкумаран (Kai Arulkumaran) грокнул PyTorch (без картинок). Добро пожаловать под кат.
Читать полностью »