Pull to refresh
375
17.6
Юрий Панчул / Yuri Panchul @YuriPanchul

Проектировщик CPU, GPU, сетевых микросхем

Send message

Код с кучей заглушек на все случаи жизни на разных уровнях абстракции выглядит уродливо, особенно когда потом оказывается что 90% из них не нужны, но в каких-то из них стоит TODO, а в другие что-то внесли и непонятно это просто так стоит или работает иногда.

Аналогично если массив никогда не будет больше 5 элементов и всегда будет индексироваться целочисленными индексами - не стоит превращать его в инстанциацию темплейта на основе сбалансированного дерева Адельсона-Вельского-Ландиса (ошибка которую я делал в мои 20+ лет - сейчас мне 50+)

Люди на проектирование телефонов нужны сейчас. В частности люди на проектирование блоков в GPU. Чатгпт такую работу делать не умеет. Вот научится - поговорим. А пока нужно проверять, умеет ли человек решать микроархитектурные задачи. Нанять его чтобы он сидел в офисе ожидая когда чатгпт научится решать такие задачи - бессмысленно. Он может такое до пенсии ждать.

Не обязательно бюджетные. Я интервьировал студентку из частного университета в котором обучение стоит $90 тысяч в год и она в ответ на вопрос как бы она реализовала операцию умножения в процессоре, в котором блок умножения имеет латентность 2 такта, написала: "cpu i_cpu (.clk (clk * 0.5)" - то есть она умножила цифровой однобитовый сигнал на число с плавающей точкой. Интересно что думают ее родители, которые потратили на ее образование полмиллиона долларов.

Именно так. Это шокирующая новость, и я бы сам не поверил, что окончившие американские вузы студенты, в том числе студенты окончившие вуз где образование стоит $90 тысяч долларов в год - не могут сделать дизайн простого блока который вычисляет формулу. Но это полностью подтверждается и моим наблюдением за бОльшим количеством студентов во время официальных интервью.

От трети до половины вообще безнадежны, то есть не могут написать элементарных задач на последовательностную логику, типа побитового сумматора, где биты слагаемых a и b приходят на каждом такте и нужно следить за битами valid и last. Из остальных задачи на конвейеры решает те же несколько процентов.

При этому у них всех абсолютно одинаковые резюме - что из Калифорнии, что из Орегона, что из Северной Каролины. Что означает что последние годы все резюме пишет какой-то AI по ключевым словам для позиции. Причем, если верить этим резюме, то они якобы писали суперскалярные процессоры и многоядерные кластеры с MESI протоколами в качестве курсовых работ. Кстати такие студенты бывают и взаправду, но очень-очень редко - я встретил только одну студентку которая это реально делала в проекте GPGPU технического университета Джорджии.

Все это особенно шокирует, если посмотреть на программы VLSI на бумаге - там шикарный набор курсов. Единственное объяснение как такое может получаться: возможно профессора дают им готовые решения и от студентов ожидается только нажать кнопки чтобы пропустить это через симулятор или синтез.

Это я предложил аспиранту из Канады, который просил мою рекомендацию устроиться в Самсунг. Подумать денек для него гораздо полезнее, чем если бы я объяснил. Потому что он таким образом научиться отлаживать ошибки при конвейерной обработке данных, за что собственно и платят зарплату. Причем он это собственно и сделал. Это требует долгого разглядывания временных диаграмм, изменения тестов итд, но зато в мозгу это отпечатается на всю оставшуюся жизнь.

Да, я тоже через это прошел в 22 года. Начитался много книжек по C++ и строил многослойное с темплейтами, сложной иерархией классов итд - работало на порядки медленнее чем надо и вместо простого кода на несколько строк требовало кучу файлов. Потом от этого отказался в 25 лет и стало так хорошо. Сложность должна быть не в этом месте.

Вообще это стадия через которую многие проходят. Самое стремное когда коммерческая компания берет трех недавних студентов и они строят таким образов важный продукт компании. Например такое случилось с MIPS Technologies и их симулятором CSim в районе 2005-2010 годов. Симулятор имел два режима - на уровне инструкций и на уровне моделирования конвейера. И студенты не понимали хардвера - боже что они нагородили - это страшно глючило и имело неверные абстракции аппаратных объектов, в пять раз больше кода чем нужно и ломалось при каждой новой фиче. И от этого продукта было очень тружно избавится, так как есть стали использовать клиенты и они не хотели переходить на новые, а хотели починить старое.

Есть вторая, с теми сложней, их даже жалко по своему. Они как.. как бы это, ну вот есть люди потерявшие руку и нашедшие свой первый нормальный протез, искренне радуются возможностям крепко зажмуриваясь на недостатки. Вот и тут так же только протез когнитивный.

Точно! Я с такими знаком. Это люди как-бы около технологии, то есть они тусуются на программистских тусовках, но программировать им не дано. Ну просто способностей к этому нет, как способности играть на скрипке у человека, у которого нет слуха. Они в этот ChatGPT и ИИ для вайб-кодинга так вцепились!

но кажется мы (как человечество) открыли целый класс новых прблематики по поиску методик создания нерешаемых LLM но решаемых человеком обучающих задач.

Да, это вы хорошо сформулировали

Как я понимаю две идеи которые есть в статье - это выдать студенту нестандартный инструментарий для решения задачи, и сделать задачу зависимой от окружения.

Ну скажем так, для вузов это действительно нестандартный инструментарий, но для электронных компаний (Samsung, AMD, Juniper итд) совершенно стандартный, так как в промышленности мы озабочены качеством и повторным использованием, поэтому у нас вот такие методы проверки блоков и внутренние библиотеки. То есть это перенос в обучение промышленных методов.

Ну пусть отбор делает преподаватель в вузе. Зачем скидывать отбор на компании которые проводят собеседования? Это просто негуманно по отношению к студенту - минус N лет из жизни.

Вы читали заметку или отвечаете на заголовок? Неужели вы не увидели, что 1) я чатгпт не запрещаю и 2) что я собственно привел задачу, требующую мышления. Я написал ниже:

По-моему, многие комментаторы не прочитали заметку, а просто прочитали заголовок и по нему придумали что якобы находится в заметке. Я ведь чатгпт не запрещаю. Я всего-лишь сделал задачку, у которое тестовое окружение с проверкой против модели, а также требуется использовать блоки с временем вычисления N тактов которое не указано в условии, и которое нужно определить из кода или симуляции самостоятельно. Это типичная производственная ситуация.

Далее так получилось, что это не решает чатгпт - симуляция не проходит и говорит FAIL. Ах! И вот одни студенты на это садятся и пытаются понять почему так, а другие пытаются каким-то образом всучить мне решение, где оно FAIL не говорит, с помощью подмены моей проверки и блоков - проверкой от чатгпт. Но это не то, что делается на работе!

Что они хотят - чтобы компания давали им только задачи которые может решить чатгпт или сдавать в продакшн решения которые не работают? И получать за это зарплату?

А вы прочитали заметку? Неужели вы не увидели, что 1) я чатгпт не запрещаю и 2) что это собственно и есть задача на понимание. Я написал ниже:

По-моему, многие комментаторы не прочитали заметку, а просто прочитали заголовок и по нему придумали что якобы находится в заметке. Я ведь чатгпт не запрещаю. Я всего-лишь сделал задачку, у которое тестовое окружение с проверкой против модели, а также требуется использовать блоки с временем вычисления N тактов которое не указано в условии, и которое нужно определить из кода или симуляции самостоятельно. Это типичная производственная ситуация.

Далее так получилось, что это не решает чатгпт - симуляция не проходит и говорит FAIL. Ах! И вот одни студенты на это садятся и пытаются понять почему так, а другие пытаются каким-то образом всучить мне решение, где оно FAIL не говорит, с помощью подмены моей проверки и блоков - проверкой от чатгпт. Но это не то, что делается на работе!

Что они хотят - чтобы компания давали им только задачи которые может решить чатгпт или сдавать в продакшн решения которые не работают? И получать за это зарплату?

По-моему, многие комментаторы не прочитали заметку, а просто прочитали заголовок и по нему придумали что якобы находится в заметке. Я ведь чатгпт не запрещаю. Я всего-лишь сделал задачку, у которое тестовое окружение с проверкой против модели, а также требуется использовать блоки с временем вычисления N тактов которое не указано в условии, и которое нужно определить из кода или симуляции самостоятельно. Это типичная производственная ситуация.

Далее так получилось, что это не решает чатгпт - симуляция не проходит и говорит FAIL. Ах! И вот одни студенты на это садятся и пытаются понять почему так, а другие пытаются каким-то образом всучить мне решение, где оно FAIL не говорит, с помощью подмены моей проверки и блоков - проверкой от чатгпт. Но это не то, что делается на работе!

Что они хотят - чтобы компания давали им только задачи которые может решить чатгпт или сдавать в продакшн решения которые не работают? И получать за это зарплату?

По-моему, многие комментаторы не прочитали заметку, а просто прочитали заголовок и по нему придумали что якобы находится в заметке. Я ведь чатгпт не запрещаю. Я всего-лишь сделал задачку, у которое тестовое окружение с проверкой против модели, а также требуется использовать блоки с временем вычисления N тактов которое не указано в условии, и которое нужно определить из кода или симуляции самостоятельно. Это типичная производственная ситуация.

Далее так получилось, что это не решает чатгпт - симуляция не проходит и говорит FAIL. Ах! И вот одни студенты на это садятся и пытаются понять почему так, а другие пытаются каким-то образом всучить мне решение, где оно FAIL не говорит, с помощью подмены моей проверки и блоков - проверкой от чатгпт. Но это не то, что делается на работе!

Что они хотят - чтобы компания давали им только задачи которые может решить чатгпт или сдавать в продакшн решения которые не работают? И получать за это зарплату?

Мне все равно может или не может. Я когда эти задачи давал, о гопоте вообще не думал. Я сам использую гопоту для подсказок в писании на скриптовых языках (bash, tcl, sed, awk) в которых я не эксперт и которые бывают нужны для обработки данных симуляции и задания параметров синтеза. Но тут вдруг оказалось, что эта задача хорошо делит студентов на тех кто готов разобраться и тех кто не готов. Это очень полезно - не нужно тратить время инженеров на собеседование таких кандидатов.

Я не нашел артифактов чатгпт в решениях и знаю по собственному опыту, что направить чатгпт сделать пару вещей в этом дизайне - очень трудно. Оно упрямится, говорит "ах извините, вот правильное решение" - и делает ту же ошибку. Тут выше в комментариях кто-то привел код который выдает чатгпт в лоб. Там есть фундаментальный дефект, связанный с тем что чатгпт не понимает, что у блоков есть латентность и что аргументы нужно выровнять в конвейере по тактам с помощью дополнительных структур (сдвиговых регистров, FIFO или кольцевого буфера с одним указателем) - без этого ничего не работает или (если студент ждет по сигналам valid) - падает производительность. Запинать чатгпт на этот путь просто труднее чем понять самому.

Точно! Я сам минут 15 назад, начитавшись комментариев, стал размышлять, что любовь к чатгпт - это что-то религиозное.

Мне 54, начал программировать в 13 лет (1984), помню не только дискеты и DOS, но и перфокарты и перфоленты, но не понимаю зачем писать это тоскливое нытье про "нас нельзя сбрасывать со счетов". Если человек может делать чего-то полезное он делает. Новые технологии учатся и после 50 лет.

Конкретно в этом после я обсуждаю довольно базовую задачу, которая относится к двум областям технологий:

  1. Маршрут проектирования микросхем RTL-to-GDSII, который придумали в 1988, внедрили в промышленность в начале 1990-х и с тех пор все смартфоны, маршрутизаторы интернета, компьютеры и вообще вся электроника строится на нем. Синтез цифровых схем из кода на языках описания аппаратуры (Verilog и VHDL) на уровне регистровых передач. Хотя этой технологи пытались найти альтернативу 30 лет в виде high-level synthesis, но это не случилось и верилогу устарение не угрожает.

    Преподаватели в обучении этому иногда леняться обновлять методички с Veriog-1995 на современный вариант, но по большому счету это непринципиально. В России обучение RTL и лабы на FPGA находились в заброшенном состоянии лет 20 назад, но в последние 15 лет все сильно улучшилось.

  2. Конвейерную микоархитектуру, без владения которой нельзя работать в группах проектирования процессоров CPU, графических процессоров GPU, сетевых устройств итд.

    Тут преподавателей есть в чем упрекнуть. Хотя в американских вузах типа MIT и Стенфорда этому учат, пусть даже с отставанием которое есть в учебнике 2012 года Dally & Harting, но в провинциальных вузах США, а также странах типа Мексики многое застряло на уровне середины 1990-х, с курсами которые доходят до конечного автомата светофора и там останавливаются.

В любом случае, хотя эта область не является таким разработанным мейнстримом в вузах как матан и органическая химия, это точно не технологии-однодневки и студенты которые ставят у себя в диплом Electrican Engineering или Computer Engineering - должны относится к ней серьезно, иначе я вообще не понимаю смысла их нахождения на таких курсах.

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

Возможно это связано с тем, что языки описания аппаратуры описывают не цепочку инструкций, как языки программирования, а аппаратные структуры, где события происходят параллельно, и их нужно представлять именно так, а не как кучу текста рецептов. Кроме этого, проектирование на верилоге нельзя делать не думая о физических задержках комбинационной логики внутри такта (propagation delay), в коде этого нет и чатгпт не умеет это вычислять.

Так что оно все находится в той же нулевой точке, в которой находилось и года три назад. Вектор (0,0) - (0,0) - это вектор?

Так что никакого спора о прогрессе пока нет - он не начался. Такое уже было в истории: последние 30 лет адепты так называемого high level synthesis (HLS) говорят что "через 5 лет везде будет HLS" то есть превращение алгоритмов на Си в описание хардвера на верилоге. И эти 5 лет не произошли ни в 1995, ни потом.

Но бог с ним, с вектором. Мы обсуждаем другое: зачем молодые люди мучают чатгпт вместо того, чтобы присесть и честно подумать о задаче? Я не понимаю этого поведения.

Я со статьей согласен, но в ней не хватает одной фразы. Что виртуальные функции C++ можно реализовать с помощью указателей на функции в Си.

Information

Rating
773-rd
Location
Sunnyvale, California, США
Date of birth
Registered
Activity