L1 및 L2 캐시 수준이있을 때 하나의 주소로 동시에 글로벌 메모리 액세스를 직렬화합니까?

StackOverflow https://stackoverflow.com//questions/20014054

  •  21-12-2019
  •  | 
  •  

문제

내가 알고있는 것을 바탕으로, 워프의 스레드가 글로벌 메모리에서 동일한 주소에 액세스 할 때, 요청이 직렬화되어 일정한 메모리를 사용하는 것이 좋습니다.GPU에 L1 및 L2 캐시 레벨 (페르미 및 케플러 아키텍처)이 장착 된 경우 동시 글로벌 메모리 액세스를 시행합니까?즉, 워프의 스레드가 동일한 글로벌 메모리 주소에 액세스 할 때 1 개의 스레드가 이미 해당 주소를 요청했기 때문에 캐시 존재로부터 워프 혜택의 31 스레드를 수행 할 수 있습니까?액세스가 읽고 액세스가 쓸 때 액세스가 일어나는 일이 일어나는가?

도움이 되었습니까?

해결책

Fermi의 동일한 워프의 스레드가 같은 주소로 동시에 액세스하고 케플러가 직렬화되지 않습니다. 워프 읽기는 성능 충격이없는 단일 캐시 라인에서 읽는 모든 읽기를 만족시키는 방송 메커니즘을 가지고 있습니다. 성능은 완전히 합체 된 읽기와 동일한 것과 동일합니다. 이것은 캐시 특성에 관계없이 사실입니다. 예를 들어 L1 캐싱이 비활성화 된 경우에도 해당됩니다.

동시 쓰기의 성능은 지정되지 않음 (AFAIK)하지만 거동 동시 씁니다. 동시 씁니다.

편집 아래의 추가 질문에 응답 :

  1. 워프의 모든 스레드가 동일한 주소로 동일한 값을 작성하더라도 직렬화됩니까? 그러한 상황을 인식하는 쓰기 방송 메커니즘이 없습니까?

모든 동시 쓸이 있는지를보고있는 쓰기 방송 메커니즘은 모두 동일한 지 확인한 다음 그런 다음 조치를 취하십시오. 정답은 쓰기가 불특정 순서로 발생하고 성능 특성이 정의되지 않은 것입니다. 분명히, 기록되는 모든 값이 동일하면 위치에서 끝나는 값이 해당 값이 표시 될 수 있습니다. 그러나 쓰기 활동이 단일 사이클에 붕괴되거나 완료 될 여러주기가 필요한지 여부를 묻는 경우, 실제 동작은 정의되지 않은 (서류 미비)이고 실제로 은 하나의 아키텍처에서 다음 ( 예를 들어, CC1.x는 모든 쓰기가 수행되는 모든 방식으로 직렬화 될 수 있지만 CC2.x는 하나의 쓰기 "WINS"와 모든 다른 모든 사람들이 무시되지 않고 실제주기를 소비하지 않는 방식으로 "직렬화"할 수 있습니다. 다시 말하지만, 성능은 문서화되지 않았거나 지정되지 않지만 프로그램 관찰 가능 동작이 정의됩니다.

2 설명이 방송 메커니즘을 사용하여 일정한 메모리 브로드 캐스트 액세스 및 전역 메모리 방송 액세스 간의 유일한 차이점은 첫 번째 것이 전역 메모리로 액세스를 모두 라우팅 할 수 있지만 후자는 전용 하드웨어를 가지며 더 빠릅니다. , 오른쪽?

__constant__ 메모리는 SM 당 단위로 사용할 수있는 전용 하드웨어 인 상수 캐시를 사용하고 읽기 전용 패션에서 전역 메모리의 특정 섹션을 캐시합니다. 이 HW 캐시는 물리적으로 L1 캐시 (존재하는 경우)와 L2 캐시와 물리적으로 논리적으로 분리됩니다. Fermi 및 그 이상으로 두 메커니즘은 읽기에서 브로드 캐스트를 지원하며 일정한 캐시에 대해 일정한 캐시가 사이클 당 하나의 읽기 액세스 만 서비스 만 서비스 할 수 있기 때문에 기본 액세스 패턴입니다. 두 메커니즘은 캐시 (있는 경우) 또는 "MISS"에서 "히트"를 "히트"하고 전역 읽기를 트리거 할 수 있습니다. 주어진 위치 (또는 Cacheline)의 첫 번째 읽기에서 NETHER 캐시는 요청 된 데이터를 가지며 따라서 액세스를 서비스하기 위해 "MISS"와 글로벌 메모리를 읽는 글로벌 메모리를 트리거합니다. 이후, 두 경우 모두, 후속 읽기가 캐시에서 서비스를 처리하여 관련 데이터가 중간에서 퇴거되지 않는다고 가정합니다. 초기 CC1.x 장치의 경우, 일정한 메모리 캐시는 초기 장치가 L1 캐시가 없었기 때문에 꽤 가치가있었습니다. Fermi 및 Extant Cache를 사용하는 원칙을 초과하면 식별 가능한 데이터 (즉, 읽기 전용) 및 액세스 패턴 (Warp 당 동일한 주소)이 사용 가능한 경우, 일정한 캐시를 사용하면 L1을 통해 읽는 것으로 표시되지 않도록합니다. 다른 데이터를 퇴거시키는 것. 실제로 L1이 혼자서 지원할 수있는 것만으로 가동되는 풋 프린트가 다소 증가하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top