A Functional Safety OpenMP\(^{*}\) for Critical Real-Time Embedded Systems

  • Sara RoyuelaEmail author
  • Alejandro DuranEmail author
  • Maria A. SerranoEmail author
  • Eduardo QuiñonesEmail author
  • Xavier MartorellEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10468)


OpenMP* has recently gained attention in the embedded domain by virtue of the augmentations implemented in the last specification. Yet, the language has a minimal impact in the embedded real-time domain mostly due to the lack of reliability and resiliency mechanisms. As a result, functional safety properties cannot be guaranteed. This paper analyses in detail the latest specification to determine whether and how the compliant OpenMP implementations can guarantee functional safety. Given the conclusions drawn from the analysis, the paper describes a set of modifications to the specification, and a set of requirements for compiler and runtime systems to qualify for safety critical environments. Through the proposed solution, OpenMP can be used in critical real-time embedded systems without compromising functional safety.



This work was funded by the EU project P-SOCRATES (FP7-ICT-2013- 10) and the Spanish Ministry of Science and Innovation under contract TIN2015-65316-P.


Intel is a trademark or registered trademark of Intel Corporation or its subsidiaries in the United States and/or other countries.

*Other brands and names are the property of their respective owners.


  1. 1.
    P-SOCRATES European Project: Parallel Software Framework for Time-Critical Many-core Systems.
  2. 2.
    OpenMP Application Programming Interface (2015).
  3. 3.
    Banerjee, U., Bliss, B., Ma, Z., Petersen, P.: A theory of data race detection. In: Parallel and Distributed Systems: Testing and Debugging (2006)Google Scholar
  4. 4.
    Basupalli, V., Yuki, T., Rajopadhye, S., Morvan, A., Derrien, S., Quinton, P., Wonnacott, D.: ompVerify: polyhedral analysis for the OpenMP programmer. In: Chapman, B.M., Gropp, W.D., Kumaran, K., Müller, M.S. (eds.) IWOMP 2011. LNCS, vol. 6665, pp. 37–53. Springer, Heidelberg (2011). doi: 10.1007/978-3-642-21487-5_4 CrossRefGoogle Scholar
  5. 5.
    DO-178C: Software considerations in airborne systems and equipment certification (2011)Google Scholar
  6. 6.
    Duran, A., Ferrer, R., Costa, J.J., Gonzàlez, M., Martorell, X., Ayguadé, E., Labarta, J.: A proposal for error handling in OpenMP. IJPP 35(4), 393–416 (2007)zbMATHGoogle Scholar
  7. 7.
    Eslamimehr, M., Palsberg, J.: Sherlock: scalable deadlock detection for concurrent programs. In: SIGSOFT (2014)Google Scholar
  8. 8.
    Fan, X., Mehrabi, M., Sinnen, O., Giacaman, N.: Exception handling with OpenMP in object-oriented languages. In: Terboven, C., Supinski, B.R., Reble, P., Chapman, B.M., Müller, M.S. (eds.) IWOMP 2015. LNCS, vol. 9342, pp. 115–129. Springer, Cham (2015). doi: 10.1007/978-3-319-24595-9_9 CrossRefGoogle Scholar
  9. 9.
    GNU: Link Time Optimization (2017).
  10. 10.
    Hanawa, T., Sato, M., Lee, J., Imada, T., Kimura, H., Boku, T.: Evaluation of multicore processors for embedded systems by parallel benchmark program using OpenMP. In: Müller, M.S., Supinski, B.R., Chapman, B.M. (eds.) IWOMP 2009. LNCS, vol. 5568, pp. 15–27. Springer, Heidelberg (2009). doi: 10.1007/978-3-642-02303-3_2 CrossRefGoogle Scholar
  11. 11.
    Intel® Corporation: Interprocedural Optimization (2017).
  12. 12.
    International Electrotechnical Commission: IEC 61508, Functional Safety of Electrical/Electronic/Programmable Electronic Safety-Related Systems, 2.0nd edn. (2009)Google Scholar
  13. 13.
    International Organization for Standardization: ISO/DIS 26262. Road Vehicles - Functional Safety (2009)Google Scholar
  14. 14.
    Kornecki, A.J.: Software Development Tools for Safety-Critical. Real-Time Systems Handbook. Office of Aviation Research and Development, FAA (2007)Google Scholar
  15. 15.
    Kroening, D., Poetzl, D., Schrammel, P., Wachter, B.: Sound static deadlock analysis for C/Pthreads. In: ASE (2016)Google Scholar
  16. 16.
    Lakshmanan, K., Kato, S., Rajkumar, R.: Scheduling parallel real-time tasks on multi-core processors. In: RTSS (2010)Google Scholar
  17. 17.
    Liao, C., Quinlan, D.J., Panas, T., Supinski, B.R.: A ROSE-based OpenMP 3.0 research compiler supporting multiple runtime libraries. In: Sato, M., Hanawa, T., Müller, M.S., Chapman, B.M., Supinski, B.R. (eds.) IWOMP 2010. LNCS, vol. 6132, pp. 15–28. Springer, Heidelberg (2010). doi: 10.1007/978-3-642-13217-9_2 CrossRefGoogle Scholar
  18. 18.
    Lin, Y.: Static nonconcurrency analysis of OpenMP programs. In: Mueller, M.S., Chapman, B.M., Supinski, B.R., Malony, A.D., Voss, M. (eds.) IWOMP-2005. LNCS, vol. 4315, pp. 36–50. Springer, Heidelberg (2008). doi: 10.1007/978-3-540-68555-5_4 CrossRefGoogle Scholar
  19. 19.
    Ma, H., Diersen, S.R., Wang, L., Liao, C., Quinlan, D., Yang, Z.: Symbolic analysis of concurrency errors in OpenMP programs. In: ICPP (2013)Google Scholar
  20. 20.
    Marongiu, A., Burgio, P., Benini, L.: Supporting OpenMP on a multi-cluster embedded MPSoC. Microprocess. Microsyst. 35(8), 668–682 (2011)CrossRefGoogle Scholar
  21. 21.
    Melani, A., Serrano, M.A., Bertogna, M., Cerutti, I., Quinones, E., Buttazzo, G.: A static scheduling approach to enable safety-critical OpenMP applications. In: ASP-DAC (2017)Google Scholar
  22. 22.
    Münchhalfen, J.F., Hilbrich, T., Protze, J., Terboven, C., Müller, M.S.: Classification of common errors in OpenMP applications. In: DeRose, L., Supinski, B.R., Olivier, S.L., Chapman, B.M., Müller, M.S. (eds.) IWOMP 2014. LNCS, vol. 8766, pp. 58–72. Springer, Cham (2014). doi: 10.1007/978-3-319-11454-5_5 Google Scholar
  23. 23.
    Naik, M., Park, C.S., Sen, K., Gay, D.: Effective static deadlock detection. In: ICSE (2009)Google Scholar
  24. 24.
    Netzer, R.H., Miller, B.P.: What are race conditions? Some issues and formalizations. LOPLAS 1(1), 74–88 (1992)CrossRefGoogle Scholar
  25. 25.
    Royuela, S., Duran, A., Liao, C., Quinlan, D.J.: Auto-scoping for OpenMP tasks. In: Chapman, B.M., Massaioli, F., Müller, M.S., Rorro, M. (eds.) IWOMP 2012. LNCS, vol. 7312, pp. 29–43. Springer, Heidelberg (2012). doi: 10.1007/978-3-642-30961-8_3 CrossRefGoogle Scholar
  26. 26.
    Royuela, S., Duran, A., Martorell, X.: Compiler automatic discovery of OmpSs task dependencies. In: Kasahara, H., Kimura, K. (eds.) LCPC 2012. LNCS, vol. 7760, pp. 234–248. Springer, Heidelberg (2013). doi: 10.1007/978-3-642-37658-0_16 CrossRefGoogle Scholar
  27. 27.
    Royuela, S., Ferrer, R., Caballero, D., Martorell, X.: Compiler analysis for OpenMP tasks correctness. In: International Conference on Computing Frontiers (2015)Google Scholar
  28. 28.
    Royuela, S., Martorell, X., Quinones, E., Pinho, L.M.: OpenMP tasking model for ADA: safety and correctness. In: AE (2017)Google Scholar
  29. 29.
    Serrano, M.A., Melani, A., Bertogna, M., Quinones, E.: Response-time analysis of DAG tasks under fixed priority scheduling with limited preemptions. In: DATE (2016)Google Scholar
  30. 30.
    Serrano, M.A., Melani, A., Vargas, R., Marongiu, A., Bertogna, M., Quinones, E.: Timing characterization of OpenMP4 tasking model. In: CASES (2015)Google Scholar
  31. 31.
    Süß, M., Leopold, C.: Common mistakes in OpenMP and how to avoid them. In: OpenMP Shared Memory Parallel Programming (2008)Google Scholar
  32. 32.
    Vargas, R., Quinones, E., Marongiu, A.: OpenMP and timing predictability: a possible union? In: DATE (2015)Google Scholar
  33. 33.
    Wong, M., Klemm, M., Duran, A., Mattson, T., Haab, G., Supinski, B.R., Churbanov, A.: Towards an error model for OpenMP. In: Sato, M., Hanawa, T., Müller, M.S., Chapman, B.M., Supinski, B.R. (eds.) IWOMP 2010. LNCS, vol. 6132, pp. 70–82. Springer, Heidelberg (2010). doi: 10.1007/978-3-642-13217-9_6 CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  1. 1.Barcelona Supercomputing CenterBarcelonaSpain
  2. 2.Intel Corporation IberiaMadridSpain

Personalised recommendations