- 博客(21)
- 收藏
- 关注
原创 cuBLAS库入门
最初,为了尽可能地兼容Fortran语言环境,cuBLAS库被设计成列优先存储的数据格式,不过C/C++是行优先的,所以在使用时要注意数据格式。要使用 cuBLAS API,应用程序必须在 GPU 内存空间中分配所需的矩阵和矢量,用数据填充它们,调用所需 cuBLAS 函数的序列,然后将结果从 GPU 内存空间上传回主机。cuBLAS API 还提供了用于从 GPU 写入和检索数据的帮助程序函数。
2023-10-11 10:48:52
528
原创 c++ 数据成员含指针的类 无法使用默认析构、拷贝构造、operator=
当类的数据成员存在,并且被指对象通过某些成员函数(如构造函数)分配地址,那么默认的默认析构、拷贝构造、operator=通常不可用。若使用默认函数,被复制的是指针,而不是指针所指向的对象(复制之后,两个指针指向同一对象)。另一个问题是可能造成。
2023-08-31 21:42:16
126
原创 c++ 对象的返回 返回值传递
如果传递的是自定义类型(大的、复杂的对象),比如class,那么函数返回最好用引用传递,防止产生临时变量,增加内存的负担,可节省复制的开销。被传递的变量不会被改变。下面这个例子只是告诉你怎么用常量引用返回,实际上这里用按值返回也很方便。一般存储单一、c++的内置类型使用值传递。按值返回总是很安全的。,被传递的变量不会被改变。
2023-08-31 20:51:42
135
原创 C++、CUDA程序计时
最近在测试自己写的cuda程序性能,需要用到计时,简单总结了以下查阅到的计时方法。如有补充,欢迎评论、私信交流。计时一般分两种情况:(1)测c++、CUDA混合编码(或者说同时包含设备代码、主机代码的混合代码)的程序段;(2)只测核函数、设备内存拷贝函数等设备代码。对于第(1)种情况,常用的计时方式有两种(欢迎补充),都是库函数里提供的方法。其次还有一种方法也能使用,不过需要注意使用场合。对于第(2)种情况,一般用nsys指令等。
2023-08-30 16:36:38
216
1
原创 c++ 基本class语法 例子
②使用explicit意味着单参数构造函数不能用来创建隐式临时对象,这样在定义类的对象或赋值时,编译器能正确分析出类型不匹配的问题。①成员函数需声明为类的一部分,否则将被认为是全局的。①默认参数在接口中被定义,在实现中被忽略。
2023-08-29 21:34:05
137
1
原创 常见排序方法:冒泡排序、插入排序、选择排序(c++)
(3)选取下一个元素(i+1),重复步骤(2),直至列表中的每个元素都进行了步骤(2)的操作。(2)重复步骤(1)的操作,依次比较两两相邻的两个元素。所有元素对比过后表示一次循环结束。(1)从第2个元素开始,选取第2个元素(i),认为第1个元素为一个只有一个元素的有序列表。(2)将选取的元素与之前的元素依次比较,如果选取的元素小于于列表中的元素,交换他们的位置。(2)遍历剩余的N-1个元素,找到最小的元素,将它排在剩余N-1个元素的第一个。(1)遍历整个列表N个元素,找到最小的元素,与第一个元素交换位置。
2023-08-16 17:47:44
47
1
原创 opencv+cuda提高精度出错
图像读取时是BGR色彩空间的,想转为其他色彩空间进行处理,并将U8转换为32F,以提高处理精度。2)转换色彩空间 cvtColor(img1, img2, COLOR_BGR2GRAY);1)先进行精度转换 img.convertTo(img1, CV_32FC3);排查发现,打印出的img2的值不正常。原因:转换色彩空间函数cvtColor的输入输出格式为8U。3)对img2进行处理,得到结果后,把结果转换为8UC3。
2023-07-07 22:02:55
71
1
原创 TX2上跑已在Windows上跑通的.cu代码出错
跑了一个c++下opencv +cuda混合程序,处理图像的,成功。复制代码去tx2上跑,编译、链接成功,执行失败。还以为是我用了opencv3.4.0里没有,但4.5.5有的功能,结果发现是读取图像时文件路径有错。笔记本环境:Windows11+visual stdio 2022+opencv 4.5.5+cuda11.6。tx2环境:Ubuntu18.04+cuda10.2+opencv3.4.0。以后老老实实用“/”吧。
2023-06-27 16:41:34
103
1
原创 opencv+cuda的.cu文件编译出错
翻译:策略CMP0037未设置:目标名称不应保留,而应 匹配有效性模式。运行“cmake - help-policy CMP0037”获取策略 细节。目标名称“test”被保留或对某些CMake特性无效, 例如生成器表达式,并可能导致未定义的行为。调用堆栈(最近的调用在前): cmakelists . txt:39(CUDA _ ADD _ EXECUTABLE) 这个警告是给项目开发者的。原因:我把编译结果和可执行文件名字命名成test了,这个名字已经被某些库文件(或其他)定义,改掉就行了。
2023-06-27 15:35:47
244
1
原创 0x00007FF67FEF74C9 处(位于 Task1.exe 中)引发的异常: 0xC0000005: 写入位置 0x0000000000000000 时发生访问冲突。
visual stdio 2022+opencv处理图像Mat数据,编译可通过,执行时报错: 0x00007FF67FEF74C9 处(位于 Task1.exe 中)引发的异常: 0xC0000005: 写入位置 0x0000000000000000 时发生访问冲突。在定义图像时,把大小也定义了,就没事了:Mat dst(height, width, CV_8UC1);比如定义指针或数组时,是否初始化了数组或指针指向对象的大小?我这里的问题是:定义结果图像时:Mat dst;
2023-06-25 17:18:02
832
原创 opencv+cuda经验
GPU设备代码,即带__global__前缀的,输出图像,格式用float* dst,在设备代码中直接。就行了,不用使用图像的指针。
2023-06-15 10:01:37
128
1
原创 OpenCV(4.5.5)Error:Assertion failed(mv[i].size == mv[0].size&&mv[i].depth()==depth)in cv::merge
一些出错经验
2023-06-13 15:46:54
391
1
原创 原码、反码、补码的表示方式和数值范围
原码的左边第一位为符号位(正数为0,负数为1),其余位表示数值(真值绝对值的2进制数)。正数的反码与原码一样;负数的反码是原码的符号位不变,其余位按位取反。正数的补码与原码一样;负数的补码是原码的符号位不变,其余位按位取反,并在末尾加1(即在反码的基础上加1)。n位数的数值范围: 原码 反码 补码 例如8位2进制数表示的数值范围为: 原码
2021-11-05 20:46:50
1817
原创 输出相关、反相关、真 相关
数据相关可分为: 写后读相关(Read After Write,RAW)(又称真相关) 读后写相关(Write After Read,WAR)(又称反相关、逆相关) 写后写相关(Write After Write,WAW)(又称输出相关)1.同一条指令中,可能会存在读后写相关(又称反相关、逆相关)如: ADD R1,R1,R2...
2021-11-05 14:45:36
3851
原创 A time value could not be extracted from the current line
刚接触modelSim,在练习过程中发现一些问题,现记录下来。希望对大家的学习有帮助。代码中采用了语句:always #10 A<=A+1;编译无错,simulate的时候遇到一个问题:A time value could not be extracted from the current line以为是always没有添加敏感列表。添加了之后问题未解决。仔细检查之后发现是例化的代码敲错了...所以如果出现A time value could not be extracted fr
2021-10-19 15:53:41
1669
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人