Abstract
In this paper, we propose a method to automatically generate parallelized code from Simulink models, while exploiting both task and data parallelism. Building on previous research, we propose a model-based parallelizer (MBP) that exploits task parallelism and assigns tasks to CPU cores using a hierarchical clustering method. We also propose amethod in which data-parallel SYCL code is generated from Simulink models; computations with data parallelism are expressed in the form of S-Function Builder blocks and are executed in a heterogeneous computing environment. Most parts of the procedure can be automated with scripts, and the two methods can be applied together. In the evaluation, the data-parallel programs generated using our proposed method achieved a maximum speedup of approximately 547 times, compared to sequential programs, without observable differences in the computed results. In addition, the programs generated while exploiting both task and data parallelism were confirmed to have achieved better performance than those exploiting either one of the two.
Highlights
: 1. We developed a model-based parallelizer for automatically generating task-parallel C++ code, centered around the block-level XML (BLXML) markup language, while implementing a hierarchical clustering method
We propose a method in which data-parallel SYCL code is generated from Simulink models; computations with data parallelism are expressed in the form of S-Function Builder blocks and are executed in a heterogeneous computing environment
We propose a method; data-parallel SYCL [11] code is generated from Simulink models, in which computations with data parallelism are expressed in the form of S-Function Builder blocks and are executed in a heterogeneous computing environment
Summary
BLXML, a markup language designed for efficiently representing block-level information in Simulink models, was proposed by Yamaguchi et al [21]. Zhong et al [22][23] proposed a hierarchical clustering method that facilitates task-parallel code generation It is a set of algorithms for mapping functions to cores on a heterogeneous platform. Reference [18] aims at exploiting both task parallelism and loop-level (i.e., data) parallelism through the application of OSCAR, a multigrain parallelizing compiler, on the serial code generated by Simulink, while targeting homogeneous architectures. Polyhedral parallel-code generation (PPCG) [19] is a source-to-source compiler that converts C code, where computations exhibiting data parallelism are expressed in multi-layered for loops, to CUDA code It is based on the polyhedral model [6][20], a well-known optimization model for parallel programming.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have