[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-home-live-entry-setting":3,"site-header-contests":8,"site-header-camps":49,"study-material-detail-study-32":104},{"enabled":4,"title":5,"statusText":5,"buttonText":5,"campSlug":5,"stage":6,"classroomId":7,"hasClassroom":4},false,"",0,null,{"total":9,"list":10,"pageNum":44,"pageSize":45,"size":9,"startRow":44,"endRow":9,"pages":44,"prePage":6,"nextPage":6,"isFirstPage":46,"isLastPage":46,"hasPreviousPage":4,"hasNextPage":4,"navigatePages":47,"navigatepageNums":48,"navigateFirstPage":44,"navigateLastPage":44},3,[11,25,35],{"slug":12,"title":13,"logo":7,"liveUrl":14,"prize":15,"sponsor":16,"description":17,"organizer":18,"startTime":19,"endTime":20,"registrationDeadline":21,"status":22,"dashboardVisibility":23,"createdAt":24},"spring2026","2026春季启元人工智能大赛","https:\u002F\u002Fwww.bilibili.com\u002Fblackboard\u002Flive\u002Flive-activity-player.html?cid=1822703816&quality=0","200,000","麒麟软件有限公司","“2026春季启元人工智能大赛”是由启元实验室主办的面向全国人工智能领域开发者、科研人员及高校学生的权威赛事。大赛旨在促进与培养具备工程实践能力和创新能力的优秀人工智能领域开发者、推广国产软硬件技术与生态、助力国家人工智能产业高质量发展。\n各参赛选手需在规定的比赛周期内，依据赛事规则选定赛题并完成相应挑战，优胜者将共同角逐总额20万元的赛事奖金池，并且还将有机会获得实习和知名企业优质岗位内推资格。","启元实验室","2026-04-19 16:00:00","2026-07-13 16:00:00","2026-06-16 16:00:00","ongoing","private","2026-04-16 08:00:00",{"slug":26,"title":27,"logo":7,"liveUrl":14,"prize":28,"sponsor":7,"description":29,"organizer":18,"startTime":30,"endTime":31,"registrationDeadline":32,"status":33,"dashboardVisibility":23,"createdAt":34},"autumn2025","2025秋季启元人工智能大赛","150,000","“2025秋季启元人工智能大赛”是由启元实验室主办的面向全国人工智能领域开发者、科研人员及高校学生的权威赛事。大赛旨在促进与培养具备工程实践能力和创新能力的优秀人工智能领域开发者、推广国产软硬件技术与生态、助力国家人工智能产业高质量发展。","2025-11-08 08:00:00","2026-01-13 08:00:00","2025-12-30 08:00:00","ended","2025-11-03 08:00:00",{"slug":36,"title":37,"logo":7,"liveUrl":14,"prize":38,"sponsor":7,"description":39,"organizer":18,"startTime":40,"endTime":41,"registrationDeadline":42,"status":33,"dashboardVisibility":23,"createdAt":43},"summer2025","启元人工智能大赛(系统方向)","80,000","启元人工智能大赛由启元实验室主办，其中系统赛道基于启元实验室九源软件栈的相关开源项目，通过拉动开源社区力量，一方面促进国产智能计算生态的发展，另一方面也为人工智能系统方向的学生及从业者提供一个实践平台。","2025-07-08 08:00:00","2025-08-25 08:00:00","2025-07-22 08:00:00","2025-06-22 08:00:00",1,5,true,8,[44],{"total":45,"list":50,"pageNum":44,"pageSize":45,"size":45,"startRow":44,"endRow":45,"pages":44,"prePage":6,"nextPage":6,"isFirstPage":46,"isLastPage":46,"hasPreviousPage":4,"hasNextPage":4,"navigatePages":47,"navigatepageNums":103,"navigateFirstPage":44,"navigateLastPage":44},[51,62,73,84,94],{"id":52,"slug":53,"title":54,"logo":55,"publicLiveEmbedUrl":14,"description":56,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":16,"startTime":58,"endTime":59,"status":22,"dashboardVisibility":60,"createdAt":58,"updatedAt":61},"019eeeff-6b00-7d55-a629-efafded3e232","summer2026","2026年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2026-06\u002F019eef7f-7816-7828-9309-79c2c61dd568.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=Loo9mNcAiqrEJeoxKJGChNjsIP0%3D","由启元实验室发起的InfiniTensor大模型与人工智能系统训练营，面向开源社区、高校及产业界伙伴开放。活动以「普及AI全栈知识技术、培养工程实践与创新型人才、推广国产软硬件技术生态」为核心目标，助力国家人工智能产业高质量发展。","...","2026-06-22 08:00:00","2026-10-19 08:00:00","public","2026-10-12 08:00:00",{"id":63,"slug":64,"title":65,"logo":66,"publicLiveEmbedUrl":7,"description":67,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":68,"startTime":69,"endTime":70,"status":33,"dashboardVisibility":23,"createdAt":71,"updatedAt":72},"019af3f3-e06a-7245-aa8d-37dc99a69c73","winter2025","2025年冬季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2025-12\u002F019afc69-b7ca-7805-91fb-605429671c01.png?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=aQ7DEIPmeZ6G2GUnnO42fZDzkoY%3D","由启元实验室发起的InfiniTensor大模型与人工智能系统训练营，面向开源社区、高校及产业界伙伴开放。活动以「普及AI全栈知识技术、培养工程实践与创新型人才、推广国产软硬件技术生态」为核心目标，助力国家人工智能产业高质量发展。 \n","新华三技术有限公司","2025-12-25 08:00:00","2026-03-27 08:00:00","2025-12-06 08:00:00","2026-10-22 20:24:30",{"id":74,"slug":36,"title":75,"logo":76,"publicLiveEmbedUrl":7,"description":77,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":78,"startTime":79,"endTime":80,"status":81,"dashboardVisibility":23,"createdAt":82,"updatedAt":83},"01980342-208c-7803-b3f3-19e1d31960ba","2025年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2025-07\u002F0198045e-28fe-78f0-95fe-23835ce58395.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=rRUH7HCePjJ0x1Z1esoWYs0tjmE%3D","InfiniTensor大模型与人工智能系统训练营由启元实验室及清华大学 AI 系统方向团队发起，面向开源社区、高校和产业界，普及人工智能各方面知识和技术，培养相关人才。训练营联合开源项目开发者、学术界大牛、工业界资深工程师参与授课与项目指导。课程采用「线上直播授课 + 在线答疑 + 项目实践辅导 」的方式进行，确保每位同学都能获得充分成长。训练营全程免费，通过视频、直播课、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。","北京积算科技有限公司","2025-07-14 08:00:00","2025-09-30 08:00:00","upcoming","2025-07-13 08:00:00","2026-10-22 20:24:58",{"id":85,"slug":86,"title":87,"logo":88,"publicLiveEmbedUrl":7,"description":89,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":5,"startTime":90,"endTime":91,"status":81,"dashboardVisibility":23,"createdAt":92,"updatedAt":93},"01980cf9-a7d8-7796-ae86-0bbe05334add","winter2024","2024年冬季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Ftesting-cdn.infinitensor.com\u002Fuploads\u002F2025-07\u002F01981269-ce23-7624-a287-9f07dd0d85f6.jpg","InfiniTensor大模型与人工智能系统训练营由清华大学发起，面向开源社区、高校和产业界，普及人工智能各方面知识和技术，培养相关人才。训练营全程免费，通过视频、直播课、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。报名学员请阅读“导学”课程页的训练营介绍。","2025-01-05 08:00:00","2025-03-22 08:00:00","2025-07-15 08:00:00","2026-10-22 20:24:39",{"id":95,"slug":96,"title":97,"logo":98,"publicLiveEmbedUrl":7,"description":99,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":5,"startTime":100,"endTime":101,"status":81,"dashboardVisibility":23,"createdAt":92,"updatedAt":102},"01980c20-363a-7dc3-8f5a-58a68e08dcc4","summer2024","2024年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Ftesting-cdn.infinitensor.com\u002Fuploads\u002F2025-07\u002F01981269-fbfa-788a-afcd-17fa9be74ff9.jpg","InfiniTensor大模型与人工智能系统训练营由清华大学发起，面向开源社区和高校，普及人工智能各方面知识和技术，培养相关人才。训练营全程免费，通过课程、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。","2024-07-20 08:00:00","2024-09-29 08:00:00","2026-10-22 20:24:49",[44],{"currentItem":105,"processedData":125},{"img":106,"keywords":107,"treeType":44,"description":108,"showStatus":44,"updateTime":109,"type":110,"title":111,"content":112,"nextArticle":113,"createTime":109,"sortOrder":117,"canonicalPath":118,"id":119,"contentType":120,"prevArticle":121},"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_fm.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=hAgTMfUi66XfucRQhaEDo%2BOCEdg%3D","InfiniTensor,冬季训练营,OpenCL,并行计算,编程语法","讲解 OpenCL 编程抽象与语法基础，帮助建立跨平台并行计算开发的核心认知。","2026-10-22 20:38:11",2,"InfiniTensor 冬季训练营 OpenCL 编程第二课《OpenCL 编程抽象与语法》","![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw01.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=DAojmXKA1K3nkrOI4xTg%2BTwzfAk%3D)\r\n\r\n\r\n2026 年 1 月 22 日，2025 冬季 InfiniTensor 大模型与人工智能系统训练营 OpenCL 编程系列第二课《OpenCL 编程抽象与语法》开讲。\r\n\r\n本节课主要讲解 OpenCL 的核心抽象、编程语法、常用操作。\r\n\r\n### OpenCL 核心抽象模型\r\n#### 1. 平台模型—— 硬件抽象\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw02.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=IMEh%2FDPQYufp4TF1lmfDMokd2AY%3D)\r\n\r\n- **核心概念：** 主机（Host）与设备（Device）的异构架构。\r\n- **层级结构：**\r\n  - 主机 (Host)：通常指CPU，负责控制中心、任务调度和数据同步。\r\n  - 设备 (Device)：异构计算硬件（如GPU、多核CPU、DSP）。\r\n  - 计算单元 (Compute Unit)：设备中的并行计算模块。\r\n  - 处理单元 (Processing Element, PE)：最小的执行单元，对应硬件线程。\r\n\r\n#### 2. 内存模型 —— 存储规范\r\n- **存储分级：**\r\n\r\n  - 主机内存\r\n  - 全局内存：类似显存，所有工作项可读写。\r\n  - 常量内存：独立的地址空间，用于存储在内核执行期间保持不变的数据。通过专门的常量缓存（Constant Cache）实现高速访问。\r\n  - 局部内存：计算单元内共享，工作组内所有线程共享。\r\n  - 私有内存：线程独有，仅自己使用。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw03.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=rUKl355E%2FsroO8ez6vMFwDwE1J8%3D)\r\n\r\n- **内存对象 (Memory Objects)：**\r\n  - Buffer：连续线性内存，通过指针访问（类似 C 语言数组）。\r\n  - Image：带坐标和格式信息的图像内存。\r\n  - Pipe：队列型内存对象，用于设备端内核之间实现生产者-消费者通信模型。\r\n  - 数据交互方式：读\u002F写、填充 (Fill)、映射\u002F解映射 (Map\u002FUnmap)、拷贝 (Copy)。\r\n- **共享虚拟内存(SVM)：**\r\n  - 粗粒度 SVM：共享地址空间，但需显式映射\u002F解映射切换使用权。\r\n  - 细粒度 SVM：允许主机和设备在无需映射的情况下访问共享地址空间，但并发访问需要通过同步或原子操作保证一致性。\r\n  - 细粒度系统 SVM：最强形态，主机malloc的指针可直接在设备使用，无需申请，运行时自动同步。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw04.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=%2FF4tl%2BGw%2Bgy%2FwL988GrzAHlN%2B%2F0%3D)\r\n\r\n#### 3. 执行模型 —— 运行流程\r\n- **三大核心概念：**\r\n  - **上下文**：资源仓库与隔离边界（包含设备、内核对象、程序对象、内存对象）。\r\n  - **命令队列** ：设备的执行清单（内核入队、存储器入队、同步命令）。\r\n    - 执行模式：顺序执行 vs 乱序执行（需依赖 Event同步）。\r\n  - **内核**：在设备上执行的计算函数。\r\n- **内核执行原理：**\r\n  - **索引空间 (NDRange)：** 全局尺寸、局部尺寸和偏移 。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw05.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=gnDuWl5jQ1H6U2rX9AzxW%2Bx5PEQ%3D)\r\n\r\n#### 4. 编程模型\r\n- 数据并行 ：划分数据分配给不同计算单元（常用模型）。\r\n- 任务并行 ：将程序拆分为独立任务单元。利用 Event机制组织有依赖关系的任务执行。\r\n\r\n### OpenCL C 基础语法\r\n#### 1. 代码基本规则\r\n- 必须使用`__kernel`(或`kernel`) 为前置符。\r\n- 必须返回 void 类型，即无返回值。\r\n- 通过指针参数传递结果。\r\n#### 2. 限定符\r\n- **2.1 函数限定符：** `__kernel`，以及 `__attribute__`（用于编译优化，如工作组大小）。\r\n- **2.2 地址空间限定符：** `global`, `local`, `constant`, `private`。\r\n  - **（1）特殊规则：**\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw06.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=CZb5fw6CpE28OrqzKwQsw6zKicE%3D)\r\n\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw07.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=wo%2BRhgVuGqG7a3i7CJVgVAJEdK8%3D)\r\n\r\n  -  **（2）全局地址空间：**\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw08.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=v1DjG%2FpSHvCp7ZWT86Gjy1%2B5qdQ%3D)\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw09.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=bONUIkZeWGIxwopWFf9Xv586TO0%3D)\r\n\r\n   - **（3）常量地址空间：**\r\n     - 全局\r\n     - 只读\r\n     - 初始化\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw10.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=lTawpvALKPMiiD0voHZGUkhrTk0%3D)\r\n\r\n- **2.3 访问限定符：**\r\n`read_only`,` write_only`, `read_write`（主要用于图像类型）。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw11.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=qD0xVM3x8kqB4%2Fi2QK2VPM8AIPQ%3D)\r\n\r\n#### 3. 运算符\r\n标量与向量：支持类似 C 的运算符，并扩展了向量操作（硬件级优化，类似 Python 数组运算但更底层）。\r\n\r\n#### 4. 矢量数据拷贝：\r\n- 标量 ↔ 矢量：使用内建函数`vload `\u002F `vstore`。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw12.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=Bc5ouyTrNRBOk%2FW8WM4c12zxCFM%3D)\r\n\r\n- 矢量 ↔ 矢量：使用“=”直接赋值。\r\n\r\n#### 5. 原子函数\r\n- 作用：解决多线程读写共享内存的数据一致性问题。\r\n- 特性：不可分割性、支持内存范围、性能影响（类似加锁）。\r\n- 常用操作：原子读写、原子算术操作、原子逻辑运算（与\u002F或\u002F异或）、原子比较交换。\r\n\r\n#### 6.工作组函数\r\n- 背景：利用工作组内共享内存进行高效协同。\r\n- 常用函数：\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw13.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=1hUUVGU2xbemGGboLIG7Oz2KWU4%3D)\r\n\r\n\r\n### OpenCL 常用内核操作\r\n#### 1. 工作组同步\r\n- **组内同步 barrier：**\r\n限制：仅适用于工作组内，不支持工作组间全局同步（硬件限制）\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw14.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=z%2FaNZO%2BwmJdpcE8%2BT32NA%2FlOphs%3D)\r\n\r\n- **组间同步：**\r\n  - OpenCL 不支持组间同步（硬件限制）。\r\n  - 替代方案：\r\n   ①原子操作：可用于全局求和，但性能瓶颈、扩展性差。\r\n   ②主机端处理：GPU做局部归约，CPU做最终归约。\r\n   ③ 模拟锁：结合原子操作和全局标志位（复杂且性能差）。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw15.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=uZ2bc3kGr8JXmDYKPZ3u1p8VGX0%3D)\r\n\r\n#### 2. 归约操作\r\n- 核心思想：通过多次“合并”逐步减少数据量，最终将结果聚合成一个单一输出。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw16.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=MGNUxKbmZXDucqvqUcjaUcYUdSo%3D)\r\n\r\n### OpenCL 基础算子示例\r\n#### 1. 向量加法——串行实现\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw17.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=4XV8O68jYDOcKcB3dGXtz42RYzU%3D)\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw18.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=XC7zpClaNwYbi%2BSPMUvcnu749bY%3D)\r\n\r\n#### 2. 多线程实现\r\n\r\n在多核 CPU 架构中，利用多线程技术优化向量加法的核心逻辑——数据并行 (Data Parallelism)：与串行实现不同，这里将整个计算任务划分成了独立的“块” (Chunks)。任务分配：线程 0 (Thread 0)：负责处理数据的一个子集（如图中的索引 0-4）。线程 1 (Thread 1)：同时负责处理数据的另一个子集（如图中的索引 9-12）。并发执行：在 Time 0 时刻，线程 0 正在计算 $A[0]+B[0]$，而同一时刻，线程 1 也在计算 $A[9]+B[9]$。两个线程互不干扰，并行推进。优势：理论上，使用 $M$ 个线程可以将计算时间缩短为原来的 $1\u002FM$（不考虑线程创建和上下文切换的开销）。这是高性能计算的基础思想——通过增加计算资源来换取时间。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw19.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=%2B%2Box%2FmOEzqWjIOU7HG%2FM%2Bc6xA9w%3D)\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw20.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=XW7wCqNal2oKeo%2FbukYJTa4320k%3D)\r\n\r\n#### 3.OpencL 并行实现\r\n\r\n与 CPU 多线程将数据切分为大块不同，OpenCL 的策略是将计算任务切分到最细粒度（Fine-grained）。工作项 (Work-item)：我们将每一个独立的加法操作（$A[i] + B[i]$）分配给一个独立的“工作项”（类似 CUDA 中的 Thread）。映射关系：Item 0：负责计算索引 0 的数据。Item 1：负责计算索引 1 的数据。...Item N：负责计算索引 N 的数据。\r\n\r\n执行时序：如图所示，所有工作项在 Time 0 处于活跃状态（取决于硬件核心数，逻辑上是同时启动的）。这种架构消除了代码中的显式循环结构，将循环的迭代“展开”到了硬件的并行度上。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw21.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=lAT2XYLbafzSFIO7GU0MZedOwh8%3D)\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw22.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=FzxsSHURRw1w4vI1GQolpa9rfTk%3D)\r\n\r\n\r\n\r\n### 总结\r\n本课主要讲解了 OpenCL 的核心抽象、编程语法、常用操作。下节课将讲解复杂算子实践与性能优化方法。\r\n\r\n\r\n\r\n![2025冬季训练营课程表](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_01_zw6.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=F9UYYN6GHyw0aDIvfyvnXUb6gKw%3D)\r\n\r\n### 💡 学习贴士\r\n更多细节及完整课程内容，请观看直播或查看课程回放。\r\n\r\n链接：https:\u002F\u002Fwww.infinitensor.com\u002Fcamp\u002Fwinter2025\r\n\r\n### 📚 训练营报名持续进行中\r\n扫码报名与加入群聊，或点击 **「阅读原文」** 直达官网报名\r\n\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_01_zw7.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=4qCORU7P3l9%2FAWZfM%2BMlpmzjXSU%3D)",{"publishTime":7,"createTime":109,"canonicalPath":114,"id":115,"title":116},"\u002Fstudy-material\u002Fstudy-31","study-31","InfiniTensor 冬季训练营 CUDA 编程第四课《分块与不规则访存》",77,"\u002Fstudy-material\u002Fstudy-32","study-32","markdown",{"publishTime":7,"createTime":109,"canonicalPath":122,"id":123,"title":124},"\u002Fstudy-material\u002Fstudy-33","study-33","InfiniTensor 冬季训练营前沿模型第四课《大模型前沿架构》",{"htmlContent":126,"headings":127},"\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw01.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=DAojmXKA1K3nkrOI4xTg%2BTwzfAk%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>2026 年 1 月 22 日，2025 冬季 InfiniTensor 大模型与人工智能系统训练营 OpenCL 编程系列第二课《OpenCL 编程抽象与语法》开讲。\u003C\u002Fp>\n\u003Cp>本节课主要讲解 OpenCL 的核心抽象、编程语法、常用操作。\u003C\u002Fp>\n\u003Ch3 id=\"opencl-核心抽象模型\">\u003Ca class=\"anchor\" href=\"#opencl-核心抽象模型\" aria-label=\"跳转到标题：OpenCL 核心抽象模型\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>OpenCL 核心抽象模型\u003C\u002Fh3>\u003Ch4 id=\"1-平台模型-硬件抽象\">\u003Ca class=\"anchor\" href=\"#1-平台模型-硬件抽象\" aria-label=\"跳转到标题：1. 平台模型—— 硬件抽象\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>1. 平台模型—— 硬件抽象\u003C\u002Fh4>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw02.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=IMEh%2FDPQYufp4TF1lmfDMokd2AY%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>核心概念：\u003C\u002Fstrong> 主机（Host）与设备（Device）的异构架构。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>层级结构：\u003C\u002Fstrong>\u003Cul>\n\u003Cli>主机 (Host)：通常指CPU，负责控制中心、任务调度和数据同步。\u003C\u002Fli>\n\u003Cli>设备 (Device)：异构计算硬件（如GPU、多核CPU、DSP）。\u003C\u002Fli>\n\u003Cli>计算单元 (Compute Unit)：设备中的并行计算模块。\u003C\u002Fli>\n\u003Cli>处理单元 (Processing Element, PE)：最小的执行单元，对应硬件线程。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"2-内存模型-存储规范\">\u003Ca class=\"anchor\" href=\"#2-内存模型-存储规范\" aria-label=\"跳转到标题：2. 内存模型 —— 存储规范\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>2. 内存模型 —— 存储规范\u003C\u002Fh4>\u003Cul>\n\u003Cli>\u003Cp>\u003Cstrong>存储分级：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>主机内存\u003C\u002Fli>\n\u003Cli>全局内存：类似显存，所有工作项可读写。\u003C\u002Fli>\n\u003Cli>常量内存：独立的地址空间，用于存储在内核执行期间保持不变的数据。通过专门的常量缓存（Constant Cache）实现高速访问。\u003C\u002Fli>\n\u003Cli>局部内存：计算单元内共享，工作组内所有线程共享。\u003C\u002Fli>\n\u003Cli>私有内存：线程独有，仅自己使用。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw03.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=rUKl355E%2FsroO8ez6vMFwDwE1J8%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>内存对象 (Memory Objects)：\u003C\u002Fstrong>\u003Cul>\n\u003Cli>Buffer：连续线性内存，通过指针访问（类似 C 语言数组）。\u003C\u002Fli>\n\u003Cli>Image：带坐标和格式信息的图像内存。\u003C\u002Fli>\n\u003Cli>Pipe：队列型内存对象，用于设备端内核之间实现生产者-消费者通信模型。\u003C\u002Fli>\n\u003Cli>数据交互方式：读\u002F写、填充 (Fill)、映射\u002F解映射 (Map\u002FUnmap)、拷贝 (Copy)。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>共享虚拟内存(SVM)：\u003C\u002Fstrong>\u003Cul>\n\u003Cli>粗粒度 SVM：共享地址空间，但需显式映射\u002F解映射切换使用权。\u003C\u002Fli>\n\u003Cli>细粒度 SVM：允许主机和设备在无需映射的情况下访问共享地址空间，但并发访问需要通过同步或原子操作保证一致性。\u003C\u002Fli>\n\u003Cli>细粒度系统 SVM：最强形态，主机malloc的指针可直接在设备使用，无需申请，运行时自动同步。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw04.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=%2FF4tl%2BGw%2Bgy%2FwL988GrzAHlN%2B%2F0%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch4 id=\"3-执行模型-运行流程\">\u003Ca class=\"anchor\" href=\"#3-执行模型-运行流程\" aria-label=\"跳转到标题：3. 执行模型 —— 运行流程\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>3. 执行模型 —— 运行流程\u003C\u002Fh4>\u003Cul>\n\u003Cli>\u003Cstrong>三大核心概念：\u003C\u002Fstrong>\u003Cul>\n\u003Cli>\u003Cstrong>上下文\u003C\u002Fstrong>：资源仓库与隔离边界（包含设备、内核对象、程序对象、内存对象）。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>命令队列\u003C\u002Fstrong> ：设备的执行清单（内核入队、存储器入队、同步命令）。\u003Cul>\n\u003Cli>执行模式：顺序执行 vs 乱序执行（需依赖 Event同步）。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>内核\u003C\u002Fstrong>：在设备上执行的计算函数。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>内核执行原理：\u003C\u002Fstrong>\u003Cul>\n\u003Cli>\u003Cstrong>索引空间 (NDRange)：\u003C\u002Fstrong> 全局尺寸、局部尺寸和偏移 。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw05.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=gnDuWl5jQ1H6U2rX9AzxW%2Bx5PEQ%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch4 id=\"4-编程模型\">\u003Ca class=\"anchor\" href=\"#4-编程模型\" aria-label=\"跳转到标题：4. 编程模型\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>4. 编程模型\u003C\u002Fh4>\u003Cul>\n\u003Cli>数据并行 ：划分数据分配给不同计算单元（常用模型）。\u003C\u002Fli>\n\u003Cli>任务并行 ：将程序拆分为独立任务单元。利用 Event机制组织有依赖关系的任务执行。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"opencl-c-基础语法\">\u003Ca class=\"anchor\" href=\"#opencl-c-基础语法\" aria-label=\"跳转到标题：OpenCL C 基础语法\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>OpenCL C 基础语法\u003C\u002Fh3>\u003Ch4 id=\"1-代码基本规则\">\u003Ca class=\"anchor\" href=\"#1-代码基本规则\" aria-label=\"跳转到标题：1. 代码基本规则\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>1. 代码基本规则\u003C\u002Fh4>\u003Cul>\n\u003Cli>必须使用\u003Ccode>__kernel\u003C\u002Fcode>(或\u003Ccode>kernel\u003C\u002Fcode>) 为前置符。\u003C\u002Fli>\n\u003Cli>必须返回 void 类型，即无返回值。\u003C\u002Fli>\n\u003Cli>通过指针参数传递结果。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"2-限定符\">\u003Ca class=\"anchor\" href=\"#2-限定符\" aria-label=\"跳转到标题：2. 限定符\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>2. 限定符\u003C\u002Fh4>\u003Cul>\n\u003Cli>\u003Cstrong>2.1 函数限定符：\u003C\u002Fstrong> \u003Ccode>__kernel\u003C\u002Fcode>，以及 \u003Ccode>__attribute__\u003C\u002Fcode>（用于编译优化，如工作组大小）。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>2.2 地址空间限定符：\u003C\u002Fstrong> \u003Ccode>global\u003C\u002Fcode>, \u003Ccode>local\u003C\u002Fcode>, \u003Ccode>constant\u003C\u002Fcode>, \u003Ccode>private\u003C\u002Fcode>。\u003Cul>\n\u003Cli>\u003Cstrong>（1）特殊规则：\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw06.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=CZb5fw6CpE28OrqzKwQsw6zKicE%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw07.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=wo%2BRhgVuGqG7a3i7CJVgVAJEdK8%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>（2）全局地址空间：\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw08.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=v1DjG%2FpSHvCp7ZWT86Gjy1%2B5qdQ%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw09.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=bONUIkZeWGIxwopWFf9Xv586TO0%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>（3）常量地址空间：\u003C\u002Fstrong>\u003Cul>\n\u003Cli>全局\u003C\u002Fli>\n\u003Cli>只读\u003C\u002Fli>\n\u003Cli>初始化\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw10.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=lTawpvALKPMiiD0voHZGUkhrTk0%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>2.3 访问限定符：\u003C\u002Fstrong>\u003Cbr>\u003Ccode>read_only\u003C\u002Fcode>,\u003Ccode> write_only\u003C\u002Fcode>, \u003Ccode>read_write\u003C\u002Fcode>（主要用于图像类型）。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw11.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=qD0xVM3x8kqB4%2Fi2QK2VPM8AIPQ%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch4 id=\"3-运算符\">\u003Ca class=\"anchor\" href=\"#3-运算符\" aria-label=\"跳转到标题：3. 运算符\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>3. 运算符\u003C\u002Fh4>\u003Cp>标量与向量：支持类似 C 的运算符，并扩展了向量操作（硬件级优化，类似 Python 数组运算但更底层）。\u003C\u002Fp>\n\u003Ch4 id=\"4-矢量数据拷贝\">\u003Ca class=\"anchor\" href=\"#4-矢量数据拷贝\" aria-label=\"跳转到标题：4. 矢量数据拷贝：\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>4. 矢量数据拷贝：\u003C\u002Fh4>\u003Cul>\n\u003Cli>标量 ↔ 矢量：使用内建函数\u003Ccode>vload \u003C\u002Fcode>\u002F \u003Ccode>vstore\u003C\u002Fcode>。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw12.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=Bc5ouyTrNRBOk%2FW8WM4c12zxCFM%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>矢量 ↔ 矢量：使用“=”直接赋值。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"5-原子函数\">\u003Ca class=\"anchor\" href=\"#5-原子函数\" aria-label=\"跳转到标题：5. 原子函数\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>5. 原子函数\u003C\u002Fh4>\u003Cul>\n\u003Cli>作用：解决多线程读写共享内存的数据一致性问题。\u003C\u002Fli>\n\u003Cli>特性：不可分割性、支持内存范围、性能影响（类似加锁）。\u003C\u002Fli>\n\u003Cli>常用操作：原子读写、原子算术操作、原子逻辑运算（与\u002F或\u002F异或）、原子比较交换。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"6-工作组函数\">\u003Ca class=\"anchor\" href=\"#6-工作组函数\" aria-label=\"跳转到标题：6.工作组函数\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>6.工作组函数\u003C\u002Fh4>\u003Cul>\n\u003Cli>背景：利用工作组内共享内存进行高效协同。\u003C\u002Fli>\n\u003Cli>常用函数：\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw13.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=1hUUVGU2xbemGGboLIG7Oz2KWU4%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch3 id=\"opencl-常用内核操作\">\u003Ca class=\"anchor\" href=\"#opencl-常用内核操作\" aria-label=\"跳转到标题：OpenCL 常用内核操作\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>OpenCL 常用内核操作\u003C\u002Fh3>\u003Ch4 id=\"1-工作组同步\">\u003Ca class=\"anchor\" href=\"#1-工作组同步\" aria-label=\"跳转到标题：1. 工作组同步\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>1. 工作组同步\u003C\u002Fh4>\u003Cul>\n\u003Cli>\u003Cstrong>组内同步 barrier：\u003C\u002Fstrong>\u003Cbr>限制：仅适用于工作组内，不支持工作组间全局同步（硬件限制）\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw14.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=z%2FaNZO%2BwmJdpcE8%2BT32NA%2FlOphs%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>组间同步：\u003C\u002Fstrong>\u003Cul>\n\u003Cli>OpenCL 不支持组间同步（硬件限制）。\u003C\u002Fli>\n\u003Cli>替代方案：\u003Cbr> ①原子操作：可用于全局求和，但性能瓶颈、扩展性差。\u003Cbr> ②主机端处理：GPU做局部归约，CPU做最终归约。\u003Cbr> ③ 模拟锁：结合原子操作和全局标志位（复杂且性能差）。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw15.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=uZ2bc3kGr8JXmDYKPZ3u1p8VGX0%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch4 id=\"2-归约操作\">\u003Ca class=\"anchor\" href=\"#2-归约操作\" aria-label=\"跳转到标题：2. 归约操作\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>2. 归约操作\u003C\u002Fh4>\u003Cul>\n\u003Cli>核心思想：通过多次“合并”逐步减少数据量，最终将结果聚合成一个单一输出。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw16.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=MGNUxKbmZXDucqvqUcjaUcYUdSo%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch3 id=\"opencl-基础算子示例\">\u003Ca class=\"anchor\" href=\"#opencl-基础算子示例\" aria-label=\"跳转到标题：OpenCL 基础算子示例\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>OpenCL 基础算子示例\u003C\u002Fh3>\u003Ch4 id=\"1-向量加法-串行实现\">\u003Ca class=\"anchor\" href=\"#1-向量加法-串行实现\" aria-label=\"跳转到标题：1. 向量加法——串行实现\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>1. 向量加法——串行实现\u003C\u002Fh4>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw17.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=4XV8O68jYDOcKcB3dGXtz42RYzU%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw18.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=XC7zpClaNwYbi%2BSPMUvcnu749bY%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch4 id=\"2-多线程实现\">\u003Ca class=\"anchor\" href=\"#2-多线程实现\" aria-label=\"跳转到标题：2. 多线程实现\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>2. 多线程实现\u003C\u002Fh4>\u003Cp>在多核 CPU 架构中，利用多线程技术优化向量加法的核心逻辑——数据并行 (Data Parallelism)：与串行实现不同，这里将整个计算任务划分成了独立的“块” (Chunks)。任务分配：线程 0 (Thread 0)：负责处理数据的一个子集（如图中的索引 0-4）。线程 1 (Thread 1)：同时负责处理数据的另一个子集（如图中的索引 9-12）。并发执行：在 Time 0 时刻，线程 0 正在计算 $A[0]+B[0]$，而同一时刻，线程 1 也在计算 $A[9]+B[9]$。两个线程互不干扰，并行推进。优势：理论上，使用 $M$ 个线程可以将计算时间缩短为原来的 $1\u002FM$（不考虑线程创建和上下文切换的开销）。这是高性能计算的基础思想——通过增加计算资源来换取时间。\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw19.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=%2B%2Box%2FmOEzqWjIOU7HG%2FM%2Bc6xA9w%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw20.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=XW7wCqNal2oKeo%2FbukYJTa4320k%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch4 id=\"3-opencl-并行实现\">\u003Ca class=\"anchor\" href=\"#3-opencl-并行实现\" aria-label=\"跳转到标题：3.OpencL 并行实现\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>3.OpencL 并行实现\u003C\u002Fh4>\u003Cp>与 CPU 多线程将数据切分为大块不同，OpenCL 的策略是将计算任务切分到最细粒度（Fine-grained）。工作项 (Work-item)：我们将每一个独立的加法操作（$A[i] + B[i]$）分配给一个独立的“工作项”（类似 CUDA 中的 Thread）。映射关系：Item 0：负责计算索引 0 的数据。Item 1：负责计算索引 1 的数据。...Item N：负责计算索引 N 的数据。\u003C\u002Fp>\n\u003Cp>执行时序：如图所示，所有工作项在 Time 0 处于活跃状态（取决于硬件核心数，逻辑上是同时启动的）。这种架构消除了代码中的显式循环结构，将循环的迭代“展开”到了硬件的并行度上。\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw21.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=lAT2XYLbafzSFIO7GU0MZedOwh8%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_32_zw22.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=FzxsSHURRw1w4vI1GQolpa9rfTk%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch3 id=\"总结\">\u003Ca class=\"anchor\" href=\"#总结\" aria-label=\"跳转到标题：总结\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>总结\u003C\u002Fh3>\u003Cp>本课主要讲解了 OpenCL 的核心抽象、编程语法、常用操作。下节课将讲解复杂算子实践与性能优化方法。\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_01_zw6.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=F9UYYN6GHyw0aDIvfyvnXUb6gKw%3D\" alt=\"2025冬季训练营课程表\">\u003C\u002Fp>\n\u003Ch3 id=\"学习贴士\">\u003Ca class=\"anchor\" href=\"#学习贴士\" aria-label=\"跳转到标题：💡 学习贴士\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>💡 学习贴士\u003C\u002Fh3>\u003Cp>更多细节及完整课程内容，请观看直播或查看课程回放。\u003C\u002Fp>\n\u003Cp>链接：\u003Ca href=\"https:\u002F\u002Fwww.infinitensor.com\u002Fcamp\u002Fwinter2025\">https:\u002F\u002Fwww.infinitensor.com\u002Fcamp\u002Fwinter2025\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3 id=\"训练营报名持续进行中\">\u003Ca class=\"anchor\" href=\"#训练营报名持续进行中\" aria-label=\"跳转到标题：📚 训练营报名持续进行中\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>📚 训练营报名持续进行中\u003C\u002Fh3>\u003Cp>扫码报名与加入群聊，或点击 \u003Cstrong>「阅读原文」\u003C\u002Fstrong> 直达官网报名\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_01_zw7.jpg?Expires=1792752563&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=4qCORU7P3l9%2FAWZfM%2BMlpmzjXSU%3D\" alt=\"\">\u003C\u002Fp>\n",[128,131,135,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,183,186,188,191],{"id":129,"text":130,"level":9},"opencl-核心抽象模型","OpenCL 核心抽象模型",{"id":132,"text":133,"level":134},"1-平台模型-硬件抽象","1. 平台模型—— 硬件抽象",4,{"id":136,"text":137,"level":134},"2-内存模型-存储规范","2. 内存模型 —— 存储规范",{"id":139,"text":140,"level":134},"3-执行模型-运行流程","3. 执行模型 —— 运行流程",{"id":142,"text":143,"level":134},"4-编程模型","4. 编程模型",{"id":145,"text":146,"level":9},"opencl-c-基础语法","OpenCL C 基础语法",{"id":148,"text":149,"level":134},"1-代码基本规则","1. 代码基本规则",{"id":151,"text":152,"level":134},"2-限定符","2. 限定符",{"id":154,"text":155,"level":134},"3-运算符","3. 运算符",{"id":157,"text":158,"level":134},"4-矢量数据拷贝","4. 矢量数据拷贝：",{"id":160,"text":161,"level":134},"5-原子函数","5. 原子函数",{"id":163,"text":164,"level":134},"6-工作组函数","6.工作组函数",{"id":166,"text":167,"level":9},"opencl-常用内核操作","OpenCL 常用内核操作",{"id":169,"text":170,"level":134},"1-工作组同步","1. 工作组同步",{"id":172,"text":173,"level":134},"2-归约操作","2. 归约操作",{"id":175,"text":176,"level":9},"opencl-基础算子示例","OpenCL 基础算子示例",{"id":178,"text":179,"level":134},"1-向量加法-串行实现","1. 向量加法——串行实现",{"id":181,"text":182,"level":134},"2-多线程实现","2. 多线程实现",{"id":184,"text":185,"level":134},"3-opencl-并行实现","3.OpencL 并行实现",{"id":187,"text":187,"level":9},"总结",{"id":189,"text":190,"level":9},"学习贴士","💡 学习贴士",{"id":192,"text":193,"level":9},"训练营报名持续进行中","📚 训练营报名持续进行中"]