cudaMemcpyToSymbol使用

 

学到了cudaMemcpyToSymbol竟然还有将数据从host拷贝到global的功能,以前只用过这个函数拷贝到constant memory。拷贝方式的不同是由目的内存申请的方式决定的。

申请的是device内存,cudaMemcpyToSymbol拷贝就是从host拷贝到global memory。

申请的是constant内存,cudaMemcpyToSymbol拷贝就是从host拷贝到constant memory。

__device__ float g_damp_x[MAX_DIM];
__constant__ float c_damp_y[MAX_DIM];

 

main.cu

#include "error.cuh"
#include <stdio.h>
__device__ int d_x = 1;
__device__ int d_y[2];void __global__ my_kernel(void)
{d_y[0] += d_x;d_y[1] += d_x;printf("d_x = %d, d_y[0] = %d, d_y[1] = %d.\n", d_x, d_y[0], d_y[1]);
}int main(void)
{int h_y[2] = {10, 20};CHECK(cudaMemcpyToSymbol(d_y, h_y, sizeof(int) * 2));my_kernel<<<1, 1>>>();CHECK(cudaDeviceSynchronize());CHECK(cudaMemcpyFromSymbol(h_y, d_y, sizeof(int) * 2));printf("h_y[0] = %d, h_y[1] = %d.\n", h_y[0], h_y[1]);return 0;
}

 

#pragma once
#include <stdio.h>#define CHECK(call)                                   \
do                                                    \
{                                                     \const cudaError_t error_code = call;              \if (error_code != cudaSuccess)                    \{                                                 \printf("CUDA Error:\n");                      \printf("    File:       %s\n", __FILE__);     \printf("    Line:       %d\n", __LINE__);     \printf("    Error code: %d\n", error_code);   \printf("    Error text: %s\n",                \cudaGetErrorString(error_code));          \exit(1);                                      \}                                                 \
} while (0)

参考:

https://blog.csdn.net/u014800094/article/details/53994933?utm_source=blogxgwz5 

 

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

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

相关文章

定义一个结构体指针需要分配存储空间?

前言 问题的来源于在学数据结构的时候&#xff0c;C的语法和C语言的语法竟然不一样。 1.首先函数的参数有两种传递方式&#xff0c;一个是值传递&#xff0c;一个是地址传递。当指针作为参数传递的时候&#xff0c;即为地址传递&#xff0c;但C写的时候需要加&引用符号&a…

内核模式和用户模式

2位x86系统&#xff0c;每个进程的空间是4GB&#xff0c;即地址0x00000000到0xFFFFFFFF。 为了高效调用&#xff0c;Windows会把操作系统的内核数据和代码映射的系统中所有进程的进程空间中。因此4GB空间被划分为两个区域&#xff1a;用户空间和系统空间&#xff0c;默认大小为…

HUE 提交Schedule 时区问题

1.配置如下&#xff0c;每天定时 14:02 启动 2.运行后&#xff0c;任务状态提示&#xff0c;时间变成了06:02:00 3.修改HUE的时区配置 修改后 3.重启 4.然后执行发现&#xff0c;还是不起作用&#xff0c;后排查了一下oozie问题&#xff0c;发现hue的时区配置对oozie无法生效…

高斯日记

大数学家高斯有个好习惯&#xff1a;无论如何都要记日记。 他的日记有个与众不同的地方&#xff0c;他从不注明年月日&#xff0c;而是用一个整数代替&#xff0c;比如&#xff1a;4210 后来人们知道&#xff0c;那个整数就是日期&#xff0c;它表示那一天是高斯出生后的第几…

线程同步之条件变量

一、引言 假设有一个任务&#xff0c;由我和张三共同完成。张三把寄来的文稿初步审阅后放入一个队列&#xff0c;我负责将这个队列中的文稿进行审批&#xff0c;决定刊登与否。张三审阅一份文稿需要15分钟&#xff0c;我处理一个文稿需要2分钟。 如果将张三和我看作两个线程&am…

cuda的global memory介绍

CUDA Memory Model 对于程序员来说&#xff0c;memory可以分为下面两类&#xff1a; Programmable&#xff1a;我们可以灵活操作的部分。Non-programmable&#xff1a;不能操作&#xff0c;由一套自动机制来达到很好的性能。 在CPU的存储结构中&#xff0c;L1和L2 cache都是n…

串口通信参数

串口是一种非常通用的设备通信的协议&#xff08;不要与通用串行总线Universal Serial Bus(USB)混淆&#xff09;。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议&#xff1b;很多GPIB兼容的设备也带有RS-232口。同时&#xff0c;串口通信协议…

马虎的算式

小明是个急性子&#xff0c;上小学的时候经常把老师写在黑板上的题目抄错了。 有一次&#xff0c;老师出的题目是&#xff1a;36 x 495 ? 他却给抄成了&#xff1a;396 x 45 ? 但结果却很戏剧性&#xff0c;他的答案竟然是对的&#xff01;&#xff01; 因为 36 * 495 …

identifier __ldg is undefined

__ ldg&#xff08;&#xff09; 内置仅适用于计算能力3.5&#xff08;或更高版本&#xff09;架构。 这意味着&#xff1a; 必须在计算3.5&#xff08;或更新版本&#xff09;GPU上运行必须针对计算3.5&#xff08;或更新版本&#xff09;的GPU进行编译不能为旧体系结构编译。…

Mybase到期 破解

1.找到mybase安装目录 C:\Users\Zsh\AppData\Local\wjjsoft\nyfedit6 2.打开nyfedit.ini 3. 内容中查找 App.UserLic.FirstUseOn 删除 4.保存打开mybase即可

Android中给按钮同时设置背景和圆角示例代码

前言 最近在做按钮的时候遇到在给按钮设置一张图片作为背景的同时还要自己定义圆角&#xff0c;最简单的做法就是直接切张圆角图作为按钮就可以了&#xff0c;但是如果不这样该怎么办呢&#xff0c;看代码&#xff1a; 下面来看效果图 一、先建一个圆角的shape文件&#xff1a;…

awk使用方法

awk是行处理器: 相比较屏幕处理的优点&#xff0c;在处理庞大文件时不会出现内存溢出或是处理缓慢的问题&#xff0c;通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理&#xff0c;然后输出 awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’…

cude的__ldg使用

一般使用__ldg是更好的选择。通过constant缓存存储的数据必须相对较小而且必须获取同一个地址以便获取最佳性能&#xff0c;相反&#xff0c;只读缓存则可以存放较大的数据&#xff0c;且不必地址一致。 __global__ void transpose2(const real* A, real* B, const int N) {co…

html中contentEditable属性

contentEditable的主要功能是允许用户在线编辑元素中的内容&#xff0c;contentEditable是一个布尔型属性&#xff0c;因此在使用时候赋予初值&#xff0c;默认由inherit状态确定(看其父元素状态) 示例代码&#xff1a; <!doctype html> <html> <head> <…

Storm tick 功能

1. tick的功能 Apache Storm中内置了一种定时机制——tick&#xff0c;它能够让任何bolt的所有task每隔一段时间&#xff08;精确到秒级&#xff0c;用户可以自定义&#xff09;收到一个来自__systemd的__tick stream的tick tuple&#xff0c;bolt收到这样的tuple后可以根据业…

cuda的shared momery

CUDA SHARED MEMORY 在global Memory部分&#xff0c;数据对齐和连续是很重要的话题&#xff0c;当使用L1的时候&#xff0c;对齐问题可以忽略&#xff0c;但是非连续的获取内存依然会降低性能。依赖于算法本质&#xff0c;某些情况下&#xff0c;非连续访问是不可避免的。使用…

图的表示方法和C++实现

图的表示最长用的两种方法是&#xff1a; 1&#xff09;、邻接矩阵表示法 2&#xff09;、邻接表表示 下面是两种构造图的方法 1&#xff09;邻接矩阵&#xff1a; [cpp] view plaincopy#include <iostream> #include <vector> using namespace std; //枚…

html中contextmenu属性

contexmenu属性用于定义<div>元素的上下文菜单&#xff0c;所谓上下文菜单就是用书右键点击元素时候出现。 示例代码&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title> </title> </head>…

Hive 分区表操作 创建、删除

删除某个分区指定数据 ALTER TABLE tableName DROP PARTITION (times 201851); ALTER TABLE user_portrait_task DROP PARTITION (times > 201801);

成为专业程序员的 6 个技巧

1.在你责怪别人之前&#xff0c;先检查自己的代码 先想一想自己的假设和其他人的假设。来自不同供应商的工具可能内置不同的假设&#xff0c;即便是相同的供应商对于不同的工具&#xff0c;其假设也可能不同。 当其他人正在报告一个你不能重复的问题的时候&#xff0c;去看看他…