x-jeff blog

Make progress every day.

【CUDA编程】【11】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.8.Asynchronous Concurrent Execution】

Concurrent Execution between Host and Device,Concurrent Kernel Execution,Overlap of Data Transfer and Kernel Execution,Concurrent Data Transfers,Streams,Programmatic Dependent Launch and Synchronization,CUDA Graphs,Events,Synchronous Calls

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Asynchronous Concurrent Execution CUDA将以下操作视为独立任务,这些任务可以并发执行: 在host上的计算。 在device上的计算。 从host...

【CUDA编程】【10】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.7.Memory Synchronization Domains】

Memory Fence Interference,Isolating Traffic with Domains,Using Domains in CUDA

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Memory Fence Interference 先介绍两个概念:内存屏障(memory fence)和内存刷新(memory flush)。 内存屏障的主要目的是控制内存访问的顺序,确保不同线...

【CUDA编程】【9】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.6.Page-Locked Host Memory】

Page-Locked Host Memory,Portable Memory,Write-Combining Memory,Mapped Memory

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Page-Locked Host Memory 运行时提供了几种函数,允许使用页锁定(page-locked,也称pinned)host内存(和通过malloc()分配的常规的可分页host内存不同...

【CUDA编程】【8】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.5.Distributed Shared Memory】

Distributed Shared Memory

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Distributed Shared Memory 详见:Thread Block Clusters。 下面是一个使用分布式共享内存实现直方图计算的例子。 1 2 3 4 5 6 7 8 9 1...

【CUDA编程】【7】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.4.Shared Memory】

Shared Memory

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Shared Memory 使用__shared__内存空间说明符来分配共享内存。 在预期上,共享内存会比全局内存快得多,其可以最大限度的减少CUDA block对全局内存的访问。 下面是一个不...

【CUDA编程】【6】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.3.Device Memory L2 Access Management】

L2 cache Set-Aside for Persisting Accesses,L2 Policy for Persisting Accesses,L2 Access Properties,L2 Persistence Example,Reset L2 Access to Normal,Manage Utilization of L2 set-aside cache,Query L2 cache Properties,Control L2 Cache Set-Aside Size for Persisting Memory Access

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Device Memory L2 Access Management 当CUDA kernel反复访问global内存中的某个数据区域时,这类数据访问可以被认为是持久的(persisting)。另一...

【CUDA编程】【5】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.2.Device Memory】

Device Memory

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Device Memory CUDA编程模型假定系统由host和device组成,每个都有自己独立的内存。kernel在device内存中运行,因此运行时提供了分配、释放和复制device内存的功能...

【CUDA编程】【4】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.1.Initialization】

CUDA Runtime,Initialization

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.CUDA Runtime CUDA runtime在cudart库中实现。该库可以以静态链接(通过cudart.lib或libcudart.a)或动态链接(通过cudart.dll或libcudar...

【CUDA编程】【3】【3.Programming Interface】【3.1.Compilation with NVCC】

Compilation Workflow,Binary Compatibility,PTX Compatibility,Application Compatibility,C++ Compatibility,64-Bit Compatibility

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Compilation with NVCC 所有包含CUDA代码的源文件都需要使用nvcc编译器进行编译。nvcc是NVIDIA提供的专门用于编译CUDA程序的编译器。 2.Compilation...

【程序是怎样跑起来的】第11章:硬件控制方法

I/O控制器,I/O地址,IRQ,DMA,VRAM

博客为参考《程序是怎样跑起来的》一书,自己所做的读书笔记。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.应用和硬件无关? 👉第11章热身问答: 在汇编语言中,是用什么指令来同外围设备进行输入输出操作的? IN指令和OUT指令。在x86系列CPU用的汇编语言中,通过IN指令来实现I/O输入,OUT指令来实现I/O输出。 ...