cuda c++编程报错汇总

1 random is underfined

下面图片里面的两个问题是同时报错的,将程序里面的random改成rand就不报错了
在这里插入图片描述
在这里插入图片描述

2 c++显示未定义标识符,threadIdx

添加下列声明,报错消失

#include <device_launch_parameters.h>

3 未定义标识符__syncthreads

网上说的添加这个头文件,我的报错反而更多了

#include <device_functions.h>

后来发现这个错误根本就不是错误,只是编译器不识别而已,程序不能正常执行是因为内存溢出,数组太大了

4 opencv头文件报错,No such file or directory

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
  1. open CV下载链接
  2. 我的VS是2019,看到网上有2019安装CV4.8的,就打算安装4.8了,网上的教程,参照该教程修改之后,该错误解决

5 image = cv::imread(filename.c_str(), CV_LOAD_IMAGE_COLOR);,CV_LOAD_IMAGE_COLOR is undefined

增加头文件解决

#include "opencv2/imgcodecs/legacy/constants_c.h"

6 cv::cvtColor(image, imageRGBA, CV_BGR2RGBA);–> CV_BGR2RGBA is undefined

增加头文件解决

#include <opencv2\imgproc\types_c.h>

7 找不到opencv_world480.dll,无法继续执行代码,重新安装程序可能会解决此问题

在这里插入图片描述
参考博客,成功解决上述问题,将 opencv 安装路径 目录\opencv\build\x64\vc15\bin 中的.dll结尾的文件全部拷贝到C:\Windows\System32 中

8 关于openCV的各个头文件或者是调用函数都没报错,图像路径也是对的,但是就是读取图像是空的

解决方案,只保留一个****d.lib,问题解决
在这里插入图片描述
成功使用下列测试代码完成测试

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{

	Mat image;
	image = imread("H:\\SZ_code\\GPU\\test.jpg");

	if (image.empty())
	{
		printf(" No image data \n ");
		return -1;
	}
	else
	{
		cout << "install success" << endl;
		cv::namedWindow("IMAGE");  //创建用于显示img的窗口。"IMAGE"为窗口名
		cv::imshow("IMAGE", image);  //窗口"IMAGE"被用于显示img
	}
	waitKey(0);
	return 0;
}

在这里插入图片描述

9 错误 C1083 无法打开包括文件: “opencv2/core/core.hpp”: No such file or directory Cuda_mean

10 严重性 代码 说明 项目 文件 行 禁止显示状态错误 LNK2019 无法解析的外部符号 cublasCreate_v2,函数 main 中引用了该符号

在这里插入图片描述
在这里插入图片描述

11 OpenCV(4.1.0) Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow,

在这里插入图片描述

12 identifier “atomicAdd” is undefined

拼写错误 。。。 正确乒协 atomicAdd

CUDA C/C++编程中,__syncthreads()函数是线程间同步的重要工具,确保所有线程在继续执行之前完成特定任务。在进行GPU计算时,特别是当多个线程需要共享内存或其他资源时,__syncthreads()可以帮助防止数据竞争和不一致的状态。例如,在一个线程块内对共享内存进行累积时,需要使用__syncthreads()确保所有线程已经完成写入操作,才允许任何线程读取共享内存。 参考资源链接:[CUDA C/C++ 入门教程:从 HelloWorld 开始探索 GPU 并行计算](https://wenku.csdn.net/doc/84n0asjdmk?spm=1055.2569.3001.10343) 异步操作是CUDA中的另一个关键概念,它允许在GPU执行计算的同时,CPU进行其他任务,从而提高整体程序的效率。在CUDA中,异步操作通常是通过使用CUDA流来实现的。流可以管理GPU上的操作序列,允许它们在不同的流中并行执行。这需要程序员明确地规划数据传输和内核执行,以确保操作的正确顺序和依赖性。 错误处理是CUDA程序稳定运行的基石。CUDA提供了多种错误检查机制,其中最常用的是检查API调用的返回值。例如,在调用cudaMalloc分配设备内存后,应该检查返回值是否为cudaSuccess,如果不是,那么需要根据返回的错误码进行适当的错误处理。此外,CUDA还提供了一套CUDA事件API,可以用来记录和查询异步操作的状态,这在调试和优化异步代码时非常有用。 推荐深入阅读《CUDA C/C++ 入门教程:从 HelloWorld 开始探索 GPU 并行计算》,这本教程详细介绍了CUDA的基础知识和编程技巧,从基础的设备管理到内存管理、线程块、同步函数__syncthreads()的使用,以及异步操作和错误处理的策略。通过学习这些基础知识,你可以构建出更加高效和稳定的CUDA程序。 参考资源链接:[CUDA C/C++ 入门教程:从 HelloWorld 开始探索 GPU 并行计算](https://wenku.csdn.net/doc/84n0asjdmk?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值