Closed ZJDATY closed 6 months ago
@ZJDATY 检查malloc的size
@ZJDATY 检查malloc的size
早上好啊,我检查了正常运行的笔记本 上代码中的size 和出问题的电脑上 size都是一样的。
然后他的详细报错信息是
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
@FeiYull 大佬,麻烦看一下。我做了项测试 ,我把现有工程中,去掉 kernel_function.cu decode_yolov8.cu 相关的代码和函数,此工程中凡是调用到这里面的函数我全部注释,重新编译后。
m_input_src_device 是有值的 ,说明显存开辟成功了。 这个是否可以说明, cu 文件中的 某些函数功能不支持 有可能会导致 cuda使用出问题,在我这里的体现就是 cudaMalloc 不成功。 我的显卡型号是RTX8000 。 大佬能否排查一下。
或者能否给些信息,cu 文件中 哪些函数 可能会不被支持。我单独注释这些函数 再试一下,最终我们配合查出原因。
@ZJDATY 如果分配成功,你就走预处理下一步。检查device内存数据,最好把数据拷贝到host端查看
@ZJDATY 应该不存在支持问题,都是最朴素的cuda c
@ZJDATY 如果分配成功,你就走预处理下一步。检查device内存数据,最好把数据拷贝到host端查看
这里能分配成功 是因为 我把所有调用 cu 文件里的函数都注释了,然后给他排除在项目外了,接着走下面的预处理,那也无法成功啊。预处理里 有函数调用到 cu 里 功能 被 注释掉了。
@ZJDATY 你给.cu文件设置了nvcc编译嘛?
@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 你给.cu文件设置了nvcc编译嘛?
我在笔记本上 都有成功运行过,而且测试过 各种版本的 cuda ,这台问题的 也配置过很多遍 。加起来配置过十几遍 ,正常配置这一块 我敢保证 没有问题。
@ZJDATY 命令行参数也设置了吧。总感觉哪里可能有遗漏
@ZJDATY 命令行参数也设置了吧。总感觉哪里可能有遗漏
设置了
@FeiYull 我可以提供 远程 方便大佬排查 。如果大佬有空的话。
@ZJDATY q 732369616
我是看了 win10下yolov8 tensorrt 部署 这篇文章,并在我笔记本上跑通。 部署的教学视频我也反复观看,所有配置细节都按照大佬的要求去做的 。但是换到了公司电脑上 开辟显存 cudaMalloc 这里就出错了。电脑的环境配置是cuda11.2+tensorrt8424+cudnn821 。我调试发现m_input_src_device 为null,没有开辟成功。报错输出里也显示操作不支持。 我把 checkRuntime()去掉,,没有报错,但是还是m_input_src_device 依旧为nul。
这里我怀疑环境是不是有问题。于是我用找了一份不用 cuda 代码加速推理的c++ 示例。在这个示例代码里我的 cudaMalloc 能够正常使用。 并可以成功用显卡推理 trt 模型。
所以 kernel_function.cu decode_yolov8.cu 里会有问题吗?还有哪些方面的可能原因会影响 cudaMalloc () 不成功?