[en] In the wake of the interest in being capable to use MKL through NumPy in distributed systems, a collaboration between Intel R and the BSC's Work- flows and distributed computing department has been created. This work explores several possible investigation lines that aims to improve the behaviour and ease the use of NumPy with MKL and PyCOMPSs simultaneously to carry out linear algebra operations in distributed systems. Regarding the used algorithms, first of all some solutions are explored to achieve a better performance in the blocked matrix multiplication. Next, the code already present in the center that computes the Cholesky factorisation has been modified in order to improve his parallelisation level and initialise the matrix in a distributed way. Finally, an algorithm to compute a QR decomposition through the matrix decomposition in smaller square matrix initialized in a distributed way has been implemented. Next, a refactor in the COMPSs scheduler has been done in order to ease the creation of new scheduling policies. Once this work has been done, some new schemes has been added. In particular, schedulers with FIFO, LIFO and FIFO modified to schedule child tasks in the father's worker to minimize the amount of data transfers has been added. Finally, a library that wraps the entire NumPy library has been implemented. This new environment allows the team to introduce the distributed implementations progressively assuring that importing it the user will have access to the full stack of NumPy's functionalities, even those not still implemented.

[es] A raíz del interés por ser capaces de utilitzar las librerias de NumPy con MKL en entornos distribuidos, surgió una colaboración entre Intel R i el departamento de Workflows and distributed computing del BSC. Este trabajo explora un conjunto de posibles lineas de investigación que tienen por objetivo mejorar el rendimiento y facilitar la utilización simultánea de MKL a través de NumPy i PyCOMPSs para realizar operaciones de álgebra lineal en entornos distribuidos. En lo que afecta a los algoritmos matemáticos utilizados, en una primera instancia se buscan soluciones para conseguir un rendimiento máximo de la multiplicación de matrices mediante la descomposicion de las mismas en bloques cuadrados. A continuación, se ha adaptado el código ya existente en el BSC para calcular la factorización de Cholesky con la inicialización distribuida i aumentar su grado de paralelismo. La última tarea realizada consiste en la implementación de un algoritmo para el cálculo de la descomposición QR mediante la descomposición de la matriz en bloques cuadrados realizando la inicialización de forma distribuida. Considerando el impacto de la planificación para obtener un buen rendimiento de las aplicaciones, a continuación se ha procedido a realizar una refactorización del planificador con el objetivo de introducir nuevas políticas. Concretamente, se han añadido planificadores que siguen una política FIFO, una LIFO i una FIFO modificada para priorizar la localidad de los datos y evitar así el número de transferencias. Finalmente, se ha diseñado e implementado una librería que utiliza un sistema de wrapping sobre la librería NumPy que permite la introducción progresiva de los algoritmos distribuidos sin la necesidad de implementar-la toda de golpe a la vez que el usuario sigue teniendo acceso a todas las funcionalidades de la librería original.