[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-home-live-entry-setting":3,"site-header-contests":8,"site-header-camps":49,"study-material-detail-study-83":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=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=U5uEBYHvOr5t1PntxcixNNUXfd0%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=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=IMYJid%2Fjp0BG%2FDLv%2BBmsvMXo4Q8%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=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=BAb9SulTr2AaX%2FcpwGmSPY%2BghM0%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_83_fm.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=GUvMxAL%2FhpDyrHubpTMk2qAwrq4%3D","OpenCL,NDRange,Work-group,内存模型,并行归约","讲解 OpenCL 平台 \u002F 执行 \u002F 内存 \u002F 四大编程模型，详解 Kernel 语法、NDRange 索引、四类内存地址空间，介绍原子操作、Barrier 同步与树形并行归约实现。","2026-10-22 20:38:11",2,"2026 夏季 InfiniTensor 训练营 OpenCL 编程 2：《OpenCL 编程抽象与语法》 ","![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw01.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=uggBiRauZ%2BrjMK3%2ByHZaI5hqMu4%3D)\r\n\r\n\r\n\u003Cspan style=\"font-size:12px;color:#555;\">7 月 28 日，2026 夏季 InfiniTensor 训练营 OpenCL 编程方向第二课《OpenCL 编程抽象与语法》开讲。\r\n前置课程《OpenCL 概述与运行时》讲解了 OpenCL 基础概念与运行时全流程，通过生动类比，拆解平台、设备、上下文、命令队列等 12 步核心 API 调用链路，为实战课程打下坚实基础。\u003C\u002Fspan>\r\n\r\n上一节课我们走通了主机端（Host）的完整流程，本节课我们将视角切换至**设备端（Device）**，深入内核内部，通过 OpenCL 四大模型建立全局概念，并从最基础的向量加法出发，一步步掌握数据并行、内存模型及多阶段归约的核心能力。\r\n\r\n> 💡 **注**：本课示例均采用 OpenCL C 1.2 兼容写法，确保在更多练习环境中可用。\r\n\r\n## OpenCL 四大模型概览\r\nOpenCL 并非仅靠一组 API 描述计算，而是通过四个相互配合的模型回答四类核心问题：\r\n\r\n| 模型 | 核心问题 | 关键概念 |\r\n| :--- | :--- | :--- |\r\n| **平台模型** | 在哪里算？ | Host, Device, CU, PE（可移植的逻辑层级） |\r\n| **执行模型** | 启动多少份？ | NDRange, Work-group, Work-item |\r\n| **内存模型** | 数据在哪放？谁能看？ | Global, Local, Constant, Private |\r\n| **编程模型** | 任务如何拆分衔接？ | 数据并行 vs 任务并行 |\r\n\r\n### 平台模型：计算资源的分层抽象\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw02.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=VUIexb4VSHC0hjC0ABNHRa41ME0%3D)\r\n\r\n- **Host**：运行普通程序，负责准备数据、组织命令、处理结果。\r\n-  **Device**：CPU\u002FGPU\u002F加速器，内含多个 **CU (Compute Unit)**。\r\n- **PE (Processing Element)**：CU 内的实际指令执行单元。\r\n- **映射关系**：Work-group 是 OpenCL 的逻辑执行单位，组内 Work-items 分配到 PE 上执行。\r\n\u003Cspan style=\"font-size:12px;color:#555;\">注意：这是逻辑层级而非固定硬件线程图，保证了跨平台可移植性。\u003C\u002Fspan>\r\n\r\n### 执行模型：Host 端对象与设备执行的桥梁\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw03.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=FbuupyZQ26Nicu%2B1a0pOHQjI3FA%3D)\r\n\r\n- **Context**：相关对象的共同工作范围（关联 Device、Program、Kernel、Memory Object）。\r\n- **Command Queue**：发往设备的命令通道（内核执行、内存传送、同步命令）。\r\n- **NDRange**：Kernel 提交后展开的索引空间，决定启动实例的数量与维度。\r\n- **Event**：表达命令间的依赖关系（如写入完成后再计算）。\r\n\r\n\r\n## 数据并行与 Kernel 基础\r\n### 从串行到并行\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw04.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=LmE14ym0QUswxbxADeTqu%2BEZI1U%3D)\r\n\r\n1. **依赖分析**：判断循环迭代间是否存在数据依赖。独立迭代适合数据并行；存在依赖（如前缀和）则需特殊处理。\r\n2. **数据并行**：同一操作作用于不同数据（SPMD），每个 Work-item 执行相同代码但拥有不同 Global ID。\r\n3. **任务并行**：不同阶段\u002F操作组成依赖图，通过 Event 管理，无依赖时可并行。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw05.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=Va8SRUBWi4v3f4f6mX%2BJtBBffTQ%3D)\r\n\r\n### OpenCL C 语言特性\r\n- 基于 C99，增加 `__kernel`、地址空间限定符、向量类型及内建函数。\r\n- **入口规范**：必须返回 `void`，结果只能写入 Buffer\u002FImage，Host 读取前必须同步。\r\n\r\n### 最小 Kernel 拆解\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw06.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=3%2B5EkX8fp%2FL7aD6qwGtcpy6IgVg%3D)\r\n\r\n1. **参数对应**：\r\n- 设备端指针需匹配 Host 端 `cl_mem`；\r\n- 标量需注意字节对齐（推荐 `cl_int` 等类型）。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw07.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=5UA1FOUlD3RUEOLqMK2StyAbzzs%3D)\r\n\r\n2. **边界检查**：当 Global Size 向上取整为 Local Size 倍数时，多余线程必须在访问数组前返回，防止越界。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw08.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=spQ%2BG15bhZbEsq%2BfEw%2ByfbA3eCU%3D)\r\n\r\n\r\n### NDRange 与索引计算\r\n1. **三维索引空间**：Global Size (总网格) → Work-group (协作单元) → Work-item (执行实例)。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw09.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=iBwGoGBTNZ6BPExrvqQgJXaKDFs%3D)\r\n\r\n2. **ID 关系式**（1D, offset=0）：`Global_ID = Group_ID × Local_Size + Local_ID`\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw10.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=Cfkg4ZjBsRZKAu6ElenXOOTEs1w%3D)\r\n\r\n\r\n3. **二维扩展**：处理图像时常用 2D NDRange。行主序下标计算：`idx = y * width + x`。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw11.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=RTw69wWd70dArc8ndgw5UYUWstM%3D)\r\n\r\n\r\n## 内存模型与地址空间\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw12.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=09Vl%2FvoaALewAzsWApbDEpX1dBI%3D)\r\n\r\n### 地址空间限定符\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw13.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=vYgkIX%2FXOyEdfGvPtpHJMk6TW74%3D)\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw14.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=x5CJuz0V65UtL0timUcEgWAvjKc%3D)\r\n\r\n\r\n### 图像对象访问\r\n- 不能使用数组下标，必须使用 `read_image` \u002F `write_image`。\r\n- 访问限定符：`read_only`, `write_only`, `read_write`（需版本支持）。\r\n\r\n### 标量和向量类型\r\n#### 1. 标量：\r\nchar\u002Fshort\u002Fint\u002Flong 对应 8\u002F16\u002F32\u002F64 位；float 为 32位。\r\n\r\n#### 2. 向量：\r\nT2、T4、T8、T16，例如 int4、float4。\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw15.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=ih%2BgiE7GVPKXGMYMQ%2BYsP1roKao%3D)\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw16.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=%2BbpVtEIssr7qymgeROMXAlkvTM4%3D)\r\n\r\n### 内建函数\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw17.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=YAgLbkFeIlG2HxneSDgVQdybp4U%3D)\r\n\r\n\r\n## 并发控制与同步机制\r\n### 原子操作 (Atomic)\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw18.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=5nm1MZB8hEOdNNJ9Ll5iN%2BICFms%3D)\r\n\r\n- **问题**：普通 `counter++` 是非原子的（读-改-写分离），多线程竞争导致数据丢失。\r\n- **解决**：使用 `atomic_inc` 等保证操作不可分割。\r\n- **代价**：竞争同一地址时会串行化，降低吞吐，切勿滥用。\r\n\r\n### Barrier 同步\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw19.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=QkEujfXg3%2FtY%2BpPsK4vM%2BfYEmqM%3D)\r\n\r\n1. **双重语义**：\r\n    - **执行汇合**：组内所有成员到达后才继续向下执行。\r\n    - **内存可见性**：保证 Barrier 前的写入对 Barrier 后的读取可见。\r\n2. **正确性条件**：**全组收敛**。同一个 Work-group 内所有 Work-item 必须执行到同一个 Barrier。\r\n3. **局限**：Barrier 仅限组内，**无法**实现跨组同步。\r\n\r\n### 树形归约\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw20.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=jgdiYnlEJYRXJiBB0kn1uHYxE2k%3D)\r\n\r\n- **步长递减**：树形归约通常采用逐步减半或逐步倍增的方式减少参与线程数量，具体 stride 取决于算法设计。\r\n- **Barrier 位置**：每一轮写入后、下一轮读取前**必须**插入 Barrier，防止读到旧值。\r\n- **单位元填充**：为边界线程填充不影响结果的值（如加法用 0，乘法用 1），统一代码逻辑。\r\n\r\n\r\n\r\n\r\n## 加入训练营\r\n#### 📺完整课程内容，请观看直播或查看课程回放：\r\n**InfiniTensor 官网**： https:\u002F\u002Fwww.infinitensor.com\r\n\r\n**B站直播**： InfiniTensor 官方直播间\r\n\r\n**视频号直播**： InfiniTensor 视频号预约\r\n\r\n**答疑交流**： 训练营官方社群⬇️\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002F2026-xjq.png?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=0obYBYApsaMtYkKqut1L1j7ZvQI%3D)\r\n\r\n## 关注与交流\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002Fnews_ewm02.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=b1NpkMXCjFYgZ9lW3RNT0HCHt5Y%3D)",{"publishTime":7,"createTime":109,"canonicalPath":114,"id":115,"title":116},"\u002Fstudy-material\u002Fstudy-82","study-82","2026 夏季 InfiniTensor 训练营 AI 编程与智能体应用 4：《AI 编程与智能体应用实践：从需求到原型实现》",26,"\u002Fstudy-material\u002Fstudy-83","study-83","markdown",{"publishTime":7,"createTime":109,"canonicalPath":122,"id":123,"title":124},"\u002Fstudy-material\u002Fstudy-84","study-84","2026 夏季 InfiniTensor 训练营 AI 编程与智能体应用 5：《智能体现状与未来发展全景》",{"htmlContent":126,"headings":127},"\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw01.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=uggBiRauZ%2BrjMK3%2ByHZaI5hqMu4%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>\u003Cspan style=\"font-size:12px;color:#555;\">7 月 28 日，2026 夏季 InfiniTensor 训练营 OpenCL 编程方向第二课《OpenCL 编程抽象与语法》开讲。\u003Cbr>前置课程《OpenCL 概述与运行时》讲解了 OpenCL 基础概念与运行时全流程，通过生动类比，拆解平台、设备、上下文、命令队列等 12 步核心 API 调用链路，为实战课程打下坚实基础。\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>上一节课我们走通了主机端（Host）的完整流程，本节课我们将视角切换至\u003Cstrong>设备端（Device）\u003C\u002Fstrong>，深入内核内部，通过 OpenCL 四大模型建立全局概念，并从最基础的向量加法出发，一步步掌握数据并行、内存模型及多阶段归约的核心能力。\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>💡 \u003Cstrong>注\u003C\u002Fstrong>：本课示例均采用 OpenCL C 1.2 兼容写法，确保在更多练习环境中可用。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"opencl-四大模型概览\">\u003Ca class=\"anchor\" href=\"#opencl-四大模型概览\" aria-label=\"跳转到标题：OpenCL 四大模型概览\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>OpenCL 四大模型概览\u003C\u002Fh2>\u003Cp>OpenCL 并非仅靠一组 API 描述计算，而是通过四个相互配合的模型回答四类核心问题：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth align=\"left\">模型\u003C\u002Fth>\n\u003Cth align=\"left\">核心问题\u003C\u002Fth>\n\u003Cth align=\"left\">关键概念\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd align=\"left\">\u003Cstrong>平台模型\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd align=\"left\">在哪里算？\u003C\u002Ftd>\n\u003Ctd align=\"left\">Host, Device, CU, PE（可移植的逻辑层级）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">\u003Cstrong>执行模型\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd align=\"left\">启动多少份？\u003C\u002Ftd>\n\u003Ctd align=\"left\">NDRange, Work-group, Work-item\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">\u003Cstrong>内存模型\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd align=\"left\">数据在哪放？谁能看？\u003C\u002Ftd>\n\u003Ctd align=\"left\">Global, Local, Constant, Private\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">\u003Cstrong>编程模型\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd align=\"left\">任务如何拆分衔接？\u003C\u002Ftd>\n\u003Ctd align=\"left\">数据并行 vs 任务并行\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch3 id=\"平台模型-计算资源的分层抽象\">\u003Ca class=\"anchor\" href=\"#平台模型-计算资源的分层抽象\" aria-label=\"跳转到标题：平台模型：计算资源的分层抽象\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>平台模型：计算资源的分层抽象\u003C\u002Fh3>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw02.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=VUIexb4VSHC0hjC0ABNHRa41ME0%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Host\u003C\u002Fstrong>：运行普通程序，负责准备数据、组织命令、处理结果。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Device\u003C\u002Fstrong>：CPU\u002FGPU\u002F加速器，内含多个 \u003Cstrong>CU (Compute Unit)\u003C\u002Fstrong>。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PE (Processing Element)\u003C\u002Fstrong>：CU 内的实际指令执行单元。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>映射关系\u003C\u002Fstrong>：Work-group 是 OpenCL 的逻辑执行单位，组内 Work-items 分配到 PE 上执行。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cspan style=\"font-size:12px;color:#555;\">注意：这是逻辑层级而非固定硬件线程图，保证了跨平台可移植性。\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"执行模型-host-端对象与设备执行的桥梁\">\u003Ca class=\"anchor\" href=\"#执行模型-host-端对象与设备执行的桥梁\" aria-label=\"跳转到标题：执行模型：Host 端对象与设备执行的桥梁\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>执行模型：Host 端对象与设备执行的桥梁\u003C\u002Fh3>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw03.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=FbuupyZQ26Nicu%2B1a0pOHQjI3FA%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Context\u003C\u002Fstrong>：相关对象的共同工作范围（关联 Device、Program、Kernel、Memory Object）。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Command Queue\u003C\u002Fstrong>：发往设备的命令通道（内核执行、内存传送、同步命令）。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>NDRange\u003C\u002Fstrong>：Kernel 提交后展开的索引空间，决定启动实例的数量与维度。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Event\u003C\u002Fstrong>：表达命令间的依赖关系（如写入完成后再计算）。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"数据并行与-kernel-基础\">\u003Ca class=\"anchor\" href=\"#数据并行与-kernel-基础\" aria-label=\"跳转到标题：数据并行与 Kernel 基础\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>数据并行与 Kernel 基础\u003C\u002Fh2>\u003Ch3 id=\"从串行到并行\">\u003Ca class=\"anchor\" href=\"#从串行到并行\" aria-label=\"跳转到标题：从串行到并行\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>从串行到并行\u003C\u002Fh3>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw04.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=LmE14ym0QUswxbxADeTqu%2BEZI1U%3D\" alt=\"\">\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>依赖分析\u003C\u002Fstrong>：判断循环迭代间是否存在数据依赖。独立迭代适合数据并行；存在依赖（如前缀和）则需特殊处理。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>数据并行\u003C\u002Fstrong>：同一操作作用于不同数据（SPMD），每个 Work-item 执行相同代码但拥有不同 Global ID。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>任务并行\u003C\u002Fstrong>：不同阶段\u002F操作组成依赖图，通过 Event 管理，无依赖时可并行。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw05.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=Va8SRUBWi4v3f4f6mX%2BJtBBffTQ%3D\" alt=\"\">\u003C\u002Fp>\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>\u003Cul>\n\u003Cli>基于 C99，增加 \u003Ccode>__kernel\u003C\u002Fcode>、地址空间限定符、向量类型及内建函数。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>入口规范\u003C\u002Fstrong>：必须返回 \u003Ccode>void\u003C\u002Fcode>，结果只能写入 Buffer\u002FImage，Host 读取前必须同步。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"最小-kernel-拆解\">\u003Ca class=\"anchor\" href=\"#最小-kernel-拆解\" aria-label=\"跳转到标题：最小 Kernel 拆解\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>最小 Kernel 拆解\u003C\u002Fh3>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw06.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=3%2B5EkX8fp%2FL7aD6qwGtcpy6IgVg%3D\" alt=\"\">\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>参数对应\u003C\u002Fstrong>：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>设备端指针需匹配 Host 端 \u003Ccode>cl_mem\u003C\u002Fcode>；\u003C\u002Fli>\n\u003Cli>标量需注意字节对齐（推荐 \u003Ccode>cl_int\u003C\u002Fcode> 等类型）。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw07.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=5UA1FOUlD3RUEOLqMK2StyAbzzs%3D\" alt=\"\">\u003C\u002Fp>\n\u003Col start=\"2\">\n\u003Cli>\u003Cstrong>边界检查\u003C\u002Fstrong>：当 Global Size 向上取整为 Local Size 倍数时，多余线程必须在访问数组前返回，防止越界。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw08.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=spQ%2BG15bhZbEsq%2BfEw%2ByfbA3eCU%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch3 id=\"ndrange-与索引计算\">\u003Ca class=\"anchor\" href=\"#ndrange-与索引计算\" aria-label=\"跳转到标题：NDRange 与索引计算\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>NDRange 与索引计算\u003C\u002Fh3>\u003Col>\n\u003Cli>\u003Cstrong>三维索引空间\u003C\u002Fstrong>：Global Size (总网格) → Work-group (协作单元) → Work-item (执行实例)。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw09.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=iBwGoGBTNZ6BPExrvqQgJXaKDFs%3D\" alt=\"\">\u003C\u002Fp>\n\u003Col start=\"2\">\n\u003Cli>\u003Cstrong>ID 关系式\u003C\u002Fstrong>（1D, offset=0）：\u003Ccode>Global_ID = Group_ID × Local_Size + Local_ID\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw10.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=Cfkg4ZjBsRZKAu6ElenXOOTEs1w%3D\" alt=\"\">\u003C\u002Fp>\n\u003Col start=\"3\">\n\u003Cli>\u003Cstrong>二维扩展\u003C\u002Fstrong>：处理图像时常用 2D NDRange。行主序下标计算：\u003Ccode>idx = y * width + x\u003C\u002Fcode>。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw11.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=RTw69wWd70dArc8ndgw5UYUWstM%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch2 id=\"内存模型与地址空间\">\u003Ca class=\"anchor\" href=\"#内存模型与地址空间\" aria-label=\"跳转到标题：内存模型与地址空间\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>内存模型与地址空间\u003C\u002Fh2>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw12.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=09Vl%2FvoaALewAzsWApbDEpX1dBI%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>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw13.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=vYgkIX%2FXOyEdfGvPtpHJMk6TW74%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw14.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=x5CJuz0V65UtL0timUcEgWAvjKc%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch3 id=\"图像对象访问\">\u003Ca class=\"anchor\" href=\"#图像对象访问\" aria-label=\"跳转到标题：图像对象访问\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>图像对象访问\u003C\u002Fh3>\u003Cul>\n\u003Cli>不能使用数组下标，必须使用 \u003Ccode>read_image\u003C\u002Fcode> \u002F \u003Ccode>write_image\u003C\u002Fcode>。\u003C\u002Fli>\n\u003Cli>访问限定符：\u003Ccode>read_only\u003C\u002Fcode>, \u003Ccode>write_only\u003C\u002Fcode>, \u003Ccode>read_write\u003C\u002Fcode>（需版本支持）。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"标量和向量类型\">\u003Ca class=\"anchor\" href=\"#标量和向量类型\" aria-label=\"跳转到标题：标量和向量类型\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>标量和向量类型\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>char\u002Fshort\u002Fint\u002Flong 对应 8\u002F16\u002F32\u002F64 位；float 为 32位。\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>T2、T4、T8、T16，例如 int4、float4。\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw15.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=ih%2BgiE7GVPKXGMYMQ%2BYsP1roKao%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw16.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=%2BbpVtEIssr7qymgeROMXAlkvTM4%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>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw17.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=YAgLbkFeIlG2HxneSDgVQdybp4U%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch2 id=\"并发控制与同步机制\">\u003Ca class=\"anchor\" href=\"#并发控制与同步机制\" aria-label=\"跳转到标题：并发控制与同步机制\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>并发控制与同步机制\u003C\u002Fh2>\u003Ch3 id=\"原子操作-atomic\">\u003Ca class=\"anchor\" href=\"#原子操作-atomic\" aria-label=\"跳转到标题：原子操作 (Atomic)\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>原子操作 (Atomic)\u003C\u002Fh3>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw18.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=5nm1MZB8hEOdNNJ9Ll5iN%2BICFms%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>问题\u003C\u002Fstrong>：普通 \u003Ccode>counter++\u003C\u002Fcode> 是非原子的（读-改-写分离），多线程竞争导致数据丢失。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>解决\u003C\u002Fstrong>：使用 \u003Ccode>atomic_inc\u003C\u002Fcode> 等保证操作不可分割。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>代价\u003C\u002Fstrong>：竞争同一地址时会串行化，降低吞吐，切勿滥用。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"barrier-同步\">\u003Ca class=\"anchor\" href=\"#barrier-同步\" aria-label=\"跳转到标题：Barrier 同步\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>Barrier 同步\u003C\u002Fh3>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw19.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=QkEujfXg3%2FtY%2BpPsK4vM%2BfYEmqM%3D\" alt=\"\">\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>双重语义\u003C\u002Fstrong>：\u003Cul>\n\u003Cli>\u003Cstrong>执行汇合\u003C\u002Fstrong>：组内所有成员到达后才继续向下执行。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>内存可见性\u003C\u002Fstrong>：保证 Barrier 前的写入对 Barrier 后的读取可见。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>正确性条件\u003C\u002Fstrong>：\u003Cstrong>全组收敛\u003C\u002Fstrong>。同一个 Work-group 内所有 Work-item 必须执行到同一个 Barrier。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>局限\u003C\u002Fstrong>：Barrier 仅限组内，\u003Cstrong>无法\u003C\u002Fstrong>实现跨组同步。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"树形归约\">\u003Ca class=\"anchor\" href=\"#树形归约\" aria-label=\"跳转到标题：树形归约\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>树形归约\u003C\u002Fh3>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_83_zw20.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=jgdiYnlEJYRXJiBB0kn1uHYxE2k%3D\" alt=\"\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>步长递减\u003C\u002Fstrong>：树形归约通常采用逐步减半或逐步倍增的方式减少参与线程数量，具体 stride 取决于算法设计。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Barrier 位置\u003C\u002Fstrong>：每一轮写入后、下一轮读取前\u003Cstrong>必须\u003C\u002Fstrong>插入 Barrier，防止读到旧值。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>单位元填充\u003C\u002Fstrong>：为边界线程填充不影响结果的值（如加法用 0，乘法用 1），统一代码逻辑。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"加入训练营\">\u003Ca class=\"anchor\" href=\"#加入训练营\" aria-label=\"跳转到标题：加入训练营\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>加入训练营\u003C\u002Fh2>\u003Ch4 id=\"完整课程内容-请观看直播或查看课程回放\">\u003Ca class=\"anchor\" href=\"#完整课程内容-请观看直播或查看课程回放\" aria-label=\"跳转到标题：📺完整课程内容，请观看直播或查看课程回放：\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>📺完整课程内容，请观看直播或查看课程回放：\u003C\u002Fh4>\u003Cp>\u003Cstrong>InfiniTensor 官网\u003C\u002Fstrong>： \u003Ca href=\"https:\u002F\u002Fwww.infinitensor.com\">https:\u002F\u002Fwww.infinitensor.com\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>B站直播\u003C\u002Fstrong>： InfiniTensor 官方直播间\u003C\u002Fp>\n\u003Cp>\u003Cstrong>视频号直播\u003C\u002Fstrong>： InfiniTensor 视频号预约\u003C\u002Fp>\n\u003Cp>\u003Cstrong>答疑交流\u003C\u002Fstrong>： 训练营官方社群⬇️\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002F2026-xjq.png?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=0obYBYApsaMtYkKqut1L1j7ZvQI%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch2 id=\"关注与交流\">\u003Ca class=\"anchor\" href=\"#关注与交流\" aria-label=\"跳转到标题：关注与交流\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>关注与交流\u003C\u002Fh2>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002Fnews_ewm02.jpg?Expires=1792752561&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=b1NpkMXCjFYgZ9lW3RNT0HCHt5Y%3D\" alt=\"\">\u003C\u002Fp>\n",[128,131,134,137,140,142,145,148,151,153,155,157,159,163,166,168,170,173,176,178,180,183],{"id":129,"text":130,"level":110},"opencl-四大模型概览","OpenCL 四大模型概览",{"id":132,"text":133,"level":9},"平台模型-计算资源的分层抽象","平台模型：计算资源的分层抽象",{"id":135,"text":136,"level":9},"执行模型-host-端对象与设备执行的桥梁","执行模型：Host 端对象与设备执行的桥梁",{"id":138,"text":139,"level":110},"数据并行与-kernel-基础","数据并行与 Kernel 基础",{"id":141,"text":141,"level":9},"从串行到并行",{"id":143,"text":144,"level":9},"opencl-c-语言特性","OpenCL C 语言特性",{"id":146,"text":147,"level":9},"最小-kernel-拆解","最小 Kernel 拆解",{"id":149,"text":150,"level":9},"ndrange-与索引计算","NDRange 与索引计算",{"id":152,"text":152,"level":110},"内存模型与地址空间",{"id":154,"text":154,"level":9},"地址空间限定符",{"id":156,"text":156,"level":9},"图像对象访问",{"id":158,"text":158,"level":9},"标量和向量类型",{"id":160,"text":161,"level":162},"1-标量","1. 标量：",4,{"id":164,"text":165,"level":162},"2-向量","2. 向量：",{"id":167,"text":167,"level":9},"内建函数",{"id":169,"text":169,"level":110},"并发控制与同步机制",{"id":171,"text":172,"level":9},"原子操作-atomic","原子操作 (Atomic)",{"id":174,"text":175,"level":9},"barrier-同步","Barrier 同步",{"id":177,"text":177,"level":9},"树形归约",{"id":179,"text":179,"level":110},"加入训练营",{"id":181,"text":182,"level":162},"完整课程内容-请观看直播或查看课程回放","📺完整课程内容，请观看直播或查看课程回放：",{"id":184,"text":184,"level":110},"关注与交流"]