In this work, an automatic optimisation approach for parallel routines on multi-GPU systems is presented. Several inter-GPU communication libraries (such as CUDA-Aware MPI or NCCL) are used with a set of routines to perform the numerical operations among the GPUs located on the compute nodes. The main objective is the selection of the most appropriate communication library, the number of GPUs to be used and the workload to be distributed among them in order to reduce the cost of data movements, which represent a large percentage of the total execution time. To this end, a hierarchical modelling of the execution time of each routine to be optimised is proposed, combining experimental and theoretical approaches. The results show that near-optimal decisions are taken in all the scenarios analysed.
We present an assignment for a full Parallel Computing course. Since 2017/2018, we have proposed a different problem each academic year to illustrate various methodologies for approaching the same computational problem using different parallel programming models. They are designed to be parallelized using shared-memory programming with OpenMP, distributed-memory programming with MPI, and GPU programming with CUDA or OpenCL. The problem chosen for this year implements a brute-force solution for exact DNA sequence alignment of multiple patterns. The program searches for exact coincidences of multiple nucleotide strings in a long DNA sequence. The sequential implementation is designed to be clear and understandable to students while offering many opportunities for parallelization and optimization. This assignment addresses key concepts many students find difficult to apply in practical scenarios: race conditions, reductions, collective operations, and point-to-point communications. It also covers the problem of parallel generation of pseudo-random sequences and strategies to notify and stop speculative computations when matches are found. This assignment serves as an exercise that reinforces basic knowledge and prepares students for more complex parallel computing concepts and structures. It has been successfully implemented as a practical assignment in a Parallel Computing course in the third year of a Computer Engineering degree program. Supporting materials for this and previous assignments in this series are publicly available.
The performance of deep-learning-based segmentation models is strongly dependent on the quality of the input data, which is frequently heterogeneous or degraded in real-world medical imaging scenarios. This work presents a data-centric algorithmic pipeline designed to improve cardiac MRI segmentation accuracy through systematic image enhancement and automatic slice-quality filtering. The proposed method is formalized as deterministic algorithm that combines image processing and supervised learning components. The approach integrates a contrast- and structure-preserving enhancement stage, based on bilateral filtering and adaptive histogram equalization, with a quality-aware selection algorithm. Slice quality is assessed using anatomical attributes extracted via YOLOv11s-based localization and a supervised classification model trained to identify diagnostically reliable images. When applied to transformer-based segmentation architectures such as ViTUNeT, the pipeline yields consistent improvements across all evaluation metrics without increasing model complexity or training cost. These findings emphasize the importance of algorithmic data curation as an effective strategy for enhancing robustness and stability in deep-learning segmentation pipelines and demonstrate the broader applicability of the proposed approach to computer-vision tasks involving heterogeneous or low-quality image datasets.
This work proposes a hierarchical approach to reduce the training time of task-based routines by reusing previously obtained autotuning information. This approach has been integrated into a working prototype of Chameleon, a dense linear algebra software whose tile-based routines are executed on the available computational resources by means of a runtime system. The results show that this approach provides a high degree of scalability to the entire self-optimization process, achieving a reduction in training time of up to 80% and an appropriate selection of values for the adjustable parameters.