{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,10]],"date-time":"2026-03-10T07:14:25Z","timestamp":1773126865752,"version":"3.50.1"},"reference-count":25,"publisher":"Springer Science and Business Media LLC","issue":"1","license":[{"start":{"date-parts":[[2022,12,2]],"date-time":"2022-12-02T00:00:00Z","timestamp":1669939200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2022,12,2]],"date-time":"2022-12-02T00:00:00Z","timestamp":1669939200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Int J Parallel Prog"],"published-print":{"date-parts":[[2023,2]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>We present the new distributed-memory run-time system (RTS) of the C++-based open-source structured parallel programming library <jats:italic>FastFlow<\/jats:italic>. The new RTS enables the execution of <jats:italic>FastFlow<\/jats:italic> shared-memory applications written using its <jats:italic>Building Blocks<\/jats:italic> () on distributed systems with minimal changes to the original program. The changes required are all high-level and deal with introducing <jats:italic>distributed groups<\/jats:italic> (<jats:italic>dgroup<\/jats:italic>), i.e., logical partitions of the BBs composing the application streaming graph. A <jats:italic>dgroup<\/jats:italic>, which in turn is implemented using <jats:italic>FastFlow<\/jats:italic>\u2019s , can be deployed and executed on a remote machine and communicate with other <jats:italic>dgroups<\/jats:italic> according to the original shared-memory <jats:italic>FastFlow<\/jats:italic> streaming programming model. We present how to define the distributed groups and how we faced the problem of data serialization and communication performance tuning through transparent messages\u2019 batching and their scheduling. Finally, we present a study of the overhead introduced by <jats:italic>dgroups<\/jats:italic> considering some benchmarks on a sixteen-node cluster.<\/jats:p>","DOI":"10.1007\/s10766-022-00750-5","type":"journal-article","created":{"date-parts":[[2022,12,2]],"date-time":"2022-12-02T13:05:38Z","timestamp":1669986338000},"page":"1-21","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":16,"title":["Distributed-Memory FastFlow Building Blocks"],"prefix":"10.1007","volume":"51","author":[{"given":"Nicol\u00f2","family":"Tonci","sequence":"first","affiliation":[]},{"given":"Massimo","family":"Torquati","sequence":"additional","affiliation":[]},{"given":"Gabriele","family":"Mencagli","sequence":"additional","affiliation":[]},{"given":"Marco","family":"Danelutto","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2022,12,2]]},"reference":[{"key":"750_CR1","doi-asserted-by":"publisher","unstructured":"Aldinucci, M., Danelutto, M., Kilpatrick, P., Torquati, M.: Fastflow: high-level and efficient streaming on multi-core. In: Programming multi-core and many-core computing systems, parallel and distributed computing (2017). https:\/\/doi.org\/10.1002\/9781119332015.ch13","DOI":"10.1002\/9781119332015.ch13"},{"key":"750_CR2","unstructured":"Torquati, M.: Harnessing Parallelism in Multi\/Many-Cores with Streams and Parallel Patterns. PhD thesis, University of Pisa (2019)"},{"issue":"6","key":"750_CR3","doi-asserted-by":"publisher","first-page":"1012","DOI":"10.1007\/s10766-013-0273-6","volume":"42","author":"M Aldinucci","year":"2014","unstructured":"Aldinucci, M., Campa, S., Danelutto, M., Kilpatrick, P., Torquati, M.: Design patterns percolating to parallel programming framework implementation. Int. J. Parallel Program. 42(6), 1012\u20131031 (2014). https:\/\/doi.org\/10.1007\/s10766-013-0273-6","journal-title":"Int. J. Parallel Program."},{"issue":"3","key":"750_CR4","doi-asserted-by":"publisher","first-page":"389","DOI":"10.1016\/j.parco.2003.12.002","volume":"30","author":"M Cole","year":"2004","unstructured":"Cole, M.: Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming. Parallel Comput. 30(3), 389\u2013406 (2004). https:\/\/doi.org\/10.1016\/j.parco.2003.12.002","journal-title":"Parallel Comput."},{"key":"750_CR5","doi-asserted-by":"publisher","unstructured":"Aldinucci, M., Danelutto, M., Kilpatrick, P., Meneghin, M., Torquati, M.: An efficient unbounded lock-free queue for multi-core systems. In: Euro-Par 2012 Parallel Processing, pp. 662\u2013673. Springer, Berlin, Heidelberg (2012). https:\/\/doi.org\/10.1007\/978-3-642-32820-6_65","DOI":"10.1007\/978-3-642-32820-6_65"},{"key":"750_CR6","doi-asserted-by":"publisher","unstructured":"Aldinucci, M., Campa, S., Danelutto, M., Kilpatrick, P., Torquati, M.: Targeting distributed systems in fastflow. In: Proceedings of the 18th International Conference on Parallel Processing Workshops. Euro-Par\u201912, pp. 47\u201356. Springer, Berlin, Heidelberg (2012). https:\/\/doi.org\/10.1007\/978-3-642-36949-0_7","DOI":"10.1007\/978-3-642-36949-0_7"},{"key":"750_CR7","doi-asserted-by":"publisher","unstructured":"Secco, A., Uddin, I., Pezzi, G.P., Torquati, M.: Message passing on infiniband rdma for parallel run-time supports. In: 2014 22nd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, pp. 130\u2013137 (2014). https:\/\/doi.org\/10.1109\/PDP.2014.23","DOI":"10.1109\/PDP.2014.23"},{"key":"750_CR8","unstructured":"Grant, W.S., Voorhies, R.: Cereal a c++ 11 library for serialization. https:\/\/github.com\/USCiLab\/cereal (2013)"},{"key":"750_CR9","doi-asserted-by":"publisher","unstructured":"Rabenseifner, R., Hager, G., Jost, G.: Hybrid MPI\/openmp parallel programming on clusters of multi-core SMP nodes. In: 2009 17th Euromicro International Conference on Parallel, Distributed and Network-Based Processing, pp. 427\u2013436 (2009). https:\/\/doi.org\/10.1109\/PDP.2009.43. IEEE","DOI":"10.1109\/PDP.2009.43"},{"issue":"2, 3","key":"750_CR10","doi-asserted-by":"publisher","first-page":"83","DOI":"10.1155\/2001\/450503","volume":"9","author":"L Smith","year":"2001","unstructured":"Smith, L., Bull, M.: Development of mixed mode MPI\/OPENMP applications. Sci. Program. 9(2, 3), 83\u201398 (2001). https:\/\/doi.org\/10.1155\/2001\/450503","journal-title":"Sci. Program."},{"issue":"6","key":"750_CR11","doi-asserted-by":"publisher","first-page":"846","DOI":"10.1007\/s10766-021-00704-3","volume":"49","author":"A Ernstsson","year":"2021","unstructured":"Ernstsson, A., Ahlqvist, J., Zouzoula, S., Kessler, C.: Skepu 3: Portable high-level programming of heterogeneous systems and HPC clusters. Int. J. Parallel Program. 49(6), 846\u2013866 (2021). https:\/\/doi.org\/10.1007\/s10766-021-00704-3","journal-title":"Int. J. Parallel Program."},{"key":"750_CR12","doi-asserted-by":"publisher","first-page":"24","DOI":"10.1016\/j.parco.2019.03.004","volume":"84","author":"J L\u00f3pez-G\u00f3mez","year":"2019","unstructured":"L\u00f3pez-G\u00f3mez, J., Mu\u00f1oz, J.F., del Rio Astorga, D., Dolz, M.F., Garcia, J.D.: Exploring stream parallel patterns in distributed MPI environments. Parallel Comput. 84, 24\u201336 (2019). https:\/\/doi.org\/10.1016\/j.parco.2019.03.004","journal-title":"Parallel Comput."},{"key":"750_CR13","doi-asserted-by":"publisher","unstructured":"Tanno, H., Iwasaki, H.: Parallel skeletons for variable-length lists in sketo skeleton library. In: European Conference on Parallel Processing, pp. 666\u2013677 (2009). https:\/\/doi.org\/10.1007\/978-3-642-03869-3_63","DOI":"10.1007\/978-3-642-03869-3_63"},{"key":"750_CR14","doi-asserted-by":"publisher","unstructured":"Steuwer, M., Kegel, P., Gorlatch, S.: Skelcl\u2014a portable skeleton library for high-level GPU programming. In: 2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and PHD Forum, pp. 1176\u20131182 (2011). https:\/\/doi.org\/10.1109\/IPDPS.2011.269","DOI":"10.1109\/IPDPS.2011.269"},{"key":"750_CR15","doi-asserted-by":"publisher","unstructured":"Ciechanowicz, P., Kuchen, H.: Enhancing Muesli\u2019s data parallel skeletons for multi-core computer architectures. In: 2010 IEEE 12th International Conference on High Performance Computing and Communications (HPCC), pp. 108\u2013113 (2010). https:\/\/doi.org\/10.1109\/HPCC.2010.23","DOI":"10.1109\/HPCC.2010.23"},{"key":"750_CR16","doi-asserted-by":"publisher","unstructured":"Rieger, C., Wrede, F., Kuchen, H.: Musket: A domain-specific language for high-level parallel programming with algorithmic skeletons. In: Proceedings of the 34th ACM\/SIGAPP Symposium on Applied Computing. SAC\u201919, pp. 1534\u20131543. ACM, New York, NY, USA (2019). https:\/\/doi.org\/10.1145\/3297280.3297434","DOI":"10.1145\/3297280.3297434"},{"issue":"01","key":"750_CR17","doi-asserted-by":"publisher","first-page":"1740005","DOI":"10.1142\/S0129626417400059","volume":"27","author":"D Griebler","year":"2017","unstructured":"Griebler, D., Danelutto, M., Torquati, M., Fernandes, L.G.: Spar: a DSL for high-level and productive stream parallelism. Parallel Process. Lett. 27(01), 1740005 (2017). https:\/\/doi.org\/10.1142\/S0129626417400059","journal-title":"Parallel Process. Lett."},{"key":"750_CR18","doi-asserted-by":"publisher","DOI":"10.1535\/itj.1104.05","author":"A Kukanov","year":"2007","unstructured":"Kukanov, A., Voss, M.J.: The foundations for scalable multi-core software in intel threading building blocks. Intel Technol. J. (2007). https:\/\/doi.org\/10.1535\/itj.1104.05","journal-title":"Intel Technol. J."},{"key":"750_CR19","doi-asserted-by":"publisher","unstructured":"Reyes, R., Lom\u00fcller, V.: Sycl: Single-source C++ accelerator programming. In: Parallel Computing: On the Road to Exascale, IOS Press, vol. 27, pp. 673\u2013682 (2016). https:\/\/doi.org\/10.3233\/978-1-61499-621-7-673","DOI":"10.3233\/978-1-61499-621-7-673"},{"issue":"3","key":"750_CR20","doi-asserted-by":"publisher","first-page":"145","DOI":"10.1007\/s41060-016-0027-9","volume":"1","author":"S Salloum","year":"2016","unstructured":"Salloum, S., Dautov, R., Chen, X., Peng, P.X., Huang, J.Z.: Big data analytics on apache spark. Int. J. Data Sci. Anal. 1(3), 145\u2013164 (2016). https:\/\/doi.org\/10.1007\/s41060-016-0027-9","journal-title":"Int. J. Data Sci. Anal."},{"issue":"4","key":"750_CR21","first-page":"28","volume":"36","author":"P Carbone","year":"2015","unstructured":"Carbone, P., Katsifodimos, A., Ewen, S., Markl, V., Haridi, S., Tzoumas, K.: Apache flink: Stream and batch processing in a single engine. Bull. IEEE Comput. Soc. Tech. Comm. Data Eng. 36(4), 28\u201338 (2015)","journal-title":"Bull. IEEE Comput. Soc. Tech. Comm. Data Eng."},{"key":"750_CR22","doi-asserted-by":"publisher","DOI":"10.1016\/j.cosrev.2021.100422","volume":"42","author":"C Ramon-Cortes","year":"2021","unstructured":"Ramon-Cortes, C., Alvarez, P., Lordan, F., Alvarez, J., Ejarque, J., Badia, R.M.: A survey on the distributed computing stack. Comput. Sci. Rev. 42, 100422 (2021). https:\/\/doi.org\/10.1016\/j.cosrev.2021.100422","journal-title":"Comput. Sci. Rev."},{"key":"750_CR23","doi-asserted-by":"publisher","unstructured":"Soumagne, J., Kimpe, D., Zounmevo, J.A., Chaarawi, M., Koziol, Q., Afsahi, A., Ross, R.B.: Mercury: enabling remote procedure call for high-performance computing. In: CLUSTER, pp. 1\u20138 (2013). https:\/\/doi.org\/10.1109\/CLUSTER.2013.6702617","DOI":"10.1109\/CLUSTER.2013.6702617"},{"issue":"11","key":"750_CR24","doi-asserted-by":"publisher","first-page":"2748","DOI":"10.1109\/TPDS.2021.3073970","volume":"32","author":"G Mencagli","year":"2021","unstructured":"Mencagli, G., Torquati, M., Cardaci, A., Fais, A., Rinaldi, L., Danelutto, M.: Windflow: high-speed continuous stream processing with parallel building blocks. IEEE Trans. Parallel Distrib. Syst. 32(11), 2748\u20132763 (2021). https:\/\/doi.org\/10.1109\/TPDS.2021.3073970","journal-title":"IEEE Trans. Parallel Distrib. Syst."},{"key":"750_CR25","doi-asserted-by":"publisher","unstructured":"Danelutto, M., Torquati, M.: Loop parallelism: a new skeleton perspective on data parallel patterns. In: 2014 22nd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, pp. 52\u201359 (2014). https:\/\/doi.org\/10.1109\/PDP.2014.13","DOI":"10.1109\/PDP.2014.13"}],"container-title":["International Journal of Parallel Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-022-00750-5.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10766-022-00750-5\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-022-00750-5.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,1,27]],"date-time":"2023-01-27T19:40:11Z","timestamp":1674848411000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10766-022-00750-5"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,12,2]]},"references-count":25,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2023,2]]}},"alternative-id":["750"],"URL":"https:\/\/doi.org\/10.1007\/s10766-022-00750-5","relation":{},"ISSN":["0885-7458","1573-7640"],"issn-type":[{"value":"0885-7458","type":"print"},{"value":"1573-7640","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022,12,2]]},"assertion":[{"value":"30 August 2022","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"21 November 2022","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"2 December 2022","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors have no competing interests as defined by Springer, or other interests that might be perceived to influence the results and\/or discussion reported in this paper.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"Conflict of Interest"}}]}}