debug OpenBLAS library 和 应用示例

1. 构建openblas lib

git clone git@github.com:OpenMathLib/OpenBLAS.git

cd OpenBLAS/
如果要安装在自定义文件夹中,可以修改 PREFIX 的定义:

PREFIX = /opt/OpenBLAS
修改成
PREFIX = ../local/

然后构建:
make -j
make install

如果要构建 debug 版本的openblas,则可以在  Makefile.rule中,修改如下 大约在244行:


# Build Debug version
# DEBUG = 1
修改为
# Build Debug version
DEBUG = 1

然后在执行构建指令:
make -j
make install

2. 调试openblas 示例


2.1 示例1,LU分解

//hello_LAPACK_sgetrf.c//#include <lapack.h>
#include <f77blas.h>
#include <stdio.h>int main() {int n = 3; // Dimension of the matrixfloat A[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0}; // Input matrixint lda = n; // Leading dimension of Aint ipiv[n]; // Array to store pivot indicesint info; // Output variable for error info// Call the LAPACK sgetrf function for LU decompositionsgetrf_(&n, &n, A, &lda, ipiv, &info);if (info == 0) {printf("LU decomposition successful!\n");// Print the decomposed matrix Aprintf("Decomposed matrix A:\n");for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {printf("%f ", A[i + j*n]);}printf("\n");}printf("ipiv=\n");for(int i=0; i<n; i++)printf("%d  ", ipiv[i]);printf("\n");} else {printf("LU decomposition failed!\n");}return 0;
}

运行效果及matlab验证:

2.2 示例2 QR分解

hello_qrf.c
#include <stdio.h>
#include <lapack.h>int min(int m, int n){  return m<n? m:n;}int main() {int m = 3; // Number of rows in the matrixint n = 2; // Number of columns in the matrixdouble A[] = {1.0, 4.0, 2.0, 5.0, 3.0, 6.0}; // Input matrixint lda = m; // Leading dimension of Adouble tau[min(m,n)]; // Array to store elementary reflectorsint info; // Output variable for error infoint lwork = -1;double* work = (double*)malloc(8);// Call the LAPACK dgeqrf function for QR decompositiondgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info);lwork = (int)work[0];printf("lwork=%d\n", lwork);work = (double*)malloc(lwork*sizeof(double)); // Workspace array// Call the LAPACK dgeqrf function again with correct workspacedgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info);if (info == 0) {printf("QR decomposition successful!\n");// Print the decomposed matrix Aprintf("Decomposed matrix A:\n");for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {printf("%f ", A[i + j*m]);}printf("\n");}} else {printf("QR decomposition failed!\n");}return 0;
}

运行效果及 matlab 验证:

Makefile:

INC =  -I ../local/include
#LD_FLAGS = -L../local/lib -lopenblas
#LD_FLAGS = /home/hipper/ex_openblas/tmp_/local/lib/libopenblas_skylakexp-r0.3.26.dev.so
EXE := hello_LAPACK_sgetrf hello_qrfall: $(EXE)hello_qrf: hello_qrf.o
hello_LAPACK_sgetrf: hello_LAPACK_sgetrf.o%.o: %.cgcc -g $< -c -o $@ $(INC)%: %.o /home/hipper/ex_openblas/tmp_/local/lib/libopenblas_skylakexp-r0.3.26.dev.agcc -g $^    -o $@ $(LD_FLAGS) -lm -lgfortran#$(LD_FLAGS).PHONY: clean
clean:-rm -rf $(EXE) *.o

调试效果:


这里使用的是静态库
也可以使用动态库

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抽烟识别摄像机

抽烟识别摄像机是一种利用计算机视觉和人工智能技术的设备&#xff0c;能够实时监测和识别吸烟行为。该摄像机通过分析人体姿态和动作&#xff0c;识别出可能的吸烟行为&#xff0c;并及时发出警告或报警。这种摄像机可以广泛应用于公共场所、办公场所、学校和医疗机构等地方&a…

仰望星空,也要鲜花与掌声

在各种武侠文化的渲染下&#xff0c;我从小萌生了一种奇怪的想法&#xff0c;就是弄任何事都要偷偷摸摸的钻研&#xff0c;最后惊艳所有人&#xff1b;因此无论是大学还是毕业工作中&#xff0c;很多事情都希望做到“完美”再同步给“外界”&#xff0c;如以下几个例子 学习Sp…

vue element plus Typography 排版

我们对字体进行统一规范&#xff0c;力求在各个操作系统下都有最佳展示效果。 字体# 字号# LevelFont SizeDemoSupplementary text12px Extra SmallBuild with ElementBody (small)13px SmallBuild with ElementBody14px BaseBuild with ElementSmall Title16px MediumBuild w…

恭喜Zhilong LI同学通过Oracle 19c OCP考试

Oracle 19c OCP两门科目考试成绩、证书展示&#xff1a; Oracle 19c OCP 1z0-082考试详情 Oracle 19c OCP 1z0-083考试详情

vue element plus 安装

环境支持# Element Plus 可以在支持 ES2018 和 ResizeObserver 的浏览器上运行。 如果您确实需要支持旧版本的浏览器&#xff0c;请自行添加 Babel 和相应的 Polyfill 。 由于 Vue 3 不再支持 IE11&#xff0c;Element Plus 也不再支持 IE 浏览器。 Edge ≥ 79Firefox ≥ 78C…

第87讲:XtraBackup备份工具的核心技术要点及全库备份、恢复案例

文章目录 1.XtraBackup备份工具的简介2.XBK备份工具的安装3.XBK备份工具的使用语法4.XBK备份前的准备5.使用XBK对全库进行备份5.1.XBK备份全库数据的语法格式5.2.使用XBK进行全库备份5.3.查看XBK备份的数据文件5.4.备份过程中生产的XBK文件 6.模拟故障案例并使用XBK恢复备份的数…

人工智能:未来智慧城市建设的“智慧大脑”与核心价值

目录 一、引言 二、人工智能在智慧城市中的应用实例 三、人工智能对智慧城市建设的核心价值 四、面临的挑战与未来展望 五、结语 六、附&#xff1a;智慧城市全套解决方案大合集 - 下载 一、引言 随着科技的飞速发展&#xff0c;智慧城市的概念逐渐深入人心。智慧城市利…

nginx+keepalived双主模式双主热备

目录 一、双主模式原理 1. nginxkeepalived主备模式缺点 2. 主备模式和双主模式的区别 二、配置文件 1. nginx01的keepalived.conf 2. nginx02的keepalived.conf 3. 检测nginx存活脚本文件nginx_check.sh 三、测试准备 1. 启动nginx01、nginx02 2. 启动keepalived 3. 查看网卡信…

【REST2SQL】07 GO 操作 Mysql 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xf…

树莓派非常实用的程序-2 vcgencmd

vcgencmd 工具用于从Raspberry Pi上的VideoCore GPU输出信息。您可以在 https://github.com/raspberrypi/userland/tree/master/host_applications/linux/apps/gencmd[Github].上找到 vcgencmd 实用程序的源代码。要获取支持的所有 vcgencmd 命令的列表&#xff0c;请使用 vcge…

【大数据进阶第三阶段之Hue学习笔记】Hue的安装和使用

1、 Hue的安装 1.1 上传解压安装包 Hue的安装支持多种方式&#xff0c;包括rpm包的方式进行安装、tar.gz包的方式进行安装以及cloudera manager的方式来进行安装等&#xff0c;我们这里使用tar.gz包的方式来进行安装 Hue的压缩包的下载地址&#xff1a; http://archive.cloude…

网络安全B模块(笔记详解)- 漏洞扫描与利用

漏洞扫描与利用 1.通过Kali对服务器场景server2003以半开放式不进行ping的扫描方式并配合a,要求扫描信息输出格式为xml文件格式,从生成扫描结果获取局域网(例如172.16.101.0/24)中存活靶机,以xml格式向指定文件输出信息(使用工具Nmap,使用必须要使用的参数),并将该操…