易于理解的完全立方体计算的多路数组聚集方法

news2024/12/23 10:30:29

自己琢磨半天终于搞懂了,可能是自己悟性不够吧-_-||

多路数组聚集其实就是对维度(dimension)进行选择,保留一些常用的可以很方便地生成别的子立方体的立方体(cube)。对一个维做聚集(aggregation)其实就是按照这个维度的方向做加法,把这个维度的值缩减成一个。比如3D的按照某一维降成2D,最终降成0D的也就是数多维数组里面非零元素的个数了(假设数组元素是0-1)。
当把多维数组文件分割成可以放进内存的块(chuck)时,我们希望尽可能减少需要重新载入块的操作,也就是减少I/O,尽可能需要这块的操作都一次过完成。也就是每个块只是被载入一次。这个是很容易做到的,但是不同的块载入顺序在维度聚集的时候会需要不同的缓存大小,而各个维度的聚集是同时进行的,所以需要一个合适的载入块的顺序使得所需要的缓存最小。
比如,一个三维的立方体ABC,我们要聚集成AB、AC、BC三个二维的立方体,这三个聚集是同时做的,所以按照什么样的顺序载入chuck会影响到这三个聚集中间数据要保存时间的长短,进而影响所需要的缓存到小(因为需要保存中间结果越多,所需缓存越大)。
如果A、B、C的基数分别是40,400,4000,每个维度分4段,一段构成一个chuck的边。那么chuck取的顺序应该是按照基数由小到大的维度,也就是先A后B再C。
在计算BC面的内存空间时,需要注意的是:从1号小立方体开始遍历计算,然后计算到4号完成对b0c0这个面的所有计算,在计算完1号时,可以放在100×1000的内存空间上,计算完2号,与之前存储的数据匹配相加,然后丢弃即可(只保存加后的最终结果),按照这个逻辑计算完4号就是最终b0c0的结果,取出然后清空,再计算b0c1
我之前一直没有很明白这个蕴含的逻辑,从网上找了一些人的说法也感觉云里雾里,想明白了之后才发现可能是这个太简单了作者可能以为所有人都会(-_-||)。
图同理,再计算AC面时,完成a0c0的所有计算需要等到13号小立方体遍历完,然后14/15/16每块都会完成一个块的计算,我们需要保留从1到12每块的计算结果,也就是向下投影4个a0c0的面积,这样才能最小的保存计算过程(再通俗一点,就是4个块,一个块记录1/5/9相加,一个块记录2/6/10相加等等),因此结果为40×1000
同理,AB面需要保存所有的AB块面积,结果为40×400
此时需要预留的总内存的大小是:16000+40000+100000 = 156000
看完如果有不懂的地方,欢迎评论或者私信我交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下的动静态库及链接

目录 常识 动态链接 静态链接 两者的比较 动态库与静态库 常识 我们平时写的代码和标准库是两回事,像C标准库提供给我们一些函数方便使用,降低程序员工作成本。比如写个printf("hello world"); 我们只是调用了库里的函数,并没…

字节跳动“技穷”,火山引擎“啃老”

文丨智能相对论作者丨沈浪「云」的赛道正在细化,是显而易见的趋势,诸如汽车云、营销云、视频云、零售云等等,大致可以理解为通过云计算等技术推动特定行业场景实现数字化转型的解决方案。之所以出现这种情况,存在多个层面的原因&a…

Kubernetes部署Postgresql

环境:Postgresql的Docker镜像 ->参考Docker安装部署PostgresqlCentos7.x kubernetes1.23.7 docker1.13.1 postgres12.7pg的docker镜像已经上传到云平台。Kubernetes参考:https://kubernetes.io/zh-cn/docs/concepts/configuration/configmap基本命…

Youngter-drive 题解

1.查壳 32bit,加了UPX壳 2.虚拟机脱壳 Youngter-drive脱壳3.静态分析寻找思路 跟进main_0函数 线程控制的知识不懂,去搜一下函数 createMutexW 函数 创建或打开命名或未命名的互斥对象。 HANDLE CreateMutexW( [in, optional] LPSECURITY_ATTRIBUTES lp…

通信原理笔记—部分响应基带传输系统

目录 基本设计思想: 问题的引入与考虑: 第一类部分响应系统: 定义奈奎斯特脉冲: 定义第一类部分响应系统的冲激响应: 第一类部分响应系统冲激响应与频率特性波形图: 第一类部分响应系统信号波形示例: 编码发送与接收解码过程示例: 第…

Biome-BGC生态系统模型与Python融合技术实践应用

查看原文>>> Biome-BGC生态系统模型与Python融合技术实践应用 Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数,模拟日尺度碳、水和氮通量的有效模型,其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中&#xf…

Tomcat 源码启动

要想学习 Tomcat 原理,看源码是最直接的方式,而想要理解源码,我们要想把它在本地跑起来。 下载源码 到 Tomcat 的官网 http://tomcat.apache.org 上下载 Tomcat 的源码 下载下来是一个压缩包文件 解压之后目录结构如下 用IDEA打开 在…

redis集群管理工具HHDBCS

参考地址: HHDBCS下载地址 Redis教程 1 快速介绍 1.1 什么是HHDBCS? HHDBCS是恒辉信达公司推出的通用数据库管理桌面工具,专为简化数据库的管理及数据管理成本而设计,让用户通过统一的桌面视图管理成千上万的异构数据库实例。 它采用了…

【Feign】Spring框架集成Feign

Spring框架集成Feign1、Feign-简介2、spring-cloud快速整合OpenFeign3、Feign日志4、Feign契约配置5、Feign配置超时时间6、Feign拦截器7、Feign断路器1、Feign-简介 Feign是Neflix开发的声明式、模块化的HTTP客户端,集成了Ribbon、RestTemplate实现了负载均衡的执…

快收藏,2023有这些财务分析模板就够了

相信很多的财务人都才刚刚经历一个兵荒马乱的年终,各种核算、整理、分析,工作量直线上升,说不定加班几点半个月都未必能歇一下。但不用担心,在接下来的2023里,可以通过BI财务分析报表模板来高效解决这些问题。 BI软件…

[python][VTK]vtk安装后测试代码

测试vtk版本为9.2.5 import vtk cone_a vtk.vtkConeSource() coneMapper vtk.vtkPolyDataMapper() coneMapper.SetInputConnection(cone_a.GetOutputPort()) coneActor vtk.vtkActor() coneActor.SetMapper(coneMapper) ren1 vtk.vtkRenderer() ren1.AddActor(coneActor…

黑马点评项目要点内容总结【面试用】

小众点评项目要点 文章目录小众点评项目要点1.使用Redis代替Session登录1.1 Session登录存在的问题1.2 使用Redis代替Session登录分析1.3 使用Redis登录的流程1.4 解决Redis中有效期问题2.使用Redis作为缓存2.1 为什么使用缓存2.2 缓存策略2.3 解决缓存穿透2.4 解决缓存雪崩2.5…

熵值法原理及python实现 附指标编制案例

文章目录1.简单理解 信息熵2.编制指标 (学术情景应用)3.python实现3.1 数据准备3.2 数据预处理3.3 熵值、权重计算3.4 编制综合评价指标熵值法也称熵权法,是学术研究,及实际应用中的一种常用且有效的编制指标的方法。1.简单理解 信…

在数组中删除重复数字(详解)

前言:本期是关于删除重复数字的详解,今天你c了吗? 方法: 双指针 以一组数:3 4 1 0 0 2 3 1 1 2 为例删除重复的数字 step 1:排序 使用双下标法的前提是数组有序(降序or升序) 可以使…

MYSQL命令总结

一.库的操作 1.创建库 create database db1;//创建名为db1的数据库 create database db2 charsetutf8;//创建一个utf8字符集的db2数据库 create database db3 charsetutf8 collate utf8_general_ci;//创建一个使用utf字符集并带校对规则的db3数据库2.字符集和校验规则 show …

[redis+springboot]缓存sql执行结果

场景: 访问controller层(其实是service),需要将其结果缓存到redis,下一次直接从缓存找值,从而减少sql操作,减轻数据库压力技术: redis,springboot,jpa,mysql1, 新建项目2, 导入依赖<?xml version"1.0" encoding"UTF-8"?> <project xmlns"h…

懂了委托,才算真正入门C#

文章目录委托的概念多播委托拖动按钮前文提要&#xff1a;超快速成&#xff0c;零基础掌握C#开发中最重要的概念抽丝剥茧&#xff0c;C#面向对象快速上手Winform&#xff0c;最友好的桌面GUI框架 委托的概念 委托这个名字取的神乎其神的&#xff0c;但实质是函数式编程&#…

网络攻防技术--第五次作业

文章目录作业五一、 什么是恶意代码&#xff1f;恶意代码主要类型有哪些&#xff1f;二、 恶意代码的基本技术主要包括哪几种&#xff1f;三、 什么是特洛伊木马&#xff1f;有什么特点&#xff1f;四、 什么是计算机病毒&#xff1f;其有哪几个基本组成部分&#xff1f;五、 什…

项目管理工具能做什么 它给企业带来哪些作用

一个项目经理&#xff0c;如果要想管理好项目&#xff0c;那么一定要掌握项目管理的方法与工具。在项目管理过程中总会借助一些工具来掌控项目点点滴滴&#xff0c;这不仅可以提高团队的生产力和效率&#xff0c;还可以让项目组织在不同项目带来的影响变化中做好准备。 项目管…

每天一道大厂SQL题【Day03】订单量统计

每天一道大厂SQL题【Day03】订单量统计 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&#xff0c…