首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >64位体系结构中的32位操作系统:计算上的差异?

64位体系结构中的32位操作系统:计算上的差异?
EN

Stack Overflow用户
提问于 2018-07-26 15:58:19
回答 1查看 84关注 0票数 0

我目前正在开发python 3,特别是我正在尝试使用librosa模块在Raspberry pi 3模型B(带有自定义的linux发行版32位)中计算mel过滤的频谱图。用于计算的代码、数据和参数与我在PC上使用的完全相同(Ubuntu 14.04 64位)。乍一看,我认为这是运行在电路板内部的librosa模块的错误,所以开始检查函数是否与PC中的结果相同。为此,我调试了"melspectogram“函数的代码(Librosa的一部分)。代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def melspectrogram(y=None, sr=22050, S=None, n_fft=2048, hop_length=512,
                   power=2.0, **kwargs):

    S, n_fft = _spectrogram(y=y, S=S, n_fft=n_fft, hop_length=hop_length,
                            power=power)

    # Build a Mel filter
    mel_basis = filters.mel(sr, n_fft, **kwargs)

    return np.dot(mel_basis, S)

函数"_spectrogram“和"filters.mel()”在Raspberry中给出了正确的结果。问题似乎出在numpy点积中,它为某些索引返回了完全错误的结果。这是PC和电路板之间所有差异的调试视图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
###### DEBUG START-END: 206-223
                           PC                    BOARD
DIFFERENCE: (48, 11) 0.2191838420044883 != 0.21918384200448832
DIFFERENCE: (48, 15) 19.153408522395306 != 19.15340852239531
DIFFERENCE: (48, 17) 5.670882080544281 != 5.670882080544282
DIFFERENCE: (48, 24) 10.492875862139803 != 10.492875862139805
DIFFERENCE: (48, 25) 12.302969461756339 != 12.30296946175634
DIFFERENCE: (48, 26) 27.631040740403733 != 27.63104074040373
DIFFERENCE: (48, 29) 5.139375749153835 != 5.139375749153836
DIFFERENCE: (48, 34) 7.724733224346115 != 7.7247332243461155
DIFFERENCE: (48, 40) 0.09762231547647067 != 0.09762231547647066
DIFFERENCE: (49, 4) 0.011647182215426476 != 0.023294364430852952
DIFFERENCE: (49, 5) 0.011647182215426476 != 0.023294364430852952
DIFFERENCE: (49, 6) 0.011647182215426476 != 0.023294364430852952
DIFFERENCE: (49, 7) 0.011647182215426476 != 0.023294364430852952
DIFFERENCE: (49, 8) 0.011647182215426476 != 0.023294364430852952
DIFFERENCE: (49, 9) 0.024662982979241885 != 0.03631016519466836
DIFFERENCE: (49, 10) 0.011647182215426476 != 1736.0081098705543
DIFFERENCE: (49, 11) 0.011647182215426476 != 192.99921646614675
DIFFERENCE: (49, 12) 1.2357100597784794 != 1835.7802873745509
DIFFERENCE: (50, 4) 0.01162755916968538 != 0.02325511833937076
DIFFERENCE: (50, 5) 0.01162755916968538 != 0.02325511833937076
DIFFERENCE: (50, 6) 0.01162755916968538 != 0.02325511833937076
DIFFERENCE: (50, 7) 0.01162755916968538 != 0.02325511833937076
DIFFERENCE: (50, 8) 0.01162755916968538 != 0.02325511833937076
DIFFERENCE: (50, 9) 0.05210700691405087 != 333.83850661974526
DIFFERENCE: (50, 10) 0.021008006026422096 != 3965.2472056464244
DIFFERENCE: (50, 11) 0.10780954139916578 != 1530.5278140594276
DIFFERENCE: (50, 12) 0.41251995176336065 != 606.056179725736
DIFFERENCE: (51, 4) 0.011622992280708504 != 0.023245984561417007
DIFFERENCE: (51, 5) 0.011622992280708504 != 0.023245984561417007
DIFFERENCE: (51, 6) 0.011622992280708504 != 69.0566858320545
DIFFERENCE: (51, 7) 0.011622992280708504 != 825.1101267685075
DIFFERENCE: (51, 8) 0.011622992280708504 != 83.02070759794061
DIFFERENCE: (51, 9) 0.011622992280708504 != 931.8205273506092
DIFFERENCE: (51, 10) 0.4501778264666223 != 623.5746140044275
DIFFERENCE: (51, 11) 0.042509683378604 != 1987.8635720924942
DIFFERENCE: (51, 12) 1.884975416295644 != 450.9067305393012
DIFFERENCE: (52, 4) 0.01157539610226416 != 0.02315079220452832
DIFFERENCE: (52, 5) 0.01157539610226416 != 0.02315079220452832
DIFFERENCE: (52, 6) 0.01157539610226416 != 15.369480003003801
DIFFERENCE: (52, 7) 0.01157539610226416 != 183.44230139508068
DIFFERENCE: (52, 8) 0.01157539610226416 != 22.103013355309322
DIFFERENCE: (52, 9) 0.01157539610226416 != 16.947300443667636
DIFFERENCE: (52, 10) 0.7210348336411665 != 0.7326102297434307
DIFFERENCE: (52, 11) 0.07624676888597205 != 38.69928692732359
DIFFERENCE: (52, 12) 1.227613362577455 != 146.59676772956414
DIFFERENCE: (59, 4) 0.011639905409540543 != 0.023279810819081086
DIFFERENCE: (59, 5) 0.011639905409540543 != 0.023279810819081086
DIFFERENCE: (59, 6) 0.011639905409540543 != 0.023279810819081086
DIFFERENCE: (59, 7) 0.011639905409540543 != 0.023279810819081086
DIFFERENCE: (59, 8) 0.011639905409540543 != 0.023279810819081086
DIFFERENCE: (59, 9) 0.015804205007430926 != 0.02744411041697147
DIFFERENCE: (59, 10) 0.011639905409540543 != 4.896282342021101
DIFFERENCE: (59, 11) 0.024309464524604488 != 3.1951156889432926
DIFFERENCE: (59, 12) 0.014833562550355634 != 6.938331348819726

用于运算的矩阵是60x129和129x49。然后,我只取了矩阵的一部分(特别是S的第8列和mel_basis的第48和49行),结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DIFFERENCE: (0, 0) 0.011617925176483229 != 0.011617925176483227
DIFFERENCE: (1, 0) 0.011647182215426474 != 0.011647182215426476

然后再次尝试使用mel_basis行49和50,相同的s:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DIFFERENCE: (0, 0) 0.011647182215426474 != 0.011647182215426476
DIFFERENCE: (1, 0) 0.011627559169685383 != 0.01162755916968538

一般来说,如果我们进行更少的计算,误差似乎会更小。

最后,为了检查,我把树莓树计算出的结构S和mel_basis在PC上计算了点积。结果是正确的。这让我认为这与硬件有关,也可能与浮点有关,即使这会很奇怪,因为ARM Cortex A53完全符合IEEE754标准。32位操作系统能让情况有所不同吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-26 21:00:34

有许多可能的问题:

在PC上,这取决于您的程序使用哪种浮点硬件。原生x87在内部使用80位扩展浮点数,如果在每次操作后没有转换和存储结果-这将导致一些差异。

Python解释器可以使用浮点数学的不同实现。如果您使用相同的编译器编译相同的Python解释器,但使用不同的编译选项,则甚至可能会产生略有不同的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51543078

复制
相关文章
操作系统的运行机制体系结构
文章目录 知识概览 操作系统的运行机制体系结构 1. 预备知识:什么是指令 2. 两种指令、两种处理器状态、两种程序 3. 操作系统的内核 4. 操作系统的体系结构 知识回顾与重要考点 知识概览 操作
兮动人
2021/06/11
4970
操作系统的运行机制体系结构
[操作系统]操作系统的运行机制和体系结构
指令分为特权指令和非特权指令,特权指令如内存清零指令,非特权指令如普通的加减乘除指令
唯一Chat
2021/01/02
4960
MySQL中的InnoDB 体系结构(中)
在开始这部分内容之前,我们需要理清buffer和cache的差别,因为在数据库层面会有大量的buffer和cache的术语,我们在学习的时候非常容易混淆。
jeanron100
2019/05/08
8360
MySQL中的InnoDB 体系结构(中)
MySQL中的InnoDB 体系结构(中)
在开始这部分内容之前,我们需要理清buffer和cache的差别,因为在数据库层面会有大量的buffer和cache的术语,我们在学习的时候非常容易混淆。
jeanron100
2019/03/07
1.3K0
MySQL中的InnoDB 体系结构(中)
常见的操作系统与软件系统体系结构介绍
1)Windows 系统: 微软(Microsoft)自1985年推出Windows 1.0以来,Windows系统经历了十多年风风雨雨。从最初运行在DOS下的windows95操作系windows95操作系统Windows 3.x,到现在风靡全球的Windows 9x、Windows 2000、Windows XP、Windows 2003、Windows vista、Windows 2008 、Windows2012、Win 7、Win 8、Win8 or 8.1 、Win10。
全栈工程师修炼指南
2022/09/28
1.1K0
常见的操作系统与软件系统体系结构介绍
32位和64位的操作系统的差异 原
      记得有一次花好长时间装了64位win7系统,谁知道在进行一些操作时卡的不行,随后不得不换回了32位,直到现在才搞清楚原因!
阿dai学长
2019/04/03
1.8K0
32位和64位的操作系统的差异
                                                                            原
机器人操作系统(ROS)中控制与智能的一点差异
通过/backpack_led控制LED灯,/cmd_vel控制Cozmo速度和转向,/say让cozmo开口说话。
zhangrelay
2019/06/25
6340
机器人操作系统(ROS)中控制与智能的一点差异
4-操作系统的运行机制以及体系结构
一般而言,指令可以由高级语言(C,Java,C++)翻译而来,一条高级语言的代码翻译过来可能对应多条指令
Ywrby
2022/10/27
4490
4-操作系统的运行机制以及体系结构
计算上传文件的存放路径
文件上传至服务器中,服务器分成多级文件夹来存放,一种情况是使用当前日期来区分文件夹,一种就是可以用hashcode来区分,就是上面的代码。
HUC思梦
2020/09/03
1.4K0
频率计在实际中的应用
在电子技术领域,频率是一个最基本的参数。频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,这时可以选择使用频率计来进行测量。尤其是频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。
时频专家
2020/03/05
9810
频率计在实际中的应用
在电子技术领域,频率是一个最基本的参数。频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,这时可以选择使用频率计来进行测量。尤其是频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。
时频专家
2020/04/25
5640
频率计在实际中的应用
频率计在实际中的应用
在电子技术领域,频率是一个最基本的参数。频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,这时可以选择使用频率计来进行测量。尤其是频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。
时频专家
2020/09/12
5330
Silverlight与WPF中BeginInvoke的差异
Silverlight/WPF中,如果要在多线程中对界面控件值做修改,用Dispatcher对象的BeginInvoke方法无疑是最方便的办法 ,见:温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值 但今天发现WPF中的BeginInvoke却无法自动将匿名方法/Lambda表达式转变成Delegate类型(注:对委托,匿名方法,Lambda感到陌生的朋友先阅读温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件) silverlight中的代码片
菩提树下的杨过
2018/01/23
1.1K0
C/CPP中的malloc和new的差异
如何申请内存?使用malloc/new,如何为一个类对象申请内存呢?使用new,为什么要设计两套接口呢?差异是什么?
CtrlX
2022/11/14
5000
C/CPP中的malloc和new的差异
Hadoop体系结构中的服务解决介绍
翻了一下最近一段时间写的分享,DKHadoop发行版本下载、安装、运行环境部署等相关内容几乎都已经写了一遍了。虽然有的地方可能写的不是很详细,个人理解水平有限还请见谅吧!我记得在写DKHadoop运行环境部署的时候,遗漏了hadoop服务角色的内容,本篇特地补上这部分内容吧,不然总觉得不舒服。
IT小白龙
2018/09/11
6920
Hadoop体系结构中的服务解决介绍
Flink在多中心/边缘计算上的实践
陈仕明 虎牙数据平台负责人,一直从事数据相关的工作,从最初的企业数仓,到互联网数仓架构,再到大数据系统架构,拥有十年以上的行业经验。
Spark学习技巧
2019/09/10
1K0
Flink在多中心/边缘计算上的实践
《计算机操作系统-第二章》之操作系统的运行机制与体系结构
我们平时所写的代码基本上都是用高级语言所书写的,但是计算机是无法直接识别的就需要编译器将我们所写的代码翻译成计算机能够直接识别的机器语言,而机器语言是用二进制代码表示的计算机直接识别和执行的一种机器指令的集合,综上指令即为二进制。
用户10517932
2023/10/07
2520
《计算机操作系统-第二章》之操作系统的运行机制与体系结构
王道操作系统学习(三) 操作系统运行机制和体系结构
操作系统运行机制和体系结构 指令:能被处理器识别、执行的最基本命令 分为特权指令、非特权指令 特权指令如内存清零指令、非特权指令有加减乘除指令 处理器状态 用户态 目态、核心态 管态 用PSW 程序状态寄存器表示 0为用户态 1为核心态
glm233
2021/03/02
3970
王道操作系统学习(三) 操作系统运行机制和体系结构
【Linux】冯.诺依曼体系结构与操作系统
我们如今的计算机比如笔记本,或者是服务器,基本上都遵循冯诺依曼体系结构,所谓冯诺依曼体系实际上就是我们的计算机是由以下这些硬件构成:输入设备、存储器、运算器、控制器、输出设备。
诺诺的包包
2023/02/27
7730
【Linux】冯.诺依曼体系结构与操作系统
【Linux】冯诺依曼体系结构和操作系统
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
青衫哥
2023/03/31
6860
【Linux】冯诺依曼体系结构和操作系统

相似问题

Matlab与Excel在计算上的差异

21

操作系统中的下载带宽差异?

24

Java框架的体系结构差异

33

操作系统中延迟和抖动的差异

20

检查操作系统之间的CSS差异

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文