cudaMemcpyToSymbol 的问题

2024-04-16

我正在尝试复制到恒定内存。但我不能,因为我对 cudaMemcpyToSymbol 函数的用法有误解。我正在努力追随this http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/group__CUDART__MEMORY_gf268fa2004636b6926fdcd3189152a14.html

这是一些代码

__device__ __constant__ double var1;
__device__ __constant__ int var2;

int main(){

   //... some code here...

   double var1ToCopy = 10.1;
   int var2ToCopy = 1; 

   void * p1 = &var1ToCopy; 
   void * p2 = &var2ToCopy;

   cudaStatus = cudaMemcpyToSymbol((void*)&var1,p1,sizeof(double),0,cudaMemcpyHostToDevice);
   if (cudaStatus != cudaSuccess){
      return -1;
   }

   cudaStatus = cudaMemcpyToSymbol((void*)&var2,p2,sizeof(int),0,cudaMemcpyHostToDevice);
   if (cudaStatus != cudaSuccess){
      return -1;
   }


   //... and some code here...
}

我知道这是一个非常愚蠢的问题,但我花了几个小时在谷歌上搜索答案,但没有取得任何成功。


您不需要符号名称上的&符号。符号与指针或变量不同。

而不是这个:

cudaStatus = cudaMemcpyToSymbol((void*)&var1,p1,sizeof(double),0,cudaMemcpyHostToDevice);

Do this:

cudaStatus = cudaMemcpyToSymbol(var1,&var1ToCopy,sizeof(double));

我还根据某些参数具有默认值的事实简化了上述调用,如中所示文档 http://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__MEMORY.html#group__CUDART__MEMORY_1g2a229a704ade54887f7784e2e2dbd895.

这是一个围绕代码修改版本的完整示例(需要 cc2.0+ GPU):

$ cat t626.cu
#include <stdio.h>

__device__ __constant__ double var1;
__device__ __constant__ int var2;

__global__ void kernel(){

  printf("%f\n", var1);
  printf("%d\n", var2);
}


int main(){


   double var1ToCopy = 10.1;
   int var2ToCopy = 1;
   cudaError_t cudaStatus = cudaMemcpyToSymbol(var1,&var1ToCopy,sizeof(double));
   if (cudaStatus != cudaSuccess) {printf("fail1\n"); return 1;}

   cudaStatus = cudaMemcpyToSymbol(var2,&var2ToCopy,sizeof(int));
   if (cudaStatus != cudaSuccess) {printf("fail2\n"); return 1;}
   kernel<<<1,1>>>();
   cudaDeviceSynchronize();
   return 0;

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

cudaMemcpyToSymbol 的问题 的相关文章

  • cuda中内核的并行执行

    可以说我有三个全局数组 它们已使用 cudaMemcpy 复制到 GPU 中 但 c 中的这些全局数组尚未使用 cudaHostAlloc 分配 以便分配页面锁定的内存 而不是简单的全局分配 int a 100 b 100 c 100 cu
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 如何运行和理解CUDA Visual Profiler?

    我已经设置了 CUDA 5 0 并且我的 CUDA 项目运行良好 但我不知道如何使用 Visual Profiler 分析我的 CUDA 项目 如何运行它 我还需要安装更多吗 又该如何做呢 我的电脑使用Window 7 64位 CUDA 5
  • cuda-gdb 错误消息

    我尝试使用 cuda gdb 调试我的 CUDA 应用程序 但遇到了一些奇怪的错误 我设置了选项 g G O0构建我的应用程序 我可以在没有 cuda gdb 的情况下运行我的程序 但没有得到正确的结果 因此我决定使用 cuda gdb 但
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 使用 cudamalloc()。为什么是双指针?

    我目前正在浏览有关的教程示例http code google com p stanford cs193g sp2010 http code google com p stanford cs193g sp2010 学习CUDA 演示的代码 g
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 使用 Cuda 并行读取多个文本文件

    我想使用 CUDA 在多个文件中并行搜索给定字符串 我计划使用 pfac 库来搜索给定的字符串 问题是如何并行访问多个文件 示例 我们有一个包含 1000 个文件的文件夹 需要搜索 这里的问题是我应该如何访问给定文件夹中的多个文件 应该动态
  • 我们如何在每次运行时使用不同的种子在 CUDA C 中生成随机数?

    我正在研究一个随机过程 我想在每次运行程序时在 CUDA 内核中生成不同的系列随机数 这类似于我们在 C 中声明 种子 时间 空 接下来是 srand 种子 和兰特 我可以通过内核将种子从主机传递到设备 但是 这样做的问题是我必须将整个种子
  • 使用推力来处理 CUDA 类中的向量?

    我对 C 类的推力的适用性有疑问 我正在尝试实现一个类对象 该对象接收顶点的 x y z 坐标作为 ver1 ver2 和 ver3 然后 分配给一个三角形并计算面积和法向量 然而 我不太明白如何创建一类推力向量 这是我从文件中读取的顶点坐
  • 如何从C++头文件调用CUDA文件?

    我知道从 c 文件调用 cu 文件的方法 但现在我想从 C 头文件调用 cu 文件 有可能做到吗 如果是这样 我应该如何设置我的项目 请帮忙 这是一个有效的例子 file1 h int hello file2 h include
  • cudaMalloc使用向量>进行管理 > C++ - NVIDIA CUDA

    我正在通过 NVIDIA GeForce GT 650M GPU 为我创建的模拟实现多线程 为了确保一切正常工作 我创建了一些辅助代码来测试一切是否正常 在某一时刻 我需要更新变量向量 它们都可以单独更新 这是它的要点 device int
  • 为什么使用 boost::none 无法通过 nvcc 编译?

    我正在尝试编译以下代码 include
  • 如何降级cuda版本

    我目前使用的是 cuda 版本 4 2 但我需要将其更改为 3 1 是否可以卸载当前版本 4 2 版 然后安装以前的版本 3 1 版 编辑 请参阅我的操作系统是linux ubuntu 10 04 64位 编辑 我找到了如何获取 3 1 版
  • 如何转储所有 NVCC 预处理器定义?

    我想达到同样的效果 gcc dM E lt dev null 如所描述的here https stackoverflow com q 2224334 1593077 但对于 nvcc 也就是说 我想转储所有 nvcc 的预处理器定义 唉 n
  • 将数据从 GPU 复制到 CPU - CUDA

    我在将数据从 GPU 复制到 CPU 时遇到问题 一开始我在 GPU 空间中创建变量 device float gpu array 在此 GPU 函数中 我想将数据从 od fS gi 值 0 43 复制到 gpu array global
  • 如何使用 Visual Studio 2008 调试 CUDA 内核代码?

    嘿 我正在使用带有 CUDA 3 2 的 Visual Studio 2008 我正在尝试调试具有此签名的函数 MatrixMultiplication Kernel lt lt
  • dlib 不使用 CUDA

    我使用 pip 安装了 dlib 我的显卡支持 CUDA 但是在运行 dlib 时 它不使用 GPU 我在 ubuntu 18 04 上工作 Python 3 6 5 default Apr 1 2018 05 46 30 GCC 7 3

随机推荐

  • 使用 R 中的 drc 包回归​​多个剂量反应曲线

    我试图通过我的实验数据拟合回归 4 或 5 PL 我有几种化合物可以抑制我感兴趣的酶 每个都有其自己的 0 100 酶活性范围 所有数据都在一个数据框中 并通过指定我的化合物 毒素 的一列进行区分 因此 我想对每种毒素 化合物分别进行回归
  • VS2015:应用程序无法正确启动(0xc000007b)

    我在 Visual Studio 2015 上为 Windows 10 PC 编写了代码 该应用程序主要关注 UDP 通信 我使用 boost 库 它工作正常 但当我将代码文件夹移至 Windows 7 时 我收到错误 应用程序无法正确启动
  • SwiftUI View 协议中的EnvironmentObject

    我想制定这样的协议 protocol SubscriptionManagerView View var subscriptionManager EnvironmentObject
  • python装饰器,嵌套函数[重复]

    这个问题在这里已经有答案了 我试图弄清楚为什么在使用装饰器时我需要一个嵌套函数 这是一个例子 def func f def deco args kwargs return f args kwargs return deco func def
  • Numpy/ Pandas/ Matplotlib 安装时间太长

    我已经决定安装 MacOs Big Sur 现在我必须再次重新安装所有软件包 但我遇到了一些问题 我没有太多使用终端的经验 但安装一些数据科学库需要很长时间 例如 安装 numpy 花了几分钟 而现在 自从我开始尝试安装 pandas li
  • 在 Jade 中使用 HTML 被认为是不好的做法吗?

    Jade 看起来像一个很酷的模板引擎 我想我将在下一个项目中使用它 然而 有些语法对我来说没有意义 这样做你会得到什么 ul li a href book a Book A 代替 ul li a href book a Book A a l
  • 为什么使用互斥量而不是布尔变量进行线程同步?

    我正在尝试了解 C 中的多线程编程 我有疑问 既然我们使用MUTEXES来进行线程同步 为什么我们不能使用布尔变量来阻塞要执行的代码的关键区域 与布尔变量相比 静音变量有何特点 PS 其实这个问题是在采访中问到的 因此 请分享您对此的了解
  • 可用 Wifi 设备列表

    我想显示可用 Wifi 设备的列表 这是我的代码 我不明白这里有什么错误 wifi WifiManager getSystemService Context WIFI SERVICE if wifi isWifiEnabled false
  • 如何向 AWS 根账户 MFA 添加更多设备

    我的 iPhone 中已经安装了 Google 身份验证器 并且正在使用它登录我的 AWS 根账户 我想添加使用我的 Android 手机通过 MFA 登录的功能 并使用相应的令牌生成器 Android 应用程序 是否可以添加第二个设备以及
  • 具有多个参数的 Laravel FindOrNew

    我使用 laravel FindOrNew 来获取具有两个参数的条目 或创建一个新参数 option App Option findOrNew user id gt this gt id option name gt optionName
  • 如何为一般 authError 消息定义 FlashHelper/Component 元素

    将 CakePHP 从 2 6 2 更新到 2 7 2 后 在创建 auth flash 消息时出现丢失密钥错误 如何定义默认的元素模板authError Since SessionComponent setFlash 已经已弃用 http
  • 向量集合上的 C++ iterator_adapter [重复]

    这个问题在这里已经有答案了 可能的重复 展平迭代器 https stackoverflow com questions 3623082 flattening iterator 我有一个某种类型的向量 比如 int 我想迭代一下 在向量中的元
  • 通过 Tweepy 获取 Twitter 中的所有关注者 ID

    是否有可能获得像麦当劳这样拥有超过 100 万粉丝的帐户的完整粉丝列表 我使用 Tweepy 并遵循代码 c tweepy Cursor api followers ids id McDonalds ids for page in c pa
  • 公开应用程序秘密到底有多糟糕?

    经过重大的巫术之后 我终于让分数 API 正常工作了 事实证明你必须设置Enhanced Auth Dialog to disabled或者 Facebook 会忽略您的publish actions允许 只是提醒一下 以防其他人遇到困难
  • 创建 Facebook 应用程序请求

    我试图在特定事件发生时从应用程序向用户发送消息 现在我有这个代码 param array message gt XYZ shared a file with you data gt additiona string data access
  • Linq to SQL 中的动态表名称

    大家好 我有一个可怕的数据库 我必须使用它 而 linq to sql 是我用来检索数据的选项 我试图通过根据用户选择输入不同的表名称来重用函数 但据我所知 无法修改 DataContext 查询中的 TEntity 或 Table 这是我
  • 使用flash动作脚本开发网络游戏

    简而言之 如果我想使用 Flash 技术开发在线游戏 你能告诉我一些很好的学习资源吗 包括3D游戏 您可以从新发布的开始Flash平台游戏技术中心 http www adobe com devnet games 在 Adob e Devne
  • 如何在 ionic 2(搜索栏)中进行自动完成

    我正在尝试在我的搜索栏中自动完成我到目前为止所做的事情 我有一个包含一些字符串的数组 然后我尝试在我的项目中列出我能够搜索的特定项目 但我的要求不是在列表中显示项目 我必须在单击搜索栏时 数组中的所有字符串都应该出现 并且我必须进行搜索
  • 帮助构建 boost asio ssl 示例

    我一直在研究 asio ssl 示例 链接如下 尽管尽了最大努力 我还是无法将 openssl 链接到 boost 示例中 ld 的输出是 ld 缺少 libssl a 中的符号 我无法弄清楚的是 我发现 libssl a 中带有 nm 的
  • cudaMemcpyToSymbol 的问题

    我正在尝试复制到恒定内存 但我不能 因为我对 cudaMemcpyToSymbol 函数的用法有误解 我正在努力追随this http developer download nvidia com compute cuda 4 1 rel t