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

Read more

Summary

Previous and related work

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.

Collection of performance profiles
Task-parallel program generation
Construction of Simulink models with data parallelism
C Caller
Generation of SYCL code
Methodology
Environment
Evaluation 1
Results
Discussion
Performance gains in multicore CPU environments
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call