常见问题

更新时间:
复制为 MD 格式

PPU针对NVNvidia Compute Capacity(即类似于编译选项中nvcc --arch sm_80/70)的兼容方案是什么?

客户就当基于a100的环境来开发编译

当前实现中不管用户在nvcc --arch 指定什么,目前的行为都是by default会当sm_80来看待,不会检查报错

CUDA C++核心库的兼容情况,包括cuCollections, CUB, libcudacxx: thrust/pipelines/sync等的支持情况说明

  1. 就其中cub/thrust/pipelines/sync/libcudacxx相关的包含在sdk/include中的算法库,说明如下:

    1. pipeline/sync/bar/mbarrier等部分属于CUDA c/c++编程模型的基础语法部分, 用于异步数据传输中的同步原语,都支持。

    2. cub/thrust/libcudacxx作为头文件的计算库,作为CUDA SDK中原生的内容,我们没有做任何功能性修改,使用者大部分场景下正常使用即可。除了如下的场景:

      • cub/thrust代码中cdp相关的执行路径被屏蔽,使用者也不能尝试以CDP的方式来使用cub/thrust/libcudacxx的功能。

      • sdk中包含的cub/thrust代码中由于cdp相关代码逻辑做了修改,如果用户希望在自己的项目里直接引用开源的更新版本,可能会导致编译失败,需要做一些相应的修改。

  2. cuCollections由于依赖CUPTI Perfworks API,PPU暂时不支持,具体请参见CUDA C++核心库的兼容性遇到问题

PPU是否支持PyTorch的扩展Apex(混合精度)特性?是否支持Megatron、DeepSpeed、MMLab?

SDK 1.3 上支持Apex 24.04.01,支持混合精度。

SDK 1.4 上支持Megatron-core v0.8.0DeepSpeed v1.14.4。

支持 Openmmlab中自动驾驶模型依赖的mmdetection3d v1.4.0及其依赖的mmengine、mmdet、mmcv。

推理和Serving,是否支持Triton Inference Server?是否支持TensorRT-LLM、vLLM、SGLang作为Triton Inference Server的后端?

  • Triton Inference ServerCPU库,可以支持。

  • Triton Inference Server的后端支持情况:

    • 支持vLLM 作为后端。

    • 目前不支持TensorRT-LLM,但提供跟TensorRT-LLM功能类似的软件栈(Holems-LLM)支持作为Triton Server后端。

    • SGLang后端目前看官方https://github.com/triton-inference-server里面没有说有支持,需要业务方提供GPU上支持的步骤,用于验证PPU是否支持

PTG的对等工具链是什么(对等RosettaStone文档),包括常用的smi、nsys、ncompute、Performance Profiling工具集、编译Toolchain集合

Nvidia工具链

PTG对等的工具链

说明

nvidia-smi

ppu-smi

nvcc

nvcc

Nsight Systems (nsys)

Asight Systems (asys)

Nsight Compute (ncu)

Asight Compute (acu)

DCGM

PPU DCGM(dcgmi)

cuobjdump

hgobjdump

cuda-gdb

ppu-gdb

cuxxfilt

hgfilt

cuda-memcheck

hggc-memcheck

nvprof

<not applicable>

早期工具,已被NV被弃用,相应功能请使用Asight Tools

cupti

hgpti

visual profiler

<not applicable>

早期工具,已被NV被弃用,相应功能请使用Asight Tools

VampirTrace

<not applicable>

早期工具,已停止维护,相应功能请使用 Asight Tools

NVTAGS

<not applicable>

无计划(优化非对称通信 workloads 上 GPU 与 进程间 mapping 关系的工具,主要应用workloads 不是 AI workloads, 而是传统的 HPC 集群 workloads,HPC相关的能力我们暂无计划)

PTG的图形/图像/视频处理能力的支持情况(客户的场景包括视频编解码、多模态智驾场景的前后处理)如何,希望给出文档说明

  • 对生态上的常用软件的支持情况

    直接支持:

    软件

    说明

    FFmpeg

    编译时需要打开cuvid, nvencnpp硬件加速支持

    OpenCV

    编译时需打开CUDA相关支持,但因为目前PPU不支持TextureSurface,编译会失败;预计下一个版本会解决编译问题。

    DALI

    可以支持图像加速和视频加速;PTG可直接提供DALI安装包。

    nvImageCodec

    提供图像编解码能力,其中JPEG为硬件加速

    Open3D

    SDK 1.4上支持,对外预计12底提供镜像

    Pillow

    (CPU编解码,不需要PPU SDK额外提供支持)

    Pillow-SIMD

    (CPU编解码,不需要PPU SDK额外提供支持;编译失败可能是环境缺少相关依赖库,与加速器并无关联)

    Scikit-Image

    (CPU编解码,不需要PPU SDK额外提供支持)

    Image-IO

    (CPU编解码,不需要PPU SDK额外提供支持)

    衍生支持:

    软件

    说明

    PyAV

    PyAV实际直接基于FFmpeg实现视频编解码

    PyTorch(TorchVisionTorchAudio)

    PyTorch子模块TorchVisionTorchAudio都可以直接调用PyAV(但默认不打开硬件加速,需要修改少量代码)

    PyTorch(TorchVision)

    TorchVision支持cuda_video_decoder这个backend,可以支持视频编解码硬件加速

  • 专用的计算kernel、API等,是否有,请列举

    以上生态常用软件所使用的硬件加速能力:

    • Video Codec:实际调用Nvidia Video Codec SDK 接口,兼容至v12.3

    • 图像:实际调用nvJPEG接口,兼容至v12.2

    • 图像前后处理:调用NPP接口(实际是用cuda kernel实现),Beta兼容至v11.6

    视频图像处理的性能可与A100对齐,如下仅列出不支持的情况:

    • Video decode不支持raw nvdec模式,因为FFmpeg等框架实际都使用cuvid decode模式。

    • Video decode不支持MPEG1、MPEG2、MPEG4、VC1、VP8legacy格式,主要支持H264/H265/AV1/VP9/AVS2。

    • 不支持JPEGlossless,不支持JPEG2000

    • NPP目前只支持2D Image Process接口,不支持Signal Process接口(FFmpeg/OpenCV/DALI等都只会用到2D image process接口)。

客户自行测试CUDA C++核心库的兼容性遇到问题(见截图),需要解释

image.pngimage.png

  • 上面nvbench等链接错误是用到的CUPTI Perfworks API,PPU暂时不支持。

  • CUPTICUDA中对外提供的性能分析库,用于性能分析工具的开发,NV自带的Nsight工具也是使用CUPTI API开发。

  • CUPTI库上较常使用的是CUPTI Activity APICUPTI Callback API。这两部分在TensorFlowPyTorch中都有使用,PPU SDK 提供了对应的支持。

  • Perfworks API 主要由NV自身的Nsight Compute工具在使用,被第三方应用使用的很少,所以支持的进展比较慢。

  • PPU SDK 1.5 上,我们首先会解决Perfworks库的链接问题,在后续PPU SDK版本,我们根据nvbench中使用到的API逐步支持PPU版本的nvbench。