Advertisement

Modeling Non-deterministic C Code with Active Objects

  • Nathan WasserEmail author
  • Asmae Heydari Tabar
  • Reiner Hähnle
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11761)

Abstract

Cheap and ubiquitous availability of multi-processor hardware provides a strong incentive to parallelize existing software. We aim to annotate existing sequential applications written in C with OpenMP directives that can be processed by compilers on high performance parallel computers. We adopt a model-based approach, where from sequential C-code a software model is extracted in a largely automatic fashion. The target is the modeling language ABS (Abstract Behavioral Specification), an active objects-language with formal semantics. ABS has been designed to be statically analyzable. We focus on the first stages of model-based parallelization: model extraction and validation. We define a behavior-preserving, fully automatic translation of a large fragment of sequential C that explicitly renders all possible execution sequences, then use automated test case generation to produce validation test cases.

Keywords

Model extraction Model validation Parallelization 

Notes

Acknowledgments

We would like to thank the SYCO development team for their support, in particular, Samir Genaim and Miky Zamalloa.

References

  1. 1.
    Albert, E., Arenas, P., Gómez-Zamalloa, M.: Actor- and task-selection strategies for pruning redundant state-exploration in testing. In: Ábrahám, E., Palamidessi, C. (eds.) FORTE 2014. LNCS, vol. 8461, pp. 49–65. Springer, Heidelberg (2014).  https://doi.org/10.1007/978-3-662-43613-4_4CrossRefGoogle Scholar
  2. 2.
    Albert, E., et al.: Formal modeling of resource management for cloud architectures: an industrial case study using real-time ABS. J. Serv. Oriented Comput. Appl. 8(4), 323–339 (2014)CrossRefGoogle Scholar
  3. 3.
    Albert, E., Gómez-Zamalloa, M., Isabel, M.: SYCO: a systematic testing tool for concurrent objects. In: Zaks, A., Hermenegildo, M.V. (eds.) Proceedings 25th International Conference on Compiler Construction, CC, Barcelona, Spain, pp. 269–270. ACM (2016)Google Scholar
  4. 4.
    de Boer, F., et al.: A survey of active object languages. ACM Comput. Surv. 50(5), 76:1–76:39 (2017)., article 76CrossRefGoogle Scholar
  5. 5.
    Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. Fourth POPL. Los Angeles, pp. 238–252. ACM Press, New York, January (1977)Google Scholar
  6. 6.
    Cousot, P., et al.: The ASTREÉ analyzer. In: Sagiv, M. (ed.) ESOP 2005. LNCS, vol. 3444, pp. 21–30. Springer, Heidelberg (2005).  https://doi.org/10.1007/978-3-540-31987-0_3CrossRefGoogle Scholar
  7. 7.
    Hähnle, R.: The abstract behavioral specification language: a tutorial introduction. In: Giachino, E., Hähnle, R., de Boer, F.S., Bonsangue, M.M. (eds.) FMCO 2012. LNCS, vol. 7866, pp. 1–37. Springer, Heidelberg (2013).  https://doi.org/10.1007/978-3-642-40615-7_1CrossRefGoogle Scholar
  8. 8.
    Holzmann, G.J., Smith, M.H.: An automated verification method for distributed systems software based on model extraction. IEEE Trans. Software Eng. 28(4), 364–377 (2002)CrossRefGoogle Scholar
  9. 9.
    Johnsen, E.B., Hähnle, R., Schäfer, J., Schlatte, R., Steffen, M.: ABS: a core language for abstract behavioral specification. In: Aichernig, B.K., de Boer, F.S., Bonsangue, M.M. (eds.) FMCO 2010. LNCS, vol. 6957, pp. 142–164. Springer, Heidelberg (2011).  https://doi.org/10.1007/978-3-642-25271-6_8CrossRefGoogle Scholar
  10. 10.
    Kim, W., Agha, G.A., Panwar, R.B.: Efficient compilation of concurrent call/return communication in actor-based programming languages. In: Proceedings 3rd International Conference High Performance Computing (HiPC). pp. 62–67. December 1996. https://doi.org/10.1109/HIPC.1996.565798
  11. 11.
    Memarian, K., et al.: Into the depths of C: elaborating the de facto standards. In: Krintz, C., Berger, E. (eds.) 37th PLDI, pp. 1–15. ACM (2016)Google Scholar
  12. 12.
    MISRA Consortium: MISRA-C: 2004 – Guidelines for the use of the C language in critical systems (2004)Google Scholar
  13. 13.
    Motor Industry Research Association: MISRA C 2012: Guidelines for the Use of the C Language in Critical Systems (2013)Google Scholar
  14. 14.
    OpenMP Architecture Review Board: OpenMP Application Programming Interface, 4.5 edn. (November 2015). https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf
  15. 15.
    Raza, A., Vogel, G., Plödereder, E.: Bauhaus – a tool suite for program analysis and reverse engineering. In: Pinho, L.M., González Harbour, M. (eds.) Ada-Europe 2006. LNCS, vol. 4006, pp. 71–82. Springer, Heidelberg (2006).  https://doi.org/10.1007/11767077_6CrossRefGoogle Scholar
  16. 16.
    Sirjani, M., Movaghar, A., Shali, A., de Boer, F.S.: Modeling and verification of reactive systems using Rebeca. Fundam. Inform. 63(4), 385–410 (2004)MathSciNetzbMATHGoogle Scholar
  17. 17.
    Wong, P.Y.H., Albert, E., Muschevici, R., Proença, J., Schäfer, J., Schlatte, R.: The ABS tool suite: modelling, executing and analysing distributed adaptable object-oriented systems. STTT 14(5), 567–588 (2012)CrossRefGoogle Scholar

Copyright information

© IFIP International Federation for Information Processing 2019

Authors and Affiliations

  1. 1.Department of Computer ScienceTechnische Universität DarmstadtDarmstadtGermany

Personalised recommendations