自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 Quantitative Analysis: PIM Chip Demands for LLAMA-7B inference

在decode过程,推理出一个token的时延 = bank内并行访存(GEMV)的时延 + Controler-bank 通信的时延 + Controler 内访存(softmax、Norm 和 reduction 等)的时延。定量分析decode过程,也就可以分析出在给定访存带宽下,模型推理的速度。bank内并行访存(GEMV)的时延包含两部分:模型参数相关的GEMV的时延和kv cache相关的GEMV的时延。在decode阶段,Controller和bank内的算力均可以吃满访存带宽。

2024-02-17 14:36:26 1305

原创 Benchmarking PIM-attention: A Puncture Experiment on a Real Processing-in-Memory Architecture

大语言模型(LLM)的高吞吐量服务需要一次批处理足够多的请求。然而,现有的推理系统面临着巨大的挑战。一方面,每个请求的键值缓存(KV cache)占用大量的内存,而且会动态增长和收缩,显存容量不足限制了批处理的大小;另一方面,attention算法中大量使用访存密集型的GEMV算子,显存带宽成为了系统瓶颈。为了解决这个问题,我们提出了PIM-attention。PIM提供了更大的内存容量和bank级并行的访存带宽,为加速attention算子提供了机遇。

2024-02-17 14:22:27 769 1

原创 PagedAttention: from interface to kernal

如果sequence中context比较长,cuda block承担的任务量将会比较大,甚至有可能出现硬件资源(共享内存,寄存器)不够的情况。我们来看一下paged_attention_v1_kernel中的并行计算任务划分,其实就是搞清楚cuda block、warp和thread各自承担了那些计算任务。因此,paged_attention_v1_kernel将一个head中的attention任务交给一个cuda block完成。这样的话,不涉及不同cuda block间的同步,通信开销会比较小。

2024-01-12 17:21:25 1390

原创 Memory Wall in Neural Network Inference

目前,ALU算的很快,把内存中数据加载到cache的带宽有限,这时候,ALU的算力就会被浪费,性能瓶颈卡会在内存带宽上,这就是“内存墙”。如下图,简单来讲,当thread 8运行的时候,其他的线程(比如thread 1, 3)也没闲着,它们正在取数据。然而,TPU是一个专用的加速器,只能用来加速GEMM算子,其他的活统统干不了。简单来讲,GPU的架构就是堆很多的寄存器和ALU,获取高算力。MLPs (Multi-Layer Perceptions) ,多层感知机,大家应该都挺熟悉的,里面的算子是GEMV。

2024-01-11 14:42:27 903

原创 AiM architecture defects

然而,目前广泛使用的加速器是英伟达的通用加速器GPU。GPU是以计算为中心的架构,使用SIMT掩盖访存开销。对于GEMM算子,GPU打不过TPU;对于GEMV算子,GPU打不过AiM。但是,GPU有很强的通用性,加上完善的生态,它可以很好地完成各种算子(不论是计算密集性算子还是访存密集型算子)。从加速器通用性角度看,AiM与TPU类似,两者都是十分专用的加速器。TPU使用脉冲阵列加速计算密集性算子GEMM;AiM使用存算架构加速访存密集型算子GEMV。是一个专门用于加速GEMV算子的加速器。

2024-01-11 14:14:16 393

原创 冷热字段分离提升程序局部性

突然想起了上学期课堂上的一个提升程序局部性的案例,我觉得非常有意思,写篇博客记录一下。

2023-12-17 17:14:19 78

原创 软件架构优化不匹配硬件架构:iTLB miss成为性能瓶颈

为了降低代码耦合度,提升代码可读性,某业务进行微服务改造,每一个模块拆分成一个库,对应一个so动态库文件,共拆分出来300+动态库(300+MB的代码)。主要原因是,so动态库文件众多,且代码在内存中离散分布,需要大量的iTLB entry,而iTLB entry数量有限,远远小于需求量。一般来说,软件架构需要与硬件架深度契合,这时候才可以充分压榨出硬件的性能。一个老生常谈的例子是,与最简单的python程序相比,矩阵×矩阵算子可以通过循环并行化、访存优化和SIMD等优化,得到63000倍的性能提升。

2023-12-16 22:24:28 74

原创 Failed to connect to huggingface.co

在国内huggingface.co被墙了。可以使用Huggingface 镜像站https://hf-mirror.com/来解决这个问题。当访问 huggingface.co 时,将会直接替换为本站域名hf-mirror.com。

2023-12-13 09:19:34 2151

原创 Neo4j 集群和负载均衡

Neo4j是当前最流行的开源图DB。刚好读到了Neo4j的集群和负载均衡策略,记录一下。

2023-07-26 19:19:08 1663

原创 Neo4j docker 部署

想要运行简单测试一下neo4j,就直接使用docker创建了一个容器,并用cypher-shell本地连接neo4j,创建图进行测试。

2023-07-05 20:46:24 2134

原创 RedisGraph的整体架构

本文关注RedisGraph的整体架构,分别从图存储模型、索引、并发控制、和执行计划四个方面简要阐述。

2023-06-10 18:26:44 1177

原创 RedisGraph的图存储模型

在RedisGraph的整体架构中,非常简略的概括了RedisGraph的图存储模型:- RedisGraph使用DataBlock来存储node和edge的属性。- RedisGraph使用稀疏矩阵来表示图,稀疏矩阵的存储格式为按行压缩的稀疏矩阵(Compressed Sparse Row Matrix, CSR_Matrix)。DataBlock是如何存储node和edge的属性的?使用稀疏矩阵表示图的具体设计有哪些?本文关注RedisGraph的图存储模型。

2023-06-05 12:24:36 849

原创 Graph Store Model in Neo4j

This article focus on graph store model of Neo4j.

2023-05-13 15:43:58 147

原创 RedisGraph-benchmark: 使用LDBC SNB、redisgraph-bulk-loader和hiredis测试RedisGraph性能

RedisGraph-benchmark: 使用LDBC SNB、redisgraph-bulk-loader和hiredis测试RedisGraph性能

2023-02-11 16:05:16 327

原创 高速缓存与局部性原理

一个编写良好的程序常常具有局部性原理。这儿的局部性表现为两方面:时间局部性和空间局部性。时间局部性即为,如果一个内存位置被引用,则在不久的将来,它很有可能将被再次引用;空间局部性即为,如果一个内存位置被引用,则在不久的将来,它附近的内存位置很可能被引用。正是因为程序局部性原理,计算机设计者增加了高速缓存存储器这个硬件,从而提高程序对主存的访问速度。一般来说,高速缓存设计为3层,容量依次增大,访问速度依次减小。如果没有在高速缓冲中命中数据,程序再访问主存获取数据。

2023-02-08 11:33:08 672

原创 计算复杂性理论习题及解答

计算复杂性理论习题及解答。

2023-02-03 12:51:32 1808

原创 数据库视角下的区块链技术

本文关注数据库视角下的区块链技术。

2023-01-23 21:24:30 1530

原创 Cannot find python2 interpreter

安装RedisGraph中遇到的这个问题。

2022-12-10 16:02:42 371 2

原创 Index in RedisGraph(RedisGraph的索引)

索引是图数据库设计和开发的重要方面。索引可以大大提升数据库的查询效率。RedisGraph中并没有索引的代码实现,其使用RediSearch搜索引擎来构造索引。RediSearch是一个高性能的全文搜索引擎,可作为一个Redis Module 运行在Redis上。RediSearch的核心数据结构是Inverted index,也就是hashtable。也就是说,RedisGraph中的索引为哈希索引。

2022-11-12 14:23:20 278

原创 ConcurrencyControl in RedisGraph(RedisGraph的并发控制)

RedisGraph的并发控制

2022-10-08 21:07:25 351

原创 RedisGraph概述

RedisGraph概述

2022-10-03 16:41:29 2763

原创 upmem-hashtable

本文设计了针对upmem优化的hashtable。

2022-09-18 16:43:09 589

原创 debezium-connector-postgres自定义快照

1 debezium简介debezium是用于捕获变更数据的开源分布式平台。可以响应数据库的所有插入,更新和删除操作。2 debezium连接 PostgreSQLdebezium第一次连接到 PostgreSQL 服务器或集群时,连接器会拍摄所有模式的一致快照。快照完成后,连接器会持续捕获插入、更新和删除数据库内容以及提交到 PostgreSQL 数据库的行级更改。3 快照问题2.1 问题引出我正在做一个数据库迁移工具,需要支持离线迁移和在线迁移。那么,就要确定一个离线迁移和在线迁移的分界点,

2021-09-02 19:59:53 993 1

原创 S3C2440——键盘中断服务程序

S3C2440键盘模块电路一共有S1、S2、S3、S4个按键,分别对应EINT19、EINT2、EINT0、EINT11这四个中断源。中断框架及服务程序如下:中断响应,取出触发中断的键盘编号(1-4)放到R5中;文件ASM_Interrupt.s;(1)设置中断向量表Mode_USR EQU 0x50 ;IRQ中断开放,FIQ中断关闭Mode_FIQ EQU 0xD1 ;关闭IRQ、FIQ中断Mode_IRQ EQU 0xD2 ;关闭IRQ、FIQ中断Mode_S

2021-07-12 14:25:34 809

原创 S3C2440——使用URAT0中断方式发送和接收字符串

设置中断向量表;文件ASM_Interrupt.s;(1)设置中断向量表Mode_USR EQU 0x50 ;IRQ中断开放,FIQ中断关闭Mode_FIQ EQU 0xD1 ;关闭IRQ、FIQ中断Mode_IRQ EQU 0xD2 ;关闭IRQ、FIQ中断Mode_SVC EQU 0xD3 ;关闭IRQ、FIQ中断 GET 2440Reg_addr.inc AREA MyCode, CODE,READONLY IM..

2021-07-12 14:15:39 1055 1

原创 S3C2440——使用URAT0查询方式发送和接收字符串

UART初始化函数void Uart_Init(int pclk,int baud){ int i; rGPHCON|=0xa0; //GPH2,GPH3 as TXD0,RXD0 rGPHUP = 0x0; //GPH2,GPH3内部上拉 if(pclk == 0) pclk = PCLK; rUFCON0 = 0x0; //禁止3个通道的FIFO控制寄存器 rUFCON1 = 0x0; rUFCON2 = 0x0; r..

2021-07-12 13:54:35 601

原创 ATPCS——main函数调用汇编程序

1 作业内容main函数调用汇编程序calc void main(){ calc(3, 5); }在汇编程序calc中,将传入的2个int型参数(4字节)做加运算后,以结果为参数调用C函数showshow函数用printf语句显示传入参数2 代码//main.c#include <stdio.h>extern int calc(int arg1, int arg2);//用标号做汇编函数名void show(int a){ printf("resu

2021-07-12 13:34:43 155

原创 SDN Experiment4

1 实验题目假如你是生活在1972年维护ARPAnet的网络管理员,在前面的实验中你学会了如何建立最短路径,下发了一条SDC到MIT跳数最少的路径(图中绿色的路径)。你的同事Bob某天接到了一个新的需求,要求UTAH到ILLINOIS之间的所有流量必须经过部署于TINKER的流量分析器以进行进一步研究,粗心大意的Bob没有检查当前的网络状态就很快下发了一条新的路径(图中红色的路径)。聪明又机智的你很快意识到Bob下发的流表很可能造成转发的环路。现要求你运行VeriFlow工具,对上述两条转发路径进行检

2021-06-19 19:37:08 1611

原创 SDN Experiment3

1 实验题目假如你有一个假如你有⼀个笔友遍天下爱写信的朋友叫李华,她生活在1972年的UCLA,希望通过ARPANET(世界第一个数据包交换网络,互联网的鼻祖,接入了25个研究机构,共计55条链路。具体拓扑见下图)发送一封Email给位于MIT的李明同学,现在需要你借助Ryu控制器编写Ryu APP帮助她为减少网络中节点的中转,希望找到一条从UCLA到MIT跳数最少的连接,输出经过的路线为了尽快发送Email,希望能找到⼀条从UCLA到MIT时延最短的连接,输出经过的路线及总的时延,利用Ping包的

2021-06-19 19:34:54 747 1

原创 SDN Expriment2——动态转发规则和链路故障恢复

1 实验题目部署一个如下图的网络环境,在此拓扑的基础上完成动态转发规则的改变和链路故障恢复功能。2 实验内容2.1 动态改变转发规则在上图所示的拓扑结构中,h1到h2有两条通路,所谓动态改变转发规则,就是要让h1到h2的包在两条路径上交替转发,具体描述如下:假设h1 ping h2,初始路由规则为s1-s4-s5,5秒后,路由转发规则变为s1-s2-s3-s5,再过5秒,转发规则又回到最初的s1-s4-s5,通过这个循环调度的例子动态改变交换机的转发规则。2.1.1 实现思路因为实验拓扑比较

2021-06-19 19:33:33 1492 2

原创 Socket编程——功能类似QQ的Java聊天程序(文字聊天、传输文件)

实现功能验证用户登录两个用户间的文字聊天多用户群聊两个用户之间传输二进制文件客户端和服务器间通信协议设计

2021-05-21 19:25:21 1631 5

原创 SDN Expriment1——实现二层自学习交换机

实验题目实现二层自学习交换机,避免数据包的洪泛。二层自学习交换机的学习策略对于每个交换机,我们可以学习收到的数据包的mac和交换机port的映射,进而下发流表以指导包的转发,从而避免向所有port洪泛。codefrom ryu.base import app_managerfrom ryu.controller import ofp_eventfrom ryu.controller.handler import CONFIG_DISPATCHER, MAIN_DISPATCHERfrom r

2021-05-15 10:25:07 834

原创 使用navicat15连接华为云opengauss数据库

启动华为云服务器,进入root根目录修改postgresql.conf文件取消password_encryption_type注释并将等号后改为0。cd /gaussdb/data/db1vi postgresql.conf## 取消password_encryption_type注释并将等号后改为0修改前:修改后:修改pg_hba.conf文件vi pg_hba.conf##增加一行内容修改前:修改后:运行配置gs_ctl reload -D /gaussdb/d

2021-05-03 23:24:11 7349 5

转载 安装openGauss2.0.0(使用脚本一键部署)

写在前面安装部署openGauss不是一件容易的事情,确实让人头大。为了提高大家部署openGauss数据库的效率,大佬(非本人)将安装步骤写入shell脚本,在openEuler操作系统可以连接外网的情况下,实现一键式配置、下载、安装。原文见此链接;详细安装视频见此链接。openGauss2.0.0安装脚本## openGaussinstall.sh## Author: 贾军锋## Date: 2021-04-15## OS: openEuler20.03LTS [最

2021-05-03 22:34:24 2366 4

原创 MIPS指令集单周期CPU设计与实现(Verilog)

单周期CPU数据通路数据通路中各模块代码PC(程序计数器)module PC #(parameter WIDTH=32)(//author:XJTU mry input clk,reset, input [WIDTH-1:0] d, output reg[WIDTH-1:0] q ); always @(posedge clk,posedge reset) if(reset)q<=0; else q<=d;endmodule

2021-04-26 21:32:44 7838 2

原创 mysql exercise

建立基本表Student(S#,Sname,Sex,Bdate,Height,Dorm),Course(C#,Cname,Period,Credit,Teacher),SC(S#,C#,Grade)在题1中定义的基本表上完成以下查询查询选修课程“CS-02”的学生学号、成绩查询选修课程“EE-01”的女学生姓名查询不选修课程“CS-02”的学生姓名查询身高高于“王涛”同学的男生学号、姓名及年龄查询选修课程“CS-01”的学生中成绩最高的学生学号查询学生姓名及其所选修课程的课程号、学分和成.

2021-04-20 12:18:24 1258

原创 SDN mininet fat tree k=4

题目重述Create a Fat Tree (k=4) datacenter topology and test it, including:(1) display all the nodes and links;(2) let h1 ping h16 for 10 times;(3) let each pair of host ping each other with pingall;(4) test bandwidth with iperf.吐槽一下某西北高校,没给实验指导书,甚至连实验环境

2021-04-04 19:08:34 3946 5

原创 使用ncat连接web server

ncat介绍1说起ncat我们不得不说一下Netcat。Netcat用于从TCP/UDP连接中读取或发送网络数据。cat是Linux中查看或连接文件的命令,所以netcat本意为从网络上查看文件内容。而Netcat的作者Hobbit为它添加了非常丰富的功能,使它几乎能够完成网络操作中各式各样的操作,所以Netcat在网络安全领域被称作“TCPIP的瑞士军刀”(“Swiss-army knife forTCP/IP”)。Netcat稳定版1.10由Hobbit在1996年3月发布(开源软件),之后作者没有

2021-03-31 14:44:02 719

原创 重排九宫问题(广度优先搜索、启发式搜索、Java)

重排九宫问题描述  重排九宫问题描述如下:用数字1~8标注的棋子摆放在一个3×3共9个格子的棋盘上,空出一个格子使棋子能在盘内水平滑动,8个符号在棋盘上的排列称为8数码的状态,游戏要求给定一个初始的状态和一个终止的状态,且每次只能移动一个棋子,求从任一初始棋局变化到另一目标棋局是否有解,以及有解时的解法[1]。如图1所示。图1 8数码谜题可解性  任意棋局对应一个序列 ,其中 为0,1,2…,8九个数中的一个,0表示空格。图2 棋盘对应序列  对于任意N阶棋局,可解性判定..

2020-12-24 19:42:29 3249 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除