cuda
Claroja
这个作者很懒,什么都没留下…
展开
-
cuda Memory Fence Functions
thread对内存读写的安全void __threadfence_block();void __threadfence();void __threadfence_system();参考:https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#memory-fence-functions...原创 2020-01-09 21:15:14 · 485 阅读 · 0 评论 -
cuda Synchronization Functions
处理线程同步void __syncthreads();等待block所有的thread都到大这个点int __syncthreads_count(int predicate);int __syncthreads_and(int predicate);int __syncthreads_or(int predicate);void __syncwarp(unsigned mask=0xf...原创 2020-01-09 21:14:53 · 242 阅读 · 0 评论 -
cuda 内置变量
gridDimblockIdxblockDimthreadIdxwarpSize原创 2020-01-09 21:14:41 · 238 阅读 · 0 评论 -
cuda 函数空间
__global__1)Executed on the device,2)Callable from the host,3)Callable from the device for devices of compute capability 3.2 以上2. 必须返回void3. 异步(asynchronous),调用后控制权返回给host__device__1.1)Exec...原创 2020-01-09 21:13:45 · 143 阅读 · 0 评论 -
cuda stream
cudaStreamCreateWithFlags()cudaStreamNonBlockingcudaStreamCreate()cudaStreamSynchronize()cudaStreamQuery()cudaDeviceSynchronize()参考:https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.h...原创 2020-01-09 21:13:19 · 207 阅读 · 0 评论 -
cuda event
cudaStreamWaitEvent()cudaEventSynchronize()cudaEventElapsedTime()cudaEventQuery()cudaEventElapsedTime()cudaEventCreateWithFlags()cudaEventDisableTiming参考:https://docs.nvidia.com/cuda/cuda-c-pr...原创 2020-01-09 21:12:53 · 249 阅读 · 0 评论 -
cuda Synchronization
cudaDeviceSynchronize()__syncthreads()参考:https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#synchronization-programming-interface原创 2020-01-09 21:12:18 · 320 阅读 · 0 评论 -
cuda Device Management
cudaSetDevice()cudaGetDevice()cudaDeviceGetAttribute()cudaGetDeviceProperties()参考:https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#device-management-programming原创 2020-01-09 21:11:51 · 144 阅读 · 0 评论 -
cuda Memory Declarations
Device and Constant Memory__device____constant__Textures & SurfacesShared Memory Variable Declarations__global__ void permute(int n, int *data) { extern __shared__ int smem[]; if (n <...原创 2020-01-09 21:11:32 · 143 阅读 · 0 评论 -
cuda 变量空间
__device__1)Resides in global memory space,全局共享grid2)Has the lifetime of the CUDA context in which it is created,整个程序为声明周期3)Has a distinct object per device,每个device唯一4)Is accessible from all the ...原创 2020-01-09 21:10:50 · 200 阅读 · 0 评论 -
CUDA TOOlkit Programming Guide K. Unified Memory Programming
在CUDA 6.0第一次被引入统一寻址“single-pointer-to-data” modelzero-copy memoryK.1.1. System RequirementsK.1.2. Simplifying GPU ProgrammingUnification of memory spaces意味着不需要再显式的在host和device之间传输数据,系统会自动完成两种方式实...原创 2020-01-09 21:10:24 · 225 阅读 · 0 评论 -
CUDA TOOlkit Programming Guide 4. Hardware Implementation
Streaming Multiprocessors (SMs)As thread blocks terminate, new blocks are launched on the vacated multiprocessors.SIMT (Single-Instruction, Multiple-Thread)4.1. SIMT ArchitectureThe multiprocessor...原创 2020-01-09 21:09:59 · 163 阅读 · 0 评论 -
CUDA TOOlkit Programming Guide 3. Programming Interface
3.1. Compilation with NVCCnvcc是简化的C++编译器(解释了为啥在编译C动态库时会丢失函数指针)3.2. CUDA Runtime3.2.1. Initialization没有显式的初始化GPU设备的函数cudaDeviceReset()会将设备的上下文销毁3.2.2. Device Memorydevice端申请linear memory 或者 CUDA...原创 2020-01-09 21:09:28 · 249 阅读 · 0 评论 -
CUDA TOOlkit Programming Guide 2. Programming Model
本章的样例来源:vectorAdd CUDA sample2.1 Kernels__global__来声明kernel函数// Kernel definition__global__ void VecAdd(float* A, float* B, float* C){ int i = threadIdx.x; C[i] = A[i] + B[i];}int main...原创 2020-01-09 21:09:00 · 133 阅读 · 0 评论 -
CUDA TOOlkit Programming Guide 1.Introduction
1.1图1,CPU和GPU的每秒钟的浮点计算对比(GFLOP/s)图2,CPU和GPU的带宽(GB/s)之所以有这么大差别是因为GPU就是为了并行计算设计的(parallel computation).GPU主要是数据计算,CPU则是数据款村和流程控制图3,GPU有更多的晶体管1.2 CUDA,并行计算平台和编程模型图4.CUDA支持多种语言图5,自动的可伸缩的架构设计...原创 2020-01-09 21:08:25 · 145 阅读 · 0 评论 -
CUDA C编程权威指南 第八章 多GPU编程
基础多GPU两种连接方式:1)多GPU通过单个节点连接到PCIe总线上2)多GPU连接到集群中的网络交换机上梁总常见的GPU通信模式1)没必要进行数据交换,GPU间没有数据共享2)有部分数据交换,GPU需要冗余数据存储第2)中方式要避免通过主机内存中转数据(从GPU复制到Ram,再复制到另一个GPU上)cudaError_t cudaGetDeviceCount(...原创 2020-01-09 21:07:45 · 1110 阅读 · 0 评论 -
cuda c cblas python numpy 向量计算性能
cuBlas2ms参考:https://docs.nvidia.com/cuda/cublas/index.html#cublas-lt-t-gt-asum// nvcc 003 sasumVec .c -lcublas# include <stdio.h># include <stdlib.h># include <cuda_runtime.h>...原创 2020-01-09 21:07:04 · 476 阅读 · 0 评论 -
CUDA C编程权威指南 第七章 调整指令级原语
将程序分为两类:IO密集型和计算密集型double value = in1 * in2 + in3乘法后紧跟加法的模式被称为乘加法,或者MAD简单的编译器会将一个MAD指令转换为:一个乘法指令和一个加法指令现代运算结构都支持MAD指令,执行一个MAD指令要比指令两个(乘法和加法)指令要快浮点指令IEEE 754标准,规定二进制浮点数据编码成3段,符号位,一个比特位;指数段(exp...原创 2020-01-09 21:06:44 · 191 阅读 · 0 评论 -
CUDA C编程权威指南 第六章 流和并发
流cuda流流分为两种类型:1)隐式声明流(空流),2)显式声明流(非空流)cudaError_t cudaMemcpyAsync(void* dst,const void* src, size_t count,cudaMemcpyKind kind,cudaStream_t stream = 0);异步拷贝版本cudaError_t cudaStreamCreate(cudaStrea...原创 2020-01-09 21:06:17 · 297 阅读 · 0 评论 -
CUDA C编程权威指南 第五章 共享内存和常量内存
共享内存是较小的片上内存,具有较低的延迟(相比全局,低20~30倍),提供更高的带宽(相比全局,10倍)block通信用于全局内存数据的缓存__shared__来申请共享变量,如果共享内存大小在编译时是为知的,则需要加载extern关键字extern __shared__ int tile[]共享内存被分为32个同样大小的内存模型,称为存储体)(bank),有32个ba...原创 2020-01-09 21:05:41 · 278 阅读 · 0 评论 -
CUDA C编程权威指南 第四章 全局内存
基础一般内存的设计:寄存器->缓存->主存->磁盘存储器GPU内存设计修饰符变量名存储器作用域生命周期float var寄存器线程线程float var[100]本地线程线程__shared__float var +共享块块__device__float var +全局全局应用程序__c...原创 2020-01-09 21:05:19 · 713 阅读 · 1 评论 -
CUDA C编程权威指南 第三章 CUDA执行模型
基础每个GPU有多个SM(streaming multiprocessor)当启动一个grid时,它的block会被分配给多个SM上执行,一个block一旦被调度到一个SM上,则这个block只会在那个SM上执行多个block可以被分配到一个SM上执行没32个线程未一组,被称为线程束(warp)block里的thread逻辑上可以并行运行,单并不是所有的thread可以同时在物理层面执...原创 2020-01-09 21:04:40 · 376 阅读 · 0 评论 -
CUDA C编程权威指南 第一章
基础CUDA(Compute Unified Device Architecture)是NVIDIA提出CPU和GPU是的PCI-Express总线相连cpuCPU则负责管理设备端的资源;CPU核心比较重,用来处理非常复杂的控制逻辑,以优化串行程序执行。CPU线程:操作系统必须交替线程使用启用或关闭CPU执行通道以提供多线程处理功能。上下文的切换缓慢且开销大gpuG...原创 2020-01-01 21:46:07 · 684 阅读 · 1 评论 -
CUDA C编程权威指南 第二章 CUDA编程模型
CUDA6.0开始 有"统一寻址"(Unified Memory)编程模型,可以用单个指针访问CPU和GPU内存,无须手动拷贝主机启动内核后,管理权立刻返回给主机(类似启动线程后,不join)C函数CUDA C函数malloccudaMallocmemcpycudaMemcpymemsetcudaMemsetfreecudaFreecuda...原创 2020-01-01 21:45:41 · 442 阅读 · 0 评论 -
cuda block grid
占坑原创 2020-01-01 21:45:15 · 133 阅读 · 0 评论 -
cuda
linux centos7 cuda安装原创 2018-07-27 14:30:07 · 489 阅读 · 0 评论 -
linux centos7 cuda安装
1 系统需求 可以执行cuda程序的gpu linux,gcc和工具链 nvidia cuda 工具箱环境需求: CentOS 7.x kernel 3.10.0 gcc 4.8.5 glibc 2.172 安装前的准备 2.1 确认有可以执行cuda程序的gpu$ lspci | grep -i nvidiahttp://developer.nvidia.co...原创 2018-07-27 14:28:19 · 6224 阅读 · 0 评论