{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,19]],"date-time":"2025-10-19T15:53:11Z","timestamp":1760889191593,"version":"3.41.0"},"reference-count":49,"publisher":"Springer Science and Business Media LLC","issue":"3","license":[{"start":{"date-parts":[[2016,5,13]],"date-time":"2016-05-13T00:00:00Z","timestamp":1463097600000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"funder":[{"DOI":"10.13039\/501100004919","name":"King Abdulaziz City for Science and Technology (SA)","doi-asserted-by":"publisher","award":["12-INF3008-04"],"award-info":[{"award-number":["12-INF3008-04"]}],"id":[{"id":"10.13039\/501100004919","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Int J Parallel Prog"],"published-print":{"date-parts":[[2017,6]]},"DOI":"10.1007\/s10766-016-0433-6","type":"journal-article","created":{"date-parts":[[2016,5,13]],"date-time":"2016-05-13T10:52:08Z","timestamp":1463136728000},"page":"551-594","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":4,"title":["RT-CUDA: A Software Tool for CUDA Code Restructuring"],"prefix":"10.1007","volume":"45","author":[{"given":"Ayaz H.","family":"Khan","sequence":"first","affiliation":[]},{"given":"Mayez","family":"Al-Mouhamed","sequence":"additional","affiliation":[]},{"given":"Muhammed","family":"Al-Mulhem","sequence":"additional","affiliation":[]},{"given":"Adel F.","family":"Ahmed","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2016,5,13]]},"reference":[{"key":"433_CR1","doi-asserted-by":"crossref","unstructured":"Beyer, J.C., Stotzer, E.J., Hart, A., de\u00a0Supinski, B.R.: Openmp for accelerators. In: Chapman, B.M., Gropp, W.D., Kumaran, K., M\u00fcller, M.S. (eds.) OpenMP in the Petascale Era, IWOMP, Lecture Notes in Computer Science, pp. 108\u2013121. Springer, Berlin (2011)","DOI":"10.1007\/978-3-642-21487-5_9"},{"issue":"6","key":"433_CR2","doi-asserted-by":"publisher","first-page":"101","DOI":"10.1145\/1379022.1375595","volume":"43","author":"U Bondhugula","year":"2008","unstructured":"Bondhugula, U., Hartono, A., Ramanujam, J., Sadayappan, P.: A practical automatic polyhedral parallelizer and locality optimizer. SIGPLAN Not. 43(6), 101\u2013113 (2008). doi: 10.1145\/1379022.1375595","journal-title":"SIGPLAN Not."},{"key":"433_CR3","doi-asserted-by":"publisher","unstructured":"van\u00a0den Braak, G., Mesman, B., Corporaal, H.: Compile-time gpu memory access optimizations. In: Embedded Computer Systems (SAMOS), 2010 International Conference on, pp. 200\u2013207 (2010). doi: 10.1109\/ICSAMOS.2010.5642066","DOI":"10.1109\/ICSAMOS.2010.5642066"},{"issue":"3","key":"433_CR4","doi-asserted-by":"publisher","first-page":"777","DOI":"10.1145\/1015706.1015800","volume":"23","author":"I Buck","year":"2004","unstructured":"Buck, I., Foley, T., Horn, D., Sugerman, J., Fatahalian, K., Houston, M., Hanrahan, P.: Brook for GPUs: stream computing on graphics hardware. ACM Trans. Graph. 23(3), 777\u2013786 (2004). doi: 10.1145\/1015706.1015800","journal-title":"ACM Trans. Graph."},{"key":"433_CR5","doi-asserted-by":"crossref","unstructured":"Chen, C., Chame, J., Hall, M.: Combining models and guided empirical search to optimize for multiple levels of the memory hierarchy. In: International Symposium on Code Generation and Optimization (2005)","DOI":"10.1109\/CGO.2005.10"},{"key":"433_CR6","doi-asserted-by":"crossref","DOI":"10.1007\/978-3-662-04722-4","volume-title":"The Design of Rijndael: AES\u2014the Advanced Encryption Standard","author":"J Daemen","year":"2002","unstructured":"Daemen, J., Rijmen, V.: The Design of Rijndael: AES\u2014the Advanced Encryption Standard. Springer, Berlin (2002)"},{"issue":"1","key":"433_CR7","doi-asserted-by":"publisher","first-page":"46","DOI":"10.1109\/99.660313","volume":"5","author":"L Dagum","year":"1998","unstructured":"Dagum, L., Menon, R.: OpenMP: an industry-standard API for shared-memory programming. IEEE Comput. Sci. Eng. 5(1), 46\u201355 (1998). doi: 10.1109\/99.660313","journal-title":"IEEE Comput. Sci. Eng."},{"issue":"1","key":"433_CR8","doi-asserted-by":"publisher","first-page":"1:1","DOI":"10.1145\/2049662.2049663","volume":"38","author":"TA Davis","year":"2011","unstructured":"Davis, T.A., Hu, Y.: The university of florida sparse matrix collection. ACM Trans. Math. Softw. 38(1), 1:1\u20131:25 (2011). doi: 10.1145\/2049662.2049663","journal-title":"ACM Trans. Math. Softw."},{"issue":"8","key":"433_CR9","doi-asserted-by":"publisher","first-page":"3","DOI":"10.1145\/368892.368907","volume":"1","author":"AP Ershov","year":"1958","unstructured":"Ershov, A.P.: On programming of arithmetic operations. Commun. ACM 1(8), 3\u20136 (1958). doi: 10.1145\/368892.368907","journal-title":"Commun. ACM"},{"key":"433_CR10","doi-asserted-by":"publisher","unstructured":"Farivar, R., Campbell, R.: Plasma: shared memory dynamic allocation and bank-conflict-free access in gpus. In: Parallel Processing Workshops (ICPPW), 2012 41st International Conference on, pp. 612\u2013613 (2012). doi: 10.1109\/ICPPW.2012.94","DOI":"10.1109\/ICPPW.2012.94"},{"issue":"2","key":"433_CR11","doi-asserted-by":"publisher","first-page":"8:1","DOI":"10.1145\/2166879.2166882","volume":"30","author":"M Gebhart","year":"2012","unstructured":"Gebhart, M., Johnson, D.R., Tarjan, D., Keckler, S.W., Dally, W.J., Lindholm, E., Skadron, K.: A hierarchical thread scheduler and register file for energy-efficient throughput processors. ACM Trans. Comput. Syst. 30(2), 8:1\u20138:38 (2012). doi: 10.1145\/2166879.2166882","journal-title":"ACM Trans. Comput. Syst."},{"key":"433_CR12","unstructured":"Gray, A., Sjostrom, A., Llieva-Litova, N.: Best practice mini-guide accelerated clusters: using general purpose gpus. Tech. rep., University of Warsaw (2013)"},{"key":"433_CR13","first-page":"320","volume-title":"DISC, Lecture Notes in Computer Science","author":"PH Ha","year":"2008","unstructured":"Ha, P.H., Tsigas, P., Anshus, O.J.: The synchronization power of coalesced memory accesses. In: Taubenfeld, G. (ed.) DISC, Lecture Notes in Computer Science, vol. 5218, pp. 320\u2013334. Springer, Berlin (2008)"},{"key":"433_CR14","doi-asserted-by":"publisher","unstructured":"Han, T.D., Abdelrahman, T.S.: hicuda: a high-level directive-based language for gpu programming. In: Proceedings of 2nd Workshop on General Purpose Processing on Graphics Processing Units, GPGPU-2, pp. 52\u201361. ACM, New York (2009). doi: 10.1145\/1513895.1513902","DOI":"10.1145\/1513895.1513902"},{"key":"433_CR15","unstructured":"Harris, M.: Optimizing Parallel Reduction in CUDA. Tech. rep., nVidia (2008). http:\/\/developer.download.nvidia.com\/assets\/cuda\/files\/reduction.pdf"},{"key":"433_CR16","volume-title":"Computer Architecture: A Quantitative Approach","author":"J Hennessy","year":"2012","unstructured":"Hennessy, J., Patterson, D., Asanovi\u0107, K.: Computer Architecture: A Quantitative Approach. Morgan Kaufmann\/Elsevier, Los Altos\/Amsterdam (2012)"},{"key":"433_CR17","doi-asserted-by":"crossref","unstructured":"Ikeda, T., Ino, F., Hagihara, K.: A code motion technique for accelerating generalpurpose computation on the gpu. In: Proceedings of the International Parallel and Distributed Processing Symposium, pp. 1\u201310 (2006)","DOI":"10.1109\/IPDPS.2006.1639323"},{"key":"433_CR18","unstructured":"Jackson, A., Agathokleous, O.: Dynamic loop parallelisation. CoRR arXiv:1205.2367 (2012)"},{"key":"433_CR19","doi-asserted-by":"publisher","unstructured":"Kasichayanula, K., Terpstra, D., Luszczek, P., Tomov, S., Moore, S., Peterson, G.: Power aware computing on gpus. In: Application Accelerators in High Performance Computing (SAAHPC), 2012 Symposium on, pp. 64\u201373 (2012). doi: 10.1109\/SAAHPC.2012.26","DOI":"10.1109\/SAAHPC.2012.26"},{"key":"433_CR20","doi-asserted-by":"publisher","unstructured":"Khan, A., Al-Mouhamed, M., Fatayar, A., Almousa, A., Baqais, A., Assayony, M.: Padding free bank conflict resolution for cuda-based matrix transpose algorithm. In: Software Engineering, Artificial Intelligence, Networking and Parallel\/Distributed Computing (SNPD), 2014 15th IEEE\/ACIS International Conference on, pp. 1\u20136 (2014). doi: 10.1109\/SNPD.2014.6888709","DOI":"10.1109\/SNPD.2014.6888709"},{"key":"433_CR21","doi-asserted-by":"crossref","unstructured":"Khan, A.H., Al-Mouhamed, M., Fatayer, A., Mohammad, N.: Optimizing the matrix multiply using strassen and winograd algorithms with limited recursions on many core. To appear in International Journal of Parallel Programming (IJPP) (2015)","DOI":"10.1007\/s10766-015-0378-1"},{"issue":"4","key":"433_CR22","doi-asserted-by":"publisher","first-page":"31:1","DOI":"10.1145\/2400682.2400690","volume":"9","author":"M Khan","year":"2013","unstructured":"Khan, M., Basu, P., Rudy, G., Hall, M., Chen, C., Chame, J.: A script-based autotuning compiler system to generate high-performance cuda code. ACM Trans. Archit. Code Optim. 9(4), 31:1\u201331:25 (2013). doi: 10.1145\/2400682.2400690","journal-title":"ACM Trans. Archit. Code Optim."},{"issue":"1","key":"433_CR23","doi-asserted-by":"crossref","first-page":"4","DOI":"10.1504\/IJCSE.2013.052110","volume":"8","author":"S Lee","year":"2013","unstructured":"Lee, S., Eigenmann, R.: OpenMPC: extended openMP for efficient programming and tuning on GPUs. Int. J. Comput. Sci. Eng. (IJCSE) 8(1), 4\u201320 (2013)","journal-title":"Int. J. Comput. Sci. Eng. (IJCSE)"},{"issue":"4","key":"433_CR24","doi-asserted-by":"publisher","first-page":"101","DOI":"10.1145\/1594835.1504194","volume":"44","author":"S Lee","year":"2009","unstructured":"Lee, S., Min, S.J., Eigenmann, R.: OpenMP to GPGPU: a compiler framework for automatic translation and optimization. SIGPLAN Not. 44(4), 101\u2013110 (2009). doi: 10.1145\/1594835.1504194","journal-title":"SIGPLAN Not."},{"key":"433_CR25","doi-asserted-by":"crossref","unstructured":"Leung, A., Vasilache, N., Meister, B., Baskaran, M.M., Wohlford, D., Bastoul, C., Lethin, R.: A mapping path for multi-gpgpu accelerated computers from a portable high level programming abstraction. In: Proceedings of 3rd Workshop on General Purpose Processing on Graphics Processing Units (GPGPU), pp. 51\u201361 (2010)","DOI":"10.1145\/1735688.1735698"},{"key":"433_CR26","doi-asserted-by":"crossref","unstructured":"Liao, S.W., Du, Z., Wu, G., Lueh, G.Y.: Data and computation transformations for brook streaming applications on multiprocessors. In: Fourth IEEE\/ACM International Symposium on Code Generation and Optimization (CGO), pp. 196\u2013207 (2006)","DOI":"10.1109\/CGO.2006.13"},{"key":"433_CR27","doi-asserted-by":"crossref","unstructured":"Liu, W., Vinter, B.: An efficient GPU general sparse matrix-matrix multiplication for irregular data. In: Proceedings of the IEEE 28th International Symposium on Parallel Distributed Processing, IPDPS14 (2014)","DOI":"10.1109\/IPDPS.2014.47"},{"key":"433_CR28","doi-asserted-by":"publisher","unstructured":"Murthy, G., Ravishankar, M., Baskaran, M., Sadayappan, P.: Optimal loop unrolling for gpgpu programs. In: Parallel Distributed Processing (IPDPS), 2010 IEEE International Symposium on, pp. 1\u201311 (2010). doi: 10.1109\/IPDPS.2010.5470423","DOI":"10.1109\/IPDPS.2010.5470423"},{"key":"433_CR29","unstructured":"Nugteren, C.: Improving the programmability of GPU architectures. Ph.D. thesis, Department of Electrical Engineering, Eindhoven University of Technology (2014)"},{"key":"433_CR30","unstructured":"NVIDIA: Nvidias next generation cuda computer architecture kepler gk110. Whitepaper, NVIDIA Corporation (2013)"},{"key":"433_CR31","unstructured":"NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara 95050, USA: CUDA C Best Practices Guide, 4.0 edn. (2011)"},{"key":"433_CR32","unstructured":"NVIDIA Corporation: NVIDIA CUDA C Programming Guide (2011)"},{"key":"433_CR33","unstructured":"OpenMP: The openmpapi specification for parallel programming (2013). http:\/\/openmp.org\/wp\/"},{"key":"433_CR34","doi-asserted-by":"crossref","unstructured":"Peercy, M., Segal, M., Gerstmann, D.: A performance-oriented data parallel virtual machine for GPUs. In: SIGGRAPH \u201906: ACM SIGGRAPH 2006 Sketches, p. 184. ACM, New York (2006)","DOI":"10.1145\/1179849.1180079"},{"key":"433_CR35","unstructured":"PGI: Portland group (2013). http:\/\/www.pgroup.com\/resources\/accel.htm"},{"key":"433_CR36","doi-asserted-by":"crossref","unstructured":"Ryoo, S., Rodrigues, C.I., Baghsorkhi, S.S., Stone, S.S., Kirk, D.B., Hwu, W.M.W.: Optimization principles and application performance evaluation of a multithreaded GPU using CUDA. In: PPOPP, pp. 73\u201382 (2008)","DOI":"10.1145\/1345206.1345220"},{"key":"433_CR37","unstructured":"Standards of N.I., Technology: Text file formats. http:\/\/math.nist.gov\/MatrixMarket\/formats.html . Accessed: 19 Nov 2014"},{"key":"433_CR38","unstructured":"Tojo, N., Tanabe, K., Matsuzaki, H.: Program conversion apparatus and computer readable medium (2014). US Patent 8,732,684"},{"key":"433_CR39","unstructured":"Tuning cuda applications for kepler. http:\/\/docs.nvidia.com\/cuda\/kepler-tuning-guide\/index.html . Accessed: 10-06-2013"},{"key":"433_CR40","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/978-3-540-89740-8_1","volume-title":"Languages and Compilers for Parallel Computing","author":"SZ Ueng","year":"2008","unstructured":"Ueng, S.Z., Lathara, M., Baghsorkhi, S.S., Hwu, W.M.W.: CUDA-lite: reducing GPU programming complexity. In: Amaral, J.N. (ed.) Languages and Compilers for Parallel Computing, pp. 1\u201315. Springer, Berlin (2008). doi: 10.1007\/978-3-540-89740-8_1"},{"key":"433_CR41","doi-asserted-by":"crossref","unstructured":"Volkov, V., Demmel, J.: Benchmarking GPUs to tune dense linear algebra. In: Proceedings of the ACM\/IEEE Conference on High Performance Computing, p.\u00a031 (2008)","DOI":"10.1109\/SC.2008.5214359"},{"key":"433_CR42","doi-asserted-by":"publisher","unstructured":"Wakatani, A.: Effectiveness of a strip-mining approach for vq image coding using gpgpu implementation. In: Image and Vision Computing New Zealand, 2009. IVCNZ \u201909. 24th International Conference, pp. 35\u201338 (2009). doi: 10.1109\/IVCNZ.2009.5378382","DOI":"10.1109\/IVCNZ.2009.5378382"},{"key":"433_CR43","doi-asserted-by":"publisher","unstructured":"Wang, G.: Coordinate strip-mining and kernel fusion to lower power consumption on GPU. In: Design, Automation Test in Europe Conference Exhibition (DATE), 2011, pp. 1\u20134 (2011). doi: 10.1109\/DATE.2011.5763317","DOI":"10.1109\/DATE.2011.5763317"},{"key":"433_CR44","volume-title":"The CUDA Handbook: A Comprehensive Guide to GPU Programming","author":"N Wilt","year":"2013","unstructured":"Wilt, N.: The CUDA Handbook: A Comprehensive Guide to GPU Programming. Addison-Wesley, Reading (2013)"},{"key":"433_CR45","doi-asserted-by":"crossref","unstructured":"Xiao, S., Feng, W.C.: Inter-block GPU communication via fast barrier synchronization. In: IPDPS, pp. 1\u201312 (2010)","DOI":"10.1109\/IPDPS.2010.5470477"},{"key":"433_CR46","doi-asserted-by":"publisher","unstructured":"Xu, Q., Jeon, H., Annavaram, M.: Graph processing on GPUs: Where are the bottlenecks? In: Workload Characterization (IISWC), 2014 IEEE International Symposium on, pp. 140\u2013149 (2014). doi: 10.1109\/IISWC.2014.6983053","DOI":"10.1109\/IISWC.2014.6983053"},{"key":"433_CR47","doi-asserted-by":"crossref","unstructured":"Yang, Y., Xiang, P., Kong, J., Zhou, H.: A GPGPU compiler for memory optimization and parallelism management. In: Proceedings of the 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pp. 86\u201397 (2010)","DOI":"10.1145\/1806596.1806606"},{"issue":"6","key":"433_CR48","doi-asserted-by":"crossref","first-page":"768","DOI":"10.1007\/s10766-012-0228-3","volume":"41","author":"Y Yang","year":"2013","unstructured":"Yang, Y., Zhou, H.: The implementation of a high performance GPGPU compiler. Int. J. Parallel Program. 41(6), 768\u2013781 (2013)","journal-title":"Int. J. Parallel Program."},{"key":"433_CR49","doi-asserted-by":"publisher","unstructured":"Ye, D., Titov, A., Kindratenko, V., Ufimtsev, I., Martinez, T.: Porting optimized GPU kernels to a multi-core CPU: computational quantum chemistry application example. In: Application Accelerators in High-Performance Computing (SAAHPC), 2011 Symposium on, pp. 72\u201375 (2011). doi: 10.1109\/SAAHPC.2011.8","DOI":"10.1109\/SAAHPC.2011.8"}],"container-title":["International Journal of Parallel Programming"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-016-0433-6.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s10766-016-0433-6\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-016-0433-6","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-016-0433-6.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,3]],"date-time":"2025-06-03T04:36:22Z","timestamp":1748925382000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/s10766-016-0433-6"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2016,5,13]]},"references-count":49,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2017,6]]}},"alternative-id":["433"],"URL":"https:\/\/doi.org\/10.1007\/s10766-016-0433-6","relation":{},"ISSN":["0885-7458","1573-7640"],"issn-type":[{"type":"print","value":"0885-7458"},{"type":"electronic","value":"1573-7640"}],"subject":[],"published":{"date-parts":[[2016,5,13]]}}}