win10 cuda_小白之旅(2):第一个应用程序

博主自己学习,仅此记录,并方便学过c、已经配置好cuda的朋友交流学习。(我机子cuda9.0)

测试自己电脑性能

直接在cuda文件夹下搜索deviceQuery,在这个目录下找到sln文档(注意,对应你的vs版本,如下图一),在vs里生成exe文件,运行即可。

第二行那个就是算力,通常要大于3才可以,低于三不清楚,还有显卡其他信息。

第一个应用程序

计算一个参考点与N个0-1区间内等距分布的点的距离。

一共有三个程序,分别是aux_functions.h,aux_functions.cpp和main.cpp

main.cpp

#include "aux_functions.h"
#define N 64

int main()
{
	float in[N] = { 0.0f };
	float out[N] = { 0.0f };


	// choose a reference value from which distances are measured
	const float ref = 0.5f;

	for (size_t i = 0; i < N-1; i++)
	{
		in[i] = scale(i, N);
	}
	distanceArray(out, in, ref, N);
	return 0;
}

aux_functions.h

#pragma once
#include "aux_functions.h"
// 产生0-1共N个数据流
float scale(int i, int n);


float distance(float x1, float x2);


void distanceArray(float *out, float *in, float ref, int n);

这里 ,解释一下#pragma once ,其实就是C++头文件保护符和变量的声明定义,避免二次重定义~~可以参考:https://blog.csdn.net/wxc237786026/article/details/38377221

aux_functions.cpp

#include <math.h>


float scale(int i, int n)
{
	// 强制类型转换,使结果变为float
	return ((float)i / n - 1);
}

float distance(float x1, float x2)
{
	return abs(x1 - x2);
}

void distanceArray(float *out, float *in, float ref, int n)
{
	// 精髓
	// out和in 都是数组指针

	for (size_t i = 0; i < n; i++)
	{
		out[i] = distance(in[i], ref);
	}
}

 程序比较简单,结合注释看一下就行了~~

参考:《cuda高性能并行计算》 

猜你喜欢

转载自blog.csdn.net/qq_39575835/article/details/82970615