一、实验目的
基于DPC++编写矩阵乘法计算代码
二、实验要求
编写矩阵乘法代码实现,并编译执行
对代码进行执行时间分析,比较不同实现的效率差异
三、实验程序
https://github.com/pengzhao-intel/oneAPI_course/blob/main/code/gemm_basic.cpp
https://github.com/pengzhao-intel/oneAPI_course/blob/main/code/gemm_tile.cpp
在devcloud平台上编译执行以上两个代码
四、结果分析
CPU执行时间通过C++标准库中的<chrono>来测量,具体使用了std::chrono::high_resolution_clock类来获取高精度的时间点,在cpu_kernel函数中,通过获取开始时间点s和结束时间点e,并计算二者之间的时间差来得到CPU执行时间,使用std::chrono::duration类计算得到CPU执行时间。GPU执行时间通过SYCL库中的事件对象的get_profiling_info方法来测量,具体是通过调用事件对象的get_profiling_info方法获取GPU事件的开始和结束时间,在gpu_kernel函数中,通过创建一个queue对象,并设置enable_profiling属性来启用事件的性能分析,使用sycl::queue::submit方法提交一个任务,并在任务中测量事件的执行时间,通过计算时间差command_end-command_start ,得到GPU执行时间。