Intel性能分析工具Vtune安装和使用简介

一、介绍

Intel Vtune profiler是用于串行和多线程应用程序的性能分析工具,可以帮助软件开发人员对应用程序的性能问题进行分析,支持包括linux和windows在内的多种操作系统。主要功能包括:

  • 性能分析:可以对应用程序进行深入的性能分析,帮助用户了解应用程序在不同的硬件和软件环境下的运行情况。
  • 热点检测:可以识别出程序中的热点部分,指导开发者进行优化。
  • 性能瓶颈分析:通过分析CPU、内存、IO等各个方面的性能,帮助确定应用程序的性能瓶颈。
  • 多线程分析:对于多线程应用程序,能够分析线程的运行状况,包括线程的同步、竞争和死锁等问题。

二、安装

tee > /tmp/oneAPI.repo << EOF
[oneAPI]
name=Intel® oneAPI repository
baseurl=https://yum.repos.intel.com/oneapi
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
EOF

将oneAPI.repo移动到/etc/yum.repos.d目录中,执行

yum install intel-oneapi-vtune

安装vtune工具

如果是使用root用户进行安装的,安装完成后,默认的安装目录是在/opt/intel/oneapi/vtune中,执行

source /opt/intel/oneapi/vtune/latest/env/vars.sh

之后就可以在命令行界面中使用vtune命令了。

为了验证vtune profiler是否能够正确使用以及在安装过程中是否存在某些未知问题,可以运行安装包中的一个自动测试脚本,此脚本会运行对一个示例应用程序的分析

运行如下命令:

sh /opt/intel/oneapi/vtune/latest/bin64/vtune-self-checker.sh

此脚本会运行几分钟进行必要的信息收集,如果一切正常会产生对应的输出。

三、使用

3.1 默认测试用例使用

在vtuned中自带了一个测试用例matrix,目录位于/opt/intel/oneapi/vtune/latest/samples/en/C++/matrix

在vtune的welcome界面点击New Project创建一个新的项目

在Project name栏输入项目名称(自定义),Location输入项目存放路径(任意)

项目创建完成自动进入Configure Analysis目录,Where选择Local Host(默认),Launch Application->Application处选择二进制文件的位置,也可以使用进程pid或者进行整系统的监测,修改WHAT的类型即可

我们这里是/opt/intel/oneapi/vtune/latest/samples/en/C++/matrix,点击start按钮

vtune自动执行分析操作

执行完成后会输出summary

右上部分是一些基本的衡量指标,中间部分是可以进行进一步分析的方向,其中标红是推荐进行分析的方向。

接下来可对应用程序进行性能瓶颈分析,优化,然后再次执行性能分析工作来判断性能是否提升。

下一步分析方向有以下几个点:

算法分析:

热点分析用来查找代码花费时间最多的位置。

异常监测识别频繁重复代码中的性能异常问题。

内存消耗分析分析应用进程的内存消耗情况,仅适用于linux。

微架构分析:

微架构识别CPU流水线中的性能瓶颈。

内存访问分析应用程序的内存,查看CPU的缓存和主存使用情况。

并行性分析:

线程分析线程的并行度,定位并发度低的原因以及代码中的串行瓶颈。

HPC性能分析计算密集型应用程序如何使用CPU、内存和FPU的资源。

IO分析:

分析IO系统、总显得利用率

加速单元:

GPU offload分析应用程序是否存在GPU限制。

GPU热点分析GPU绑定的应用程序执行效率低的问题

CPU/FPGC分析FPGA的利用率

平台分析:

系统概述识别限制性能的平台因素

Platform Profiler手机较长时间内满负荷运行的系统数据

3.2 测试用例分析

matrix用例的功能是一个矩阵乘法器。

可以选择以下任意一种乘法核进行运算,需要在multiply.h头文件中对MULTIPLY的宏定义进行修改然后重新通过make编译程序。

multiply0:最基本的单线程实现

multiply1:最基本的多线程实现

multiply2:使用循环交换和向量化进行优化的实现(使用了编译器的向量选项)

multiply3:使用了cache blocking和data align的优化

multiply4:使用了matrix transposition和loop unrolling的优化

multiply5:使用Intel MKL优化

线程使用方式:线程模型使用系统自定义的,linux上是pthreads,windows上是win32 threads,OpenMP线程模型也可以使用。

修改线程模型:windows上选择使用Release,Release_OMP或者Release_MKL配置

linux上在Makefile文件中修改PARAMODEL为USE_THR,USE_OMP或者USE_MKL

矩阵属性:默认情况下矩阵的大小是2048,如果需要增大matrix的大小可以在multiply.h中重新定义MAXTHREADS的值,需要确保这个值是线程的倍数。默认情况下执行线程数目等于CPU cores的数目,可以修改MAXTHREADS来修改线程数。

vtune自带的测试用例matrix.c文件(在/opt/intel/oneapi/vtune/latest/samples/en/C++/matrix/src目录下)需要修改

#include

修改为

#include

否则会报出找不到gettimeofday的错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/553850.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何将低分辨率的视频变高清,使用AI工具分辨率画质增强至1080P、4K或者8K(附工具)

环境&#xff1a; Topaz Video AI 5.0 问题描述&#xff1a; 如何将低分辨率的视频变高清&#xff0c;使用AI工具分辨率画质增强至1080P、4K或者8K 原视频 增强1080P 解决方案&#xff1a; 1.打开软件&#xff0c;导入要处理的视频&#xff08;工具在本文最后附上&#xf…

网络安全:绕过 MSF 的一次渗透测试

这次渗透的主站是 一个 Discuz!3.4 的搭建 违法招 piao 网站&#xff0c; 配置有宝塔 WAF 用 Discuz!ML 3.X 的漏洞进行攻击&#xff0c;但是没有成功 发现主站外链会有一个发卡网&#xff0c;引导人们来这充值&#xff0c;是 某某发卡网&#xff0c;而且域名指向也是主站的 ip…

Stable Diffusion 模型分享:CyberRealistic XL(真实)cyberrealisticXL_v11VAE.safetensors

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八下载地址模型介绍

计算机网络基础:宏观认识

目录 一、网络发展背景与基本概念 二、网络协议的意义与TCP/IP五层结构模型 三、网络传输的基本流程与封装分用 四、ip地址和mac地址 随着信息技术的飞速发展&#xff0c;计算机网络已经成为了现代社会不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;我们几乎都离…

Crossref

https://baijiahao.baidu.com/s?id1766583173146005960&wfrspider&forpc https://zhidao.baidu.com/question/1796197318615421547.html

Java垃圾回收2

垃圾回收的算法有哪些 通过可达性分析算法&#xff0c;我们已经可以找到需要回收的对象。现在需要通过垃圾回收算法&#xff0c;把垃圾回收&#xff0c;释放内存。 1.标记清除算法(使用较少) 标记清除算法&#xff0c;是将垃圾回收分为2个阶段&#xff0c;分别是标记和清除。…

面试官:来说说vue3是怎么处理内置的v-for、v-model等指令?

前言 最近有粉丝找到我&#xff0c;说被面试官给问懵了。 粉丝&#xff1a;面试官上来就问“一个vue文件是如何渲染成浏览器上面的真实DOM&#xff1f;”&#xff0c;当时还挺窃喜这题真简单。就简单说了一下先是编译成render函数、然后根据render函数生成虚拟DOM&#xff0c;…

国外GIS软件排名简介<30个>

简介 国外gisgeography网站进行了一次GIS软件排名&#xff0c;通过分析、制图、编辑等因素进行测试&#xff0c;具体规则如下&#xff1a; 分析&#xff1a;矢量/栅格工具、时态、地统计、网络分析和脚本。 制图&#xff1a;地图类型、坐标系、地图布局/元素、标注/注记、3D …

请勿假设你的用户都有管理员权限

有些人觉得自己很聪明&#xff0c;他们在程序中做了这样一项”优化”。 在程序的安装阶段&#xff0c;他们不会安装某些程序功能&#xff0c;而是等到用户第一次使用的时候才执行&#xff0c;也即所谓的 “按需加载”。 问题在于&#xff0c;第一次使用的时候&#xff0c;用户…

CSS-布局

display display 属性是用于控制 布局 的最重要的 CSS 属性。display 属性规定是否/如何显示元素。 每个 HTML 元素都有一个默认的 display 值&#xff0c;具体取决于它的元素类型。大多数元素的默认 display 值为 block 或 inline。 block block&#xff1a;块级元素。块级…

从二本调剂到上海互联网公司算法工程师:我的成长故事

探讨选择成为一名程序员的原因&#xff0c;是出于兴趣还是职业发展&#xff1f; 在这个科技飞速发展的时代&#xff0c;程序员这一职业无疑成为了许多人眼中的香饽饽。那么&#xff0c;是什么驱使着越来越多的人选择投身于这一行业呢&#xff1f;是出于对编程的热爱&#xff0…

三步教你怎么把icloud照片恢复至iphone!

“我手机里面照片被优化后&#xff0c;然后不小心把所有被优化的模糊照片从手机中删除了&#xff0c;但是iCloud还有&#xff0c;我应该怎样把iCloud的照片重新放回手机&#xff1f;谢谢。” 在使用iPhone时&#xff0c;iCloud照片库是一个非常方便的功能&#xff0c;它允许你在…

文化=知识+素质!电动车限制多!——早读(逆天打工人爬取热门微信文章解读)

你是一个有文化的人&#xff01; 引言Python 代码第一篇 洞见 一个人有没有文化&#xff0c;就看这五点第二篇 人民日报 来啦 新闻早班车要闻社会政策 结尾 知耻近乎勇 文化教会我们自省 以羞耻心为镜 照见自我 不断向善向上。 引言 绝了 昨天晚上早早上床 10点左右就睡眠模…

微信小程序自定义导航栏定位及胶囊按钮图解

在自定义小程序导航栏时&#xff0c;右上角的胶囊&#xff08;MenuButton&#xff09;在不同机型测试&#xff0c;会发现很难适配。 实测中 不同的手机&#xff0c;胶囊高度不一样、状态栏高度不一样。与模拟器显示的情况是不一样的。 由于小程序在不同的手机上顶部布局会发生…

单片机入门还能从51开始吗?

选择从51单片机开始入门还是直接学习基于ARM核或RISC核的单片机&#xff0c;取决于学习目标、项目需求以及个人兴趣。每种单片机都有其特定的优势和应用场景&#xff0c;了解它们的特点可以帮助你做出更合适的选择。 首先&#xff0c;我们说一下51单片机的优势&#xff1a; 成熟…

设计模式之模板方法模式详解(上)

模板方法模式 1&#xff09;概述 1.定义 定义一个操作中算法的框架&#xff0c;而将一些步骤延迟到子类中&#xff0c;模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 2.方案 背景&#xff1a;某个方法的实现需要多个步骤&#xff08;类似…

Postman之接口测试

接口测试的必要条件 &#xff1a;请求方式、请求协议、请求地址、请求头、请求参数 常用请求方式 &#xff1a;Get请求&#xff08;get请求一般是获取数据&#xff09;、Post请求&#xff08;post请求一般是提交数据&#xff09; 传参格式 &#xff1a;表单提交、请求体提交 注…

Golang入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

文章目录 一、golang 简介 1. go 语言特点2. go 语言应用领域3. 使用 go 语言的公司有哪些 二、安装 golang 1. golang 下载安装2. 配置环境变量 三、golang 开发工具 1. 安装 VSCode2. 下载所需插件 四、第一个 golang 应用 1. main 包的含义2. 示例 一、golang 简介 Go 是一…

uniapp开发微信小程序:用户手机号授权获取全流程详解与实战示例

随着多端小程序研发工具的日益普及&#xff0c;诸如uniapp、Taro、Flutter等跨平台解决方案使得开发者能够高效地构建同时适配多个主流小程序平台&#xff08;如微信、支付宝、百度、字节跳动等&#xff09;的应用。尽管各平台间存在一定的差异性&#xff0c;但在获取用户手机号…

批量插入10w数据方法对比

环境准备(mysql5.7) CREATE TABLE user (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 唯一id,user_id bigint(10) DEFAULT NULL COMMENT 用户id-uuid,user_name varchar(100) NOT NULL COMMENT 用户名,user_age bigint(10) DEFAULT NULL COMMENT 用户年龄,create_time time…