从CWT CUDA代码
这个例子展示了如何生成一个墨西哥人文件执行连续小波变换(CWT)使用CUDA生成代码。
首先,确保你有一个人GPU和NVCC编译器。看到GPU环境检查和安装应用程序(GPU编码器)确保你有适当的配置。
创建一个GPU编码器配置对象。
cfg = coder.gpuConfig (“墨西哥人”);
生成一个100000样品在1000赫兹的信号。信号由两个余弦波和分离时间支持。金宝app
t = 0:措施:(1 e5 * 0.001) -0.001;x = cos(2 *π* 32 * t)。* (t > 10 & t < = 50) +…因为(2 *π* 64 * t)。* (t > = 60 & t < 90) +…0.2 * randn(大小(t));
把信号使用单一的精度。GPU的计算往往是更有效地在单精度。您还可以为双精度生成代码,如果你的NVIDIA GPU支持它。金宝app
x =单(x);
生成GPU墨西哥人文件和代码生成报告。让一代的墨西哥人文件,您必须指定属性(类、大小和复杂性)的三个输入参数:
coder.typeof(单(0)1 e5 [1])
指定一个包含真正的行向量的长度为100000单
值。编码器。typeof (“c”,[1正])
指定了一个任意长度的字符数组。coder.typeof (0)
指定一个真正的双
价值。
sig = coder.typeof(单(0)1 e5 [1]);wav = coder.typeof (“c”[1正]);sfrq = coder.typeof (0);codegen类配置cfgarg游戏{团体,wav, sfrq}报告
代码生成成功:查看报告
报告标志是可选的。使用报告
生成一个代码生成报告。在总结报告的选项卡,你可以找到一个GPU代码度量链接,它提供了详细的信息,比如CUDA内核的数量生成并分配多少内存。
运行上的墨西哥人文件数据和绘制量图。确认符合两个不相交的余弦波的阴谋。
[cfs f] = cwt_mex (x,“莫尔斯”1 e3);图像(“XData”t“YData”f“CData”、abs (cfs)、“CDataMapping”,“缩放”甘氨胆酸)组(,“YScale”,“日志”)轴紧包含(“时间(秒)”)ylabel (“频率(赫兹)”)标题(“深浅不一的信号量图”)
运行上面的CWT命令没有附加_
墨西哥人
。证实了MATLAB和GPU墨西哥人量图是相同的。
[cfs2, f2] = cwt (x,“莫尔斯”1 e3);马克斯(abs (cfs2 (:) cfs (:)))
ans =单7.3380 e-07