cuda编程实现计算两个向量之间的距离

代码解释:
实现的多个向量和一个向量之间的距离的计算。让kernal函数去执行开设一定的线程去做。代码详细解释如下:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdio.h>
const int N=33*1024;//修改向量的个数
const int D=256;
//const int MAX=10;
#include<sys/time.h>
#include<math.h>
#include<time.h>
#include<iostream>
using namespace std;
__global__ void MatrixMultiply(float *a,float *b,float*c,int N){
	int tx=threadIdx.x+blockIdx.x*blockDim.x;//因为线程块里面是多个快的线程并发执行的。
		while(tx < N) {//N 表示的是总的向量个数,每个kernal都算的是(线程块*线程数)个向量的距离
		float sum = 0;
		for (int k = 0; k < D; ++k) {
			sum += ((a[tx * D + k] - b[k])*(a[tx * D + k] - b[k]));
		}
		c[tx] = sum;
		tx+=blockDim.x*gridDim.x;//每次增加的是一个grid的数量,也就是一个kernal执行的线程数量
	}
}

cudaError_t matrixMultiplyWithCuda(float *a, float *b, float *c, size_t size);

int main()
{
		//添加计算时间的函数
	struct timeval start,end;
	gettimeofday(&start,NULL);
	float *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值