当前位置: 首页 > news >正文

triton矩阵乘以及缓存优化

这里triton.cdiv(M, META['BLOCK_SIZE_M']) * triton.cdiv(N, META['BLOCK_SIZE_N']),所以grid的形状是一维的。

观察函数内部

pid = tl.program_id(axis=0),因为grid是一维的,所以这里就是总块数,我们假设实际A*B=C,

A,B形状是574*574,块形状是64*64,这样一共有81块,pid就是0~80,

这里用574/64=9,所以num_pid_m和num_pid_n都是81

num_pid_in_group = GROUP_SIZE_M * num_pid_n,算的是一个组有多少块,这里假设是3*9,所以一组27块。

group_id = pid // num_pid_in_group算组id,当前pid//27就得到所在组id,比如30//27=1,说明30块在组1

first_pid_m = group_id * GROUP_SIZE_M,每一组的第一个块在结果矩阵中是第几行。

因为数据不一定能整除,最后一个组可能少,所以有

group_size_m = min(num_pid_m - first_pid_m, GROUP_SIZE_M)
pid_m = first_pid_m + (pid % group_size_m)pid_n = (pid % num_pid_in_group) // group_size_m

这两行做映射,是关于pid和结果矩阵中块位置的映射,

行坐标=组号*每组行数+pid%每组行数,pid%3知,pid三个三个一排,也就是算的当前pid在当前组里相对是第几行,比如如果是4,4%3=1,可知pid=4在当前组第一行(0,1,2),那么组号*每组行数就可以相对整组位移,最终可以知道pid和c矩阵中行位置的映射

列坐标=pid%每组总数//每组行数,pid%每组总数可知当前组顺序是第几块,也就是27块中的第几块,比如pid%4就会得到4,然后4//=1就知道在第几列了,

所以pid的对应关系就和上图的一样的顺序对应。

这里比如想要计算块pid=4,那么就需要拿到A的第一行和B的第一行,

这里各自会得到一个二维矩阵,里面的指针值就是所指向的元素位置,这里只是第一块

这里就好理解了,就是A矩阵从列迭代,B从行迭代,

不同的顺序,所要求的缓存中所需要的空间不一样,下面这一种在缓存受限的情况下要好。

相关文章:

triton矩阵乘以及缓存优化

这里triton.cdiv(M, META[BLOCK_SIZE_M]) * triton.cdiv(N, META[BLOCK_SIZE_N]),所以grid的形状是一维的。 观察函数内部 pid tl.program_id(axis0),因为grid是一维的,所以这里就是总块数,我们假设实际A*BC, A&…...

springboot 搭建一个 测试Kafka 集群连通性demo

废话不多说直接上代码&#xff1a; 1.pom <!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka --><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><ve…...

Ant Design Vue 动态表头和数据填充

创作动态表头和数据填充的前端应用&#xff1a;使用 Ant Design Vue 在现代前端开发中&#xff0c;动态表格是一个常见而且非常有用的功能。Ant Design Vue作为一个优秀的UI组件库&#xff0c;为开发者提供了丰富的组件和API来实现复杂的前端需求&#xff0c;包括动态表头和数…...

在Spring Cloud项目中集成Springdoc OpenAPI生成OpenAPI 3文档的详细解析

在Spring Cloud项目中集成Springdoc OpenAPI生成OpenAPI 3文档的详细解析 在Spring Cloud项目中生成OpenAPI 3文档&#xff0c;可以使用Springdoc OpenAPI。Springdoc OpenAPI提供了一种简单的方法来生成符合OpenAPI 3规范的API文档。以下是详细的步骤和解析&#xff0c;展示如…...

Linux shell 重定向输入和输出

Linux shell 重定向输入和输出 1. Standard I/O streams2. Redirecting to and from the standard file handles (标准文件句柄的重定向)2.1. command > file2.2. command >> file2.3. command 2> file2.4. command 2>> file2.5. command < file2.6. comm…...

electron录制工具-视频保存、编辑页面

效果如下 electron录屏-保存录制视频 资源 导出视频使用了 mp4-wasm&#xff0c;基本使用&#xff0c;可参考 此文 想法 1、点击按钮导出&#xff0c;弹出选择保存文件夹 2、保存成功后&#xff0c;自动打开保存后文件夹窗口并关闭窗口 实现 获取保存文件夹路径&#xff0…...

curl命令行发送post/get请求

文章目录 curl概述post请求get请求 curl概述 curl 是一个命令行实用程序&#xff0c;允许用户创建网络请求curl 在Windows、 Linux 和 Mac 上皆可使用 post请求 一个简单的 POST 请求 -X&#xff1a;指定与远程服务器通信时将使用哪种 HTTP 请求方法 curl -X POST http://ex…...

Redis 分片集群

一. 前言 前面文章介绍了主从集群和哨兵模式。其中主从集群可以通过读写分离的方式解决高并发场景下的读问题&#xff1b;而在主节点出现故障时&#xff0c;又可以通过哨兵模式的自动选举来实现高可用。 Redis 主从集群 && 哨兵模式 二. Redis 分片集群 2.1 分片集群…...

学习分享-Callable 和 Runnable 任务

前言 顺带回顾学习一下Callable 或 Runnable 任务 Callable 和 Runnable 任务 Callable 和 Runnable 是 Java 中用于定义任务的接口&#xff0c;它们主要用于并发编程&#xff0c;允许任务在独立的线程中运行。 Runnable 任务 Runnable 是一个函数式接口&#xff0c;只包含…...

three.js 基础01

1.场景创建 Scene() 2.常用形状集几何体「Geometry」[可设置长宽高等内容&#xff0c;如&#xff1a;new THREE.BoxGeometry(...)] 长方体 BoxGeometry圆柱体 CylinderGeometry 球体SphereGeometry圆锥体ConeGeometry矩形平面 PlaneGeometry 圆面体 CircleGeo…...

使用file.transferTo()做Java文件复制,目标文件存在时,是抛异常还是覆盖写入?

背景 最近在做一个项目&#xff0c;在服务端涉及到文件的复制操作&#xff0c;于是想到了 Java 中 FileInputStream 类的 transferTo() 方法。这里简单记录一下用法&#xff0c;另外&#xff0c;如果目标文件已经存在&#xff0c;该如何处理这种情况呢&#xff1f;是出现异常还…...

Python:线性查找法

什么是线性搜索算法&#xff1f; 线性搜索算法是一种基本的搜索技术&#xff0c;用于查找目标元素是否存在于一个集合&#xff08;通常是列表或数组&#xff09;中。该算法的工作原理非常简单&#xff1a;它从集合的第一个元素开始逐个检查&#xff0c;直到找到目标元素或遍历完…...

IDEA 设置主题、背景图片、背景颜色

一、设置主题 1、点击菜单 File -> Settings : 点击 Settings 菜单 2、点击 Editor -> Color Scheme -> Scheme, 小哈的 IDEA 版本号为 2022.2.3 , 官方默认提供了 4 种主题&#xff1a; Classic Light &#xff08;经典白&#xff09; ;Darcula &#xff08;暗黑主…...

【elementui源码解析】如何实现自动渲染md文档-第三篇

目录 1.前言 2.webpack.demo.js 3.markdown文档 4.fence.js 1&#xff09;tokens 2&#xff09;::: 3&#xff09; 5.containers.js 1&#xff09;markdown-it-container 2&#xff09;md.use() 3&#xff09;代码逻辑 4&#xff09;containers小结 6.congfig.js …...

this指针如何使C++成员指针可调用

在C中&#xff0c;this指针是一个隐藏的指针&#xff0c;指向当前对象实例。它在成员函数中自动可用&#xff0c;用于访问该对象的成员变量和成员函数。理解this指针的工作原理有助于理解为什么指向成员的指针是可调用的。在本文中&#xff0c;我们将详细探讨this指针的概念&am…...

Redis数据结构之字符串(sds)

Redis数据结构之字符串(sds) redisObject 定义如下 struct redisObject {unsigned type:4; //数据类型unsigned encoding:4; /*encoding 编码格式&#xff0c;及存储数据使用的数据结构&#xff0c;同一类型的数据&#xff0c;Redis 会根据数据量&#xff0c;占用内…...

tokenization(二)子词切分方法

文章目录 概述BPE构建词表词元化代码实现 WordPieceUnigram估算概率&#xff08;E&#xff09;删除词元&#xff08;M&#xff09; 参考资料 概述 接上回&#xff0c;子词词元化&#xff08;Subwords tokenization&#xff09;是平衡字符级别和词级别的一种方法&#xff0c;也…...

慈善组织管理系统设计

一、用户角色与权限 慈善组织管理系统设计首先需要考虑的是用户角色与权限的划分。系统应明确区分不同的用户角色&#xff0c;如管理员、项目负责人、财务人员、捐赠者等&#xff0c;并为每个角色分配相应的权限。管理员应拥有最高的权限&#xff0c;能够管理系统全局&#xf…...

大疆Pocket3手持记录仪格式化恢复方法

大疆Pocket系列是手持类产品&#xff0c;此类产品处理过不少像Pocket、Pocket2、Pocket3基本上涉及Pocket全系列&#xff0c;今天来看一个Pocket3误格式化之后的恢复方法。 故障存储: 120G存储卡 /文件系统&#xff1a;exFAT 故障现象: 在备份视频数据时由于操作失误导致初…...

Mybatis的面试题

1. 什么是一级缓存什么是二级缓存&#xff1f; MyBatis是一款优秀的持久层框架&#xff0c;它提供了一级缓存和二级缓存来提高数据库访问性能。 一级缓存 一级缓存是指在同一个SqlSession中进行的缓存。当MyBatis执行查询时&#xff0c;查询结果会被缓存在SqlSession的内存中…...

快速上手GLM-OCR:无需代码基础,网页上传图片即可提取文字

快速上手GLM-OCR&#xff1a;无需代码基础&#xff0c;网页上传图片即可提取文字 你是不是也遇到过这样的场景&#xff1f;手头有一堆纸质文件、截图或者照片&#xff0c;里面全是文字信息&#xff0c;需要把它们一个个敲进电脑里。或者在网上看到一张信息图&#xff0c;想把里…...

主线程没卡但ANR了?揭秘Android SharedPreferences的ANR陷阱

主线程没卡但ANR了&#xff1f;揭秘Android SharedPreferences的ANR陷阱 在Android开发中&#xff0c;ANR&#xff08;Application Not Responding&#xff09;问题一直是开发者头疼的难题。特别是当应用主线程看似运行正常&#xff0c;却突然弹出ANR对话框时&#xff0c;这种&…...

高斯数据库(GaussDB)SQL 常用语句总结

高斯数据库(GaussDB)SQL 常用语句总结 高斯数据库(GaussDB)是华为基于 PostgreSQL 开源生态开发的企业级分布式关系型数据库,兼容标准 SQL 92/99/2003,同时支持 PostgreSQL 语法,还自带分布式、高可用特性。 下面按日常开发高频场景整理最实用的 SQL 语句,直接复制就…...

千万级数据表优化:分库分表、分区、索引最佳实践生产实战

本文适合&#xff1a;后端开发、DBA、面试准备、线上性能调优。全文干货无废话&#xff0c;覆盖索引设计、分区实战、分库分表落地、生产踩坑&#xff0c;可直接发布 CSDN。 前言 在互联网业务高速增长的今天&#xff0c;单表数据量突破千万、甚至上亿已经非常普遍。很多项目初…...

STK 9.2.2 实战:手把手教你用TLE文件导入中国空间站轨道数据

STK 9.2.2 实战&#xff1a;手把手教你用TLE文件导入中国空间站轨道数据 航天仿真领域的新手们常常被一个问题困扰&#xff1a;如何在自己的STK项目中快速添加真实卫星轨道数据&#xff1f;本文将带你从零开始&#xff0c;一步步完成中国空间站轨道数据的导入&#xff0c;避开那…...

罗技PUBG鼠标宏完整指南:终极无后坐力脚本配置方案

罗技PUBG鼠标宏完整指南&#xff1a;终极无后坐力脚本配置方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在绝地求生游戏中&#xff0c;后坐…...

2025年大模型技术演进:从DeepSeek到Omni全景回顾

1.大三下保研成功&#xff0c;当时就pytorch熟练&#xff0c;玩过一些小模型&#xff0c;大模型调api都不会。海面了好几家公司&#xff0c;靠以前的课题项目和pku一个研究院切合&#xff0c;拿了大模型算法实习生offer&#xff0c;实际上以rag清洗数据为主&#xff0c;在这边学…...

从交通工具到“第三空间”:车载光学赋能下的汽车演进之路

摘要 随著软件定义汽车(SDV)与集中式电子电气架构的深度落地,汽车正从“以驾驶为中心的交通工具”向支持持续OTA更新的移动智能终端演进,逐步成为用户在家庭与办公室之外的“第三空间”。这一转型因自动驾驶出租车与自动驾驶卡车的快速商业化而加速,车辆被重新定义为共享…...

大模型应用开发第一课:从Prompt到Function Calling

大模型怎么在业务中发挥作用的 目前的大语言模型&#xff0c;几乎都是以聊天地方式来和用户进行交互的&#xff0c;这也是为什么OpenAI开发的大模型产品叫ChatGPT&#xff0c;核心就是Chat。而我们基于大语言模型LLM开发应用&#xff0c;核心就是利用大模型的语义理解能力和推理…...

springMVC请求处理全过程

这张图展示的是 Spring MVC 最经典的工作流。既然你之前问过 DispatcherServlet&#xff0c;那我们就把这张图里的角色和具体的组件对号入座&#xff0c;带你走一遍这个“请求大冒险”。 在 Spring MVC 中&#xff0c;图里的 Front Controller 对应的真实身份就是 DispatcherSe…...