![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CPU-GPU
文章平均质量分 93
coder_szc
倚天照海花无数,流水高山心自知。
展开
-
编译运行rt-thread的qemu-riscv-virt64版本
背景本文记录对国产实时操作系统rt-thread的编译运行,此版本运行于riscv的64位qemu模拟器编译qemu的riscv环境首先我们需要编译模拟器,以提供rt-thread运行环境,步骤如下所示:1、下载解压qemu源码root@rtlab-computer:/home/rtlab/szc/riscv-qemu# wget https://download.qemu.org/qemu-6.0.0.tar.xzroot@rtlab-computer:/home/rtlab/sz原创 2021-07-24 10:25:44 · 997 阅读 · 2 评论 -
编写LitmusRT调度器插件
目录背景打桩编译安装引入TRACE模块来输出debug信息为P-EDF定义每个CPU的状态激活插件模块测试添加调度逻辑帮助函数demo_job_completion()demo_requeue()定义P-EDF调度逻辑任务状态改变新任务处理任务退出恢复挂起任务加入抢占检查回调注册修改1:挂起任务恢复修改2:新任务处理接受实时任务在/proc中暴露插件结构注册/proc状态销毁/proc状态回调注册测试原创 2021-07-11 11:01:41 · 653 阅读 · 1 评论 -
LitmusRT使用笔记
目录背景调度器的查看与使用查看当前调度器设置新调度器GSN-EDFrt_launchrtspinP-FPP-RES不定时轮询表驱动预留协同任务唤醒机制任务跟踪及可视化前期准备修改源文件安装库使用liblitmus周期任务事件任务编译运行Feature-Trace采样分析排序提取统计比较多个实验结果合并数据文件统计每种类型记录的事件数混洗和剪裁所有的样本文件结语背景...原创 2021-07-03 17:02:54 · 1069 阅读 · 8 评论 -
cuda10.0最佳实践的翻译(八到十七及两个附录)
目录背景评价标准计时器CPU计时器GPU计时器带宽理论带宽计算有效带宽计算通过Visual Profiler得到吞吐量报告内存优化主机和设备之间的数据传输钉内存异步迁移计算与迁移的重叠并行复制与执行串行复制与执行阶段化并行复制与执行零复制统一虚地址设备内存空间全局内存的合并访问共享内存局部内存纹理内存常量内存寄存器分配NUMA最佳实践优化执行配置占有率计算占有率并发核执行多个上原创 2021-02-01 15:05:12 · 1085 阅读 · 0 评论 -
cuda10.0最佳实践的翻译(一到七)
目录背景APOD评估并行化优化部署评估异构计算设备系统和主机系统的区别线程资源线程内存gpu设备上运行的东西应用分析分析缩放强缩放弱缩放应用并行化并行化库并行化编译器并行化代码得到正确的结果验证调试数字结果的准确性和精确度单精度和双精度浮点运算不满足结合律单双精度之间的转换IEEE 754x86中80位的计算优化cuda应用结语背景放假一周多,闲得没事儿,继续分享对原创 2021-01-25 10:56:55 · 485 阅读 · 0 评论 -
CUDA10.0官方文档的翻译与学习之CUDA合作组
目录背景介绍块内组线程组和线程块分片(Tiled Partitions)线程块分片(Thread Block Tiles)伪线程混洗函数伪线程投票函数伪线程匹配函数合并组块内合作组的使用发现模板伪线程同步代码模板组合网格同步多设备同步结语背景今天我们翻译一下CUDA10.0官方文档中最后一个值得我们注意的部分——合作组介绍合作组(Cooperative Groups)是在CUDA 9中为了组织通信线程组而引进的对CUDA编程原创 2021-01-09 10:40:32 · 1401 阅读 · 4 评论 -
CUDA10.0官方文档的翻译与学习之CUDA动态并行
背景本文翻译一下CUDA10.0文档附录中的动态并行部分。介绍概述动态并行是CUDA编程模型中支持在GPU上直接创建并同步新的工作的扩展,在程序需要的任何结点动态地创建并行度提供了一些新的特性。因为启动配置可以在运行于设备上的线程所决定,那么这种直接从GPU上创建新任务就减少了主机和设备间的执行控制和数据传输。另外,数据依赖的并行任何可以在运行时和核函数内联生成,动态利用GPU的硬件调度器和负载均衡器,适应了数据驱动的决策或工作。之前为消除递归、不规则循环结构,或者没有适应扁平化的单层并原创 2021-01-03 10:14:38 · 984 阅读 · 1 评论 -
CUDA10.0官方文档的翻译与学习之性能指南
目录背景总体性能优化策略最大化使用率应用层面设备层面多处理器层面占有率计算器最大化内存吞吐量主机和设备间的数据迁移设备内存访问全局内存尺寸和对齐要求二维数组局部内存共享内存常量内存纹理和表面内存最大化指令吞吐量算术指令单精度浮点除法单精度浮点倒数开方单精度浮点开方正余弦整型运算半精度运算类型转换控制流指令同步指令结语背景本文来进行对CUDA10.0官方文档的第五章,也是正文最后一章——原创 2020-12-26 18:19:58 · 1047 阅读 · 0 评论 -
CUDA10.0官方文档的翻译与学习之硬件实现
背景在之前的文章中,我翻译了cuda10.0官方文档的前三章,这次就来翻译第四章——硬件实现英伟达GPU架构通过由多线程的流式多处理器(SM)组成的可变数组编译,当一个主机CPU上的cuda程序调用了一个核网格,网格内的线程块将会被枚举,并被分发到具有合适执行能力的多处理器上。线程块内的线程在一个处理器上并发执行,多个线程块也可以在一个处理器上并发执行。当线程块结束时,新的块就会在腾出来的处理器上启动。多处理器被设计用来并发执行上百个线程,为了管理这么多的线程,它使用了一个单独的称为SIMT(单指令多线原创 2020-12-19 10:38:46 · 348 阅读 · 4 评论 -
CUDA10.0官方文档的翻译与学习之编程接口
目录背景用nvcc编译编译工作流二进制适配性ptx适配性应用适配性C/C++适配性64位适配性cudac运行时初始化设备内存共享内存页锁主机内存可移植内存写合并内存映射内存异步并发执行主机与设备间的并发执行并发核执行数据迁移与核执行重叠并发数据传输流多设备系统设备枚举:设备选择流与事件行为对等结点内存访问对等结点内存复制统一虚地址空间进程间通信错误检查调用栈纹理内存和表面(s.原创 2020-12-12 11:32:09 · 1180 阅读 · 0 评论 -
CUDA10.0官方文档的翻译与学习之编程模型
背景在文章CUDA10.0官方文档的翻译与学习之介绍中我翻译了CUDA10.0官方文档中的简介部分,这里书接前文,翻译第二章——编程模型这一章介绍一些cuda编程模型背后的主要概念,以及勾勒出他们如何以C的形式表达,cuda的C接口的集中介绍请参见下一章编程接口。本章和下一章使用的向量加法样例源码可以在cuda的vectorAdd样例中得到核函数cudaC通过允许程序员定义被称之为核函数的C函数来扩展C语言,相比普通C语言,核函数被调用时会在N个不同的cuda线程中并行执行N次(一个线程执行原创 2020-12-05 12:15:40 · 680 阅读 · 0 评论 -
CUDA10.0官方文档的翻译与学习之介绍
背景从这次开始,我将用数篇博客来分享前一阵我对CUDA10.0官方文档之编程指南的翻译与学习的笔记。由于内容非常多,我将每一章单独分享出来,可能有地方翻译得词不达意,所以建议大家参考原文:https://docs.nvidia.com/cuda/archive/10.0/cuda-c-programming-guide/index.html介绍从图像处理到通用目的的平行计算在不知满足的追求实时性的市场的驱动下,高分辨度的3D图像、可编程的gpu已经进化成了一个高度并行化、多线程多核处理器、拥原创 2020-11-28 21:52:12 · 1846 阅读 · 1 评论 -
在Ubuntu上编译安装OpenCV3
目录背景安装依赖包安装ffmpeg编译安装opencv3理想情况错误处理复制头文件修改头文件修改OpenCV文件修改文件方法更好的解决方法——换OpenCV版本3.4.1版本的OpenCV及OpenCV_contrib下载xfeatures2d源文件修改OpenCV文件编译与安装配置检验结语背景记录一下我前一阵子在Ubuntu18.04 64位上安装OpenCV3的过程,运气背的话挺繁琐的,仅供参考安装依赖包roo原创 2020-11-21 12:58:33 · 1193 阅读 · 0 评论 -
编译运行hog的opencv实现
背景前几篇LitmusRT、pgmRT等的安装就是为这里的实验做准备的,因此前置条件是编译安装好了litmusRT和pgmRT,并且当前系统内核为litmusRT下载克隆源码到某目录下root@ubuntu:/home/szc/cpu-gpu/openvx# git clone https://github.com/Yougmark/opencv.git hog配置进入目录,修改CMakeLists.txtroot@ubuntu:/home/szc/cpu-gpu/openv原创 2020-11-14 09:42:06 · 202 阅读 · 0 评论 -
编译运行rodinia_3.1
目录背景步骤下载与解压修改与复制文件编译编译子模块编译项目错误处理查看结果运行错误处理结语背景rodinia_3.1是一个GPU-CPU实验的benchmark(标杆),可以对openmp、opencl、cuda进行kmeans、hotspot等实验,但是其编译和运行却是相当费劲,以下是我从下载到运行的全过程记录,供大家参考步骤下载与解压下载压缩包http://www.cs.virginia.edu/~kw5na/lava/Rodinia/原创 2020-11-08 09:27:24 · 1975 阅读 · 4 评论 -
pgmRT安装
背景pgmRT主要负责将数据以图的形式进行软实时传递,准确的说,一个单元是一个结点,一个结点有出边和入边,进行数据的IO。安装pgmRT,首先要安装litmusRT、liblitmus和boot1.73步骤安装环境按照文章编译安装LitmusRT遇到的问题和动态知识图谱库DynGEM的学习之库的安装与调试中的相关内容编译安装litmusRT、liblitmus和boot1.73复制库文件找到头文件asm/unistd_64_x32.h,复制到/usr/local目录下这一步不原创 2020-11-01 15:41:49 · 457 阅读 · 0 评论 -
OpenCL与OpenACC的安装
背景在文章编译安装LitmusRT遇到的问题中,我们已经编译安装了实时操作系统LitmusRT,并且能够正常启动它。现在,我们得编译安装一下GPU加速的第三方库OpenCL或OpenACC。这里再次注意不要用虚拟机安装英伟达驱动,因为虚拟机的显卡是虚拟出来的,加载不了英伟达的ko文件。所以我使用的是实验室的ubuntu16.04 64位台式机,此台式机已经装好了英伟达驱动、cuda10.2和10.1、gcc7、g++7。OpenCL如果有cuda就首推英伟达的,毕竟英伟达是GPU界内的龙头老原创 2020-10-24 09:55:10 · 1771 阅读 · 0 评论 -
编译安装LitmusRT遇到的问题
背景最近在研究CPU-GPU异构,首要问题就是安装环境。我在三台机器(虚拟机、服务器、自己台式ubuntu)上安装了这套环境,遇到了一些问题,几经挫折竟然全部解决了,我以笔记的形式记录了编译过程、安装问题、遇到的问题及解决方法,并且逐渐写成博客分享给大家,因为这部分内容在网上实在不多。我们的环境之一就是使用LitmusRT的调度器,那么就要编译安装这个内核。编译安装步骤其实按照官网指导http://www.litmus-rt.org/installation.html就可以了,运气好的话一次就可以成原创 2020-10-21 10:28:37 · 941 阅读 · 0 评论