全局内核中的 CUDA 变量

2023-11-30

我的问题是:

1)我的理解是否正确,当您在全局内核中声明一个变量时,每个线程都会有该变量的不同副本。这允许您为每个线程在该变量中存储一些中间结果。示例:向量 c=a+b:

__global__ void addKernel(int *c, const int *a, const int *b)
{
   int i = threadIdx.x;
   int p;
   p = a[i] + b[i];
   c[i] = p;
} 

这里我们声明中间变量p。但实际上这个变量有 N 个副本,每个副本对应一个线程。

2)如果我声明数组,则会创建该数组的 N 个副本,每个副本对应每个线程,这是真的吗?只要全局内核中的所有内容都发生在 GPU 内存上,对于声明的任何变量,您都需要 N 倍的 GPU 内存,其中 N 是线程数。

3)在我当前的程序中,我有35 * 48 = 1680个块,每个块包括32 * 32 = 1024个线程。这是否意味着,在全局内核中声明的任何变量都会比在内核外声明的变量花费 N=1024*1680=1 720 320 倍?

4)要使用共享内存,每个变量需要比平常多M倍的内存。这里M是数量blocks。真的吗?


1)是的。每个线程都有一个在函数中声明的非共享变量的私有副本。这些通常进入 GPUregister内存,虽然可以溢出到local memory.

2), 3) and 4)虽然您确实需要该私有内存的许多副本,但这并不意味着您的 GPU 必须同时为每个线程提供足够的私有内存。这是因为在硬件中,并非所有线程都需要同时执行。例如,如果您启动 N 个线程,则可能有一半在给定时间处于活动状态,而另一半在有可用资源运行它们之前不会启动。

线程使用的资源越多,硬件可以同时运行的资源就越少,但这并不限制您可以要求运行的线程数量,因为一旦释放了一些资源,GPU 没有资源的任何线程都将运行。

这并不意味着您应该疯狂地声明大量本地资源。 GPU 速度很快,因为它能够并行运行线程。要并行运行这些线程,需要在任何给定时间容纳大量线程。从一般意义上讲,每个线程使用的资源越多,给定时刻处于活动状态的线程就越少,硬件可以利用的并行性就越少。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全局内核中的 CUDA 变量 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • wpf - 验证 - 如何显示工具提示并禁用“运行”按钮

    你好 我需要验证应用程序中的一些文本框 我决定使用验证规则 数据错误验证规则 这就是为什么在我的类中我实现了 IDataErrorInfo 接口并编写了适当的函数 在我的 xaml 代码中 我向文本框添加了绑定和验证规则
  • 如何让 docker-compose 始终从新镜像重新创建容器?

    我的 Docker 镜像构建在 Jenkins CI 服务器上 并推送到我们的私有 Docker 注册表 我的目标是使用 docker compose 配置环境 该环境始终启动图像的原始构建状态 我目前在不同的机器上使用 docker co
  • 从文件夹中的所有工作簿中删除 VBA 代码

    我正在尝试构建代码来远程循环包含 xls 文件的文件夹并删除其中包含的宏 到目前为止 我已经使各个组件正常工作 但在激活各种工作簿 然后以编程方式确保每个文件中引用 Microsoft Visual Basic for Applicatio
  • 使用 read() 方法从 Amazon S3 读取大尺寸 JSON 文件时出现内存错误

    我正在尝试使用 Python 将大量 JSON 文件从 Amazon S3 导入到 AWS RDS PostgreSQL 中 但是 这些错误发生了 回溯 最近一次调用最后一次 文件 my code py 第 67 行 位于 file con
  • Eclipse SVN 同步工作区错误 - 更新 SVN 工作区的同步视图 - java/nio/file/Paths

    我今天更新了 Eclipse SVN 插件 之后我无法将我的工作区与 SVN 存储库同步 我使用的是java 1 6 我也尝试过使用java 1 7 我仍然在 Eclipse 中遇到以下错误 期间发生内部错误 更新 SVN 工作区的同步视图
  • 如何在 OS X 上将进程窗口置于前台?

    我有一个简单的 shell python 脚本 可以打开其他窗口 我想在脚本完成后将运行脚本的终端带到前台 我知道我的父窗口的进程ID 如何将给定窗口置于前台 我想我必须一路从 PID 中找出窗口名称 不确定是否有proper方式 但这对我
  • 嵌套 HTML 列表中的不同字体大小

    我创建了一个嵌套的ol li为我的网站列出 CSS 中的类 但由于每个li显示在不同的font size 虽然我已经定义了font size to it number list ol font normal 1 2em Arial Helv
  • 如何设置等高线标签的背景颜色

    我正在使用命令 axins clabel c levls fontsize 4 fmt 4 2f colors white 为了为我的轮廓生成标签 我希望它们是白色的 颜色 白色 有效 和红色背景 我不知道是否可以为它们指定背景颜色 我迟到
  • eclipse c++ 没有什么可构建错误

    所以我尝试构建一个 C 项目 但随后出现此错误 Build of configuration Release for project p Internal Builder is used for build Nothing to build
  • 类型实例化太深并且可能是无限的

    这里如何处理这个错误呢 我可以限制递归深度 或者只是告诉 TS 可以吗 export type StateUnion
  • 检查当前用户是否是活动目录组的成员

    我需要检查当前用户是否是活动目录组的成员 我首先获取当前用户 如下所示 现在我想知道如何检查此 CurrentUser 是否在活动目录组 CustomGroup 中 string CurrentUser WindowsIdentity Ge
  • Flutter/Dart语言的客户端证书认证

    我对证书世界相当陌生 我决定创建一个必须使用证书来访问 API 的应用程序 我创建了自签名 CA 证书 SSL 证书和客户端证书 我将它们导入 Windows Server 并正确配置 IIS 我可以使用 clientcertificate
  • 当字符串为十六进制且前缀为“0x”时,将字符串转换为整数时不一致

    使用 PHP 5 3 5 不确定这在其他版本上如何工作 我对使用包含数字的字符串感到困惑 例如 0x4B0 or 1 2e3 PHP 处理此类字符串的方式对我来说似乎不一致 只有我一个人吗 或者这是一个错误 或者未记录的功能 或者我只是错过
  • Android 嵌套列表视图

    是否可以 建议使用嵌套列表视图 即包含在另一个列表视图的一行中的列表视图 一个例子是我的主列表显示博客文章 然后在每一行中 您都会有另一个列表视图来显示每个帖子的评论 这将是可折叠的 我今天遇到了同样的问题 所以这就是我解决它的方法 我有一
  • 用于聚合/串联的 SQL 查询

    我有一个这样的表 ID Name 1 john 1 molly 2 greg 2 sean 1 holly 2 mill SQL 查询应该是什么来聚合结果 如下所示 ID Name 1 john molly holly 2 greg sea
  • SQL Server 静默截断存储过程中的 varchar

    根据本次论坛讨论 SQL Server 我使用的是 2005 但我收集这也适用于 2000 和 2008 默默地截断任何varchar您将 varchar 的长度指定为存储过程参数 即使直接使用INSERT实际上会导致错误 例如 如果我创建
  • 对具有输入和输出历史依赖性的操作进行矢量化的最佳方法?

    我的目标是在 numpy 中向量化以下操作 y n c1 x n c2 x n 1 c3 y n 1 If n是时间了 我基本上需要依赖于之前的输入以及之前的输出的输出 我被赋予的价值观x 1 and y 1 另外 这是我的实际问题的通用版
  • 如何在ListView中单击复选框时使按钮栏从底部滑入?

    我有一个带有自定义列表适配器的列表视图 它使用复选框和一些文本视图填充列表视图 当用户选择一个复选框时 我需要一个按钮栏从屏幕底部滑入视图并坐在那里 我已经制作了按钮栏 并且可以通过将其可见性更改为 消失 和 可见 来使其在屏幕上出现和消失
  • 如何用空格/空格替换连字符? php

    我对 PHP 不太了解 但这些天我正在修改现有的脚本 我想知道如何用空白或空白替换 例如 一个变量包含 爱你 我想用 爱你 这样的空格替换它们之间的连字符 我会感谢您的反馈 str str replace Love you now str是
  • 全局内核中的 CUDA 变量

    我的问题是 1 我的理解是否正确 当您在全局内核中声明一个变量时 每个线程都会有该变量的不同副本 这允许您为每个线程在该变量中存储一些中间结果 示例 向量 c a b global void addKernel int c const in