Как стать автором
Обновить
2

GPGPU *

Технология Nvidia для реализации алгоритмов

Сначала показывать
Порог рейтинга
Уровень сложности

Атака на Nvidia DeepStream с помощью некорректного фрейма видео в формате H264

Время на прочтение5 мин
Количество просмотров4.7K

Nvidia DeepStream - широко известный в узких кругах инструмент для инференса на нейронных сетях и другой высокопроизводительной обработки видео-потоков в реальном времени на оборудовании от Nvidia.

Наша команда занимается разработкой и оптимизацией пайплайнов видео аналитики для работы на базе DeepStream. В текущем проекте мы обнаружили, что некоторые пайплайны виснут. В ходе расследования мы обнаружили вектор атаки, который позволяет сформировать специальный фрейм в H264, вызывающий зависание DeepStream.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

На пути к Матрице: как происходит исследования в области построения симуляций и искуственной жизни

Время на прочтение10 мин
Количество просмотров4.2K

О проекте


ALiEn — это программа моделирования искусственной жизни, основанная на специализированном физическом и рендеринговом движке в CUDA. Он предназначен для моделирования цифровых организмов, встроенных в искусственные экосистемы, и для имитации условий (до)биотической эволюции.

Узнайте о целях проекта и о том, как начать.



Функции

  • Реалистичные физические расчеты кинематических и термодинамических процессов повреждаемых и склеиваемых твердых тел
  • Программируемый материал для моделирования цифровых организмов и эволюции
  • Встроенный графический редактор для проектирования собственных машин
  • Моделирование и рендеринг на GPU
  • Программное обеспечение с открытым исходным кодом и доступно под GNU General Public License, Version 3 (GPLv3).

Под катом два примера («Самопроверяющиеся репликаторы» и «Репликация на основе информации») применения данного программного комплекса.
Всего голосов 17: ↑16 и ↓1+15
Комментарии0

Дебри графики или как пройти собеседование на программиста компьютерной графики в GameDev

Время на прочтение19 мин
Количество просмотров11K

Ребята, всем привет!!!

Выдалась у меня свободная минута и решил я собрать небольшой гайд на прохождение собеседования по направлению программиста 3D графики для GameDev компаний. Сам я работаю в данной сфере и очень много общаюсь с различными людьми, теми кто только приходит собеседования и теми, кто уже трудится достаточно давно и за плечами не один выполненный проект и множество решенных рабочих вопросов и задач. Если вам интересная данная тема, то прошу всех под кат.

Для большинства компаний принято разделять данную профессию/направление на два:

Первые - это специалист игровой графики и Вторые - это специалисты компьютерной графики. В чем же разница? Скажем так, первое является закономерным продолжением второго, но не всегда. Например, вы начинаете работать как VFX специалист, создаете партикловые (частицы) эффекты, "прикручиваете" к ним трехмерные модели, собираете все из частей, пишите шейдера и работаете с кодовой базой. То есть здесь вы больше сконцентрированы на визуальном оформлении игры и отдельных ее элементах. В ваши задачи входит разработка визуальных эффектов на "приемлемом" уровне с учетом общей стилистики игры, ее жанра, цветового оформления (хорор, mathc-3d, ферма, песочница и т.д.). Вопросы оптимизации, здесь важны, но они не так глобальны;

Читать далее
Всего голосов 15: ↑2 и ↓13-11
Комментарии24

Используем GPU для повышения производительности JavaScript

Время на прочтение7 мин
Количество просмотров16K
image

Мы, разработчики, всегда стремимся искать возможности повышения производительности приложений. Когда речь идёт о веб-приложениях, то улучшения обычно вносятся только в код.

Но думали ли вы об использовании мощи GPU для повышения производительности веб-приложений?

В этой статье я расскажу о библиотеке ускорения JavaScript под названием GPU.js, а также покажу вам, как повысить скорость сложных вычислений.

Что такое GPU.js и почему его стоит использовать?


Если вкратце, GPU.js — это библиотека ускорения JavaScript, которую можно использовать для любых стандартных вычислений на GPU при работе с JavaScript. Она поддерживает браузеры, Node.js и TypeScript.

Кроме повышения производительности есть и множество других причин, по которым я рекомендую использовать GPU.js:

  • В основе GPU.js лежит JavaScript, что позволяет использовать синтаксис JavaScript.
  • Библиотека берёт на себя задачу автоматической транспиляции JavaScript на язык шейдеров и их компиляции.
  • Если в устройстве отсутствует GPU, она может «откатиться» к обычному движку JavaScript. То есть вы ничего не потеряете, работая с GPU.js.
  • GPU.js можно использовать и для параллельных вычислений. Кроме того, можно асинхронно выполнять множественные вычисления одновременно и на CPU, и на GPU.

Учитывая всё вышесказанное, я не вижу никаких причин не пользоваться GPU.js. Давайте узнаем, как его освоить.
Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии13

Истории

«Томограф» для нефтегазовых месторождений, или Пересечение трёхмерной расчётной сетки и плоскости на CUDA

Время на прочтение7 мин
Количество просмотров2.9K
В данной статье приведены описание и алгоритм решения задачи построения рисунка внутренностей месторождения, являющегося результатом пересечения расчётной сетки с плоскостью. А также приведены тайминги построения решения, которые получаются на типичном компьютере геолога-модельера или гидродинамика.

image
Визуализация расчётной сетки и куба
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

AES против осциллографа

Время на прочтение9 мин
Количество просмотров6.3K

Слово "хакер" обрело свое нынешнее звучание лишь во второй половине XX века благодаря журналистам. Изначально хакерами именовали специалистов, обладающих обширными знаниями в области компьютерных технологий и умеющих виртуозно применять их. Именно о деятельности одной из групп таких хакеров пойдет речь в данной статье.

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии1

Software ecosystems: принципы построения

Время на прочтение11 мин
Количество просмотров5.2K
image

У этой статьи тяжелая судьба. Пару месяцев назад меня попросили написать обзор на предмет построения программных экосистем для разных архитектур. Я поначалу отнекивался да отшучивался в том духе что, экосистема –это не биология. Это — даже не технология. Это — исключительно про деньги. И иногда про политику. Потом собрал волю в кулак, мысли в кучу, cел и написал все буквально за один день. На английском. Затем обзор перевели на китайский и опубликовали. “По дороге” переводчик существенно улучшил текст и добавил пару интересных мыслей. Потом я решил, что текст может быть небезынтересен аудитории Хабра, а также полезен мне, чтобы ссылаться на него в дальнейшем. И начал ваять русский вариант, вооружившись английским оригиналом и китайским переводом. Это была та еще борьба со специфичными английскими терминами (SW ecosystem ?= программная экосистема, enabling ?= продвижение, application engineer ?= инженер по приложениям) и малопонятными пока иероглифами. В итоге русский текст занял больше времени, чем английский и китайский вместе взятые… Так бывает.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии7

Сравнение времени выполнения алгоритма на CPU и GPU

Время на прочтение12 мин
Количество просмотров7.7K

Использование CUDA Runtime API для вычислений. Сравнение CPU и GPU вычислений


В данной статье я решил провести сравнение выполнения алгоритма написанного на C++ на центральном и графическом процессоре(выполнение вычислений с помощью Nvidia CUDA Runtime API на поддерживаемом GPU Nvidia). CUDA API позволяет выполнение некоторых вычислений на графическом процессоре. Файл c++ использующий cuda, будет иметь расширение .cu.
Схема работы алгоритма приведена ниже.



Задача алгоритма состоит в том, что найти возможные числа X, при возведении которых в степень degree_of, будет получатся исходное число max_number. Сразу отмечу, что все числа которые будут передаваться GPU, будут хранится в массивах. Алгоритм, выполняемый каждым потоком, имеет приблизительно следующий вид:
Читать дальше →
Всего голосов 17: ↑6 и ↓11-5
Комментарии41

Симуляция подъёмной силы Ньютона методом частиц на CUDA

Время на прочтение22 мин
Количество просмотров14K

https://www.youtube.com/playlist?list=PLwr8DnSlIMg0KABru36pg4CvbfkhBofAi


Как-то на Хабре мне попалась довольно любопытная статья “Научно-технические мифы, часть 1. Почему летают самолёты?”. Статья довольно подробно описывает, какие проблемы возникают при попытке объяснить подъёмную силу крыльев через закон Бернулли или модель подъёмной силы Ньютона (Newtonian lift). И хотя статья предлагает другие объяснения, мне бы всё же хотелось остановиться на модели Ньютона подробнее. Да, модель Ньютона не полна и имеет допущения, но она даёт более точное и интуитивное описание явлений, чем закон Бернулли.


Основной недостаток этой модели — это отсутствие взаимодействия частиц газа друг с другом. Из-за этого при нормальных условиях она даёт некорректные результаты, хотя всё ещё может применяться для экстремальных условий, где взаимодействием можно пренебречь.


Я же решил проверить, что же произойдёт в модели Ньютона если её улучшить. Что если добавить в неё недостающий элемент межатомного взаимодействия? Исходный код и бинарники получившегося симулятора доступны на GitHub.


Перед тем как мы начнём, я бы хотел сразу обозначить, что это статься не о физике самой модели. Эта статья о GPGPU-программировании. Мы не будем рассматривать физические свойства самой модели, потому что она груба и не подходит для настоящих расчётов. И всё же, эта неточная модель даёт куда более интуитивное описание явления подъёмной силы, чем закон Бернулли.

Всего голосов 66: ↑65 и ↓1+64
Комментарии46

Новости Intel Arch Day 2020: Intel Xe GPU в ассортименте

Время на прочтение2 мин
Количество просмотров3.6K


Мы продолжаем свой репортаж о новостях, которые принес прошедший всего день назад Intel Architecture Day 2020. Сегодняшняя их порция касается графических процессоров Intel Xe — стал известен весь ассортимент их микроархитектур на ближайшую перспективу. Не обошлось без дополнений и обновлений.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии3

Пишем спецификацию под Nvidia Kepler (бинарники CUDA, версия языка sm_30) для Ghidra

Время на прочтение6 мин
Количество просмотров2.1K
Для обычных процессорных языков уже написано довольно много спецификаций для Ghidra, однако для графических ничего нет. Оно и понятно, ведь там своя специфика: предикаты, константы, через которые передаются параметры в том числе, и другие вещи, унаследованные от шейдеров. Кроме того формат, который используется для хранения кода, зачастую проприетарный, и его нужно самостоятельно ревёрсить.

В этой статье на двух примерах разберёмся, что к чему.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии15

Как GPU-вычисления буквально спасли меня на работе. Пример на Python

Время на прочтение12 мин
Количество просмотров61K
Привет, Хабр!

Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!


Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии52

По ту сторону закона Мура

Время на прочтение4 мин
Количество просмотров5.4K
Слухи о смерти закона Мура ходили, сколько я себя помню. Рассуждения о том, что мы приближаемся к размерам атома и о том, что скоро вся затея станет нерентабельной, я слышал и 30, и 20, и 10 лет назад. Вот только инженеры раз за разом их опровергали. Именно инженерный гений сделал закон Мура одним из “самоисполняющихся пророчеств”.

Не собираюсь рассуждать о том, достигла технология своего предела или еще нет. Несмотря на радиофизическое образование, я в ней разбираюсь очень условно. Желающим вникнуть могу посоветовать обратиться к недавнему обзору. Я же подпишусь под точкой зрения еще одного очень уважаемого мной мыслителя Боба Колвелла.

image

Teм временем чипмейкеры продолжают строить (ну или по крайней мере анонсировать) новые фабрики, работающие по новым технологиям. Значит, это все еще выгодно. По мне так “пациент скорее жив, чем мертв”. Mуровская экспансия остановится тогда, когда сервер с двумя процессорами произведенными по новой технологии станет дороже, чем сервер с 4мя произведенными по старой. А это пока далеко не так. Мне доводилось работать и с 4-head и даже с 8-head. Но они собираются на заказ и стоят как маленький самолет.

Моя же задача сегодня рассказать о том как технология влияет на архитектуру и программирование. О том что нас ждет “по ту сторону закону Мура”. Ибо многие тенденции очевидны уже сейчас. Итак.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии59

Ближайшие события

О тенденциях развития архитектуры процессоров, или почему я верю в успех Huawei на серверном рынке

Время на прочтение3 мин
Количество просмотров7.6K
Мы живем в интересные времена. Мне кажется, следующие 2-3 года определят, куда пойдет развитие архитектуры на ближайшее десятилетие. Сейчас на рынке серверных процессоров есть несколько игроков, представляющих совершенно разные подходы к технологии. И это очень здорово (я даже затрудняюсь сказать, на какой слог падает ударение в последнем слове :))
.
А ведь еще лет 5-6 назад казалось, что время застыло и развитие остановилось. Упершись в разного рода ограничения (power wall, scalability wall и т.п.). Я немного рассказывал об этом вот здесь. Закон Мура был поставлен под сомнение и особо горячие теоретики предлагали ввести в него логарифмические поправки :) Доминация Intel на рынке серверных процессоров представлялась тогда незыблемой. AMD не оказывал серьезной конкуренции, GPGPU от NVidia выглядели сугубо нишевым продуктом, а попытки ARM пробиться на серверный рынок не имели успеха.
Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии32

Программирование GPU на Java

Время на прочтение13 мин
Количество просмотров17K
Получение доступа к GPU из Java раскрывает огромную мощь. Здесь рассказывается как GPU работает и как получить доступ из Java.

Программирование устройства графического процессора (GPU) является заоблачным миром для Java программистов. Это понятно, так как обычные задачи для Java не подходят для GPU. Тем не менее, GPU обладают терафлопсами производительности, так давайте исследуем их возможности.
Для того чтобы сделать топик доступным, я потрачу некоторое время объясняя архитектуру GPU вместе с небольшой историей, которая облегчит погружение в программирование железа.

Однажды мне показали отличия GPU от CPU вычислений, я покажу как использовать GPU в мире Java. Наконец, я опишу главные фреймворки и библиотеки доступные для написания кода на Java и запуска их на GPU, и я приведу некоторые примеры кода.
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии7

Вычисления на GPU – зачем, когда и как. Плюс немного тестов

Время на прочтение12 мин
Количество просмотров84K
Всем давно известно, что на видеокартах можно не только в игрушки играть, но и выполнять вещи, никак не связанные с играми, например, нейронную сеть обучить, криптовалюту помайнить или же научные расчеты выполнить. Как так получилось, можно прочитать тут, а я хотел затронуть тему того, почему GPU может быть вообще интересен рядовому программисту (не связанному с GameDev), как подступиться к разработке на GPU, не тратя на это много времени, принять решение, нужно ли вообще в эту сторону смотреть, и «прикинуть на пальцах», какой профит можно получить. 


Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии29

Как я писал музыку из космических лучей

Время на прочтение15 мин
Количество просмотров3.4K

День добрый, камрады! Я пока только начинающий музыкант, зато есть опыт в программировании. И почему бы не взять какие-нибудь данные и попробовать из аудиализировать (это как визуализировать, только… кэпъ)?


Тащемта, план таков:


  • Найти данные
  • Придумать, как сконвертировать их в звук
  • Подправить параметры конвертера, чтобы было покрасивше
  • Остались ещё силы? goto 1
Всего голосов 20: ↑20 и ↓0+20
Комментарии18

Ускоряем numpy, scikit и pandas в 100 раз с Rust и LLVM: интервью с разработчиком Weld

Время на прочтение6 мин
Количество просмотров6.1K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Interview with Weld’s main contributor: accelerating numpy, scikit and pandas as much as 100x with Rust and LLVM».

Проработав несколько недель с data science инструментарием в Python и R, я начал задаваться вопросом, а нет ли какого промежуточного представления (Intermediate representation, IR) наподобие CUDA, которое можно использовать в разных языках. Должно же быть что-то получше, чем реимплементация и оптимизация одних и тех же методов в каждом языке. В дополнение к этому было бы неплохо иметь общую среду выполнения (common runtime), чтобы оптимизировать всю программу целиком, а не каждую функцию в отдельности.

После нескольких дней исследования и тестирования различных проектов я нашел Weld (можете ознакомиться с академической статьей).

К моему удивлению одним из автором Weld является Матей Захария (Matei Zaharia), создатель Spark.

Итак, я связался с Шоумиком Палкаром (Shoumik Palkar), основным контрибьютором Weld, и взял интервью у него. Шоумик — аспирант факультета компьютерных наук в Стэнфордском университете, куда поступил по совету Матея Захарии.

Weld еще не готова к промышленному использованию, но весьма перспективна. Если вам интересно будущее data science и Rust в частности, вам понравится это интервью.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии0

GPU Bound. Часть вторая. Бескрайний лес

Время на прочтение7 мин
Количество просмотров12K


Практически в каждой игре необходимо наполнять игровые уровни объектами, которые создают визуальное богатство, красоту и вариативность виртуального мира. Возьмите любую игру с открытым миром. Там деревья, трава, земля и вода основные «заполнители» картинки. Сегодня GPGPU будет совсем немного, но я попробую рассказать, как нарисовать в кадре много деревьев и камней, когда нельзя, но очень хочется.
Всего голосов 20: ↑20 и ↓0+20
Комментарии12

Посторонись, CUDA — Intel анонсировала 7-нанометровый GPU для дата-центров

Время на прочтение5 мин
Количество просмотров17K


По прогнозам аналитиков, рынок дата-центров в ближайшие годы будет расти на 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.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии13