Intel ofrece un pragma de captación previa; por ejemplo¿Cómo usar el pragma de captación previa de información cuando los datos están ocultos dentro de un objeto?
#pragma prefetch a
for(i=0; i<m; i++)
a[i]=b[i]+1;
se precapturar a
un cierto número de ciclos de bucle por delante, tal como se determina por el compilador.
¿Pero qué pasa si a
no es una matriz sino una clase con []
anulada? Si operator[]
hace un simple acceso a la matriz, ¿se puede usar de esta manera la recuperación previa?
(Probablemente la pregunta se aplica al std::vectors
también).
Estoy compilando tanto para x86 y Itanium - y asumiendo cualquier persona preocupada por el rendimiento va a utilizar este último (en una rejilla). Gracias por señalar lo que hace el prefetcher de hardware. No me había dado cuenta. –
En 2018, este pragma se aplica solo a Intel® MIC Architecture y Intel® Advanced Vector Extensions 512 (Intel® AVX-512). – Olsonist
Y la recuperación previa funciona en x86 en general, pero no con el pragma de captación previa. En su lugar, use los indicadores -ptop-prefetch. – Olsonist