Использует ли TensorFlow все оборудование на GPU? - PullRequest
0 голосов
/ 09 июня 2018

NVidia GP100 имеет 30 микросхем TPC и 240 «текстурных блоков».Используются ли TensorFlow TPC и текстурные блоки или эти одноразовые кусочки кремния для машинного обучения?

Я смотрю на встроенный монитор производительности GPU-Z и Windows 10 во время сеанса обучения нейронной сети и вижу, что различные аппаратные функции используются недостаточно.Tensorflow использует CUDA.Я полагаю, что CUDA имеет доступ ко всем аппаратным компонентам.Если я знаю, где находится разрыв (между Tensorflow и лежащим в основе CUDA) и является ли он материальным (сколько тратится кремния), я могу, например, исправить его, создав клон TensorFlow, изменив его, а затем отправив запрос на извлечение.

Например, ответ ниже обсуждает объекты текстуры, доступные из CUDA.NVidia отмечает, что их можно использовать для ускорения чувствительных к задержке кратковременных ядер .Если я Google "TextureObject tenorflow", я не получаю никаких хитов.Так что я могу предположить, за исключением доказательств обратного, что TensorFlow не использует преимущества TextureObjects.

NVidia продает GPGPU для обучения нейронной сети.До сих пор кажется, что они приняли стратегию двойного использования для своих цепей, поэтому они оставляют в цепях, не используемых для машинного обучения.Возникает вопрос: будет ли схема TensorFlow более чистой? По этой причине Google сейчас продвигает TPU. Жюри покажет, действительно ли TPU дешевле для TensorFlow, чем графические процессоры NVidia. NVidia оспаривает претензии Google по соотношению цена / производительность.

1 Ответ

0 голосов
/ 11 июня 2018

Ни одна из этих вещей не является отдельными частями отдельного оборудования, которые могут быть адресованы отдельно в CUDAПрочтите этот отрывок на странице 10 вашего документа:

Каждый GPC внутри GP100 имеет десять SM .Каждый SM имеет 64 ядра CUDA и четыре текстурных блока. С 60 SM , GP100 имеет в общей сложности 3840 ядер CUDA одинарной точности и 240 текстурных блоков.Каждый контроллер памяти подключен к 512 КБ кэш-памяти L2, а каждый стек DRAM HBM2 управляется парой контроллеров памяти.Полный графический процессор включает в себя 4096 КБ кэш-памяти второго уровня.

И если мы читаем чуть выше, то:

GP100 был создан, чтобы быть самым высокопроизводительным процессором параллельных вычислений в мире, чтобы удовлетворить потребности рынков ускоренных вычислений на GPUобслуживается нашей платформой ускорителя Tesla P100.Как и предыдущие графические процессоры класса Tesla, GP100 состоит из массива кластеров графической обработки (GPC), кластеров обработки текстур (TPC), потоковых мультипроцессоров (SM) и контроллеров памяти.Полный GP100 состоит из шести GPC, 60 Pascal SM, 30 TPC (каждый с двумя SM) и восьми 512-битных контроллеров памяти (всего 4096 бит).

ивзгляните на диаграмму, на которой мы видим следующее:

enter image description here

Таким образом, GPC и SMS не являются отдельными аппаратными компонентами, но даже TPC - это просто еще один способ реорганизации аппаратной архитектуры и придумывания причудливого маркетингового названия.Вы можете ясно видеть, что TPC не добавляет ничего нового в диаграмму, он просто выглядит как контейнер для SM.Его [1 GPC]: [5 TPC]: [10 SM]

Контроллеры памяти - это нечто, что все аппаратное обеспечение будет иметь для взаимодействия с ОЗУ, случается, что больше памятиКонтроллеры могут активировать более широкую полосу пропускания, см. эту схему:

enter image description here

, где «Высокоскоростная память» относится к HBM2 типу видеопамять как у GDDR5, другими словами, видео ОЗУ.Это не то, к чему вы бы обращались непосредственно в программном обеспечении с помощью CUDA, больше, чем с настольными компьютерами X86.

Так что на самом деле у нас здесь есть только SM, а не TPC и GPC.Итак, чтобы ответить на ваш вопрос, поскольку Тензорный поток использует преимущества cuda , предположительно, он собирается использовать все доступное аппаратное обеспечение, которое он может.

РЕДАКТИРОВАТЬ: постер отредактировал свой вопрос на совершенно другой вопрос, и у него появились новые заблуждения, поэтому вот ответ на этот вопрос:

Кластеры обработки текстур (TPC)и текстурные единицы не одно и то же.Похоже, что TPC - это просто организация потоковых мультипроцессоров (SM) с небольшим количеством маркетинговой магии.

Текстурные блоки не являются конкретным термином, а функции отличаются от GPU к GPU, но в основном вы можете думать оони представляют собой комбинацию текстурной памяти или готового доступа к текстурной памяти, которая использует пространственную когерентность, в отличие от L1, L2, L3 ... кеша, которые используют временную когерентность, в сочетании с некоторыми фиксированными функциональными возможностями.Фиксированные функциональные возможности могут включать в себя фильтр доступа к интерполяции (часто, по меньшей мере, линейную интерполяцию), разные режимы координат, управление отображением и ансиотропную фильтрацию текстуры.См. Cuda 9.0 Guide по этой теме, чтобы получить представление о функциональности текстурного блока и о том, что вы можете контролировать с помощью CUDA.На диаграмме мы видим текстурные единицы внизу.

enter image description here

Очевидно, что они полностью отличаются от TPC, показанных на первом опубликованном мною изображении, которые, по крайней мере в соответствии с диаграммой, не имеют дополнительных функций, связанных сони и являются просто контейнером для двух SM.

Теперь, несмотря на то, что вы можете обращаться к функциям текстур в cuda, вам часто это не нужно.Функция фиксированной функции текстурных блоков не так уж полезна для нейронных сетей, однако пространственно-согласованная память текстур часто автоматически используется CUDA для оптимизации, даже если вы явно не пытаетесь получить к ней доступ.Таким образом, TensorFlow все равно не будет «тратить» кремний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...