首页 理论教育 使用VisualProfiler进行CUBLAS分析

使用VisualProfiler进行CUBLAS分析

时间:2023-11-24 理论教育 版权反馈
【摘要】:MATLAB关闭后,返回NVIDIA Visual Profiler,这时NVIDIA Visual Profiler会停止对MATLAB的信息收集并在窗口中生成结果,如图6.2所示。图6.2 用NVIDIA Visual Profiler运行cublasDemo将CUBLAS函数调用的地方展开,展开后除了时间分析外,还给出了其他细节,如图6.3所示。图6.3 Visual Profiler运行cublasDemo展开GPU运算细节在这个例子中,可以看到CUDA函数调用的实际时间线轴。图6.4 Visual Profiler运行cublasDemo后cublas函数细节观察Details选项栏,可以看到每个CUDA函数调用所用的具体时间,特别地,可以得到内核函数中更多关于线程网格和线程块大小的详细信息。

使用VisualProfiler进行CUBLAS分析

让我们使用NVIDIA Visual Profiler对CUBLAS函数cublasSgemm(…)做更深入的了解。NVIDIA Visual Profiler除了分析运行时间外,还可以了解程序运行时的具体细节。

首先,打开NVIDIA Visual Profiler,然后如第3章的介绍,通过分析器打开MATLAB,当MATLAB窗口打开后,将我们编译的c-mex文件所处位置设置为当前工作路径,然后如图6.1所示运行c-mex函数。

978-7-111-52904-0-Chapter06-23.jpg

图6.1 在MATLAB中运行cublasDemo

运行c-mex函数后,关闭MATLAB窗口退出程序的执行。MATLAB关闭后,返回NVIDIA Visual Profiler,这时NVIDIA Visual Profiler会停止对MATLAB的信息收集并在窗口中生成结果,如图6.2所示。

978-7-111-52904-0-Chapter06-24.jpg

图6.2 用NVIDIA Visual Profiler运行cublasDemo

将CUBLAS函数调用的地方展开,展开后除了时间分析外,还给出了其他细节,如图6.3所示。

978-7-111-52904-0-Chapter06-25.jpg

图6.3 Visual Profiler运行cublasDemo展开GPU运算细节

在这个例子中,可以看到CUDA函数调用的实际时间线轴。可以看到,对于矩阵和矩阵的计算,调用了函数gen_sgemmNN_val(...),如图6.4所示。(www.xing528.com)

978-7-111-52904-0-Chapter06-26.jpg

图6.4 Visual Profiler运行cublasDemo后cublas函数细节

观察Details选项栏,可以看到每个CUDA函数调用所用的具体时间,特别地,可以得到内核函数中更多关于线程网格和线程块大小的详细信息。CUBLAS自动设定了线程网格和线程块的大小。此例中,

线程网格大小:[4,25,1]

线程块大小:[16,4,1]

由此我们可以知道,CUBLAS为大小为200×400的结果矩阵C共分配了6400 16×4×4×25)个线程。

综上所述,c-mex函数包含两个头文件(见图6.5)。当在MATLAB中编译mex代码时,同时指出了所调用的库以及库的位置。通过这种方式,扩展c-mex函数包含CUBLAS库。利用CUDA运行时库来为输入和输出数据分配和释放内存空间。CUBLAS函数除了执行矩阵和矩阵乘法的核心运算外,也负责数据在主机和GPU设备之间转移。

978-7-111-52904-0-Chapter06-27.jpg

图6.5 cublasDemo c-mex生成过程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈