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

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

Send message

Да, я тоже через это прошел в 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++ можно реализовать с помощью указателей на функции в Си.

Вы наверно не прочитали статью и отвечаете на заголовок. Никто никому ничего не запрещает. Просто когда студент решает данную задачу и сбрасывает ее на чатгпт - то его ждет облом, решение не проходит тест. А если не сбрасывает и думает сам - то в конце-концов ее решает.

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

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

Где вы увидели в моей заметке запрет на инструмент? Я написал внизу: я когда давал задачку студентам, вообще не думал о чатгопоте. Зато потом обнаружил, что у этой задачки есть прикольное свойство: те, кто для ее решения пробуют разобраться сами - это решение находят, а те, которые пытаются найти решение мучая чатгпт - те решения не находят.

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

Ниже человек попробовал, но чатгпт не понял что в подмодулях - он соединил, будто они комбинационные, но у них внутри есть латентность (операция происходит за несколько тактов). То есть сгенерен некий текст, но он работать не будет - не пройдет даже первый тест в симуляторе

https://habr.com/en/articles/902400/#comment_28201512

1
23 ...

Information

Rating
39-th
Location
Sunnyvale, California, США
Date of birth
Registered
Activity