- 博客(46)
- 资源 (1)
- 收藏
- 关注
转载 深度学习
如何理解卷积?卷积的物理意义是:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加。对于线性时不变系统,如果知道该系统的单位响应,那么将单位响应和输入信号求卷积,就相当于把输入信号的各个时间点的单位响应加权叠加,就直接得到了输出信号。在信号与系统中,卷积就是计算线性时不变系统在信号激励下任意时刻的零状态响应;卷积操作示意图见文末;卷积操作的核心
2017-03-13 09:02:26
509
原创 Linux下安装opencv cmake 命令
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=./build -D WITH_IPP=OFF -D WITH_CUDA=OFF ../opencv-3.0.0
2017-02-28 18:44:32
936
原创 CUDA任意矩阵相乘 TLP最终版
#include #include #include #include #include #include #include "device_launch_parameters.h"//#include "common.h"using namespace std;#define BLOCK_SIZE_X 32#define BLOCK_SIZE_Y 32
2016-03-21 15:51:11
848
转载 对CUDA内核函数运行时间测量的方法
方法1:cudaEvent_t start1;cudaEventCreate(&start1);cudaEvent_t stop1;cudaEventCreate(&stop1);cudaEventRecord(start1, NULL);需要测时间的内核函数kernel;cudaEventRecord(stop1, NULL);cudaEventSynchroni
2016-03-16 14:11:03
1489
转载 显卡显存带宽的计算
bus width 是显存位宽bandwidth 才是带宽带宽(Bytes/s)=位宽(bit)x显存有效频率(Hz)/8公式:显存位宽 X显存频率(GD3X2 ,GD5要X4)再除以8就是显存带宽。显存有效频率=显存基本频率X显存类型(DDR3的乘以2,DDR5的乘以4)GTX680MX的显存基本频率是1250MHZ。详见GTX680MX的GPUZ测试图。
2016-03-15 10:14:17
6831
转载 有关FLOPS的定义与计算
FLOPS(即“每秒浮点运算次数”,“每秒峰值速度”),是“每秒所执行的浮点运算次数”(floating-point operations per second)的缩写。它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。正因为FLOPS字尾的那个S,代表秒,而不是复数,所以不能省略掉。一个MFLOPS(megaFLOPS)等于每秒一佰万(=10^6)次的浮点
2016-03-14 22:28:41
21232
转载 移除VS2005方案中的Visual SourceSafe绑定信息
有些一个解决方案带有多个项目,由于代码比较多,多人开发,所以好多vs.net下的工程是用source safe进行版本控制的。而用source safe进行版本控制需要局域网路径共享,因此好多项目换一台机器打开会出现一些问题,比如“解决方案看起来是受源代码管理,但无法找到它的绑定信 息……”之类的提示信息很多。 如何不使用其他的工具,轻松移除VS2005解决方案中的V
2015-10-10 10:56:19
535
转载 CUDA在Windows下的软件开发环境搭建
CUDA在Windows下的软件开发环境搭建 本文我们以Visual Studio 2005 为例演示CUDA的安装以及软件开发环境搭建,以及CUDA与MFC联调的实现。1.cuda安装包CUDA是免费使用的,各种操作系统下的CUDA安装包均可以在http://www.nvidia.cn/object/cuda_get_cn.html上免费下载。CUDA提供3个安装包,分别
2015-10-09 22:57:26
513
转载 CUDA开发环境配置大全
一、操作系统:(1)windows操作系统:1.windows xp:(1) win32_xp_ CUDA3.0_VS2010_配置指南-DOC:http://cudabbs.it168.com/forum.php?mod=viewthread&tid=2250&highlight=vs%2Bcuda(2) xp下
2015-10-09 20:23:11
448
转载 [综合面试] 面试70问 经典回答
1、请你自我介绍一下你自己, 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,
2015-10-09 11:09:40
1051
转载 [综合面试] 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区别。8. 内存池、进程池、线程池。(c
2015-10-09 11:08:47
428
转载 CUDA中Bank conflict冲突
其实这两天一直不知道什么叫bank conflict冲突,这两天因为要看那个矩阵转置优化的问题,里面有讲到这些问题,但是没办法,为了要看懂那个bank conflict冲突,我不得不去找资料,说句实话我现在不是完全弄明白,但是应该说有点眉目了,现在我就把网上找的整理一下,放在这边,等哪天完全弄明白了我就在修改里面的错误。 Tesla 的每个 SM 拥有 16KB 共享存储器,用于
2015-09-28 16:07:09
1483
转载 在 Visual Studio 中使用 CUDA
CUDA 的主要工具是 nvcc,它会执行所需要的程序,将 CUDA 程序代码编译成执行档 (或 object 檔) 。在 Visual Studio 下,我们透过设定 custom build tool 的方式,让 Visual Studio 会自动执行 nvcc。这里以 Visual Studio 2005 为例:首先,建立一个 Win32 Console 模式的 projec
2015-09-28 10:40:18
3178
转载 利用CUDA的矩阵乘法1 <利用 Kahan's Summation Formula 来提高CUDA 的浮点数运算精确度>
//矩阵乘法#include#include#include#include#include #define NUM_THREADS 256 bool InitCUDA(){ int count; cudaGetDeviceCount(&count); if(count == 0)
2015-09-24 13:36:54
695
转载 CUDA编程常见问题
最近初试cuda编程,作为一个新手,遇到了各种各样的问题,然后花费了大量时间解决这些匪夷所思的问题。为了避免后来人重蹈覆辙,现把自己遇到的问题总结如下。(一) cudaMalloc 初次使用该函数,感觉没有什么困难,和c语言的malloc类似。但是在具体应用中却出了一个很难找的错误,花费了很多时间。该函数使用是需要注意的就是,它分配的内存空间单位是字节,所以需要我们在使用
2015-09-24 13:36:01
582
转载 CUDA 图像数据结构
CudaImage.hstruct CudaImage{ int width; int height; float *imData; float *cuData; size_t pitch; size_t nBytes; void setPixel(int x, int y, float val); //设置(x,y)处的像素值为val float getPixel(int
2015-09-24 13:34:41
1147
转载 解决CUDA程序的黑屏恢复问题
问题描述:在运行CUDA程序时,出现黑屏,过一会儿屏幕恢复之后,出现如下界面:==============================================================================解决方案: 调整计算机的TDR值 Timeout Detection & Recovery (TDR)TDR官方解释文档链接:
2015-09-24 13:32:09
3583
转载 CUDA 类型转化
类型转换函数,函数命名格式记住,左边两个下划线,右边一个,中间是类型转换的描述,如__int2float_。 主要好处在于它的选项,其实大多数情况下,使用c内置的自动转换就可以了(相比java,c的方式不太安全,因此使用时还是应该注意溢出)。选项如下:rn:求最近的偶数,问题:5为参数时,返回的是4还是6?rz:返回接近0的数,如__float2int_[rz](5.6)==5
2015-09-24 13:31:09
2309
转载 浅谈CUDA零拷贝内存
今天看到有小伙伴提出了“零拷贝”的问题,由于本人以前用的也比较少,了解不多,因此打算好好研究一番,现做些总结。 零拷贝内存是一种特殊形式的内存映射,它允许你将主机内存直接映射到GPU内存空间。因此,因此对GPU上的内存解引用时,如果是基于GPU的,那么就获得全局内存的高速带宽;如果GPU代码读取一个主机映射变量,它会提交一个PCI-E读取事务,主机会通过PCI-E总线返回数据。
2015-09-24 13:10:21
4280
转载 error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR”
1 静态调用DLLProject | setting Link选项卡Library modules处添加“XXX.lib”然后#include "XXX.h"把XXX.lib(引入库文件),XXX.DLL(动态库文件)XXX.h(头文件)全部放到工程目录下2 动态调用DLL通过LoadLibraryGetProcAddressFreeLibr
2015-09-23 11:27:25
829
转载 VS2010 C++环境下DLL和LIB文件目录及名称修改
DLL工程,Debug版本下输出文件由basetool.dll basetool.lib 改为basetoolD.dll basetoold.lib 需设置:1、配置属性-常规-目标文件名 $(ProjectName) 加d2、配置属性-连接器-常规-输出问件 由 加d3、配置属性-连接器-高级-导入库,设置文件名$(OutDir)$ProjectName)d.lib
2015-09-23 10:33:13
1136
转载 VS2005项目中添加lib库以及代码中相对路径的问题
VS 2005项目中添加lib库 应用程序使用外部库时需要进行加载,两种库的加载本质上都是一样:提供功能和功能的定义。vs2005 c++ 项目设置外部库方法如下:1. 添加编译所需要(依赖)的 lib 文件 在“项目->属性->配置属性->连接器->输入->附加依赖项”里填写“winsock.lib”,多个 lib 以空格隔开。等同于“#pragma com
2015-09-23 10:09:15
399
转载 c/c++ 获取当前程序(EXE)所在的路径
一、1.只获得路径字串不包含文件名TCHAR szFilePath[MAX_PATH + 1]={0};GetModuleFileName(NULL, szFilePath, MAX_PATH);(_tcsrchr(szFilePath, _T('\\')))[1] = 0; // 删除文件名,只获得路径字串CString str_url = szFilePath;
2015-09-22 20:36:10
1320
转载 C++中相对路径与绝对路径以及斜杠与反斜杠的区别
文件路径 正斜杠和反斜杠正斜杠,又称左斜杠,符号是"/";反斜杠,也称右斜杠,符号是"\"。文件路径的表示可以分为绝对路径和相对路径:1、绝对路径表示相对容易,例如pDummyFile =fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb"); 给出了从盘符开始的全部路径,这里需要注意的是“\”要用双斜线"\\",vc工程默认访
2015-09-22 20:31:15
330
转载 在vs2005中使用静态链接库和动态链接库
静态链接库:首先,静态链接库的使用需要库的开发者提供生成库的.h头文件和.lib文件。生成库的.h头文件中的声明格式如下: extern "C" 函数返回类型 函数名(参数表); 在调用程序的.cpp源代码文件中如下: #include "..\lib.h" #pragma comment(lib,"..\\debug\\libTest.lib")
2015-09-22 15:09:32
2040
转载 VC2005创建和加载.DLL文件的方法
转自:http://blog.sina.com.cn/s/blog_6a0cb8bc0100uzhn.html动态链接库(DLL)简介 动态链接库(DLL)一直都是windows OS的基础.动态链接库通常都不能直接运行,也不能接受消息.他们是一些独立的文件,其中包含能被可执行程序或其他DLL调用来完成某项工作的函数,只有在其他模块调用动态链接库中的函数时,他才发挥作用。静态
2015-09-22 14:34:10
1339
转载 深入理解virtual,abstract class,interface
转自:http://blog.youkuaiyun.com/nxh_love/article/details/17297907C++虚函数与JAVA中抽象函数比较1:java中没有虚函数的概念,但是有抽象函数的概念,用abstract关键字表示,java中抽象函数必须在抽象类(abstract class)中,而且抽象 函数不能有函数体,抽象类不能被实例化,只能由其子类实现抽象函数,如果某个抽象类
2015-09-22 14:26:20
422
转载 VS 2005 创建DLL工程,并进行调用与调试例子
转自:http://blog.youkuaiyun.com/zwb8848happy/article/details/78315671 例子目标在Window下,学会使用Visual Studio 2005创建简单的DLL工程,以及对DLL提供的接口进行调用与调试。 2 DLL工程2.1 创建工程打开VS2005,并创建工程。如图所示。
2015-09-22 13:38:21
598
转载 cuda创建dll工程
正文:CUDA的DLL开发其实和一般的C/C++的DLL开发是一个原理,当然,DLL的开发就有几种方式,这里就讲最容易理解的,也最直接的方式,然后把代码放出来。大家自己可以琢磨一下其它的方式。1. 创建DLL用我的Wizard 可以创建一个DLL项目工程:选择DLL项目,然后可以看到下面的项目文件结构:其中sampe_cu.h文件为头文件,stdaf
2015-09-22 09:23:17
1203
转载 Opencv中并行图像处理环境的搭建和配置
这一章我们将介绍如何从头搭建并配置一个用于图像处理的VC++并行计算环境。所用操作系统为Windows 7的32位系统,编程环境为VS2005,CUDA版本为3.0,OpenCV版本为1.0。内容包括建立一个基于VS2005的简单的对话框工程,安装和使用OpenCV,以及安装配置CUDA环境。需要注意,支持CUDA的VisualStudio版本为2005~2010,低版本的开发环境不支持。
2015-09-21 10:31:36
1455
转载 深入理解GPU Architecture
作为System Inside系列中的一篇,为了完成它我费了不少力气,因为GPU INSIDE的资料实在太难找了,有很多东西都是NVIDIA(本篇文章以GT200架构为实例)内部资料,没有详细公布,在网上找到的也是些零碎的东西,经过一番周折还是在脑子中形成了一个比较系统的印象,防止这个印象转瞬即逝,赶紧将它记下来。 我决定从CUDA入手,慢慢的深入到core architecture层面
2015-09-18 11:11:52
1992
转载 cuda编程 总结
Cuda并行编程学习时候需注意的一些基本概念1、Cuda的编程风格:spmp(单程序多数据)的并行编程风格。2、在多GPU下,cudaMemcpy()不能用于GPU之间的数据复制3、cudaMemcpy()传输的数据类型有四种:(1) 主机-主机(2) 主机-设备(3) 设备-主机(4) 设备-
2015-09-18 11:09:43
472
转载 GPU 性能指导: 内存性能
转自:http://blog.chinaunix.net/uid-11640640-id-2139803.htmlGPU 性能指导: 内存性能一:内存指令 1:内存指令包括任何从shared,local,globl内存中读或者写指令,仅当存取自动变量时才有可能对local 进行读写; 2:每个时钟周期可有8个内存操作,但是当存取local和globl 时,还有400个clock c
2015-09-17 10:47:59
599
转载 visual profiler 调试cuda并行程序:根据行号定位出错行
用visual profiler 调试cuda程序,如下图:如图所示,显示某些行的访存问题,如328,329,330等。根据行号到cuda代码中,找到相应的行,查看,分析。如此,毕竟不方便。设想,如果想vs中调试程序那样(双击行号可以定位到出问题的行)就好了。只需如下更改:在编译cuda程序的时候,加上-lineinfo 参数即可。如下图所示:编译之后的exe文件,通过nvvp
2015-09-17 10:34:45
632
转载 CUDA优化策略
CUDA程序优化CUDA程序优化应该考虑的点:精度:只在关键步骤使用双精度,其他部分仍然使用单精度浮点以获得指令吞吐量和精度的平衡; 延迟:需要首先缓冲一部分数据,缓冲的大小应该可以保证每个内核程序处理的一批数据能够让GPU慢负荷工作; 计算量:计算量太小的程序使用CUDA很不合算;当需要计算的问题的计算密集度很低的时候,执行
2015-09-17 09:53:02
1104
转载 CUDA优化(重要)
1. memory coalescing,保证内存融合。因为global memory在CC为1.x上是按照half wrap进行访问读写的,而在2.x上是按照wrap进行访问读写的。在显存中,有多个存储器控制器,负责对显存的读写,因此,一定要注意存储器控制器的负载均衡问题。每一个存储器控制器所控制的那片显存中的地址空间称为一个分区。连续的256Byte数据位于同一个分区,相邻的另一组256Byt
2015-09-16 15:47:07
888
转载 64位win7+opencv3.0.0+cuda6.5配置过程
64位win7+opencv3.0.0+cuda6.5配置过程作;1.安装之前确认自己的显卡是否支持CUDA,,并;2.从http://www.nvidia.cn/;3.从https://developer.nvi;4.从http://opencv.org/dow;5.从;二、配置CMAKE;由于未重新编译的OpenCV不支持CUDA,所以;1.点击cmake
2015-09-16 14:37:39
810
转载 CUDA DLL 开发流程
前言:很久没写CUDA相关的文章了,其实也不是忙,只是零碎的事情比较多,不能抽出完整的时间写一些东西,在http://blog.youkuaiyun.com/openhero 上写本来想写一些列CUDA编程的文章,不过现在看来,很多朋友还是只是处在开发的初级阶段,一些基本的编程环节还需要讲解一下,其实像lib编程,dll编程,都不是CUDA的内容,这个只是windows,linux系统编程的内容,只要有时间,
2015-09-16 09:22:10
469
转载 Kahan's Summation Formula原理—它是如何处理大数吃小数的
Kahan's Summation Formula原理—它是如何避免大数吃小数的Kahan求和公式原理: 首先,这个算法就是用来求和的,求a1+a2+a3+...为什么不直接相加呢,而要用Kahan求和公式呢,这个算法的用武之地在哪呢,一一道来 kahan求和算法能避免大数吃小数的情况。 大数吃小数是什么意思呢?举个例子,我们用两
2015-09-10 16:47:54
8674
1
转载 cublas矩阵乘
cublas矩阵乘神经网络中有大量的矩阵乘法运算,使用cuda来进行矩阵的乘法运算,可以大大提高神经网络的训练速度,于是学着使用cuda,由于NVIDIA已经提供了非常好的矩阵运算库cublas,所以应该是学着使用cublas,在使用中遇到了一些问题,记录一下,方便以后的查询。cublas中执行矩阵乘法运算的函数主要是:cublasSgemm /*用来处理单精度矩阵,也就是fl
2015-09-10 13:43:24
655
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人