python矩阵运算内存占用计算
半精度单精度双精度
三者分别是16位、32位、64位,一个字节8位因此分别是2位、4位、8位,它们都分成3部分,符号位,指数和尾数。不同精度只不过是指数位和尾数位的长度不一样:

TiB和TB
TB,GB这些是1000进制,1TB=1000 GB
TiB GiB这些是1024进制,1TiB = 1024GiB
TiB和TB之间换算: 1TiB = 1.099511627776 TB (具体换算过程就不写了,自己拿个小本本算)
TB(Terabyte) 是国际单位制 International System of Units (SI).是十进制,包括:kilo, mega, giga, tera, peta, exa, zetta and yotta
TiB(Tebibyte)是International Electrotechnical Commission (IEC) 单位,是二进制,包括:kibi, mebi, gibi, pebi, exbi, zebi and yobi
矩阵运算过程
a=np.ones([9216,9216,9216],dtype=float)
b=np.ones([9216,9216,9216],dtype=float)
gpu.matmul(a,b)
报错:
numpy.core._exceptions.MemoryError: Unable to allocate 5.70 TiB for an array with shape (9216, 9216, 9216) and data type float64
5.70TiB怎么计算出来的,过程如下:
921
6
3
×
8
×
÷
102
7
4
=
5.6953125
(
T
i
B
)
≈
5.70
T
i
B
9216^{3}\times8\times\div1027^{4}=5.6953125(TiB)\approx5.70TiB
92163×8×÷10274=5.6953125(TiB)≈5.70TiB
921
6
3
9216^{3}
92163是矩阵的形状大小,然后因为每个元素都是float64,占8位因此乘以8。
102
7
4
1027^{4}
10274是1TiB,1TiB=1024GiB,1GiB=1024MiB, 1MiB=1024KiB,1KiB=1024Byte字节,1Byte=8bit二进制位。
智能推荐
冒泡排序,及改进方式,性能优化400%>>>附图解加源码
首先源码附上,源码中带有注释,看不懂没关系,源码后面附带图解,最后附上代码效率提升图 源码如下: 方案一:其实实现很简单,两层循环,每次内层迭代出最大的一个值,将其放入数组最后一个位置,外层循环的末端便往前移一位。其原理如下图 方案一代码块: 方案二:优化改进 仔细观察上面的图,我们不难发现当迭代到图下这样的情况时,其实已经全排序好了,但是我们还是需要对它进行1,2,3,4,5,6的迭代,这些情况...
css3常用选择器
先介绍一下基本选择器,如下几种 *:通配符。选择页面的所有元素 E:元素选择器。对页面的一些元素进行选择,如p,div,li等 .class:类选择器 #id:id选择器。一个Id在一个页面中只能选择,这是和类选择器的区别 E F:后代选择器。如ul li。选中ul下的li E>F:子元素选择器。如下,可以用 h1 > strong {color:red;}使h1的子元素strong变...
python is not set from command line or npm configuration
问题 猜测原因 python版本冲突 解决方案 去官网找到最新版本python 点击下载,注意记住你下载的目录,下载好以后,打开这个目录下的文件夹,Python310, 整个文件夹复制一下 在项目里运行npm config list --json 找到python的路径 我的是 C:\\Python27\\python.exe 说明项目里用的还是py...
Java8 Stream流操作
前言 我们常常需要将一个容器转化成另一个容器,或是对这个容器中的数据进行批量处理,这时使用Stream流可以大大减少我们的工作量。 1 Stream概述 Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。 那么什么是Stream? Stream将要处理的元素集合看作一种流,在流的过程中,借助St...
带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑
在Windows下进行C++的开发,不可避免的要与Windows的底层库进行交互,然而VS下的一项设置MT、MTd、MD和MDd却经常让人搞迷糊,相信不少人都被他坑过,特别是你工程使用了很多第三库的时候,及容易出现各种链接问题。看一下下面这个错误提示: LIBCMT.lib(_file.obj) : error LNK2005: ___initstdio already defined...
猜你喜欢
git 设置 gitignore 忽略 __pycache__
清除git缓存中的pycache 直接删掉硬盘上的文件 如果我想保留硬盘上的这个文件,而只删除版本管理中的文件,就需要加入--cached参数。 切换分支出现问题 尽管我已经删除了__pycache__,硬盘也没有了,但是切换分支的时候依然是会提示本地重写的情况。 提示:需要我在切换分支之前,提交一次更新。 提交了更新之后,再来尝试切换分支,如下: 成功了,说明当做了任何变更之后,切换分支前需要执...
人生苦短,我用Python(二)— 爬取会议网站 EasyChair Smart CFP
寒假留校帮学长写了个爬虫,抓取会议网站上一些CFP信息。想着把一些知识点、坑点记下来,一来做个小总结给工作收收尾,二是以后再遇到好从容应对。 这是我写的第二个比较完善的爬虫了,比第一个要简单许多,完全过程化的代码,而且easychair这个网站页面布局比较友好,适合python新手、前端小白入门练习。但这个网站反爬比较厉害,写爬虫的过程中就被ban了好几次…… 制定抓取...
(三)Single Threaded Execution模式
一、定义 一个线程执行。有时也称为Critical Section(临界区)。 二、模式案例 案例: 假设有三个人,频繁地通过一扇门,规定每次只能通过一个人,当通过一个人时,程序会将通过的总人次加1,同时记录该次通过人的姓名和出生地。 门的定义: 人的定义 测试类 多次执行后发现可能出现以下结果: &...
Linux服务管理之系统管理员需要掌握的命令
为什么80%的码农都做不了架构师?>>> systemd的主要命令行工具是systemctl。大多数Linux系统管理员应该都已经非常熟悉系统服务和init系统管理,比如service,chkconfig和telinit命令的使用。systemd也完成同样的管理任务,只是命令工具systemctl的语法有所不同而已。 1. sysvinit和system...
StringBuilder和StringBuffer的区别(检查多线程环境下会触发的问题和异常)
StringBuilder和StringBuffer的区别在哪里? 当接触这个问题的时候,我们可能第一反应就是,StringBuilder是线程不安全的,StringBuffer是线程安全的 为什么StringBuilder是线程不安全,StringBuffer是线程安全? ...
