Являются ли ядра CUDA такими же, как ядра рендеринга на GPU?
После прочтения ядер CUDA я предполагаю, что ядра CUDA - это обычные ядра GPU. Они могут использоваться для выполнения физических вычислений для разгрузки ЦП с использованием PhysX, или они могут использоваться для выполнения других сложных вычислительных операций, таких как кодирование / рендеринг, который часто медленнее в ЦП. Это также предполагает, что рендеринг графики является не чем иным, как большим количеством вычислений, что является правильным, насколько мне известно.
В контексте вопроса я хотел бы знать, возможно ли одновременно играть в игры и рендерить / конвертировать материал, повышая производительность, пока моя машина включена.
Являются ли ядра CUDA рабочими ядрами графического процессора или же это отдельные ядра, которые можно использовать исключительно для вычислений?
1 ответ
Современные графические движки основаны на шейдерах. Шейдеры - это программы, работающие на графическом оборудовании для создания геометрии (сцены), изображений (визуализированной сцены) и затем постэффектов на основе пикселей.
Из статьи Википедии о шейдерах:
Шейдеры - это простые программы, которые описывают черты вершины или пикселя. Вершинные шейдеры описывают черты (положение, координаты текстуры, цвета и т. Д.) Вершины, в то время как пиксельные шейдеры описывают черты (цвет, глубина z и альфа-значение) пикселя. Вершинный шейдер вызывается для каждой вершины в примитиве (возможно, после тесселяции); таким образом, одна вершина входит, одна (обновленная) вершина выходит. Каждая вершина затем отображается в виде серии пикселей на поверхности (блок памяти), которая в конечном итоге будет отправлена на экран.
Современные видеокарты имеют от сотен до тысяч вычислительных ядер, способных выполнять эти шейдеры. Раньше они были разделены между геометрическими, вершинными и пиксельными шейдерами, но архитектура теперь унифицирована, ядро способно выполнить любой тип шейдера. Это позволяет намного лучше использовать ресурсы в качестве игрового движка, и / или драйвер видеокарты может регулировать, сколько шейдеров назначено для какой задачи. Чем больше ядер выделено для геометрических шейдеров, тем больше деталей в ландшафте, больше ядер, выделенных для затенения пикселей, могут лучше работать после таких эффектов, как размытие движения или эффекты освещения.
По сути, для каждого пикселя, который вы видите на экране, на различных доступных вычислительных ядрах запускается несколько шейдеров.
CUDA - это просто API-интерфейс Nvidias, который предоставляет разработчикам доступ к ядрам графического процессора. Хотя я слышал термин "ядро CUDA", в графике ядро CUDA аналогично потоковому процессору, который является типом процессорного ядра, используемого графическими картами. CUDA запускает программы на графических ядрах, программы могут быть шейдерами или вычислительными задачами для выполнения высокопараллельных задач, таких как кодирование видео.
Если вы снизите уровень детализации в игре, вы сможете существенно снизить вычислительную нагрузку на видеокарту до такой степени, что вы сможете использовать ее для выполнения других задач, но если вы не скажете этим другим задачам замедлить также, тогда они Скорее всего, попытаться захватить ядра графического процессора и сделать вашу игру неиграбельной.