Вычислительные блоки AMD против ядер Nvidia CUDA: в чем разница?
Если вы следили за Nvidia и AMD, вы, вероятно, знаете о спецификациях их графических процессоров, которые обе эти компании любят использовать. Например, Nvidia любит подчеркивать количество ядер CUDA, чтобы отличать свое предложение от карт AMD, в то время как AMD делает то же самое со своими вычислительными модулями.
Но что на самом деле означают эти термины? Ядро CUDA – это то же самое, что и вычислительный блок? Если нет, то в чем разница?
Давайте ответим на эти вопросы и посмотрим, чем AMD GPU отличается от Nvidia.
Общая архитектура графического процессора
Все графические процессоры AMD, Nvidia или Intel в целом работают одинаково. У них одинаковые ключевые компоненты, и общая компоновка этих компонентов аналогична на более высоком уровне.
Итак, если смотреть сверху вниз, все графические процессоры одинаковы.
Когда мы смотрим на конкретные проприетарные компоненты, которые каждый производитель упаковывает в свой графический процессор, начинают проявляться различия. Например, Nvidia встраивает ядра Tensor в свои графические процессоры, тогда как графические процессоры AMD не имеют ядер Tensor.
Аналогичным образом AMD использует такие компоненты, как Infinity Cache, которых нет в графических процессорах Nvidia.
Итак, чтобы понять разницу между вычислительными модулями (CU) и ядрами CUDA, мы должны сначала взглянуть на общую архитектуру графического процессора. Как только мы сможем понять архитектуру и увидеть, как работает графический процессор, мы сможем четко увидеть разницу между вычислительными модулями и ядрами CUDA.
Как работает графический процессор?
Первое, что вам нужно понять, это то, что графический процессор обрабатывает тысячи или даже миллионы инструкций одновременно. Следовательно, графическому процессору требуется множество небольших высокопараллельных ядер для обработки этих инструкций.
Эти небольшие ядра графического процессора отличаются от больших ядер ЦП, которые обрабатывают одну сложную инструкцию на каждое ядро за раз.
Например, Nvidia RTX 3090 имеет 10496 ядер CUDA. С другой стороны, топовый AMD Threadripper 3970X имеет всего 64 ядра.
Итак, мы не можем сравнивать ядра графического процессора с ядрами процессора. Между процессором и графическим процессором довольно много различий, потому что инженеры разработали их для выполнения разных задач.
Кроме того, в отличие от среднего ЦП, все ядра графического процессора организованы в кластеры или группы.
Наконец, кластер ядер на графическом процессоре имеет другие аппаратные компоненты, такие как ядра обработки текстур, блоки с плавающей запятой и кеши.
чтобы помочь обрабатывать миллионы инструкций одновременно. Этот параллелизм определяет архитектуру графического процессора. От загрузки инструкции до ее обработки графический процессор делает все в соответствии с принципами параллельной обработки.
- Сначала графический процессор получает инструкцию для обработки из очереди инструкций. Эти инструкции почти всегда в подавляющем большинстве случаев связаны с векторами.
- Затем, чтобы выполнить эти инструкции, планировщик потоков передает их для обработки отдельным основным кластерам.
- После получения инструкций встроенный планировщик кластера ядра назначает инструкции ядрам или элементам обработки для обработки.
- Наконец, разные основные кластеры обрабатывают разные инструкции параллельно, и результаты отображаются на экране. Итак, вся графика, которую вы видите на экране, например, в видеоигре, – это просто набор миллионов обработанных векторов.
Короче говоря, графический процессор содержит тысячи элементов обработки, которые мы называем «ядрами», организованными в кластеры. Планировщики назначают работу этим кластерам для достижения параллелизма.
Что такое вычислительные единицы?
Как было показано в предыдущем разделе, у каждого графического процессора есть кластеры ядер, содержащие элементы обработки. AMD называет эти основные кластеры «вычислительными модулями».
www.youtube.com/watch?v=uu-3aEyesWQ&t=202s
Вычислительные блоки – это набор ресурсов обработки, таких как параллельные арифметические и логические блоки (ALU), кеши, блоки с плавающей запятой или векторные процессоры, регистры и некоторая память для хранения информации о потоках.
Чтобы не усложнять, AMD только объявляет количество вычислительных блоков своих графических процессоров и не детализирует базовые компоненты.
Итак, всякий раз, когда вы видите количество вычислительных единиц, думайте о них как о группе обрабатывающих элементов и всех связанных с ними компонентов.
Что такое ядра CUDA?
В то время как AMD любит упрощать работу с количеством вычислительных блоков, Nvidia усложняет ситуацию, используя такие термины, как ядра CUDA.
Ядра CUDA – это не совсем ядра. Это просто блоки с плавающей запятой, которые Nvidia любит называть ядрами в маркетинговых целях. И, если вы помните, в основные кластеры встроено множество модулей с плавающей запятой. Эти устройства выполняют векторные вычисления и ничего больше.
Так что называть их «ядром» – это чистый маркетинг.
Следовательно, ядро CUDA – это элемент обработки, который выполняет операции с плавающей запятой. Внутри одноядерного кластера может быть много ядер CUDA.
Наконец, Nvidia называет основные кластеры «потоковыми мультипроцессорами или SM». Модули SM эквивалентны вычислительным модулям AMD, поскольку вычислительные модули сами являются основными кластерами.
В чем разница между вычислительными модулями и ядрами CUDA?
Основное различие между вычислительным модулем и ядром CUDA заключается в том, что первое относится к основному кластеру, а второе – к элементу обработки.
Чтобы лучше понять эту разницу, давайте возьмем коробку передач.
Коробка передач – это блок, состоящий из нескольких шестерен. Вы можете думать о коробке передач как о вычислительном блоке, а отдельные шестерни – как о блоках с плавающей запятой ядер CUDA.
Другими словами, если вычислительные единицы представляют собой набор компонентов, ядра CUDA представляют определенный компонент внутри коллекции. Итак, вычислительные единицы и ядра CUDA несопоставимы.
Вот почему, когда AMD упоминает количество вычислительных блоков для своих графических процессоров, они всегда намного ниже по сравнению с конкурирующими картами Nvidia и их количеством ядер CUDA. Более благоприятным будет сравнение между количеством потоковых мультипроцессоров карты Nvidia и количеством вычислительных блоков карты AMD.
Ядра и вычислительные блоки CUDA разные и несовместимые
Компании имеют обыкновение использовать запутанную терминологию, чтобы представить свою продукцию в лучшем свете. Это не только сбивает с толку покупателя, но и затрудняет отслеживание важных вещей.
Итак, убедитесь, что вы знаете, что искать при поиске графического процессора. Держитесь подальше от маркетингового жаргона, это сделает ваше решение намного лучше и без стресса.