You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TensorRT(8.6.1)加速SadTalker时遭遇grid_sample_3d_cuda错误

解决TensorRT 8.6.1加速SadTalker时的grid_sample_3d_cuda内核错误

这个错误核心是TensorRT生成的CUDA内核和你的GPU架构不兼容,或是依赖的CUDA环境版本不匹配,导致没有适配当前设备的可执行内核镜像。以下是针对性解决步骤:

  • 确认GPU算力并指定编译架构
    先通过nvidia-smi查看GPU型号,对应找到其算力版本(比如RTX 30系列为8.6,RTX 40系列为8.9/9.0)。生成TensorRT引擎时强制指定对应算力:

    • 用trtexec工具时,添加参数--gpu-architecture=compute_XX(XX替换为你的算力值,比如86),示例命令:
      trtexec --onnx=sadtalker_model.onnx --saveEngine=sadtalker_trt.engine --fp16 --explicitBatch --gpu-architecture=compute_86
      
    • 用Python API时,在创建Builder阶段设置GPU架构:
      import tensorrt as trt
      TRT_LOGGER = trt.Logger(trt.Logger.WARNING)
      builder = trt.Builder(TRT_LOGGER)
      builder.set_gpu_archs([trt.BuilderArch.ARCH_86])  # 替换为对应算力的ARCH常量
      
  • 检查CUDA与TensorRT版本兼容性
    TensorRT 8.6.1仅支持CUDA 11.8和12.0版本,同时需要匹配的NVIDIA驱动(CUDA 11.8要求驱动≥450.80.02,CUDA 12.0要求≥525.60.13)。确保系统CUDA、驱动版本完全适配,不兼容环境会直接导致内核编译失败。

  • 优化SadTalker的ONNX导出参数
    SadTalker中的grid_sample_3d操作可能使用了TensorRT不完全支持的参数(比如align_corners=False)。修改SadTalker导出ONNX的代码,将grid_sample的align_corners设为True,同时检查3D采样的输入维度顺序是否符合TensorRT要求,重新导出ONNX后再转换为TensorRT引擎。

  • 清理TensorRT缓存并重新生成引擎
    TensorRT会缓存已编译的内核,旧缓存可能和当前GPU不兼容。删除缓存文件后重新生成引擎:

    • Linux系统:删除~/.cache/tensorrt目录下所有文件
    • Windows系统:删除C:\Users\<你的用户名>\AppData\Local\Temp\TensorRT目录下所有文件

内容的提问来源于stack exchange,提问作者TSerendipity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:46:02