CUDA[8]

我还在学CUDA编程(四)——内存管理及访问模式

内存管理 内存分配和释放 CUDA 编程模型中存在 Host 和 Device 两个异构系统,每个系统都有相对独立的内存空间。 在 Host 代码中,可以使用下面的函数分配 Device 全局内存: cudaError_t cudaMalloc(void **devPtr, size_t count

Ubuntu显卡驱动以及CUDA、cuDNN、TensorRT的安装

卸载原有显卡驱动(如有) 如果当前系统存在显卡驱动,直接安装新的显卡驱动可能会报错。建议先卸载掉旧驱动。 # 先查看驱动以及版本安装情况 ls /usr/src | grep nvidia # 进入安装目录,用驱动自带卸载命令卸载 cd /usr/bin ls nvidia-* sudo nvid

我还在学CUDA编程(四)——内存的层次结构

CUDA 内存模型 存储器的类型有两种: 可编程:显式控制哪些数据存放。 不可编程:不能决定数据存储位置。 在 CPU 层次结构中,一级缓存(L1 Cache)和二级缓存(L2 Cache)都是不可编程的。 可编程的存储器类型包括: 寄存器 共享内存 本地内存 常量内存 纹理内存 全局内存 下图为上

继续学CUDA编程(三) —— CUDA执行模型(下)

并行归约问题 先解释一下什么是 归约(Reduction),归约是将某个计算问题变换为另一个问题的过程。在 CUDA 运算中,在向量中执行满足交换律和结合律的运算,被称为归约问题。每次迭代计算方式都是相同的(归),从一组多个数据最后得到一个数(约)^{[1]}。比如当给定 N 个数值,求其 SUM/

继续学CUDA编程(三)——CUDA执行模型(上)

这一部分是 CUDA 的核心部分,涉及到了硬件和程序的执行模型。 CUDA 的执行层级是 Grid → Block → Warp → Thread,而真正被硬件调度的基本单位其实是 Warp,而不是 Thread。 然后必须先记住 CUDA 的约定: threadIdx.x → 列(col) thr

“我还要学CUDA编程!”(二)——CUDA编程模型

CUDA 编程结构 在 GPU 上执行的函数称为 CUDA 核函数(Kernel Function),核函数会被 GPU 上多个线程执行。典型的 CUDA 程序遵循如下模式: 把数据从 CPU 内存(Host)拷贝至 GPU 内存(Device) 调用该 Kernel 函数,对 Device 中的数

”我要学CUDA编程!“ —— 来自一个废物的自白

写在前面(废话,请跳过) 本来自己的脑子里是不存在 CUDA 编程这个东西的,没错,就是压根儿没听说过。 之所以了解到这个东西,是因为最近开始做 AVM(Around View Monitor),或者说 SVS(Surrounding View System),利用 4 个广角相机,实现车辆周围的

Jetson - ARM架构下的 torch 和 torchvision 的安装 (支持CUDA)

This post is outdated and may no longer reflect current best practices. 写在前面 ARM 架构下的 torch 安装比较烦人,不是麻烦,而是烦人。 网络上很多教程虽然写着 Jetson 的 torch 安装,但基本都是用 PyP