Parallel and Distributed Computing
Parallel and Distributed Computing is mandatory on many real-world engineering optimization problems tackled by intelligent computing, because in many of these problems the computing of the objective functions requires a lot of time. Depending on the instance size and characteristics of the optimization problem, parallel (cluster) or distributed (grid) computing systems can allow to obtain solutions to optimization problems which otherwise would remain unsolved.
Our group has worked on parallel and distributed computing, obtaining a wide experience in parallelizing codes to be performed on clusters of computers and servers distributed over a grid, and accumulating a high experience that can be (and is being) applied to many fields. This way, our group handles different parallel-related technologies as platforms (clusters, grids, GPUs), operating systems, middlewares and parallel programming environments (Scientific Linux, MPI, OpenMP), and has implemented many evolutionary and bio-inspired algorithms to be performed over the grid and clusters: Genetic Algorithms, Particle Swarm, Differential Evolution, Scatter Search, Artificial Bee Colony, Bees Algorithm, GRASP, etc. Some of the problems solved by means of parallel computing are:
- Particle Swarm Algorithms with GPGPU.
- Distributed and Asynchronous Bees Algorithm Applied to Nuclear Fusion Research.
- Hybrid OpenMP / MPI Differential Evolution for Solving the RWA Problem.
- Multi-objective Artificial Bee Colony for Scheduling in Grid Environments.
- Reporting Cells Using a Parallel Team of Evolutionary Algorithms.
- Desktop Grid applied to the Optimisation of X-ray Diffraction Profiles.
- Grid-based Metaheuristics in Nuclear Fusion.
- Optical WDM Networks by parallel computing.
- Grid computing and GRASP algorithm applied to the Location Area Problem.
- Scatter Search Algorithm over the Grid.
- Grid computing for the Frequency Assignment Problem.
In addition, our group has research about parallelism-related topics in specific-purpose computer architectures, FPGA coprocessors, embedded multiprocessors, etc.