Содержание
- 1 Что такое ядра видеокарты CUDA?
- 2 Что делают ядра CUDA в играх?
- 3 Ядра CUDA или потоковые процессоры?
- 4 Сколько ядер CUDA вам нужно?
- 5 Вывод
- 6 Содержание
- 7 Программная архитектура [ править | править код ]
- 8 Оборудование [ править | править код ]
- 9 Преимущества [ править | править код ]
- 10 Ограничения [ править | править код ]
- 11 Поддерживаемые GPU и графические ускорители [ править | править код ]
- 12 Пример [ править | править код ]
Ядра CUDA являются эквивалентом процессорных ядер Nvidia. Они оптимизированы для одновременного выполнения большого количества вычислений, что очень важно для современной графики. Естественно, на графические настройки больше всего повлияло количество ядер CUDA в видеокарте, и они требуют больше всего от графического процессора, то есть теней и освещения, среди прочего.
CUDA долгое время была одной из самых выдающихся записей в спецификациях любой видеокарты GeForce. Однако не все до конца понимают, что такое ядра CUDA и что конкретно они означают для игр.
В этой статье дан краткий и простой ответ на этот вопрос. Кроме того, мы кратко рассмотрим некоторые другие связанные вопросы, которые могут возникнуть у некоторых пользователей.
Что такое ядра видеокарты CUDA?
CUDA является аббревиатурой от одной из запатентованных технологий Nvidia: Compute Unified Device Architecture. Его цель? Эффективные параллельные вычисления.
Одиночное ядро CUDA аналогично ядру ЦП, основное отличие в том, что оно менее изощренное, но реализовано в большем количестве. Обычный игровой процессор имеет от 2 до 16 ядер, но количество ядер CUDA исчисляется сотнями, даже в самых низких современных видеокартах Nvidia GeForce. Между тем, у высококлассных карт сейчас их тысячи.
Строение графических ядер CUDA
Что делают ядра CUDA в играх?
GPU во многих отношениях отличается от CPU, но, если говорить об этом с точки зрения непрофессионала: CPU — это скорее администратор, отвечающий за управление компьютером в целом, а GPU лучше всего подходит для выполнения тяжелых работ.
Обработка графики требует одновременного выполнения множества сложных вычислений, поэтому такое огромное количество ядер CUDA реализовано в видеокартах. И учитывая, как графические процессоры разрабатываются и оптимизируются специально для этой цели, их ядра могут быть намного меньше, чем у гораздо более универсального CPU.
И как ядра CUDA влияют на производительность в игре?
По сути, любые графические настройки, которые требуют одновременного выполнения вычислений, значительно выиграют от большего количества ядер CUDA. Наиболее очевидными из них считается освещение и тени, но также включены физика, а также некоторые типы сглаживания и окклюзии окружающей среды.
Ядра CUDA или потоковые процессоры?
Там, где у Nvidia GeForce есть ядра CUDA, у их основного конкурента AMD Radeon есть потоковые процессоры.
Теперь эти две технологии, а также соответствующие архитектуры GPU каждой компании, очевидно, различаются. Однако в основном и функционально ядра CUDA и потоковые процессоры — это одно и то же.
Ядра CUDA лучше оптимизированы, поскольку аппаратное обеспечение Nvidia обычно сравнивают с AMD, но нет никаких явных различий в производительности или качестве графики, о которых вам следует беспокоиться, если вы разрываетесь между приобретением Nvidia или AMD GPU.
Сколько ядер CUDA вам нужно?
И вот сложный вопрос. Как часто бывает с бумажными спецификациями, они просто не являются хорошим индикатором того, какую производительность вы можете ожидать от аппаратного обеспечения.
Многие другие спецификации, такие как пропускная способность VRAM, более важны для рассмотрения, чем количество ядер CUDA, а также вопрос оптимизации программного обеспечения.
Поэтому лучший способ определить производительность видеокарты — взглянуть на некоторые тесты. Таким образом, вы можете точно знать, какой тип производительности вы можете ожидать в определенной игре.
Для общего представления о том, насколько мощен графический процессор, мы рекомендуем проверить UserBenchmark. Однако, если вы хотите увидеть детальное и всестороннее тестирование, есть несколько надежных сайтов, таких как GamersNexus, TrustedReviews, Tom’s Hardware, AnandTech и ряд других.
Вывод
Надеемся, что это помогло пролить некоторый свет на то, чем на самом деле являются ядра CUDA, что они делают и насколько они важны. Прежде всего, мы надеемся, что помогли развеять любые ваши заблуждения по этому поводу.
CUDA (изначально аббр. от англ. Compute Unified Device Architecture ) — программно-аппаратная архитектура параллельных вычислений, которая позволяет существенно увеличить вычислительную производительность благодаря использованию графических процессоров фирмы Nvidia.
CUDA SDK позволяет программистам реализовывать на специальных упрощённых диалектах языков программирования Си, C++ и Фортран алгоритмы, выполнимые на графических и тензорных процессорах Nv >[1] . Архитектура CUDA даёт разработчику возможность по своему усмотрению организовывать доступ к набору инструкций графического или тензорного ускорителя и управлять его памятью. Функции, ускоренные при помощи CUDA, можно вызывать из различных языков, в т.ч. Python [2] , MATLAB [3] и т.п.
Содержание
Программная архитектура [ править | править код ]
Первоначальная версия CUDA SDK была представлена 15 февраля 2007 года. В основе интерфейса программирования приложений CUDA лежит язык Си с некоторыми расширениями. Для успешной трансляции кода на этом языке в состав CUDA SDK входит собственный Си-компилятор командной строки nvcc компании Nvidia. Компилятор nvcc создан на основе открытого компилятора Open64 и предназначен для трансляции host-кода (главного, управляющего кода) и device-кода (аппаратного кода) (файлов с расширением .cu) в объектные файлы, пригодные в процессе сборки конечной программы или библиотеки в любой среде программирования, например, в NetBeans.
В архитектуре CUDA используется модель памяти грид, кластерное моделирование потоков и SIMD-инструкции. Применима не только для высокопроизводительных графических вычислений, но и для различных научных вычислений с использованием видеокарт nVidia. Учёные и исследователи широко используют CUDA в различных областях, включая астрофизику, вычислительную биологию и химию, моделирование динамики жидкостей, электромагнитных взаимодействий, компьютерную томографию, сейсмический анализ и многое другое. В CUDA имеется возможность подключения к приложениям, использующим OpenGL и Direct3D. CUDA — кроссплатформенное программное обеспечение для таких операционных систем, как Linux, Mac OS X и Windows.
22 марта 2010 года nV >[4]
Оборудование [ править | править код ]
Платформа CUDA впервые появились на рынке с выходом чипа NVIDIA восьмого поколения G80 и стала присутствовать во всех последующих сериях графических чипов, которые используются в семействах ускорителей GeForce, Quadro и NVidia Tesla.
Первая серия оборудования, поддерживающая CUDA SDK, G8x, имела 32-битный векторный процессор одинарной точности, использующий CUDA SDK как API (CUDA поддерживает тип double языка Си, однако сейчас его точность понижена до 32-битного с плавающей запятой). Более поздние процессоры GT200 имеют поддержку 64-битной точности (только для SFU), но производительность значительно хуже, чем для 32-битной точности (из-за того, что SFU всего два на каждый потоковый мультипроцессор, а скалярных процессоров — восемь). Графический процессор организует аппаратную многопоточность, что позволяет задействовать все ресурсы графического процессора. Таким образом, открывается перспектива переложить функции физического ускорителя на графический ускоритель (пример реализации — PhysX). Также открываются широкие возможности использования графического оборудования компьютера для выполнения сложных неграфических вычислений: например, в вычислительной биологии и в иных отраслях науки.
Преимущества [ править | править код ]
По сравнению с традиционным подходом к организации вычислений общего назначения посредством возможностей графических API, у архитектуры CUDA отмечают следующие преимущества в этой области:
- Интерфейс программирования приложений CUDA (CUDA API) основан на стандартном языке программирования Си с некоторыми ограничениями. По мнению разработчиков, это должно упростить и сгладить процесс изучения архитектуры CUDA [5]
- Разделяемая между потоками память (shared memory) размером в 16 Кб может быть использована под организованный пользователем кэш с более широкой полосой пропускания, чем при выборке из обычных текстур
- Более эффективные транзакции между памятью центрального процессора и видеопамятью
- Полная аппаратная поддержка целочисленных и побитовых операций
- Поддержка компиляции кода GPU средствами открытого проекта LLVM[6]
Ограничения [ править | править код ]
- Все функции, выполнимые на устройстве, не поддерживают рекурсии (в версии CUDA Toolkit 3.1 поддерживает указатели и рекурсию) и имеют некоторые другие ограничения
Поддерживаемые GPU и графические ускорители [ править | править код ]
Перечень устройств от производителя оборудования Nv >[7] [8] .
Совместимость систем разработчика CUDA с поколениями вычислителей:
- CUDA SDK 6.0 поддерживает версии 1.0 — 3.5 (Tesla, Fermi, Kepler).
- CUDA SDK 6.5 поддерживает версии 1.0 — 5.x (Tesla, Fermi, Kepler, Maxwell).
- CUDA SDK 7.5 поддерживает версии 2.0 — 5.x (Fermi, Kepler, Maxwell).
- CUDA SDK 8.0 поддерживает версии 2.0 — 6.x (Fermi, Kepler, Maxwell, Pascal).
- CUDA SDK 9.0/9.1/9.2 поддерживает версии 3.0 — 7.2 (Kepler, Maxwell, Pascal, Volta)
- CUDA SDK 10.0 поддерживает версии 3.0 — 7.5 (Kepler, Maxwell, Pascal, Volta, Turing)
В настоящее время на рынке аппаратных средств для ПК поддержку технологии CUDA обеспечивают следующие периферийные устройства:
Версия |
---|
GeForce G110M, GeForce 9300M GS, GeForce 9200M GS, GeForce 9100M G, GeForce 8400M GT, GeForce G105M
Quadro FX 3800M, Quadro FX 3700M, Quadro FX 3600M, Quadro FX 2800M, Quadro FX 2700M, Quadro FX 1700M, Quadro FX 1600M, Quadro FX 770M, Quadro FX 570M, Quadro FX 370M, Quadro FX 360M, Quadro NVS 320M, Quadro NVS 160M, Quadro NVS 150M, Quadro NVS 140M, Quadro NVS 135M, Quadro NVS 130M, Quadro NVS 450, Quadro NVS 420, Quadro NVS 295
GeForce GTS 360M, GeForce GTS 350M, GeForce GT 335M, GeForce GT 330M, GeForce GT 325M, GeForce GT 240M, GeForce G210M, GeForce 310M, GeForce 305M
GeForce GTX 675M, GeForce GTX 670M, GeForce GT 635M, GeForce GT 630M, GeForce GT 625M, GeForce GT 720M, GeForce GT 620M, GeForce 710M, GeForce 610M, GeForce 820M, GeForce GTX 580M, GeForce GTX 570M, GeForce GTX 560M, GeForce GT 555M, GeForce GT 550M, GeForce GT 540M, GeForce GT 525M, GeForce GT 520MX, GeForce GT 520M, GeForce GTX 485M, GeForce GTX 470M, GeForce GTX 460M, GeForce GT 445M, GeForce GT 435M, GeForce GT 420M, GeForce GT 415M, GeForce 710M, GeForce 410M, GeForce GT 730 (DDR3 128-bit)
GeForce GTX 880M, GeForce GTX 780M, GeForce GTX 770M, GeForce GTX 765M, GeForce GTX 760M, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 675MX, GeForce GTX 670MX, GeForce GTX 660M, GeForce GT 750M, GeForce GT 650M, GeForce GT 745M, GeForce GT 645M, GeForce GT 740M, GeForce GT 730M, GeForce GT 640M, GeForce GT 640M LE, GeForce GT 735M, GeForce GT 730M
Jetson TK1
Jetson TX1,
DRIVE CX,
DRIVE PX
with Xavier SoC
Nvidia GeForce для настольных компьютеров |
---|
GeForce GTX TITAN, X, Z, Black |
GeForce GTX 1050/Ti, 1060, 1070, 1080/Ti |
GeForce GTX 950, 960, 970, 980/Ti |
GeForce GTX 750/Ti, 760, 770, 780/Ti |
GeForce GTX 650/Ti, 660/Ti, 670, 680, 690 |
GeForce GTX 520, 550 Ti, 560/Ti, 570, 580, 590 |
GeForce GTX 450, 460, 465, 470, 480 |
GeForce GTX 210, 220, 240, 260, 275, 280, 285, 295 |
GeForce GT120, GT130, GTS 150 |
GeForce 9600 GSO, 9800 GTX, 9800 GTX+, 9800 GX2 |
GeForce 9400 GT, 9500 GT, 9600 GT, 9800 GT |
GeForce 9300 mGPU, 9400 mGPU |
GeForce 8800 GT, 8800 GTS 512 |
GeForce 8400 GS, 8500 GT, 8600 GT, 8600 GTS |
Nvidia GeForce для мобильных компьютеров |
---|
Nvidia Tesla* |
---|
Nvidia Quadro для настольных компьютеров |
---|
Nvidia Quadro для мобильных компьютеров |
---|
- Модели Tesla C1060, Tesla S1070, Tesla C2050/C2070, Tesla M2050/M2070, Tesla S2050 позволяют производить вычисления на GPU с двойной точностью.
Пример [ править | править код ]
Этот пример кода на C++ загрузки текстур из изображения в массив на GPU:
Пример программы на языке Python, перемножающий элементы массива средствами GPU. Взаимодействие идёт с использованием PyCUDA [12]
Уже долгое время технология CUDA является одной из главных особенностей видеокарт GeForce. Однако не все понимают, что это за технология и как она влияет на игры.
В этой статье расскажу и дам короткое объяснение. Так же рассмотрим и другие вопросы, которые могут возникнуть у пользователей.
CUDA это аббревиатура технологии запатентованной Nvidia, означает Compute Unified Device Architecture (Вычислительная Унифицированная Архитектура Устройства). То есть это архитектура — такая форма организации внутреннего устройства ядер в видеокарте. Какая же цель этой технологи? Эффективные параллельные (одновременные) вычисления.
Одно ядро CUDA аналогично процессорному, с той лишь разницей, что оно проще по своей структуре, однако их количество очень большое. Типичный игровой процессор имеет от 2 до 16 ядер, а ядер CUDA в видюхе — сотни, даже в бюджетных видеокартах Nvidia. А высокопроизводительные решения и вовсе насчитывают тысячи.
Работа видеокарты во многом отличается от работы центрального процессора — процессор выступает в роли администратора, который управляет необходимыми операциями, а видеокарта берет на себя выполнения всех тяжелых задач.
Обработка графики требует одновременного выполнения сложных вычислений, именно одновременного. Поэтому в видеокартах и реализовано такое огромное количество ядер CUDA. Учитывая факт оптимизации видеокарт специально для работы с графикой, их ядра намного меньше и проще, чем у более универсальных ядер центрального процессора.
В отличии от Nvidia с технологией CUDA, их главный конкурент AMD, использует другую технологию — Потоковые процессоры (Stream Processors)
Обе технологии являются собственной разработкой компаний и в них есть различия, однако для обычного пользователя большой разницы между ними нет.
Это достаточно сложный вопрос, ответ на который не стоит искать в сухих цифрах характеристик графического адаптера. Количество не даст никаких представлений о производительности.
Многие другие характеристики, например, объем видеопамяти, поколение и скорости шины видеокарты намного важнее, для пользователя, чем данные о ядрах CUDA. Так же не стоит забывать об оптимизации в самих играх.
Лучшим способом выбора графического адаптера является все таки просмотр тестов производительности, просмотр отзывов людей, которые уже пользуются конкретной видеокартой, анализ рынка в целом, чтобы понять что выбирают покупатели. И конечно подбор по системным требованиям и fps под конкретную игру, в которую вы хотите зарубиться
Надеюсь, что помог ответить на вопрос о назначении ядер CUDA и развеять все сомнения и заблуждения о данной технологии. Теперь вы знаете что они делают и насколько важны.