win10 cuda_小白之旅(1):c语言的回顾

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

第一个cuda项目

        我用的ide是vs2015。新建项目:选中cuda。

然后会自动生成一个.cu,求和的一个程序,用来检查你是否安装好,没啥实际意思(我觉得是这样),移除掉他就好了,接着,自己新建一个.cpp文档,名字任意,由于cuda使用的就是c,所以在此先温习下c的相关知识

数组

举个基本例子 int in[]={1,2,3},当然也可以分别赋值:in[0]=1...

需要注意的点:

  1. 索引计数从零开始;
  2. 声明的数组名是一个指向一定大小(元素数目*每个元素字节数,这里是3*size(int))的连续内存块中第一个元素的指针。[]中的数告诉系统指定元素需要在内存空间跨过多少步长;
  3. 不可以一次性赋值,比如int out[3]=in,系统一定会报错,这将需要控制语句(if,for等)的使用,也就是下一节;

控制语句

for 语句

vs 中的for代码补全是:

	for (size_t i = 0; i < length; i++)
	{

	}

size_t 是无符号型的整数。注意,for循环在我们走向cuda并行计算中扮演关键的角色。接下来实现一下复制数组的功能。

#include<iostream>
using namespace std;
#define	N 3
int main()
{
	int in[] = { 1,2,3 };
	int inCopy[N];

	for (size_t i = 0; i < N; i++)
	{
		inCopy[i] = in[i];
	}
	return 0;
}

if 语句

if语句的标准格式如下:

	if (true)
		{

		}

一些知识点:

  1. 花括号不用加分号;
  2. 如果只有两句语句,可以使用if (x>0) y=x; else y=0;实现relu函数。
  3. 当然也可以使用三元运算符y = (x>0)? x:0;

其他

continue : 跳过一个循环的过程,类似python pass;

break:离开当前循环,注意是循环,不是if,else;

goto:离开当前循环,前往......

switch:常数索引语句

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

猜你喜欢

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