操作系统实验,oneapi

(实时更新)

目录

实验四补充

实验五补充


实验四补充

一,环境搭建

注册intel devcloud账户

填写信息,提交后等待创建账户

等待邮件验证,接到以下邮件后重新访问Get Started | Intel® DevCloud

登录后点击get_start,在页面左下角点击Launch JupyterLab*

等待登录后效果如下

二,第一个for循环

在云中创建文件夹os_exp

编写helloworld示例代码

编译出错

使用另一编译方法依然报错

修改代码并换icpx命令后可以执行

结果:

结果分析:

该程序使用 SYCL 实现了一个解密算法,先将 secret 字符串拷贝到共享内存中的 result 数组中,然后针对 result 数组用parallel_for并行地将数组中的每个元素都减去 1,相当于将原文中的每个字母向前移动了一位。最后,将解密后的消息打印到控制台。

三,设备选择

方式1:默认的设备选择

编写代码:

编译执行:

结果分析:创建一个 queue 对象 Q,用于执行 SYCL 内核函数。然后,调用 get_device 方法获取与 Q 关联的设备对象,并调用 get_info 方法获取设备名称等详细信息。最后,将设备名称打印到控制台中。

方式2:使用host_selector

代码编写:

编译执行:

结果分析:

创建一个 queue 对象 Q,并将其关联到一个类型为 host_selector 的设备选择器上,选择当前可用的主机设备来处理任务。然后,通过 get_device 方法获取与 Q 关联的设备对象,并分别调用 get_info 方法来获取设备名称和制造商信息。最后,将这些信息打印到控制台中

方式3:使用cpu_selector

代码编写:

编译执行:

结果分析:

创建一个 queue 对象 Q,并将其关联到一个类型为 cpu_selector 的设备选择器上。选择当前可用的 CPU 设备来处理任务。然后,通过 get_device 方法获取与 Q 关联的设备对象,并分别调用 get_info 方法来获取设备名称和制造商信息。最后,将这些信息打印到控制台中。

方式4:使用多个selector

代码编写:

编译出错:

复制到ipynd文件执行:

依然报错 (将sycl改为CL、将INTEL改为小写依然找不到库)

结果分析:

缺少fpga库,程序逻辑为:使用 sycl::gpu_selectorsycl::INTEL::fpga_selector 分别创建了与 GPU 和 FPGA 相关的 SYCL 调度队列对象,分别通过 get_device().get_info() 函数获取所选设备的信息,并输出到终端窗口中。

方式5:既包含host code,又包含device code

代码编写:

编译执行:

结果分析:

定义一个大小为 16 的 std::array<int,size> 对象 data,然后通过 buffer 类创建一个 B 对象,该对象与 data 相关联。接着,创建一个 queue 对象 Q,默认选择当前可用的某个设备进行任务处理。在 Q 上提交一个任务,该任务在设备上并行执行,并使用 handler 对象 h 来分配、同步和管理任务并行执行过程中的内存访问。 在该任务中,使用 accessor 对象 accB 绑定到 h 中用于内核函数的访问器中。h.parallel_for 方法表示对于 size 个条目,以并行方式执行一个内核函数,其中 idx 是一个迭代变量,从 0 到 15 迭代,对于每个 idx,内核函数将 idx 分配给 acc。最后退出

实验五补充

git获取代码

要求1,执行不同版本GEMM代码

将basic版本复制到.ipynd文件中编译执行

结果如下:

 将title版本复制到.ipynd文件中编译执行

结果如下: 

 

 实验练习

修改basic输入为M=N=K=2000如下:

运行结果:

 实验练习,修改title版本titlex、titley并分析结果:

x=2,y=2, workgroup size=4时:

gpu时间为8秒,cpu时间48秒

x=4,y=4, workgroup size=4时:

gpu执行时间减半为4秒,cpu时间50秒

x=8,y=8, workgroup size=4时:

运行超过60s仍未运行完,cpu时间进一步增加

 分析结果:

因为每次处理 workgroup size的大小,所以title和 workgroup size相等时gpu效率最大,再增大时cpu时间将持续增加,所以title和 workgroup size相等时效率最佳

 实验要求2

cpu执行时间:

parallel_for语句时间

gpu执行时间:

所有时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值