oneAPI作业文档

文章介绍了如何搭建oneAPI环境并在VisualStudio中运行官方的HelloWorld示例——大向量加法。这个示例使用SYCL编程模型,涉及向量的并行加法操作,通过缓冲区和访问器处理数据,并在设备上执行任务。文章还分析了代码结构,包括异常处理、向量加法函数以及主函数的执行流程。
摘要由CSDN通过智能技术生成

oneAPI官方HelloWorld代码小结

oneAPI环境搭建

​ 要跑通官方给出的入门代码“大向量加法”,首先需要搭建oneAPI相关环境。首先可以到官方的oneAPI网站进行下载,搜索引擎搜索“oneAPI”后选择官方的这个网站即可。进入之后选择Get the Toolkits并选择Intel@ oneAPI Base Toolkit后,点击下载即可。

​ 在Windows系统中,官方文档中提供了三种程序运行的方法,分别是在Visual Studio中命令行进行程序运行或者通过图形界面进行程序运,最后是在Visual Studio Code中进行程序运行。本文通过Visual Studio中的图形界面进行官方代码的选择与运行。不过这里需要注意,若是先安装的oneAPI,再安装的VS2022,有可能出现教程之外的情况,因此建议若无VS2022先进行对应的安装。

​ 上述步骤完成后就可以通过VS的“扩展”中选择“Intel”,选择“Browse Intel oneAPI samples … ”,选择之后会弹出如下图所示的窗口,第一个便是本文运行的程序,向量求和,选择后点击OK。

​ 选择OK后便会跳转到一个md文件,并会生产相关文件夹,我们点击“开始不调试”后便会出现下列结果。说明我们上述的环境配置和程序运行成功了。

代码分析

​ 接下来我们打开它生成的代码来进行一些分析。首先要说明的是该代码使用了SYCL,这是一种用于编写异构计算的开发框架和编程模型。

​ 代码首先包含了SYCL的相关头文件,并使用using namespace sycl;语句引入了sycl命名空间,并定义了用于控制执行次数和向量大小的全局变量,使用typedef关键字为std::vector<int>定义了一个名为IntVector的别名。其中num_repetitions指的是重复执行的次,数vector_size是向量的大小。

​ 之后定义了一个异常处理器,用于捕获并处理SYCL中的异常。在这个处理器中,将异常输出到控制台,并终止程序的执行。

​ 下面代码段定义了一个名为VectorAdd的函数,用于在SYCL设备上执行向量加法操作。该函数接收一个SYCL队列对象q,以及两个输入向量a_vectorb_vector,以及一个输出向量sum_parallel。在函数中,首先创建了用于存储数据的缓冲区对象,并使用访问器(accessor)来访问缓冲区中的数据。然后,通过使用queue对象的submit方法将并行执行的任务提交到队列中,并使用parallel_for方法在设备上执行向量加法操作。最后,使用q.wait()方法等待所有任务完成。

​ 最后,主函数首先根据命令行参数设置重复执行次数和向量大小。然后创建输入和输出向量对象,并使用InitializeVector函数初始化输入向量。接下来,创建SYCL队列对象,并输出所使用的设备信息和向量大小。然后,调用VectorAdd函数执行向量加法操作。之后,使用顺序方式计算向量和,并与并行计算的结果进行验证。最后,打印部分向量加法的结果,并清空向量对象。(代码过长不贴了)

​ 以上就是Intel oneAPI官方入门程序的代码小结。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值