使用常量内存打印地址而不是cuda中的值

2024-04-04

我试图在代码中使用常量内存,并从内核分配常量内存值,而不是使用 cudacopytosymbol。

 #include <iostream>
    using namespace std;
    #define N 10
    //__constant__ int constBuf_d[N];
    __constant__ int *constBuf;

__global__ void foo( int *results )
{
    int tdx = threadIdx.x;
    int idx = blockIdx.x * blockDim.x + tdx;


    if( idx < N )
    {
        constBuf[idx]=1;
         results[idx] = constBuf[idx];
    }
}

// main routine that executes on the host
int main(int argc, char* argv[])
{
    int *results_h = new int[N];
    int *results_d;


    cudaMalloc((void **)&results_d, N*sizeof(int));

    foo <<< 1, 10 >>> ( results_d );

    cudaMemcpy(results_h, results_d, N*sizeof(int), cudaMemcpyDeviceToHost);

    for( int i=0; i < N; ++i )
        printf("%i ", results_h[i] );
        delete(results_h);
}

输出显示

6231808 6226116 0 0 0 0 0 0 0 0 

我希望程序在代码中打印通过内核分配给常量内存的值。


顾名思义,常量内存对于设备代码来说是常量/只读的。您尝试做的事情是非法的,无法实现。

要在常量内存中设置值,当前有两种选择:

  1. 通过主机代码设置值cudaMemcpyToSymbolAPI 调用(或其等效项)
  2. 在编译时使用静态初始化

在后一种情况下,类似这样的事情会起作用:

__constant__ int constBuf[N] = { 16, 2, 77, 40, 12, 3, 5, 3, 6, 6 };

__global__ void foo( int *results )
{
    int tdx = threadIdx.x;
    int idx = blockIdx.x * blockDim.x + tdx;


    if( tdx < N )
    {
        results[idx] = constBuf[tdx]; // Note changes here!
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用常量内存打印地址而不是cuda中的值 的相关文章

随机推荐

  • 具有伴生对象的类与同名的类和对象有什么区别?

    Scala 类的 伴生对象 可以被视为具有与该类相同的完全限定名称的单例对象 即相同的名称 在同一包中 它们用于保存类的所有实例共有的实用函数 作为 Java 的替代品static方法 然而 在文档和问题的不同地方 它说伴生对象必须在同一编
  • 如何检测同一键盘按键仅按下一次

    我正在设计一个键盘类 它只能检测一次键盘按键 但我仍然不知道如何做到这一点 我的目标是仅检查并在持续按下或保持按住同一键时仅执行一次操作 并且当同时按下 2 个操作键时不执行任何操作 例如 当我持续按住 A 键时 操作 1 只会执行一次 然
  • OpenCv错误无法通过视频采集打开相机

    我通过 opencv 使用相机 重新启动后突然运行我的代码 它显示以下错误 WARN 0 global io opencv modules videoio src cap v4l cpp 802 open VIDEOIO ERROR V4L
  • 将参考 SVG 图像嵌入 HTML 文件

    我有一个项目 我想将简单的图形背景放入表格单元格中 背景图像和一个小的 svg 文件效果很好 但我真的很想将源代码全部保存在一个文件中 也就是说 我希望能够在 HEAD 中定义图像 并在内联 STYLE css 中引用它 我已经尝试了 sv
  • JAXBElement.getValue() 返回 null

    我的 Pojo 类中有一对多映射 一家店有一家分店 一个分店有很多家店铺 这是商店代码 XmlAccessorType XmlAccessType FIELD XmlRootElement name Shop public class Sh
  • (Chez) 用于隐藏 lambda 的方案宏

    我想编写一个宏来创建速记语法来隐藏更详细的 lambda 表达式 但我很难理解如何编写宏 我意识到这是反对使用它们的一个论据 给出这个例子 define alist example x 1 2 3 y 4 5 6 z 7 8 9 defin
  • 带开始/暂停和重置按钮的倒计时器

    我想在 React JS 中创建一个倒计时器 其中包含 开始 暂停 和 重置 按钮 以便操作计时器 作为 React 和 JS 的初学者开发人员 我创建了一个状态变量 secondsElapsed 以便输入计时器的时间 以秒为单位 star
  • CSS3 在 ios 上的过渡缓慢/不工作

    我正在尝试在我正在制作的响应式网站上开始使用一些 CSS3 转换 并且在桌面 Chrome 和 Android 上的 Chrome 上一切正常 但在 Chrome 和 Safari 的 iOS 设备上无法正常工作 例如 我用于菜单的 CSS
  • 在 SwiftUI TabView 中禁用滑动手势

    试图实施一个TabView with PageTabView风格SwiftUI 其中导航仅以编程方式完成 并且所有滑动手势均被禁用 这个解决方案 https stackoverflow com questions 63168014 swif
  • 带背景颜色的盒装标签

    如何绘制boxed label具有特定的background颜色 如图例框 你的意思是这样的吗 LABEL label in a box set obj 10 rect at 0 0 size char strlen LABEL char
  • 获得无重力加速度

    我是安卓开发新手 我想获得手机的实际加速度 我找到了一个获得加速度的代码 但它给出了重力加速度 请任何人帮助我找到一种在没有重力的情况下获得实际加速度的方法 这是我找到的代码 请帮我解决这个代码 谢谢 package com SensorT
  • 为什么我必须使用 watir-webdriver 和 firefox 来睡觉或等待?

    好吧 我想对 watir webdriver wait for page load gt 这个主题发表评论 但由于我有 1 个代表 所以我不能 我正在将 watir 脚本升级到 watir webdriver 我在 Firefox 上运行的
  • 如何在浏览器中编辑pdf并将其保存到服务器

    以下是要求 用户需要能够在浏览器中查看上传的 PDF 他们需要能够向 PDF 添加注释并将更新的 PDF 保存到服务器 而无需将其保存到自己的计算机并在浏览器外部打开它 欢迎任何关于如何实现这一目标的想法 顺便说一下 我正在使用一个 asp
  • 错误:静态断言失败:std::thread 参数在转换为右值后必须可调用

    我正在尝试向 std thread 添加 std function 我偶然发现了这个错误 error static assertion failed std thread arguments must be invocable after
  • 与 XML 模式结合使用的表示法名称

    我正在寻找这种风格的名称文字 包含大括号中的完整命名空间 URI 后跟标识符名称 http www w3 org 2001 XMLSchema dateTime 这是 James Clark 提出的一种非常常用的表示法 例如 这就是 JAX
  • 如何在 Visual Studio 2012 中禁用 F12 调试应用程序

    如果我在应用程序在 Visual Studio 下以调试模式运行时按 F12 则 WM KEYDOWN 永远不会到达我的事件循环 但它会立即触发断点 是否可以禁用此功能 或将其重新分配给另一个冲突较少的热键 例如 CTRL F12 我认为这
  • 使用动态规划解决背包问题的一个版本

    我正在 OpenCourseWare 上完成 MIT6 0002 https ocw mit edu courses electrical engineering and computer science 6 0002 introducti
  • iphone/ipad dev - 如何以编程方式启动系统设置应用程序

    在设置 gt 常规中有一个开关可以打开 关闭定位服务 在地图应用中 当定位服务关闭时 如果用户单击 查找我 按钮 则会弹出警报并要求用户在设置中打开定位服务 然后退出应用程序并启动设置应用程序 我如何在我的应用程序中以编程方式执行此操作 从
  • 地图函数未在React jsx中呈现

    我是 React 新手 尝试使用 jsx 内的映射函数来渲染数组 然而 循环内没有任何内容被渲染 我将数据传递给我的子组件 如下所示 showMaterialConfirmModal
  • 使用常量内存打印地址而不是cuda中的值

    我试图在代码中使用常量内存 并从内核分配常量内存值 而不是使用 cudacopytosymbol include