Тёмный

Разработка DSP-библиотеки / Низкоуровневые оптимизации / Программирование в 80-90-е 

Истовый Инженер
Подписаться 8 тыс.
Просмотров 8 тыс.
50% 1

В гостях у «Битовых масок» - Игорь Астахов, инженер-программист, который разрабатывает высокопроизводительные библиотеки и занимается низкоуровневыми оптимизациями уже 25 лет. Он начал строить карьеру во времена, когда компьютеры были размером со шкаф, и стал сотрудником Intel в конце 90-х годов. Сейчас Игорь занимается оптимизацией реализаций различных DSP-алгоритмов в YADRO. Ведущие подкаста поговорили с ним о том, как писали машинный код три десятилетия назад, об особенностях высокоэффективного кода, векторизации и акселераторах.
Правда ли раньше писали и дебажили код на бумажке? До сих пор ли пишут на ассемблере для получения наилучшей производительности? Почему Intel Itanium - идеальный процессор? Как работают над переносом библиотеки на архитектуру, которая еще не появилась? Сможет ли AI создать высокопроизводительный код? Обсуждение этих и других вопросов ждет вас в тринадцатом выпуске «Битовых масок».
· Упомянутый доклад Валерии Пузиковой «Матричные расширения RISC-V»: • Матричные расширения R...
· Подписывайтесь на Telegram-канал подкаста: t.me/+bx50QfUlw4pkZDEy
🔹 Как попасть в команду YADRO? careers.yadro.com
🎧 Слушайте «Битовые маски» на других платформах:
Яндекс.Музыка: music.yandex.com/album/26508178
Apple Podcasts: podcasts.apple.com/ru/podcast...
Все платформы: engineer.yadro.com/podcasts/c...
00:00:00 - Тизер
00:00:38 - Представление Игоря Астахова
00:01:31 - Как программировали в 80-90-е
00:12:03 - Появление первого офиса Intel в России
00:13:51 - Разработка высокопроизводительной библиотеки в Intel
00:19:26 - Почему Itanium - идеальный процессор?
00:25:53 - Идеальный код с точки зрения разработчика низкоуровневых оптимизаций
00:30:52 - Переход с ассемблера на интринсики
00:33:37 - Оптимизация самых популярных функций
00:37:31 - Измерение производительности низкоуровневых оптимизаций
00:41:55 - Performance-проблема на микроархитектурном уровне
00:48:28 - Взаимодействие с разработчиками процессоров
00:52:23 - Влияние руководителей на путь Intel
00:55:13 - Возможна ли реализация на С без интринсиков для низкоуровневых оптимизаций
00:59:16 - Методология разработки высокопроизводительных функций
01:09:33 - Работа с акселераторами
01:14:18 - Векторизация - основной способ оптимизации
01:16:55 - Может, надо такую библиотеку писать на C++?
01:18:59 - Какой тулинг используют
01:20:45 - Насколько перспективны новые технологии ИИ
01:23:05 - Заключение
#dsp #intel #assembler #c #performance #оптимизация

Наука

Опубликовано:

 

20 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 55   
@yettechnicalchannel
@yettechnicalchannel 14 дней назад
Спасибо за интервью, помогает вспомнить что делал в университетское время... Если до сих пор работают такие люди - еще не все потеряно )
@ultimate_engineer
@ultimate_engineer 13 дней назад
Спасибо вам! Нам тоже радостно работать бок о бок с такими профессионалами!
@DAlexMaster
@DAlexMaster 3 дня назад
Как правильно заметил Астахов про оптимизацию алгоритмов свёртки сигналов посредством перехода из времЕнной области в частотную (ДПФ) и обратно, существенно сокращается время вычислений прохождения сигнала через фильтр. Гениальный подход, придуманный много десятилетий назад, позволяющий строить менее требовательные к аппаратному обеспечению системы. Ещё будучи студентом восхищался такими фокусами с преобразованием Фурье, особенно при взятии "неберущихся" интегралов :)
@usergnusmas6879
@usergnusmas6879 15 дней назад
Вот, это настоящий инженер. Интересно, чем занимаются такие люди.
@ultimate_engineer
@ultimate_engineer 14 дней назад
Спасибо! Стремимся выбирать интересных гостей!
@MaruiInfantry
@MaruiInfantry 14 дней назад
Ничем. Они кодили в те времена, когда ты приходишь и на Си + asm пишешь такой говнокод, что ужас. Всё в монолитах и экстернах. Пишет какое-то Фурье или FFT на массивчиках. Больше ничего. Скорее всего он не сможет написать SQL-запрос даже для простейшей СУБД. Не говоря уже о том, чо NoSQL или темболее NewSQL. Возможно он из головы напишет какой-то FFT на C + SIMD, но это уже не нужно.
@usergnusmas6879
@usergnusmas6879 14 дней назад
@@MaruiInfantry на самом деле печально, что такие люди мнение востребованы на рынке труда, мне кажется, это несправедливым. Ведь они обладают уникальным опытом.
@z140140
@z140140 14 дней назад
@@MaruiInfantry мы например пишем те самые sql-движки :) или те же FFT, которые улучшают качество твоих фоток. или библиотеки deep learning, которые используют для LLM
@z140140
@z140140 14 дней назад
@@usergnusmas6879 они не востребованы в небольших компаниях. в янлексе или вк такие люди уже есть. в гугле или ms их сильно больше. плюс есть технологические стартапы, типа clickhouse
@Slesar.
@Slesar. 14 дней назад
Елы палы, 30 лет в программировании, но только правда в основном прикладных задач, свое время от нечего делать наизусть учил книжку по процессорам Интел пятого поколения, правда в реальной жизни эти предметные знания так и не пригодилось, а сейчас даже половину сказанного плохо понимаю, о чем дядька говорит. Собственно, от программирования ПК давно ушел в область программирования МК, а теперь еще и ПЛИС, там интересней, по тому что в одиночку можешь делать и сопровождать готовые проекты под МК, считай все время делать свои собственные почти уникальные мини системы, это доставляет больше удовольствия. А программирование реальных приложений ПК, это в основном командная работа, что меня никак не привлекает.
@taraslitvinenko8651
@taraslitvinenko8651 15 дней назад
Большое спасибо, за такие интервью, очень интересно 😊
@ultimate_engineer
@ultimate_engineer 14 дней назад
Рады, что вам понравился выпуск!
@nikolaykozlov4888
@nikolaykozlov4888 15 дней назад
Как же круто!
@kuqmua755
@kuqmua755 14 дней назад
Интересно. Спасибо
@ultimate_engineer
@ultimate_engineer 14 дней назад
Приятно! Спасибо вам!
@nangelo0
@nangelo0 10 дней назад
Очень крутой выпуск!!!
@ultimate_engineer
@ultimate_engineer 10 дней назад
Спасибо! Рады, что было интересно!
@sergeykirdyankin7027
@sergeykirdyankin7027 14 дней назад
IIR без обратной связи это как? Хотелось бы посмотреть на блок схему, и чуть подробнее о перерасчёте коэффициентов. Статьи на эту тему не публиковали, где нибудь на IEEE?
@ultimate_engineer
@ultimate_engineer 13 дней назад
Статью такую не готовили ещё, но спасибо за идею! Если опубликуем, то пришлем в эту ветку ссылку :)
@z140140
@z140140 14 дней назад
1. у dec были только 12, 16, 18, 32, 36 и 64-битные машинки. а 24-битным был, например, первый миник cdc 2. первая реализация бейсика была компилирующей, многопользовательской, со встроенным многопользовательским редактором и требовала для работы двух компов с памятью тоже несколько десятков КБ 3. у P4 был именно кеш декодированных инструкций (Trace cache), а декодирование шло по одной инструкции за такт
@101picofarad
@101picofarad 14 дней назад
Если ИИ помог генерализовать математику - значит математик был не очень сильным - кто-то генерализовал до него и дал почитать нейросети ;)
@FULLTILTSWIFF
@FULLTILTSWIFF 14 дней назад
хотелось бы, чтобы не перебивали гостя
@ultimate_engineer
@ultimate_engineer 14 дней назад
Иногда так увлекаешься беседой, что не можешь сдержаться :))
@alexji4654
@alexji4654 11 дней назад
Помню, когда телекоммуникационный доступ появился (примус), мой товарищ - он был старше на 3 года, посетовал, что терминалы развращают, мол, когда на перфокартах работали, программы вылизывали до последнего символа. Хотя на отдел нам давали 45 мин машинного времени...
@fhtagnfhtagn
@fhtagnfhtagn 15 дней назад
Народ, объясните, что за ботва с AVX2 и AVX512, они там совсем обленилсь?! Вот раньше был MMX, на нём были унпаки: bw, wd, dq. Потом MMX удвоился до SSE2, на него перенеслись те же унпаки с той же логикой. А последующие удвоения до AVX2 и затем до AVX512 старую логику не сохранили. Неужели так сложно было? Раньше как-то справлялись, а теперь почему-то нет. Теперь там работа идёт с отдельными 128-битными блоками. Одна половина не знает, что делает другая. Если на AVX2 логику унпаков можно починить, добавив парочку _mm256_permute2f128_si256(), то на AVX512 подобного, получается, вообще нету!
@karel.77
@karel.77 15 дней назад
Тебе к мужику с видео надо...
@FULLTILTSWIFF
@FULLTILTSWIFF 15 дней назад
Одной из ключевых особенностей AVX-512 является введение маскирования. Маскирование позволяет выполнять операции над выбранными элементами вектора, игнорируя остальные. Это даёт программистам больше контроля над тем, какие данные обрабатываются, и может помочь оптимизировать вычисления, избегая ненужных операций. Пример использования маскирования в AVX-512: __m512i a = _mm512_set1_epi32(10); // Вектор A заполнен числом 10 __m512i b = _mm512_set1_epi32(20); // Вектор B заполнен числом 20 __mmask16 mask = 0b1010101010101010; // Маска для выбора каждого второго элемента // Сложение с использованием маски: только элементы, соответствующие маске, будут сложены __m512i result = _mm512_mask_add_epi32(a, mask, a, b); В этом примере, только элементы вектора a, которые соответствуют маске mask, будут сложены с соответствующими элементами вектора b. Также AVX-512 вводит операции с разреженными данными и конфликтные инструкции обнаружения, которые могут быть полезны для оптимизации алгоритмов с непредсказуемым доступом к памяти. Использование векторизации для умножения двух матриц может быть реализовано следующим образом: void matrix_multiply_avx512(float* A, float* B, float* C, int N) { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { __m512 sum = _mm512_setzero_ps(); for (int k = 0; k < N; k += 16) { __m512 a = _mm512_load_ps(A + i * N + k); __m512 b = _mm512_load_ps(B + k * N + j); sum = _mm512_fmadd_ps(a, b, sum); } _mm512_store_ps(C + i * N + j, sum); } } } Маскирование в AVX-512 позволяет выполнять операции только над теми элементами данных, которые соответствуют определённому условию. Это может быть полезно, например, при обработке данных с пропусками или при выполнении операций, которые должны быть применены не ко всем элементам массива. __m512i data = _mm512_load_epi32(...); // Загрузка данных __mmask16 mask = _mm512_cmp_epi32_mask(data, _mm512_set1_epi32(0), _MM_CMPINT_NE); // Создание маски для ненулевых элементов __m512i result = _mm512_mask_add_epi32(_mm512_set1_epi32(1), mask, data, _mm512_set1_epi32(100)); Прибавление 100 только к ненулевым элементам AVX-512 вводит специальные инструкции для работы с разреженными данными, что может быть полезно в областях, где данные естественным образом разрежены, например, в графовых вычислениях или при обработке больших наборов данных с множеством пропусков.
@z140140
@z140140 14 дней назад
1. avx2 был оптмизирован под реализацию на двух отдельных 128-битных EU, поэтому в нём такая ебанутая логика 2. в avx512 вроде есть универсальный шафл, его недостаточно?
@MauwTong
@MauwTong 11 дней назад
The best video
@crash1504
@crash1504 14 дней назад
Ничо не понял, но очень интересно! Выпуск кайф
@michealmltefive5510
@michealmltefive5510 14 дней назад
Я только Basic на MSX застал в 8х г. Ассемблер до сих пор не освоил.
@101picofarad
@101picofarad 14 дней назад
Не эффективных математических алгоритмов не бывает - они все зависят от исполняющего это калькулятора. Т.е. всегда можно подобрать такую архитектуру, где "не эффективный" алгоритм будет быстрее чем другой.
@Kantor2209
@Kantor2209 15 дней назад
PDP 11, сиречь Электроника 60. Писал в кодах, прикольно. Такие фокусы можно было творить. А что, полный доступ, делай что хошь.
@evgeniykorniloff9974
@evgeniykorniloff9974 4 дня назад
arm архитектуру и оперативную память на тот же кристалл. И никаких конвейеров или кешей. Микропрограммы тоже в оперативку. Скорость +20х и немного отставание из за конвейеров. В целом - чуть лучше интела и дешевле и частоты тактовой хватит. А для PC программ - эмулятор.
@user-cb3mw7rd8b
@user-cb3mw7rd8b 7 дней назад
кто в курсе? что за код на интенсиках,? что за интенсики?
@ultimate_engineer
@ultimate_engineer 6 дней назад
Речь про интринсики (intrinsic). Вот здесь неплохо объясняют: ru.stackoverflow.com/questions/621215/Что-такое-интринсики-intrinsics/621239#621239
@101picofarad
@101picofarad 14 дней назад
Векторизация - основной метод ускорения потому, что это фактически перестройка задачи под параллельную архитектуру. Такую задачу легко автоматически раскидать на множество исполнителей.
@MaruiInfantry
@MaruiInfantry 14 дней назад
Уже нет. Щас всё на GPU считают уже лет 15+. CUDA вышла в 2007 году.
@101picofarad
@101picofarad 14 дней назад
@@MaruiInfantry а на гпу не используется векторизация???
@VRchitecture
@VRchitecture 14 дней назад
@@101picofarad О чём вы? Всем же известно, что если исполнять код на GPU, предварительно сдобрив CUDA, то получим топ перформанс. Оптимизаций не требуется от слова совсем, главное - верить в технологию - и она не подведёт👌🏻
@101picofarad
@101picofarad 14 дней назад
@@VRchitecture матлаб мне сказал что мой кривой код на амд 7840hs выполняется быстрее чем на куде 3070 ;) (наверное матлаб не правильно верит)
@VRchitecture
@VRchitecture 14 дней назад
@@101picofaradвсё зависит от задачи. Вполне реальная ситуация - CPU обсчитывает данные медленнее, но это компенсируется более быстрым их считыванием из памяти и записью результата обратно. В любом случае, NVIDIA + CUDA круче всех по определению (ну зачем маркетологам врать?)
@VRchitecture
@VRchitecture 14 дней назад
Я понимаю, что это не намеренное, но из-за постоянных усмешек складывается впечатление, будто человека пригласили, чтобы над ним поугарать. Такое себе
@iamdozerq
@iamdozerq 13 дней назад
Он рассказывает жесть, она звучит как настоящий анекдот, она вызывает сильный шок и удивление. В другой ситуации они бы плакали от того что он говорит, а тут снимают состояние смехом. И явно же не над ним, что за бред.
@user-rd2rw1ip4f
@user-rd2rw1ip4f 14 дней назад
ведущим лучше молчать или кивать
@ultimate_engineer
@ultimate_engineer 13 дней назад
Предвосхищаем следующие комменты: "Ведущие воды в рот набрали, нечего сказать?" ))
@Deletedeletedelete
@Deletedeletedelete 11 дней назад
Тру
@nikolaykozlov4888
@nikolaykozlov4888 15 дней назад
Хочу в Ядро!
@ultimate_engineer
@ultimate_engineer 14 дней назад
Заглядывайте сюда: careers.yadro.com ;)
@nikolaykozlov4888
@nikolaykozlov4888 14 дней назад
@@ultimate_engineer заглядывал, не взяли :-)
Далее
Отец Проводит Тест с Сыном 😂
00:48
지민 (Jimin) 'Who' Official MV
03:28
Просмотров 12 млн
Телефон-електрошокер
0:43
Просмотров 1,3 млн
КРУТОЙ ТЕЛЕФОН
0:16
Просмотров 6 млн
Здесь упор в процессор
18:02
Просмотров 369 тыс.