CUDA学习笔记07:shared memory Code

参考视频

宝藏up主!CUDA编程模型系列七(利用shared memory优化矩阵转置)_哔哩哔哩_bilibili

代码

#define BLOCK_SIZE 32
#define M 3000
#define N 1000__managed__ int matrix[N][M];
__managed__ int gpu_matrix[M][N];
__managed__ int cpu_matrix[M][N];__global__ void gpu_matrix_transpose(int in[N][M], int out[M][N])
{int x = threadIdx.x + blockDim.x * blockIdx.x;int y = threadIdx.y + blockDim.y * blockIdx.y;if (x < M && y < N) {out[x][y] = in[y][x];}
}__global__ void gpu_shared_matrix_transpose(int in[N][M], int out[M][N])
{int x = threadIdx.x + blockDim.x * blockIdx.x;int y = threadIdx.y + blockDim.y * blockIdx.y;__shared__ int ken[BLOCK_SIZE + 1][BLOCK_SIZE + 1];     // 有冲突,所以多申请一些if (x < M && y < N){ken[threadIdx.y][threadIdx.x] = in[y][x];}__syncthreads();int x1 = threadIdx.x + blockDim.y * blockIdx.y;int y1 = threadIdx.y + blockDim.x * blockIdx.x;if (x1 < N && y1 < M) {out[y1][x1] = ken[threadIdx.x][threadIdx.y];}
}void cpu_matrix_transpose(int in[N][M], int out[M][N])
{for (int y = 0; y < N; y++) {for (int x = 0; x < M; x++) {out[x][y] = in[y][x];}}
}void transpose_test()
{for (int y = 0; y < N; y++) {for (int x = 0; x < M; x++) {matrix[y][x] = rand() % 1024;}}cudaEvent_t start, stop_gpu, stop_cpu;cudaEventCreate(&start);cudaEventCreate(&stop_gpu);cudaEventCreate(&stop_cpu);cudaEventRecord(start);cudaEventSynchronize(start);dim3 dimGrid((M + BLOCK_SIZE - 1) / BLOCK_SIZE, (N + BLOCK_SIZE - 1) / BLOCK_SIZE);dim3 dimBlock(BLOCK_SIZE, BLOCK_SIZE);for (int i = 0; i < 20; i++){gpu_matrix_transpose<<<dimGrid, dimBlock>>>(matrix, gpu_matrix);//gpu_shared_matrix_transpose<<<dimGrid, dimBlock>>>(matrix, gpu_matrix);cudaDeviceSynchronize();}cudaEventRecord(stop_gpu);cudaEventSynchronize(stop_gpu);cpu_matrix_transpose(matrix, cpu_matrix);cudaEventRecord(stop_cpu);cudaEventSynchronize(stop_cpu);float time_cpu, time_gpu;cudaEventElapsedTime(&time_gpu, start, stop_gpu);cudaEventElapsedTime(&time_cpu, stop_gpu, stop_cpu);bool errors = false;for (int y = 0; y < M; y++) {for (int x = 0; x < N; x++) {if (fabs(cpu_matrix[y][x] - gpu_matrix[y][x]) > (1.0e-10)){errors = true;break;}}}printf("Result: %s \n", errors ? "Errors" : "Pass");printf("CPU time: %.2f \n GPU time: %.2f \n", time_cpu, time_gpu / 20);
}

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

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

相关文章

阻抗控制理解

阻抗控制不是控制机器人位置或力&#xff0c;而是旨在塑造两者之间的动态关系 [4] , [5]&#xff0c;从而隐式控制与人类或环境交换的能量并防止不安全的相互作用。这允许安全地处理任务的所有部分&#xff0c;包括自由运动、运动学约束运动和动态约束运动&#xff0c;就像人机…

代码随想录算法训练营第二十五天|39. 组合总和、40.组合总和II、131.分割回文串

文档讲解&#xff1a;39. 组合总和、40.组合总和II、131.分割回文串 题目链接&#xff1a;39. 组合总和、40.组合总和II、131.分割回文串 216.组合总和III class Solution {List<List<Integer>> res new ArrayList<>();List<Integer> path new Arra…

CentOS的安装

一、打开VMware的WorkStation的软件界面。点击创建新的虚拟机。 二、我们选择自定义&#xff0c;下一步。 三、这个界面不用动&#xff0c;直接进入下一步。 四、点击稍后安装操作系统&#xff0c;下一步。 五、选择Linux操作系统&#xff0c;版本为CentOS 7 64位。 六、虚拟机…

web集群(haproxy负载均衡+keepalived高可用)

web集群(haproxy负载均衡keepalived高可用) 主机名主机IP地址lvs1haproxykeepalived192.168.88.38proxyhaproxykeepalived192.168.88.66web1nginx192.168.88.10web2nginx192.168.88.20 配置lvs1&#xff0c;proxy 安装haproxy [rootlvs1 ~]# yum -y install haproxy [rootl…

Day69:WEB攻防-Java安全JWT攻防Swagger自动化算法签名密匙Druid泄漏

目录 Java安全-Druid监控-未授权访问&信息泄漏 黑盒发现 白盒发现 攻击点 Java安全-Swagger接口-导入&联动批量测试 黑盒发现 白盒发现 自动化发包测试 自动化漏洞测试 Java安全-JWT令牌-空算法&未签名&密匙提取 识别 JWT 方式一&#xff1a;人工识…

前端 -- 基础 表单标签 -- 表单域

表单域 # 表单域是一个包含 表单元素 的区域 在 HTML 标签中&#xff0c; <form> 标签 用于定义表单域&#xff0c; 以实现用户信息的收集和传递 简单通俗讲&#xff0c; 就是 <form> 会把它范围内的表单元素信息提交给后台&#xff08;服务器) 对于上面讲…

24计算机考研调剂 | 【官方】桂林理工大学(11自命题、22自命题)

桂林理工大学信息工程与科学学院招收调剂 考研调剂补充信息 一、招收专业 计算机科学与技术&#xff08;学硕&#xff09;、软件工程&#xff08;学硕&#xff09;、计算机技术&#xff08;专硕&#xff09;、人工智能&#xff08;专硕&#xff09;、软件工程&#xff08;专…

php版本的AI电话机器人系统有哪些优势

PHP版本的AI电话机器人系统具有以下优势&#xff1a; 提升客户体验&#xff1a;AI电话机器人能够为客户提供724小时的服务&#xff0c;无论何时客户有疑问或需要帮助&#xff0c;都可以得到及时响应1。 提高工作效率和客户满意度&#xff1a;AI电话机器人系统具有智能回答问题…

【Sass】1px分割线 + 缩进分割线

效果图 1. 亮色模式效果 2. 暗色模式效果 设计思路 配色使用grey色 优点&#xff1a;无论在暗色模式还是亮色模式都可以看清楚分割线 使用after,before 伪元素绘制线条&#xff0c;并压缩线条transform: scaleY(.25) 注意事项 必须确保父级有宽高父级定位必须为position: r…

2、RabbitMQ_安装

RabbitMQ安装文档 RabbitMQ官网下载地址&#xff1a;https://www.rabbitmq.com/download.html 1.安装依赖 在线安装依赖环境&#xff1a; yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc x…

2025张宇考研数学基础36讲,视频百度网盘+PDF

一、张宇老师全年高数体系&#xff08;听课用书指南&#xff09; 25张宇全程&#xff1a; docs.qq.com/doc/DTmtOa0Fzc0V3WElI 复制粘贴在浏览器上打开&#xff0c;就可以看到2025张宇的全部的啦&#xff01; 一般来说我们把考研数学划分为3-4个阶段&#xff0c;分别是基础阶…

[Django 0-1] Core.Email 模块

Mail 源码分析 模块文件结构 . ├── __init__.py ├── backends │ ├── __init__.py │ ├── base.py │ ├── console.py │ ├── dummy.py │ ├── filebased.py │ ├── locmem.py │ └── smtp.py ├── message.py └── utils.py模…

CSS详细教程

文章目录 前言一、CSS应用方式1.在标签上2.在head标签的style上3.写在文件中 二、选择器1.ID选择器2.类选择器3.标签选择器4.属性选择器5.后代选择器6.样式覆盖 三、CSS样式1.高度和宽度2.块级标签和行内标签转换3.字体颜色/大小/粗细/样式/对齐/边框4.浮动5.背景色6.内边距7.边…

[数据集][目标检测]番茄成熟度检测数据集VOC+YOLO格式277张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;277 标注数量(xml文件个数)&#xff1a;277 标注数量(txt文件个数)&#xff1a;277 标注类别…

IDEA上的Scala环境搭建

Scala环境搭建 一、搭建Scala开发环境 安装Scala编译器 安装scala-2.12.10.msi 检查scala安装情况 在dos窗口输入scala&#xff0c;检查是否能够进入编译器。进行简单的scala命令计算 在IDEA中进行scala编码 File - Settings - Plugins - MarketPlace中搜索scala插件 安…

总结mac下解决matplotlib中文显示问题的几种方法

一、前言&#xff1a; 使⽤matplotlib画图时&#xff0c;由于matplotlib默认没有中⽂&#xff0c;显⽰中文时会出现空⽩⼩⽅块。 二、方法&#xff1a; 2.1 matplotlib中使用SimHei字体 1&#xff09;进入终端后查看matplotlib的字体路径&#xff1a; $ python >>&g…

Mac玩《幻兽帕鲁》为什么打不开D3DMetal?d3d错误怎么办 d3dxl error

我之前发了一篇讲Mac电脑玩Steam热门新游《幻兽帕鲁》的文章&#xff08;没看过的点这里&#xff09;&#xff0c;后来也看到很多朋友去尝试了&#xff0c;遇到了一些问题&#xff0c;无法进入《幻兽帕鲁》游戏&#xff0c;或者是玩的时候卡顿以及出现黑屏&#xff0c;通过我的…

jQuery+CSS3自动轮播焦点图特效源码

jQueryCSS3自动轮播焦点图特效源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 下载地址 jQueryCSS3自动轮播焦点图特效源码

mac os 配置两个github账号

1. 清空git全局配置的username和email git config --global --unset user.name git config --global --unset user.emailgit config --list 可以查看是否清空了 2. 定义两个标识符,这两个标识符以后会被用来代替“github.com”来使用。 假设两个账号的邮箱地址分别是a@gmai…

计算机视觉之三维重建(1)---摄像机几何

文章目录 一、针孔模型和透镜1.1 针孔摄像机1.2 近轴折射模型1.3 透镜问题 二、摄像机几何2.1 像平面和像素平面2.2 齐次坐标下的投影变换2.3 摄像机倾斜2.4 规范化摄像机2.5 世界坐标系2.6 Faugeras定理2.7 投影变换性质&#xff1a; 三、其他投影摄像机模型3.1 弱透视投影摄像…