CUDA学习笔记1——核函数与线程

news2024/12/26 23:49:32

CUDA安装并配置环境后,使用VS新建工程时会出现对应选项:
在这里插入图片描述

CUDA核函数调用

  1. CUDA核函数必须用限定词 global 修饰,返回类型必须为void,二者次序随意。
  2. 函数名与()之间用三括号<<<网格大小,线程块大小>>>指明核函数中线程数目与排列情况;
  3. cudaDeviceSynchronize()函数用于同步主机与设备;
#include <stdio.h>
#include "cuda_runtime.h"

//如何调用cuda核函数
__global__ void first_kernel()
{
	printf("Hellow World GPU...\n");
}

int main()
{
	printf("Hellow World CPU  \n");

	first_kernel<<<2, 3>>>();
	cudaDeviceSynchronize();
	return 0;
}

在这里插入图片描述

CUDA核函数线程索引

  1. 每个核函数允许指派多个线程,线程的组织结构为:<<<grid_size, block_size>>>,乘积为线程总数
一维网络

网格、线程块为一维

  • gridDim.x:数值为grid_size的数值
  • blockDim.x:数值为block_size的数值
  • blockIdx.x:线程在网格中的线程块ID,取值范围 0 ~ gridDim.x - 1;
  • threadIdx.x:线程在线程块中的线程ID,取值范围 0 ~ blockDim.x - 1;
多维网络

网格、线程块为多维
dim3 grid_size(Gx,Gy,Gz);
dim3 block_size(Bx,By,Bz);

  • blockIdx.x:取值范围 0 ~ gridDim.x - 1;
  • blockIdx.y:取值范围 0 ~ gridDim.y - 1;
  • blockIdx.z:取值范围 0 ~ gridDim.z - 1;
  • threadIdx.x:取值范围 0 ~ blockDim.x - 1;
  • threadIdx.y:取值范围 0 ~ blockDim.y - 1;
  • threadIdx.z:取值范围 0 ~ blockDim.z - 1;

网格大小限制:x、y、z方向最大值为2^31-1、65535、65535

线程块大小限制:x、y、z方向最大值为1024、1024、64

#include <stdio.h>
#include "cuda_runtime.h"

//cuda核函数线程索引
__global__ void first_kernel()
{
	int tidx = threadIdx.x;
	int tidy = threadIdx.y;
	int tidz = threadIdx.z;
	int bidx = blockIdx.x;
	int bidy = blockIdx.y;
	int bidz = blockIdx.z;
	printf("GPU Kernel...thread index: (%d,%d), block index: (%d,%d) \n",  tidy, tidx, bidy, bidx);
}


int main()
{

	first_kernel<<<2, 3>>>();
	cudaDeviceSynchronize();
	return 0;
}


在这里插入图片描述

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

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

相关文章

Visual Studio 2019中的安全问题

最近&#xff0c;在使用Visual Studio 2019的时候遇到了一个很奇怪的问题&#xff0c;如下所示。 这里一直在说scanf函数不安全&#xff0c;导致报错&#xff0c;然后上网查了查相关资料&#xff0c;发现在代码中加那么一句就可以了&#xff0c;而且必须放在最前面。 #define …

网络安全:个人信息保护,企业信息安全,国家网络安全的重要性

在当前的数字化时代&#xff0c;无论是个人&#xff0c;企业&#xff0c;还是国家&#xff0c;都会面临严重的网络安全威胁。网络安全不仅涉及我们的日常生活&#xff0c;也涉及到社会的稳定和国家的安全。这就需要我们高度重视网络安全&#xff0c;强化个人信息保护&#xff0…

HRB系列 电源升压模块直流可调低压升高压输出DC/DC升压变换器

特点 效率高达 80%以上1*2英寸标准封装单电压输出价格低稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRB W2~40W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36V、…

Quarto 入门教程 (3):代码框、图形、数据框设置

简介 本文是《手把手教你使用 Quarto 构建文档》第三期&#xff0c;前两期分别介绍了&#xff1a; 第一期 介绍了Quarto 构建文档的原理&#xff1b;可创建的文档类型&#xff1b;对应的参考资源分享。 第二期 介绍了如何使用 Quarto&#xff0c;并编译出文档&#xff08;PDF…

设备管理团队如何做好停机维护工作_基于PreMaint设备数字化平台

在现代工业生产中&#xff0c;设备的正常运行对于企业的生产效率和利润至关重要。而停机维护作为设备管理的重要环节&#xff0c;旨在确保设备的安全性、可靠性和性能稳定。本文将介绍停机维护的概念&#xff0c;讨论如何计划停机维护&#xff0c;并重点探讨如何通过PreMaint设…

Linux 部署项目

部署 Linux 部署项目1. 宝塔部署1.1 前端部署1.2 后端部署 2. docker 部署2.1 后端部署2.2 前端部署 3. 跨域问题3.1 Nginx 代理&#xff08;推荐&#xff09;3.2 修改后端服务3.3 添加 web 全局请求拦截器 4. 域名解析DNSPod添加域名 Linux 部署项目 1. 宝塔部署 准备工作&am…

Kafka消费者群组和负载均衡

前言 在大数据时代&#xff0c;消息处理成为众多企业关注的焦点。而Kafka作为一种高性能、分布式的消息系统&#xff0c;通过其消费者群组和负载均衡的特性&#xff0c;实现了高效的消息处理和可靠的数据传递。 消费者群组 Kafka的消费者群组是一种灵活而强大的机制&#xff…

Java进阶——Java深入学习的笔记汇总 JVM底层、多线程、类加载 ...

前言 spring作为主流的 Java Web 开发的开源框架&#xff0c;是Java 世界最为成功的框架&#xff0c;持续不断深入认识spring框架是Java程序员不变的追求&#xff1b;而spring的底层其实就是Java&#xff0c;因此&#xff0c;深入学习Spring和深入学习Java是硬币的正反面&…

Win10系统打开组策略编辑器的两种方法

组策略编辑器是Win10电脑中很实用的工具&#xff0c;它可以帮助用户管理和设置计算机的安全性、网络连接、软件安装等各种策略。但是&#xff0c;很多新手用户不知道打开Win10电脑中组策略编辑器的方法步骤&#xff0c;下面小编给大家介绍两种简单的方法&#xff0c;帮助打开快…

uniapp EventChannel 页面跳转参数事件传递navigateBack,navigateTo 成功后通知事件区别

问题&#xff1a;navigateBack&#xff08;&#xff09;emit事件在onload()监听不到 从A页面跳转到B页面&#xff0c;在B点击产生数据后&#xff0c;跳转回到A&#xff0c;并告诉A点击的数据是什么&#xff0c;使用&#xff1a; navigateBack&#xff08;&#xff09; B页面&…

内存溢出和内存泄漏

内存溢出和内存泄漏 内存溢出 内存溢出相对于内存泄漏来说&#xff0c;尽管更容易被理解&#xff0c;但是同样的&#xff0c;内存溢出也是引发程序崩溃的罪魁祸首之一。由于GC一直在发展&#xff0c;所以一般情况下&#xff0c;除非应用程序占用的内存增长速度非常快&#xf…

李沐深度学习记录5:13.Dropout

Dropout从零开始实现 import torch from torch import nn from d2l import torch as d2l# 定义Dropout函数 def dropout_layer(X, dropout):assert 0 < dropout < 1# 在本情况中&#xff0c;所有元素都被丢弃if dropout 1:return torch.zeros_like(X)# 在本情况中&…

模拟器运行在AndroidStudio内部,设置其独立窗口显示

在窗口内部运行 设置成独立窗口 Android Studio->Settings或Preferences->Tools->Emulator->取消勾选Launch in the Running Devices tool window --->点击右下角的OK按钮 ---> 重启Android Studio 再次启动模拟器

二维码基础学习指南

1.二维码基础原理 二维码生成原理及解析代码_二维码算法及原理-CSDN博客 2. 关于字符容纳的分辨 2.1 数字编码(Numeric Mode) 数字编码的范围为 0~9。 对于数字编码&#xff0c;统计需要编码数字的个数是否为 3 的倍数&#xff1a;如果不是 3 的倍数&#xff0c;则剩下的 1 …

ios safari 浏览器跳转页面没有自适应

今天开发遇到了一个问题&#xff0c;当用户点击浏览器中的表单进行注册时&#xff0c;表单元素会放大&#xff0c;随后跳转页面无法还原到初始状态。 这是因为如果 的 font-size 被设定为 16px 或更大&#xff0c;那么 iOS 上的 Safari 将正常聚焦到输入表单中。但是&#xff…

NSSCTF [BJDCTF 2020]easy_md5 md5实现sql

开局一个框 啥都没有用 然后我们进行抓包 发现存在提示 这里是一个sql语句 看到了 是md5加密后的 这里也是看了wp 才知道特殊MD5 可以被识别为 注入的万能钥匙 ffifdyopmd5 加密后是 276F722736C95D99E921722CF9ED621C转变为字符串 后是 or6 乱码这里就可以实现 注入 所…

一款构建Python命令行应用的开源库

1 简介 当我们编写 Python 程序时&#xff0c;我们经常需要与用户进行交互&#xff0c;接收输入并输出结果。Python 提供了许多方法来实现这一点&#xff0c;其中一个非常方便的方法是使用 typer 库。typer 是一个用于构建命令行应用程序的 Python 库&#xff0c;它使得创建命令…

Qt元对象系统 day4

Qt元对象系统 day4 元对象 元对象系统是一个基于标准C的扩展&#xff0c;为Qt提供了信号与槽机制、实时类型信息、动态属性系统。元对象可以操作、创建、描述或是执行其他对象&#xff0c;元对象又称为基对象元对象组成 QObject&#xff1a; QT 对象模型的核心&#xff0c;绝…

2023年9月:比特币逆势崛起!全球市场暴跌中的优异表现引人瞩目!

比特币在 9 月份上涨&#xff0c;而许多传统资产遭受了重大损失&#xff0c;凸显了加密货币的多元化特性。全球市场的压力似乎源于政府债券收益率上升和油价上涨。 随着比特币链上指标在本月的改善&#xff0c;强劲的基本面发挥了关键作用。稳定币市值在去年下降后趋于稳定&am…

RDkit的安装

1.一定要以管理员模式运行anaconda 2.用Anaconda创建一个新的虚环境 conda create -n my-rdkit python3.63.(进入)虚环境 #windows conda deactivate4.安装 conda install -c rdkit rdkit # 解释: -c 是选择channels, 选择从哪里下载, 第一个rdkit是通道,第二个是我们需要的…