cuda
文章平均质量分 87
SeventhBlue
学习再学习!
展开
-
CUDA error(803), system has unsupported display driver / cuda driver combination
显示如下,有三个版本的cuda,这三个版本不确定那个有效,可以一个个使用软连接方法挨个尝试,直到执行程序不出现上述错误为止。(其中红色框起来时软连接,即淡蓝色的是软连接)起因:在其他服务器正常运行的docker环境迁移复制到其他环境中(该服务包含paddlepaddle等第三方库),出现上述错误。首先进入docker环境,查看该docker拥有多少cuda版本。这里的操作是先删除libcuda.so.1,然后又创建其他其他库指向该libcuda.so.1的软连接。原创 2023-12-26 14:12:34 · 1984 阅读 · 0 评论 -
cuda编程可以使用的库函数
一、NPP它是NVIDIA公司针对GPU加速图像、视频、信号处理库(NPP全称是NVIDIA Performance Primitives)。事实上,NPP和IPP(Integrated Performance Primitives)库函数基本上是一一对应,不同的是一个在CPU上计算一个在GPU上计算。说一句题外话,IPP库包含了许多底层优化的函数,如果已经安装了IPP库,opencv在运行时也会自动调用。如何使用?配置好了cuda环境引入头文件即可使用。找到的中文资料nvidia官方网站原创 2020-07-06 11:04:14 · 3439 阅读 · 0 评论 -
cuda编程(7):实现LK稀疏光流算法--完整的cuda程序
一、原理:二、算法的假设(其实这样的条件比较苛刻)三、具体实现main.cc#include <opencv2/opencv.hpp>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include "cudaLK.h"#include <stdio.h>#include <time.h>#include <om.原创 2020-07-06 00:03:53 · 1012 阅读 · 4 评论 -
cuda编程(6):实现knn算法
暴力实现的复杂度:实现分析:完整的代码:Ubuntu运行命令:nvcc -o knn_cuda_with_indexes.exe knn_cuda_with_indexes.cu -lcuda -D_CRT_SECURE_NO_DEPRECATE#include <cuda.h>#include <cuda_runtime.h>#include <cuda_runtime_api.h>#include <device_laun.原创 2020-07-05 22:07:35 · 2078 阅读 · 6 评论 -
cuda编程(5):优化理论
一、纵向优化的流程与步骤一般包括如下步骤:1.1 分析分析程序的瓶颈、什么地方需要做并行、能够提供资源。不要依赖直觉,尽量借助工具:gProf VTune VerySleepy1.2 并行这个阶段考虑使用并行库(OpenMP是CPU上的并行,OpenACC)、指令、选择好算法等。1.3 优化测试程序的内存、带宽和占用率等指标是否达到硬件或者贴近硬件的极限。最重要的是,是否满足要求。1.4 部署在预算内考虑更加符合场景的硬件等设备。二、横向在考虑cpu与GPU原创 2020-07-05 19:34:41 · 383 阅读 · 0 评论 -
cuda编程(4):常见的例程
一、直方图#include <cuda_runtime.h>#include <device_launch_parameters.h>#include <stdio.h>int log2(int i){ int r = 0; while (i >>= 1) r++; return r;}int bit_reverse(int w, int bits){ int r = 0; for (int i = 0; i < bit原创 2020-07-05 17:04:03 · 922 阅读 · 0 评论 -
学习cuda编程时的疑问
1、thread,block,grid,warp,sp,sm概念以及关系答:sp:最基本的处理单元,streaming processor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理。sm:多个SP加上其他的一些资源组成一个streaming multiprocessor。也叫GPU大核,其他资源如:warp scheduler,register,shared memory等。SM可以看做GPU的心脏(对比CPU核心),register和shared ..原创 2020-07-01 11:21:26 · 279 阅读 · 0 评论 -
vs2017配置cuda和opencv环境
vs2017配置opencv环境网上的资料比较多也比较全,这里就不重点描述了。不过还是贴一个写的比较详细,图文并茂的博客。如下(建议采用临时配置方法,也就是下面博客中的方法二):VS2017配置OpenCV4.0(Win10环境)vs2017配置cuda的资料相对较少,这里重点描述。首先说碰到的情况。我这里碰到了两种情况:第一种,先装cuda后装vs2017。这样的安装的顺序,一般情况...原创 2020-04-12 23:29:54 · 3152 阅读 · 0 评论 -
cuda编程(3):kernel的加载
一、了解自己GPU的性能方式有很多,我这里是编译opencv-gpu版本后,可以输出的相关信息。相关代码和结果:#include "opencv2/opencv.hpp"#include "opencv2/core/cuda.hpp"using namespace std;using namespace cv;using namespace cv::cuda;int mai...原创 2020-04-05 17:28:04 · 953 阅读 · 0 评论 -
cuda编程(2):软硬件编程模型以及高效策略
一、相关概念多个线程组成线程块,多个线程块组成网格,网络约等于kernel。而kernel是GPU处理的最小单元,可以理解成是一个函数。如下图:CPU和GPU硬件对比:CPU和GPU编程:...原创 2020-04-05 17:01:01 · 270 阅读 · 0 评论 -
cuda编程(1):第一个程序
square.cu#include <stdio.h>__global__ void square(float* d_out,float* d_in){ int idx = threadIdx.x; float f = d_in[idx]; d_out[idx] = f * f;}int main(int argc,char** argv){ con...原创 2020-04-04 20:21:39 · 351 阅读 · 0 评论 -
并行程序学习
一、一些概念准备1、一些概念核心密集型:该类型不太依赖内存的访问速度; 存储密集型:该类型内存的访问速度高度敏感;比如,8核心8线程和8核心16线程,后者对访问速度更加敏感。将数据读取到内存这个比较耗时间,一般单线程程序就能达到I/O读取的极限。编写多线程程序时时刻注意,I/O是计算机中速度中最慢的部分;同时需要注意的是,从CPU到GPU的数据传输要通过I/O子系统的PCI express总线进行。2、调试在Unix-like系统中调试一般用gdb或者valgrind;或者古典调试法原创 2020-06-10 15:35:40 · 330 阅读 · 0 评论