Lesson 1 Hello World
1.准备好nvcc
装好CUDA后,我们在cmd里面运行
nvcc --version
如果找不到nvcc命令的话,需要自己在环境变量中path添加nvcc.exe的路径
2.接下来需要编写我们的cuda程序
//filename: helloworld.cu
// This is the REAL "hello world" for CUDA!
// It takes the string "Hello ", prints it, then passes it to CUDA with an array
// of offsets. Then the offsets are added in parallel to produce the string "World!"
// By Seamanj 04/11/2015 @NCCA#include <stdio.h>const int N = 7;
const int blocksize = 7;__global__
void hello(char *a, int *b)
{printf("block %d thread %d is running!\n", blockIdx.x, threadIdx.x);a[threadIdx.x] += b[threadIdx.x];
}int main()
{char a[N] = "Hello ";int b[N] = {15, 10, 6, 0, -11, 1, 0};char *ad;int *bd;const int csize = N*sizeof(char);const int isize = N*sizeof(int);printf("%s\n", a);cudaMalloc( (void**)&ad, csize );cudaMalloc( (void**)&bd, isize );cudaMemcpy( ad, a, csize, cudaMemcpyHostToDevice );cudaMemcpy( bd, b, isize, cudaMemcpyHostToDevice );dim3 dimBlock( blocksize, 1 );dim3 dimGrid( 1, 1 );hello<<<dimGrid, dimBlock>>>(ad, bd);cudaMemcpy( a, ad, csize, cudaMemcpyDeviceToHost );cudaFree( ad );printf("%s\n", a);return EXIT_SUCCESS;
}
3.编译helloworld.cu程序
在cmd中转到我们需要编译的文件夹中
输入 nvcc helloworld.cu
结果如下:
哇,坑爹的warning怎么去掉呢?
加选项, -Xcompiler /wd4819
变成
nvcc -Xcompiler /wd4819 helloworld.cu
具体的选项可以参见http://blog.csdn.net/seamanj/article/details/49652649这篇文章里面的pro文件
或者查看官方文档http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#axzz3qY6vaFLz
由于没有指定输出名字,所以都命令为a.
执行a.exe看看
Lesson 1 Hello World相关推荐
- FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器
文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...
- Lesson 6.1 身份证识别: 提取字段
Lesson 6.1 身份证识别: 提取字段 小编最近试试识别身份证上面的文字. 第一步还是图像分割,第一步还是提取文本行,然后提取字段. 看上去,第一个感觉就是所有文字都是黑色的.可以简单过滤一下图 ...
- Lesson 016 —— python 元组
Lesson 016 -- python 元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔 ...
- Lesson 021 —— python 循环语句
Lesson 021 -- python 循环语句 Python中的循环语句有 for 和 while. 循环可以使用 break 语句跳出当前循环. Python循环语句的控制结构图如下所示: wh ...
- Lesson 008 —— python 初识
Lesson 008 -- python 初识 python 文件 python 文件名 Python 文件名的后缀可以是任意的,但是,之后导入我们的模块的时候,如果文件后缀名不是 .py ,那么会报 ...
- Lesson 15.2 学习率调度在PyTorch中的实现方法
Lesson 15.2 学习率调度在PyTorch中的实现方法 学习率调度作为模型优化的重要方法,也集成在了PyTorch的optim模块中.我们可以通过下述代码将学习率调度模块进行导入. fro ...
- Lesson 15.1 学习率调度基本概念与手动实现方法
Lesson 15.1 学习率调度基本概念与手动实现方法 从本节开始,我们将介绍深度学习中学习率优化方法.学习率作为模型优化的重要超参数,在此前的学习中,我们已经看到了学习率的调整对模型训练在诸多 ...
- Lesson 14.3 Batch Normalization综合调参实战
Lesson 14.3 Batch Normalization综合调参实战 根据Lesson 14.2最后一部分实验结果不难看出,带BN层的模型并不一定比不带BN层模型效果好,要充分发挥BN层的效 ...
- Lesson 14.1 数据归一化与Batch Normalization理论基础
Lesson 14.1 数据归一化与Batch Normalization理论基础 数据归一化是机器学习领域的一种对数据处理的常规方式.在传统机器学习领域,由于各特征的量纲不一致,可能出现建模过程 ...
- Lesson 13.5 Xavier方法与kaiming方法(HE初始化)
Lesson 13.5 Xavier方法与kaiming方法(HE初始化) 在进行了一系列的理论推导和代码准备工作之后,接下来,我们介绍参数初始化优化方法,也就是针对tanh和Sigmoid激活函 ...
最新文章
- Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译
- 独家 | 成功开发者必备的5项软技能
- 论设计,需求和编码三者的关系
- nodejs-函数路由
- 一个整数数组,每个数字都出现K次,只有一个数字出现M次,找出这个数字(线性时间)
- 【2019牛客暑期多校训练营(第六场)- D】Move(随机化二分)
- 光栅图形学算法基础其三 (消隐算法)
- kafka删除topic及其相关数据
- “咕”了 73 天,何同学终于回归:最喜欢 3D 打印机,但不要买
- SeaJS项目完整实例【转】
- winrar 命令行参数使用
- 左耳朵耗子-陈皓经历(转载)
- 360修复高危漏洞可以修复吗_360提示的高危漏洞要不要修复怎样关闭 - 卡饭网
- 离散小波变换wavedec matlab,MATLAB小波变换指令及其功能介绍(超级有用)
- Reflection(反射)
- 教小师妹学多线程,看完我写的例子,脸红成那样!
- iOS 用内置浏览器Safari 打开网页
- phpredis中文手册(使用方法)——《redis中文手册》 php版
- 计算机控制台程序,什么是电脑控制台,是DOS设定吗?
- 插入, 桥 - 面面相连
热门文章
- 三菱PLC编程线缆制作
- PAT A1096 质因子分解
- git问题ERROR: Repository not found.的解决办法
- 九、模型文档编辑器(生成项目文档)
- 重置User Profile
- PL/SQL DEVELOPER中查询结果复制出来中文乱码的解决方案
- poj 1696 Space Ant
- k折交叉验证优缺点_R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)...
- vc++6.0获取磁盘基本信息_微信小程序——常用功能2:微信小程序用户登录,申请用户授权并获取用户基本信息...
- 测试工程师,应当知晓的12项基本原则