cuda_opencv之向量相加

实现向量相加。。。实现与 矩阵相加一样~

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 #include <opencv/cv.hpp>
 4 #include <opencv/highgui.h>
 5 
 6 #include <cuda_runtime.h>
 7 #include <device_launch_parameters.h>
 8 
 9 using namespace std;
10 using namespace cv;
11 
12 #define N 10
13 
14 __global__ void Add_kernel(const int2* d_a, const int2* d_b,int2*  d_c ,int pp)
15 {
16     int x=threadIdx.x;
17     
18     if(x < pp)
19     {
20         d_c[x].x=d_a[x].x + d_b[x].x;
21         d_c[x].y=d_a[x].y + d_b[x].y;
22 
23     }
24 
25 }
26 int main()
27 {
28     Mat a(1,N,CV_32S,Scalar_<int>(0));
29     Mat b(1,N,CV_32S,Scalar_<int>(10));
30 
31     cout<<a<<endl;
32     cout<<endl;
33     cout<<b<<endl;
34     cout<<endl;
35 
36     size_t memSize = a.step * a.rows;
37 
38     int2* d_a = NULL;
39     int2* d_b = NULL;
40     int2* d_c = NULL;
41 
42     cudaMalloc((void**)&d_a,memSize);
43     cudaMalloc((void**)&d_b,memSize);
44     cudaMalloc((void**)&d_c,memSize);
45 
46     cudaMemcpy(d_a,a.data,memSize,cudaMemcpyHostToDevice);
47     cudaMemcpy(d_b,b.data,memSize,cudaMemcpyHostToDevice);
48 
49     Add_kernel<<<1,N>>>(d_a, d_b, d_c, N);
50     cudaMemcpy(a.data, d_c,memSize, cudaMemcpyDeviceToHost);
51     cout<<endl;
52     cout<<a<<endl;
53     system("pause");
54     return 0;
55 }

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值