HIGH-LEVEL TOOLS FOR TRANSLATION OF C-APPLICATIONS INTO APPLICATIONS IN DATAFLOW LANGUAGE COLAMO

  • A.I. Dordopulo
  • A.A. Gulenok
  • A.V. Bovkun
  • I.I. Levin
  • V.A. Gudkov
  • S.A. Dudko
Keywords: Information graph, compiler, translation of programs, C language, performance reduction, reconfigurable computer system, programming of multiprocessor computer systems

Abstract

In the paper we review software tools for translation of sequential C-programs into scalable
parallel-pipeline programs written in the COLAMO language, used for programming of reconfigurable
computer systems. In contrast to existing tools of high-level synthesis, the translation result
is not an IP-core of a task fragment, but a complex task solution for multichip reconfigurable
computer systems with automatic synchronization of data and control signals. We analysed the
main translation steps of a sequential C-program such as transformation into an information
graph, analysis of data dependencies and selection of functional subgraphs, transformation into a
scalable resource-independent parallel-pipeline form, and scaling a COLAMO-program for a
specified multichip reconfigurable computer system. A program is scaled with the help of performance
reduction methods, applied to a completely parallel form of a task (an information graph),
adapted to the architecture of a reconfigurable computer system. We developed several rules,significantly reducing the number of transformation steps of task scaling, and providing a continuous flow of data processing in the functional subgraphs of the task. The developed software tools
for translation of C-programs into FPGA configuration files significantly decrease the synthesis
time of a task computing structure for multichip RCSs and the total task solution time.

References

1. Voevodin V.V., Voevodin Vl.V. Parallel'nye vychisleniya [Parallel computing]. Saint Petersburg:
BKhV-Peterburg, 2002, 608 p. ISBN 5-94157-160-7.
2. Guzik V.F., Kalyaev I.A., Levin I.I. Rekonfiguriruemye vychislitel'nye sistemy [Reconfigurable
computing systems]. Taganrog: Izd-vo YuFU, 2016, 472 p.
3. Trimberger S.M. Three Ages of FPGAs: A Retrospective on the First Thirty Years of FPGA
Technology, in Proceedings of the IEEE, March 2015, Vol. 103, No. 3, pp. 318-331. Doi:
10.1109/JPROC.2015.2392104.
4. Nane R. et al. A Survey and Evaluation of FPGA High-Level Synthesis Tools, in IEEE Transactions
on Computer-Aided Design of Integrated Circuits and Systems, Oct. 2016, Vol. 35,
No. 10, pp. 1591-1604. Doi: 10.1109/TCAD.2015.2513673.
5. Nane R., Sima V.-M., Olivier B., Meeuws R., Yankova Y., Bertels K. DWARV 2.0: A CoSybased
C-to-VHDL Hardware Compiler, In FPL, 2012, pp. 619-622.
6. Pilato C. and Ferrandi F. Bambu: A Modular Framework for the High Level Synthesis of
Memory-intensive Applications, In FPL, 2013, pp. 1-4.
7. Canis A., Choi J., Aldham M., Zhang V., Kammoona A., Anderson J.H., Brown S., Czajkowski
T. LegUp: High-Level Synthesis for FPGA-based Processor/Accelerator Systems, In ACM
FPGA, 2011, pp. 33-36.
8. Make Slow Software Run Fast with Vivado HLS. Available at: https://www.xilinx.com/ publications/
xcellonline/run-fast-with-Vivado-HLS.pdf.
9. Vitis Unified Software Platform Documentation. Application Acceleration Development.
Available at: https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/
ug1393 -vitis-application-acceleration.pdf (accessed 10 November 2020).
10. Levin Ilya, Dordopulo Alexey, Gudkov Vyacheslav, Gulenok Andrey, Bovkun Alexander,
Yevstafiyev Georgyi, Alekseev Kirill. Software Development Tools for FPGA-Based Reconfigurable
Systems Programming, In: Communications in Computer and Information Science,
Vol. 1129, Chapter Parallel Computing Technologies, 2019, pp. 1-16.
11. Levin I.I., Dordopulo A.I. K voprosu ob avtomaticheskom sozdanii parallel'nykh prikladnykh
programm dlya rekonfiguriruemykh vychislitel'nykh sistem [On the issue of automatic creation
of parallel application programs for reconfigurable computing systems], Vychislitel'nye
tekhnologii [Computing technologies], 2020, Vol. 25, No. 1, pp. 66-81.
12. Morvan A., Derrien S. and Quinton P. Efficient nested loop pipelining in high level synthesis
using polyhedral bubble insertion, 2011 International Conference on Field-Programmable
Technology, New Delhi, 2011, pp. 1-10. Doi: 10.1109/FPT.2011.6132715.
13. Jensen, Nicklas, Karlsson, Sven. Improving Loop Dependence Analysis, ACM Transactions on
Architecture and Code Optimization, 2017, Vol. 14 (3), pp. 1-24. Doi: 10.1145/3095754.
14. Solihin Yan. Fundamentals of parallel computer architecture: multichip and multicore systems.
Chapman and Hall/CRC, 2016. ISBN 978-1-4822-1118-4.
15. Cooper, Keith D., Torczon, Linda. Engineering a Compiler. Morgan Kaufmann, 2005. ISBN 1-
55860-698-X.
16. Kennedy Ken, Allen Randy. Optimizing Compilers for Modern Architectures. A Dependencebased
Approach. Morgan Kaufmann, 2001. ISBN 1-55860-286-0.
17. Muchnick Steven S. Advanced Compiler Design and Implementation. Morgan Kaufmann,
1997. ISBN 1-55860-320-4.
18. Vektorizatsiya programm [Vectorization of programs], Vektorizatsiya programm: teoriya,
metody, realizatsiya: Sb. perevodov statey [Vectorization of programs: theory, methods, implementation:
Collection of translations of articles]. Moscow: Mir, 1991, pp. 246-267.
19. Sistemy parallel'noy obrabotki [Parallel processing systems]: trans. from engl, ed. by
D. Ivensa. Moscow: Mir, 1985, 416 p.
20. Levin Ilya I. et al. Reconfigurable computer systems: from the first FPGAs towards liquid
cooling systems, Supercomputing Frontiers and Innovations, 2016, Vol. 3 (1), pp. 22-40. Doi:
10.14529/jsfi160102.
Published
2021-02-25
Section
SECTION III. RECONFIGURABLE COMPUTING SYSTEMS