나는 인텔에 대해 벡터 레지스터가 최적화되어 있음을 알고 있습니다. SandyBridge 마이크로 아키텍처 (SSE + AVX), 그러나 NVIDIA의 GPU는 어떻습니까?OpenCL : NVIDIA의 벡터 레지스터 (float4, float8, ..) VS 인텔의 벡터 레지스터
일부 소스 코드는 벡터 레지스터를 사용하는 것이 NVIDIA의 GPU에서는 쓸모가 없다고 말하면서 어딘가에서 읽었습니다. 그러나 GPU에 벡터 레지스터가있는 프로그램을 실행하는 testrun이 있고 그 중 하나와 비교할 때 , 그들은 나에게 apx를 줬다. 1.7x 속도 향상.
참고로 인텔 CPU는 동일한 프로그램에서 1.25x 속도 향상을 제공합니다.
NVIDIA가 이러한 벡터 레지스터를 최적화한다면 누군가가 설명이나 소스를 읽어 줄 수 있습니까? 나는 그것을 문서화 할 때 필요하다. 감사.
NVIDIA GPU의 성능 향상 가능성은 메모리 처리량에 있습니다. 하드웨어는 각 멀티 프로세서의 단일 트랜잭션에서 64 비트 및 128 비트 유형의 저장 및로드를 수행 할 수 있으므로 전체 대기 시간이 감소되고 유효 처리량이 증가합니다. – talonmies
답장을 보내 주셔서 감사합니다. 16 개의로드/저장 유닛을 의미합니까? 각 유닛이 워프 당 128 비트 유형을로드/저장 할 수 있습니까? (따라서 16x128이됩니다.) 그렇지 않은 경우에는 그렇지 않습니다. 암시 적 벡터 레지스터 사용 (convert_floatn, vloadn 등)은 차이를 만듭니다. 더 빠른 속도 향상을 제공합니다. – ardiyu07
예. 하드웨어는 워프 당 256 및 512 바이트 트랜잭션 크기를 처리 할 수 있습니다. 이는 특정 레벨의 점유 수준에서 더 높은 대역폭 사용률을 초래할 수 있습니다. 효과를 설명하는 CUDA의 memcpy 커널 예제는 [이 슬라이드] (http://www.cs.berkeley.edu/~volkov/volkov10-GTC.pdf)의 슬라이드 35를 참조하십시오 (pdf 참고). – talonmies