CUDA入门(四)Visual Profiler

简介: Visual Profiler 在CUDA程序开发的过程中是一个极有利的工具。可以帮助你找到程序中性能不足之处。 下面是《CUDA_Profiler_Users_Guide》对Visual Profiler描述 Visual Profiler 是是一个图形化的剖析工具,可以显示你的应用程序中CPU和GPU的活动情况,利用分析引擎帮助你寻找优化的机会。 其实除了可视化

Visual Profiler 在CUDA程序开发的过程中是一个极有利的工具。可以帮助你找到程序中性能不足之处。
下面是《CUDA_Profiler_Users_Guide》对Visual Profiler描述
Visual Profiler 是是一个图形化的剖析工具,可以显示你的应用程序中CPU和GPU的活动情况,利用分析引擎帮助你寻找优化的机会。
其实除了可视化的界面,NVIDIA提供了命令行方式的剖析命令:nvprof。对于初学者,使用图形化的方式比较容易上手,所以本节使用Visual Profiler。
Visual Profiler在cuda安装时就自动帮你安装,你可以在菜单-》NVIDIA Corporation-》CUDA ToolKit下找到。这里写图片描述

首先, 将相应的代码通过VS编译生成.exe文件,
如果在生成exe文件是提醒:R6010 -abort() has been called,看一下程序中是否有malloc或者cudamalloc的空间没有Free.

打开Visual Profiler->File->new session 在File中选择刚才编译出来的exe文件
这里写图片描述
直接next再finsh,Visual Profiler将开始运行程序,并开始分析。
当出现

等程序运行完会看到如图:这里写图片描述
其中1为程序中的一些函数等,如cudaMemcpy,stream;2中显示程序中各部分在程序执行过程中占的比例的可视化结果。
Visual Profiler下面的框中 Analysis是对程序改进的一些意见
如点击Examine GPU Usage
会出现这里写图片描述
点击more可以看到对代码的优化建议。
这里写图片描述
details中显示的是程序运行的详细数据,包括函数开始时间,持续时间,线程,块以及带宽等数据;
Console中显示是控制台显示的信息,包括一些程序中的printf 和运行时的警告;
如在运行时会遇到典型的:
==7196== Warning: Some profiling data are not recorded. Make sure cudaProfilerStop() or cuProfilerStop() is called before application exit to flush profile data.
解决方法在程序末尾加cudaDeviceReset()或者cudaProfilerStop()
Warning: Unified Memory Profiling is not supported on devices of compute capability less than 3.0
显卡计算能力没有达到3.0,
解决方法换电脑
settings是刚刚设置Newsession时的相关配置
旁边的Properties是某一个runtime API,函数等的具体特征。
这只是Visual Profiler的入门,具体还要自己去发掘,不说了该优化我的程序去了。

目录
相关文章
|
分布式计算 Hadoop
hadoop 的启动和停止命令(史上最全)
sbin/start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager sbin/stop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager sbin/start-dfs.sh 启动Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNode sbin/stop-dfs.sh 停止Hadoop
|
关系型数据库 MySQL 数据库
Kubernetes-部署高可用的MySQL
1、MySQL简介 MySQL 是一个开源的关系型数据库管理系统,使用标准的sql语言,由瑞典 MySQL AB 公司开发,当前属于 Oracle 公司。能够 支持大型的数据库,可以处理上千万条的数据记录。
5505 0
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
Java 索引
Java“ExceptionInInitializerError”解决
Java中遇到“ExceptionInInitializerError”错误通常是因为静态初始化块或静态变量初始化时发生异常。解决方法包括检查静态代码块中的逻辑错误、确保资源正确加载以及处理可能的空指针异常。
2186 8
|
人工智能 自然语言处理 算法
|
应用服务中间件 Linux PHP
linux 查看nginx状态和php-fpm状态 nginx-status和php-status
linux 查看nginx状态和php-fpm状态 nginx-status和php-status
286 0
|
缓存 监控 Java
【Spring Boot系列】- Spring Boot侦听器Listener
【Spring Boot系列】- Spring Boot侦听器Listener
429 0
|
Linux C++ Windows
C++:在程序中获取全球唯一标识号(GUID或UUID)
Windows:使用CoCreateGuid函数(GUID) #include #include #define GUID_LEN 64 int main(int argc, char* argv[]){ char buffer[GUID_LEN] = { 0 }; GUID guid; ...
9456 121
|
存储 Linux 文件存储
Linux驱动入门(6.1)LED驱动---设备树
Linux驱动入门(6.1)LED驱动---设备树
681 0