此示例演示如何使用gpucoder.profile
以雾修正为例来说明这一概念。
支持CUDA的NVIDIA®GPU。
NVIDIA CUDA工具包和驱动程序。
编译器和库的环境变量。有关支持的编译器和库版本的信息,请参阅万博1manbetx第三方硬件. 有关设置环境变量的信息,请参见设置必备产品s manbetx 845.
此示例的分析工作流取决于女教授
NVIDIA提供的工具。在CUDA toolkit v10.1中,NVIDIA仅限制管理员用户访问性能计数器。要使所有用户都能使用GPU性能计数器,请参阅中提供的说明https://developer.nvidia.com/ERR_NVGPUCTRPERM.
要验证运行此示例所需的编译器和库是否正确设置,请使用coder.checkGpuInstall
作用
envCfg=coder.gpuEnvConfig(“主持人”);envCfg.BasicCodegen=1;envCfg.Quiet=1;coder.checkGpuInstall(envCfg);
这个fog_.m函数将有雾的图像作为输入,并返回有雾的图像。要生成CUDA代码,请使用动态库创建GPU代码配置对象(“dll”
)生成类型。因为gpucoder.profile
函数只接受一个嵌入式编码器配置对象,即coder.EmbeddedCodeConfig
即使埃科德
未明确选择选项。
inputImage=imread('foggyinport.png'); 输入={inputImage};设计文件名=“雾校正”; cfg=coder.gpuConfig(“dll”); cfg.GpuConfig.MallocMode=“离散的”;
跑gpucoder.profile
阈值为0.003,以查看SIL执行报告。阈值0.003只是一个代表性数字。如果生成的代码有很多CUDAAPI或内核调用,那么每个调用很可能只占总时间的一小部分。建议设置较低的阈值(介于0.001-0.005之间)以生成有意义的分析报告。不建议将“执行次数”值设置为非常低的数字(小于5),因为它不会生成典型执行配置文件的准确表示。
gpucoder.profile(设计文件名、输入、,...“CodegenConfig”,cfg,“门槛”, 0.003,“NumCalls”, 10);
###为“fog_矫正”启动SIL执行以终止执行:清除fog_矫正_SIL执行评测数据可供查看。打开模拟数据检查器。终止后执行评测报告可用。###为“fog_矫正”停止SIL执行
雾校正
作用代码执行评测报告根据从SIL或PIL执行中收集的数据提供度量。执行时间根据添加到SIL或PIL测试线束或为每个组件生成的代码内的仪器探头记录的数据计算。有关更多信息,请参阅查看执行时间(嵌入式编码器)。这些数字具有代表性。实际值取决于您的硬件设置。此评测是在具有6核、3.5GHz Intel®Xeon®CPU和NVIDIA TITAN XP GPU的计算机上使用MATLAB R2020a完成的
第3节显示了运行时高于阈值的GPU调用的完整跟踪“门槛”
参数定义为一次运行(不包括第一次运行)的最大执行时间的分数。例如,对顶层的9次调用中雾校正
函数,如果第三次调用占用的时间最长(
,太太),则最长执行时间为
毫秒。所有GPU调用占用的时间超过
毫秒显示在本节中。将光标放在调用上会显示每个调用的其他相关非计时相关信息的运行时值。例如,将光标放在雾校正内核10
显示该调用的块维度、网格维度和静态共享内存大小(以KiB为单位)。此跟踪对应于占用最长时间的运行。
报告中的第4节显示了第3节中显示的GPU调用的摘要cudaFree
每次运行时调用17次雾校正
17个电话的平均通话时间cudaFree
超过9次雾校正
为1.7154毫秒。此摘要按所用时间的降序排序,以让用户知道哪个GPU调用占用的时间最长。