«Вся индустрия заинтересована в ликвидации рынка CUDA». Глава Intel раскритиковал Nvidia и её доминирование на рынке ИИ
Компания Intel после анонса процессоров Meteor Lake, которые пока не особо впечатляют, судя по первым тестам, решила заодно обрушиться с критикой на Nvidia.

Если точнее, это сделал лично глава Intel Пэт Гелсингер (Pat Gelsinger). Его заявление касалось доминирования Nvidia на рынке решений для искусственного интеллекта, где сама Intel представлена, но весьма слабо.
Знаете, вся индустрия заинтересована в ликвидации рынка CUDA. Мы считаем ров CUDA неглубоким и маленьким, потому что отрасль заинтересована в предоставлении более широкого набора технологий для широкого обучения, инноваций, науки о данных и так далее. Когда происходит вывод, эй, как только вы обучили модель… Никакой зависимости от CUDA нет. Всё дело в том, сможете ли вы хорошо запустить эту модель?

Суть претензий Intel в том, что CUDA является проприетарной платформой Nvidia, что ограничивает развитие рынка ИИ и заставляет различные компании активнее покупать всё новые и новые ускорители Nvidia. Само собой, когда такой спрос обрушивается на одну компанию, это вредит конкуренции и, как следствие, рынку в целом. Впрочем, пока никто кроме Intel публично не заявлял, что доминирование Nvidia на рынке ИИ является большой проблемой.
14 декабря 2023 в 21:44
Технология CUDA: что это и как используется
Что такое CUDA? CUDA (Compute Unified Device Architecture) – это архитектура, которая позволяет использовать графический процессор (GPU) для повышения производительности параллельных вычислений. Она представляет собой набор инструментов и библиотек для работы с графическим процессором, основанных на технологии GPGPU.
GPGPU (General-purpose graphics processing units) – это технология, которая позволяет использовать графический процессор, предназначенный для компьютерной графики, при выполнении общих вычислений, производимых центральным процессором. Это стало возможным благодаря шейдерным блокам, с помощью которых программируются окончательные параметры объекта с высокой арифметической точностью.
Технология была разработана компанией Nvidia для решения сложных вычислительных задач, которые ранее выполнялись только на центральном процессоре (CPU). Она позволила повысить производительность компьютеров, ноутбуков, суперкомпьютеров, вычислительных станций.
Виды процессоров
Так как технология CUDA связана с использованием процессоров, рассмотрим какие виды процессоров бывают.
CPU (Центральный процессор) — это микропроцессор, выполняющий основные операции и управляющий работой компьютера или другого цифрового устройства. Он является «мозгом» компьютера: обрабатывает информацию, выполняет инструкции, математические и логические операции, координирует работу различных компонентов и устройств, и обеспечивает взаимодействие со внешними устройствами.

Центральный процессор работает непрерывно, обрабатывая все задачи по порядку, которые ему поступают. Чем выше производительность CPU, тем быстрее обрабатываются процессы, выполняемые на компьютере.
GPU или графический процессор, предназначен для обработки графических и видео-образов на компьютере. Графический процессор является частью видеокарты, которая отвечает за вывод изображения на монитор.
Одним из главных преимуществ GPU является способность обрабатывать большое количество данных параллельно, что позволяет графическим приложениям быстрее и эффективнее работать с сложными трехмерными моделями и обработкой видео.
Программная архитектура CUDA
.jpg)
Основной принцип работы CUDA состоит в том, что она дает доступ к вычислительной способности графического процессора, который обладает высокой эффективностью при решении многопотоковых задач.
CUDA имеет архитектуру, включающую в себя:
- ядро,
- драйвер,
- язык программирования C/C++,
- специальные библиотеки математических функций и утилит.
Ядро CUDA – это программируемый процессор, способный выполнять вычисления одновременно с миллионами параллельных потоков. Ядро состоит из специального набора команд, называемого ассемблером CUDA.
Драйвер – это программа, которая обеспечивает взаимодействие между операционной системой и GPU NVIDIA. С его помощью происходит создание и управление потоками ядер, чтение и запись данных в память GPU, а также связь с другими устройствами на системной шине.
C/C++ – это язык программирования, разработанный для работы с GPU NVIDIA. CUDA расширяет язык новыми ключевыми словами, функциями и библиотеками для использования GPU в процессе выполнения вычислительных задач.
В библиотеках находится коллекция алгоритмов CUDA и утилит для выполнения ядерных вычислений, использования функций математических вычислений, работы с трехмерной графикой, а также реализации машинного обучения и глубокого обучения.
При работе с технологией CUDA сначала происходит определение необходимых операций и алгоритмов, которые должны быть выполнены на графическом процессоре. Затем, с помощью языка программирования, пишется код, который будет выполнять все необходимые вычислительные задачи на GPU. После запускается программа, она загружается на GPU и выполняется на всех доступных ядрах последовательно или параллельно. Результаты вычислений возвращаются в оперативную память компьютера для дальнейшей обработки и использования.
На платформе CUDA также поддерживаются различные технологии ускорения вычислений, например, NVLink, которая обеспечивает высокоскоростной доступ к памяти и позволяет разделить задачи между несколькими графическими процессорами. Кроме того, CUDA поддерживает технологию динамической оптимизации, которая позволяет GPU адаптироваться к уникальным характеристикам каждой задачи, улучшая производительность и снижая расходы энергии.
Недостатки и преимущества CUDA
Преимущества CUDA:
- Высокая производительность: CUDA значительно ускоряет выполнение вычислений, особенно тех, которые требуют параллельной обработки данных.
- Распределенные вычисления: CUDA имеет возможность распределенных вычислений, что позволяет использовать несколько графических процессоров, работающих в сети, для решения вычислительных задач.
- Настраиваемость: CUDA позволяет настраивать все параметры процесса вычисления, чтобы получить максимальную производительность.
- Множество инструментов разработки: NVIDIA предоставляет разнообразные инструменты разработки для CUDA, включая языки программирования, библиотеки, среды разработки и фреймворки для машинного обучения и глубокого обучения.
- Широкий спектр применения: технология CUDA может быть использована во многих отраслях, например, при обработке изображений и видео, научных исследованиях, машинном обучении, финансах и т.д.
Недостатки CUDA:
- Размерные ограничения: CUDA имеет определенные ограничения по объему оперативной памяти на GPU, что иногда ограничивает размер обрабатываемых данных.
- Сложность программирования: CUDA является сложной платформой для программистов, особенно для тех, кто не знаком с использованием параллельных вычислений и GPU.
Ограничения CUDA
Один из главных недостатков CUDA состоит в том, что она является эксклюзивной платформой для работы на GPU компании NVIDIA. Это означает, что программа, написанная на CUDA, не будет работать на машинах с графическими процессорами других производителей (например, AMD или Intel).
Для работы с платформой CUDA необходимо превращать вычислительные операции в графические, таким образом, не все вычислительные задачи позволяют использовать CUDA в своей работе.
Еще одним ограничением CUDA является количество памяти на видеокарте. Каждая видеокарта имеет конечное количество памяти, что может стать проблемой для выполнения вычислительных задач с большими объемами данных.
В каких областях можно использовать CUDA
Технология CUDA используется в областях, где требуются высокопроизводительные вычисления, например:
- Научные исследования в физике, химии, биологии и астрономии. Например, моделирование различных научных явлений.
- Машинное обучение. Например, распознавания изображений и обработки естественного языка.
- Обработка видео и графики. Например, в индустрии кино и мультимедиа.
- Финансы. Например, для анализа рынков акций и ценных бумаг.
- Медицина. Например, для обработки рентгеновских снимков и магнитно-резонансной томографии.
- Обработка сигналов. Например, для расшифровки сигналов из космических источников.
- Робототехника. Например, для расширения возможностей роботов.
Часто задаваемые вопросы о CUDA
- Какие операционные системы поддерживает CUDA?
CUDA поддерживает Windows, Linux и Mac OS.
- Какие вычисления можно выполнять с помощью CUDA?
CUDA позволяет выполнять вычислительные задачи из различных областей: научные исследования, машинное обучение, обработка графики и видео, финансовый анализ, медицинские и биологические расчеты, обработка сигналов.
- В чем отличие между CPU и GPU?
CPU и GPU обрабатывают данные по-разному. CPU выполнит один поток данных за раз, тогда как GPU может обрабатывать множество потоков одновременно. GPU имеет большое количество ядер, которые позволяют выполнять многопоточные вычисления с высокой эффективностью.
- Какие языки программирования поддерживают CUDA?
CUDA поддерживает такие языки программирования, как C++, Python , Fortran, Java и другие.
Заключение
Преимущества CUDA заключаются в более быстрой обработке информации, в возможности работать с большим количеством данных и параллельных процессов, которые ранее не могли быть выполнены на CPU. Однако, для использования CUDA необходимы знания в области программирования и умения ставить специализированные вычислительные задачи, требующие больших вычислительных мощностей.
About CUDA
The CUDA compute platform extends from the 1000s of general purpose compute processors featured in our GPU’s compute architecture, parallel computing extensions to many popular languages, powerful drop-in accelerated libraries to turn key applications and cloud based compute appliances. CUDA extends beyond the popular CUDA Toolkit and the CUDA C/C++ programming language, we invite you to explore the CUDA Ecosystem and learn how you can accelerate your applications.
Widely Used By Researchers
Since its introduction in 2006, CUDA has been widely deployed through thousands of applications and published research papers, and supported by an installed base of over 500 million CUDA-enabled GPUs in notebooks, workstations, compute clusters and supercomputers.

Real People — Real Success Stories
Many researchers and developers have used the CUDA Platform to push the state of the art of their work, read some of their stories in the CUDA In Action Spotlight Series.
Acceleration For All Domains
Learn more about GPU-accelerated applications available for astronomy, biology, chemistry, physics, data mining, manufacturing, finance, and more on the software solutions page and industry solutions page. Check out our dedicated Geo-Intelligence for Developers page. Read some real industrial application case studies.





![]()






How to get started
Software developers, scientists and researchers can add support for GPU acceleration in their own applications using one of three simple approaches:
- Drop in a GPU-accelerated library to replace or augment CPU-only libraries such as MKL BLAS, IPP, FFTW and other widely-used libraries
- Automatically parallelize loops in Fortran or C code using OpenACC directives for accelerators
- Develop custom parallel algorithms and libraries using a familiar programming language such as C, C++, C#, Fortran, Java, Python, etc.
Start accelerating your application today, learn how by visiting the Getting Started Page.
Learn More
- CUDA Education and Training
- Getting Started — Parallel Computing
- CUDA FAQ
- CUDA Ecosystem
- CUDA in the News
- Deep Learning
Что такое CUDA
В статье мы подробно рассмотрим CUDA — что это за технология, как работает и в каких областях её можно использовать.
Что такое CUDA
CUDA (англ. Compute Unified Device Architecture) — это технология на базе программно-аппаратной архитектуры, которая позволяет повысить производительность параллельных вычислений. Параллельные вычисления — это вычисления, при которых процесс разработки программного обеспечения делится на потоки. Потоки обрабатываются параллельно и взаимодействуют между собой в процессе обработки. Это возможно благодаря процессорам компании NVIDIA, на которых построена работа CUDA. В их основе лежит технология GPGPU.
Прежде чем разобраться, в чём особенность этой технологии, посмотрим, какие бывают типы процессоров и как они работают.
Основные типы процессоров
CPU (англ. Central Processing Unit) — это центральный процессор, который ориентирован на обработку данных в максимально короткие сроки. Работает по следующему принципу: разбивает одну задачу на несколько потоков, каждый из которых обрабатывается отдельно. Затем эти потоки вновь объединяются и выстраиваются в нужном порядке. Такой подход позволяет увеличить скорость последовательной обработки задач. Подробнее читайте в статье Что такое процессор CPU.
GPU (англ. Graphics Processing Unit) — это специальный графический процессор, который заточен на обработку 2D или 3D-графики. Он размещается на видеокарте, что позволяет автоматически освободить основной процессор от лишней нагрузки при обработке данных. GPU состоит из нескольких тысяч ядер, которые в совокупности потребляют небольшое количество энергии. CUDA ядра «выигрывают» у CPU по производительности на 1 ватт потребляемой мощности.

На базе этих основных процессоров были разработаны различные специализированные инструменты. Например, технология GPGPU.
GPGPU (англ. General-purpose computing on graphics processing units) — это технология, которая позволяет использовать графический процессор GPU в операциях, которые обычно выполняет центральный процессор CPU. Например, в математических вычислениях. С помощью GPGPU можно использовать видеокарту для выполнения неграфических вычислений. При этом графический процессор будет работать не вместо центрального, а в качестве вычислительного блока.
CUDA является улучшенной вариацией GPGPU. Она позволяет работать на специальном диалекте — это значит, что программисты могут использовать алгоритмы, предназначенные для графических процессоров при обработке неспецифических задач. С помощью CUDA можно значимо ускорить процессы обработки. Например, можно сократить время ожидания конвертации видео до 20 раз, не задействуя основной процессор.
В каких областях можно использовать CUDA:
- вычислительная математика,
- физика,
- молекулярная биология,
- биоинформатика,
- финансовая аналитика,
- анализ баз данных,
- искусственный интеллект и другие.
В последнее время технология высокоскоростной обработки становится ближе к рядовому пользователю. Например, уже существуют плагины для Photoshop, которые используют мощности GPU. С другими программами и проектами можно познакомиться на официальном сайте.
История возникновения
Первые попытки использовать графические ускорители для нецелевых вычислений предпринимались еще с конца 90-х годов. Однако масштабная работа в этом направлении началась немного позже. В начале 2000-х годов два основных лидера в мире процессоров — компании AMD и Intel – решили побороться за производство самого мощного «мозга» компьютера. В период жесткой конкуренции производителям удалось значимо поднять планку обработки процессорами тактовых частот (например, в промежуток между 2001-м и 2003-м годом частоты подросли с 1,5 до 3 ГГц).
Вместе с этим разработчики из Стенфордского университета поставили перед собой конкретную цель — создать графический адаптер, который позволит проводить неграфические вычисления. Так появился Brook — специализированный язык программирования и реализации. Затем были запущены аналогичные проекты: библиотека Accelerator, Brahma, GPU++ и другие.
Немногим позже к исследовательской работе присоединился лидер индустрии NVIDIA. Компания решила разработать собственные программные платформы и видеокарты для неграфических вычислений. Так появилась CUDA.

NVIDIA СUDA toolkit
Архитектура
Архитектура CUDA базируется на взаимодействии между CPU и GPU процессорами. Это возможно благодаря работе шейдера — программы для исполнения видеокарты процессорами.
Взаимодействие происходит с помощью разноуровневых API. API на первом уровне — Runtime. Он позволяет сделать первичную разбивку задачи на потоки. Затем эти декомпозированные потоки переходят на второй уровень API — Driver. При этом работу API поддерживают библиотеки NVIDIA — Libraries CUBLAS (для алгебраических расчётов) и FFT (расчёт по алгоритму ускоренного вычисления Фурье).
Если говорить максимально упрощенно, то работа алгоритма CUDA выглядит следующим образом:
- Центральный процессор выделяет нужное количество памяти и отправляет её графическому процессору.
- Центральный процессор запускает ядро и также «делится» им с графическим.
- Графический процессор выполняет операции используя память и мощности ядра.
- После обработки данных центральный процессор принимает результаты.

Взаимодействие CPU и GPU
Характеристики и среда разработки CUDA:
- компилятор nvcc,
- отладчик gdb для GPU,
- профилировщик,
- библиотеки численного анализа FFT и BLAS,
- поддержка 32- и 64-битных операционных систем: Linux, macOS, Windows XP, Vista и других,
- поддержка языков программирования: Java, Python, C++, Си, Фортран и других.
Недостатки и преимущества CUDA
CUDA имеет преимущества не только перед вычислениями на CPU, но и перед более ранними технологиями вычисления с помощью GPGPU. Рассмотрим, в чём они заключаются.
Преимущества
- Простой в применении интерфейс программирования на С,
- поддержка CUDA: битовые и целочисленные операции проводятся на аппаратном уровне, не требуя переноса алгоритмов в удобный для концепции графического конвейера вид,
- не ограничена графическими API,
- адресация памяти gather и scatter в линейном порядке,
- эффективный взаимообмен между видеопамятью и системной памятью,
- память размером 16 Кб на мультипроцессор: её можно разделить на потоки и настроить кеш с широкой полосой пропускания.
Как любая технология, CUDA имеет нюансы применения и ограничения.
Ограничения
- CUDA имеет архитектуру с закрытым исходным кодом, которым владеет NVIDIA,
- архитектура работает только на видеочипах компании NVIDIA, начиная с версии GeForce 8,
- для выполняемых функций нет поддержки рекурсии,
- 32 потока — минимально возможная ширина блока.
Несмотря на все достоинства этой технологии, нельзя сказать, что параллельные вычисления полностью заменят классические. Современный центральный процессор заточен под обработку целочисленных данных и данных с плавающей запятой в максимально короткие сроки. В то же время архитектура видеокарты позволяет быстро и без проблем «распараллелить» обработку данных. Поэтому CUDA — это скорее эффективный и необходимый инструментарий для конкретных областей применения.
Теперь вы знаете, что такое и для чего нужна CUDA, а также как устроена архитектура этой технологии.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь