迁移linux系统到新硬盘

Introduction 本文记录的是将我的debian9 从原来的闪迪120G SSD迁移到三星 250G SSD的过程。 1. 准备工作 做好数据备份! 所有的操作均在u盘的livecd下进行的。 2. 查清楚分区号 通过在root用户下fdisk -l查清楚目前的分区号。 比如,我的闪迪是/dev/sdb,有两个分 more ...


uwsgi配置https以及python2无法使用supervisor

Introduction 前面的nginx配置https一文,说明了如何在nginx上配置https,本文则作为补充,说明了在pyhon flask 或者django等web框架下,怎么配置https,以及nginx 和uWSGI的搭配。 1. 配置https 理论上,直接在nginx的站点配置文件中,声明well-known文件夹的特殊访问权限即可: more ...

Cuda锁页内存和零复制

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

解读CUDA汇编PTX(一) [翻译]

Introduction 本文系翻译文章Demystifying PTX Code。 在我最近的文章里,我展示了怎样从CUDA和OpenCL代码生成PTX文件,本文则将重点解读PTX文件里的复杂指令。 我们还是使用向量加法的代码 代码片段: https://gist.github.com/FindHao/394b2f069788e5a4c80a069638a47e1c 原作者的代码项目: 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 ...

nginx配置https

1. Introduction 前两天收到letsencrypt的邮件,说https快到期了,抓紧更新一下。我记得用linux的crontab开启自动更新https证书了,怎么还会收到?浏览器看了下证书日期,的确快要到期了,发现是nginx没有重启,证书缓存没有更新。 本文记录了使用LNMP搭建的博客添加https的过程,也可以参看uwsgi的配置。 more ...

Linux下Pycharm配置pyqt5开发环境

Introduction PyQt是Python语言的GUI编程解决方案之一。可以用来代替Python内置的Tkinter。其它替代者还有PyGTK、wxPython等。与Qt一样,PyQt是一个自由软件。 在Linux下使用pycharm写python是最舒服的。本文介绍了Linux下pycharm qt5开发环境的配置。 安装pyqt # 直接安装所有包即可,不大 more ...