Страница 3: Independent Thread Scheduling и NVLink 2.0

Independent Thread Scheduling

При разработке архитектуры Volta особое внимание было уделено тому, чтобы с архитектурой было проще работать программистам, чтобы часть нагрузки взяли на себя API и аппаратное обеспечение. GPU GV100 стал первым графическим процессором с поддержкой функции Independent Thread Scheduling. Цель Independent Thread Scheduling заключается в дальнейшем увеличении загрузки ресурсов GPU, причем разработчику кода не нужно брать на себя задачу управления распределением ресурсов.

У архитектуры Pascal группа в 32 потока называлась warp. Такой подход хорошо соответствует классическому подходу SIMT (single instruction, multiple thread). Подобный warp выполнялся в архитектуре Pascal с единым счетчиком PC (program counter) для всех 32 потоков. Но поскольку не все 32 потока могли быть выполнены одновременно, некоторым потокам приходилось ждать, пока не будут готовы остальные.

В архитектуре Volta у каждого из 32 потоков используется свой планировщик, который отслеживает, на какой ступени конвейера находится поток, нужно ли передавать данные из одного потока в другой, нужно ли сделать паузу и подождать. В результате потоки можно более тонко адаптировать под возможности "железа", а также обеспечить большую нагрузку аппаратных ресурсов. Таким образом, допускается тонкое управление отдельными потоками внутри warp. Архитектура Volta и драйвер самостоятельно управляют назначениями потоков, программист кода на этот процесс не влияет.

NVLink 2.0

Скоростной интерконнект является важной частью любой платформы HPC. Все основные производители пытаются соединять чипы как можно более скоростными магистралями, то же самое касается соединения с внешними компонентами. Технологию интерконнекта NVLink NVIDIA представила еще на GPU Technology Conference в 2014 году. NVLink опирается на технологию High-Speed Signaling Interconnect (NVHS), разработанную NVIDIA.

С новыми GPU GV100 NVIDIA оптимизировала NVLink двумя путями. С одной стороны, увеличилась скорость каждого соединения. Также увеличилось и число каналов NVLink на GPU GV100. Максимальная пропускная способность канала NVLink до сих пор составляла до 40 Гбайт/с на канал для приема и передачи, в случае NVLink 2.0 мы получаем уже 50 Гбайт/с. Поскольку число каналов NVLink было увеличено с четырех до шести, для GPU GV100 мы получаем пропускную способность до 300 Гбайт/с.

Два дополнительных канала NVLink могут использоваться для построения новой инфраструктуры. До сих пор каналы NVLink позволяли соединять до восьми Tesla P100, а с процессором связь обеспечивалась через коммутатор PCI Express. В случае NVLink 2.0 появляются два дополнительных канала, их можно использовать, например, для связи с двумя CPU. Кроме того, в случае GPU Tesla V100 можно объединять до 64 GPU в одну систему. В целом, NVLink стал более быстрым и более гибким, что наверняка понравится разработчикам серверных решений.

NVLink 1.0 совместим с NVLink 2.0, то есть Tesla V100 можно устанавливать в существующие решения, где начнет поддерживаться интерконнект нового поколения. NVIDIA планирует на годы вперед, в том числе и возможности расширения.

Производительность

Конечно, NVIDIA привела подробности производительности и результаты тестов. В частности, NVIDIA протестировала производительность в разных приложениях глубокого обучения и сравнила результаты с предшественником Tesla P100.

В зависимости от теста, Tesla V100 справляется с расчетами до 80% быстрее. Но здесь все очень сильно зависит от внесенных оптимизацией. NVIDIA заявляет о поддержке всех актуальных API глубокого обучения, но не все разработчики имели возможность адаптировать свои программы под архитектуру Volta.

Также важную роль играет использование новых ядер Tensor. Когда они задействуются, NVIDIA указывает прирост производительности 2,4 раза по тренировке ResNet и в 3,7 раза по выборке результата (inferencing) в ResNet