
CUDA
CUDA学习
AplusX
专注于混合现实(MR)/计算机图形学(CG)/计算机视觉(CV)相关研究
展开
-
基于CUDA实现立方体贴图 (Cubemaps) 转换为全景图 (Equirectangular Panorama)
在立方体贴图空间内发射光线(视线),计算球面光线(视线)会击中哪个面的哪个像素的像素值,最终生成Equirectangular全景图。InitSceneTexture():先获取Cubemaps并将其绑定在GPU中void InitSceneTexture() { char* path = "./Cubemaps"; myEnvironment.setFileRoute(path); myEnvironment.getImageSource(); int sceneLength = myEn原创 2021-07-27 14:19:54 · 2785 阅读 · 1 评论 -
CUDA常用数学运算符及数据结构重定义
#pragma once#include <math.h>#include "cuda_runtime.h"#define HOD __host__ __device__inline HOD float dev_atan2f(float y, float x){ return atan2(y, x);}inline HOD float dev_sqrt(float x){ return sqrt(x);}inline HOD float dev_cos(flo原创 2021-07-11 17:20:01 · 793 阅读 · 0 评论 -
Error: “incorrect inclusion of a cudart header file”
CUDA header files with such qualifiers should ONLY be included in *.cu files.原创 2020-09-04 15:09:24 · 655 阅读 · 0 评论 -
CUDA make_float3和make_float4
三维rgb、坐标或者四维rgba存储的时候可以用这两个使用示例:float3 rgb = make_float3(rgb.x, rgb.y, rgb.z);float4 rgba = make_float4(rgb, rgba.w);make_float4static __inline__ __host__ __device__ float4 make_float4(float x, float y, float z, float w){ float4 t; t.x .原创 2020-09-04 13:55:55 · 3311 阅读 · 3 评论 -
CUDA页锁定内存(Pinned Memory)
对CUDA架构而言,主机端的内存被分为两种,一种是可分页内存(pageable memroy)和页锁定内存(page-lock或 pinned)。可分页内存是由操作系统API malloc()在主机上分配的,页锁定内存是由CUDA函数cudaHostAlloc()在主机内存上分配的,页锁定内存的重要属性是主机的操作系统将不会对这块内存进行分页和交换操作,确保该内存始终驻留在物理内存中。GPU知...转载 2019-10-18 11:20:20 · 439 阅读 · 0 评论 -
CUDA之单thread单block&多thread单block&多thread多block
用简单的立方和归约来举例://单thread单block#include <stdio.h>#include <stdlib.h>#include <cuda_runtime.h>#define DATA_SIZE 1048576int data[DATA_SIZE];//产生大量0-9之间的随机数void GenerateNumbers(i...原创 2018-11-11 16:56:29 · 504 阅读 · 0 评论 -
CUDA存储器模型
存储器模型有:•Register•Local•shared•Global•Constant•Texture•Host memory寄存器与Local memory•对每个线程来说,寄存器都是线程私有的--这与CPU中一样。如果寄存器被消耗完,数据将被存储在本地存储器(localmemory)。•Localmemory对每个线程也是私有的,但是localmemory中的数...原创 2018-11-11 18:48:01 · 849 阅读 · 0 评论 -
CUDA+OpenCV实现光线追踪(有无constant)
常量内存是NVIDIA提供的一个64KB大小的内存空间,它的处理方式和普通的全局内存和共享内存都不一样,是有cuda专门提供的。线程束的概念:线程束是指一个包含32个线程的集合,在程序中的每一行,线程束中的每个线程都将在不同的数据上执行相同的指令。因此,常量内存的作用是,能够将单次内存的读取操作广播到每个半线程束(即16个线程),所以如果在半线程束中的每个线程都从常量内存的相同地址上读取数...原创 2018-11-23 09:21:35 · 1703 阅读 · 1 评论 -
CUDA硬件架构知识
本博文是根据中科大信息学院谭立湘老师的课件加上自己的理解整理出来的************************************************************************************1.NVIDIA的GPU显卡历程:Tesla->Fermi->Kepler->Maxwell->Pascal->Volta-...原创 2018-09-28 12:00:25 · 3210 阅读 · 2 评论 -
CUDA中grid、block、thread、warp与SM、SP的关系
首先概括一下这几个概念。其中SM(Streaming Multiprocessor)和SP(streaming Processor)是硬件层次的,其中一个SM可以包含多个SP。thread是一个线程,多个thread组成一个线程块block,多个block又组成一个线程网格grid。现在就说一下一个kenerl函数是怎么执行的。一个kernel程式会有一个grid,grid底下又有数个bloc...转载 2018-09-28 10:44:56 · 13218 阅读 · 6 评论 -
CUDA学习1
CUDA编目录:1.什么是CUDA2.为什么要用到CUDA3.CUDA环境搭建4.第一个CUDA程序5. CUDA编程5.1. 基本概念5.2. 线程层次结构5.3. 存储器层次结构5.4. 运行时API5.4.1. 初始化5.4.2. 设备管理5.4.3. 存储器管理5.4.3.1. 共享存储器5.4.3.2. 常量存储器5.4.3.3...转载 2018-07-13 13:58:56 · 627 阅读 · 0 评论 -
CUDA学习2
CUDA简介CUDA是并行计算的平台和类C编程模型,我们能很容易的实现并行算法,就像写C代码一样。只要配备的NVIDIA GPU,就可以在许多设备上运行你的并行程序,无论是台式机、笔记本抑或平板电脑。熟悉C语言可以帮助你尽快掌握CUDA。CUDA编程CUDA编程允许你的程序执行在异构系统上,即CUP和GPU,二者有各自的存储空间,并由PCI-Express 总线区分开。因此,我们应该先...转载 2018-07-13 13:52:48 · 335 阅读 · 0 评论 -
Intro to Parallel Programming CUDA-第二单元
一、parallel communication patterns 并行通信模式Map:映射,在特定的位置读取和写入。Gather:收集,从多个不同的位置读入,写入一个位置。Scatter:分发,写入多个位置。Transpose转置结构数组缩写为AOS,数组结构缩写为SOA转置运算是指任务重新排序内存中的数据元素Stencil模板能够在输出结果为每一个元素生...原创 2018-07-23 22:25:28 · 360 阅读 · 0 评论 -
Intro to Parallel Programming CUDA-第一单元
一、GPU典型工作流程:1.CPU在GPU上分配存储2.CPU把某个输入数据从CPU复制到GPU上3.CPU调用某些内核来监视这些在GPU上处理这个数据的内核4.CPU把结果从GPU复制回CPU二、Kernel<<<grid of blocks,block of threads>>>(……)核函数是GPU每个thread上运行的程...原创 2018-07-23 10:47:04 · 520 阅读 · 0 评论 -
CUDA SDK cuda-opengl代码分析
//////////////////////////////////////////////////////////////////////////////// Copyright 1993-2015 NVIDIA Corporation. All rights reserved.//// Please refer to the NVIDIA end user license agre...原创 2018-08-10 15:15:59 · 799 阅读 · 0 评论 -
CUDA Samples目录
简介Simple Reference 基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念. Utilities Reference 演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。 Graphics Reference 图形化示例展现的是 CUDA, OpenGL, DirectX 之间的互通性 Imaging R...原创 2018-08-02 21:44:45 · 7197 阅读 · 1 评论 -
CUDA软件系统知识
本博文是根据中科大信息学院谭立湘老师的课件加上自己的理解整理出来的************************************************************************************NVIDIA在2007年推出CUDA这个统一计算架构CUDA的基本思想是支持大量的线程级并行,并在硬件中动态地调度和执行这些线程 CUDA软件体系...原创 2018-10-01 20:50:17 · 1372 阅读 · 0 评论 -
CUDA学习3-Grid&Block
掌握如何组织线程是CUDA编程的重要部分。CUDA线程分成Grid和Block两个层次。 由一个单独的kernel启动的所有线程组成一个grid,grid中所有线程共享global memory。一个grid由许多block组成,block由许多线程组成,grid和block都可以是一维二维或者三维,上图是一个二维grid和二维block。这里介绍几个CUDA内置变量: blo...转载 2018-07-17 18:51:17 · 5963 阅读 · 1 评论