实现矩阵相加

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 #include <opencv/cv.h>
 4 #include <opencv/highgui.h>
 5 #include <opencv2/opencv.hpp>
 6
 7 #include "cuda_runtime.h"
 8 #include "device_launch_parameters.h"
 9 using namespace std;
10 using namespace cv;
11
12 __global__ void Add_kernel(const int2* d_A, const int2* d_B,int2*  d_C,int width, int height)
13 {
14     int x = threadIdx.x + blockIdx.x * blockDim.x;
15     int y = threadIdx.y + blockIdx.y * blockDim.y;
16
17     if(x < width && y < height)
18     {
19         int offset = x + y*width;
20         d_C[offset].x = d_A[offset].x + d_B[offset].x;
21         d_C[offset].y = d_A[offset].y + d_B[offset].y;
22     }
23 }
24 int main()
25 {
26     Mat img(3, 4, CV_32S, Scalar_<int>(0));
27
28     cout<<img<<endl;
29     cout<<endl;
30
31
32     for(int i = 0 ; i < img.rows; i++)
33     {
34         for(int j = 0 ; j < img.cols; j++)
35         {
36             img.at<int>(i,j)=i+j;
37         }
38     }
39     cout<<endl;
40
41     cout<<img<<endl;
42
43
44     size_t memSize = img.step * img.rows;
45     int2* d_A = NULL;
46     int2* d_B = NULL;
47     int2* d_C = NULL;
48     cudaMalloc((void**)&d_A, memSize);
49     cudaMalloc((void**)&d_B, memSize);
50     cudaMalloc((void**)&d_C, memSize);
51
52     cudaMemcpy(d_A,img.data,memSize, cudaMemcpyHostToDevice);
53     cudaMemcpy(d_B,img.data,memSize, cudaMemcpyHostToDevice);
54
55     dim3 threads(16, 16);
56     dim3 grids((img.rows + threads.x - 1)/threads.x,(img.cols + threads.y - 1)/threads.y);
57     Add_kernel<<<grids,threads>>>(d_A, d_B, d_C, img.rows, img.cols);
58
59     cudaMemcpy(img.data, d_C,memSize,cudaMemcpyDeviceToHost);
60     cout<<"GPU"<<endl;
61     cout<<img<<endl;
62     cudaFree(d_A);
63     cudaFree(d_B);
64     cudaFree(d_C);
65
66     system("pause");
67     return 0;
68 }

转载于:https://www.cnblogs.com/LzKlyhPorter/p/4611281.html

cuda_opencv 矩阵相加相关推荐

  1. 二维数组c语言矩阵加法,C 语言实例 – 两个矩阵相加 - C 语言基础教程

    C 语言实例 使用多维数组将两个矩阵相加. #include int main(){ int r, c, a[100][100], b[100][100], sum[100][100], i, j; ...

  2. python矩阵相加_【python矩阵相加怎么做,这可是证明python功能的大好机会】- 环球网校...

    [摘要]今天的python实践内容是为了让大家了解python矩阵相加方法,对代码编程有个感性的认知.也好让大家能够理性选择,不要盲目跟从,选择适合自己当前阶段的学习内容,循序渐进,以兴趣自我探索为向 ...

  3. Java黑皮书课后题第8章:*8.5(代数:两个矩阵相加)编写两个矩阵相加的方法,编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的和

    *8.5(代数:两个矩阵相加)编写两个矩阵相加的方法,编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的和 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 8.5(代数:两 ...

  4. 十字链表计算矩阵乘积 c语言,求用十字链表实现矩阵相加算法(C语言)急!!!...

    匿名用户 1级 2010-02-09 回答 我有一个可以用的.怎么给你?百度hi我吧. 算了,我贴上来吧,由电脑编程网整理: #include #include #define smax 45 typ ...

  5. 两个矩阵相加 Exercise08_05

    1 import java.util.Scanner; 2 /** 3 * @author 冰樱梦 4 * 时间:2018年12月 5 * 题目:两个矩阵相加 6 * 7 */ 8 public cl ...

  6. (篇三)C语言的冒泡排序多解、选择排序、数组合并、矩阵相加

    文章目录 一.经典冒泡排序与选择排序 二.矩阵相加 三.数组合并 四.卖西瓜问题 C语言是非常锻炼结构化思维的语言,而结构化思维的编程思维非常重要的一点,让我们通过练习C语言实例增强我们的编程思维吧 ...

  7. 西工大NOJ数据结构理论——013.以十字链表为存储结构实现矩阵相加(严5.27)

      我第一下拿到这个题目,第一反应就是先定义好数据结构,然后构建好十字链表基础操作的函数,也就是"创插遍历"这些操作.下面是我的定义和函数操作. typedef int ElemT ...

  8. 矩阵的实现(矩阵相加)

    #include <iostream> using namespace std;class Matrix { private: int rows,columns; //矩阵行数列数 int ...

  9. 习题 10.4 有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c=a+b。

    C++程序设计(第三版) 谭浩强 习题10.4 个人设计 习题 10.4 有两个矩阵a和b,均为2行3列.求两个矩阵之和.重载运算符"+",使之能用于矩阵相加.如:c=a+b. 代 ...

最新文章

  1. 爬虫之requests模块发送post请求
  2. QuarkXPress 2020中文版
  3. java 判断qq_Java检测QQ是否在线状态
  4. 从上千篇论文脱颖而出,支付宝论文凭什么获得WWW2020评委认可?
  5. JVM系列之内存泄漏
  6. 如何处理SAP Launchpad上tile打不开的问题
  7. android 按钮控制线程,关于手机安卓-线程测试
  8. 对CloseHandle用法的理解
  9. linux中python如何调用matlab的数据_如何在Python中创建Gif动图?(动图数据可视化基础教学)
  10. No Need for Genius Envy
  11. 协方差检验用在什么地方_胶带还有什么隐藏功能,看看这几个,家里很多地方用得到...
  12. java语句以什么结尾_[JAVA] 关于语句的结尾
  13. 对三款软件的测评、分析和建议
  14. Profibus通讯接口连接不上怎么办
  15. iec104点号_IEC104规约报文说明(104报文解释的比较好的文本)
  16. BME280嵌入式设计-基于STM32F103的温湿度气压控制板-支持蓝牙串口输出数据!!!
  17. 计算机科学与因果关系,因果关系,概率和时间
  18. 小ck活动机器人包包_2018爆款包:不是LV,Gucci而是平价小CK~
  19. MacOS解压rar文件
  20. react 命名规范 书写顺序

热门文章

  1. 看看10万程序员怎么评论:零基础的前端开发该如何系统地学习?
  2. “无现金”社会来临,你还有安全感吗?
  3. openstack学习笔记三 创建第一个实例
  4. BZOJ2062 : 素颜2(face2)
  5. 为什么要使用符号作为hash的键
  6. IOS 学习资料汇总(^_^)
  7. citrix lic申请流程
  8. vue结合php增删改查实例,从vue基础开始创建一个简单的增删改查的实例
  9. 计算机组成原理 — CPU — 缓存访问
  10. Linux 操作系统原理 — 内存 — 基于局部性原理实现的内/外存交换技术