Loop tiling är en effektiv optimering transformation för att öka minnet prestanda av ett program, särskilt för tät matris vetenskapliga beräkningar. Omfattningen och stabiliteten av de uppnådda prestandaförbättringarna är starkt beroende av ett lämpligt urval av kakelstorlekar. Många befintliga kakelval algoritmer försöker hitta kakelstorlekar som eliminerar själv-interference cache konflikt missar, maximera cacheutnyttjande, och minimera kors-interference cache konflikt missar. Dessa tekniker är starkt beroende av den faktiska layouten av matriserna i minnet. Array stoppning, en effektiv teknik för optimering av datalayout, är därför införlivad med många algoritmer för att hjälpa loop tiling stabilisera sin effektivitet genom att undvika ''patologiska'' matrisstorlekar. I detta dokument undersöker vi flera sådana kombinerade algoritmer i termer av kostnads-nytto-avsättningar, och introducerar en ny algoritm. De preliminära experimentella resultaten visar att mer exakta och kostsamma val av kakel och array stoppning algoritmer kanske inte kan motiveras av de resulterande prestandaförbättringar eftersom sådana förbättringar också kan uppnås genom mycket enklare och därmed billigare strategier. De viktigaste frågorna när det gäller att hitta en bra tilingalgoritm är 1) att identifiera kritiska prestandafaktorer och 2) att utveckla motsvarande prestandamodeller som tillåter förutsägelser med tillräcklig noggrannhet. Efter denna insikt har vi utvecklat en ny tilingalgoritm som presterar bättre än tidigare algoritmer när det gäller utförandetid och stabilitet, och genererar kod med en prestanda jämförbar med den bästa uppmätta algoritmen. Experimentella resultat på två standardriktmärkeskärnor för matris multiplicera och LU faktorisering visar att den nya algoritmen är storleksordningar snabbare än den bästa tidigare algoritmen utan att offra stabilitet och exekveringshastighet för den genererade koden.
Hsu och Kremer REF ger en jämförande studie av kakelstorleksalgoritmer.
A Quantitative Analysis of Tile Size Selection Algorithms
{'venue': 'The Journal of Supercomputing', 'journal': 'The Journal of Supercomputing', 'mag_field_of_study': ['Computer Science']}