cuda unified memory

在Pacsal及更新的GPU中,managed memory在调用cudaMallocManaged()分配以后, 不一定在device memory上实际malloc。或者说,page和page table直到被GPU或CPU访问以后才被创建。page可以在任意时间迁移到任意memory,driver会采用启发算法来维护数据局部性和防止过多的page faults产生。 Reference https://developer.nvidia.com/blog/unified-memory-cuda-beginners/ more ...

cuda程序运行时间

写了两个脚本来获得通过nsys profile出来的cuda程序执行时间。 1. runnsys.sh runnsys.sh working_dir program args 第一个参数working_dir是设置后面你的程序在哪里跑。比如有些程序是编译在build/,但是实际input和work的目录在另外的目录下。这个参数设置为实际程序运行的目录即可。同时,reports也将生成在这个目录。 后面是正常运行cuda程序时的命令和参数。 more ...


Spack基础

Spack 是一个跨平台的包管理器,可以用来安装和编译不同版本的软件,使得他们不与系统环境冲突并且多个版本可以共存。 1. 下载和安装 spack无需安装,下载完成后,直接调用/spack/bin/下的可执行文件即可。 git clone https://github.com/spack/spack.git export SPACK_ROOT more ...


浮点数的二进制存储 2

之前的那篇转载浮点数的存储转载内容比较粗糙。今天又花了点时间试了个具体的例子。部分内容摘自参考。 以32bit浮点数 0.123456789的存储为例,通过在线进制转换获得其16进制表示为 3DFCD6E9 more ...

Linux命令记录

批量替换所有文件内容中的字符串 find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' 批量将文件重命名成自增序号模式 ls more ...

浮点数的存储[转载]

本文主要内容系转载。 标准 在 IEEE-754 规范[39]中,浮点数由三部分组成:符号位、指数部分和尾数部分(标准化表示方式)。单精度浮点数一般是用 4 字节(32bit)来表示。 不同标准的单精度浮点数、半精度浮点数表示方式[39] 数据类型 符号位 指数部分 尾数部分 more ...

CUDA 10 Memory Transaction的一个现象

1. Introduction 近日,在写一些microbenchmark分析cuda程序访存问题时,发现了一个有趣的问题。目前尚未找到合理的解释,先记录下来以待后续分析。 实验平台为:NVIDIA GTX950,sm5.0,maxwell架构。 2. Global Memory A memory "request" is an instruction which accesses memory, and a "transaction" is the movement of a unit of da more ...

CUDA Sanitizer Samples使用

1. Introduction CUDA 10.1推出了新的API:The Compute Sanitizer API,提供了更底层更丰富的Instrumentation API。 https://docs.nvidia.com/cuda/sanitizer-docs/SanitizerApiGuide/index.html 目前相关文档还比较简单,本文记录下官方Samp more ...