인텔은 유용하게 prefetch pragma를 제공합니다. 컴파일러에 의해 결정되는 예에 대해데이터가 개체 내부에 숨겨져있을 때 intel prefetch pragma를 사용하는 방법?
#pragma prefetch a
for(i=0; i<m; i++)
a[i]=b[i]+1;
는 앞서 루프 사이클 a
특정 번호를 프리 패치한다.
그러나 a
이 배열이 아니지만 []
인 클래스가 재정의되면 어떻게 될까요? operator[]
이 단순한 배열 액세스를 수행하는 경우, 프리 페치는 여전히 이러한 방식으로 사용될 수 있습니까?
(아마도이 질문은 std::vectors
에도 적용됩니다).
- 및 (그리드에)는 후자를 사용하여 성능이 우수 걱정 사람을 가정. 하드웨어 프리 페처가하는 일을 지적 해 주셔서 감사합니다. 나는 깨달았다. –
2018 년이 pragma는 인텔 ® MIC 아키텍처 및 인텔 ® 고급 벡터 확장 512 (인텔 ® AVX-512)에만 적용됩니다. – Olsonist
그리고 prefetching은 일반적으로 x86에서는 작동하지만 prefetch pragma에서는 작동하지 않습니다. 대신 -qopt-prefetch 플래그를 사용하십시오. – Olsonist