{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,10]],"date-time":"2026-01-10T07:23:23Z","timestamp":1768029803736,"version":"3.49.0"},"reference-count":23,"publisher":"Springer Science and Business Media LLC","issue":"1","license":[{"start":{"date-parts":[[2017,5,8]],"date-time":"2017-05-08T00:00:00Z","timestamp":1494201600000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Int J Parallel Prog"],"published-print":{"date-parts":[[2018,2]]},"DOI":"10.1007\/s10766-017-0508-z","type":"journal-article","created":{"date-parts":[[2017,5,8]],"date-time":"2017-05-08T18:40:35Z","timestamp":1494268835000},"page":"101-119","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":7,"title":["Multi-dimensional Homomorphisms and Their Implementation in OpenCL"],"prefix":"10.1007","volume":"46","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-0286-0755","authenticated-orcid":false,"given":"Ari","family":"Rasch","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sergei","family":"Gorlatch","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2017,5,8]]},"reference":[{"key":"508_CR1","doi-asserted-by":"crossref","unstructured":"Aldinucci, M., Danelutto, M., Drocco, M., Kilpatrick, P., Pezzi, G.P., Torquati, M.: The loop-of-stencil-reduce paradigm. In: Trustcom\/BigDataSE\/ISPA, 2015 IEEE, vol.\u00a03, pp. 172\u2013177. IEEE (2015)","DOI":"10.1109\/Trustcom.2015.628"},{"key":"508_CR2","doi-asserted-by":"crossref","unstructured":"Ansel, J., Kamil, S., Veeramachaneni, K., Ragan-Kelley, J., Bosboom, J., O\u2019Reilly, U.M., Amarasinghe, S.: OpenTuner: an extensible framework for program autotuning. In: Proceedings of the 23rd International Conference on Parallel Architectures and Compilation, pp. 303\u2013316. ACM (2014)","DOI":"10.1145\/2628071.2628092"},{"key":"508_CR3","doi-asserted-by":"crossref","unstructured":"Cedric Nugteren: CLBlast. https:\/\/github.com\/CNugteren\/CLBlast (2017)","DOI":"10.1145\/3204919.3204924"},{"key":"508_CR4","doi-asserted-by":"crossref","unstructured":"Emoto, K., Matsuzaki, K., Hu, Z., Takeichi, M.: Surrounding theorem: developing parallel programs for matrix-convolutions. In: Euro-Par 2006 Parallel Processing, pp. 605\u2013614. Springer (2006)","DOI":"10.1007\/11823285_63"},{"key":"508_CR5","doi-asserted-by":"crossref","unstructured":"Enmyren, J., Kessler, C.W.: SkePU: A multi-backend skeleton programming library for multi-GPU systems. In: Proceedings of the Fourth International Workshop on High-Level Parallel Programming and Applications, pp. 5\u201314. ACM (2010)","DOI":"10.1145\/1863482.1863487"},{"issue":"2","key":"508_CR6","doi-asserted-by":"crossref","first-page":"129","DOI":"10.1504\/IJHPCN.2012.046370","volume":"7","author":"S Ernsting","year":"2012","unstructured":"Ernsting, S., Kuchen, H.: Algorithmic skeletons for multi-core, multi-GPU systems and clusters. Int. J. High Perform. Comput. Netw. 7(2), 129\u2013138 (2012)","journal-title":"Int. J. High Perform. Comput. Netw."},{"issue":"1","key":"508_CR7","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1016\/S0167-6423(97)00014-2","volume":"33","author":"S Gorlatch","year":"1999","unstructured":"Gorlatch, S.: Extracting and implementing list homomorphisms in parallel program development. Sci. Comput. Program. 33(1), 1\u201327 (1999)","journal-title":"Sci. Comput. Program."},{"key":"508_CR8","doi-asserted-by":"crossref","unstructured":"Gorlatch, S., Cole, M.: Parallel skeletons. In: Padua, D. (ed.) Encyclopedia of Parallel Computing, pp. 1417\u20131422. Springer (2011)","DOI":"10.1007\/978-0-387-09766-4_24"},{"issue":"4","key":"508_CR9","doi-asserted-by":"crossref","first-page":"383","DOI":"10.1007\/s10766-006-0018-x","volume":"34","author":"C Grelck","year":"2006","unstructured":"Grelck, C., Scholz, S.B.: SAC\u2014a functional array language for efficient multi-threaded execution. Int. J. Parallel Program. 34(4), 383\u2013427 (2006)","journal-title":"Int. J. Parallel Program."},{"key":"508_CR10","unstructured":"Intel: OpenCL Optimization Guide (2011)"},{"key":"508_CR11","unstructured":"Intel: Intel MKL. https:\/\/software.intel.com\/en-us\/intel-mkl (2016)"},{"key":"508_CR12","doi-asserted-by":"crossref","unstructured":"Jia, Y., Shelhamer, E., Donahue, J., Karayev, S., Long, J., Girshick, R., Guadarrama, S., Darrell, T.: Caffe: convolutional architecture for fast feature embedding. In: Proceedings of the 22nd ACM International Conference on Multimedia, pp. 675\u2013678. ACM (2014)","DOI":"10.1145\/2647868.2654889"},{"key":"508_CR13","doi-asserted-by":"crossref","unstructured":"Keller, G., Chakravarty, M.M., Leshchinskiy, R., Peyton Jones, S., Lippmeier, B.: Regular, shape-polymorphic, parallel arrays in Haskell. In: ACM Sigplan Notices, vol. 45, pp. 261\u2013272. ACM (2010)","DOI":"10.1145\/1863543.1863582"},{"key":"508_CR14","unstructured":"Khronos OpenCL Working Group: The OpenCL Specification. https:\/\/www.khronos.org\/opencl\/ (2017)"},{"key":"508_CR15","unstructured":"Netlib: BLAS. http:\/\/www.netlib.org\/blas\/ (2016)"},{"key":"508_CR16","doi-asserted-by":"crossref","unstructured":"Nugteren, C., Codreanu, V.: CLTune: a generic auto-tuner for OpenCL kernels. In: Embedded Multicore\/Many-Core Systems-on-Chip (MCSoC), pp. 195\u2013202. IEEE (2015)","DOI":"10.1109\/MCSoC.2015.10"},{"key":"508_CR17","unstructured":"NVIDIA: NVIDIA OpenCL Best Practices Guide (2015)"},{"key":"508_CR18","unstructured":"NVIDIA: NVIDIA cuBLAS. https:\/\/developer.nvidia.com\/cublas (2016)"},{"key":"508_CR19","doi-asserted-by":"crossref","unstructured":"S\u00f8rensen, H.H.B.: High-performance matrix-vector multiplication on the GPU. In: Alexander, M. (ed.) Euro-Par 2011: Parallel Processing Workshops, pp. 377\u2013386. Springer (2011)","DOI":"10.1007\/978-3-642-29737-3_42"},{"issue":"1","key":"508_CR20","doi-asserted-by":"crossref","first-page":"25","DOI":"10.1007\/s11227-014-1213-y","volume":"69","author":"M Steuwer","year":"2014","unstructured":"Steuwer, M., Gorlatch, S.: SkelCL: a high-level extension of OpenCL for multi-GPU systems. J. Supercomput. 69(1), 25\u201333 (2014)","journal-title":"J. Supercomput."},{"key":"508_CR21","doi-asserted-by":"crossref","unstructured":"Steuwer, M., Fensch, C., Lindley, S., Dubach, C.: Generating performance portable code using rewrite rules: from high-level functional expressions to high-performance Opencl code. In: Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, pp. 205\u2013217. ACM (2015)","DOI":"10.1145\/2784731.2784754"},{"key":"508_CR22","doi-asserted-by":"crossref","unstructured":"Steuwer, M., Remmelg, T., Dubach, C.: Matrix multiplication beyond auto-tuning: rewrite-based GPU code generation. In: Proceedings of the International Conference on Compilers, Architectures and Synthesis for Embedded Systems, p. 15. ACM (2016)","DOI":"10.1145\/2968455.2968521"},{"key":"508_CR23","doi-asserted-by":"crossref","unstructured":"Xu, W., Liu, Z., Wu, J., Ye, X., Jiao, S., Wang, D., Song, F., Fan, D.: Auto-tuning GEMV on many-core GPU. In: 2012 IEEE 18th International Conference on Parallel and Distributed Systems (ICPADS), pp. 30\u201336. IEEE (2012)","DOI":"10.1109\/ICPADS.2012.15"}],"container-title":["International Journal of Parallel Programming"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s10766-017-0508-z\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-017-0508-z.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-017-0508-z.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,8,23]],"date-time":"2023-08-23T13:19:19Z","timestamp":1692796759000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/s10766-017-0508-z"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,5,8]]},"references-count":23,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2018,2]]}},"alternative-id":["508"],"URL":"https:\/\/doi.org\/10.1007\/s10766-017-0508-z","relation":{},"ISSN":["0885-7458","1573-7640"],"issn-type":[{"value":"0885-7458","type":"print"},{"value":"1573-7640","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017,5,8]]}}}