Directx11 — Сохраняется Ли «Групповая» Память В Кеше L2 Графического Процессора?

  • Автор темы Russian_beauty
  • Обновлено
  • 19, Oct 2024
  • #1

статья говорит, что кеш L1 используется совместно рабочими элементами в одной рабочей группе (также известной как SM), а кеш L2 используется разными рабочими группами.

В Direct3D кажется, что группа потоков (которая задается параметром groupshared ) is mapped to multi work groups, and groupshared могут быть доступны всем потокам группы потоков (которые принадлежат разным рабочим группам).

Итак, numthread(x, y, z) the L2 cache of GPU? If it is, could I manipulate L1 cache directly in Direct3D?

#directx11 #gpgpu

Russian_beauty


Рег
05 Nov, 2011

Тем
69

Постов
187

Баллов
552
  • 26, Oct 2024
  • #2

Здесь, видимо, произошла некоторая путаница в терминологии. В Direct3D у вас есть нити и группы потоков. «Рабочий элемент» и «рабочая группа» обычно встречаются в терминологии OpenCL, где «рабочий элемент» — это то, что нить находится в Direct3D, а «рабочая группа» соответствует Direct3D. группа потоков. groupshared memory is memory accessible to all threads that are part of the same thread group.

Непонятно, что именно вы подразумеваете под «непосредственным манипулированием кешем L1». Кэш — это аппаратный компонент, который используется для прозрачной оптимизации доступа к памяти. Слово «прозрачный» здесь имеет решающее значение. Хотя на аппаратном уровне кэши обязательно содержат некоторую форму памяти, они, как правило, не являются явно «доступными» как область хранения. У вас не может быть указателя, указывающего на кеш. У вас может быть указатель, указывающий на память. Доступ к памяти обычно осуществляется через кеш, т. е. любой запрос к памяти будет передан в следующий кеш, который затем может проверить, может ли он обслужить запрос напрямую или должен идти дальше по иерархии памяти. Кэш – это нечто большее, чем просто память, которую он использует для кэширования данных. Кэш также содержит дополнительную логику для управления кэшем поверх самого хранилища. Кэши являются неявными по своей природе. Когда вы манипулируете памятью, вы, как правило, также заставляете некоторые кэши манипулировать своей памятью. Но, как правило, вы не можете «манипулировать» кешем напрямую в смысле явного определения того, что и где хранить в кеше. Как только вы можете явно указать на него и читать/записывать в него/из него, он перестает быть кешем и становится просто своего рода хранилищем.

При этом, groupshared memory is generally located in fast on-chip storage just like caches are. The whole point of groupshared Память заключается в том, чтобы воспользоваться знанием о том, что определенные потоки находятся в одной и той же части чипа, чтобы позволить им взаимодействовать быстрее. А на некотором оборудовании (например, на большинстве последних архитектур NVIDIA) groupshared memory and the L1 cache will actually use the same physical memory. However, that just means that one part of that memory is used as "normal" memory, accessed directly via addressing through some load-store-unit, while another part is used by the L1 cache to cache stuff…

 

DAEMON_D


Рег
24 Nov, 2006

Тем
60

Постов
200

Баллов
520
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно