如何使用 NVIDIA Visual Profiler 测量每个扭曲的银行冲突?

     2023-04-15     230

关键词:

【中文标题】如何使用 NVIDIA Visual Profiler 测量每个扭曲的银行冲突?【英文标题】:How to measure bank conflicts per warp using NVIDIA Visual Profiler? 【发布时间】:2016-10-05 15:14:39 【问题描述】:

我正在做一个详细的代码分析,我想测量每个 warp 的银行冲突总数。

nvvp 文档列出了这个指标,这是我能找到的唯一一个与银行冲突相关的指标:

shared_replay_overhead:每条执行指令因共享内存冲突而重放的平均次数

当我使用nvprof(或nvvp)分析指标时,我得到如下结果:

Invocations            Metric Name                        Metric Description                Min         Max         Avg
Device "Tesla K20m (0)"
Kernel: void matrixMulCUDA<int=32>(float*, float*, float*, int, int)
301                    shared_replay_overhead             Shared Memory Replay Overhead    0.089730    0.089730    0.089730

我需要利用这个值0.089730 或设计一些其他方法来衡量银行冲突的数量。

我知道这个值是所有正在执行的 warp 的“平均值”。如果我必须测量每个 warp 的银行冲突总数,有没有办法使用 nvprof 结果来做到这一点?

我想到的可能方法:

通过使用shared_replay_overhead 结果并在公式中使用它们来计算银行冲突的数量。我猜我必须应用某种公式,例如 shared_replay_overhead * Total number of warps launched,我事先知道 Total number of warps launched,但我不知道是什么。 首先检测它是四路存储库冲突、八路存储库冲突等,然后将4/8 乘以共享内存操作发生的次数(如何测量? )。

除了nvprof 结果之外,这可能还需要相当好的关于 GPU 架构的技术知识,我认为我还没有。郑重声明,我的 GPU 是 Kepler 架构,SM 3.5。

即使我可以测量每个块而不是每个扭曲的银行冲突数量,也足够了。之后,我可以进行必要的计算以获取每个经纱的值。

【问题讨论】:

【参考方案1】:

我认为您应该查看CUPTI(Cuda Profiling Tools Interface)文档。在/extras/CUPTI 目录中也有一些与您的 CUDA SDK 相关的示例。我对这个库不是很熟悉,但看起来你可以编写自己的分析器,测量你想要的,或者收集你感兴趣的指标。这将是低级的,但这是你需要得到的准确的答案。

【讨论】:

感谢您的回答,我查看了 CUPTI 文档,但还没有找到任何有用的信息。

NSight (NVIDIA) 无法在 Visual Studio 中使用“暂停和捕获帧”功能正常工作

】NSight(NVIDIA)无法在VisualStudio中使用“暂停和捕获帧”功能正常工作【英文标题】:NSight(NVIDIA)doesnotworkcorrectlyusing\'PauseandCaptureframe\'functionalitywithVisualStudio【发布时间】:2014-09-1202:21:40【问题描述】:我几天前安装了NSightforVisualSt... 查看详情

使用 Visual Studio 2010 在 Nvidia GEFORCE 上的 OpenCL 代码

】使用VisualStudio2010在NvidiaGEFORCE上的OpenCL代码【英文标题】:OpenCLcodeonNvidiaGEFORCEusingVisualStudio2010【发布时间】:2014-07-2501:55:53【问题描述】:我是OpenCL新手,我一直在尝试在Nvidia上测试运行OpenCL代码。我已经安装了CUDA6.0工具包... 查看详情

使用 NVIDIA Nsight 2.1 和 Visual Studio 2010 调试 OpenCL

】使用NVIDIANsight2.1和VisualStudio2010调试OpenCL【英文标题】:DebuggingOpenCLwithNVIDIANsight2.1andVisualStudio2010【发布时间】:2012-03-1717:03:29【问题描述】:据我所知,NvidiaNsight2.1提供了调试OpenCL代码的可能性。我已经通过了所有NsightMonitor... 查看详情

如何在 NVidia Desktop 上创建 EGL 上下文

】如何在NVidiaDesktop上创建EGL上下文【英文标题】:HowtocreateEGLcontextonNVidiaDesktop【发布时间】:2015-11-0510:13:30【问题描述】:我正在寻找在桌面NVidia上创建EGL上下文的代码片段。我知道在Windows上,NVidia通过扩展WGL_EXT_create_context_es... 查看详情

如何在 Visual Studio / OpenGL 中设置 GPU [重复]

】如何在VisualStudio/OpenGL中设置GPU[重复]【英文标题】:HowtosetGPUinvisualstudio/OpenGL[duplicate]【发布时间】:2018-06-1610:59:38【问题描述】:我使用的是SurfaceBook2和视觉工作室。我正在尝试制作一个OpenGL应用程序,我注意到它默认使用... 查看详情

有啥方法可以在 NVIDIA 显卡上的 Visual Studio 中运行程序调试?

】有啥方法可以在NVIDIA显卡上的VisualStudio中运行程序调试?【英文标题】:AnywaystorunprogramdebugginginVisualStudioonNVIDIAgraphicscard?有什么方法可以在NVIDIA显卡上的VisualStudio中运行程序调试?【发布时间】:2015-07-1311:57:44【问题描述】:... 查看详情

如何将 Nomad 与 Nvidia Docker 一起使用?

】如何将Nomad与NvidiaDocker一起使用?【英文标题】:HowtouseNomadwithNvidiaDocker?【发布时间】:2017-10-1517:43:08【问题描述】:有什么方法可以将nvidia-docker与Nomad一起使用?在Nvidia上进行计算的程序可以在本地运行,但不适用于nvidia-doc... 查看详情

如何在 Visual Studio 中将 common/inc 文件夹添加到 CUDA 项目?

】如何在VisualStudio中将common/inc文件夹添加到CUDA项目?【英文标题】:Howtoaddcommon/incfoldertoaCUDAprojectatVisualStudio?【发布时间】:2011-12-2401:33:50【问题描述】:我想使用CUDA开发gpu计算算法。我正在使用VisualStudio2010终极版。在我安装... 查看详情

如何通过 Vulkan 使用 Nvidia Tensor Cores

】如何通过Vulkan使用NvidiaTensorCores【英文标题】:HowtouseNvidia\'sTensorCoresviaVulkan【发布时间】:2019-06-1621:44:50【问题描述】:如何使用Vulkan来利用Nvidia的张量核心(在计算着色器中?!)?NvidiaProgrammingTensorCoresinCUDA9有这篇文章,... 查看详情

如何使用 C# 分别控制立体帧? (NVIDIA 3D 快门眼镜)

】如何使用C#分别控制立体帧?(NVIDIA3D快门眼镜)【英文标题】:Howtocontrolstereo-framesseparatelywithC#?(NVIDIA3Dshutterglasses)【发布时间】:2011-08-2113:56:44【问题描述】:我正在尝试制作一个非常简单的应用程序,它可以在每只眼睛上... 查看详情

nvidia 视觉分析器遇到无效选项:--openacc-profiling

】nvidia视觉分析器遇到无效选项:--openacc-profiling【英文标题】:nvidiavisualprofilerEncounteredinvalidoption:--openacc-profiling【发布时间】:2017-04-0816:01:21【问题描述】:在nvidiaVisualProfiler上运行一个简单的应用程序显示错误:Encounteredinvali... 查看详情

尝试同时使用板载 iGPU 和 Nvidia 独立卡时,CUDA 失败。我如何同时使用离散的 nvidia 和集成(板载)intel gpu? [关闭]

】尝试同时使用板载iGPU和Nvidia独立卡时,CUDA失败。我如何同时使用离散的nvidia和集成(板载)intelgpu?[关闭]【英文标题】:CUDAfailswhentryingtousebothonboardiGPUandNvidiadiscretecard.Howcaniusebothdiscretenvidiaandintegrated(onboard)intelgpu?[closed]【发... 查看详情

如何将opengl与nvidia驱动程序一起使用?

】如何将opengl与nvidia驱动程序一起使用?【英文标题】:howtouseopenglwithnvidiadrivers?【发布时间】:2019-08-3008:12:02【问题描述】:我需要在我的代码中使用OpenGL。我正在使用CMake来在我的系统中搜索opengl,如下所示:find_package(OpenGLR... 查看详情

如何使Nvidia成为默认显卡?

】如何使Nvidia成为默认显卡?【英文标题】:HowtomakemakeNvidiaasthedefaultgraphicscard?【发布时间】:2020-06-2712:05:20【问题描述】:2020年3月27日:问题归结为如何在Nvidia显卡中运行应用程序。如果启用英特尔显卡,根据GPU-Z软件,Nvidia... 查看详情

如何“告诉”CMake 3.9+ 我想使用 NVIDIA 的 OpenCL 库?

】如何“告诉”CMake3.9+我想使用NVIDIA的OpenCL库?【英文标题】:HowcanI"tell"CMake3.9+IwanttouseNVIDIA\'sOpenCLlibrary?【发布时间】:2021-08-1023:01:52【问题描述】:在我的CMakeLists.txt我有:cmake_minimum_required(VERSION3.9)#...etcetc...find_package... 查看详情

如何使用 DKMS 将 NVIDIA .run 驱动程序重新打包到 .deb 中

】如何使用DKMS将NVIDIA.run驱动程序重新打包到.deb中【英文标题】:HowtorepackageNVIDIA.rundriversinto.debwithDKMS【发布时间】:2011-02-2509:57:34【问题描述】:目前,Ubuntu在其存储库中以nvidia-current的形式提供195.36.24驱动程序。这个打包的... 查看详情

nvidia-smi 结果中如何定义 GPU 和内存利用率?

】nvidia-smi结果中如何定义GPU和内存利用率?【英文标题】:HowisGPUandmemoryutilizationdefinedinnvidia-smiresults?【发布时间】:2011-07-0211:45:59【问题描述】:我目前正在使用nvidia的驱动程序“nvidia-smi”附带的工具在GPU上进行性能监控。当... 查看详情

如何让 OpenCl 看到 intel 和 nvidia 设备?

】如何让OpenCl看到intel和nvidia设备?【英文标题】:HowtoletOpenClseeintelandnvidiadevices?【发布时间】:2013-11-0507:38:01【问题描述】:我想知道如何让OpenCl“看到”我的K20。至强和至强融核同时使用?尤其是我对这里使用两个库(来自N... 查看详情