[ca] L'evolució dels processadors multicore ha canviat completament l'evolució dels actuals sistemes de HPC. Les arquitectures multicore han estat dissenyades principalment per evitar tres barreres de disseny: el paral·lelisme a escala d'instrucció, el consum energètic i la contenció a memòria. La darrera és deguda a la creixent diferència de velocitat entre el processador i la memòria. Les prestacions de les aplicacions intensives a memòria executades en entorns multicore multisocket estan directament relacionades a la utilització dels recursos compartits a la jerarquia de memòria. La utilització dels recursos compartits pot portar a una degradació de les prestacions significativa. L'exploració de diferents configuracions d'afinitat de threads permet la selecció de configuracions que poden arribar a equilibrar la millora de prestacions obtinguda deguda a l'increment del paral·lelisme amb la degradació deguda a la contenció a memòria. Les principals contribucions d'aquesta tesi és la definició d'una metodologia pel desenvolupament d'estratègies de sintonització en entorns multicore multisocket que ha proporcionat la definició de dos models de rendiment per aplicacions intensives a memòria. El primer model de rendiment, basat en una caracterització en temps d'execució, estima el temps d'execució per diferents configuracions de número i distribució de threads en entorns multicore multisocket. Per aquesta finalitat, el model requereix una caracterització exhaustiva en temps d'execució en un únic processador amb l'objectiu de determinar la contenció a memòria. El segon model de rendiment, basat en la pre-caracterització de l'aplicació, estima el temps d'execució i l'impacte de la contenció a memòria per execucions concurrents basat en el perfil del memory footprint extret de traces de la mateixa aplicació executada amb petites càrregues de treball.

[en] The evolution of multicore processors has completely changed the evolution of current HPC systems. The multicore architectures were mainly designed to avoid three design walls, instruction level parallelism, power wall, and finally the memory wall. The last because of the increasingly gap between processor and memory speeds. Performance of memory intensive applications executed on multi-core multi-socket environments is closely related to the utilization of shared resources in the memory hierarchy. The shared resources utilization can lead to a significant performance degradation. The exploration of different thread affinity configurations allows the selection of a proper configuration that balances the performance improvement obtained by increasing parallelism with the performance degradation due to memory contention. The main contributions of this thesis is the definition of a methodology for developing dynamic tuning strategies in multicore multisocket environment which has provided the definition of two performance models for memory intensive applications. The first performance model, based on runtime characterization, estimates the execution time for different configurations of threads and thread distributions in a multicore multisocket system. To do that, the model requires a runtime characterization from the exhaustive execution on a single socket to determine the memory contention. The second performance model, based on pre-characterization of the application, estimates at runtime the impact of the memory contention for concurrent executions based on profiling the memory footprint from traces of the application using small workloads.