0%

2019年7月15日 上午10:45

GPU

  1. 将线程组织成数组去处理
  2. 具体看: GPU并行

MPI

  1. MPI已经对硬件进行了抽象,抽象为了整齐的数组,他的处理单元是communicator中的每个rank(preocess)
  2. 一个communicator可以理解成一个数组,而rank(process)就是数组元素,不同的communicator就是不同的数组

MP

  1. 简单到不需要使用数据结构(数组)去组织

2019年7月15日 上午9:16

复习方法:

  1. 学会思考方式,以矩阵相乘贯穿知识点
  2. 整理出来的两个pdf要自己的看,其中还有一些笔记在pdf中

总结:

下面三个点,分别取自3.4.5节的GPU课件,是GPU的核心。其中难点是有两个思维角度

  1. ::线程组织成数组去理解处理,你就发现这样简单的多::
    1. 万变不离其中,还是基本的数据结构
  2. 了解并利用好硬件结构,从输出的存储、读取的角度去优化

课件整理:

其中矩阵相乘的例子贯穿着三节课件,也是这些知识最好的直观体现

  1. GPU的硬件结构整理.pdf
  2. GPU矩阵相乘理解GPU编程的核心[三个pdf的精华、矩阵相乘的三个阶段].pdf
  3. [缪青海]并行计算

具体:

  1. 这里最最关键的需要关心的问题:::一个线程对应于那个(哪些)数据,所有的线程就可以将工作完成::
  2. 线程的分级去优化
    1. 数组去组织线程这种资源
      1. 有多少线程?数组的大小
      2. 我们如何取到特点的线程?数组的下标就好比线程的编号
    2. grid->block->warp->thread
  3. ::都是从硬件结构角度考虑、是客观现实引起的,我们需要做的是适应,从而利用好他们::
    1. 内存的分级去优化
      1. global->shared->register
    2. 针对wrap,从硬件结构的角度去优化wrap的速度

2019年7月4日 下午7:33
Nvida官方学习资料:CUDA Toolkit Documentation

一个重要的概念:

SPMD:single program, multiple data

  1. 在课程中,老师讲的全部都是SPMD,这个默认容易被忽略
  2. 我理解下来,就是把大数据分解成一块一块的,将他们分到不同的thread上同时计算。这里重要的是:这些分解出来的数据之间没有前后的依赖关系,并且处理方式还是一模一样

GPU的内存模型:

  1. 里面涉及到了Grid、Block、Thread这几个分配任务的模块
  2. 还涉及到了Global、Shared、Reign不同级别的内存
  3. 一个问题来理解这个内存模型:
    1. ::<2,1>和<1,2>:::即使最终他们有相同的Thread数,但是他们会由于采用不同级别的内存,执行的效率也会有很大的不同
    2. 使用不同级别的内存通过关键字来声明就可以了

2019年7月2日 下午1:01
如何通俗易懂地介绍 Gaussian Process? - 知乎

Kernel Functions for Machine Learning Applications – César Souza

机器学习里的 kernel 是指什么? - 知乎

什么是Gaussian process? —— 说说高斯过程与高斯分布的关系 - 知乎

高斯过程 - 维基百科,自由的百科全书

看得见的高斯过程:这是一份直观的入门解读 | 机器之心

如何通俗易懂地介绍 Gaussian Process? - 知乎

A Visual Exploration of Gaussian Processes

从数学到实现,全面回顾高斯过程中的函数最优化 | 机器之心

http://www.gaussianprocess.org/gpml/chapters/RW.pdf

系统的讲解:

A Visual Exploration of Gaussian Processes
An intuitive guide to Gaussian processes - Towards Data Science
Gaussian Processes – EFavDB

理解高斯过程:

A Gaussian process is a probability distribution over possible functions.

  1. 高斯过程是一个分布
  2. 分布的元素不再表示一个值,而是函数

如果利用高斯过程进行回归预测的过程

drawing samples from this distribution
对高斯过程的采样,可以对函数值进行回归预测

2019年7月1日 下午5:25

理论(数学角度)

  1. 多维高斯分布是如何由一维发展而来的? - 知乎
    1. 多维高斯分布是如何由一维发展而来的? - 王赟 Maigo的回答 - 知乎
    2. 多维高斯分布是如何由一维发展而来的? - 信陵君魏无忌的回答 - 知乎
  2. 多元正态分布 - 维基百科,自由的百科全书

应用角度:

二维高斯模糊和可分离核形式的快速实现 - zxpddfg的专栏 - CSDN博客

  1. 从数学角度解释了为什么将二维高斯拆分为两个单维高斯可以快速实现
  2. 但是这里篇文章中默认:二维高斯的x y 维度是相互独立的,所以拆分二维高斯的时候才会只有两项

2019年6月25日 下午2:18

MP和GPU

  1. 编程框架:都是在串行的框架下指定并行区域,然后加上各种指令
  2. 并行的对象都是线程,而不是process
  3. 都可以理解成共享内存(但GPU涉及到与CPU进行同步的数据)

MPI

  1. 他不像是一种并行,理解成在分布式内存下的一种消息传递机制更好理解
  2. 说MPI是并行的原因是:多个处理器同时执行,消息的接/发是可能并不是同步的,而是异步的。