研究生: |
陳泰良 Chen, Tai-Liang |
---|---|
論文名稱: |
人工智慧模型的開放計算語言C++和Blockly計算之最佳化研究 OpenCL C++ and Blockly Compute for AI Models |
指導教授: |
李政崑
Lee, Jenq-Kuen |
口試委員: |
張志偉
Chang, Chih-Wei 蘇泓萌 Su, Hong-Men 陳呈瑋 Chen, Cheng-Wei 陳鵬升 Chen, Peng-Sheng 賴尚宏 Lai, Shang-Hong 邱瀞德 Chiu, Ching-Te 周百祥 Chou, Pai-Hsiang |
學位類別: |
博士 Doctor |
系所名稱: |
電機資訊學院 - 資訊工程學系 Computer Science |
論文出版年: | 2022 |
畢業學年度: | 110 |
語文別: | 英文 |
論文頁數: | 137 |
中文關鍵詞: | 人工智慧 、深度學習 、抽象化 、Blockly 、TVM 、藍牙 、函式庫 、開放計算語言 、平行計算 、C++ 、最佳化 |
外文關鍵詞: | Artificial Intelligence, Deep Learning, Abstraction, Blockly, TVM, Bluetooth, Library, OpenCL, Parallel Computing, C++, Optimization |
相關次數: | 點閱:2 下載:0 |
分享至: |
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
人工智慧在現今資訊技術中有著重要的發展地位,藉由各式深度學習平台訓練產生的人工智慧模型,已逐漸使用在現代日常生活的辨識應用中。在人工智慧計算的發展過程中,透過合適的程式語言來開發深度學習應用,並嘗試最佳化底層平行計算的執行,是人工智慧計算應用的關鍵。然而,在高度複雜的深度學習開發環境及其底層平行計算,都需要足夠的專業知識來操作。對具備基礎程式觀念的初學者來說,學習人工智慧領域仍然需要在軟體學習和應用開發上付出很大的時間成本。當前初學者在面對缺乏抽象化設計的人工智慧計算環境,想要短時間掌握專業知識和系統架構會面臨巨大的挑戰。
本論文將為深度學習平台介紹有關Blockly compute和平行計算的兩個抽象化方法來解決上述挑戰。一種是針對深度學習平台的應用層面,提出可建構並堆疊視覺化block的塊設計策略的方法。這些策略為專業領域的複雜程式結構或應用系統的界面架構找到並分解合適的結構特徵來設計出對應的block形狀。而這些設計好的blocks可以藉由Blockly工具來堆疊出特定的應用開發。此外,透過案例研究的討論,展示了深度學習平台TVM和藍牙函式庫的視覺最佳化應用。另一種是針對深度學習平台的系統層面,對支援平行計算的開放計算語言OpenCL kernel提供C++ sparsity抽象化方法。這方法可透過C++ template設計的view layout來抽象化TVM的OpenCL sparse compression kernel內容的表達,並可使OpenCL kernel在語言結構上更加靈活。該方法也可應用結合於深度學習平台的計算函式庫,提供其底層OpenCL kernel支援C++抽象化的實現。此外,還可整合C++ execution policy提供的平行最佳化,為平行計算的複雜度帶來控制和物件的再用性。
總結上述針對深度學習平台的應用和系統兩層面的研究,本論文提出了包含Blockly策略及OpenCL C++ sparsity kernel的抽象化設計。實驗結果顯示,抽象化設計可以為應用結構、特定領域架構帶來視覺最佳化效果,同時也能為系統平行語言kernel結構帶來C++語言特性的最佳化效益。研究結果表明,本論文提出的抽象化設計方法可以作為特定領域函式庫、深度學習平台、及OpenCL kernel的設計參考指南。
Artificial intelligence (AI) is pivotal in technological development currently, and various AI model recognition trained through deep learning platforms has been gradually applied in modern daily life. Throughout the development of AI computing, popularizing deep learning applications through a suitable programming language and optimizing the execution of underlying parallel computing has always been the key to the application of AI computing. However, the highly complex deep learning environment and its underlying parallel computing require sufficient domain knowledge to operate and optimize. To face the field of AI, beginners with an essential programming background must pay a considerable time cost in software learning and application development. The lack of abstraction development design is an urgent challenge for current users to understand domain knowledge and system architecture for AI computing environments.
This thesis presents the abstraction research of Blockly compute and parallel computing to address the above challenge for deep learning platforms in AI computing environments. The research includes two approaches: One is proposing block design strategies to construct and stack visual blocks for the deep learning platform application layer. These strategies find and decompose appropriate features for complex program structures of domain-specific or interface forms of application systems and design corresponding block shapes. These designed blocks can stack block content by using a block-based Blockly tool. In addition, the case study discussion demonstrates the visual optimization of the complex deep learning platform Tensor Virtual Machine (TVM) and domain-specific Bluetooth library. The results shown can significantly reduce the time complexity of learning and development. Another approach is the C++ sparsity abstraction approach to provide a sparsity abstraction design for the Open Computing Language (OpenCL) kernel of the system layer of the deep learning platform. This approach can abstract the feature expression of TVM’s OpenCL sparse compression kernel by using the view layout of the C++ template design and further apply it to the OpenCL kernel of computing libraries. This approach can make the OpenCL kernel code more object-oriented and flexible in language structure. In addition, this approach design can also integrate the parallel optimization of the C++ execution policy, which brings control and object-based reusability to the complexity of parallel computing.
This thesis proposes two abstraction approaches for the application and system layers of the deep learning platform, including Blockly strategies and OpenCL C++ sparsity kernel. After the demonstration and experimental results of the domain-specific library, TVM architecture, and OpenCL kernel structure, these two approaches can bring visual optimization benefits and obtain the C++ language features optimization effect. In other words, the abstraction design approaches proposed in this thesis can serve as a design reference guideline for domain-specific libraries, deep learning platforms, and OpenCL kernels.
[1] Efthimia Aivaloglou and Felienne Hermans. How Kids Code and How We Know: An Exploratory Study on the Scratch Repository. In Proceedings of the ACM Conference on International Computing Education Research (ICER ’16), pages 53–61, Melbourne, VIC, Australia, Aug. 2016. ACM. https://doi.org/10.1145/2960310.2960325.
[2] Nora Alturayeif, Nouf Alturaief, and Zainab Alhathloul. DeepScratch: Scratch Programming Language Extension for Deep Learning Education. International Journal of Advanced Computer Science and Applications, 11(7):642–650, 2020. http://dx.doi.org/10.14569/IJACSA.2020.0110777.
[3] Michal Armoni, Orni Meerbaum-Salant, and Mordechai Ben-Ari. From Scratch to “real” programming. ACM Transactions on Computing Education, 14(4):25:1–25:15, feb. 2015. https://doi.org/10.1145/2677087.
[4] Adiel Ashrov, Assaf Marron, Gera Weiss, and Guy Wiener. A use-case for behavioral programming: an architecture in JavaScript and Blockly for interactive applications with cross-cutting scenarios. Science of Computer Programming, 98:268–292, Feb. 2015. https://doi.org/10.1016/j.scico.2014.01.017.
[5] Jonny Austin, Howard Baker, Thomas Ball, James Devine, Joe Finney, Peli De Halleux, Steve Hodges, Michał Moskal, and Gareth Stockdale. The BBC Micro:Bit: From the U.K. to the World. Communications of the ACM, 63(3):62–69, Feb. 2020. https://doi.org/10.1145/3368856.
[6] Eric Bagley, Jessica Shumway, and John Edwards. Second-Grade Students’ Use of Visual Programming to Learn Multiplication: Leveraging the Concept of Iteration. In Proceedings of the Australasian Computing Education Conference (ACE ’22), pages 76–84, Virtual Event, Australia, Feb. 2022. ACM. https://doi.org/10.1145/3511861.3511870.
[7] Matthew Bajzek, Heather Bort, Omokolade Hunpatin, Luke Mivshek, Tyler Much, and Casey O’Hare. MUzECS: Embedded Blocks for Exploring Computer Science. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’15), pages 127–132, Atlanta, GA, USA, Oct. 2015. IEEE. https://doi.org/10.1109/BLOCKS.2015.7369021.
[8] Nayeon Bak, Byeong-Mo Chang, and Kwanghoon Choi. Smart Block: A visual programming environment for SmartThings. In Proceedings of the IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC ’18), volume 02, pages 32–37, Tokyo, Japan, July 2018. IEEE. https://doi.org/10.1109/COMPSAC.2018.10199.
[9] Aaron Bangor, Philip T Kortum, and James T Miller. An Empirical Evaluation of the System Usability Scale. International Journal of Human-Computer Interaction, 24(6):574–594, 2008. https://doi.org/10.1080/10447310802205776.
[10] David Bau, D. Anthony Bau, Mathew Dawson, and C. Sydney Pickens. Pencil Code: Block Code for a Text World. In Proceedings of the 14th International Conference on Interaction Design and Children (IDC ’15), pages 445–448, Boston, MA, USA, June 2015. ACM. https://doi.org/10.1145/2771839.2771875.
[11] Andrew Begel. LogoBlocks: A graphical programming language for interacting with the world. Electrical Engineering and Computer Science Department, MIT, Boston, MA, USA, pages 62–64, 1996. https://andrewbegel.com/mit/begel-aup.pdf.
[12] Ayoub Benayache, Azeddine Bilami, Sami Barkat, Pascal Lorenz, and Hafnaoui Taleb. MsM: A microservice middleware for smart WSN-based IoT application. Journal of Network and Computer Applications, 144:138–154, July 2019. https://doi.org/10.1016/j.jnca.2019.06.015.
[13] Jeremiah Blanchard, Chistina Gardner-McCune, and Lisa Anthony. Amphibian: Dual-Modality Representation in Integrated Development Environments. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’19), pages 83–85, Memphis, TN, USA, Oct. 2019. IEEE. https://doi.org/10.1109/BB48857.2019.8941213.
[14] Paolo Bottoni and Miguel Ceriani. Using blocks to get more blocks: Exploring linked data through integration of queries and result sets in block programming. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’15), pages 99–101, Atlanta, GA, USA, Oct. 2015. IEEE. https://doi.org/10.1109/BLOCKS.2015.7369012.
[15] Brian Broll, Hamid Zare, Dung Nguyen Do, Mohini Misra, and Akos Ledeczi. You can teach computer networking in high school. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’17), pages 91–94, Raleigh, NC, USA, Oct. 2017. IEEE. https://doi.org/10.1109/BLOCKS.2017.8120419.
[16] John Brooke. SUS: A Quick and Dirty Usability Scale. Usability Evaluation In Industry, pages 189–194, 1996. https://doi.org/10.1201/9781498710411.
[17] Logan B. Caraco, Sebastian Deibel, Yufan Ma, and Lauren R. Milne. Making the Blockly library accessible via touchscreen. In Proceedings of the 21st International ACM SIGACCESS Conference on Computers and Accessibility (ASSETS ’19), pages 648–650, Pittsburgh, PA, USA, Oct. 2019. ACM. https://doi.org/10.1145/ 3308561.3354589.
[18] Po-Yao Chang, Tai-Liang Chen, Yu-Tse Huang, Meng-Shiun Yu, and Jenq-Kuen Lee. C++OpenCL4TVM: Support C++OpenCL Kernel for TVM NN Operators. In Proceedings of the International Workshop on OpenCL (IWOCL ’22), pages 1–2, Bristol, United Kingdom, May 2022. ACM. https://doi.org/10.1145/3529538.3530001.
[19] Po-Yao Chang, Tai-Liang Chen, and Jenq-Kuen Lee. Enabling the Use of C++20 Unseq Execution Policy for OpenCL. In Proceedings of the International Workshop on OpenCL (IWOCL ’21), pages 1–2, Munich, Germany, April 2021. ACM. https://doi.org/10.1145/3456669.3456674.
[20] Tai-Liang Chen, Yi-Ru Chen, Meng-Shiun Yu, and Jenq-Kuen Lee. NNBlocks: A Blockly framework for AI computing. The Journal of Supercomputing, 77(8):8622– 8652, 1–31, Aug. 2021. https://doi.org/10.1007/s11227-021-03631-9.
[21] Tai-Liang Chen, Shih-Huan Chien, and Jenq-Kuen Lee. ViennaCL++: Enable TensorFlow/Eigen via ViennaCL with OpenCL C++ Flow. In Proceedings of the International Workshop on OpenCL (IWOCL ’18), pages 1–2, Oxford, United Kingdom, May 2018. ACM. https://doi.org/10.1145/3204919.3207894.
[22] Tai-Liang Chen, I-An Su, and Jenq-Kuen Lee. Case Study: Design Strategies for Enabling Visual Application Blocks of Bluetooth Library. IEEE Access, 10:52630– 52654, 1–25, May 2022. https://doi.org/10.1109/ACCESS.2022.3175316.
[23] Tianqi Chen, Thierry Moreau, Ziheng Jiang, Lianmin Zheng, Eddie Yan, Meghan Cowan, Haichen Shen, Leyuan Wang, Yuwei Hu, Luis Ceze, Carlos Guestrin, and Arvind Krishnamurthy. TVM: An Automated End-to-End Optimizing Compiler for Deep Learning. In Proceedings of the 13th USENIX Conference on Operating Systems Design and Implementation (OSDI ’18), pages 579–594, Carlsbad, CA, USA, Oct. 2018. USENIX Association. https://dl.acm.org/doi/10.5555/3291168.3291211.
[24] Yinong Chen and Gennaro De Luca. VIPLE: Visual IoT/Robotics Programming Language Environment for Computer Science Education. In Proceedings of the IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW ’16), pages 963–971, Chicago, IL, USA, May 2016. IEEE. https://doi.org/10.1109/IPDPSW.2016.55.
[25] Younghyun Cho, Jiyeon Park, Florian Negele, Changyeon Jo, Thomas R. Gross, and Bernhard Egger. Dopia: Online Parallelism Management for Integrated CPU/GPU Architectures. In Proceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’22), pages 32–45, Seoul, Republic of Korea, April 2022. ACM. https://doi.org/10.1145/3503221.3508421.
[26] Tadej Ciglaric, Rokˇ Ceˇ snovar, and Erikˇ Strumbelj. Automated OpenCL GPU Ker-ˇ nel Fusion for Stan Math. In Proceedings of the International Workshop on OpenCL (IWOCL ’20), pages 1–2, Munich, Germany, April 2020. ACM. https://doi.org/ 10.1145/3388333.3388654.
[27] Jason Cong and Bingjun Xiao. Minimizing Computation in Convolutional Neural Networks. In Artificial Neural Networks and Machine Learning – ICANN 2014, volume 8681, pages 281–290. Springer, 2014. https://doi.org/10.1007/ 978-3-319-11179-7_36.
[28] Ioana Culic, Alexandra Radovici, and Laura Mihaela Vasilescu. Auto-generating Google Blockly visual programming elements for peripheral hardware. In Proceedings of the 14th RoEduNet International Conference - Networking in Education and Research (RoEduNet NER ’15), pages 94–98, Craiova, Romania, Sep. 2015. IEEE. https://doi.org/10.1109/RoEduNet.2015.7311975.
[29] James Devine, Joe Finney, Peli de Halleux, Michał Moskal, Thomas Ball, and Steve Hodges. MakeCode and CODAL: Intuitive and efficient embedded systems programming for education. Journal of Systems Architecture, 98:468–483, Sep. 2019. https://doi.org/10.1016/j.sysarc.2019.05.005.
[30] Leonel Morales D´ıaz, Carlos Morales Hernandez, Alex Viau Ortiz, and Laura Sanely´ Gaytan-Lugo. Tinkercad and codeblocks in a summer course: An attempt to explain´ observed engagement and enthusiasm. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’19), pages 43–47, Memphis, TN, USA, Oct. 2019. IEEE. https://doi.org/10.1109/BB48857.2019.8941211.
[31] Yihuan Dong, Samiha Marwan, Veronica Catete, Thomas Price, and Tiffany Barnes. Defining tinkering behavior in open-ended block-based programming assignments. In Proceedings of the ACM Technical Symposium on Computer Science Education (SIGCSE ’19), pages 1204–1210, Minneapolis, MN, USA, Feb. 2019. ACM. https://doi.org/10.1145/3287324.3287437.
[32] Hilary Dwyer, Charlotte Hill, Alexandria Hansen, Ashley Iveland, Diana Franklin, and Danielle Harlow. Fourth grade students reading block-based programs: Predictions, visual cues, and affordances. In Proceedings of the 11th Annual International Conference on International Computing Education Research (ICER ’15), pages 111– 119, Omaha, NE, USA, Aug. 2015. ACM. https://doi.org/10.1145/2787622.2787729.
[33] Andrew Emerson, Michael Geden, Andy Smith, Eric Wiebe, Bradford Mott, Kristy Elizabeth Boyer, and James Lester. Predictive Student Modeling in BlockBased Programming Environments with Bayesian Hierarchical Models. In Proceedings of the 28th ACM Conference on User Modeling, Adaptation and Personalization (UMAP ’20), pages 62–70, Genoa, Italy, July 2020. ACM. https://doi.org/10.1145/3340631.3394853.
[34] Kraig Finstad. The usability metric for user experience. Interacting with Computers, 22(5):323–327, Sep. 2010. https://doi.org/10.1016/j.intcom.2010.04.004.
[35] Benedict R. Gaster and Lee Howes. Formalizing Address Spaces with Application to Cuda, OpenCL, and Beyond. In Proceedings of the 6th Workshop on General Purpose Processor Using Graphics Processing Units (GPGPU ’13), pages 32–41, Houston, TX, USA, March 2013. ACM. https://doi.org/10.1145/2458523.2458527.
[36] Benedict R. Gaster and Lee Howes. OpenCL C++. In Proceedings of the 6th Workshop on General Purpose Processor Using Graphics Processing Units (GPGPU ’13), pages 86– 95, Houston, TX, USA, March 2013. ACM. https://doi.org/10.1145/2458523.2458532.
[37] Terrell Glenn, Ananya Ipsita, Caleb Carithers, Kylie Peppler, and Karthik Ramani. StoryMakAR: Bringing Stories to Life With An Augmented Reality & Physical Prototyping Toolkit for Youth. In Proceedings of the CHI Conference on Human Factors in Computing Systems (CHI ’20), pages 1–14, Honolulu, HI, USA, April 2020. ACM. https://doi.org/10.1145/3313831.3376790.
[38] Katharina Gotz, Patric Feldmeier, and Gordon Fraser.¨ Model-based Testing of Scratch Programs. In Proceedings of the IEEE Conference on Software Testing, Verification and Validation (ICST ’22), pages 411–421, Valencia, Spain, April 2022. IEEE. https://doi.org/10.1109/ICST53961.2022.00047.
[39] Luke Gusukuma, Dennis Kafura, and Austin Cory Bart. Authoring feedback for novice programmers in a block-based language. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’17), pages 37–40, Raleigh, NC, USA, Oct. 2017. IEEE. https://doi.org/10.1109/BLOCKS.2017.8120407.
[40] Mary Hall, David Padua, and Keshav Pingali. Compiler research: The next 50 years. Communications of the ACM, 52(2):60–67, Feb. 2009. https://doi.org/10.1145/1461928.1461946.
[41] Robert Holwerda and Felienne Hermans. A usability analysis of blocks-based programming editors using cognitive dimensions. In Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC ’18), pages 217– 225, Lisbon, Portugal, Oct. 2018. IEEE. https://doi.org/10.1109/VLHCC.2018.8506483.
[42] Yuan-Shin Hwang, Hsih-Hsin Lin, Shen-Hung Pai, and Chia-Heng Tu. GPUBlocks: GUI programming tool for CUDA and OpenCL. Journal of Signal Processing Systems, 91(3–4):235–245, March 2019. https://doi.org/10.1007/s11265-018-1395-2.
[43] Sven Jatzlau, Tilman Michaeli, Stefan Seegerer, and Ralf Romeike. It’s not Magic After All – Machine Learning in Snap! using Reinforcement Learning. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’19), pages 37–41, Memphis, TN, USA, Oct. 2019. IEEE. https://doi.org/10.1109/BB48857.2019.8941208.
[44] Bolan Jiang, Jeng-Hau Lin, Adarsh Golikeri, Li He, Hongqiang Wang, and Alex Bourd. Training Machine Learning Network on Adreno Mobile GPUs Using OpenCL. In Proceedings of the International Workshop on OpenCL (IWOCL ’20), pages 1–2, Munich, Germany, April 2020. ACM. https://doi.org/10.1145/3388333.3388666.
[45] Chris Johnson and Peter Bui. Blocks In, Blocks Out: A Language for 3D Models. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’15), pages 77–82, Atlanta, GA, USA, Oct. 2015. IEEE. https://doi.org/10.1109/BLOCKS.2015.7369007.
[46] Beau Johnston and Josh Milthorpe. Dwarfs on accelerators: Enhancing opencl benchmarking for heterogeneous computing architectures. In Proceedings of the 47th International Conference on Parallel Processing Companion (ICPP ’18), pages 1–10, Eugene, OR, USA, Aug. 2018. ACM. https://doi.org/10.1145/3229710.3229729.
[47] Andouglas Gonc¸alves Da Silva Junior, Luiz Marcos Garcia Gonc¸alves, Glauco A. De Paula Caurin, Gustavo Teruo Bernardino Tamanaka, Andre Carmona Hernan-´ des, and Rafael Vidal Aroca. BIPES: Block Based Integrated Platform for Embedded Systems. IEEE Access, 8:197955–197968, Nov. 2020. https://doi.org/10.1109/ ACCESS.2020.3035083.
[48] Lester Kalms, Tim Hebbeler, and Diana Gohringer. Automatic OpenCL Code Gener-¨ ation from LLVM-IR Using Polyhedral Optimization. In Proceedings of the 9th Workshop and 7th Workshop on Parallel Programming and RunTime Management Techniques for Manycore Architectures and Design Tools and Architectures for Multicore Embedded Computing Platforms (PARMA-DITAM ’18), pages 45–50, Manchester, United Kingdom, Jan. 2018. ACM. https://doi.org/10.1145/3183767.3183779.
[49] Petr F. Kartsev. High-Performance Micromagnetic Simulations Using OpenCL. In Proceedings of the International Workshop on OpenCL (IWOCL ’20), pages 1–2, Munich, Germany, April 2020. ACM. https://doi.org/10.1145/3388333.3388663.
[50] Yonghae Kim and Hyesoon Kim. Translating CUDA to OpenCL for Hardware Generation Using Neural Machine Translation. In Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization (CGO ’19), pages 285–286, Washington, DC, USA, Feb. 2019. IEEE. https://doi.org/10.1109/CGO.2019.8661172.
[51] Sarah Claudia Krings, Enes Yigitbas, Kai Biermeier, and Gregor Engels. Design and Evaluation of AR-Assisted End-User Robot Path Planning Strategies. In Companion of the 2022 ACM SIGCHI Symposium on Engineering Interactive Computing Systems (EICS ’22 Companion), pages 14–18, Sophia Antipolis, France, June 2022. ACM. https://doi.org/10.1145/3531706.3536452.
[52] Sai Prasanth Krishnamoorthy and Vikram Kapila. Using a visual programming environment and custom robots to learn C programming and K-12 STEM concepts. In Proceedings of the 6th Annual Conference on Creativity and Fabrication in Education, pages 41–48, Stanford, CA, USA, Oct. 2016. ACM. https://doi.org/10.1145/3003397.3003403.
[53] Longlong Liao, Kenli Li, Keqin Li, Canqun Yang, and Qi Tian. UHCL-Darknet: An OpenCL-Based Deep Neural Network Framework for Heterogeneous Multi/Many-Core Clusters. In Proceedings of the 47th International Conference on Parallel Processing (ICPP ’18), pages 1–10, Eugene, OR, USA, Aug. 2018. ACM. https://doi.org/10.1145/3225058.3225107.
[54] Gus Lopez, Bjorn Freeman-Benson, and Alan Borning. Implementing constraint imperative programming languages: The kaleidoscope’93 virtual machine. ACM SIGPLAN Notices, 29(10):259–271, Oct. 1994. https://doi.org/10.1145/191081.191118.
[55] Nicholas Lytle, Alexandra Milliken, Veronica Catete, and Ti´ ffany Barnes. Investigating different assignment designs to promote collaboration in block-based environments. In Proceedings of the ACM Technical Symposium on Computer Science Education (SIGCSE ’20), pages 832–838, Portland, OR, USA, Feb. 2020. ACM. https://doi.org/10.1145/3328778.3366943.
[56] John Maloney, Mitchel Resnick, Natalie Rusk, Brian Silverman, and Evelyn Eastmond. The Scratch programming language and environment. ACM Transactions on Computing Education, 10(4):1–15, Nov. 2010. https://doi.org/10.1145/1868358.1868363.
[57] Dianhui Mao, Fan Wang, Yalei Wang, and Zhihao Hao. Visual and User-Defined Smart Contract Designing System Based on Automatic Coding. IEEE Access, 7:73131–73143, June 2019. https://doi.org/10.1109/ACCESS.2019.2920776.
[58] Valerie Maquil, Christian Moll, Lou Schwartz, and Johannes Hermen. Kniwwelino:´ A Lightweight and WiFi Enabled Prototyping Platform for Children. In Proceedings of the 12th International Conference on Tangible, Embedded, and Embodied Interaction (TEI ’18), pages 94–100, Stockholm, Sweden, March 2018. ACM. https://doi.org/10.1145/3173225.3173275.
[59] Dave Mason and Kruti Dave. Block-based versus flow-based programming for naive programmers. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’17), pages 25–28, Raleigh, NC, USA, Oct. 2017. IEEE. https://doi.org/10.1109/ BLOCKS.2017.8120405.
[60] Andrea Mattioli and Fabio Paterno. A Visual Environment for End-User Creation` of IoT Customization Rules with Recommendation Support. In Proceedings of the International Conference on Advanced Visual Interfaces (AVI ’20), pages 1–5, Salerno, Italy, Sep. 2020. ACM. https://doi.org/10.1145/3399715.3399833.
[61] Christoph Mayr-Dorn, Mario Winterer, Christian Salomon, Doris Hohensinger, and Rudolf Ramler. Considerations for using Block-Based Languages for Industrial Robot Programming - a Case Study. In Proceedings of the IEEE/ACM 3rd International Workshop on Robotics Software Engineering (RoSE ’21), pages 5–12, Madrid, Spain, June 2021. IEEE. https://doi.org/10.1109/RoSE52553.2021.00008.
[62] Orni Meerbaum-Salant, Michal Armoni, and Mordechai Ben-Ari. Habits of programming in Scratch. In Proceedings of the 16th annual joint conference on Innovation and technology in computer science education (ITiCSE ’11), pages 168–172, Darmstadt, Germany, June 2011. ACM. https://doi.org/10.1145/1999747.1999796.
[63] Mpyana Mwamba Merlec, Youn Kyu Lee, and Hoh Peter In. SmartBuilder: A Block-based Visual Programming Framework for Smart Contract Development. In Proceedings of the IEEE International Conference on Blockchain (Blockchain ’21), pages 90–94, Melbourne, Australia, Dec. 2021. IEEE. https://doi.org/10.1109/ Blockchain53845.2021.00023.
[64] Fahmid Morshed Fahid, Xiaoyi Tian, Andrew Emerson, Joseph B. Wiggins, Dolly Bounajim, Andy Smith, Eric Wiebe, Bradford Mott, Kristy Elizabeth Boyer, and
James Lester. Progression Trajectory-Based Student Modeling for Novice BlockBased Programming. In Proceedings of the 29th ACM Conference on User Modeling, Adaptation and Personalization (UMAP ’21), pages 189–200, Utrecht, Netherlands, June 2021. ACM. https://doi.org/10.1145/3450613.3456833.
[65] Andrew Keong Ng, Indriyati Atmosukarto, Wean Sin Cheow, Karin Avnit, and Mun Hin Yong. Development and Implementation of an Online Adaptive Gamification Platform for Learning Computational Thinking. In Proceedings of the IEEE Frontiers in Education Conference (FIE ’21), pages 1–6, Lincoln, NE, USA, Oct. 2021. IEEE. https://doi.org/10.1109/FIE49875.2021.9637467.
[66] Vivek Paramasivam, Justin Huang, Sarah Elliott, and Maya Cakmak. Computer Science Outreach with End-User Robot-Programming Tools. In Proceedings of the ACM Technical Symposium on Computer Science Education (SIGCSE ’17), pages 447– 452, Seattle, Washington, USA, March 2017. ACM. https://doi.org/10.1145/ 3017680.3017796.
[67] Youngki Park and Youhyun Shin. Tooee: A Novel Scratch Extension for K-12 Big Data and Artificial Intelligence Education Using Text-Based Visual Blocks. IEEE Access, 9:149630–149646, Nov. 2021. https://doi.org/10.1109/ACCESS.2021.3125060.
[68] Matthew Poole. Extending the Design of a Blocks-Based Python Environment to Support Complex Types. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’17), pages 1–7, Raleigh, NC, USA, Oct. 2017. IEEE. https://doi.org/10.1109/BLOCKS.2017.8120400.
[69] Adin Baskoro Pratomo and Riza Satria Perdana. Arduviz, a visual programming IDE for arduino. In Proceedings of the International Conference on Data and Software Engineering (ICoDSE ’17), pages 1–6, Palembang, Indonesia, Nov. 2017. IEEE. https://doi.org/10.1109/ICODSE.2017.8285871.
[70] Jonathan Protzenko. Pushing blocks all the way to C++. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’15), pages 91–95, Atlanta, GA, USA, Oct. 2015. IEEE. https://doi.org/10.1109/BLOCKS.2015.7369010.
[71] Arjun Rao, Ayush Bihani, and Mydhili Nair. Milo: A visual programming environment for Data Science Education. In Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC ’18), pages 211–215, Lisbon, Portugal, Oct. 2018. IEEE. https://doi.org/10.1109/VLHCC.2018.8506504.
[72] Heinrich Riebler, Gavin Vaz, Tobias Kenter, and Christian Plessl. Transparent Acceleration for Heterogeneous Platforms With Compilation to OpenCL. ACM
Transactions on Architecture and Code Optimization, 16(2):1–26, June 2019. https://doi.org/10.1145/3319423.
[73] Fernando J. Rodr´ıguez, Smithm Cody R., Andy Smith, Kristy Elizabeth Boyer, Eric N. Wiebe, Bradford W. Mott, and James C. Lester. Toward a responsive interface to support novices in block-based programming. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’19), pages 9–13, Memphis, TN, USA, Oct. 2019. IEEE. https://doi.org/10.1109/BB48857.2019.8941205.
[74] Fernando J. Rodr´ıguez, Smithm Cody R., Andy Smith, Kristy Elizabeth Boyer, Eric N. Wiebe, Bradford W. Mott, and James C. Lester. Toward a Responsive Interface to Support Novices in Block-Based Programming. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’19), pages 9–13, Memphis, TN, USA, Oct. 2019. IEEE. https://doi.org/10.1109/BB48857.2019.8941205.
[75] Luis Rodr´ıguez-Gil, Javier Garc´ıa-Zubia, Pablo Orduna, Aitor Villar-Martinez, and˜ Diego Lopez-De-Ipi´ na. New approach for conversational agent definition by non-˜ programmers: A visual domain-specific language. IEEE Access, 7:5262–5276, Jan. 2019. https://doi.org/10.1109/ACCESS.2018.2883500.
[76] Jared Roesch, Steven Lyubomirsky, Logan Weber, Josh Pollock, Marisa Kirisame, Tianqi Chen, and Zachary Tatlock. Relay: A New IR for Machine Learning Frameworks. In Proceedings of the 2nd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages (MAPL ’18), pages 58–68, Philadelphia, PA, USA, June 2018. ACM. https://doi.org/10.1145/3211346.3211348.
[77] Ricarose Vallarta Roque. Openblocks: An extendable framework for graphical block programming systems. Master’s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, USA, 2007. https://dspace.mit.edu/handle/1721.1/41550.
[78] Karl Rupp, Philippe Tillet, Florian Rudolf, Josef Weinbub, Andreas Morhammer, Tibor Grasser, Ansgar Jungel, and Siegfried Selberherr. ViennaCL—Linear Algebra¨ Library for Multi- and Many-Core Architectures. SIAM Journal on Scientific Computing, 38(5):S412–S439, 2016. https://doi.org/10.1137/15M1026419.
[79] Robert W. Sebesta. Concepts of Programming Languages. Pearson, 12th edition, 2019. ISBN: 9780134997186.
[80] Mazyar Seraj, Cornelia S. Große, Serge Autexier, and Rolf Drechsler. Look What I Can Do: Acquisition of Programming Skills in the Context of Living Labs. In Proceedings of the 41th IEEE/ACM International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET ’19), pages 197–207, Montreal, QC, Canada, May 2019. IEEE. https://doi.org/10.1109/ICSE-SEET.2019.00029.
[81] M. Angeles Serna, Cormac J. Sreenan, and Szymon Fedor. A Visual Programming´ Framework for Wireless Sensor Networks in Smart Home Applications. In Proceedings of the IEEE 10th International Conference on Intelligent Sensors, Sensor Networks and Information Processing (ISSNIP ’15), pages 1–6, Singapore, Singapore, April 2015. IEEE. https://doi.org/10.1109/ISSNIP.2015.7106946.
[82] Gordon Stein and Akos L´ edeczi. Mixed reality robotics for STEM education. In´ Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’19), pages 49–53, Memphis, TN, USA, Oct. 2019. IEEE. https://doi.org/10.1109/BB48857.2019.8941229.
[83] Angela E.B. Stewart, Zachary A. Keirn, and Sidney K. D’Mello. Multimodal Modeling of Coordination and Coregulation Patterns in Speech Rate During Triadic Collaborative Problem Solving. In Proceedings of the 20th ACM International Conference on Multimodal Interaction (ICMI ’18), pages 21–30, Boulder, CO, USA, Oct. 2018. ACM. http://doi.acm.org/10.1145/3242969.3242989.
[84] Ole Strohm and Anastasia Stulova. Experimenting with C++ Libraries in OpenCL Kernel Code. In Proceedings of the International Workshop on OpenCL (IWOCL ’21), pages 1–1, Munich, Germany, April 2021. ACM. https://doi.org/10.1145/ 3456669.3456675.
[85] Glenn Strong, Sean O’Carroll, and Nina Bresnihan. A block based editor for Python. In Proceedings of the 13th Workshop in Primary and Secondary Computing Education (WiPSCE ’18), pages 1–2, Potsdam, Germany, Oct. 2018. ACM. https://doi.org/10.1145/3265757.3265788.
[86] Anastasia Stulova, Neil Hickey, Sven van Haastregt, Marco Antognini, and Kevin Petit. The C++ for OpenCL Programming Language. In Proceedings of the International Workshop on OpenCL (IWOCL ’20), pages 1–2, Munich, Germany, April 2020. ACM. https://doi.org/10.1145/3388333.3388647.
[87] Jakub Szuppe. Boost.Compute: A Parallel Computing Library for C++ Based on OpenCL. In Proceedings of the International Workshop on OpenCL (IWOCL ’16), pages 1–39, Vienna, Austria, April 2016. ACM. https://doi.org/10.1145/2909437.2909454.
[88] Matu´s Tomlein and Kaj Grønbæk. A visual programming approach based on do-ˇ main ontologies for configuring industrial IoT installations. In Proceedings of the 7th International Conference on the Internet of Things (IoT ’17), pages 1–9, Linz, Austria, Oct. 2017. IEEE. https://doi.org/10.1145/3131542.3131552.
[89] Jennifer Tsan, Fernando J. Rodr´ıguez, Kristy Elizabeth Boyer, and Collin Lynch. Let’s work together: Improving block-based environments by supporting synchronous collaboration. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’17), pages 53–56, Raleigh, NC, USA, Oct. 2017. IEEE. https://doi.org/10.1109/BLOCKS.2017.8120411.
[90] Yannis Valsamakis, Anthony Savidis, Emanuel Agapakis, and Alexandros Katsarakis. Collaborative Visual Programming Workspace for Blockly. In Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC ’20), pages 1–6, Dunedin, New Zealand, Aug. 2020. IEEE. https://doi.org/10.1109/VL/HCC50065.2020.9127253.
[91] Mauricio Verano Merino and Tijs van der Storm. Block-based syntax from contextfree grammars. In Proceedings of the 13th ACM SIGPLAN International Conference on Software Language Engineering (SLE ’2020), pages 283–295, Virtual, USA, Nov. 2020.
ACM. https://doi.org/10.1145/3426425.3426948.
[92] Shao-Chung Wang, Lin-Ya Yu, Li-An Her, Yuan-Shin Hwang, and Jenq-Kuen Lee. Pointer-Based Divergence Analysis for OpenCL 2.0 Programs. ACM Transactions on Parallel Computing, 8(4):1–23, Dec. 2021. https://doi.org/10.1145/3470644.
[93] Xiebing Wang, Xuehai Qian, Alois Knoll, and Kai Huang. Efficient Performance Estimation and Work-Group Size Pruning for OpenCL Kernels on GPUs. IEEE Transactions on Parallel and Distributed Systems, 31(5):1089–1106, Dec. 2020. https://doi.org/10.1109/TPDS.2019.2958343.
[94] David Weintrop, David C. Shepherd, Patrick Francis, and Diana Franklin. Blockly Goes to Work: Block-based Programming for Industrial Robots. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’17), pages 29–36, Raleigh, NC, USA, Oct.
2017. IEEE. https://doi.org/10.1109/BLOCKS.2017.8120406.
[95] David Weintrop and Uri Wilensky. The challenges of studying blocks-based programming environments. In Proceedings of the IEEE Blocks and Beyond Workshop (B&B ’15), pages 5–7, Atlanta, GA, USA, Oct. 2015. IEEE. https://doi.org/10.1109/BLOCKS.2015.7368989.
[96] David Weintrop and Uri Wilensky. To block or not to block, that is the question: Students’ perceptions of blocks-based programming. In Proceedings of the 14th International Conference on Interaction Design and Children (IDC ’15), pages 199–208, Boston, MA, USA, June 2015. ACM. https://doi.org/10.1145/2771839.2771860.
[97] David Weintrop and Uri Wilensky. Using commutative assessments to compare conceptual understanding in blocks-based and text-based programs. In Proceedings of the 11th annual International Conference on International Computing Education Research (ICER ’15), pages 101–110, Omaha, NE, USA, Aug. 2015. ACM. https://doi.org/10.1145/2787622.2787721.
[98] David Weintrop and Uri Wilensky. Comparing Block-Based and Text-Based Programming in High School Computer Science Classrooms. ACM Transactions on Computing Education, 18(1):1–25, Oct. 2017. https://doi.org/10.1145/3089799.
[99] Mario Winterer, Christian Salomon, Jessica Koberle, Rudolf Ramler, and Markus¨ Schittengruber. An Expert Review on the Applicability of Blockly for Industrial Robot Programming. In Proceedings of the 25th IEEE International Conference on Emerging Technologies and Factory Automation (ETFA ’20), pages 1231–1234, Vienna, Austria, Sep. 2020. IEEE. https://doi.org/10.1109/ETFA46521.2020.9212036.
[100] Zhenghua Xia, Baokun Hu, Wanwan Diao, and Yuqian Huang. Design of Interactive Computer Algorithm Learning Platform : Taking the visual programming tool “Progressive Blockly” as an example. In Proceedings of the International Conference on Computer Engineering and Application (ICCEA ’21), pages 189–193, Kunming, China, June 2021. IEEE. https://doi.org/10.1109/ICCEA53728.2021.00045.
[101] Han Xiao, Baoyun Guo, Hongyan Zhang, and Cailin Li. A Parallel Algorithm of Image Mean Filtering Based on OpenCL. IEEE Access, 9:65001–65016, March 2021. https://doi.org/10.1109/ACCESS.2021.3068772.
[102] Meng-Shiun Yu, Tai-Liang Chen, and Jenq-Kuen Lee. Accelerating NNEF Framework on OpenCL Devices Using ClDNN. In Proceedings of the International Workshop on OpenCL (IWOCL ’20), pages 1–2, Munich, Germany, April 2020. ACM. https://doi.org/10.1145/3388333.3388655.
[103] Ramon Zatarain-Cabada, Mar´ ´ıa Lucia Barron-Estrada, and Jos´ e Mario R´ ´ıos-Felix.´ Affective Learning System for Algorithmic Logic Applying Gamification. In Advances in Soft Computing, volume 10062, pages 536–547. Springer, Aug. 2017. https://doi.org/10.1007/978-3-319-62428-0_44.