HPC (High Performance Computing) systemer har i de siste årene blitt mer og mer heterogene, og inneholder forskjellige arkitekturer som flerkjernede CPUer og akseleratorer som GPUer og FPGAer. På grunn av mangfoldet i arkitekturparametere, må programmene optimaliseres og ytelsesjusteres for den gitte arkitekturen for å få den beste ytelsen. Arkitektoniske funksjoner inkluderer spesielle instruksjoner for å bruke maskinvareparallellitet til fler- og mangekjerneprosessorer, forskjellige typer og størrelser på minnet og andre spesielle arkitektoniske funksjoner, for eksempel tensor cores på moderne GPUer. Dette fører til mye ytelsesjustering for den gitte maskinvaren for å oppnå best ytelse. Siden det er mange justerbare parametre for ytelse...