使用 CUDA 定义本地内存中数组的变量大小

2024-03-04

是否有可能在其中创建一个列表、数组等?device函数的列表/数组的大小是调用中的参数……或者是在调用时初始化的全局变量?

我想要类似以下列表之一的功能:

unsigned int size1;

__device__ void function(int size2) {

    int list1[size1];
    int list2[size2];
}

是否有可能做一些聪明的事情来让这样的事情发挥作用?


有 1 种方法可以分配动态共享内存量 - 使用第三个启动内核参数:

__global__ void kernel (int * arr) 
{
    extern __shared__ int buf []; // size is not stated
    // copy data to shared mem:
    buf[threadIdx.x] = arr[blockIdx.x * blockDim.x + threadIdx.x];
    // . . . 
}
// . . . 
// launch kernel, set size of shared mem in bytes (k elements in buf):
kernel<<<grid, threads, k * sizeof(int)>>> (arr);

许多数组都有一个 hack:

__device__ void function(int * a, int * b, int k) // k elements in first list
{
    extern __shared__ int list1 [];
    extern __shared__ int list2 []; // list2 points to the same point as list1 does

    list1 [threadIdx.x] = a[blockIdx.x * blockDim.x + threadIdx.x];
    list2 [k + threadIdx.x] = b[blockIdx.x * blockDim.x + threadIdx.x];
    // . . .
}

您必须考虑:分配给所有块的内存。

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

使用 CUDA 定义本地内存中数组的变量大小 的相关文章

随机推荐

  • 一起运行 Tkinter 窗口和 PysTray 图标

    我正在构建一个 tkinter gui 项目 并且正在寻找使用 tkinter 窗口运行托盘图标的方法 我发现 Pystray 库可以做到这一点 但现在我正在尝试弄清楚如何将这个库 托盘图标 与 tkinter 窗口一起使用 我设置了当用户
  • 如何使用 OpenPyXL 设置带标题的列格式

    我正在尝试以日期格式设置某些列的格式 我能够使用以下命令成功更改单个单元格的格式 date style Style number format M D YYYY ws E7 style date style 但是除了标题之外 是否有更简单的
  • 由各种分隔符分割,同时保留分隔符?

    我想分割文本 过公元年 因为无论你如何选择 简体字危及了对古代文学的研究输入 使用这三个 或更多 字符作为分隔符 我当然可以这样做 lines preg split u body 但是我不想让结果行保留其结束分隔符 一个句子也可能这样结束啊
  • 如何检查 Bigquery 上列表的某个项目是否在另一个列表项目中?

    我有一个专栏 比如 11999999999 12999999999 31999999999 和另一列 例如 5511777777777 5512888888888 5531999999999 我想做一个CASE WHEN如果第一列上的任何项
  • model.fit 上的尺寸数量错误

    我正在尝试运行这个 SimpleRNN model add SimpleRNN init uniform output dim 1 input dim len pred frame columns model compile loss ms
  • 使用一个 Iron-ajax 元素处理多个请求

    理论上来说 应该可以使用一个iron ajax通过设置多个请求的元素auto属性 然后重复设置url元素上的属性 iron ajax有一个属性叫做activeRequests 这是一个只读数组 因此它似乎支持同时对多个请求进行排队 但实际上
  • 使用 Ruby 将 XML 请求发送到 Web 服务器

    恐怕我在通过网络服务器发布文档 例如 XML 方面没有太多经验 所以如果我对 HTTP 缺乏了解 我深表歉意 我在 ruby 应用程序中设置了一个基本的 Mongrel Web 服务器127 0 0 1 port 2000 服务器 我在同一
  • MongoDB 服务器无法使用 gitlab-ci 在 gitlab runner 上启动

    现在我正在使用 Ruby 和 Mongo 开发一个应用程序 但是当我使用 gitlab ci 部署应用程序时 我陷入了困境 似乎 mongo 服务器没有在 gitlab runner 的测试环境中启动 这是我的 gitlab ci yml
  • 可变集合有文字语法吗?

    我知道我可以创建一个NSArray with foo bar or an NSDictionary with 0 foo 1 bar 是否有用于创建的文字语法NSMutableArray or an NSMutableDictionary
  • 如何为列表中的 ::marker 添加 CSS 背景?

    我有一个 HTML 有序列表 其结构如下 ol li class myclass First Element li li class myclass First Element li li class myclass First Eleme
  • 将 CSS 对象转换为样式标签

    有时我被迫以编程方式向 DOM 添加 CSS 样式 如果您需要一个理由 想象一下编写一个小型 ui 小部件 它具有自己的样式 但应该仅包含一个 js 文件 以便于处理 在这种情况下 我更喜欢使用对象表示法在脚本代码中定义样式 而不是混合规则
  • 如何使用新的 UDF 功能来创建“动态 SQL 语句”?

    如何使用新的 UDF 功能来创建 动态 SQL 语句 有没有办法使用 UDF 来根据模板和输入变量构造 SQL 语句 然后运行此查询 文档https cloud google com bigquery user definition fun
  • AFNetworking - 下载多个文件+通过 UIProgressView 进行监控

    我正在尝试将代码从 ASIHTTPRequest 更改为 AFNetworking 目前我想选择 10 15 个不同的 HTTP URL 文件 并将它们下载到文档文件夹中 使用 ASIHTTPRequest 就很容易了 myQueue se
  • 将 java 远程调试器端口公开到互联网是否安全?

    我本来打算公开一个端口 用于通过互联网远程调试基于 Java 的 Web 服务 但三思而后行 我意识到它没有任何身份验证 从理论上讲 似乎可以编写一个工具 附加到远程调试器端口 并通过 Java API 执行任意系统命令 或者修改 转储数据
  • Liferay 多对多关系引发类转换异常

    我正在创建一个示例来演示 liferay 中的关系 我正在以图书实体和作者的多对多关系为例 我将按照下面的博客创建此示例 http www liferaysavvy com 2014 01 liferay service builder m
  • 使用 HCITool 宣传蓝牙 LE 服务

    我正在尝试在我的 Linux 计算机上创建蓝牙低功耗外设 目标是通过蓝牙从 iPhone 发送数据 我目前正在使用工具hciconfig hcitool and hcidump 我当前的实验是宣传具有特定 UUID 的服务 iOS Core
  • 在 COBOL 中连接未知长度的字符串

    如何在 COBOL 中将两个长度未知的字符串连接在一起 例如 WORKING STORAGE FIRST NAME PIC X 15 VALUE SPACES LAST NAME PIC X 15 VALUE SPACES FULL NAM
  • 为什么 Haskell 在读取 Num 时似乎默认读取 Int ?

    我没想到下面的代码会起作用 foo Num a gt a gt a foo x x x main do print foo read 7 因为不可能根据代码完全推断出 读为 7 的类型 但 GHC 6 12 3 不这么认为并打印 14 如果
  • AdoNetAppender 参数的默认值

    我将 log4net 与 AdoNetAppender 一起使用 它将所有日志信息记录到表中 该表实际上有 2 个整数列 可以为空 这是我的 log4net 配置的相关部分
  • 使用 CUDA 定义本地内存中数组的变量大小

    是否有可能在其中创建一个列表 数组等 device函数的列表 数组的大小是调用中的参数 或者是在调用时初始化的全局变量 我想要类似以下列表之一的功能 unsigned int size1 device void function int s