自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 PageRank 顶点Rank值总和收敛讨论

Pagerank算法在迭代过程中顶点Rank值的总和是可以收敛到等于顶点数的,这一性质与Pagerank算法每个顶点的rank初值无关。证明如下假设did_idi​为第i轮的rank值总和,可得d2d_2d2​ = d1∗0.8+0.2∗n;d_1*0.8 + 0.2*n;d1​∗0.8+0.2∗n;d3d_3d3​ = d2∗0.8+0.2∗n;d_2*0.8 + 0.2*n;d2​∗0.8+0.2∗n;d4d_4d4​ = d3∗0.8+0.2∗n;d_3*0.8 + 0.2*n;d3​∗0.8

2022-02-28 23:01:12 531

原创 GNN 图神经网络 通俗理解(A Comprehensive Survey on Graph Neural Networks论文阅读笔记)

A Comprehensive Survey on Graph Neural Networks原文链接 https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9046288图是现实社会中最常见的数据结构,每一个个体都可以看作点,每一个联系都可以看作边,无数种实体关系可以由图来表示,并通过图算法进行分析。神经网络对对于向量是友好的,图的点和边都可以表达为向量。为什么要有GCN,CNN哪里不行原因在于CNN无法处理非欧氏空间的数据在

2021-12-05 21:06:36 689

原创 CNN 全连接层与卷积层深刻理解

CNN 全连接层与卷积层卷积和全连接关系卷积取的是局部特征,全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图。因为用到了所有的局部特征,所以叫全连接什么是全连接层全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1

2021-11-11 19:09:11 12602 3

原创 c++右值引用 and std::move

在c++中,一个值要么是右值,要么是左值,左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。可见立即数,函数返回值等都是右值,而非匿名对象,包括变量,函数返回的引用,const对象等都是左值。比如常见的右值如下:123就是右值右值引用int&&,用以引用一个右值,可以延长右值的生命期,其生命周期变得和右值引用类型变量的生命期一样长,比如:int&& i = 123;int&&am

2021-03-24 16:26:45 354

原创 CUDA并行程序设计(一)

关于毕设的技术路线与研究内容没法更新在csdn上,所以只能记录在cuda并行程序这本书中学到的知识。中央处理器(Central Processor Unit) CPU图形处理器 (Graphics Processor Unit ) GPU冯诺依曼架构 处理器从存储器中取出指令、解码,然后执行该指令。GPU的G居然是图像,GPU可以对内存中的图像进行着色,然后将其显示在屏幕上。CUDA Compute Unified Device Architecture 统一计算架构...

2021-03-24 14:40:13 214

原创 cuda编程与gpu并行计算(六):图稀疏矩阵转为CSR结构并传入gpu

行压缩格式Compressed Sparse Row (CSR)CSR需要三种数据来表达:数值、列号、行转移。CSR不是三元组,而是整体的编码方式。CSR编码:行优先遍历矩阵Matrixvalues数组中保存矩阵中非零元素。column indices数组保存values数组中对应位置非零元素的列索引。row offsets数组的下标表示每一行第一个非零元素的行索引,元素值为values数组的下标,最后一个元素值为非零元素的个数。解码:遍历values数组,对其中的元素值x(下标记为ind

2021-01-04 21:21:18 1609

原创 c++ explicit关键字

首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 { public: char *_pstr; int _size

2021-01-04 15:09:34 82

原创 cuda 原子操作案例

让10000 去增加同一个数组元素#include <stdio.h>#define NUM_THREADS 1000000#define ARRAY_SIZE 100#define BLOCK_WIDTH 1000void print_array(int *array, int size){ printf("{ "); for (int i = 0; i < size; i++) { printf("%d ", array[i]); } pr

2021-01-02 19:22:16 378

原创 理解CUDA的零拷贝内存

毕设关键一环是“零拷贝“问题,经过一些学习和论文的阅读之后,现在做出一些总结。零拷贝内存是一种特殊形式的内存映射,它允许你将主机内存直接映射到GPU内存空间。因此,对GPU上的内存解引用,如果是基于GPU的,那么就获得全局内存的高速带宽;如果GPU代码读取一个主机映射变量,它就会提交一个PCIe读取事务,主机会通过PCIe总线返回数据。开辟CPU内存空间cudaHostAlloc((void**)&host_data_to_device, size_in_bytes,cudaHostAlloc

2021-01-02 16:54:23 1511 3

原创 cuda编程与gpu并行计算(五):cuda代码的高效策略

1.最大化每个线程的计算量2.最小化每个线程的内存读取速度每个线程读取的数据量少每个线程读取的速度快(本地内存 > 共享内存 > 全局内存 ,对于全局内存,我们还需要合并全局内存)而对于全局内存,我们有以下情况,连续的是最好的,有规则的访问其次,随机访问最拉跨3.避免线程发散同一个线程块的线程执行不同内容的代码导致发散的例子kernel中做条件判断循环长度不一...

2021-01-01 10:49:08 309

原创 cuda编程与gpu并行计算(四):cuda编程模型

CUDA最大的特点:对线程块将在何处、何时运行不作保证优点:1.硬件真正有效的运行,灵活。2.无需要线程间互相等待3.可扩展性强后果:1.对于那个块在哪个SM上运行无法进行任何假设2.无法获取块之间的明确通讯(hard to get communications between blocks)dead lock(并行死锁)线程退出当然有无法保证的,肯定也有能保证的。1.所有在同一个线程块上的线程必然会在同一时间运行在同一个SM上2.同一个内核的所有线程块必须全部完成之后,才会运行下一

2020-12-31 17:56:01 241

原创 cuda编程与gpu并行计算(三):一个小demo了解cuda基本语法

gpu程序的一般步骤CPU分配空间给GPU(cudaMalloc)CPU复制数据给GPU(cudaMemcpy)CPU加载kernels给GPU做计算(Kernel核: 可以理解为C/C++中的一个函数function)CPU把GPU计算结果复制回来过程中,一般要尽量降低数据通讯的消耗,所以如果程序需要复制大量的数据到GPU,显然不是很合适使用GPU运算,最理想的情况是,每次复制的数据很小,然后运算量很大,输出的结果还是很小,复制回CPU。先做一个小demo,对一个8位数组求平方,很简单g

2020-12-31 09:56:52 1438

原创 SEP-Graph:Finding Shortest Execution Paths for Graph Processing under a Hybrid Framework on GPU阅读笔记

通常,并行图处理的性能由三对关键参数决定,即同步或异步执行模式(Sync或Async),推或拉通信机制(Push或Pull),数据驱动或拓扑驱动遍历方案(DD或TD),这增加了GPU编程和系统实现的复杂性和复杂度。现有的图形处理框架主要在给定应用程序的整个执行过程中使用单一的组合,但是我们已经观察到它们的性能参差不齐和次优。 本文介绍了一个高效的图形处理软件框架SEP-Graph。HyBrid执行模式在三对参数之间自动切换,目标是在每次迭代中实现最短的执行时间。 首...

2020-12-31 09:22:35 179

原创 cuda编程与gpu并行计算(二):ubuntu16.04 cuda11.0 环境配置

GPU程序的一般步骤1.CPU分配空间给GPU (cudaMalloc)2.CPU复制数据给GPU (cudaMemcpy)3.CPU加载kernels给GPU做计算4.CPU把GPU计算结果复制回来

2020-12-31 09:08:53 891

原创 cuda编程与gpu并行计算(一):gpu与cuda概论

gpu和cpu的区别GPU采用了数量众多的计算单元和超长的流水线。但只有非常简单的控制逻缉并省去了Cache。而CPU不仅被Cache 占国了大量空间,而且还有有复杂的控制逻辑和很多优化电路,相比之下计算能力是CPU很小的一部分CPU的发展:处理器越来越小,处理速度越来越快,处理核变多性能(低延时性Latency)与吞吐量(Throughput)Cache local memory :CPU > GPUThreads : GPU > CPURegisters :GPU >

2020-12-30 09:26:45 1268

原创 EMOGI: Efficient Memory-access for Out-of-memory Graph-traversal In GPUs 阅读笔记

要开始做毕设,毕设的内容是基于GPU的高效大规模图计算,先读一下这个open problem中的优秀论文,写博客以记录学习。使用GPU进行图遍历,图形常常不适合GPU内存。先前的工作要么使用输入数据预处理/分区,要么使用统一虚拟存储器(UVM)将数据块从主机存储器细化到GPU存储器。大多数已有的工作将这些大型图存储在主机存储器中,并让GPU通过统一虚拟存储器(UVM)机制访问它们。UVM将CPU内存和GPU内存都带入一个单一的共享地址空间。UVM允许GPU简单地访问统一虚拟地址空间中的数据,并且它使用分

2020-12-29 12:59:16 318 1

原创 稀疏矩阵格式(COO、CSR、CSC)及其编码解码

一般情况下,稀疏矩阵指的是元素大部分是0的矩阵

2020-12-24 16:47:31 6030 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除