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...
需要注意的点:
- 索引计数从零开始;
- 声明的数组名是一个指向一定大小(元素数目*每个元素字节数,这里是3*size(int))的连续内存块中第一个元素的指针。[]中的数告诉系统指定元素需要在内存空间跨过多少步长;
- 不可以一次性赋值,比如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)
{
}
一些知识点:
- 花括号不用加分号;
- 如果只有两句语句,可以使用if (x>0) y=x; else y=0;实现relu函数。
- 当然也可以使用三元运算符y = (x>0)? x:0;
其他
continue : 跳过一个循环的过程,类似python pass;
break:离开当前循环,注意是循环,不是if,else;
goto:离开当前循环,前往......
switch:常数索引语句
参考:《cuda高性能并行计算》