FeiYull / TensorRT-Alpha

🔥🔥🔥TensorRT for YOLOv8、YOLOv8-Pose、YOLOv8-Seg、YOLOv8-Cls、YOLOv7、YOLOv6、YOLOv5、YOLONAS......🚀🚀🚀CUDA IS ALL YOU NEED.🍎🍎🍎
GNU General Public License v2.0
1.26k stars 196 forks source link

使用您的加速部署遇到的一些很诡异的问题 #74

Closed ZJDATY closed 6 months ago

ZJDATY commented 6 months ago

我是看了 win10下yolov8 tensorrt 部署 这篇文章,并在我笔记本上跑通。 部署的教学视频我也反复观看,所有配置细节都按照大佬的要求去做的 。但是换到了公司电脑上 开辟显存 cudaMalloc 这里就出错了。电脑的环境配置是cuda11.2+tensorrt8424+cudnn821 。我调试发现m_input_src_device 为null,没有开辟成功。报错输出里也显示操作不支持。 我把 checkRuntime()去掉,,没有报错,但是还是m_input_src_device 依旧为nul。

image

这里我怀疑环境是不是有问题。于是我用找了一份不用 cuda 代码加速推理的c++ 示例。在这个示例代码里我的 cudaMalloc 能够正常使用。 并可以成功用显卡推理 trt 模型。

image

所以 kernel_function.cu decode_yolov8.cu 里会有问题吗?还有哪些方面的可能原因会影响 cudaMalloc () 不成功?

FeiYull commented 6 months ago

@ZJDATY 检查malloc的size

ZJDATY commented 6 months ago

@ZJDATY 检查malloc的size

早上好啊,我检查了正常运行的笔记本 上代码中的size 和出问题的电脑上 size都是一样的。 image image 然后他的详细报错信息是

runtime error D:\vcworkspaces\TensorRT-Alpha\yolov8\utils\yolo.cpp:12  cudaMalloc(&m_input_src_device, param.batch_size * 3 * param.src_h * param.src_w * sizeof(unsigned char)) failed.
  code = cudaErrorNotSupported, message = operation not supported
ZJDATY commented 6 months ago

@FeiYull 大佬,麻烦看一下。我做了项测试 ,我把现有工程中,去掉 kernel_function.cu decode_yolov8.cu 相关的代码和函数,此工程中凡是调用到这里面的函数我全部注释,重新编译后。 image

m_input_src_device 是有值的 ,说明显存开辟成功了。 这个是否可以说明, cu 文件中的 某些函数功能不支持 有可能会导致 cuda使用出问题,在我这里的体现就是 cudaMalloc 不成功。 我的显卡型号是RTX8000 。 大佬能否排查一下。

ZJDATY commented 6 months ago

或者能否给些信息,cu 文件中 哪些函数 可能会不被支持。我单独注释这些函数 再试一下,最终我们配合查出原因。

FeiYull commented 6 months ago

@ZJDATY 如果分配成功,你就走预处理下一步。检查device内存数据,最好把数据拷贝到host端查看

FeiYull commented 6 months ago

@ZJDATY 应该不存在支持问题,都是最朴素的cuda c

ZJDATY commented 6 months ago

@ZJDATY 如果分配成功,你就走预处理下一步。检查device内存数据,最好把数据拷贝到host端查看

这里能分配成功 是因为 我把所有调用 cu 文件里的函数都注释了,然后给他排除在项目外了,接着走下面的预处理,那也无法成功啊。预处理里 有函数调用到 cu 里 功能 被 注释掉了。

FeiYull commented 6 months ago

@ZJDATY 你给.cu文件设置了nvcc编译嘛?

ZJDATY commented 6 months ago

@FeiYull 我现在的操作是 直接把他从项目中删了 。

我用的 VS ,下面这个报错信息时 我都是按照大佬的文档和视频设置 的 , .cu 文件 都是设置为 CUDA/C++ 进行编译的 。


runtime error D:\vcworkspaces\TensorRT-Alpha\yolov8\utils\yolo.cpp:12  cudaMalloc(&m_input_src_device, param.batch_size * 3 * param.src_h * param.src_w * sizeof(unsigned char)) failed.
  code = cudaErrorNotSupported, message = operation not supported
ZJDATY commented 6 months ago

@ZJDATY 你给.cu文件设置了nvcc编译嘛?

我在笔记本上 都有成功运行过,而且测试过 各种版本的 cuda ,这台问题的 也配置过很多遍 。加起来配置过十几遍 ,正常配置这一块 我敢保证 没有问题。

FeiYull commented 6 months ago

@ZJDATY 命令行参数也设置了吧。总感觉哪里可能有遗漏

ZJDATY commented 6 months ago

@ZJDATY 命令行参数也设置了吧。总感觉哪里可能有遗漏

设置了

ZJDATY commented 6 months ago

@FeiYull 我可以提供 远程 方便大佬排查 。如果大佬有空的话。

FeiYull commented 6 months ago

@ZJDATY q 732369616