{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,6]],"date-time":"2026-06-06T14:14:03Z","timestamp":1780755243307,"version":"3.54.1"},"reference-count":47,"publisher":"Springer Science and Business Media LLC","issue":"5","license":[{"start":{"date-parts":[[2014,8,19]],"date-time":"2014-08-19T00:00:00Z","timestamp":1408406400000},"content-version":"tdm","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":[[2015,10]]},"DOI":"10.1007\/s10766-014-0320-y","type":"journal-article","created":{"date-parts":[[2014,8,18]],"date-time":"2014-08-18T15:15:58Z","timestamp":1408374958000},"page":"752-785","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":108,"title":["pocl: A Performance-Portable OpenCL Implementation"],"prefix":"10.1007","volume":"43","author":[{"given":"Pekka","family":"J\u00e4\u00e4skel\u00e4inen","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Carlos S\u00e1nchez","family":"de La Lama","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Erik","family":"Schnetter","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Kalle","family":"Raiskila","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Jarmo","family":"Takala","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Heikki","family":"Berg","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2014,8,19]]},"reference":[{"key":"320_CR1","unstructured":"Clang: A C language frontend for LLVM. http:\/\/clang.llvm.org\/ . Online; Accessed 5 Feb 2014"},{"key":"320_CR2","unstructured":"Clover Git: Implementing barriers. http:\/\/people.freedesktop.org\/steckdenis\/clover\/barrier.html . Online; Accessed 18 May 2013"},{"key":"320_CR3","unstructured":"Clover Git: OpenCL 1.1 software implementation. http:\/\/people.freedesktop.org\/steckdenis\/clover\/index.html . Online; Accessed 18 May 2013"},{"key":"320_CR4","unstructured":"freeocl: Multi-platform implementation of OpenCL 1.2 targeting CPUs. http:\/\/code.google.com\/p\/freeocl\/ . Online; Accessed 18 May 2013"},{"key":"320_CR5","unstructured":"LLVM compiler infrastructure. http:\/\/llvm.org\/ . Online; Accessed 5 Feb 2014"},{"key":"320_CR6","unstructured":"TTA-based codesign environment (TCE). http:\/\/tce.cs.tut.fi . Online; Accessed 18 May 2013"},{"key":"320_CR7","unstructured":"Advanced Micro Devices Inc: Accelerated parallel processing (APP) software development kit (SDK) v2.8 (2012)"},{"key":"320_CR8","volume-title":"Compilers: Principles, Techniques, and Tools","author":"AV Aho","year":"1986","unstructured":"Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools. Addison-Wesley Longman Publishing Co. Inc., Reading (1986)"},{"issue":"7","key":"320_CR9","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/390013.808479","volume":"5","author":"FE Allen","year":"1970","unstructured":"Allen, F.E.: Control flow analysis. ACM SIGPLAN Not. 5(7), 1\u201319 (1970)","journal-title":"ACM SIGPLAN Not."},{"key":"320_CR10","doi-asserted-by":"crossref","unstructured":"Allen, J., Kennedy, K., Porterfield, C., Warren, J.: Conversion of control dependence to data dependence. In: Proceedings of ACM Symposium Principles of Programming Languages, Austin, TX, pp. 177\u2013189 (1983)","DOI":"10.1145\/567067.567085"},{"key":"320_CR11","unstructured":"ARM Ltd.: The ARM NEON\u2122 general-purpose SIMD engine (2012). http:\/\/www.arm.com\/products\/processors\/technologies\/neon.php"},{"key":"320_CR12","unstructured":"ARM Ltd.: The ARMCortex\u2122 A9 processor (2013). http:\/\/www.arm.com\/products\/processors\/cortex-a\/cortex-a9.php"},{"key":"320_CR13","doi-asserted-by":"crossref","unstructured":"Cammarota, R., Nicolau, A., Veidenbaum, A.V., Kejariwal, A., Donato, D., Madhugiri, M.: On the determination of inlining vectors for program optimization. In: Proceedings of 22nd International Conference on Compiler Construction, CC\u201913, pp. 164\u2013183. Springer, Berlin (2013). doi: 10.1007\/978-3-642-37051-9_9","DOI":"10.1007\/978-3-642-37051-9_9"},{"key":"320_CR14","doi-asserted-by":"crossref","unstructured":"Cocke, J.: Global common subexpression elimination. In: Proceedings of Symposium Compiler Optimization, pp. 20\u201324. Urbana-Champaign, IL (1970)","DOI":"10.1145\/800028.808480"},{"key":"320_CR15","volume-title":"Microprocessor Architectures: From VLIW to TTA","author":"H Corporaal","year":"1997","unstructured":"Corporaal, H.: Microprocessor Architectures: From VLIW to TTA. Wiley, Chichester (1997)"},{"issue":"4","key":"320_CR16","doi-asserted-by":"crossref","first-page":"451","DOI":"10.1145\/115372.115320","volume":"13","author":"R Cytron","year":"1991","unstructured":"Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. ACM Trans. Program. Lang. Syst. 13(4), 451\u2013490 (1991)","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"320_CR17","doi-asserted-by":"crossref","unstructured":"Esko, O., J\u00e4\u00e4skel\u00e4inen, P., Huerta, P., de La Lama, C.S., Takala, J., Martinez, J.I.: Customized exposed datapath soft-core design flow with compiler support. In: International Conference on Field Programmable Logic and Applications, pp. 217\u2013222. Milan, Italy (2010)","DOI":"10.1109\/FPL.2010.51"},{"issue":"7","key":"320_CR18","doi-asserted-by":"crossref","first-page":"478","DOI":"10.1109\/TC.1981.1675827","volume":"C\u201330","author":"J Fisher","year":"1981","unstructured":"Fisher, J.: Trace scheduling: a technique for global microcode compaction. IEEE Trans. Comput. C\u201330(7), 478\u2013490 (1981)","journal-title":"IEEE Trans. Comput."},{"key":"320_CR19","doi-asserted-by":"crossref","first-page":"5","DOI":"10.1145\/103162.103163","volume":"23","author":"D Goldberg","year":"1991","unstructured":"Goldberg, D.: What every computer scientist should know about floating-point arithmetic. ACM Comput. Surv. 23, 5\u201348 (1991)","journal-title":"ACM Comput. Surv."},{"key":"320_CR20","doi-asserted-by":"crossref","first-page":"10","DOI":"10.1109\/MM.2006.41","volume":"26","author":"M Gschwind","year":"2006","unstructured":"Gschwind, M., Hofstee, H.P., Flachs, B., Hopkins, M., Watanabe, Y., Yamazaki, T.: Synergistic processing in Cell\u2019s multicore architecture. IEEE Micro 26, 10\u201324 (2006)","journal-title":"IEEE Micro"},{"key":"320_CR21","doi-asserted-by":"crossref","unstructured":"Gummaraju, J., Morichetti, L., Houston, M., Sander, B., Gaster, B.R., Zheng, B.: Twin peaks: a software platform for heterogeneous computing on general-purpose and graphics processors. In: Proceedings of International Conference on Parallel Architectures and Compilation Techniques, pp. 205\u2013216. Vienna, Austria (2010)","DOI":"10.1145\/1854273.1854302"},{"key":"320_CR22","doi-asserted-by":"crossref","unstructured":"Gummaraju, J., Sander, B., Morichetti, L., Gaster, B., Howes, L.: Efficient implementation of GPGPU synchronization primitives on CPUs. In: Proceedings of ACM International Conference on Computing Frontiers, pp. 85\u201386. Bertinoro, Italy (2010)","DOI":"10.1145\/1787275.1787295"},{"key":"320_CR23","doi-asserted-by":"crossref","unstructured":"Hecht, M.S., Ullman, J.D.: Flow graph reducibility. In: Proceedings of Annual ACM Symposium on Theory of Computing, pp. 238\u2013250. Denver, CO (1972)","DOI":"10.1145\/800152.804919"},{"key":"320_CR24","unstructured":"IBM: OpenCL(TM) development kit for Linux on Power, v0.3 (2011)"},{"key":"320_CR25","unstructured":"IEEE, Piscataway, NJ: IEEE standard for information technology\u2014portable operation system interface (POSIX). Shell and utilities., 2004 edn. (2004). Std 1003.1"},{"key":"320_CR26","unstructured":"IEEE, Piscataway, NJ: Standard for floating-point arithmetic (2008). Std 754-2008"},{"key":"320_CR27","unstructured":"Intel Corp.: Desktop 4th Gen IntelCore\u2122 Processor Family: Datasheet, Vol. 1 (2013). Doc. No. 328897-004"},{"key":"320_CR28","unstructured":"J\u00e4\u00e4skel\u00e4inen, P., S\u00e1nchez de La Lama, C., Huerta, P., Takala, J.: OpenCL-based design methodology for application-specific processors. Trans. HiPEAC 5 (2011). http:\/\/www.hipeac.net\/node\/4310"},{"issue":"6","key":"320_CR29","doi-asserted-by":"crossref","first-page":"1031","DOI":"10.1145\/267959.269971","volume":"19","author":"J Janssen","year":"1997","unstructured":"Janssen, J., Corporaal, H.: Making graphs reducible with controlled node splitting. ACM Trans. Program. Lang. Syst. 19(6), 1031\u20131052 (1997)","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"320_CR30","doi-asserted-by":"crossref","unstructured":"Karrenberg, R., Hack, S.: Whole-function vectorization. In: Proceedings of Annual IEEE\/ACM International Symposium Code Generation and Optimization, pp. 141\u2013150. Chamonix, France (2011)","DOI":"10.1109\/CGO.2011.5764682"},{"key":"320_CR31","doi-asserted-by":"crossref","unstructured":"Karrenberg, R., Hack, S.: Improving performance of OpenCL on CPUs. In: Proceedings of International Conference on Compiler Construction, pp. 1\u201320. Tallinn, Estonia (2012)","DOI":"10.1007\/978-3-642-28652-0_1"},{"key":"320_CR32","doi-asserted-by":"crossref","unstructured":"Kejariwal, A., Nicolau, A., Saito, H., Tian, X., Girkar, M., Banerjee, U., Polychronopoulos, C.D.: A general approach for partitioning N-dimensional parallel nested loops with conditionals. In: Proceedings of 18th Annual ACM Symposium on Parallelism in Algorithms and Architectures, SPAA \u201906, pp. 49\u201358. ACM, New York, NY, USA (2006). doi: 10.1145\/1148109.1148117","DOI":"10.1145\/1148109.1148117"},{"key":"320_CR33","unstructured":"Khronos Group, Beaverton, OR: OpenCL Specification, v1.2r19 edn. (2012)"},{"key":"320_CR34","unstructured":"Khronos Group: SPIR 1.2 Specification for OpenCL (2014)"},{"key":"320_CR35","doi-asserted-by":"crossref","unstructured":"Lattner, C., Adve, V.: LLVM: A compilation framework for lifelong program analysis and transformation. In: Proceedings of International Symposium on Code Generation Optimization, p. 75 (2004)","DOI":"10.1109\/CGO.2004.1281665"},{"key":"320_CR36","doi-asserted-by":"crossref","unstructured":"Lee, J., Kim, J., Seo, S., Kim, S., Park, J., Kim, H., Dao, T.T., Cho, Y., Seo, S.J., Lee, S.H., Cho, S.M., Song, H.J., Suh, S.B., Choi, J.D.: An OpenCL framework for heterogeneous multicores with local memory. In: Proceedings of the 19th International Conference on Parallel Architectures and Compilation Techniques, PACT \u201910, pp. 193\u2013204. ACM, New York, NY, USA (2010). doi: 10.1145\/1854273.1854301","DOI":"10.1145\/1854273.1854301"},{"key":"320_CR37","doi-asserted-by":"crossref","unstructured":"Maher, B.A., Smith, A., Burger, D., McKinley, K.S.: Merging head and tail duplication for convergent hyperblock formation. In: Proceedings of Annual IEEE\/ACM International Symposium on Microarchitecture, pp. 65\u201376. Orlando, FL (2006)","DOI":"10.1109\/MICRO.2006.34"},{"key":"320_CR38","volume-title":"Elementary Functions: Algorithms and Implementation","author":"JM Muller","year":"2006","unstructured":"Muller, J.M.: Elementary Functions: Algorithms and Implementation. Birkh\u00e4user, London (2006)"},{"key":"320_CR39","doi-asserted-by":"crossref","unstructured":"Nicolau, A., Li, G., Kejariwal, A.: Techniques for efficient placement of synchronization primitives. In: Proceedings of the 14th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP \u201909, pp. 199\u2013208. ACM, New York, NY, USA (2009). doi: 10.1145\/1504176.1504207","DOI":"10.1145\/1504176.1504207"},{"key":"320_CR40","doi-asserted-by":"crossref","unstructured":"Nicolau, A., Li, G., Veidenbaum, A.V., Kejariwal, A.: Synchronization optimizations for efficient execution on multi-cores. In: Proceedings of the 23rd International Conference on Supercomputing, ICS \u201909, pp. 169\u2013180. ACM, New York, NY, USA (2009). doi: 10.1145\/1542275.1542303","DOI":"10.1145\/1542275.1542303"},{"key":"320_CR41","unstructured":"Nvidia Corp., Santa Clara, CA: NVIDIA CUDA Compute Unified Device Architecture: Programming Guide, v2.0 edn. (2008)"},{"key":"320_CR42","volume-title":"Numerical Recipes 3rd Edition: The Art of Scientific Computing","author":"WH Press","year":"2007","unstructured":"Press, W.H., Teukolsky, S.A., Vetterling, W.T., Flannery, B.P.: Numerical Recipes 3rd Edition: The Art of Scientific Computing. Cambridge University Press, Cambridge (2007)"},{"key":"320_CR43","unstructured":"Rotem, N.: Intel OpenCL SDK vectorizer. LLVM Developer\u2019s Meeting (2011)"},{"key":"320_CR44","unstructured":"Schnetter, E.: Vecmathlib. http:\/\/bitbucket.org\/eschnett\/vecmathlib . Online; Accessed 5 Feb 2014"},{"key":"320_CR45","doi-asserted-by":"crossref","unstructured":"Shibata, N.: Efficient evaluation methods of elementary functions suitable for SIMD computation. In: Journal of Computer Science on Research and Development, Proceedings of the International Supercomputing Conference ISC10, vol. 25, pp. 25\u201332 (2010). doi: 10.1007\/s00450-010-0108-2","DOI":"10.1007\/s00450-010-0108-2"},{"key":"320_CR46","unstructured":"Shibata, N.: SLEEF (SIMD library for evaluating elementary functions). Web Site (2013). http:\/\/shibatch.sourceforge.net\/"},{"key":"320_CR47","doi-asserted-by":"crossref","unstructured":"Stratton, J.A., Stone, S.S., Hwu, W.M.W.: MCUDA: an efficient implementation of CUDA kernels for multi-core CPUs. In: J.N. Amaral (ed.) Languages and Compilers for Parallel Computing, LNCS, vol. 5335, pp. 16\u201330. Springer, Berlin (2008). doi: 10.1007\/978-3-540-89740-8_2","DOI":"10.1007\/978-3-540-89740-8_2"}],"container-title":["International Journal of Parallel Programming"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-014-0320-y.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s10766-014-0320-y\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-014-0320-y","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,5,30]],"date-time":"2019-05-30T19:59:30Z","timestamp":1559246370000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/s10766-014-0320-y"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2014,8,19]]},"references-count":47,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2015,10]]}},"alternative-id":["320"],"URL":"https:\/\/doi.org\/10.1007\/s10766-014-0320-y","relation":{},"ISSN":["0885-7458","1573-7640"],"issn-type":[{"value":"0885-7458","type":"print"},{"value":"1573-7640","type":"electronic"}],"subject":[],"published":{"date-parts":[[2014,8,19]]}}}