- 博客(172)
- 收藏
- 关注
原创 interconnection
ON)ON2)ON2)N2ONlogN)OlogN)ON)ON)ON)OsqrtN))OlogN)ONlogN)OlogN。
2025-01-07 12:58:02
594
原创 Ch1:古今的manipulation与仿真、ROS和Drake介绍
且模拟接触行为的质量和性能也大大提高(这方面的模拟主要是靠复杂的geometry queries和stiff (measure-)微分方程),虽然目前在控制方程的数值求解方面仍有改进空间,但现今的求解器已经足够好用了。各章节按照整个manipulation任务中不同的building blocks组件进行讲述,涵盖计算机视觉、动力学和控制学等的领域知识,本课仅介绍各领域与manipulation最相关的idea。且支持可重复的确定性仿真。会讲相关的机器人硬件、仿真这些硬件的细节,以及几何和动力学基础。
2024-12-09 18:56:27
1083
原创 主存储器组织
2nTATMCTMCTA4M×4211×211×4512×512×8256K×82Mb16×8128812816MB212×212×88×4096327683×64b192b××。
2024-11-11 17:07:59
1120
原创 LangSplat和3D language fields简略介绍
LangSplat相关技术拆分解释:3dgs:伟大无需多言SAM:The Segment Anything Model,是图像分割领域的foundational model,已经用在很多视觉任务上(如图像修复、物体追踪、图像编辑等),以及用在3D领域中,后者相关工作如:Seal:将包含SAM的VFMs用于点云分割SA3D:将SAM泛化到3D物体本篇:使用SAM得到物体掩码以及3个hierarchical semantics,进而训练一个3D language field3D Lang
2024-10-19 05:16:13
1375
原创 计算机体系结构量化研究方法 -- Pipelining: Basic and Intermediate Concepts
那么延迟槽的内容是什么呢?最好是执行一些无论分支成功失败都要执行的指令,最好与分支并不相干。
2024-10-15 08:16:32
841
原创 李飞飞 - World Labs
要超越当今模型的能力,我们需要具备空间智能的AI,它能够在三维空间和时间中对世界进行建模,并对物体、场所和交互进行推理。目的是开发出能够利用图像和其他数据对三维世界做出决策的软件,从而构建所谓的“大型世界模型”:“将AI模型从2D像素的平面提升到完整的3D世界,包括虚拟世界和现实世界,以赋予这些模型如同人类般丰富的空间智能”最终,这项技术将涵盖机器人和制造业等领域。李飞飞曾表示,AI前沿研究涉及一种算法,这种算法可以合理推断出图像和文本在三维环境中的样子,并根据这些预测采取行动,这被称为“空间智能”
2024-10-14 00:25:06
424
原创 flash-attention代码逻辑
本篇写的很乱,主要是自己当时读代码时的一些随手记录,对自己帮助可能更大。如果觉得写得很乱不要喷我,我应该没时间整理成干净的博客了
2024-10-09 19:16:52
1236
1
原创 C++中的模板template
的判断完全在编译时完成,二者会生成两种不同的代码逻辑,减轻了运行时的开销;而普通参数是在运行时传递的,即它们的值只有在程序执行时才会确定。前者可用于生成不同的代码实例,从而提高性能、避免运行时开销。非类型形参与普通函数参数的区别:前者是在编译时确定的,允许将常量值、枚举值、指针等类型作为模板参数传递,并参与模板的实例化和代码生成,从而避免运行时的开销。
2024-10-07 16:36:43
520
原创 FlashAttention原理:从原始Attention到FlashAttention
以前的attention加速方法旨在减少attention的计算和内存需要,如sparse-attention、low-rank approximation等,但由于它们主要关注FLOP reduction,且倾向于忽略内存访问的开销,所以都没有达到wall-clock speedup。FlashAttention比普通attention的HBM(GPU high bandwidth memory)访问量更少,并适用于一系列SRAM大小。
2024-09-26 14:44:52
2794
1
原创 寒武纪MLU硬件--抽象硬件模型介绍
一些基本概念MLU Core:是寒武纪硬件的基本组成单元。每个MLU Core是具备完整计算、IO和控制功能的处理器核心,可独立完成一个计算任务,也可与其他MLU Core协作完成一个计算任务Cluster:每4个MLU Core构成一个Cluster,每个Cluster内还会包含一个额外的Memory Core和一块被Memory Core和4个MLU Core共享的SRAM(Shared RAM,共享存储单元)Memory Core:不能执行向量和张量计算指令,只能用于SRAM和DDR(Dou
2024-07-22 11:39:14
1201
原创 Cambricon BANG C编程入门
Cambricon BANG异构并行编程模型利用CPU和MLU协同计算。CPU作为主机侧的控制设备,用于完成复杂的控制和任务调度;设备侧的MLU则用于大规模并行计算和领域相关的计算任务。使用Cambricon BANG C编写程序时,需要同时编写主机侧和设备侧的代码。
2024-07-21 22:44:46
940
原创 一些3D数据集的简单介绍
上图是Objaverse和ShapeNet数据集关于车辆、床铺、花瓶和书包这四类的物体模型对比,可见ShapeNet的模型相比起来就非常简单,因为Objaverse的对象来自许多3D内容创建平台,而ShapeNet都来自SketchUp(一个为简单的建筑建模而构建的3D建模平台)。91%的情况下Objaverse训练的模型生成的物体在外观上更具多样化。上图是Objaverse的作者,分别基于Objaverse的Bag分类和ShapeNet的bag分类,训练了一个模型,生成的3D物体效果。
2024-06-23 12:02:08
1939
原创 OpenCL
如上图,the host is going to call the host API to manage devices on the right. Devices are programmed using OpenCL C. Underneath all of these are models. These models are here to guide everything.
2024-05-13 15:20:08
839
原创 make、makefile、cmake、nmake
GCC:即GNU Compiler Collection(GNU编译器套件),可简单认为是编译器。它可以编译很多种编程语言(如C、C++、Objective-C、Fortran、Java等)。当程序只有一个源文件时,直接就可以用gcc命令编译它。但是若程序包含多个源文件,用gcc命令逐个去编译显然很容易混乱且工作量大,所以就出现了下面的make工具make:可以看作一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式,通过调用makefile文件中用户指定的命令来进行编译的链
2024-05-07 11:07:59
433
原创 程序的表示、转换与链接:三、运算电路基础
上面谈到高级语言程序中的各类运算,会被编译器转换为相应的运算指令,程序运行时,CPU执行这些指令,控制操作数在运算电路中被处理。由上可知,计算机中所有运算都是由相应的运算电路完成的,而这些运算电路是由基本的逻辑门电路实现的。如若实现从数据y中提取低位字节,并使高位字节为0的话,可用“&”实现:作“y&0x00FF”。该对什么样的操作数进行运算的呢?本节讲C语言程序中涉及的运算,如算术运算、按位运算、逻辑运算、移位运算等。本节主要介绍高级语言程序中的表达式、运算类指令和运算电路之间的关系。
2024-04-23 16:08:47
731
原创 程序的表示、转换与链接:一、计算机系统概述
语言处理系统提供语言处理程序+语言的运行时系统(运行时系统如库函数,调试、优化等功能)。系统软件又是在指令集体系结构的基础上构建起来的(操作系统最终是由指令实现的,而指令是按照一定规范编写的,这个规范就是指令集体系结构)。而指令集体系结构最终是由计算机硬件实现的,即指令集体系结构是计算机硬件的一种抽象,抽象成软件能够直接使用的一个接口,软件就可通过此接口来使用具体硬件了。冯·诺依曼结构最重要的思想是“存储程序”,即任何要计算机完成的工作都要先被编写成程序,然后将程序和原始数据送入主存并启动执行。
2024-04-09 18:40:47
679
原创 CMU 10-414/714: Deep Learning Systems --hw4
通过之前作业中完成的所有组件,使用高性能的网络结构来解决一些问题。首先会增加一些新的算子(使用CPU/CUDA后端),然后完成卷积、以及用一个卷积神经网络来在CIFAR-10图像数据集上训练一个分类器。接着需要完成循环神经网络(带LSTM),并在Penn Treebank数据集上完成字符级的预测。
2024-03-21 16:20:44
1328
原创 CMU 10-414/714: Deep Learning Systems --hw3
EwiseSetitem(a, out, shape, strides, offset):这里a是紧凑型矩阵,out是一个非紧凑行矩阵,需要将a的各元素的值赋给out的指定位置上(根据shape、strides、offset确定)。只需要复用上面的代码,将mode改为INDEX_OUT,即调用ScalarSetitem(size, val, out, shape, strides, offset):out是一个非紧凑型子矩阵,根据shape、strides、offset在out的对应位置将值写为val,即
2024-03-19 10:03:44
1070
6
原创 CMU 10-414/714: Deep Learning Systems --hw2
hw2实现功能实现参数的多种初始化:用代码实现对应的数学公式即可,原理和公式推导见这里Xavier均匀分布版# 对于全连接层来说,fan_in是上一层的神经元数目,fan_out是当前层的神经元数目# gain是放缩因子,用于调整初始化的范围,默认为1def xavier_uniform(fan_in, fan_out, gain=1.0, **kwargs): a = gain * math.sqrt(6/(fan_in+fan_out)) # w服从(-a,a)的均匀分布
2024-03-11 18:54:04
1242
原创 python中的类
当其不再被需要时,即此对象的引用计数变为0时,它被垃圾回收。但回收不是立即的,而是由解释器在适当的时机,将垃圾对象占用的内存空间回收。此外,以双下划线开头的变量表示是私有类型的变量,只能允许这个类本身内部进行访问;类内的函数和普通函数只有一个特别的区别:前者必须有一个额外的第一个参数,按照惯例命名为self。self参数是对类当前实例的引用,用于访问属于该实例的变量。这些双下划线函数的名称是预先定义好的,当用户和使用某些内置函数或进行特定操作时,python解释器会自动调用这些双下划线函数。
2024-03-06 12:02:44
321
原创 CMU 10-414/714: Deep Learning Systems --hw0
【代码】CMU 10-414/714: Deep Learning Systems --hw0。
2024-03-04 16:14:17
1250
原创 xv6: 第二章 操作系统组织
计算机中的CPU往往被硬件所包裹,这些硬件通常以I/O接口的形式存在。xv6所基于的硬件是由qemu的“-machine virt”模拟的,包括RAM、ROM(有boot code)、与用户键盘和屏幕的串行连接、存储磁盘。
2024-01-20 15:41:52
1061
原创 xv6:第一章 操作系统接口
即,调用pipe()、fork()后,父子进程都有了指向管道的文件描述符。子进程将管道的读端口拷贝在描述符0上,再关闭p中的描述符(新管道的读写描述符被记录在数组p中),然后执行wc。就是在之前设置好xargs后面的参数后(存放在Argv中),又读入标准输入中的内容(即通过管道传递过来的之前echo的内容)并存放在Ptr(也就是CmdPath)中。文件描述符是一个强大的抽象,因为它们将所连接的细节隐藏起来了:一个进程向描述符1写出,它有可能是写到一份文件、一个设备(如控制台)、或一个管道。
2024-01-18 09:49:13
853
原创 非递归方式遍历二叉树的原理
对于中序遍历递归算法,当栈顶记录中的指针非空时,应遍历左子树,即指向左子树根的指针进栈;虚线旁的三角形、圆形、方形内的字符分别表示在先序、中序、后序遍历二叉树过程中访问节点时输出的信息。从上图可知(也可从去掉visit的代码得知),从递归执行过程的角度来看先序、中序、后序遍历,是完全相同的。因为前序、中序遍历,遍历到右子树节点时,右子树的左兄弟和父节点都遍历完成,且不会在后面的遍历过程中被需要,因此可直接退栈。而对于后序遍历,根据左右根的顺序,若当前节点是一个左子树的节点,那么:1)其右兄弟还未进栈;
2023-12-17 10:15:58
491
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人