![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
cuda
Ring__Rain
这个作者很懒,什么都没留下…
展开
-
下载各版本cuda,下载以前版本的cuda
https://developer.nvidia.com/cuda-toolkit-archive原创 2021-10-10 20:38:53 · 557 阅读 · 0 评论 -
GPU之间传递数据
cudaStream_t s; cudaStreamCreate(&s); Mat imgData = imread("D:\\LYB\\P1\\747.bmp", 0), dstData = imgData.clone(); dstData.setTo(0); cuda::setDevice(0); cuda::GpuMat m_gpuCurrImg(imgData); cuda::setDevice(1); cuda::GpuMat m_gpuDstImg(dstData..原创 2021-07-14 10:53:36 · 368 阅读 · 0 评论 -
通过cuda获取当前GPU的详细信息
#include <cuda_runtime.h>#include <device_launch_parameters.h>#include<stdio.h>int main(){ cudaError_t cudaStatus; int num; cudaDeviceProp prop; cudaStatus = cudaGetDeviceCount(&num); printf("deviceCount := %d\n",num); for(.原创 2021-04-25 15:55:51 · 767 阅读 · 1 评论 -
GPU之间的数据传递
cudaStream_t s; cudaStreamCreate(&s); Mat imgData = imread("D:\\LYB\\P1\\747.bmp", 0), dstData = imgData.clone(); dstData.setTo(0); cuda::setDevice(0); cuda::GpuMat m_gpuCurrImg(imgData); cuda::setDevice(1); cuda::GpuMat m_gpuDstImg(dstData);..原创 2020-12-25 16:06:45 · 718 阅读 · 0 评论 -
为什么Tesla显卡那么贵
摘自:https://www.waso.com.cn/news_548.html原创 2020-12-16 13:55:52 · 1205 阅读 · 0 评论 -
cuda工程报错,或不稳定
error : invalid nontype template argument of type "const _GUID *"等等,因为工程有问题,用cuda8.0建的,要更改为10.1;或者啥,在装10.1之前,已经有这个工程了;新建一个同样的工程,就可以解决,不过新建有的时候挺麻烦的。...原创 2020-12-11 09:11:39 · 375 阅读 · 0 评论 -
CUDA8.0工程改成cuda10.1
最好还是新建工程,如果在之前的工程上改,会有很多的问题,稳定性也不好原创 2020-12-10 18:08:49 · 288 阅读 · 1 评论 -
CUDA Samples: image normalize(mean/standard deviation)
以下CUDA sample是分别用C++和CUDA实现的通过均值和标准差对图像进行类似归一化的操作,并对其中使用到的CUDA函数进行了解说,各个文件内容如下:关于均值和标准差的计算公式可参考: http://blog.csdn.net/fengbingchun/article/details/73323475funset.cpp: #include "funset....原创 2018-08-16 10:28:49 · 1361 阅读 · 0 评论 -
CUDA Samples: matrix multiplication(C = A * B)
以下CUDA sample是分别用C++和CUDA实现的两矩阵相乘运算code即C= A*B,CUDA中包含了两种核函数的实现方法,第一种方法来自于CUDA Samples\v8.0\0_Simple\matrixMul,第二种采用普通的方法实现,第一种方法较快,但有些复杂,速度上约为第二种的1.3倍,并对其中使用到的CUDA函数进行了解说,各个文件内容如下:funset.cpp: ...原创 2018-08-16 10:30:08 · 342 阅读 · 0 评论 -
CUDA基础介绍
一、GPU简介1985年8月20日ATi公司成立,同年10月ATi使用ASIC技术开发出了第一款图形芯片和图形卡,1992年4月ATi发布了Mach32图形卡集成了图形加速功能,1998年4月ATi被IDC评选为图形芯片工业的市场领导者,但那时候这种芯片还没有GPU的称号,很长的一段时间ATi都是把图形处理器称为VPU,直到AMD收购ATi之后其图形芯片才正式采用GPU的名字。NVIDIA...原创 2018-08-16 10:37:08 · 659 阅读 · 0 评论 -
CUDA Runtime API 汇总
1. cudaChooseDevice: select compute-device which best matches criteria;2. cudaDeviceGetAttribute: returns information about the device;3. cudaDeviceGetByPCIBusld: returns a handle t...原创 2018-08-16 10:44:30 · 2530 阅读 · 0 评论 -
CUDA Samples
本文简要介绍samples里的项目的主要功能。简介Simple Reference 基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念. Utilities Reference 演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。 Graphics Reference 图形化示例展现的是 CUDA, OpenGL, ...原创 2018-08-30 18:02:25 · 1565 阅读 · 0 评论 -
CUDA快速傅里叶变换(cuFFT)阅读笔记(一)
CUDA为开发人员提供了多种库,每一类库针对某一特定领域的应用,CUFFT库则是CUDA中专门用于进行傅里叶变换的函数库,这一系列的文章是博主近一段时间对cuFFT库的学习总结,主要内容是文档的译文,其间夹杂一些博主自己的理解。初学CUDA,理解有误之处在所难免,阅读本篇文章的读者如若发现请不吝指正。1. 简介 cuFFT是的全称是CUDA Fast Fourier Trans...原创 2018-09-17 16:57:27 · 9428 阅读 · 0 评论 -
获取相对性能强的显卡
// This function returns the best GPU (with maximum GFLOPS)inline int gpuGetMaxGflopsDeviceId(){ int current_device = 0, sm_per_multiproc = 0; int max_perf_device = 0; int devic...原创 2018-10-16 16:06:19 · 328 阅读 · 0 评论 -
tensorflow版本与cuda cuDNN版本对应使用
tensorflow-gpu v1.9.0 | cuda9.0 | cuDNN7.1.4可行 | 备注:7.0.4/ 7.0.5/ 7.1.2不明确tensorflow-gpu v1.8.0 | cuda9.0 | cuDNN 不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4tensorflow-gpu v1.7.0 | cuda9.0 | cuDNN 不...原创 2018-12-08 16:00:26 · 642 阅读 · 1 评论 -
Windows 10安装TensorFlow-gpu1.4 及CUDA8.0,cuDNN6.0,搞定了,包含安装方法和下载路径
Windows 10安装TensorFlow-gpu1.4 及CUDA8.0,cuDNN6.0,搞定了先说下我的最终版本:Python 3.5.3;tensorflow-gpu==1.4.0 ;CUDA Toolkit 8.0 GA1 (Sept 2016), Online Documentation;cuDNN v6.0(Download cuDNN v6.0 (April ...原创 2018-12-08 16:16:38 · 379 阅读 · 0 评论 -
获取当前显存容量
头文件#include <cuda.h>#include <cuda_runtime.h>#include <device_launch_parameters.h>调用函数cuda::setDevice(0);size_t free;size_t total;CUresult uRet = cuMemGetInfo(&free,...原创 2019-01-07 09:58:08 · 1354 阅读 · 0 评论 -
Visual studio integration failed
Visual studio integration failed 中文资料没有看到很好的解决这一问题的方法,本片博文希望给各位朋友提供一种较为靠谱的解决Windows CUDA安装过程中出现的错误:Visual studio integration failed的解决方法。参考Visual studio integration failed 主要可以分为两个步骤:Step ...原创 2019-01-14 15:48:55 · 1300 阅读 · 0 评论 -
cuda版本、显卡驱动下载
cuda:https://developer.nvidia.com/cuda-toolkit-archive显卡:https://www.nvidia.cn/Download/index.aspx?lang=cn原创 2019-06-25 09:45:26 · 2632 阅读 · 0 评论 -
cupy将numpy提升很多倍
转载请标明出处:http://blog.csdn.net/jiangjunshow就其自身来说,Numpy 的速度已经较 Python 有了很大的提升。当你发现 Python 代码运行较慢,尤其出现大量的 for-loops 循环时,通常可以将数据处理移入 Numpy 并实现其向量化最高速度处理。但有一点,上述 Numpy 加速只是在 CPU 上实现的。由于消费级 CPU 通常只有 ...原创 2019-09-10 21:42:35 · 925 阅读 · 0 评论 -
CUDA多个流的使用
CUDA中使用多个流并行执行数据复制和核函数运算可以进一步提高计算性能。以下程序使用2个流执行运算:[cpp] view plain copy#include "cuda_runtime.h" #include <iostream> #include <stdio.h> #include <math.h> #define ...原创 2018-06-04 19:49:44 · 1109 阅读 · 0 评论 -
CUDA从入门到精通(大神之作)膜拜
CUDA从入门到精通(零):写在前面 在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示器的并行计算对于追求速度的应用来说无疑是一个理想的选择。还有不到一年毕业,怕是毕业后这些技术也就随毕业而去,准备这个暑假开辟一个CUDA专栏,从入门到精通,步步为营,顺便分享设计的一些经验教训,希望能给学习CU...原创 2018-07-27 13:22:50 · 32038 阅读 · 3 评论 -
cuda 数组元素个数大于线程数目
关键是更新tidtid += blockDim.x * gridDim.x; (加上所有线程的数量,以便对其他数组元素接着更新)__global__ void add(int *d_arr, int *d_brr, int *d_crr, int arrLength) { int tid = blockDim.x * blockIdx.x + threadIdx.x; ...原创 2018-07-26 13:41:39 · 582 阅读 · 0 评论 -
cuda初始化代码
#include <stdio.h>#include <cuda_runtime.h>bool CUDA_initial(void){ int i; int device_count; if( cudaGetDeviceCount(&device_count) ) { printf(" There is zero device beyond 1....原创 2018-07-24 09:30:51 · 590 阅读 · 0 评论 -
opencv中cuda模块的数据结构简易用法
/*-------------------------------------------------------------------------里面比较重要的是 InputArray;getGpuMat();PtrStepSzb; 这么几个数据类型和函数--------------------------------------------------------------...原创 2018-06-12 15:07:05 · 1330 阅读 · 0 评论 -
CUDA atomic原子操作
CUDA的原子操作可以理解为对一个变量进行“读取-修改-写入”这三个操作的一个最小单位的执行过程,这个执行过程不能够再分解为更小的部分,在它执行过程中,不允许其他并行线程对该变量进行读取和写入的操作。基于这个机制,原子操作实现了对在多个线程间共享的变量的互斥保护,确保任何一次对变量的操作的结果的正确性。原子操作确保了在多个并行线程间共享的内存的读写保护,每次只能有一个线程对该变量进行读写操作,一个...原创 2018-06-04 20:09:48 · 206 阅读 · 0 评论 -
CUDA页锁定内存(Pinned Memory)
对CUDA架构而言,主机端的内存被分为两种,一种是可分页内存(pageable memroy)和页锁定内存(page-lock或 pinned)。可分页内存是由操作系统API malloc()在主机上分配的,页锁定内存是由CUDA函数cudaHostAlloc()在主机内存上分配的,页锁定内存的重要属性是主机的操作系统将不会对这块内存进行分页和交换操作,确保该内存始终驻留在物理内存中。GPU知道页...原创 2018-06-04 20:05:46 · 2362 阅读 · 0 评论 -
CUDA流(Stream)
CUDA流表示一个GPU操作队列,该队列中的操作将以添加到流中的先后顺序而依次执行。可以将一个流看做是GPU上的一个任务,不同任务可以并行执行。使用CUDA流,首先要选择一个支持设备重叠(Device Overlap)功能的设备,支持设备重叠功能的GPU能够在执行一个CUDA核函数的同时,还能在主机和设备之间执行复制数据操作。支持重叠功能的设备的这一特性很重要,可以在一定程度上提升GPU程序的执行...原创 2018-06-04 19:54:53 · 330 阅读 · 0 评论 -
显卡、显卡驱动、显存、GPU、CUDA、cuDNN
显卡Video card,Graphics card,又叫显示接口卡,是一个硬件概念(相似的还有网卡),执行计算机到显示设备的数模信号转换任务,安装在计算机的主板上,将计算机的数字信号转换成模拟信号让显示器显示出来。显卡是计算机的标配之一,计算机要显示图像就必须安装显卡。普通计算机的显卡一般是集成在主板上的。显卡驱动显卡驱动是显卡跟计算机连接的桥梁,可以让计算机识别到GPU硬件,是必须正确安装...原创 2018-06-04 19:48:30 · 351 阅读 · 0 评论 -
CUDA8.0安装和vs2015配置
1、新建空项目2、添加test.cu3、右键项目---生成依赖项--生成自定义---CUDA8.0打钩4、右键test.cu---属性--选择CUDA C/C++5、包含目录C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\includeC:\ProgramData\NVIDIA Corporation\CUDA Samples\v8....原创 2018-05-16 17:53:59 · 1819 阅读 · 2 评论 -
OpenCV中GPU模块(CUDA)函数
The OpenCV GPU module is a set of classes and functions to utilize GPU computational capabilities. It is implemented using NVIDIA* CUDA* Runtime API and supports only NVIDIA GPUs. 1. getCudaEnabl...原创 2018-05-21 16:58:35 · 2227 阅读 · 0 评论 -
我的CUDA学习之旅1——大图像分块处理程序(包括求均值,最大值等)
引言在我的第一篇文章中我简单介绍了CUDA以及我的一些个人学习见解,在本文中我将开始正式开始CUDA实践之旅,众做周知CUDA目前应用的领域十分广泛,它能把一些普通的CPU代码提速几十倍甚至几百倍。在本人所从事的图像处理领域,在一些大图像的处理上(4K以上图像),仅仅依靠CPU进行计算已经完全无法满足工程项目所要求的运行时间,这时候我们就需要利用CUDA对代码进行加速。本文以一个8000*1000...原创 2018-06-05 14:35:33 · 878 阅读 · 0 评论 -
我的CUDA学习之旅2——图像形态学腐蚀、膨胀CUDA实现
引言由于上两周杂七杂八的事情比较多加上自己写的算法有些问题,一直改bug。。。。没时间继续写博客,今天开始补上博客。从这篇文章起,开始将一些较为典型的OpenCV算法通过CUDA进行实现,本文实现的为图像处理中最为常见的形态学腐蚀以及膨胀,由于本文目的在于算法移植后的验证,故在图片的选择上用小图像作为输入的示例图像,有不当之处欢迎评论或私信~任务要求输入一张图片,将其转为灰度图后,通过...原创 2018-06-05 14:36:14 · 1555 阅读 · 0 评论 -
我的CUDA学习之旅3——图像灰度化、灰度直方图统计
引言在大部分的图像处理程序中,其中必不可少的一步就是对传入的彩图进行灰度处理,将三个通道的RGB图片转化为单通道的Gray图,而对于灰度图进行直方图统计同样是观察检测图像特征的常用方法。在OpenCV中已经有成熟的封装函数进行上述功能的实现,本文主要讲述CUDA实现,加快对大图像的处理速度。任务要求输入一张彩色图片,通过CUDA将其转换为灰度图,并对灰度图进行灰度直方图统计。实现思路关于彩色图片灰...原创 2018-06-05 14:36:45 · 935 阅读 · 0 评论 -
gridDim等内置变量,#pragma unroll对循环进行展开
内置变量1.gridDim 此变量的类型为 dim3,包含网格的维度。2. blockIdx此变量的类型为 uint3,包含网格内的块索引。3.blockDim此变量的类型为 dim3,包含块的维度。4. threadIdx此变量的类型为 uint3,包含块内的线程索引。5.warpSize此变量的类型为 int,包含以线程为单位的 warp 块...原创 2018-07-24 09:22:58 · 902 阅读 · 0 评论 -
CUDA硬件运行的大致原理
并发与并行的区别:“并行”是指无论从微观还是宏观,二者都是一起执行的,就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。而“并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行,这就好像两个人用同一把铁锨,轮流挖坑,一小时后,两个人各挖一个小一点的坑,要想挖两个大一点得坑,一定会用两个小时。从以上本质不难看出,“并发”执行...原创 2018-07-24 09:20:02 · 1054 阅读 · 0 评论 -
__device__ __global__ __host__ __shared__
CUDA编码对于函数部分前缀1. __device__使用 _device_ 限定符声明的函数具有以下特征:n 在设备上执行;n 仅可通过设备调用。2. __global__使用 _global_ 限定符可将函数声明为内核。此类函数:n 在设备上执行;n 仅可通过主机调用。3. __host_...原创 2018-07-24 08:39:12 · 7589 阅读 · 0 评论 -
opencv中常用cuda函数总结
bitwise_and()bitwise_not()bitwise_or()bitwise_xor()compare()divide():除exp()log()max()min()multiply()threshold():二值化,但要指定设定阈值blendLinear():两幅图片的线形混合calcHist()createBoxFilter ():创建一个规范化的2D...原创 2018-06-01 14:48:15 · 5616 阅读 · 0 评论 -
OpenCV_CUDA 中GpuMat数据结构
一 、GUPMat 概述 在使用OpenCV_CUDA 编程中会遇到GpuMat数据结构,该数据结构是GPU内存容器。 在GUP中,类GpuMat是存储2D数据。类GpuMat 的特点:(1)它的数据不是连续的,在每一行末尾额外填充数据;(2)它包含下面数据项: --data: GPU内存指针数据开始; --step:距离之间的数据是两个连续的行; ...原创 2018-06-05 17:57:24 · 4884 阅读 · 2 评论 -
我的CUDA学习之旅5——OTSU二值算法(最大类间方差法、大津法)CUDA实现
引言最近在做医疗设备相关的项目,故在项目中大量用到了各类图像分割的算法,为了在图像中分割出特定目标,用到的算法可以有很多,比如阈值分割,多通道分割,边缘分割以及一些前沿的组合分割。而对大多数图像来说,分割的一大难点是将待识别的目标与背景分离,其中一种有效简单的方法就是二值化(并不都有效),本博客试着将二值化算法中的OTSU算法进行cuda改写。任务要求输入一张8bit的灰度图,通过CUDA在GPU...原创 2018-06-05 14:38:13 · 1326 阅读 · 3 评论