A Case for Extending Task Dependencies

  • Tom ScoglandEmail author
  • Bronis de Supinski
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9903)


Tasks offer a natural mechanism to express asynchronous operations in OpenMP as well as to express parallel patterns with dynamic sizes and shapes. Since the release of OpenMP 4 task dependencies have made an already flexible tool practical in many more situations. Even so, while tasks can be made asynchronous with respect to the encountering thread, there are no mechanisms to tie an OpenMP task into a truly asynchronous operation outside of OpenMP without blocking an OpenMP thread. Additionally, producer/consumer parallel patterns, or more generally pipeline parallel patterns, suffer from the lack of a convenient and efficient point-to-point synchronization and data passing mechanism. This paper presents a set of extensions, leveraging the task and dependency mechanisms, that can help users and implementers tie tasks into other asynchronous systems and more naturally express pipeline parallelism while decreasing the overhead of passing data between otherwise small tasks by as much as 80 %.


Tasks Producer/consumer Interoperability 


  1. 1.
  2. 2.
    The OpenCL Specification, November 2012.
  3. 3.
    Augonnet, C., Thibault, S., Namyst, R., Wacrenier, P.-A.: StarPU: a unified platform for task scheduling on heterogeneous multicore architectures. In: Sips, H., Epema, D., Lin, H.-X. (eds.) Euro-Par 2009. LNCS, vol. 5704, pp. 863–874. Springer, Heidelberg (2009). CrossRefGoogle Scholar
  4. 4.
    Bueno, J., Planas, J., Duran, A., Badia, R.M., Martorell, X., Ayguadé, E., Labarta, J.: Productive programming of GPU clusters with OmpSs. In: International Parallel and Distributed Processing Symposium, pp. 557–568 (2012).
  5. 5.
    Dijkstra, E.W.: Cooperating sequential processes. In: Hansen, P.B. (ed.) The Origin of Concurrent Programming, pp. 65–138. Springer, New York (1968)CrossRefGoogle Scholar
  6. 6.
    Duran, A., Ayguadé, E., Badia, R.M., Labarta, J., Martinell, L., Martorell, X., Planas, J.: OmpSs: a proposal for programming heterogeneous multi-core architectures. Parallel Process. Lett. 21(2), 173–193 (2011). MathSciNetCrossRefGoogle Scholar
  7. 7.
    Forum, M.P.I.: MPI: a message-passing interface standard. Technical report (1994).
  8. 8.
    Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21(8), 666–677 (1978). MathSciNetCrossRefzbMATHGoogle Scholar
  9. 9.
    Pike, R.: The go programming language. Talk given at Google’s Tech Talks (2009)Google Scholar
  10. 10.
    Scogland, T.R.W., Feng, W.: Design and evaluation of scalable concurrent queues for many-core architectures. In: ACM/SPEC International Conference on Performance Engineering (ICPE), February 2015Google Scholar

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  1. 1.Lawrence Livermore National LaboratoryLivermoreUSA

Personalised recommendations