首页 理论教育 GPU混合编程:CUFFT时间分析

GPU混合编程:CUFFT时间分析

时间:2023-11-24 理论教育 版权反馈
【摘要】:采用CUBLAS的例子,采用NVIDIA Visual Profiler对cufft函数进行更深的认识。打开NVIDIA Visual Profiler,创建一个新的对话。MATLAB关闭后,返回NVIDIA Visual Profiler。此时NVIDIA Visual Profiler完成了对MATLAB信息的搜集,并且在窗口中生成了分析结果。图6.7 NVIDIA Visual Profiler会话时间轴不完整消息在MATLAB关闭后,让我们看看CUFFT执行情况的分析细节,如图6.8所示。图6.8 Visual Profiler分析cufftDem在cufft函数调用的地方展开,展开后,屏幕显示除时间分析外的其他细节。图6.9 GPU运算中Visual Profiler的cufftDemo分析细节综上所述,如CUBLAS实例所示,c-mex函数共包含两个头文件。

GPU混合编程:CUFFT时间分析

采用CUBLAS的例子,采用NVIDIA Visual Profiler对cufft函数进行更深的认识。

打开NVIDIA Visual Profiler,创建一个新的对话。在MATLAB窗口中,设置编译后的c-mex文件的位置为当前路径,然后运行c-mex函数,如图6.6所示。

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

图6.6 cufftDemo在MATLAB中的运行

运行c-mex函数后,关闭MATLAB窗口退出MATLAB。MATLAB关闭后,返回NVIDIA Visual Profiler。此时NVIDIA Visual Profiler完成了对MATLAB信息的搜集,并且在窗口中生成了分析结果。如果NVIDIA Visual Profiler弹出如图6.7所示窗口,则临时在c-mex函数末尾处添加cudaDeviceRest()函数,以确保刷新CUDA配置文件。

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

图6.7 NVIDIA Visual Profiler会话时间轴不完整消息

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

在MATLAB关闭后,让我们看看CUFFT执行情况的分析细节,如图6.8所示。(www.xing528.com)

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

图6.8 Visual Profiler分析cufftDem

在cufft函数调用的地方展开,展开后,屏幕显示除时间分析外的其他细节。我们可以更好地了解定义的cufft函数的内部情况。注意这一函数创建了多个不同线程大小的内核函数,如图6.9所示。

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

图6.9 GPU运算中Visual Profiler的cufftDemo分析细节

综上所述,如CUBLAS实例所示,c-mex函数共包含两个头文件。在MATLAB中用mex编译代码时,我们指定所采用的函数库以及函数库的位置。所采用的cuda运行时函数用来分配和释放内存,以及在主机和设备间传递输入输出数据。在调用cufft函数时,必须考虑MATLAB的数据布局是否与CUFFT兼容。CUFFT要求按行输入数据,但MATLAB则是按列顺序。还需要格外注意的是,MATLAB中的行和列是如何映射到CUFFT中的nx和ny中的,如图6.10所示。

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

图6.10 cufftDemo c-mex创建过程

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

我要反馈