Git 学习 (三)

本章将着重介绍如何更清晰的整理提交记录,git tag和git describe的用法,以及一些复杂的样例来熟练掌握git常用指令。

Git 学习 (二)

本章节将介绍git的一些高级操作,这些操作主要用来如何在提交树上进行移动,方便更灵活的更改分支以及提交节点。

基础命令

查询文件和子目录 ls

查询文件和子目录的最简单的命令是ls。它可以列出当前目录的文件和子目录。常用的指令有:

  • ls /path/to/directory 列出指定目录中的文件和子目录
  • ls -a列出隐藏文件和子目录
  • ls -l以详细格式列出文件和子目录,包含读写权限、创建时间等信息

前面几章主要是对参考书目的内容进行一个概括。本章将根据参考书目的内容对所学到的所有函数进行一个整理和总结,以便复习和参考。英伟达的官方网站包含了所有的CUDA函数,可参考https://developer.download.nvidia.cn/compute/DevZone/docs/html/C/doc/html/index.html

这部分是基于原子操作章节进行的高级操作介绍,即实现锁定数据结构。

原子操作只能确保每个线程在完成读取-修改-写入的序列之前,将不会有其他的线程读取或者写入目标内存。然而,原子操作并不能确保这些线程将按照何种顺序执行。例如当有三个线程都执行加法运算时,加法运行的执行顺序可以为(A + B) + C,也可以为A + (B + C)。这对于整数来说是可以接受的,因为中间结果可能被截断,因此(A + B) + C通常并不等于A + (B + c)。因此,浮点数值上的原子数学运算是否有用就值得怀疑🤔。因此在早期的硬件中,浮点数学运算并不是优先支持的功能。

然而,如果可以容忍在计算结果中存在某种程度的不确定性,那么仍然可以完全在GPU上实现归约运算。我们首先需要通过某种方式来绕开原子浮点数学运算。在这个解决方案中仍将使用原子操作,但不是用于算数本身。

本章将介绍如何分配和使用零拷贝内存(Zero-Copy Memory),如何在同一个应用程序中使用多个GPU,以及如何分配和使用可移动的固定内存(Portable Pinned Memory)。 零拷贝主机内存 上一章介绍了固定内存(页锁定内存),这种新型的主机内存能够确保不会交换出物理内存。我们通过cudaHostAlloc()来分配这种内存,并且传递参数cudaHostAllocDefault来获得默认的固定内存。本章会介绍在分配固定内存时可以使用其他参数值。除了cudaHostAllocDefault外,还可以传递的标志之一是cudaHostAllocMapped。通过cudaHostAllocMapped分配的主机内存也是固...