Oneapi--C++与SYCL异构编程学习 (一)

最近涉及到异构计算在学习Oneapi,Oneapi的核心是一个名为DPC++的编程语言,DPC++本质上是添加对sycl的支持是对c++的扩展。

所以我将会更新学习Data Parallel C++的学习笔记

本文主要关于使用C++为数据并行性编程,对新手较为友好,若从未接触过SYCL或dpc++编译器也没关系。

SYCL是一个为异构系统的c++添加数据并行性,dpc++是基于SYCL以及一些扩展和广泛的异构支持,包括CPU,GPU,FPGA。

本书分为十九章

第一章:Introduction 简介。 简要介绍了sycl,以及异构需要的队列和一些操作,主机,设备,串行,并行,并发。

第二章:Where code executes 代码执行的位置。主机代码,设备代码分别执行的位置,以及如何为队列选定设备,以及如何在设备上创建一个工作。

第三章:Data management 数据管理。显示数据移动,隐式数据移动以及如何正确的选择管理内存,统一共享内存,缓冲区,对数据的排序。

第四章,Expressing Parallelism 并行性的表示。内核当中的并行性,数据并行内核,ND范围内核,将计算映射到work-items

第五章:Error handing 错误处理。错误的类型以及如何处理这些错误。

第六章:Unified shared Memory 统一共享内存。为什么我们需要用到USM,分配的类型,分配的内存,数据的管理。

第七章:Buffers 缓冲区。 缓冲区,访问器,以及如何创建缓冲区,访问器。

第八章:Scheduling kernels and data Movement 内核的调度和数据的移动。 图形调度,图形在dpc++中的工作。

第九章:Conmmunication and synchronization 通信和同步。work-groups,work-items,sub-groups,使用barrier进行同步,使用本地内存,广播,洗牌,投票。

第十章:Defining Kernels 定义内核。表达内核的三种方式。

第十一章:Vector 向量。向量的类型,接口,向量在并行内核中的执行,向量并行性。

第十二章:Device information 设备信息。内核代码的细化,枚举设备和功能,设备信息的描述。

第十三章:Practical tips 实用技巧。添加sycl到现有的c++程序当中,debug,数据的初始化和访问内核的输出,从cuda到sycl 的迁移。

第十四章:Common parallel pattern 常见的并行模式。使用内置的函数库,oneapi dpc++库,map,reduction。

第十五章:Programming for GPUS gpu编程。gpu如何工作的,如何将内核卸载到gpu上,gpu内核的实践。

第十六章:Programming for CPUS cpu编程。通用cpu编程,线程级并行,cpu上的simd向量化。

第十七章:Programming for FPGAS fpga编程。如何使用FPGA,如何允许FPGA,为FPGA编写内核。

第十八章:Libraries 库。内置函数,dpc++库。

第十九章:Memory model and atomics 内存模型和原子。内存模型当中的内容,内存模型,dpc++中的原子操作。

最后作者提到了 dpc++ 的未来发展方向以及前景。

接下来我会持续更新我在学习这本书的一些内容以及我的见解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值