공유 메모리에 상수 값을 저장하면 어떤 이점이 있습니까? 예 :공유 메모리 및 상수
A[tid] = CONSTANT * B[tid]
,
, CONSTANT는 상수 값이고, 예를 들어 4. tid는 스레드 인덱스 (배열 요소 = 단일 스레드)입니다.
모든 스레드는 값 CONSTANT
을 읽어야하므로 공유 메모리가 유용해야합니다. 맞습니까?
어떻게 생각하십니까 : 전역 메모리에서 읽는 것은 많은 시간을 소비하므로 전역 메모리에서 constatnt 값을 한 번 공유 메모리로 읽은 다음 스레드에서이를 빠르게 읽을 수 있습니다. 많은 스레드가 있기 때문에 (상수 값은 여러 번 읽혀 져야합니다.) 공유 메모리는 속도를 높여야합니다.
다양한 GPU 명령어 세트는 정수 및 부동 소수점 명령어 모두에 대해 일부 명령어에서 인코딩되는 즉시 값을 제공합니다. 컴파일러는 가능한 경우 컴파일 타임 상수에이 기능을 사용합니다. 상수를 명령어에 임베드 할 수없는 경우 컴파일러는이를 상수 뱅크 중 하나에 배치 할 수 있으며이 데이터는 상수 캐시에 의해 캐시 될 수 있습니다. 상수 캐시에는 동일한 상수를 사용하여 워프의 모든 trhead를 동시에 제공하는 브로드 캐스트 기능이 있습니다 . 따라서 개별 상수의 경우 컴파일러에만 의존 할 수 있습니다. – njuffa