【CUDA 基础】2.1 CUDA编程模型概述(二)
【CUDA 基础】2.1 CUDA编程模型概述(二)

核函数就是在CUDA模型上诸多线程中运行的那段串行代码,这段代码在设备上运行,用NVCC编译,产生的机器码是GPU的机器码,所以我们写CUDA程序就是写核函数,第一步我们要确保核函数能正确的运行产生正切的结果,第二优化CUDA程序的部分,无论是优化算法,还是调整内存结构,线程结构都是要调整核函数内的代码,来完成这些优化的。

【CUDA 基础】2.0 CUDA编程模型概述(一)
【CUDA 基础】2.0 CUDA编程模型概述(一)

CUDA编程模型为应用和硬件设备之间的桥梁,所以CUDA C是编译型语言,不是解释型语言,OpenCL就有点类似于解释型语言,通过编译器和链接,给操作系统执行(操作系统包括GPU在内的系统),下面的结构图片能形象的表现他们之间的关系

【CUDA 基础】1.1 异构计算与CUDA
【CUDA 基础】1.1 异构计算与CUDA

GPU本来的任务是做图形图像的,也就是把数据处理成图形图像,图像有个特点就是并行度很高,基本上一定距离意外的像素点之间的计算是独立的,所以属于并行任务。 GPU之前是不可编程的,或者说不对用户开放的,人家本来是做图形计算控制显示器的,虽然对用户不可编程,但是你只要把硬件卖给了我,就由不得你了,然后就有hacker开始想办法给GPU编程,来帮助他们完成规模较大的运算,于是他们研究着色语言或者图形处理原语来和GPU对话。后来黄老板发现了这个是个新的功能啊,然后就让人开发了一套平台,CUDA,然后深度学习火了,顺带着,CUDA也火到爆炸。

【CUDA 基础】1.0 并行计算与计算机架构
【CUDA 基础】1.0 并行计算与计算机架构

CUDA想要运行起来并不困难,但是想要写得好,真的需要研究一下,某乎上各路大牛给出的建议是看CUDA的官方文档,我之前也是过了一遍文档,但是文档教会你更多的是如何写代码,而没有讲解详细的硬件结构(可能在别的文档中,我只看了编程指导),我们学习编程应该同时理解语言,编程模型,硬件执行模型,以及优化方法,单纯的学会写代码,能运行,这是培训班的节奏。

【CUDA 基础】0.0 腾讯云CUDA环境搭建
【CUDA 基础】0.0 腾讯云CUDA环境搭建

而macbook基本没啥问题,内核又是类unix,所以所有工具和linux很相似,但又更顺畅,当然价格也要高出很多。 但是,macbook上已经没有nvidia显卡了,肿么办?本文主要为不支持CUDA的电脑用户提供一个可供选择的CUDA学习环境

【概率论】3-4:二维分布(Bivariate Distribution)
【概率论】3-4:二维分布(Bivariate Distribution)

再次回忆随机变量(函数),和样本空间(集合)之间的关系,随机变量是一个函数,把样本空间上的样本点映射到实数,那么如果有两个样本空间,那么这两个集合的笛卡尔积将会组成一个新的样本空间,这个新的样本空间产生的随机变量以及随机变量的分布就是联合分布

【概率论】3-3:累积分布函数(Cumulative Distribution Function)
【概率论】3-3:累积分布函数(Cumulative Distribution Function)

当我们从试验和事件通过随机变量数学化以后,所有数学性质都是围绕随机变量展开的,其中比较关键的就是随机变量到概率的映射,离散分布(离散随机变量)和连续分布(连续随机变量)我们前两篇已经讨论过了,而且描述这两种形式的随机变量的方法也不同,离散分布通过概率函数从随机变量得到概率,连续分布通过概率密度函数结合积分来得到概率,并且概率函数和概率密度函数都有一些自己的性质,可以帮助我们分析问题。我们这节的目的是找出一个可以同时用于离散分布和连续分布的工具,来指示随机变量和概率间的关系。

【概率论】3-2:连续分布(Continuous Distributions)
【概率论】3-2:连续分布(Continuous Distributions)

继续我们的概率论,首先我们回忆一下,我们首先从试验开始,然后得到样本空间,每个试验结果都是一个样本点,对应一个概率,试验结果的个数是离散的,确定的,比如扔硬币,扔骰子,随后我们将这些结果通过一个函数映射到一个随机变量,使其更加数学化,随机变量是个函数,有时候也表示函数值,为了研究这个函数值对应的概率,我们又提出了distribution这个概念。今天我们将随机变量这个坑补齐,因为我们研究离散的随机变量时,其定义域和值域都有洞,我们今天把洞补齐。

【概率论】3-1:随机变量和分布(Random Variables and Discrete Distributions)
【概率论】3-1:随机变量和分布(Random Variables and Discrete Distributions)

上面的应用题是简单的概率分析,简单到可能有点漏洞百出,但要准确建模,我觉得我再来一百年也搞不定,但是我们应该有一个比较直观的感受,我们在此之前研究的概率,都是基于事件的,而事件是样本空间的子集,样本空间是试验结果的集合,也就是说,我们研究的最原始的变量是结果,这个结果可以是下不下雨,打不打雷,扔硬币的结果,等等,在最初研究赌博天气预报可能这些可以接受,那时候概率可能还不太属于数学,或者只能算是数数的过程,但是随着研究深入,概率论转移到数学范围,我们就必须数学化,数学化的第一步就是把这些实验结果数字化,所以我们引出了随机变量。