[en] With every generation, GPUs incorporate an ever-increasing amount of computational resources, which are dedicated to accelerate data-parallel applications. Using those resources efficiently requires applications to expose high levels of parallelism. Even then, they may not be able to maximize the usage of each resource type (bandwidth, compute resources, memory, the different execution units of the same core, etc). Not all applications can fully use a complete GPU, but when executing more than one application concurrently, they may compensate for each other's lacks. this is the idea behind multiprogramming. It is supported by current GPUs, but the techniques they use only tackle the lack of thread level parallelism (TLP) issue. Other methods like Warped- Slicer have been proposed to reduce resource underutilization by making applications share the resources of the same SM (Streaming Multiprocessor, which is a core of the GPU in Nvidia terminology). This is called Intra-SM-sharing. Warped-Slicer, which is the state of the art for thread block scheduling, tries to make an efficient partitioning of the resources between kernels (programs executed by the GPU) to maximize performance. However, its profiling strategy makes it agnostic to the interference between the kernels. This dissertation proposes MIAS (Memory Interference Aware Scheduler), a thread block scheduling algorithm that tackles the issues Warped-Slicer has. It carries out a profiling phase where, unlike Warped-Slicer, it profiles kernels jointly, making them share the SMs during that phase. It profiles all the resource partitioning configurations (or thread block configurations) in parallel, in different SMs. It, then, chooses the best configuration using different metrics to estimate the interference between the profiled alternatives in the memory system, which they share. Evaluation results show that MIAS improves performance by 32% over sequential execution and 20% over Warped-Slicer.

[es] En cada generación, las GPUs incorporan mayor cantidad de recursos computacionales, q0ue se dedican a acelerar aplicaciones paralelas en datos. Para utilizar dichos recursos eficientemente, las aplicaciones tienen que exponer niveles altos de paralelismo. Aun cuando cumplen eso, es posible que no usen todos los recursos de los que dispone la GPU (ancho de banda, memoria, unidades de ejecución de cada core, etc.). No todas las aplicaciones pueden hacer un uso eficiente de una GPU, pero, si se ejecutan varias concurrentemente, puede que entre ellas compensen las deficiencias que cada una tiene. Esta es la idea detrás de la multiprogramación. Las GPUs actuales tienen soporte para ella, pero solo abordan la falta de paralelismo. Otros métodos, como Warped- Slicer, se han propuesto para reducir la infrautilización haciendo que las aplicaciones compartan los recursos de un mismo SM (Streaming Multiprocessor, que es el equivalente a un core de la GPU en la terminología de Nvidia). A esto se le denomina Intra-SMSharing. Warped-Slicer, que es el estado del arte en la planificación de bloques de threads, intenta hacer un particionado eficiente de los recursos entre los kernels (programas ejecutados por la GPU) para maximizar el rendimiento. Sin embargo, su estrategia de profiling lo hace agnóstico a las interferencias entre los kernels. Este trabajo propone MIAS (Memory Interference Aware Scheduler), un algoritmo de planificación de bloques de threads sin las limitaciones de Warped-Slicer. Para ello, MIAS lleva a cabo una fase de profiling donde, a diferencia de Warped-Slicer, realiza un profiling conjunto de los kernels, haciendo que compartan los SMs durante esta fase, y evaluando todas las configuraciones de particionado de recursos (o configuraciones de bloques de bloques de threads) en paralelo, en diferentes SMs. Después, escoge la mejor configuración usando diferentes métricas para estimar los efectos de las interferencias entre las alternativas que están en profiling. Los resultados de evaluación muestran que MIAS mejora el rendimiento en un 32% respecto a la ejecución secuencial y en un 20% respecto a Warped-Slicer.