Nella mia applicazione, a un certo punto ho bisogno di eseguire calcoli su un grande blocco contiguo di dati di memoria (100s di MB). Quello che stavo pensando è stato di mantenere il prefetching della parte del blocco che il mio programma toccherà in futuro, così che quando eseguo i calcoli su quella parte, i dati sono già nella cache.Prefetching dei dati nella cache per x86-64
Qualcuno può darmi un semplice esempio di come ottenere ciò con gcc? Ho letto _mm_prefetch
da qualche parte, ma non so come usarlo correttamente. Si noti inoltre che ho un sistema multicore, ma ogni core lavorerà su una diversa regione di memoria in parallelo.
Se l'accesso alla memoria è sequenziale, il prefetcher hardware lo farà già per te. Quindi probabilmente non migliorerai molto con il prefetch manuale. – Mysticial
Vedere questa domanda per un esempio di dove il precaricamento effettivamente aiuta: http://stackoverflow.com/questions/7327994/prefetching-examples – Mysticial
Vuoi dire che il prefetcher dell'hardware riconosce in qualche modo che sto utilizzando aree contigue in memoria e porto quelle porzioni nella cache ? – pythonic