GPU_Tool工具需求规格说明书

1. 简介

1.1 目的


本文阐述了GPU_Tool工具的开发需求。用于指导GPU_Tool工具的开发人员进行设计、开发和测试,是整个项目后续的工作基础。

1.2 范围


本项目输出产品名称为GPU_Tool,是基于CUDA的一款GPU性能监控工具,在这个工具中将实现以下特性,并按实现优先级从高到底对其进行排序,其中本工具第一版本优先实现第1和2项特性。

  1. 支持对GPU设备的物理信息进行查询和检测。
  2. 支持监控GPU设备上运行程序的动态信息。
  3. 支持前台手动和后台自动检测GPU进程。
  4. 支持用户指定检测选项。
  5. 支持对检测GPU进程进行总结和概括。
  6. 支持以控制终端形式输出检测信息。
  7. 支持以文件形式输出和保存检测信息。
  8. 支持对GPU进程的kernel函数进行追踪。
  9. 支持对CUDA进程的API调用进行追踪。

GPU_Tool不支持以下特性:

  1. 不能够以图形界面启动。
  2. 不支持对被检测GPU进程进行调式。
  3. 不支持NVIDIA 以外GPU设备的信息检测。

2. 总体概述

2.1 软件概述


随着GPU应用的逐渐增多,特别是高性能与并行计算的广泛应用。对于软件的普通用户需要对GPU设备上运行的程序进行实时监控,对于CUDA开发工程师需要对程序进行性能监测,从而进行软件优化。GPU_Tool工具提供了详细的GPU设备物理信息和GPU进程运行的动态信息,通过这些信息可以了解GPU的处理能力和当前工作负载。

2.2 产品环境介绍


GPU_Tool工具是一款应用软件,与GPU应用一样是用户级的软件,GPU_Tool工具与GPU应用之间不存在层次关系,两者互相独立,即本工具和被检测GPU应用是分别独立编译完成的可执行应用,两者分别在CPU和GPU上执行。为了实现对GPU应用进行监控,也为方便工程师对GPU进行优化,


GPU_Tool工具需求规格说明书_第1张图片
图 1.png

3. 软件功能

========

GPU_Tool工具能够查询当前GPU静态的物理信息,以及能够监控GPU设备的动态信息和收集在当前GPU上执行进程的运行信息,包括核函数执行、内存传输、内存设置和CUDA进程的
API调用。同时,能够提供多种监控方式和检测模式。

3.1 监控方式


GPU_Tool与被监控的GPU应用之间是互相独立,即GPU_Tool和被监控应用是分别独立编译完成的可执行应用,两者分别在CPU和GPU上执行。为了实现对GPU应用进行监控,也为方便工程师对GPU进行优化,所以本工具提供两种工作方式:手动和自动。

  1. 手动方式

手动方式是指GPU_Tool工具在前台执行,并且需要用户通过GPU_Tool手动将GPU应用加载到系统上执行,进而用户自己筛选需要的选项,从而检测GPU应用相关的静态或动态信息。

  1. 自动方式

自动方式是指GPU_Tool在后台执行,并实时监控所有在GPU上执行的进程信息。这种工作方式相比手动方式要更加独立,对于GPU进程来说GPU_Tool是透明的,即GPU进程根本不知GPU_Tool的存在;但比手动方式要被动,即该工具进程将一直驻留在后台中,并对所有GPU进程进行实时检测,类似Windows中的任务管理器。

3.3 检测模式


检测模式是指用户能够根据需要对特定信息进行监控,即不同的检测模式对GPU进程的监控关注点不同,从而用户能够快速获得特定的需求信息。其中有如下几种检测模式,每种检测模式都可以是手动或自动方式下工作。

  1. 物理模式

所谓物理模式是指GPU_Tool只获得当前GPU硬件的静态信息,而对GPU进程的运行动态信息则进行忽略。如在该模式下能够获得GPU的CUDA能力、GPU版本号、驱动版本号,而忽略进程的block和wrap数。

  1. 总结模式

总结模式是指GPU_Tool只对GPU进程的动态运行信息进行监控,并提供每个kernel函数的运行信息和内存的传输信息,对于每个kernel函数,监控工具能够输出所有实体的运行总时间,以及内存传输的平均、最小和最大时间,而且GPU_Tool能够打印出所有的CUDA
运行API和驱动API的调用信息。

  1. 追踪模式

追踪模式能够提供所有在GPU设备上发生的所有活动的时间轴顺序,即能够输出在GPU上运行的kernel函数或API的调用顺序,包括kernel函数的参数、共享内存的使用情况和内存的传输量。

  1. 测量模式

测量模式为用户提供多种选项完成特定信息的测量,比如GPU进程执行的block或thread数量、kernel函数在GPU上执行的利用率、内存的使用情况等动态信息。用户可以根据自己需要进行监控,或者监控全部信息。

4. 检测信息

4.1 物理信息


每种硬件平台都有其固有物理限制,无法在软件层进行修改。GPU设备也受到这种限制,并且GPU_Tool能够查询这些物理信息。本GPU_Tool工具能够提供的查询能力和信息,参考deviceQuery应用程序和cudaDeviceProp数据结构,列出如表
1所示的物理信息。

表 1

结构 语义
Device num GPU 设备数量
Device name GPU 设备名字
CUDA Driver Version CUDA 驱动版本
CUDA Runtime Version CUDA 运行库版本
CUDA Capability Major version number CUDA设备的主计算功能集的主版本号
CUDA Capability Minor version number CUDA设备的主计算功能集的次版本号
Total amount of global memory 总共可用的全局空间
Multiprocessors 流处理器数量
CUDA Cores/MP 每个流处理器的CUDA 核心数量
GPU Max Clock rate GPU最大时钟频率
Memory Clock rate 内存时钟频率
Memory Bus Width 内存总线带宽
L2 Cache Size L2 Cache大小
Total amount of constant memory 总共的constant存储空间
Total amount of shared memory per block 每个block总共的share空间
Total number of registers available per block 每个block的总共register空间
Warp size 当前GPU中的warp大小
Maximum number of threads per multiprocessor 每个流处理器中可承载的最大线程数量
Maximum number of threads per block 每个block中可承载的最大线程数量
Max dimension size of a thread block (x,y,z) 在启动核函数时,block三维向量中的每一维向量可用创建的最大长度
Max dimension size of a grid size (x,y,z) 在启动核函数时,gird三维向量中的每一维向量可用创建的最大长度
Maximum memory pitch 在内存复制中最大的修正量(Pitch)
Concurrent copy and kernel execution 描述设备是否支持在同一个上下文中同时执行多个核函数
Run time limit on kernels 描述该设备上执行的核函数是否存在运行限制
Integrated GPU sharing Host Memory 描述该设备是否是集成GPU
Support host page-locked memory mapping 描述设备是否将主机内存映射到CUDA设备地址空间

4.2 运行信息


运行信息是指GPU进程在执行时产生的动态信息,由于不同的kernel函数和API调用都产生不同的信息结构,并且不同的用户也有不同的需求,所以参考NVIDIA
eclipse富客户端应用程序展示的信息,列出表 2所示的动态信息。

表 2

检测内容 是否可实现
GPU占有率 NO
GPU内存使用率 YES
GPU数据传输带宽 NO
CPU—GPU数据传输量 NO
GPU温度 YES
Fan值 YES
GPU Memory使用量 YES
GPU Memory空闲量 YES
流处理器中可用的最大shared 值 NO
32位流处理器中最大可用registers值 NO
获得GPU运行进程 YES

你可能感兴趣的:(GPU_Tool工具需求规格说明书)