x-jeff blog

Make progress every day.

【C++并发编程】【2】【Hello, world of concurrency in C++!】Why use concurrency?

并发的优缺点

【C++并发编程】系列博客为参考《C++ Concurrency IN ACTION (SECOND EDITION)》一书,自己所做的读书笔记。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Why use concurrency? 在应用程序中使用并发有两个主要原因: 关注点分离(separation of concerns) 性能(perform...

【CUDA编程】【13】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.10.Unified Virtual Address Space】

Unified Virtual Address Space

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Unified Virtual Address Space 当应用程序以64位进程运行时,host和所有device(计算能力2.0以上)将共享一个单一的地址空间。通过CUDA API调用在该虚拟地...

【CUDA编程】【12】【3.Programming Interface】【3.2.CUDA Runtime】【3.2.9.Multi-Device System】

Device Enumeration,Device Selection,Stream and Event Behavior,Peer-to-Peer Memory Access,Peer-to-Peer Memory Copy

【CUDA编程】系列博客参考NVIDIA官方文档“CUDA C++ Programming Guide(v12.6)”。 本文为原创文章,未经本人允许,禁止转载。转载请注明出处。 1.Device Enumeration host系统可以包含多个device。以下代码展示了如何枚举这些device、查询它们的属性并确定支持CUDA的device数量。 1 2 3 4 5 6 7...

【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内存的功能...