cuda编程学习

核函数

  1. 核函数是cuda编程关键
  2. 通过创建.cu创建cudac程序文件,然后交给nvcc编译
  3. 加上__global__前缀的函数由host端调用,__device修饰的函数为device函数,由设备调用
  4. __host修饰的函数为host函数,由设备调用
  5. host调用核函数的方式是function<<<gridDim,blockDim,sharedMemorySize,stream>>>(args,…)

Cuda线程&线程id

CUDA里面用了grid和block作为线程的组织单位,一个grid可以包含多个block,一个block包含多个thread,grid和block都是三维向量,下段代码展示了如何定义一个grid和block:

dim3 grid(x.y,z);
dim3 block(x,y,z);

在计算线程索引的时候,经常会看到gridDim、blockDim、blockIdx、threadIdx。关于这些名词的解释如下:

  • gridDim:block在gird里面的数量维度,
  • blockDIm: threads在blcok中的维度
  • blockIdx:block在grid中的索引
  • threadIdx: thread在block中的索引

计算线程坐标

怎么从那么多的线程中找到目标线程,这就需要计算线程坐标,可以拆成以下三步去计算:

  • 获取thread在block中的位置
  • 获取block在grid中的位置
  • 计算block有多少线程,求解位置索引

计算thread在block中的位置

t h r e a d I n B l o c k = t h r e a I d x . x + t h r e a d I d x . y ∗ b l o c k D i m . x + t h r e a d I d x . z ∗ b l o c k D i m . x ∗ b l o c k D i m . y threadInBlock=threaIdx.x+threadIdx.y*blockDim.x+threadIdx.z*blockDim.x*blockDim.y threadInBlock=threaIdx.x+threadIdx.yblockDim.x+threadIdx.zblockDim.xblockDim.y
一开始我并不理解这个计算公式,后来为了加强记忆,理解成下面这样(不对的话请指证):
在三维block中计算线程的一维索引时,可以想像成将三维数据展平成一维,按照“优先顺序”的话,x维度是变化最快的,其次是y维度,最后是z维度。因此计算方式是:

  • threadIdx.x 直接加到索引上,因为它是最内层的循环(X 维度)。
  • threadIdx.y * blockDim.x 是因为每增加一个 Y 索引,你跳过了整个 X 维度的线程数。
  • threadIdx.z * blockDim.x * blockDim.y 是因为每增加一个 Z 索引,你跳过了整个 X-Y 平面的线程数

计算block在grid中的位置

b l o c k I n G r i d = b l o c k I d x . x + b l o c k I d x . y ∗ g i r d D i m . x + b l o c k I d x . z ∗ g i r d D i m . x ∗ g r i d D i m . y blockInGrid=blockIdx.x+blockIdx.y*girdDim.x+blockIdx.z*girdDim.x*gridDim.y blockInGrid=blockIdx.x+blockIdx.ygirdDim.x+blockIdx.zgirdDim.xgridDim.y

求解全局idx:

一个block中的thread总数为:
p e r B l o c k S I z e = b l o c k D i m . x ∗ b l o c k D i m . y perBlockSIze=blockDim.x*blockDim.y perBlockSIze=blockDim.xblockDim.y
因此 i d x = t h r e a d I n B l o c k + b l o c k I n g r i d ∗ p e r B l o c k S i z e idx=threadInBlock+blockIngrid*perBlockSize idx=threadInBlock+blockIngridperBlockSize
上式可以理解为:每个block有perBlockSize个thread,对应线程所在的block起始位置就是blockInGrid*perperBlockSize,然后加上偏移就是threadInblock

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/650651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fatal error:require():Failed opening required

今天部署网站遇到了个错误 fatal error:require():Failed opening required 这个错误经常遇到 大多是网站 是开启了 open_basedir 但今天这个错误很神奇 先说解决方法 1. 检测一下是不是真的 不存在这个文件 即使100%确定 也建议你再仔细看一下 这个文件存不存在 今天我遇…

Linux:利用匿名管道构建进程池

文章目录 进程池实现进程池创建信道和进程发送任务释放资源 进程池代码总结 本篇的主题是借助前面所学的基础管道实现一个进程池&#xff0c;那么在实现进程池前先了解进程池是什么&#xff0c;进程池有什么意义&#xff0c;进而对于进程池有一个基本的把握 进程池 给定一个进…

MySQL数据库备份的相关命令-运维面试常问

通过mysqldump命令备份某个数据库 使用如下格式的mysqldump命令来备份单个数据库&#xff1a; mysqldump -u [用户名] -p[密码] [数据库名] > [备份文件路径] [用户名]&#xff1a;是用于连接到MySQL服务器的用户名&#xff0c;通常拥有对指定数据库备份权限的用户。 [密…

学习笔记-李沐动手学深度学习(四)(12-13,权重衰退、L2正则化、Dropout)

总结 【trick】过拟合及正则化项参数的理解 实际数据都有噪音&#xff0c;一般有噪音后&#xff0c;模型实际学习到的权重w就会比 理论上w的最优解&#xff08;即没有噪音时&#xff09;大。&#xff08;QA中讲的&#xff09; 【好问题】 &#xff08;1&#xff09;不使用正…

svg 属性详解:填充与边框

svg 属性详解&#xff1a;填充与边框 1 颜色和透明度2 填充规则 fill-rule3 边框样式3.1 stroke-width3.2 stroke-linecap3.3 stroke-linejoin3.4 stroke-dasharray 1 颜色和透明度 图像都有颜色&#xff0c;svg 中可以使用属性 fill 和 stroke 来修改图形的颜色。fill 属性设置…

九州金榜|家庭教育中孩子厌学原因及解决办法

作为家长我们希望自己的孩子热爱学习&#xff0c;并取得优异成绩。但是&#xff0c;在现实中&#xff0c;孩子往往会出现厌学情绪&#xff0c;作为家长为此感到非常困扰。如何帮助孩子克服厌学情绪&#xff0c;九州金榜家庭教育将会带大家找出背后的原因&#xff0c;并寻找有效…

Tortoise-tts Better speech synthesis through scaling——TTS论文阅读

笔记地址&#xff1a;https://flowus.cn/share/a79f6286-b48f-42be-8425-2b5d0880c648 【FlowUs 息流】tortoise 论文地址&#xff1a; Better speech synthesis through scaling Abstract: 自回归变换器和DDPM&#xff1a;自回归变换器&#xff08;autoregressive transfo…

SpringSecurity(15)——OAuth2密码模式

工作流程 将用户和密码传过去&#xff0c;直接获取access_token&#xff0c;用户同意授权动作是在第三方应用上完成&#xff0c;而不是在认证服务器&#xff0c;第三方应用申请令牌时&#xff0c;直接带用户名和密码去向认证服务器申请令牌。这种方式认证服务器无法判断用户是…

网站服务器中毒或是被入侵该怎么办?

随着互联网的普及和发展&#xff0c;网站服务器已经成为了企业和个人存储数据、展示信息的重要平台。然而&#xff0c;网络安全问题也日益突出&#xff0c;其中网站服务器中毒或被入侵的事件时有发生。一旦发生这种情况&#xff0c;不仅会导致网站无法正常运行&#xff0c;还可…

阿里云负载均衡对接

1 、开通负载均衡产品 2 、ALB / NLB / CLB ALB&#xff1a; 应用型负载均衡 &#xff0c; 给定对应服务域名与当前实例DNS绑定之后即可使用 支持&#xff1a; HTTP/HTTPS/QUIC等应用层流量协议 NLB&#xff1a; 网络型负载均衡 支持&#xff1a; TCP / UDP / TCPSSL C…

浏览器——HTTP缓存机制与webpack打包优化

文章目录 概要强缓存定义开启 关闭强缓存协商缓存工作机制通过Last-Modified If-Modified-Since通过ETag If-None-Match 不使用缓存前端利用缓存机制&#xff0c;修改打包方案webpack 打包webpack 打包名称优化webpack 默认的hash 值webapck其他hash 类型配置webpack打包 web…

使用镜像源在 Jupyter Notebook中直接安装JupyterLab

具体步骤&#xff1a; 1.打开 Jupyter Notebook 首先确保你已经打开了 Jupyter Notebook&#xff0c;并且可以访问一个笔记本。 2.选择合适的镜像源 根据你的地理位置和网络状况&#xff0c;选择一个适合的镜像源。例如&#xff0c;如果你在中国&#xff0c;可以使用清华大…

STM32连接阿里云物联网平台

文章目录 引言一、STM32连接阿里云物联网平台思路二、ESP8266烧录固件三、使用AT指令连接阿里云物联网平台四、STM32环形串口缓冲区驱动程序五、STM32连接阿里云驱动程序 引言 连续写了两篇关于阿里云连接的文章&#xff0c;都是使用Arduino ESP8266 & Arduino ESP32的方式…

什么是网络安全?网络安全概况

网络安全涉及保护我们的计算机网络、设备和数据免受未经授权的访问或破坏。 这个领域包括多种技术、过程和控制措施&#xff0c;旨在保护网络、设备和数据免受攻击、损害或未授权访问。网络安全涉及多个方面&#xff0c;包括但不限于信息安全、应用程序安全、操作系统安全等 …

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models导读

通过生成一系列中间推理步骤&#xff08;即“思维链”&#xff09;显著提高大型语言模型进行复杂推理的能力 这篇论文探讨了如何通过生成一系列中间推理步骤&#xff08;即“思维链”&#xff09;显著提高大型语言模型进行复杂推理的能力。研究人员使用一种简单的方法——思维…

面试 Vue 框架八股文十问十答第十二期

面试 Vue 框架八股文十问十答第十二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;如何在组件中重复使用…

【PyTest】玩转HTML报告:修改、汉化和优化

前言 Pytest框架可以使用两种测试报告&#xff0c;其中一种就是使用pytest-html插件生成的测试报告&#xff0c;但是报告中有一些信息没有什么用途或者显示的不太好看&#xff0c;还有一些我们想要在报告中展示的信息却没有&#xff0c;最近又有人问我pytest-html生成的报告&a…

重磅!讯飞星火V3.5马上发布!AI写作、AI编程、AI绘画等功能全面提升!

讯飞星火大模型相信很多友友已经不陌生了&#xff0c;可以说是国内GPT相关领域的龙头标杆&#xff0c;而对于1月30日即将在讯飞星火发布会发出的V3.5新版本来说&#xff0c;讯飞星火V3.5与之前版本相比&#xff0c;性能提升方面相当明显&#xff0c;在提示语义理解、内容生成、…

代码随想录算法训练营29期|day32 任务以及具体安排

第八章 贪心算法 part02 122.买卖股票的最佳时机II // 贪心思路 class Solution {public int maxProfit(int[] prices) {int result 0;for (int i 1; i < prices.length; i) {result Math.max(prices[i] - prices[i - 1], 0);}return result;} } 思路&#xff1a;将股票问…

shell脚本登录dlut-lingshui并设置开机连网和断网重连

本文提供了一个用于无图形界面linux系统自动连接dlut-lingshui校园网的shell脚本&#xff0c;并提供了设置开机联网以及断网重连的详细操作步骤。本文的操作在ubuntu 22.04系统上验证有效&#xff0c;在其他版本的linux系统上操作时遇到问题可以自行百度。 1. 获取校园网认证界…