Task-based execution of synchronous dataflow graphs for scalable multicore computing
Résumé
Dataflow models of computation have early on been acknowledged as an attractive methodology to describe parallel algorithms, hence they have become highly relevant for programming in the current multicore processor era. While several frameworks provide tools to create dataflow descriptions of algorithms, generating parallel code for programmable processors is still sub-optimal due to the scheduling overheads and the semantics gap when expressing parallelism with conventional programming languages featuring threads. In this paper we propose an optimization of the parallel code generation process by combining dataflow and task programming models. We develop a task-based code generator for PREESM, a dataflow-based prototyping framework, in order to deploy algorithms described as synchronous dataflow graphs on multicore platforms. Experimental performance comparison of our task generated code against typical thread-based code shows that our approach removes significant scheduling and synchronization overheads while maintaining similar (and occasionally improving) application throughput. © 2017 IEEE.
Mots clés
Automatic programming
Codes (symbols)
Data flow analysis
Optimal systems
Optimization
Parallel processing systems
Program compilers
Scheduling
Semantics
Signal processing
Silicon compounds
Code generators
Multi-core computing
Multi-core platforms
Multi-core processor
Performance comparison
Programmable processors
Synchronous dataflow graphs
Task programming
Multicore programming