реклама
Энтузиасту по имени Адам Маджмудару удалось создать полностью функциональный графический процессор с нуля всего за две недели без какого-либо предварительного опыта. Согласно его подробному сообщению на X, это была непростая задача, поскольку ему пришлось преодолеть множество трудностей.
реклама
Одним из самых больших препятствий было понимание внутренней работы существующих архитектур графических процессоров, которые в значительной степени являются проприетарными "черными ящиками". Однако, Адам смог использовать некоторые хитроумные методы обратного проектирования, например, предоставляемые CUDA от Nvidia, для получения ценной информации.
После этого Адаму пришлось разработать собственную недорогую минимальную архитектуру для графического процессора, предназначенную для параллельных вычислений общего назначения, а не для графических нагрузок. Он создал небольшой набор пользовательских команд, которые он назвал "kernels", для своего графического процессора, который будет выполняться с использованием парадигмы SIMD (Single Instruction, Multiple Data), обычно используемой в современных графических процессорах.
Чтобы протестировать свое творение, Адам написал простые ядра умножения и сложения матриц для своего самодельного графического процессора. Однако, с логикой Verilog были реальные проблемы, которые требовалось исправлять несколько раз. В конце концов, графический процессор смог корректно запускать ядра и выдавать правильные выходные данные для матричных операций.
"После бесчисленных редизайнов мне наконец удалось запустить свои ядра сложения и умножения матриц, и я увидел, что все работает так, как ожидалось. Мой графический процессор выдал правильные результаты, и это было невероятное ощущение ", - написал Адам.
Адам также предоставил 3D-визуализацию своего графического процессора в действии. Хотя проект находится на ранних стадиях разработки, а дизайн чипа все еще на этапе компоновки маски, он был проверен с помощью программного обеспечения OpenLane EDA, которое подтверждает, что это физически осуществимо.