This paper provides an evaluation of OpenCL, OpenMP, MPI and CUDA for boosting productivity of Embedded Systems. OpenCL, OpenMP and MPI have been developed for taking advantage of CPUs while CUDA is dedicated to GPUs. MPI has been developed for the distributed memory model enabling inter process communication where every processor has its private memory, while OpenCL, CUDA and OpenMP are dedicated for the shared memory model where the data is accessible to all the processors available. However, OpenCL enables cross-platform parallel computing, making it adaptable for heterogeneous platforms including both CPUs and GPUs as well as other classes of processors, for instance DSPs and FPGAs. This paper analyzes the features, advantages, and disadvantages of OpenCL, OpenMP, MPI, and CUDA, especially their usage in embedded systems. Taking this approach to these parallelization techniques will help developers how they can enhance embedded system computational tasks with regard to the performance to complete tasks in shorter time.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Evaluating OpenCL, OpenMP, MPI and CUDA for Embedded Systems

  • Mohsine Kartita,
  • Abdelkarim Zemmouri,
  • Anass Barodi,
  • Mohamed Chahid,
  • Mohammed Benbrahim

摘要

This paper provides an evaluation of OpenCL, OpenMP, MPI and CUDA for boosting productivity of Embedded Systems. OpenCL, OpenMP and MPI have been developed for taking advantage of CPUs while CUDA is dedicated to GPUs. MPI has been developed for the distributed memory model enabling inter process communication where every processor has its private memory, while OpenCL, CUDA and OpenMP are dedicated for the shared memory model where the data is accessible to all the processors available. However, OpenCL enables cross-platform parallel computing, making it adaptable for heterogeneous platforms including both CPUs and GPUs as well as other classes of processors, for instance DSPs and FPGAs. This paper analyzes the features, advantages, and disadvantages of OpenCL, OpenMP, MPI, and CUDA, especially their usage in embedded systems. Taking this approach to these parallelization techniques will help developers how they can enhance embedded system computational tasks with regard to the performance to complete tasks in shorter time.