{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,15]],"date-time":"2026-05-15T15:04:04Z","timestamp":1778857444277,"version":"3.51.4"},"reference-count":23,"publisher":"MDPI AG","issue":"5","license":[{"start":{"date-parts":[[2023,5,11]],"date-time":"2023-05-11T00:00:00Z","timestamp":1683763200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"PRODEP","award":["30526"],"award-info":[{"award-number":["30526"]}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Computation"],"abstract":"<jats:p>In the big data era, processing large amounts of data imposes several challenges, mainly in terms of performance. Complex operations in data science, such as deep learning, large-scale simulations, and visualization applications, can consume a significant amount of computing time. Heterogeneous computing is an attractive alternative for algorithm acceleration, using not one but several different kinds of computing devices (CPUs, GPUs, or FPGAs) simultaneously. Accelerating an algorithm for a specific device under a specific framework, i.e., CUDA\/GPU, provides a solution with the highest possible performance at the cost of a loss in generality and requires an experienced programmer. On the contrary, heterogeneous computing allows one to hide the details pertaining to the simultaneous use of different technologies in order to accelerate computation. However, effective heterogeneous computing implementation still requires mastering the underlying design flow. Aiming to fill this gap, in this paper we present a heterogeneous computing platform (HCP). Regarding its main features, this platform allows non-experts in heterogeneous computing to deploy, run, and evaluate high-computational-demand algorithms following a semi-automatic design flow. Given the implementation of an algorithm in C with minimal format requirements, the platform automatically generates the parallel code using a code analyzer, which is adapted to target a set of available computing devices. Thus, while an experienced heterogeneous computing programmer is not required, the process can run over the available computing devices on the platform as it is not an ad hoc solution for a specific computing device. The proposed HCP relies on the OpenCL specification for interoperability and generality. The platform was validated and evaluated in terms of generality and efficiency through a set of experiments using the algorithms of the Polybench\/C suite (version 3.2) as the input. Different configurations for the platform were used, considering CPUs only, GPUs only, and a combination of both. The results revealed that the proposed HCP was able to achieve accelerations of up to 270\u00d7 for specific classes of algorithms, i.e., parallel-friendly algorithms, while its use required almost no expertise in either OpenCL or heterogeneous computing from the programmer\/end-user.<\/jats:p>","DOI":"10.3390\/computation11050097","type":"journal-article","created":{"date-parts":[[2023,5,12]],"date-time":"2023-05-12T02:36:59Z","timestamp":1683859019000},"page":"97","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":5,"title":["A Flexible and General-Purpose Platform for Heterogeneous Computing"],"prefix":"10.3390","volume":"11","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-1249-5413","authenticated-orcid":false,"given":"Jose Juan","family":"Garcia-Hernandez","sequence":"first","affiliation":[{"name":"Center for Research and Advanced Studies of the IPN-CINVESTAV, Unidad Tamaulipas, Ciudad Victoria 87130, Mexico"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1702-8467","authenticated-orcid":false,"given":"Miguel","family":"Morales-Sandoval","sequence":"additional","affiliation":[{"name":"Center for Research and Advanced Studies of the IPN-CINVESTAV, Unidad Tamaulipas, Ciudad Victoria 87130, Mexico"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Erick","family":"Elizondo-Rodr\u00edguez","sequence":"additional","affiliation":[{"name":"Center for Research and Advanced Studies of the IPN-CINVESTAV, Unidad Tamaulipas, Ciudad Victoria 87130, Mexico"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"1968","published-online":{"date-parts":[[2023,5,11]]},"reference":[{"key":"ref_1","doi-asserted-by":"crossref","unstructured":"Alzeini, H.I., Hameed, S.A., and Habaebi, M.H. (2013, January 25\u201327). Optimizing OLAP heterogeneous computing based on Rabin-Karp Algorithm. Proceedings of the 2013 IEEE International Conference on Smart Instrumentation, Measurement and Applications (ICSIMA), Kuala Lumpur, Malaysia.","DOI":"10.1109\/ICSIMA.2013.6717967"},{"key":"ref_2","doi-asserted-by":"crossref","unstructured":"Yoo, K.H., Leung, C.K., and Nasridinov, A. (2022). Big Data Analysis and Visualization: Challenges and Solutions. Appl. Sci., 12.","DOI":"10.3390\/app12168248"},{"key":"ref_3","first-page":"65","article-title":"Demystifying Parallel and Distributed Deep Learning: An In-Depth Concurrency Analysis","volume":"52","author":"Hoefler","year":"2019","journal-title":"ACM Comput. Surv."},{"key":"ref_4","doi-asserted-by":"crossref","unstructured":"Liu, Q., Qin, Y., and Li, G. (2018). Fast Simulation of Large-Scale Floods Based on GPU Parallel Computing. Water, 10.","DOI":"10.3390\/w10050589"},{"key":"ref_5","doi-asserted-by":"crossref","first-page":"174692","DOI":"10.1109\/ACCESS.2020.3024098","article-title":"Towards automatic high-level code deployment on reconfigurable platforms: A survey of high-level synthesis tools and toolchains","volume":"8","author":"Numan","year":"2020","journal-title":"IEEE Access"},{"key":"ref_6","first-page":"2015","article-title":"PyLog: An Algorithm-Centric Python-Based FPGA Programming and Synthesis Flow","volume":"70","author":"Huang","year":"2021","journal-title":"IEEE Trans. Comput."},{"key":"ref_7","doi-asserted-by":"crossref","first-page":"1449","DOI":"10.1007\/s11227-017-2213-5","article-title":"Python accelerators for high-performance computing","volume":"74","author":"Marowka","year":"2018","journal-title":"J. Supercomput."},{"key":"ref_8","doi-asserted-by":"crossref","first-page":"741","DOI":"10.1109\/TCAD.2018.2818689","article-title":"RegionSeeker: Automatically Identifying and Selecting Accelerators From Application Source Code","volume":"38","author":"Zacharopoulos","year":"2019","journal-title":"IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst."},{"key":"ref_9","first-page":"3074","article-title":"End-to-End Synthesis of Dynamically Controlled Machine Learning Accelerators","volume":"71","author":"Curzel","year":"2022","journal-title":"IEEE Trans. Comput."},{"key":"ref_10","doi-asserted-by":"crossref","unstructured":"Wang, S., Prakash, A., and Mitra, T. (2018, January 8\u201311). Software support for heterogeneous computing. Proceedings of the 2018 IEEE Computer Society Annual Symposium on VLSI (ISVLSI), Hong Kong, China.","DOI":"10.1109\/ISVLSI.2018.00142"},{"key":"ref_11","doi-asserted-by":"crossref","unstructured":"Ivutin, A.N., Voloshko, A.G., and Novikov, A.S. (2020, January 8\u201311). Optimization Problem for Heterogeneous Computing Systems. Proceedings of the 2020 9th Mediterranean Conference on Embedded Computing (MECO), Budva, Montenegro.","DOI":"10.1109\/MECO49872.2020.9134172"},{"key":"ref_12","doi-asserted-by":"crossref","unstructured":"Garcia-Hernandez, J.J., Morales-Sandoval, M., and Elizondo-Rodriguez, E. (A Flexible and General-Purpose Platform for Heterogeneous Computing, 2023). A Flexible and General-Purpose Platform for Heterogeneous Computing, version 1.0.","DOI":"10.3390\/computation11050097"},{"key":"ref_13","doi-asserted-by":"crossref","first-page":"3228","DOI":"10.1016\/j.jpdc.2014.08.002","article-title":"A uniform approach for programming distributed heterogeneous computing systems","volume":"74","author":"Grasso","year":"2014","journal-title":"J. Parallel Distrib. Comput."},{"key":"ref_14","doi-asserted-by":"crossref","unstructured":"Haidl, M., and Gorlatch, S. (2014, January 16\u201321). PACXX: Towards a unified programming model for programming accelerators using C++ 14. Proceedings of the 2014 LLVM Compiler Infrastructure in HPC, New Orleans, LA, USA.","DOI":"10.1109\/LLVM-HPC.2014.9"},{"key":"ref_15","doi-asserted-by":"crossref","first-page":"e5728","DOI":"10.1002\/cpe.5728","article-title":"Heterogeneous computing with OpenMP and Hydra","volume":"32","author":"Diener","year":"2020","journal-title":"Concurr. Comput. Pract. Exp."},{"key":"ref_16","doi-asserted-by":"crossref","first-page":"213","DOI":"10.1007\/s10766-018-0555-0","article-title":"Heterogeneous parallel_for template for CPU\u2013GPU chips","volume":"47","author":"Navarro","year":"2019","journal-title":"Int. J. Parallel Program."},{"key":"ref_17","doi-asserted-by":"crossref","first-page":"e4664","DOI":"10.1002\/cpe.4664","article-title":"Heterogeneous distributed computing based on high-level abstractions","volume":"30","author":"Fraguela","year":"2018","journal-title":"Concurr. Comput. Pract. Exp."},{"key":"ref_18","doi-asserted-by":"crossref","unstructured":"Zheng, S., Liang, Y., Wang, S., Chen, R., and Sheng, K. (2020, January 16\u201320). FlexTensor: An Automatic Schedule Exploration and Optimization Framework for Tensor Computation on Heterogeneous System. Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems, Lausanne, Switzerland.","DOI":"10.1145\/3373376.3378508"},{"key":"ref_19","doi-asserted-by":"crossref","first-page":"382","DOI":"10.1007\/s42514-020-00039-4","article-title":"Parallel programming models for heterogeneous many-cores: A comprehensive survey","volume":"2","author":"Fang","year":"2020","journal-title":"CCF Trans. High Perform. Comput."},{"key":"ref_20","first-page":"54","article-title":"Polyhedral parallel code generation for CUDA","volume":"9","author":"Verdoolaege","year":"2013","journal-title":"ACM Trans. Archit. Code Optim. TACO"},{"key":"ref_21","unstructured":"Verdoolaege, S., and Grosser, T. (2012, January 23\u201325). Polyhedral extraction tool. Proceedings of the Second International Workshop on Polyhedral Compilation Techniques (IMPACT\u201912), Paris, France."},{"key":"ref_22","unstructured":"Free Software Foundation, Inc. (2021, September 21). GCC, the GNU Compiler Collection. Available online: https:\/\/gcc.gnu.org\/."},{"key":"ref_23","unstructured":"Pouchet, L.N., and Yuki, T. (2023, May 09). Polybench: The Polyhedral Benchmark Suite. Available online: https:\/\/github.com\/MatthiasJReisinger\/PolyBenchC-4.2.1."}],"container-title":["Computation"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/2079-3197\/11\/5\/97\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T19:33:13Z","timestamp":1760124793000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/2079-3197\/11\/5\/97"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,5,11]]},"references-count":23,"journal-issue":{"issue":"5","published-online":{"date-parts":[[2023,5]]}},"alternative-id":["computation11050097"],"URL":"https:\/\/doi.org\/10.3390\/computation11050097","relation":{},"ISSN":["2079-3197"],"issn-type":[{"value":"2079-3197","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,5,11]]}}}