{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T07:10:23Z","timestamp":1760080223212,"version":"3.41.0"},"reference-count":46,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2018,12,31]],"date-time":"2018-12-31T00:00:00Z","timestamp":1546214400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000001","name":"NSF","doi-asserted-by":"publisher","award":["CCF-1717515, CCF-1717635, CNS-0821497 and CNS-1229282"],"award-info":[{"award-number":["CCF-1717515, CCF-1717635, CNS-0821497 and CNS-1229282"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2018,12,31]]},"abstract":"<jats:p>Compared to threads, tasks are a more fine-grained alternative. The task parallel programming model offers benefits in terms of better performance portability and better load-balancing for problems that exhibit nonuniform workloads. A common scenario of task parallel programming is that a task is recursively decomposed into smaller sub-tasks. Depending on the problem domain, the number of created sub-tasks may be nonuniform, thereby creating potential for significant load imbalances in the system. Dynamic load-balancing mechanisms will distribute the tasks across available threads. The final result of a computation may be modeled as a reduction over the results of all sub-tasks.<\/jats:p>\n          <jats:p>This article describes a simple, yet effective prototype framework, Blaze-Tasks, for task scheduling and task reductions on shared memory architectures. The framework has been designed with lock-free techniques and generic programming principles in mind. Blaze-Tasks is implemented entirely in C++17 and is thus portable. To load-balance the computation, Blaze-Tasks uses task stealing. To manage contention on a task pool, the number of lock-free attempts to steal a task depends on the distance between thief and pool owner and the estimated number of tasks in a victim\u2019s pool. This article evaluates the Blaze framework on Intel and IBM dual-socket systems using nine benchmarks and compares its performance with other task parallel frameworks. While Cilk outperforms Blaze on Intel on most benchmarks, the evaluation shows that Blaze is competitive with OpenMP and other library-based implementations. On IBM, the experiments show that Blaze outperforms other approaches on most benchmarks.<\/jats:p>","DOI":"10.1145\/3293448","type":"journal-article","created":{"date-parts":[[2019,1,8]],"date-time":"2019-01-08T15:53:12Z","timestamp":1546962792000},"page":"1-25","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Blaze-Tasks"],"prefix":"10.1145","volume":"15","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-4185-5008","authenticated-orcid":false,"given":"Peter","family":"Pirkelbauer","sequence":"first","affiliation":[{"name":"Department of Computer Science, University of Alabama at Birmingham, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Amalee","family":"Wilson","sequence":"additional","affiliation":[{"name":"Applied Computer Science Group, Los Alamos National Laboratory, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8070-7633","authenticated-orcid":false,"given":"Christina","family":"Peterson","sequence":"additional","affiliation":[{"name":"Department of Computer Science, University of Central Florida, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Damian","family":"Dechev","sequence":"additional","affiliation":[{"name":"Department of Computer Science, University of Central Florida, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2019,1,8]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/277651.277678"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103621.2103717"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/324133.324234"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/503272.503282"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1375581.1375591"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-30961-8_8"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2767386.2767436"},{"volume-title":"Proceedings of the International Workshop on OpenMP. Springer, 189--201","author":"Ciesko J.","key":"e_1_2_1_9_1"},{"key":"e_1_2_1_10_1","unstructured":"de Supinski Bronis and Klemm Michael (eds.). 2017. OpenMP Technical Report 6:Version 5.0 Preview 2. Technical Report. OpenMP Architecture Review Board.  de Supinski Bronis and Klemm Michael (eds.). 2017. OpenMP Technical Report 6:Version 5.0 Preview 2. Technical Report. OpenMP Architecture Review Board."},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/11945529_11"},{"volume-title":"Stepanov","year":"2000","author":"Dehnert James C.","key":"e_1_2_1_12_1"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3095770.3095774"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2835260.2835264"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1583991.1584017"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277725"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jpdc.2007.04.010"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1062247.1062249"},{"edition":"1","volume-title":"The Art of Multiprocessor Programming (revised","author":"Herlihy Maurice","key":"e_1_2_1_19_1"},{"volume-title":"Version 1.0. Retrieved on","year":"2018","author":"Intel Corp.","key":"e_1_2_1_20_1"},{"key":"e_1_2_1_21_1","unstructured":"ISO\/IEC 14882:2017(E) International Standard. 2017. Programming Language C++. JTC1\/SC22\/WG21 - The C++ Standards Committee.  ISO\/IEC 14882:2017(E) International Standard. 2017. Programming Language C++. JTC1\/SC22\/WG21 - The C++ Standards Committee."},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2009.04.003"},{"volume-title":"Retrieved","year":"2009","author":"Lambers Jim","key":"e_1_2_1_23_1"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1629911.1630048"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/571825.571829"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-45209-6_92"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/248052.248106"},{"volume-title":"Proceedings of the Fifth Conference on Partitioned Global Address Space Programming Models.","year":"2011","author":"Min Seung-Jai","key":"e_1_2_1_28_1"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1155\/2015\/981759"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.5555\/1757112.1757137"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1177\/1094342011434065"},{"key":"e_1_2_1_32_1","unstructured":"Peter Pirkelbauer and Nicholas Dzugan. 2015. The BLAZE Concurrent Library. Retrieved from http:\/\/iprogress.cis.uab.edu\/blaze.  Peter Pirkelbauer and Nicholas Dzugan. 2015. The BLAZE Concurrent Library. Retrieved from http:\/\/iprogress.cis.uab.edu\/blaze."},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-49583-5_4"},{"volume-title":"Proceedings of the 12th ACM SIGPLAN Workshop on Transactional Computing (Transact\u201917) and Workshop at the Symposium on Principles and Practice of Parallel Programming (PPoPP\u201917)","year":"2017","author":"Pirkelbauer Peter","key":"e_1_2_1_34_1"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/265924.265927"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3018743.3018758"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3210377.3210658"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2017.2766062"},{"key":"e_1_2_1_39_1","unstructured":"Jaroslav Sevcik and Peter Sewell. 2011. C\/C++11 mappings to processors. Retrieved from www.cl.cam.ac.uk\/pes20\/cpp\/cpp0xmappings.html.  Jaroslav Sevcik and Peter Sewell. 2011. C\/C++11 mappings to processors. Retrieved from www.cl.cam.ac.uk\/pes20\/cpp\/cpp0xmappings.html."},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-69330-7_33"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/11516798_18"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11227-018-2238-4"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3075564.3075574"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICPPW.2010.38"},{"volume-title":"Proceedings of the IEEE International Symposium on Parallel and Distributed Processing. 1--8.","author":"Wheeler K. B.","key":"e_1_2_1_45_1"},{"volume-title":"Practical Multithreading. Manning Publ","author":"Williams Anthony","key":"e_1_2_1_46_1"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2851141.2851168"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3293448","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3293448","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3293448","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T01:02:01Z","timestamp":1750208521000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3293448"}},"subtitle":["A Framework for Computing Parallel Reductions over Tasks"],"short-title":[],"issued":{"date-parts":[[2018,12,31]]},"references-count":46,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2018,12,31]]}},"alternative-id":["10.1145\/3293448"],"URL":"https:\/\/doi.org\/10.1145\/3293448","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"type":"print","value":"1544-3566"},{"type":"electronic","value":"1544-3973"}],"subject":[],"published":{"date-parts":[[2018,12,31]]},"assertion":[{"value":"2018-06-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-11-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2019-01-08","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}