主要内容

从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

另请参阅

|