【笔记】cuda大师班1-4

这篇具有很好参考价值的文章主要介绍了【笔记】cuda大师班1-4。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.基本概念

进程(process)一个正在被执行的计算机程序的实例
上下文(context):待处理数据的集合,允许处理器暂停,保持处理的执行和恢复处理
并发:上下文切换,主要应用于单核处理器,循环赛
【笔记】cuda大师班1-4
并行:多线程执行

二.第一个cuda

2.1cuda安装

【笔记】cuda大师班1-4
了解自己电脑的微架构和算力,下载对应版本cuda
p.s.这部分网上有大量教程

2.2 第一个cuda

2.2.1 在visual studio 配置cuda 模板

大致可以参考这一博客
但是我是先安装cuda,在安装vs,因此配置完好像也没有成功。我尝试了所有不重装cuda的方式都失败了,重新安装cuda

三.cuda编程的基本步骤

host code :在cpu上运行的代码
device code : 在gpu上运行的代码

3.1 一个简单示范程序

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>

__global__ void hello_Cuda()
{
	printf(
		"hello CUDA world \n"
	); 
}

int main()
{
	//hello_Cuda << <1, 1 >> > ();
	//多个线程执行同一个操作
	//hello_Cuda << <20, 20 >> > ();
	//hello_Cuda << <1, 20 >> > ();//和下面输出相同
	hello_Cuda << <20, 1 >> > ();

	//host 不必等待 kenel执行完成

	//为了强制等待内核执行完毕,即同步
	cudaDeviceSynchronize();

	//往往需要将结果复制到主机
	//这里使用复位
	cudaDeviceReset();

	return 0;
}


3.2 关键概念

block 和 grid
【笔记】cuda大师班1-4
内核启动的前两个参数:

  1. block数量
  2. 每个block中线程的数量
    【笔记】cuda大师班1-4
	dim3 block(4);//y,z 默认是1
	dim3 grid(8);
	hello_Cuda << <grid, block >> > ();

通过这种方式可以动态的设置每个维度的块数


int nx, ny;
nx = 16;
ny = 4;
dim3 block(8, 4);
dim3 grid(nx / block.x, ny / block.y);
hello_Cuda << <grid, block >> > ();

3.3 block 和 grid 的限制

【笔记】cuda大师班1-4
【笔记】cuda大师班1-4

4. 线程序号

threadidx根据位置进行初始化
【笔记】cuda大师班1-4文章来源地址https://www.toymoban.com/news/detail-429784.html

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>

__global__ void print_thread_idx()
{
	printf(
		"threadIdx.x : %d , threadIdx.y : %d,threadIdx.z : %d \n",
		threadIdx.x, threadIdx.y, threadIdx.z

	);
}

int main()
{

	int nx, ny;
	nx = 16;
	ny = 16;
	dim3 block(8, 8);
	dim3 grid(nx / block.x, ny / block.y);
	print_thread_idx << <grid, block >> > ();

	cudaDeviceSynchronize();

	cudaDeviceReset();

	return 0;
}

到了这里,关于【笔记】cuda大师班1-4的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux笔记】Linux进程概念与进程状态

    进程的概念: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序

    2024年02月06日
    浏览(32)
  • 【Linux学习笔记】进程概念(中)

    运行状态 程序运行到内存的时候,可以称该程序是一个进程。操作系统为该进程创建了一个PCB,是给CPU管理使用的。进程有很多,而CPU只有一个,所以一旦进程多了,就需要等待。CPU中有一个运行队列,当进程处于运行队列的时候,可以称该进程处于运行状态。 阻塞状态 当

    2024年02月06日
    浏览(20)
  • 微服务学习笔记-基本概念

    微服务 是一种经过良好架构设计的 分布式架构方案 。根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。 微服务的架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责 自治:团队独立、技术独立、

    2024年02月13日
    浏览(31)
  • 数据分析笔记:基本概念,常用图表,报告大纲

    对数据进行分析。 数据分析是为了 提取有用信息和形成结论 而对数据加以详细研究和概括总结的过程。 在实际工作中,帮助管理者 判断和决策 。 数据分析的基本步骤包括明确思路,制定计划、数据收集、数据处理、数据分析、数据显示和报告撰写。 明确思路 :分析的目

    2024年02月06日
    浏览(34)
  • DNS:关于 DNS 基本概念的一些笔记整理

    分享一些 DNS 的笔记整理 博文内容涉及: DNS 历史介绍 DNS 解析顺序 DNS 基本概念 资源类型介绍 DNS 安全 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老

    2024年02月02日
    浏览(82)
  • YOLO学习笔记1. YOLOV1的基本概念

    YOLO(You Only Look Once)是一种流行的实时目标检测算法,由Joseph Redmon和Ali Farhadi等人开发。 YOLO作为目标检测算法,旨在识别图像中出现的物体以及它们的位置。与其他目标检测算法不同的是,YOLO将整个图像看作一个整体,并使用单个CNN(卷积神经网络)模型直接预测图像中所

    2024年02月16日
    浏览(42)
  • 王道操作系统学习笔记(1)——操作系统基本概念

    本文介绍了操作系统的基本概念,文章中的内容来自B站王道考研操作系统课程,想要完整学习的可以到B站官方看完整版。 操作系统:系统资源的管理者(处理机管理、存储器管理、文件管理、设备管理) 交互式命令(在终端中输命令)和批处理命令(Shell脚本) 并发: 宏

    2024年02月10日
    浏览(36)
  • IO进程(进程Process)

    进程 和 程序 的 区别 1 . 1 概念 程序 : 编译 好 的 可执行 文件 存放在磁盘上的指令和数据的有序集合(文件) 程序 是 静态 的 , 没有 任何 执行 的 概念 进程 : 一个 独立 的 可 调度 的 任务 执行一个程序所分配的资源的总称 进程 是 程序 的 一次 执行 过程 进程 是 动态

    2024年04月22日
    浏览(40)
  • 学习笔记-JAVAJVM-JVM的基本结构及概念

    申明:文章内容是本人学习极客时间课程所写,文字和图片基本来源于课程资料,在某些地方会插入一点自己的理解,未用于商业用途,侵删。 原资料地址:课程资料 什么是JVM 原文连接: 原文连接 JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模

    2024年02月14日
    浏览(67)
  • Node.js基本概念、特点、用途和常用模块,以及Express框架开发一个web应用

    目录 一、Node.js的基本概念和特点 二、Node.js的用途 三、Node.js的常用模块 四、使用Node.js进行Web开发 1. 安装Node.js 2. PyCharm配置Node.js 3. 使用http库编写一个web服务 4. 使用Express框架构建Web应用程序 5. 调试代码 6. 发布应用程序 参考文章  Node.js系列文章推荐阅读: JavaScript匿名函

    2024年02月07日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包