{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:25:05Z","timestamp":1750307105037,"version":"3.41.0"},"reference-count":26,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2013,1,1]],"date-time":"2013-01-01T00:00:00Z","timestamp":1356998400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2013,1]]},"abstract":"<jats:p>\n            Code generation and programming have become ever more challenging over the last decade due to the shift towards parallel processing. Emerging processor architectures such as multi-cores and GPUs exploit increasingly parallelism, requiring programmers and compilers to deal with aspects such as threading, concurrency, synchronization, and complex memory partitioning. We advocate that programmers and compilers can greatly benefit from a structured classification of program code. Such a classification can help programmers to find opportunities for parallelization, reason about their code, and interact with other programmers. Similarly, parallelising compilers and source-to-source compilers can take threading and optimization decisions based on the same classification. In this work, we introduce\n            <jats:italic>algorithmic species<\/jats:italic>\n            , a classification of affine loop nests based on the polyhedral model and targeted for both automatic and manual use. Individual classes capture information such as the structure of parallelism and the data reuse. To make the classification applicable for manual use, a basic vocabulary forms the base for the creation of a set of intuitive classes. To demonstrate the use of algorithmic species, we identify 115 classes in a benchmark set. Additionally, we demonstrate the suitability of algorithmic species for automated uses by showing a tool to automatically extract species from program code, a species-based source-to-source compiler, and a species-based performance prediction model.\n          <\/jats:p>","DOI":"10.1145\/2400682.2400699","type":"journal-article","created":{"date-parts":[[2013,1,22]],"date-time":"2013-01-22T15:28:56Z","timestamp":1358868536000},"page":"1-25","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":7,"title":["Algorithmic species"],"prefix":"10.1145","volume":"9","author":[{"given":"Cedric","family":"Nugteren","sequence":"first","affiliation":[{"name":"Eindhoven University of Technology, The Netherlands"}]},{"given":"Pieter","family":"Custers","sequence":"additional","affiliation":[{"name":"Eindhoven University of Technology, The Netherlands"}]},{"given":"Henk","family":"Corporaal","sequence":"additional","affiliation":[{"name":"Eindhoven University of Technology, The Netherlands"}]}],"member":"320","published-online":{"date-parts":[[2013,1,20]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/29873.29875"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1562764.1562783"},{"volume-title":"Proceedings of the 20th International Parallel and Distributed Processing Symposium. IEEE.","author":"Caarls W.","key":"e_1_2_1_3_1"},{"key":"e_1_2_1_4_1","unstructured":"Campbell D. K. G. 1996. Towards the classification of algorithmic skeletons. Tech. rep. YCS 276 University of York.  Campbell D. K. G. 1996. Towards the classification of algorithmic skeletons. Tech. rep. YCS 276 University of York."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1995896.1995928"},{"volume-title":"Algorithmic Skeletons: Structured Management of Parallel Computation","year":"1991","author":"Cole M.","key":"e_1_2_1_6_1"},{"volume-title":"the 1st Workshop on General Purpose Processing on Graphics Processing Units.","author":"Dolbeau R.","key":"e_1_2_1_7_1"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1863482.1863487"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01407931"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2011.15"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-92990-1_14"},{"key":"e_1_2_1_12_1","doi-asserted-by":"crossref","unstructured":"Keutzer K. and Mattson T. 2010. A design pattern language for engineering (parallel) software. Intel Technol. J.  Keutzer K. and Mattson T. 2010. A design pattern language for engineering (parallel) software. Intel Technol. J.","DOI":"10.1145\/1953611.1953620"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1109\/71.86109"},{"volume-title":"Proceedings of the Sixth Pattern Languages of Programs Workshop.","author":"Massingill B.","key":"e_1_2_1_14_1"},{"key":"e_1_2_1_15_1","unstructured":"Mattson T. Sanders B. and Massingill B. 2004. Patterns for Parallel Programming. Addis.-Wesley.   Mattson T. Sanders B. and Massingill B. 2004. Patterns for Parallel Programming. Addis.-Wesley."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-29737-3_31"},{"key":"e_1_2_1_17_1","unstructured":"Nugteren C. and Corporaal H. 2011. A modular and parameterisable classification of algorithms. Tech. rep. ESR-2011-02 Eindhoven University of Technology.  Nugteren C. and Corporaal H. 2011. A modular and parameterisable classification of algorithms. Tech. rep. ESR-2011-02 Eindhoven University of Technology."},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2159430.2159431"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2212908.2212937"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993501"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2007.21"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1345206.1345220"},{"volume-title":"Proceedings of the 2nd International Workshop on Polyhedral Compilation Techniques.","author":"Verdoolaege S.","key":"e_1_2_1_23_1"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1498765.1498785"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/113445.113449"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1735688.1735697"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2400682.2400699","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2400682.2400699","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T09:35:01Z","timestamp":1750239301000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2400682.2400699"}},"subtitle":["A classification of affine loop nests for parallel programming"],"short-title":[],"issued":{"date-parts":[[2013,1]]},"references-count":26,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2013,1]]}},"alternative-id":["10.1145\/2400682.2400699"],"URL":"https:\/\/doi.org\/10.1145\/2400682.2400699","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"type":"print","value":"1544-3566"},{"type":"electronic","value":"1544-3973"}],"subject":[],"published":{"date-parts":[[2013,1]]},"assertion":[{"value":"2012-06-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2012-11-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2013-01-20","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}