Nvidia-docker 在docker里安装caffe2

Introduction 发现nvidia开始搞nvidia-docker! 如果GPU是共享资源,比如在服务器上,可能不同的用户需要不同的运行环境,但是像vbox这样的重量级虚拟机又过于笨重而且也不支持GPU的直接虚拟化。这时候,共享GPU的环境配置就成了一个大问题,尤其是在配置的应用可能会产生冲突的情况下。 nvidia-docker完美解决了这个问题! docker之前也写过一些简易的入门教程: Docker学 more ...


Cuda锁页内存和零复制

Pre 为了对某一数据集进行操作,你需要将数据从主机传输到设备上、在数据集上进行操作,然后将结果传输回主机。由于是在完全串行的方式下执行的,这将导致主机和设备在一段时间内都是闲置的,白白浪费了传输能力和计算能力。本文介绍了锁页内存(Pinned Memory/PageLocked Memory)和零复制(Zero Copy)来节省甚至去掉数据传输耗费。 锁页内存(Pinned Memory/PageLocked Memory) 主机处理器支持虚拟内存系统,其中物理内存也可以标记为换出状态,然后将它更换到磁盘上,一旦需要该页了,则重新加载回 more ...

GPU寄存器(一)

Introduction 本文将简单介绍GPU中的寄存器。 寄存器 寄存器是GPU片上高速缓存, 执行单元可以以极低的延迟访问寄存器。寄存器的基本单元式寄存器文件,每个寄存器文件大小为32bit。局部存储器对于每个线程,局部存储器也是私有的。如果寄存器被消耗完。数据将被存储在局部存储器中。如果每个线程使用了过多的寄存器,或声明了大型结构体或数据,或者编译器无法确定数据的大小,线程的私有数据就有可能被分配到local memory中,一个线程的输入和中间变量将被保存在寄存器或者是局部存储器中。局部存储器中的数据被保存在显存中,而不是片上的寄 more ...

GPU 共享内存bank冲突(shared memory bank conflicts)

Introduction 本文总结了GPU上共享内存的bank conflicts。主要翻译自Reference和简单解释了课件内容。 共享内存(Shared Memory) 因为shared mempory是片上的(Cache级别),所以比局部内存(local memory)和全局内存(global memory)快很多,实际上,shared memory的延迟要比没有缓存的全局内存延迟小100倍(如果线程之间没有bank conflicts的话)。在同一个block的线程共享一块shared memo more ...