Общая память Jetson Tegra TX1

Там ясно сказано, что Tegra TX1 имеет общую память. Мой вопрос: эта память распределяется между процессором и графическим процессором? Или эта память распределяется между разными блоками графического процессора.


person kshitij srivastava    schedule 29.06.2016    source источник


Ответы (2)


CPU и GPU имеют одинаковую систему памяти. То есть системная память DRAM также является той же самой физической памятью, из которой выделена глобальная память графического процессора. Различные методы, такие как нулевое копирование и унифицированная память, могут в основном устранить логическое различие между данными системной памяти и глобальными данными графического процессора.

Кроме того, графический процессор в Tegra TX1, как и все графические процессоры с поддержкой CUDA, имеет общую память CUDA. Это память, которая распределяется между потоками в определенном блоке, но не распределяется между разными блоками в графическом процессоре. Основной системой памяти, совместно используемой различными блоками графического процессора, является глобальная система памяти, которая в Tegra TX1 (физически) совпадает с системной памятью DRAM, как уже упоминалось.

person Robert Crovella    schedule 29.06.2016
comment
поэтому в основном при написании программ cuda мне не нужно беспокоиться о операторах cudamalloc, cudamemcpy и cudafree. - person kshitij srivastava; 01.07.2016
comment
Неправильно. По-прежнему существует логическое различие между памятью хоста и памяти устройства. Вы можете обойти или стереть эти различия, если хотите, используя такие методы, как нулевое копирование или унифицированная память. - person Robert Crovella; 01.07.2016
comment
Итак, у меня очень простой вопрос. Предположим, я пишу программу cuda для возведения в квадрат некоторых чисел, которые присутствуют в массиве в памяти ЦП. То, как мы пишем код cuda, где память процессора и графического процессора различается, заключается в том, что мы копируем весь массив из памяти хоста в память устройства и выполняем необходимые вычисления. Мой вопрос: в случае Tegra TX1, если мы будем следовать этой процедуре, будет ли это создавать дублирование данных в DRAM? - person kshitij srivastava; 01.07.2016
comment
Да, и нулевое копирование, и унифицированная память — это методы, которые могут предотвратить дублирование. - person Robert Crovella; 01.07.2016
comment
@kshitij srivastava, логическое различие глобальной (основной CPU+GPU) памяти означает только следующее: вам просто нужно вызвать cudamalloc() в самом начале программы и указать этот/эти указатели( s) [в хост-коде ЦП] к датчикам или другому аппаратному обеспечению для заполнения данных... как только аппаратное обеспечение сигнализирует о заполнении буфера (при необходимости разблокируйте буфер от сначала HW-очередь), вы можете сразу же обрабатывать данные в CUDA, потому что они уже находятся в глобальной памяти CUDA, которую вы отметили в начале. Это ВСЕ :-) - person Filip OvertoneSinger Rydlo; 20.12.2016

ЕСЛИ вы выделили блок памяти с помощью cudamalloc(), то ДА. Она автоматически становится общей глобальной памятью между процессором и графическим процессором.

Пожалуйста, НЕ путайте его с локальной памятью CUDA, называемой "Shared MEM". {Общий доступ между потоками одного и того же БЛОКА}.

Помните: "ОБЩАЯ ПАМЯТЬ" в CUDA — это ТУРБО-скорость программируемый кэш внутри блока SM графического процессора! :-)

person Filip OvertoneSinger Rydlo    schedule 19.12.2016