自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C6678 TSCL/TSCH的故事

最近在工作中遇到了一个奇怪的事情,就是使用TSCH/TSCL拼接出来的64bit的时钟计数在计算超时的过程中会有异常,改成只读取TSCL 32bit就能暂时规避这个问题。为了查看这个查找这个问题的根因,还特意搭建了测试工程,但是没能复现。然后就是查资料,发现有一个声明很有意思。“When reading the full 64bit value,it must be ensured that no interrupts are serviced between the tow MVC .

2020-12-19 16:53:11 1653 1

原创 开源操作系统下\bin文件和\lib的区别

最近的工作中发现操作系统中有很多函数可以直接用,所以直接用-l+库名就直接引用了。后续同事就问\bin目录下的文件里面的函数是否也可以直接像库一样使用?在网上搜索了很多,发现不可以。这篇就记录下,\bin目录下的文件跟库的区别。最大的问题就在于bin目录下程序内部的符号是不可以重定位的。BIN 文件是经过压缩的可执行文件,去掉ELF格式的东西。是直接的内存映像的表示。在系统没有加载操作系统的时候可以执行。库函数类似ELF文件,包含重定位表等信息。需要操作系统导出符号等信息才可以执行;

2020-11-06 11:10:16 757

原创 objdump命令助你看计算机执行过程

objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。最近的工作需要将一个模块部署在不同的硬件平台上,所以特别关注不同硬件平台的编译环境和指令差异。为了看不同平台编译出来的可执行文件的差异,所以用到了这个objdump指令,特在此记录这个指令的常用方法。本人测试是在MAC OS上做的,$objdump -versionApple LLVM version 10.0.1 (clang-1001.0.46.4) Optimized build. Default t

2020-09-11 14:25:38 305

原创 浮点计算学习笔记2

问:浮点数在计算机中的值怎么跟输入的值不一样?例如,float a = 5.6,b=5.0;printf("%.7f",a-b);得到的结果就不是0.6因为0.6不能精确地用2的幂次方代替,所以计算机保存的是舍入的近似值一个十进制小数要能用浮点数精确地表示的必要条件是最后一位必须是 50.1 = 2^(-1) = 0.50.01 = 2^(-2) = 0.250.001 = 2^(-3) = 0.1250.0001 = 2^(-4) = 0.06250.00001 = 2^(-5) =

2020-09-04 16:03:22 113 1

原创 浮点计算学习笔记

最近工作一直围绕浮点计算,所以在此记录自己的学习过程。学习教材《浮点计算-编程原理、实现与应用》 刘纯根 著问:double的精度是多少?(同事做模型设计的时候希望知道什么时候计算认为此小数为0)1984年,IEEE推出了《IEEE二进制浮点运算标准754》链接--http://www.dsc.ufcg.edu.br/~cnum/modulos/Modulo2/IEEE754_2008.pdf1987年,IEEE推出了《IEEE通用数制的浮点运算标准》 --IEEE854标准https:.

2020-09-03 11:50:12 244

原创 将LAPACK静态库编译到自己的动态库中

最近用LAPACK库中的函数来实现一些矩阵求逆和拟合的算法,为了不引入第三方库,就想着将LAPACK库编进自己的库中。在网上搜了很多,发现这个指令可以解决问题:

2020-08-19 11:54:59 499

翻译 转载翻译“字节对齐”

原文的网址链接为:https://developer.ibm.com/articles/pa-dalign/因为从事着嵌入式的开发工作,所以经常遇到因为字节对齐的问题。所以在此系统性的学习,为什么要字节对齐,如何避免因为字节不对齐而引起的问题。数据对齐:展翅高飞--为了优化执行效率和正确性需要对齐你的数据1.内存访问粒度编程者习惯将内存看做一个简单的字节数组。在C及其后续的编码语言中,char *是普遍存在的,表示“一块内存”,甚至在Java™中有byte[]来表示原始内存。图1.编

2020-08-17 11:37:45 192

原创 记一次Matlab 错误 Error using \ Matrix dimensions must agree

在测试方程式Ax = b的函数时,用MATLAB的结果做对比,所以用了MATLAB中的 ‘’ 运算MATLAB代码如下:matA = [3,2,0,0,3;1,-2,-1,0,0;8,0,1,-1,0;-1,0,2,1,0];vecb = [-4,5,10,2];x = matA\vecb;出现标题中的错误提示仔细查看MATLAB的使用说明,链接如下:https://www.mathworks.com/help/matlab/ref/mldivide.htmlvecb应该是列向量,所以应该是

2020-08-13 17:35:03 1969

原创 记一次Bus Error

在SUNOS中调试矩阵操作时发生错误“Bus Error”,发现是访问了未初始化的指针,记录一下,后续系统性学习。

2020-08-13 15:38:14 80

原创 记录一次Segmentation fault

在测试分配内存函数时,发现有错误“Segmentation fault”最后发现是函数没有申明,声明后就解决了这个错误。

2020-08-12 17:26:26 73

原创 MATLAB dlmwrite函数助你生成矩阵数据文件

本人在测试自己写的矩阵运算库时,需要不同的随机的矩阵输入数据,所以学习了MATLAB中dlmwrite函数,官方介绍链接:https://ww2.mathworks.cn/help/matlab/ref/dlmwrite.html?s_tid=srchtitle因为C读入数据是按照分隔符‘,'来区分的,所以用这条指令:dlmwrite(filename,M,delimiter)将数组M写入文件filename,并使用指定分隔符delimiter分隔各数组元素示例:octav...

2020-08-06 11:08:37 609

原创 创建稀疏矩阵--随机值随机分布

为验证牛顿迭代求逆的优势,需要输入拥有大量0元素的大型矩阵,稀疏矩阵。MATLAB中有关稀疏矩阵的官方链接如下:https://ww2.mathworks.cn/help/matlab/sparse-matrices.html?s_tid=srchtitle

2020-08-06 10:57:00 467

原创 MATLAB随机生成数值randi

MATLAB中randi函数用于产生均匀分布的伪随机整数。跟上一个博客中介绍的rand的用法区别主要在于第一个入参,此函数的第一个入参表示产生的伪随机整数的最大值。MATLAB官方介绍链接如下:https://ww2.mathworks.cn/help/matlab/ref/randi.html本人是在创建稀疏矩阵,需要随机填充某行某列的数据,所以用到了此函数octave:26> randi(100,1,1)ans = 11octave:27> randi(100)

2020-08-05 15:13:56 1445

原创 MATLAB随机值产生rand

MATLAB的有关随机数生成的官网介绍链接如下:https://ww2.mathworks.cn/help/matlab/random-number-generation.html?s_tid=CRUX_lftnav因为要对开发的程序进行测试,输入源需要随机数值,所以学习了此部分。下面的实例是在octava上实现的。此处只介绍用的最多的rand函数,此函数生成均匀分布的随机值,数值的范围是(0,1)此函数的参数几乎都是标识维度,不输入参数则标识随机产生一个数值1.1 X = rand返.

2020-08-05 14:50:38 394

原创 解决“extra tokens at end of #include directive”警告

在引入一个源数据文件时产生的告警:源代码是这样的double A[5000*36] ={ #include "input.dat";}应该修改成double A[5000*36] ={ #include "input.dat"}

2020-08-03 14:13:20 8220 2

原创 牛顿迭代法进行求逆

算法优势:1.适用于解大型稀疏(矩阵中0元素居多)矩阵;2.矩阵的主对角元素不为0,且主对角元素的值大于改行其他所有元素的绝对值之和。基础求逆算法如下:此算法推导公式如下:牛顿迭代的基础公式如下:,迭代的收敛条件为:...

2020-08-03 10:10:40 2235 1

原创 利用dgetrf和dgetri进行LU分解求逆

LU分解求逆的数学原理:L是下三角矩阵,U是上三角矩阵下三角和上三角矩阵关于矩阵的求逆和乘积都具有封闭性,即下三角的矩阵的逆矩阵是下三角矩阵,两个下三角矩阵的乘积还是下三角矩阵;而上三角矩阵的逆矩阵是上三角矩阵,连个上三角矩阵的乘积还是上三角矩阵。此算法的限制:1.A是方阵2.A是可逆的,满秩,非奇异矩阵算法实现:1.dgetrf进行LU分解2.dgetri根据dgetrf的结果进行求逆备注:1.dgetrf的函数说明参考链接:http://www.ne.

2020-08-03 08:40:07 2073

原创 利用dgesvd和dgemm进行SVD分解求逆

SVD分解的数学原理:1. dgesvd函数对A进行SVD分解,可以得到U,S,VT(V的转置)2.对S进行求导,得到3.dgemm函数利用前两个参数的设置(‘N'/'T')计算矩阵乘法,从而得到A的广义逆的结果备注:dgesvd的函数说明参考链接:http://www.netlib.org/lapack/explore-html/d1/d7e/group__double_g_esing_ga84fdf22a62b12ff364621e4713ce02f2.htmldgesv

2020-08-03 08:28:50 696 1

原创 LAPACK及BLAS库在MAC/Linux下编译

LAPACK及BLAS库在MAC/Linux下编译 LAPACK及BLAS库是开源的,主要用于求解科学与工程计算机中最常见的数值线性代数问题。 官网说明及下载链接为: http://performance.netlib.org/lapack/ 编译步骤: 下载解压后: 1. make.inc.example重命名为make.inc 2. 修改Makefile文件中 .PHONY: lib lib: lapacklib tmglib 增加blas库编译,即修改成 lib: bl

2020-07-31 15:15:55 1475

空空如也

空空如也

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

TA关注的人

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