On the suitability of Ada multitasking for expressing parallel algorithms

This paper examines the suitability of the Ada multitasking model, for supporting parallel algorithms. The algorithms we consider include both SIMD (single instruction multiple data) and MIMD (multiple instruction multiple data) algorithms ([7]). These algorithms are typically used in numerical and other computation-intensive programs, where the ability to take advantage of parallelism available in the supporting hardware, is critical for a program's performance. The multitasking facilities of Ada are shown to lack an essential property necessary to support parallel algorithms: the ability to express parallel evaluation and distribution of parameters to the respective tasks. The resulting serial bottleneck could in certain situations offset the gain from parallelization. Constructs which support parallel evaluation and distribution of parameters to parallel tasks are proposed.