![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并行计算
文章平均质量分 64
跬步达千里
深度学习 图像处理 tensorflow caffe python C++
展开
-
C中const,volatile,restrict关键字的用法
const变量声明中带有关键词const,意味着不能通过赋值,增量或减量来修改该变量的值,这是显而易见的一点。指针使用const则要稍微复杂点,因为不得不把让指针本身成为const和指针指向的值成为const区别开来、下面的声明表示pf指向的值必须是不变的constfloat *pf;而pf则是可变的,它可以指向另外一个const或非const值;相反,下面的声明说明pf是不能改变的,而pf所指向转载 2016-10-24 17:50:35 · 603 阅读 · 0 评论 -
CUDA纹理内存相关参数解释
纹理内存的读取模式: cudaReadModeNormalizedFloat:如果纹理元素是一个16位或8位的整型,那么返回值将作为浮点数返回, 如果是无符号整型,将被映射到[0.0,1.0],如果是有符号整型,将被映射到[-1.0,1.0] cudaReadModeElementType:那么将返回回原始类型,不做转换纹理坐标归一化: 默认的,纹理坐标是使用浮点值进行访问:[0,N-1],原创 2016-12-20 11:06:07 · 1825 阅读 · 0 评论 -
CUDA并发相关(流并发、主机设备并发)
核函数的并发执行,在下面需要注意的是,流与流之间通过事件来同步,即一个流等待另一个流执行完某个操作后再进行下一步操作,这时,创建事件时,应该使用:checkCudaErrors(cudaEventCreateWithFlags(&(kernelEvent[i]), cudaEventDisableTiming));使用时应该是:当前流等待上一个流运行后当前流再执行: for (int i=0;原创 2016-12-23 18:01:03 · 4199 阅读 · 0 评论 -
纹理对象的使用
转载地址:http://bbs.csdn.net/topics/390886235大家知道,CUDA纹理只能定义为静态全局变量,而不能作为参数传到Kernel中C/C++ code?1234567texturefloat, 2, cudaReadModeElementTy转载 2016-12-15 10:18:50 · 694 阅读 · 0 评论 -
CUDA优化
1 使用锁页内存进行异步数据传输,在数据传输的同时,执行核函数,可以将二者中执行时间较短的掩盖2 使用共享内存,虽然共享内存不大,但是其访问速度比全局内存大很多,因此,能够用共享内存替代全局内存的尽量使用共享内存,给出一个例子:参见网页中的第五条:http://blog.csdn.net/augusdi/article/details/124340773 使用纹理内存(数据只需要读取时,还有一个内存原创 2016-12-15 17:22:42 · 827 阅读 · 0 评论 -
CUDA存储类型
CUDA存储器类型:每个线程拥有自己的register and loacal memory;每个线程块拥有一块shared memory;所有线程都可以访问global memory;还有,可以被所有线程访问的只读存储器:constant memory and texture memory注意!:对于现在比较新的架构Fermi、Kepler,以及pascal,对local,转载 2016-12-15 15:57:51 · 1938 阅读 · 0 评论 -
CUDA优化总结
总体的CUDA优化分以下几个策略:最大化并行执行来获得最大的利用率优化内存使用方法来获得最大的内存吞吐量优化指令使用方式来获得最大的指令吞吐量具体再可以从以下几个方面入手:CUDA配置优化:指的是在CUDA核函数执行之前,其参数的设置,根据显卡的参数,结合核函数的特点,需要注意以下几个参数:占用率:每个多核(个人觉得也可以理解成CUDA流处理)上正在执行的线程数,除以多核上允许执行的最大线原创 2016-12-16 17:55:30 · 7639 阅读 · 0 评论 -
CUDA tips
CUDA是什么 CUDA,Compute Unified Device Architecture的简称,是由NVIDIA公司创立的基于他们公司生产的图形处理器GPUs(Graphics Processing Units,可以通俗的理解为显卡)的一个并行计算平台和编程模型。 通过CUDA,GPUs可以很方便地被用来进行通用计算(有点像在CPU中进行的数值计算等等)转载 2016-12-09 14:29:35 · 486 阅读 · 0 评论 -
CUDA流-数据复制与核函数执行并行
http://blog.csdn.net/u010335328/article/details/524534991. CUDA流介绍CUDA流在加速应用程序方面起着重要的作用。CUDA流表示一个GPU操作队列,并且该队列中的操作将以指定的顺序执行。我们可以在流中添加一些操作,如核函数启动,内存复制等。将这些操作添加到流的顺序也就是他们的执行顺序。你可以将每个流视为GPU上的一个任务,并且这转载 2016-12-13 17:14:07 · 6329 阅读 · 0 评论 -
opencl杂项
opencl编程框架: 1 主机编程:包括 a 基本的数据结构:获取平台、设备信息、创建上下文,命令队列,编译、打包内核,设置内核参数(包括内存分配:为作为主机和设备之间数据传输的基本载体的cl_mem进行分配内存,分配内存是通过存在的数据的结构创建内存对象,然后调用函数clSetKernelArg将这个内存对象发送给设备),然后用以clEnqueue开头的函数,通过命令队列向设备发送执行命令。原创 2016-10-17 15:37:40 · 571 阅读 · 0 评论 -
SSE2 Intrinsics各函数介绍 及简单例子
转载地址 http://blog.csdn.net/fengbingchun/article/details/18460199 SIMD相关头文件包括//#include <ivec.h>//MMX//#include <fvec.h>//SSE(also include ivec.h)//#include <dvec.h>//SSE2(also include fvec.h)#inclu转载 2016-10-31 16:46:07 · 2845 阅读 · 0 评论 -
clCreateBuffer中cl_mem_flags参数解释
clCreateBuffer函数用来给缓存对象分配内存,创建的内存可以是global、local、private,具体看kernel中怎么样声明限定符。 这里的buffer概念是用于kernel函数计算的,只有这里分配的内存可以用于kernel函数执行,其函数签名如下:cl_memclCreateBuffer ( cl_context context,原创 2016-10-20 11:45:58 · 7112 阅读 · 0 评论 -
opencl中设备内存
地址空间限定符一般的内核代码中,里面的内核参数或声明变量时,都会有地址空间限定符 地址空间限定符,地址空间限定符的主要作用是指出数据应该保存在哪个地方 地址空间限定符有4个:全局内存:限定符:__global.保存一个设备中的数据,可读也可写,这意味着一个设备中的各个工作组、各个工作项是可以共享的, 主机和设备都可以读写访问,当主机应用程序将缓存对象传输给设备,缓存数据是存放在全局/常数空间原创 2016-10-19 11:52:29 · 2127 阅读 · 0 评论 -
opencl中工作组,工作项
首先给出工作项,工作组的概念:工作项:最简单的理解,一个循环中最里面的一次运算,称为一个工作项。工作组:是由访问相同处理资源的工作项组成,其主要优势有: a 工作组中的工作项可以访问高速内存(也叫局部内存)的同一块内存 b 工作组中的工作项可以通过栅栏(fence)和障碍(barrier)的方式来进行同步处理单元:能够支持工作组的处理资源被称为处理单元。各个工作组都可以在单个处理原创 2016-10-18 16:45:08 · 3996 阅读 · 1 评论 -
VS2010上单独编译ocl模块(opencv248)
1 单独编译opencv中ocl模块(使用的是opencv248版本),代码扣出来以后,这里假设需要的其他opencv库已经扣出来 2 使用的编译环境是VS2010,opencl的SDK是AMD-APP-SDK-v2.9-1.599.381-GA-Full-windows-32: 在百度上直接搜索该文件名应该就可以找到 3 建立一个工程,比如,工程名为ocl,,配置工程生成动态库,然后原创 2016-10-28 16:53:09 · 1015 阅读 · 0 评论 -
opencl处理的基本流程
opencl的基本处理流程就是如上面的图所示的11个步骤原创 2016-10-19 10:16:02 · 840 阅读 · 0 评论 -
CUDA流多处理器(stream multiprocessor,sm)和硬件流处理器(stream processor,sp)
SM是一种单指令多线程((single Instruction MultipleThread,SIMT)架构的处理器,类似单指令流多数据流(SIMD)的特点,含有指令发射单元,及若干个流处理器(streamingProcessor,sp)或标量处理器(Scalarproeessor,SP),特殊函数处理器(speeial Funetion Proeessor,SFU),可快速访问的共享存储器(sha转载 2017-01-10 10:45:45 · 7988 阅读 · 0 评论