cuda
文章平均质量分 58
Kelvin_Ngan
Make things easy
展开
-
VS支持cuda源码高亮
让visual studio支持cuda源文件的高亮原创 2024-01-19 11:46:38 · 469 阅读 · 0 评论 -
Cuda __CUDA_ARCH__宏
__CUDA_ARCH__宏原创 2022-12-14 15:05:18 · 1755 阅读 · 1 评论 -
Cuda printf
cuda打印信息原创 2022-12-14 14:35:21 · 492 阅读 · 0 评论 -
Cuda个别库函数的兼容性 - shuffle\数学库\原子
cuda库函数兼容性原创 2022-12-14 12:01:09 · 645 阅读 · 0 评论 -
cuda数学库函数提示error : calling a __host__ function
max函数识别为标准库里的了error : calling a host function("std::max ") from a device function(“func”) is not allowed查了在线问答,明明有这个函数啊?原来是cuda版本太老了,文档要看对应版本的,查看方法是在线文档页面的右上角“older”,点进去找到自己的版本,看这个章节CUDA Math API...原创 2021-08-10 10:38:15 · 1707 阅读 · 0 评论 -
CUDA runtime vs CUDA driver
参考Programming Guideruntime角度cuda runtime封装了底层的C API,这层C API就是cuda driver API(驱动层),我们应用程序里可以调用runtime api(cuda_api_runtime.h),也可以调用driver api(cuda.h)driver api相比runtime api多了两样东西:(1)context,一个context对于device来说等价于一个host端(即cpu)的进程(2)module,对device的动态链接库原创 2021-07-08 08:45:27 · 1748 阅读 · 0 评论 -
关于cv::cuda::GpuMat与PtrStepSz
一般host端用GpuMat,在.cu里定义kernel的caller函数时形参用PtrStepSz(或者PtrStep),kernel函数也可以使用PtrStepSz,从而实现host to device的参数传递PtrStepSz无非就是GpuMat的阉割版,但仔细看GpuMat的源码(sources\modules\core\src\cuda\gpu_mat.cu),只有 ::data是在device端分配的,即通过cudaMallocPitch分配显存,而其它成员如rows, cols, step原创 2021-06-04 13:58:39 · 2396 阅读 · 0 评论 -
CUDA使用C++标准库
见programming guide,https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#restrictionsH.4.8. Standard LibraryStandard libraries are only supported in host code, but not in device code, unless specified otherwise.device code不能使用标准库的数据结构来传参.原创 2021-06-04 11:12:36 · 721 阅读 · 0 评论 -
CUDA在Visual Studio无法编译抛出error MSB3721和nvcc fatal
平台:VS2013+CUDA 8.0执行“编译”可以通过,但”执行“重新编译”或者“清理”会报错:nvcc fatal : Could not set up the environment for Microsoft Visual Studio using ‘C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/x86_amd64/…/…/…/VC/bin/amd64/vcvars64.bat’error MSB3721: 命令“原创 2021-06-03 16:21:41 · 2229 阅读 · 0 评论 -
[CUDA]检查系统是否存在支持CUDA的GPU
参照cuda官方sample:1_Utilities\deviceQuery,使用的函数是cudaGetDeviceCount int dev_num = 0; cudaError_t error_id = cudaGetDeviceCount(&dev_num); if (error_id != cudaSuccess) { printf("cudaGetDeviceCount returned %d\n-> %s\n", (int)error_id, cudaGetErrorS原创 2021-04-22 11:15:17 · 1925 阅读 · 0 评论 -
[CUDA]fatal error C1083: 无法打开包括文件: “cuda_runtime.h”: No such file or dir
fatal error C1083: 无法打开包括文件: “cuda_runtime.h”: No such file or dir右键“项目”-“生成依赖项”-“生成自定义”-检查cuda一项是否打钩再看项目属性“C/C++”-“附加包含目录”-“编辑”-“从父级或项目默认设置继承”打钩...原创 2020-05-19 11:03:30 · 6407 阅读 · 10 评论 -
cuda编译错误
error LNK2019: 无法解析的外部符号 cudaDeviceSynchronize error LNK2019: 无法解析的外部符号 cudaConfigureCall error LNK2019: 无法解析的外部符号 cudaSetupArgument error LNK2019: 无法解析的外部符号 _cudaRegisterFatBinary error LNK2019: 无原创 2017-12-20 10:56:24 · 3212 阅读 · 3 评论 -
cudaErrorInvalidSymbol错误
调用cudaMemcpyFromSymbol 出现cudaErrorInvalidSymbol原因: cudaError_t cudaMemcpyFromSymbol ( void* dst, const T& symbol, size_t count, size_t offset = 0, cudaMemcpyKind kind = cudaMemcpyDeviceToHost )参原创 2018-01-23 17:34:17 · 1937 阅读 · 0 评论 -
CUDA总结:纹理内存
来源:《CUDA_Runtime_API》、《CUDA_C_Programming_Guide-V8.0》纹理内存和表面内存(surface memory)实质上是全局内存的一个特殊形态,全局内存被绑定为纹理内存(表面内存),对其的读(写)操作将通过专门的texture cache(纹理缓存)进行,其实称为纹理缓存更加贴切。 纹理缓存的优势:纹理缓存具备硬件插值特性,可以实现最近邻插值和线性原创 2017-01-04 14:35:25 · 17945 阅读 · 8 评论 -
cuda texture不是模板
原因1:cudaBindTexture2D 或 cudaBindTextureToArray的参数有误cudaError_t CUDARTAPI cudaBindTexture2D(size_t *offset, const struct textureReference *texref, const void *devPtr, const struct cudaChann原创 2018-01-25 09:33:29 · 2718 阅读 · 2 评论 -
CUDA错误:nvcc fatal : Don't know what to do with
编译错误 nvcc fatal : Don’t know what to do with xxxx.cuh原因:xxxx.cuh必须与相应的xxxx.cu同名,即xxxx部分相同,否则无法编译原创 2018-01-17 21:05:17 · 3365 阅读 · 1 评论 -
编译和调试CUDA程序
编译CUDA程序平台:vs2012+cuda 8.0 from:CUDA Toolkit document-Installation Guide Windows-Compiling CUDA Programs1、创建新的项目: 新建项目-CUDA 8.0 Runtime 2、在现有项目中添加cuda代码 项目-属性-生成自定义-勾选CUDA 8.0 项目-添加-新建项-NVI原创 2016-11-30 21:20:43 · 8555 阅读 · 1 评论 -
CUDA C中定义全局变量的注意事项
C\C++中,可以通过在头文件中声明全局变量,或extern某个变量,使编译单元以外可以访问该全局变量。相对的,通过static限制全局变量只能用于所述的编译单元。 但在CUDA C中,千万要注意不能随便外露全局变量。这里的全局变量可能为常量内存、纹理内存、全局内存、共享内存。不同的内存由不同的特性,只有吃透了其原理,才能避免错误使用。 亲身踩坑:常量内存。 为了方便编码,将多个.cu文件中...原创 2018-04-10 14:12:50 · 3611 阅读 · 0 评论 -
cuda invalid address error
kernel函数参数不允许传引用,重要事情说三次:不允许传引用!不允许传引用!不允许传引用!为何cuda不加入编译时报错?这坑掉两次了,查了一晚上...原创 2018-04-23 22:10:47 · 768 阅读 · 1 评论 -
【opencv】+【cuda c】 编译相关
项目代码是opencv和cuda c混合编程,编译平台 vs2012+cuda 8.0+opencv 3.1.01、编译为静态库,编译引用该库的测试代码时,代码报错:无法解释的外部符号,均为cuda c编写的函数接口。可能除了引用静态库的lib本身,还需要引用cuda c的源码文件,那这样还编译库干嘛?编译动态库是可以。2、opencv到cuda c的参数传递,通过cv::cuda::Gp...原创 2018-05-07 09:53:03 · 554 阅读 · 1 评论 -
CUDA 错误unspecified launch failure
代码没问题,问题出在windows解决办法:window登录管理员用户,打开NSIGHT ,设置option的Microsoft display driver 的WDDM TDR enable为False即可,因为该选项导致kernel运行时间超过指定值会中断。...原创 2018-07-02 18:09:34 · 21485 阅读 · 10 评论 -
【cuda编译】error LNK2019: 无法解析的外部符号
vs不认cu文件,导致无法编译里面定义的函数 这是因为建立项目时在配置好cuda环境前添加了cu文件,此时编译器不认这些cu文件。 解决办法:把所以cu文件从项目中删除,配置好项目的cuda环境,再添加cu文件...原创 2018-08-30 11:26:25 · 4770 阅读 · 0 评论 -
如何用opencv的GPU模块实现算法
转自:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/gpu/gpu-basics-similarity/gpu-basics-similarity.html转载 2014-11-10 15:56:21 · 3813 阅读 · 0 评论 -
GTX1060 vs tesla m6
分别用于不同邻域,没有什么可比性。这里为了比较pascal和maxwell的差别。A:tesla m6官方说明B:GTX1060官方说明 指标 GTX 1060 (6G) TESLA M6 gpu clocks (MHz) 1506/1708 950/1051 cuda cores 1280 1536 memory clocks(MHz) 8108 23原创 2017-06-26 10:20:34 · 2201 阅读 · 0 评论 -
CUDA总结:共享内存
共享内存是片上内存(on-chip),所以速度比一般的显存快很多,如(全局内存、常亮内存、纹理内存)。共享内存是gpu中,带宽仅次于寄存器的存储器。共享内存是有限的,与L1 Cache公用一块on-chip内存,用户可以调整L1 cache与共享内存的大小组合。在on-chip内存的基础上,共享内存还实现了“并行访存”:共享内存被划分为大小相等的n个部分(每个部分称为一个bank),同一时刻的n个访原创 2017-01-11 21:01:10 · 3404 阅读 · 2 评论 -
NVIDIA显卡查看compute capabiliy
https://en.wikipedia.org/wiki/CUDA 这里有不同版本CUDA compute capabiliy对应支持的显卡型号programming guide也有简单介绍原创 2016-11-29 16:07:34 · 1258 阅读 · 0 评论 -
为什么opencv用GPU实现比用CPU实现的慢?
打算通过OpenCV的GPU模块优化现有代码的运行效率,怀抱着美好愿望开始了代码的改写工作。改写的过程并不顺利,遇到了不少问题。例如,gpu模块提供的接口非常坑爹,相当一部分不支持浮点类型(像histogram、integral这类常用的都不支持);又如,遇到阈值判断的地方,就必须传回cpu处理,因为gpu函数都是并行处理的,每改写完一个算法模块,就测试一下运行效率,有的时候是振奋人心,有的时候则原创 2014-12-08 15:36:54 · 20879 阅读 · 8 评论 -
CUDA总结:Unified Memory
nvidia从cuda 6开始支持unified memory(统一内存寻址),目前更新至cuda 8,进一步加强了该特性。CUDA 6 introduced Unified Memory, which creates a pool of managed memory that is shared between the CPU and GPU, bridging the CPU-GPU divid翻译 2016-11-29 15:41:46 · 4158 阅读 · 3 评论 -
CUDA 技巧与经验 关于block、thread
http://tech.it168.com/a2009/1116/809/000000809882.shtml在使用CUDA进行GPGPU计算时,global + shared的黄金组合在速度上远远超过了texture,只有在以下两种情况下使用texture:1.需要图像输出时2.需要反复随机访问的,但内容不变的大块内容,如索引表,查找表 其他时候尽量使用glob转载 2015-11-03 15:07:18 · 2953 阅读 · 0 评论 -
【PPT】OpenCV on a GPU
http://on-demand.gputechconf.com/gtc/2013/webinar/opencv-gtc-express-shalini-gupta.pdfPPT作者:Shalini Gupta, Shervin Emami, Frank Brill -NVIDIAModern GPU:http://nvlabs.github.io/moderngpu/转载 2015-11-03 10:39:10 · 893 阅读 · 0 评论 -
CUDA相关概念
参考:CUDA C Programming Guide深入浅出CUDA编程【CUDA学习】GPU硬件结构什么是CUDA:. CUDA®: A General-Purpose Parallel Computing Platform and Programming Model这是NVIDIA对CUDA的定义,通用的并行计算平台和编程模型three key a转载 2015-10-09 11:28:10 · 804 阅读 · 0 评论 -
【学习OpenCV】gpu模块里面的page-locked
为什么要研究这个东西:把数据设置为registerPageLocked原创 2014-11-19 11:03:36 · 2095 阅读 · 2 评论 -
How do I get started with CUDA?
http://nvlabs.github.io/moderngpu/faq.html#gettingstartedGetting startedHow do I get started with CUDA?The best place to get started with CUDA is the official Programming Guide. Th转载 2015-11-03 10:48:01 · 573 阅读 · 0 评论 -
【学习OpenCV】OpenCV的GPU模块(CUDA)的配置和例程(含OpenCV 3.0的说明)
需要注意的是,在所有使用GPU模块的函数之前,最好需要调用函数gpu::getCudaEnabledDeviceCount,如果你在使用的OpenCV模块编译时不支持GPU,这个函数返回值为0;否则返回值为已安装的CUDA设备的数量。还有一点就是使用GPU模块,需要在用CMake编译OpenCV时使其中的WITH_CUDA和WITH_TBB的宏生效,为ON。原创 2014-08-27 10:50:51 · 17372 阅读 · 0 评论 -
CUDA编译报错
error LNK2019: 无法解析的外部符号 cudaGetDeviceProperties附加依赖项-添加 cudart.lib原创 2016-12-02 22:32:08 · 1624 阅读 · 0 评论 -
CUDA总结:线程网络和线程分配
线程网络cuda将线程抽象为grid、block、thread三个层次,构成两种视图:视图1:一个device就是一个grid,grid的最小元素是block,一个grid由若干个block组成。 cuda通过一个dim3的变量描述一个grid里面的block的排列方式。一个grid可以是一维、二维、三维矩阵。struct __device_builtin__ dim3{ unsigne原创 2016-12-12 21:55:15 · 6072 阅读 · 0 评论 -
CUDA总结:合并访问coalesced
传输延迟(latency)在host端和device端之间存在latency,数据通过PCI-E总线从CPU传输给GPU,我们必须避免 频繁的host、device间数据传输,即使是最新的PCIE 3.0 x16接口,其双向带宽也只有32GB/s在device内部也存在latency,即数据从gpu的存储器到multi-processor(SM)的传输。 访问一次全局内存,将耗费400~60原创 2016-12-12 23:03:12 · 10324 阅读 · 1 评论 -
CUDA总结:同步
from cuda runtime api -2.API synchronization behavior The API provides memcpy/memset functions in both synchronous and asynchronous forms, the latter having an “Async” suffix. This is a misnomer as ea翻译 2016-12-06 14:55:18 · 1347 阅读 · 0 评论 -
CUDA总结:CUBLAS
CUBLAS_Library.pdf函数命名规则:类型<type> <t> Meaningfloat, ‘s’ or ‘S’, real single-precisiondouble, ‘d’ or ‘D’, real double-precisioncuComplex, ‘c’ or ‘C’, complex single-precisioncuDoubleComplex, ‘z’ or原创 2017-01-11 19:41:50 · 3118 阅读 · 0 评论 -
CUDA总结:Occupancy
Occupany 的定义:活动的warp数量与最大数量的比值。 意义:GPU的硬件利用率,利用率越高不一定性能就越高,但如果利用率很小,性能肯定不会好。这很好理解,一条马路,利用率太高了,如拥堵,说明车流量太大马路容量(承载能力)不足够了;利用率太低了,则没有充分利用到交通资源,此时无法体现马路的承载能力。同一时刻,GPU的每个SM运行着若干个block,sm会根据block的线程数为其分配寄存器原创 2017-01-11 15:05:37 · 4021 阅读 · 2 评论