2016-06-29 3 views
2

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

ответ

3

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

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

+2

так что в основном при написании программ cuda, мне не нужно беспокоиться о заявлениях cudamalloc, cudamemcpy и cudafree. –

+0

Неправильно. По-прежнему существует * логическое различие между памятью хоста и устройства. Вы можете обойти или размыть эти различия, если хотите, используя такие методы, как нуль-копия или унифицированная память. –

+0

Итак, у меня есть очень простой вопрос. Предположим, что я пишу программу cuda для квадратизации некоторых чисел, которые присутствуют в массиве в памяти процессора. То, как мы пишем код cuda, где память CPU и GPU отличается, в основном, мы копируем весь массив из памяти хоста в память устройства и выполняем требуемые вычисления. Мой вопрос: в случае Tegra TX1, если мы будем следовать этой процедуре, собирается ли он создавать дубликаты данных на DRAM? –

0

IF Вы выделили блок памяти cudamalloc(), затем YES. Он автоматически разделяется Глобальная память между CPU и GPU.

Пожалуйста, не путайте его с локальной памятью CUDA , называемой «Shared MEM». {Разделяется между потоками одного и того же блока).

Помните: «Общая память» в CUDA является TURBO скоростьпрограммируемый кэш внутри SM блока ГПУ! :-)