Formal and adaptive methods of constructing high-performance parallel programs

Authors:

Andon Pylyp Ilarionovych, Academician, Professor, Head of Department, Dr. Sc. in Physics and Mathematics;

Institute of Software Systems of National Academy of Sciences of Ukraine, Kyiv, Ukraine;

https://orcid.org/0000-0002-2204-1554

 

Doroshenko Anatoliy Yuchymovych, Head of Department, Professor, Dr. Sc. in Physics and Mathematics; Institute of Software Systems of National Academy of Sciences of Ukraine; National Technical University of Ukraine “Igor Sikorsky Kyiv Polytechnic Institute”, Kyiv, Ukraine;

http://orcid.org/0000-0002-8435-1451

 

Akulovskiy Valeriy Grygorovych, Associate Professor, Ph. D. in Technical Sciences; University of Customs and Finance, Dnipro, Ukraine;

https://orcid.org/0000-0001-6180-0763

 

Ivanenko Pavlo Andriyovych, Scientific Worker, Ph. D. in Physics and Mathematics; Institute of Software Systems of National Academy of Sciences of Ukraine, Kyiv, Ukraine;

https://orcid.org/0000-0001-5437-9763

 

Yatsenko  Olena Anatoliyivna, Senior Scientific Worker, Ph. D. in Physics and Mathematics; Institute of Software Systems of National Academy of Sciences of Ukraine, Kyiv, Ukraine;

http://orcid.org/0000-0002-4700-6704

 

Reviewers:

Sergienko Ivan Vasyliovych, Academician, Director, Professor, Dr. Sc. in Physics and Mathematics; V. M. Glushkov Institute of Cybernetics of National Academy of Sciences of Ukraine, Kyiv, Ukraine;

https://orcid.org/0000-0002-1118-7451

 

Yalovets Andriy Leonidovych, Professor, Dr. Sc. in Technical Sciences; Kyiv National University of Trade and Economics, Kyiv, Ukraine.

https://orcid.org/0000-0001-6542-3483

 

Affiliation:

Project: Scientific book

Year: 2023

Publisher: PH "Naukova Dumka"

Pages: 312

DOI:

https://doi.org/10.15407/978-966-00-1809-9

ISBN: 978-966-00-1809-9

Language: Ukrainian

How to Cite:

Andon, P., Doroshenko, A., Akylovsky, V., Ivanenko, P., Yatsenko, O.(2023) Formal and adaptive methods of constructing high-performance parallel programs. Kyiv, Naukova Dumka. 312 p. [in Ukrainian].

Abstract:

In the monograph, the authors summarize their and foreign recent experience in the application of formal and adaptive methods for automating the construction of high-performance parallel programs. The basics of algebraic programming, the algebra of algorithms, and other formal models of parallel programs, important for the automated development of software for multiprocessor computing systems, are outlined. Algebras of algorithms intended for the formalized description of structural and non-structural schemes presented in analytical, linguistic, and graphical forms are considered. Algebra of algorithms with data is designed, focused on a consistent description of control flows and processed data in designed algorithms and programs. Algebra-dynamic models of parallel computing, models of distributed asynchronous memory, and methods of efficient organization of mixed multi-level memory for parallel processing are considered. An overview of software tools for rewriting rules is given and the main directions of application of instrumental tools for rewriting terms are characterized. An important place in the monograph is the use of coordination tools and models to achieve high-performance indicators of parallel programs, in particular, the facilities for adaptation and auto-tuning of programs to a target parallel computing platform. Software tools to support the developed models and methods in the development of high-performance parallel programs are considered, and the results of using these tools both in solving fundamental problems of computer science and in the technology of programming applied problems are demonstrated. In particular, examples of the use of the auto-tuning system for sorting problems, Brownian motion modeling, and meteorological forecasting are provided. The methods and tools for the optimization of block-recursive algorithms using the actor model are proposed. The analysis of the scaling of the legacy code for cloud platforms using the rewriting rules technique was performed. A system architecture using Web services choreography is developed, which allows unlimited system scaling and reduces messaging overhead. As an experiment, an application program on quantum chemistry, designed for calculating the orbitals of atoms, was used.

The book is intended for scientists and specialists engaged in the development of high-performance parallel software in various subject areas, as well as for teachers, graduate students, and students of relevant specialties.

Keywords:

algebra of algorithms, automated software design, coordination models, formal methods, high-performance computing, software auto-tuning, parallel computing, term rewriting

References:

  1. Doroshenko, А. Yu., Ivanenko, P. A., Novak, O. S., & Yatsenko, O. A. (2018). Parallel software auto-tuning using statistical modeling and machine learning [in Ukrainian]. Problems in Programming, (2-3), 46-
  2. Akulovskiy, V. G. (2012). Data based algorithmic algebra. Cybernetics and Systems Analysis, 48(2), 291-303.
  3. Akulovskiy, V. G. (2012). Algebra for the description of data in the composite schemes of algorithms [in Russian]. Problems in Programming, (2-3), 234-
  4. Akulovskiy, V. G. (2011). Fundamentals of the algebraic apparatus for describing algorithms with data [in Russian]. In Mathematical and software support of systems in industrial and social spheres: an international collection of scientific papers (Vol. 1, 9‑14). Publishing House of the Nosov Magnitogorsk State Technical University.
  5. Akulovskiy, V. G. (2010). Bases of algebra of algorithms basing the data [in Russian]. Problems in Programming, (2-3), 89-
  6. Akulovskiy, V. G., & Doroshenko, А. Yu. (2013). Description of parallelism in algorithms of information and control systems by means of algebraic apparatus [in Russian]. Problems in Programming, (3), 13-21.
  7. Akulovskiy, V. G., & Doroshenko, А. Yu. (2013). Realization of complex approach to describing algorithms of the information/control systems within the framework of algebraic facilities [in Russian]. Control Systems and Computers, (5), 46-52.
  8. Akulovskiy, V. G., & Kostenko, V. V. (2006). Development of algorithms based on the production model [in Ukrainian]. Bulletin of the Academy of Customs Service of Ukraine, (2), 41-
  9. Andon, P. I., Doroshenko, A. Yu., Zhereb, K. A., & Yatsenko, O. A. (2018). Algebra-algorithmic models and methods of parallel programming.
  10. Gorohovsky, S. S., Kapitonova, Yu. V., Letichevsky, A. A., Molchanov, I. N., & Pogrebinsky, S. B. (1984). Algorithmic language MAYAK [in Russian]. Cybernetics, (3), 54-74.
  11. Yushchenko, K. L., Surzhko, S. V., Tseytlin, G. O., & Shevchenko, A. I. (1997). Algorithmic algebras: a textbook [in Ukrainian]. Instytut Zmistu i Metodiv Navchannia.
  12. Andon, P. I., Doroshenko, A. Yu., & Zhereb, K. A. (2011). Programming high-performance parallel computations: formal models and graphics processing units. Cybernetics and Systems Analysis, 47(4), 659-668.
  13. Beck, K. (2004). Extreme programming explained: Embrace change. Addison-Wesley Professional.
  14. Boggs, W., & Boggs, M. (1999). Mastering UML with Rational Ro Sybex.
  15. Brusnetsov, N. P., Zhogolev, Ye. A., Maslov, S. P., & Ramil Alvares, Kh. (1998). Experience in creating ternary digital machines [in Russian]. Computers in Europe. Past, present and future. Feniks.
  16. Booch, G. (1993). Object-oriented analysis and design with applications (2nd ed.). Benjamin-Cummings Publishing Co.
  17. Wirth, N. (1985). Algorithms and data structures. Upper Saddle River.
  18. Voyevodin, V. (1986). Mathematic models and methods in parallel processes [in Russian]. Nauka.
  19. Voyevodin, V. V., & Voyevodin, Vl. V. (2002). Parallel computations [in Russian]. BHV-Peterburg.
  20. Gavrilova, T. A., & Khoroshevsky, V. F. (2000). Knowledge bases of intelligent systems [in Russian].
  21. Glushkov, V. M. (1965). Automata theory and structural design problems of digital machines. Cybernetics, 1(1), 3-9.
  22. Glushkov, V. M., Kapitonova, Yu. V., & Letichevsky, A. A. (1982). Algebra of algorithms and dynamic parallel execution of sequential programs. Cybernetics, 18(5), 533-542.
  23. Glushkov, V. M., Tseytlin, G. O., & Yushchenko K. L. (1989). Languages. Programming [in Russian] (3rd ed.). Naukova dumka.
  24. Glushkov, V. M., Tseytlin, G. O., & Yushchenko K. L. (1980). Methods of symbolic multiprocessing [in Russian]. Naukova dumka.
  25. Decision Trees – General Principles of Operation [in Russian] (n.d.). http://www.basegroup.ru/library/analy­sis/tree/description
  26. Doroshenko, A. Yu. (1995). Dynamic models of parallel computations for macropipelined programs. Cybernetics and Systems Analysis, 31(6), 818-834.
  27. Doroshenko, A. Yu. (2000). Mathematical models and methods for organizing high-performance parallel computing. Algebra-dynamic approach [in Russian]. Naukova dumka.
  28. Doroshenko, A. Yu. (1994). Performance enhancement methods for parallel programs with multilevel memory. Cybernetics and Systems Analysis, 30(4), 573-581.
  29. Doroshenko, A. Yu., & Zhereb, K. A. (2010). Algebra-dynamic models for program parallelization [in Russian]. Problems in Programming, (1), 39-
  30. Doroshenko, A. Yu., Zhereb, K. A., & Yatsenko, O. A. (2007). On complexity and coordination of computation in multithreaded programs [in Russian]. Problems in Programming, (2), 41-
  31. Doroshenko, A. Yu., Khavryuchenko, V. D., & Suslova, L. N. (2012). Modeling the results of quantum chemical calculations [in Russian]. Control Systems and Computers, (5), 83-87.
  32. Doroshenko, A. Yu., & Shevchenko, R. S. (2008). Application of rewriting term system for source code analysis [in Russian]. Problems in Programming, (2-3), 305-
  33. Doroshenko, A. Yu., Ovdii, O. M., & Yatsenko, O. A. (2017). Ontological and algebra-algorithmic tools for automated design of parallel programs for cloud platforms. Cybernetics and Systems Analysis, 53(2), 323-332.
  34. Doroshenko, A. Yu. (2003). Lectures on parallel computing systems: Methodical guide [in Ukrainian]. KM Akademiya.
  35. Doroshenko, A. Yu., Zhereb, K. A., & Tulika, E. M. (2012). Parallelization of Fortran programs using the rewriting rules technique [in Ukrainian]. Problems in Programming, (2–3), 388-
  36. Doroshenko, A. Yu., Finin, G. S., & Tseytlin, G. O. (2004). Algebra-algorithmic basics of programming [in Ukrainian]. Naukova dumka.
  37. Doroshenko, A. Yu., Khavryuchenko, V. D., Tulika, E. M., & Zhereb, K. A. (2016). Transformation of the legacy code on Fortran for scalability and cloud computing [in Ukrainian]. Problems in Programming,(2-3), 133-
  38. Doroshenko, A. Yu., & Shevchenko, R. S. (2005). Symbolic computation system for dynamical application programming [in Russian]. Problems in Programming, (4), 718‑
  39. Zhereb, K. A. (2009). Rule-based software toolkit for automating application development on Microsoft .NET platform [in Russian]. Control Systems and Computers, (4), 51-
  40. Zakrevsky, A. D. (2012). Parallel logic control algorithms [in Russian]. Editorial URSSМ.
  41. Ivanenko, P. A., & Doroshenko, A. Yu. (2014). Method of automated generation of autotuners for parallel programs. Cybernetics and Systems Analysis, 50(3), 465‑475.
  42. Ivanenko, P. A., Doroshenko, A. Yu., & Novak, O. S. (2017). Optimization of auto-tuning of programs using neural networks [in Ukrainian]. Problems in Programming, (2), 40-
  43. Ivanenko, P. A. (2018). Methods of automating the creation of autotuners for parallel programs [in Ukrainian]. (Ph. D. thesis). Institute of Software Systems.
  44. Ivanenko, P. A., Doroshenko, A. Yu., Ovdii, O. M., & Suslova, L. M. (2013). Autotuner and visualization for meteorological forecasting model [in Ukrainian]. Problems in Programming, (4), 64‑73.
  45. Ivanenko, P. A., & Doroshenko, A. Yu. (2012). Automatic optimization of execution for the problem of meteorological forecasting [in Ukrainian]. Problems in Programming, (2‑3), 426-
  46. Kapitonova, Yu. V., & Letichevsky, A. A. (1988). Mathematical theory of computer systems design [in Russian]. Nauka.
  47. Kapitonova, Yu. V., & Letichevsky, A. A. (1993). Algebraic programming: methods and tools. Cybernetics and Systems Analysis, 29(3), 307-312.
  48. Kimmel, P. (2005). UML demystified (1st ed.). McGraw-Hill.
  49. Knuth, D. (1998). The art of computer programming: Volume 3: Sorting and searching (2nd ed.). Addison-Wesley Professional.
  50. Kolmogorov, A. N., & Fomin, S. I. (1976). Elements of the theory of functions and functional analysis [in Russian]. Nauka.
  51. Stakhno, V. I., Yegorov, A. P., & Akulovsky, V. G. (1988). Integrated automation of processes for the production of heat-strengthened small sections on continuous mills [in Russian]. In 8th International Conference of the CMEA and SFRY member countries on the automation of production processes and management in the ferrous metallurgy (13 p.).
  52. Coplien, J. O. (1998). Multi-paradigm design for C++ (1st ed.). Addison-Wesley Professional.
  53. Kotov, V. Ye. (1984). Petri nets [in Russian].
  54. Legalov, A. I. (2001). Features of the procedural-parametric programming paradigm [in Russian]. Informatics. Control, 1(5), 102-106.
  55. Letichevsky, A. A., & Khomenko, V. V. (2002). A rewriting machine and optimization of strategies of term rewriting. Cybernetics and Systems Analysis, 38(5), 637-649.
  56. Glushkov, V. M., Kapitonova, Yu. V., Letichevsky, A. A., & Gorlach, S. P. (1981). Macroconveyor computations of functions on data structures. Cybernetics, 17(4), 439‑449.
  57. Maltsev, A. I. (1970). Algebraic systems [in Russian].
  58. Andon, P. I., Doroshenko, A. Yu., Zhereb, K. A., Shevchenko, R. S., & Yatsenko, O. A. (2017). Methods of algebraic programming. Formal methods for parallel programs development [in Russian]. Naukova dumka.
  59. Yushchenko, K. L., Tseytlin G. O., Hrytsay V. P., & Terzyan T. K. (1989). Multilevel structured design of programs: Theoretical bases, tools [in Russian]. Finansy i statistika.
  60. Naudin, P., & Quitté, C. (1992). Algorithmique algébrique avec exercices corrigés [in French]. Masson.
  61. Kapitonova, Yu. V., Kryvyi, S. L., Letichevsky, O. A., Lutsky, G. M., & Pechurin, M. K. (2002). Fundamentals of discrete mathematics [in Ukrainian]. Naukova dumka.
  62. Pratt, T. W. (1985). Programming languages: Design and implementation. Prentice Hall.
  63. Prusov, V. A., Doroshenko, A. Yu., & Chernysh, R. I. (2009). A method for numerical solution of a multidimensional convection-diffusion problem. Cybernetics and Systems Analysis, 45(1), 89-95.
  64. Samarsky, A., & Vabishchevich, P. (2001). Additive schemes for problems of mathematical physics [in Russian]. Nauka.
  65. Sedunov, Yu. S. (1991). Atmosphere: a reference book [in Russian]. Hidrometeoizdat.
  66. Kapitonova, Yu. V. (1986). System and mathematical support of the multiprocessor computing complex ES [in Russian]. Zhukovsky Air Force Engineering Academy.
  67. Stakhno, V. I., & Soloviyov, V. I. Experience in the creation, implementation and operation of automated process control systems in the ferrous metallurgy [in Russian]. In 8th International Conference of the CMEA and SFRY member countries on the automation of production processes and management in the ferrous metallurgy (11 p.).
  68. Stepanov, R. G. (2008). Data mining technology: intelligent data analysis [in Russian]. http://m8.ksu.ru/EOS/dm.pdf
  69. Supercomputer of IC (n.d.). http://icybcluster.org.ua
  70. Tremblay J.-P., & Sorenson, P. (1976). An introduction to data structures with applications. McGraw-Hill.
  71. Tulika, E. M. (2010). Approach to improve efficiency of service-oriented systems using estimation and distribution of load [in Ukrainian]. Problems in Programming, (2-3), 193‑
  72. Doroshenko, A. Yu., Zhereb, K. A., Ivanov, Ye. V., Nikitchenko, M. S., & Yatsenko, O. A. (2018). Formal methods of program specification: a textbook [in Ukrainian]. Kyiv University Publishing and Printing Center.
  73. Fuksman, A. L. (1979). Technological aspects of software systems development [in Russian].
  74. Tseytlin, O. (1998). Introduction to algorithmics [in Russian]. Sfera.
  75. Tseytlin, G. O., Telenik, S. F., & Amons, A. A. (2002). Algebra-logical formalization in object-oriented technologies [in Russian]. Problems in Programming, (1-2), 136-
  76. Czarnecki, K., & Eisenecker, U. (2000). Generative programming: Methods, tools, and applications. Addison-Wesley.
  77. Chernysh, R. I. (2010). Modified additive-averaged splitting, its parallel implementation and application to problems of meteorology (Ph. D. thesis abstract). Taras Shevchenko National University of Kyiv.
  78. Shevchenko, R. S. (2004). Javachecker: static analysis of software systems using rewriting rules [in Russian]. Problems in Programming, (2-3), 223-
  79. Yushchenko, K. L. (1963). Address programming [in Russian]. Gostekhizdat USSR.
  80. Yatsenko, O. A. (2011). On the application of machine learning to design adaptive sorting programs in the algebra of algorithms [in Russian]. Problems in Programming, (2), 23‑
  81. Doroshenko, A., Ivanenko, P., Novak, O., & Yatsenko, O. (2019). A mixed method of parallel software auto-tuning using statistical modeling and machine learning. In Ermolayev, M. Suárez-Figueroa, V. Yakovyna, H. Mayr, M. Nikitchenko & A. Spivakovsky (Eds.), ICTERI 2018. Communications in Computer and Information Science (Vol. 1007, pp. 102-123). Springer.
  82. Akhter, S., & Roberts, (2006). Multi-core programming. Increasing performance through software multi-threading. Intel Press.
  83. Akl, S. G. (2008). Evolving computational systems. In Rajasekaran & J. Reif (Eds.), Handbook of parallel computing models algorithms and applications. Chapman-Hall.
  84. Akl, G. (2004). Superlinear performance in real-time parallel computation. The Journal of Supercomputing, 29(1), 89-111.
  85. Akulovsky, V. G. (2012). Data based algorithmic algebra. Cybernetics and systems analysis, 48(2), 291-303.
  86. Akulovsky, V. G. (2008). Formalization of interrelations between operators and data within the framework of an extended algebra of algorithms. Cybernetics and systems analysis, 44(6), 941-950.
  87. Alalfi,, Cordy, J. R., & Dean, T. R. SQL2XMI: reverse engineering of UML-ER diagrams from relational database schemas. In Proc. 15th Working Conference on Reverse Engineering (WCRE 2008) (pp. 187-191). IEEE.
  88. Andon, P. I., Doroshenko, A. Yu., Zhereb, K.A., & Yatsenko O. A. (2018). Algebraalgorithmic models and methods of parallel programming. Akademperiodyka.
  89. Aman, B., & Ciobanu G. (2012). Coordinating parallel mobile ambients to solve SAT problem in polynomial number of steps. In  14th International Conference on Coordination Models and Languages (COORDINATION) (pp. 122-136). Springer.
  90. Kofler, K., Grasso, I., Cosenza, B., & Fahringer, T. (2013). An automatic input-sensitive approach for heterogeneous task partitioning. In 27th ACM International Conference on Supercomputing (ASC’13) (pp. 149-160). ACM.
  91. Andova, S., Groenewegen, L. P. J., & de Vink, E. P. (2012). Distributed adaptation of dining philosophers. In S. Barbosa & M. Lumpe (Eds.), Formal Aspects of Component Software 2010, LNCS (Vol. 6921, pp. 125-144). Springer.
  92. Andova, S., Groenewegen, L. P. J., & de Vink E. P. (2011). Dynamic consistency in process algebra: from Paradigm to ACP. Science of Computer Programming, 76(8), 711‑735.
  93. Andrews, G. R., & Schneider, F. B. (1983). Concepts and notations for concurrent programming. ACM Computing Surveys, 15(1), 3‑43.
  94. Apache Tomcat (n.d.) https://tomcat.apache.org
  95. APS and IMS system (n.d.) http://apsystem.org.ua
  96. Arbab, F. (2004). Reo: a channel-based coordination model for component composition. Mathematical Structures in Computer Science, 14(3), 329‑366.
  97. Arnoldus,, Bijpost, J., & van den Brand, M. (2007). Repleo: a syntax-safe template engine. In Proc. 6th international Conference on Generative Programming and Component Engineering (pp. 25‑32). ACM.
  98. Binkley, D., Ceccato, M., Harman, M., Ricca, F., & Tonella P. (2005). Automated refactoring of object oriented code into aspects. In ICSM 2005, IEEE 21st International Conference on Software Maintenance (pp. 27‑36). IEEE.
  99. Baader, F., & Nipkow, T. (1999). Term rewriting and all that. Cambridge University.
  100. Bagge, S., Kalleberg, K. T., Haveraaen, M., & Visser, E. (2003). Design of the CodeBoost transformation system for domain-specific optimisation of C++ programs. In Proc. 3rd IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003) (pp. 65‑74). IEEE.
  101. Bal, H., Stenier, J., & Tannenbaum, A. (1989). Programming languages for distributed computing systems. ACM Computing Surveys, 21(3), 261‑322.
  102. Barker, A., Weissman, J. B., & van Hemert, J. I. (2012). Reducing data transfer in service-oriented architectures: the circulate approach. IEEE Transactions on Services Computing, 5(3), 437‑449.
  103. Bohm, C., & Jacopini, G. (1966). Flow diagrams, Turing machines and languages with only two formation rules. Communications of the ACM, 9(5), 366‑371.
  104. Boolean satisfiability problem (n.d.) https://en.wikipedia.org/wiki/ Boolean_satisfiability_problem
  105. Bouwers,, Bravenboer, M., & Visser, E. (2008). Grammar engineering support for precedence rule recovery and compatibility checking. Electronic Notes in Theoretical Computer Science, 203(2), 85-101.
  106. Bravenboer,, Dolstra, E., & Visser, E. (2007). Preventing injection attacks with syntax embeddings. A host and guest language independent approach. In J. Lawall (Ed.) Proc. International Conference on Generative Programming and Component Engineering (GPCE 2007) (pp. 3‑12). ACM.
  107. Brown, E. J. (1983). On the application of Rotnon diagrams to data abstraction. SIGPLAN Notices, 18(12), 43‑52.
  108. Frigo, M., Leiserson, C. E., Prokop, H., & Ramachandran, S. (1999). Cache-oblivious algorithms. In 40th Annual Symposium on Foundations of Computer Science. (pp. 285–297). IEEE.
  109. Cardelli, L., & Gordon, A. (2000). Mobile ambients. Theoretical Computer Science, 240, 177‑213.
  110. Carriero, N., & Gelernter, D. (1992). Coordination languages and their significance. Commun. ACM, 35(4), 96‑107.
  111. Class ForkJoinPool (n.d.). https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ForkJoinPool.html
  112. Class RecursiveAction (n.d.). https://docs.oracle.com/javase/9/docs/api/java/util/concurrent/html
  113. van den Brand, M., Heering, J., Klint, P., & Olivier P. (2000). Compiling language definitions: the ASF+SDF compiler. ACM Transactions on Programming Languages and Systems, 24, 334‑368.
  114. Cordy, R. (2006). The TXL source transformation language. Science of Computer Programming, 61(3), 190‑210.
  115. Crawley, M. J. (2012). The R book (2nd ed.). Wiley.
  116. D’Azevedo, E., & Dongarra, J. (2000). The design and implementation of the parallel out-of-core ScaLAPACK LU, QR, and Cholesky factorization routines. Concurrency: Practice and Experience, 12, 1481‑1493.
  117. Ceccato,, Dean, T. R., Tonella, P., & Marchignoli, D. (2008). Data model reverse engineering in migrating a legacy system to Java. In Proc. 15th Working Conference on Reverse Engineering (WCRE 2008) (pp. 177‑186). IEEE.
  118. Dijkstra, E. W. (1971). Hierarchical ordering of sequential processes. Acta Informatica, 1(2), 115‑138.
  119. Dining philosophers problem (n.d.).https://en.wikipedia.org/wiki/Dining_philosophers_problem
  120. Dolstra,, & Visser, E. (2002). Building interpreters with rewriting strategies. In Proc. Workshop on Language Descriptions, Tools and Applications (LDTA 2002) (pp. 57‑76). Elsevier Science.
  121. Dongarra, J., Van De Geijn, R., & Walker, D. (1992). LAPACK working note 43: A look at scalable dense linear algebra libraries. University of Tennessee.
  122. Doroshenko, A. (1997). Modeling synchronization and communi­cation abstractions for dynamical parallelization. In: Hertzberger & P. Sloot (Eds.) Proc. High-Performance Computing and Networking. LNCS (Vol. 1225, pp. 752‑761). Springer.
  123. Doroshenko, A., & Shevchenko (2006). A rewriting framework for rule-based programming dynamic applications. Fundamenta Informaticae, 72(1‑3), 95‑108.
  124. Doroshenko, A., & Godlevsky, A. (1995). Constructing parallel implementation with algebraic programming tools. In PAS’95: Aizu International Symposium on Parallel Algorithms. Architecture Synthesis (pp. 291‑297). IEEE Comp. Sci. Press.
  125. Doroshenko, A., & Tseytlin, G. (2004). Models and parallel programming abstractions to enhance concurrency of parallel programs. Fundamenta Informaticae, 60(1‑4), 99‑111.
  126. Durillo, J., & Fahringer, T. (2014). From single- to multi-objective auto-tuning of programs: Advantages and implications. Scientific Programming — Automatic Application Tuning for HPC Architectures, 22(4), 285‑297.
  127. Durstenfeld, R. (1964). Algorithm 235: random permutation. Communications of the Association for Computing Machinery, 7(7), 420‑421.
  128. Hoque, R., Herault, T., Bosilca, G., & Dongarra, J. (2017). Dynamic task discovery in parsec: a data-flow task-based runtime. In 8th Workshop on Latest Advances in Scalable Algorithms for Large-Scale Systems (pp. 1‑8). ACM.
  129. El-Ramly,, Eltayeb, R., & Alla, H. A. (2006). An experiment in automatic conversion of legacy Java programs to C#. In Proc. IEEE 2006 International Conference on Computer Systems and Applications (COMPSAC’06) (pp. 1037‑1045). IEEE.
  130. Eppstein, D., & Galil, Z. (1989). Parallel algorithmic techniques for combinatorial computation. In Ausiello, M. Dezani-Ciancaglini & S. R. Della Rocca (Eds.) Automata, Languages and Programming. ICALP 1989. LNCS (Vol. 372, pp. 304‑318). Springer.
  131. Fabry, J., Tanter, E., & D’Hondt, T. (2007). ReLAx: implementing KALA over the Reflex AOP kernel. In 2nd Workshop on Domain-Specific Aspect Languages (DSAL 2007) (pp. 3‑12). ACM.
  132. Fawcett, T. (2006). An introduction to ROC analysis. Pattern recognition letters, 27(8), 861‑874.
  133. Katagiri, T., Kise, K., Honda, H., & Yuba, T. (2003). FIBER: a generalized framework for auto-tuning software. High Performance Computing. LNCS, 2858, 146‑159.
  134. Fletcher, R. (2000). Practical methods of optimization (2nd ed.). Wiley.
  135. Farzan, A., Chen, F., Meseguer, J., & Rosu, G. (2004). Formal analysis of Java programs in In R. Alur & D.A. Peled (Eds.), Proc. International Conference on Computer Aided Verification (CAV 2004). LNCS (Vol. 3114, pp. 501–505). Springer.
  136. Andova, S., Groenewegen, L. P. J., Stafleu, J., & de Vink, E. P. (2009). Formalizing adaptation on-the-fly. In Salaün & M. Sirjani (Eds.), Proc. FOCLASA 2009. Electron. Notes Theor. Comput. Sci. (Vol. 255, pp. 23‑44). Elsevier Science Publishers B. V.
  137. Fortran is more popular than ever; Intel makes it fast (n.d.). https://software.intel.com/en-us/blogs/2011/09/24/fortran-is-more-popular-than-ever-intel-makes-it-fast
  138. Friedman-Hill, E. (2003). Jess in action. Manning Publications Co.
  139. Frigo, M., & Johnson, S. (1998). FFTW: an adaptive software architecture for the FF. Acoustics, speech and signal processing, 3, 1381‑1384.
  140. Garey, M., & Johnson, D. (1979). Computers and intractability. A guide to the theory of NP-completeness.
  141. Garrido,, & Meseguer, J. (2006). Formal specification and verification of Java refactorings. In Proc. 6th IEEE International Workshop on Source Code Analysis and Manipulation (SCAM’06) (pp. 165‑174). IEEE.
  142. Garrido,, Meseguer, J., & Johnson, R. (2006). Algebraic semantics of the C preprocessor and correctness of its refactorings. Technical report UIUCDCS-R-2006-2688. Univ. of Illinois at Urbana-Champaign. http://www.ideals.illinois.edu/handle/2142/11162
  143. Givens, G. H., &‎ Hoeting, J. A. (2012). Computational statistics (2nd ed.). Wiley.
  144. Google Maps (n.d.). http://maps.google.com
  145. Grant, S., & Cordy, R. (2003). An interactive interface for refactoring using source transformation. In Proc. REFACE’03, 1st International Workshop on Refactoring: Achievements, Challenges, Effects (pp. 30‑33).
  146. Groenewegen,, & Visser, E. (2008). Declarative access control for WebDSL: combining language integration and separation of concerns. In Proc. 8th International Conference on Web Engineering (ICWE 2008) (pp. 175‑188). IEEE.
  147. Guo, H. (2003). Algorithm selection for sorting and probabilistic inference: a machine learning-based approach (Ph.D. thesis). Kansas State University.
  148. Hamey, , & Goldrei, S. (2008). Implementing a domain-specific language using Stratego/XT. In Seventh Workshop on Language Descriptions, Tools, and Applications (LDTA’07). Electronic Notes in Theoretical Computer Science (Vol. 203, pp. 37-51). Elsevier B. V.
  149. Hemel, , Kats, L. C. L., & Visser, E. (2008). Code generation by model transformation: a case study in transformation modularity. In Theory and Practice of Model Transformations. First International Conference on Model Transformation (ICMT 2008) (pp. 183‑198). Springer.
  150. High Performance Fortran (n.d.). http://hpff.rice.edu
  151. Hoare, C. A. R. (1961). Algorithm 64: Quicksort. Communications of the ACM, 4(7), 321.
  152. Hoare, C. A. R. (1978). Communicating sequential processes. Communications of the ACM, 21(8), 666‑677.
  153. IBM Rational Rose enterprise (n.d.). http://www-03.ibm.com/software/products/en/enterprise
  154. Immerman, N. (1989). Expressibility and parallel complexity. Siam Journal on Computing, 18, 625‑638.
  155. Letichevsky, A. A., Kapitonova, Yu. V., Letichevsky Jr, A. A., Kotlyarov, V. P., Nikitchenko, N. S., Volkov, V. A., & Weigert, T. (2008). Insertion modeling in distributed system design. Problems in programming, (4), 13‑38.
  156. Interface ExecutorService (n.d.). https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html
  157. International Conferences on Coordination Models and Languages, International Federation for information processing (IFIP) (n.d.). https://hal.archives-ouvertes.fr/IFIP-COORDINATION
  158. Ivanenko,, Doroshenko, A., & Zhereb, K. (2014). TuningGenie: auto-tuning framework based on rewriting rules. In V. Ermolayev, H. Mayr, M. Nikitchenko, A. Spivakovsky & G. Zholtkevych (Eds.), Proc. 10th International Conference “ICT in Education, Research, and Industrial Applications” (ICTERI 2014), Revised Selected Papers (Vol. 469, pp. 139‑158.) Springer.
  159. Javachecker (n.d.). http://www.gradsoft.kiev.ua/products/javachecker_eng.html
  160. Jess, the rule engine for the Java platform (n.d.). http://www.jessrules.com
  161. Jing, X. (2008). Rule-based automatic software performance diagnosis and improvement. In 7th international workshop on Software and performance (WOSP’08) (pp. 1‑12). ACM.
  162. Kats, L. C. L., Bravenboer, M., & Visser, E. (2008). Mixing source and bytecode. A case for compilation by normalization. In 23rd ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2008) (pp. 91‑108). ACM.
  163. Keller, R. M. (1975). A fundamental theorem of asynchronous parallel computation. LNCS, 24, 102‑112.
  164. Kosaraju, S. R. (1974). Analysis of structured programs. Computer and System Sci., 9(3), 232‑255. ACM.
  165. Lagoudakis, M., Littman, M., & Parr, R. (2001). Selecting the right algorithm. In AAAI Fall Symposium Series: Using Uncertainty within Computation (pp. 74-75). AAAI.
  166. Lawson, H. W. (1992). Parallel processing in industrial real-time applications. Prentice Hall.
  167. Lea, D. (1997). Concurrent programming in Java. Addison Wesley.
  168. Letichevsky, A. A., & Kapitonova, Yu. V. (1990). Algebraic programming is APS system. In of ISSAC’90 (pp. 68‑75). ACM Press.
  169. Letichevsky, A. A., Kapitonova Yu. V., & Konozenko, S. V. (1991). Optimization of algebraic programs. In of ISSAC’91 (pp. 370-376). ACM Press.
  170. Letichevsky, A., Kapitonova, Yu. V., & Konozenko S., V. (1993). Computations in APS. Theoretical Computer Science, 119, 145‑171.
  171. Libcurl – the multiprotocol file transfer library (n.d.). http://curl.haxx.se/libcurl
  172. Liu, J., Liang, Y., & Ansari, N. (2016). Spark-based large-scale matrix inversion for big data processing. IEEE Access, 4, 2166‑2176.
  173. Culler, D., Karp, R., Patterson, D., Sahay, A., Schauser, K. E., Santos, E., Subramonian, R., & von Eicken, T. (1993). Log P: towards a realistic model of parallel computation. In 4th ACM SIGPLAN Symp. on Principles and Practices of Parallel Programming (PPoPP), SIGPLAN Notices (Vol. 28, pp. 1‑12). ACM.
  174. Luccio, F., Pagli, L., & Pucci, G. (1992). Three non-conventional paradigms of parallel computation. LNCS, 678, 166‑175.
  175. Lynch, N. A. (1996). Distributed algorithms. Morgan Kaufmann.
  176. Ma, W., Krishnamoorthy, S., & Agrawal, G. (2012). Parameterized micro-benchmarking: an auto-tuning approach for complex applications. In 9th conference on Computing Frontiers (pp. 213‑222). IEEE.
  177. Maffeis, S., & Phillips, I. (2005). On the computational strength of pure ambient calculi. Theoretical Computer Science, 330, 501‑551.
  178. Мalone, T. W., & Crowston, K. (1994). The interdisciplinary study of coordination. ACM Computing Surveys, 26(l), 87‑119.
  179. Martin, J. J. (1986). Data types and data structures. Prentice Hall.
  180. Meseguer, J., Olveczky, P. C., Stehr, M.-O., & Talcott, C. (2002). Maude as a wide-spectrum framework for formal modeling and analysis of active networks. In DARPA Active Networks Conference and Exposition (DANCE’02) (pp. 494‑510). IEEE.
  181. Maude System (n.d.). http://maude.cs.uiuc.edu
  182. McIlroy, P. M. (1993). Optimistic sorting and information theoretic complexity. In 4th Annual ACM/SIGACT-SIAM Symposium on Discrete Algorithms (pp.467‑474). Society for Industrial and Applied Mathematics.
  183. Meseguer, J. (1992). Conditional rewriting logic as a unified model of concurrency. Theoretical Computer Science, 96(1), 73‑155.
  184. Meta-Environment (n.d.). http://www.meta-environment.org
  185. Fursin, G., Kashnikov, Y., Memon, A. W., Chamski, Z., Temam, O., Namolaru, M., Yom-Tov, E., Mendelson, B., Zaks, A., Courtois, E., Bodin, F., Barnard, Ph., Ashton, E., Bonilla, E., Thomson, J., Williams, C. K. I., & O’Boyle, M. (2011). Milepost GCC: machine learning enabled self-tuning compiler. International journal of parallel programming, 39(3), 296‑327.
  186. Milner, R. (1999). Communicating and mobile systems: the π-calculus. Cambridge University Press
  187. Mitchell, T. M. (1997). Machine learning. McGraw-Hill Education.
  188. Miller, G., Evans, A., Jacobson, I., Jondell, H., Kennedy, A., Mellor, S., & Thomas, D. (2003). Model driven architecture: how far have we come, how far can we go? In companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA’03) (pp. 273‑274). ACM.
  189. Netlib Repository (n.d.). http://netlib.org
  190. Walenstein, A., Mathur, R., Chouchane, M., & Lakhotia, (2006). Normalizing metamorphic malware using term rewriting. In Proc. IEEE 6th International Workshop on Source Code Analysis and Manipulation (SCAM 2006) (pp. 75‑84). IEEE.
  191. NVidia CUDA technology (n.d.). http://www.nvidia.com/cuda
  192. Odd-even sort (n.d.). http://en.wikipedia.org/wiki/Odd–even_sort
  193. Olmos, K., & Visser, (2002). Strategies for source-to-source constant propagation. In Proc. Workshop on Reduction Strategies (WRS 2002), Electronic Notes in Theoretical Computer Science (Vol. 70, pp. 156-175). Elsevier.
  194. Olson, G. M., Malone, T. W., & Smith, J. B. (Eds.). (2001). Coordination theory and collaboration technology. Lawrence Erlbaum Associates.
  195. OpenMP Application Programming Interface. Version 4.5 (n.d.). http://www.openmp.org/wp-content/uploads/openmp-4.5.pdf
  196. Optimized code for Intel processors (n.d.). https://software.intel.com/en-us/intel-compilers
  197. Pacheco, P. (2011). More about loops in OpenMP: sorting. In An introduction to parallel programming (pp. 232‑236). Morgan Kaufmann.
  198. Paige, R., & Radjenovic, (2003). Towards model transformation with TXL. In Proc. Metamodelling for MDA Workshop 2003 (pp. 162‑177).
  199. Papadimitriou, C. H. (1995). Computational complexity. Addison-Wesley.
  200. Parallel Computing Lecture 15: OpenMP III (n.d.). http://cs.nyu.edu/courses/spring14/CSCI-UA.0480-003/lecture15.pdf
  201. Buttari, A., Langou, J., Kurzak, J., & Dongarra, J.(2008). Parallel tiled QR factorization for multicore architectures. In International Conference on Parallel Processing and Applied Mathematics (PPAM 2007). Parallel Processing and Applied Mathematics. LNCS (Vol. 4967, pp. 639-648). Springer.
  202. Cao, Q., Pei, Y., Herault, T., Akbudak, K., Mikhalev, A., Bosilca, G., Ltaief, H., Keyes, D., & Dongarra, J. (2019). Performance analysis of tile low-rank Cholesky factorization using PaRSEC instrumentation tools. In 2019 IEEE/ACM International Workshop on Programming and Performance Visualization Tools (ProTools) (pp. 25‑32). IEEE.
  203. PGI compilers & tools for high performance computing (n.d.). http://www.pgroup.com/products/pvf.htm
  204. Yi, Q., Seymour, K., You, H., Vuduc, R., & Quinla, D. POET: parameterized optimizations for empirical tuning. In IEEE International Parallel and Distributed Processing Symposium 2007 (pp. 1‑8). IEEE.
  205. Lacey, D., Jones, N. D., van Wyk, E., & Frederiksen,C. (2002). Proving correctness of compiler optimizations by temporal logic. In Proc. 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’02) (pp. 283‑294). ACM.
  206. Rahman, M., Pouchet, L.-N., & Sadayappan, P. (2010). Neural network assisted tile size selection. In 5th International Workshop on Automatic Performance Tuning (IWAPT’2010) (pp. 1‑15). Springer.
  207. Reid, J. (2010). Coarrays in the next Fortran ACM SIGPLAN Fortran Forum, 29(2), 10‑27.
  208. Representational state transfer (n.d.). https://en.wikipedia.org/wiki/Representational_state_transfer
  209. Roy, C. K., & Cordy, R. (2008). NICAD: accurate detection of near-miss intentional clones using flexible pretty-printing and code normalization. In Proc. ICPC 2008, IEEE International Conference on Program Comprehension (pp. 172‑181). IEEE.
  210. Schaefer, C. A., Pankratius, V., & Tichy, W. F. (2009). Atune-IL: an instrumentation language for auto-tuning parallel applications. In 15th International Euro-Par Conference (Euro-Par 2009). LNCS (Vol. 5704, pp. 9‑20). Springer.
  211. Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., Blondel, M., Prettenhofer, P., Weiss, R., Dubourg, V., Vanderplas, J., Passos, A., Cournapeau, D., Brucher, M., Perrot, M., & Duchesnay, É. (2011). Scikit-learn: machine learning in Python. Journal of machine learning research, 12, 2825‑2830.
  212. Sidiroglou,, & Keromytis, A. D. (2005). Countering network worms through automatic patch generation. IEEE Security & Privacy, 3(6), 41‑49.
  213. Skillicorn, D. B. (1991). Models for practical parallel computation. J. of Parallel Programming, 20(2), 133‑158.
  214. Slightly skeptical view on sorting algorithms (n.d.). http://www.softpanorama.org/Algo­rithms/sorting.shtml
  215. Smith-Miles, K. A. (2008) Cross-disciplinary perspectives on meta-learning for algorithm selection. ACM Comput. Surv, 41(1), art. 6, 1‑25.
  216. Naono, K., Teranishi, K., Cavazos, J., & Suda, R. (2010). Software automatic tuning: From concepts to state-of-the-art results.
  217. Allan, V. H., Jones, R. B., Lee, R. M., & Allan, S. J. (1996). Software ACM Computing Surveys, 27(3), 367‑432.
  218. Song, F., YarKhan, A., & Dongarra, J. (2009). Dynamic task scheduling for linear algebra algorithms on distributed-memory multicore systems. In  Conference on High Performance Computing Networking, Storage and Analysis (pp. 1‑11). IEEE.
  219. Cassidy, T., Cordy, R., Dean, T., & Dingel,J. (2005). Source transformation for concurrency analysis. In Proc. LDTA 2005, ACM 5th International Workshop on Language Descriptions, Tools and Applications (pp. 26‑43). ACM.
  220. Chandan, M., Haldar, S., Bhaacharya, S., & Ghosh, S. K. (2018). SPIN: A fast and scalable matrix inversion method in apache spark. In  19th International Conference on Distributed Computing and Networking (pp. 1‑10). ACM.
  221. Puschel, M., Moura, J. M. F., Johnson, J. R., Padua, D., Veloso, M. M., Singer, B. W., Xiong, J., Franchetti, F., Gacic, A., Voronenko, Y., Chen, K., Johnson, R. W., & Rizzolo, N. (2005). SPIRAL: code generation for DSP transforms. Proceedings of the IEEE, 93(2), 232‑275.
  222. Spoon — source code analysis and transformation for Java (n.d.). http://spoon.gforge.inria.fr/html
  223. Stratego Program Transformation Language (n.d.). http://strategoxt.org
  224. Bravenboer, M., Kalleberg, K. T., Vermaas, R., & Visser, E. (2008). Stratego/XT 0.17. A language and toolset for program transformation. Science of Computer Programming. Special issue on experimental software and toolkits, 72(1‑2), 52‑70.
  225. Sudhir, A., Nicholas, C., & David, G. (1986). Linda and friends. IEEE Computer, 19b(8), 26‑34.
  226. Sun Studio 12: Fortran programming guide (n.d.). http://docs.oracle.com/cd/E19205-01/819-5262/book-info/index.html
  227. TermWare system (n.d.). http://www.gradsoft.com.ua/products/termware_rus.html
  228. Heering,, Hendriks,P. R., Klint, P., & Rekers, J. (1989). The syntax definition formalism SDF reference manual. SIGPLAN Notes, 24(11), 43‑75.
  229. Tichy, W. (2014). Auto-tuning parallel software: an interview with Thomas Fahringer: the multicore transformation. Ubiquity, 1‑9.
  230. Tip, F., & Dinesh, (2001). A slicing-based approach for locating type errors. ACM Trans. Softw. Eng. Methodol., 10(1), 5‑55.
  231. Hunold, S., Korch, M., Krellner, B., Rauber, T., Reichel, T., & Rünger, G. (2008). Transformation of legacy software into client/server applications through pattern-based In Proc. 32nd Annual IEEE International Conference on Computer Software and Applications (COMPSAC’08) (pp.303‑310). IEEE.
  232. Tulika, , Doroshenko, A., & Zhereb, K. (2016). Adaptation of legacy Fortran applications to cloud computing. In Proc. 12th International Conference on Information and Communication Technologies in Education, Research, and Industrial Applications (ICTERI 2016) (pp. 119‑126). Springer.
  233. Tulika, E., Doroshenko, A., & Zhereb, K. (2017). Using choreography of actors and rewriting rules to adapt legacy Fortran programs to cloud computing. In A. Ginige, H. C. Mayr, D. Plexousakis, V. Ermolayev, M. Nikitchenko, G. Zholtkevych, & A. Spivakovskiy (Eds.), Information and Communication Technologies in Education, Research, and Industrial Applications. ICTERI 2016. Communications in Computer and Information Science (Vol. 783, pp. 1‑21). Springer.
  234. TXL programming language (n.d.). http://www.txl.ca
  235. Unified Modeling Language specification (n.d.). http://www.uml.org
  236. van den Brand, M., Sellink, , & Verhoef, C. (1998). Control flow normalization for COBOL/CICS legacy system. In Proc. 2nd Euromicro Conference on Software Maintenance and Reengineering (CSMR’98) (pp. 1‑12). IEEE.
  237. Visser, (2008). WebDSL: a case study in domain-specific language engineering. In: R. Lämmel, J. Visser & J. Saraiva (Eds.) Generative and Transformational Techniques in Software Engineering II. GTTSE 2007. LNCS (Vol. 5235, pp. 291‑373). Springer.
  238. Visser,, & Benaissa, Z.-e.-A., & Tolmach, A. (1998). Building program optimizers with rewriting strategies. In Proc. 3rd ACM SIGPLAN International Conference on Functional Programming (ICFP 1998) (pp. 13‑26). ACM.
  239. Waddington, D. G., & Yao, B. (2007). High fidelity C++ code transformation. Science of Computer Programming, 68(2), 64-78.
  240. Wang, L., Cordy, R., & Dean, T. (2005). Enhancing security using legality assertions. In Proc. IEEE 12th International Working Conference on Reverse Engineering (WCRE’05) (pp. 35‑44). IEEE.
  241. Weka Project home page (n.d.). http://www.cs. waikato.ac.nz/ml/weka
  242. Wetter und Klima — Deutscher Wetterdienst (n.d.). http://www.dwd.de
  243. Whaley, R., Petitet, A., & Dongarra, J. J. (2001). Automated empirical optimizations of software and the ATLAS Project. Parallel computing, 27(1‑2), 3‑35.
  244. Winkler, T. (1993). Programming in OBJ and Maude. In P. E. Lauer (Ed.) Functional Programming, Concurrency, Simulation and Automated Reasoning. LNCS (Vol. 693, 229‑277). Springer.

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top