Let's Go: A Data-driven Multi-threading Support

Alberto Scionti, Somnath Mazumdar

Research output: Contribution to journalConference article in journalResearch


Increasing performance of computing systems necessitates providing solutions for improving scalability and productivity. In recent times, data-driven Program eXecution Models (PXMs) are gaining popularity due to their superior support compared to traditional von Neumann execution models. However, exposing the benefits of such PXMs within a high-level programming language remains a challenge. Although many high-level programming languages and APIs support concurrency and multi-threading (e.g., C++11, Java, OpenMP, MPI, etc.), their synchronisation models make large use of mutex and locks, generally leading to poor system performance. Conversely, one major appeal of Go programming language is the way it supports concurrency: goroutines (tagged functions) are mapped on OS threads and communicate each other through data structures Buffering input data (channels). By forcing goroutines to exchange data only through channels, it is possible to enable a data-driven execution. This paper proposes a first a.empt to map goroutines on a data-driven based PXM. Go compilation procedure and the run-time library are modified to exploit the execution of fine-grain threads on an abstracted parallel machine model.
Original languageEnglish
JournalACM International Conference on Computing Frontiers 2017, CF 2017
Pages (from-to)287-290
Number of pages4
Publication statusPublished - 15 May 2017
Externally publishedYes
EventACM International Conference on Computing Frontiers - Siena, Italy
Duration: 15 May 201717 May 2017
Conference number: 14


ConferenceACM International Conference on Computing Frontiers


  • Data-driven
  • Multi-threading
  • Programming language

Cite this