Opencv(C++)学习 TBB与OPENMP的加速效果实验与ARM上的实践(三)

接上文,本章尝试在RV1106上使用TBB。依然是一言难尽,此文依然只是记录实践过程。

源码下载,编译TBB
下载地址: https://github.com/oneapi-src/oneTBB
版本使用 oneTBB-2021.11.0,这个版本可以使用cmake编译。

cmake配置完后,进入build目录,使用make指令,正常情况下应该一切正常,遗憾的是编译过程会报如下错误:

/media/oneTBB/src/tbb/../../include/oneapi/tbb/detail/_machine.h:328:5: error: 'fenv_t' does not name a type; did you mean 'dev_t'?fenv_t *my_fenv_ptr;^~~~~~dev_t
compilation terminated due to -Wfatal-errors

经查,fenv_t是跟硬件相关的浮点环境,起初我怀疑是未包含指定的头文件,于是在交叉编译工具链下找到fenv.h头文件加入到爆粗的部分,错误依旧。
然后发现是相关宏定义不存在,于是尝试单独验证fenv.h的有效性。

验证浮点环境的有效性
需要关注的点包括以下几个部分:
1、工具链应该包含支持C99标准的编译器(如gcc或clang),以及相应的库支持。
2、在交叉编译工具链中查找是否存在 <fenv.h> 头文件,这通常是存在于交叉编译链工具下
3、 - 编译时通过 -std=c99 或者 -std=gnu99 参数强制使用C99标准(如果是C++代码,确保编译器同时支持C++和C99混合编译)。
4、- 对于某些交叉编译环境,可能仍需要类似 _GLIBCXX_USE_C99_FENV_TR1 这样的宏定义来开启特定的浮点环境支持。
5、编写一个小测试程序来尝试使用 <fenv.h> 中的功能,并通过交叉编译工具链进行编译和链接,然后在目标平台上运行,以验证实际功能是否有效。

针对以上几点逐步检查后,写了如下代码进行编译验证:
tt.cpp

//#include "fenv.h"
#include <cfenv>
#include <iostream>
class cpu_ctl_env {fenv_t *my_fenv_ptr;
};
int main()
{int cc = 55;std::cout<<"cc " <<cc<<std::endl;//int cc = MAXTEST;//std::cout<<"Test cc"<< cc <<std::endl;return 0;
}

编译验证:
1、直接使用环境UBUNTU自带的指令
运行结果正常:

root@ubuntu:/media/test# g++ -std=c++11 -D_GLIBCXX_USE_C99_FENV_TR1=1 tt.cpp -o tt
root@ubuntu:/media/test# ./tt
cc 55
root@ubuntu:/media/test# 

2、使用交叉编译工具链:

root@ubuntu:/media/test# /opt/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-g++  -std=c++11 -D_GLIBCXX_USE_C99_FENV_TR1=1 tt.cpp -o tt
In file included from tt.cpp:2:
/opt/toolchain/arm-rockchip830-linux-uclibcgnueabihf/arm-rockchip830-linux-uclibcgnueabihf/include/c++/8.3.0/cfenv:61:11: error: '::fenv_t' has not been declaredusing ::fenv_t;^~~~~~
/opt/toolchain/arm-rockchip830-linux-uclibcgnueabihf/arm-rockchip830-linux-uclibcgnueabihf/include/c++/8.3.0/cfenv:62:11: error: '::fexcept_t' has not been declaredusing ::fexcept_t;............

以上截取编辑结果前段显示,可以看到报出未定义的错误,检查交叉编译链工具里的头文cfenv件,可以看到fenv_t的定义就在其中,但无法编译通过。尝试添加命名空间using namespace std。改用<fenv.h>头文件,均报相同错误。

#ifndef _GLIBCXX_CFENV
#define _GLIBCXX_CFENV 1#pragma GCC system_header#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else#include <bits/c++config.h>#if _GLIBCXX_HAVE_FENV_H
# include <fenv.h>
#endif#ifdef _GLIBCXX_USE_C99_FENV_TR1#undef feclearexcept
#undef fegetexceptflag
#undef feraiseexcept
#undef fesetexceptflag
#undef fetestexcept
#undef fegetround
#undef fesetround
#undef fegetenv
#undef feholdexcept
#undef fesetenv
#undef feupdateenvnamespace std
{// typesusing ::fenv_t;using ::fexcept_t;// functionsusing ::feclearexcept;using ::fegetexceptflag;using ::feraiseexcept;using ::fesetexceptflag;using ::fetestexcept;using ::fegetround;using ::fesetround;using ::fegetenv;using ::feholdexcept;using ::fesetenv;using ::feupdateenv;
} // namespace std#endif // _GLIBCXX_USE_C99_FENV_TR1#endif // C++11#endif // _GLIBCXX_CFENV

至此这条路走不通,基本确认未RV1106不支持浮点环境,也就意味着无法使用TBB进行加速。药丸…只能手写线程加速,麻烦很啊。

TIPS:下一步将使用RV1126的交叉编译工具链进行测试,评估下RV1126是否支持该方法。

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

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

相关文章

动手学深度学习v2-线性回归-笔记

简化核心模型 假设1: 影响房价的关键因素是卧室个数&#xff0c;卫生间个数和居住面积&#xff0c;记为 x 1 x_{1} x1​&#xff0c; x 2 x_{2} x2​&#xff0c; x 3 x_{3} x3​假设2: 成交价是关键因素的加权和 y w 1 x 1 w 2 x 2 w 3 x 3 b yw_{1}x_{1}w_{2}x_{2}w_{3…

鲲鹏--垂直生态领导者

这是ren_dong的第24篇原创 1、概述 华为鲲鹏920&#xff1a;性能最高的ARM架构服务器芯片 鲲鹏是华为在芯片领域布局的重要一环 &#xff0c;是垂直生态的领导者&#xff0c;鲲鹏芯片诞生于2020年 &#xff0c;已获得ARMv8架构的永久授权&#xff0c;主要聚焦通用计算领域华为针…

typecho 在文章中添加 bilibili 视频

一、获取视频来源&#xff1a; 可以有2种方式来定位一个 bilibili 视频&#xff1a; 第一种是使用 bvid 参数定位第二种是使用 aid 参数定位 如何获取这两个参数&#xff1f; 首先我们可以看看 bilibili 网站中的视频页面链接其实可以分为两种&#xff1a; 第一种是类似&a…

建材智能工厂数字孪生可视化管控平台,推进建材行业数字化转型

建材智能工厂数字孪生可视化管控平台&#xff0c;推进建材行业数字化转型。随着科技的不断发展&#xff0c;数字化转型已经成为各行各业发展的重要趋势。在建材行业中&#xff0c;智能工厂和数字孪生技术的应用正在改变传统的生产模式和管理方式&#xff0c;为行业的数字化转型…

C语言常见面试题:C语言中如何进行加密解密编程?

在C语言中进行加密和解密编程通常涉及到使用加密算法和相关的库。下面是一些常用的加密和解密算法以及如何使用它们的基本说明&#xff1a; AES加密算法&#xff1a; AES&#xff08;Advanced Encryption Standard&#xff09;是一种常用的对称加密算法。在C语言中&#xff0c;…

clr的执行模型-笔记

学习来源&#xff1a;《CLR via C by Jeffrey Richter 》第四版&#xff0c;第1章 clr的执行模型 1.C#编译生成执行程序集文件 编译文件的组成&#xff1a;pe32/pe32头&#xff0c;clr头&#xff0c;元数据&#xff0c;IL pe32/pe32头&#xff1a;windows标准执行文件头 cl…

mac 12.7.3 Unity 2021.3.14 XCode 14.2 成功将unity游戏编译到IPhone中,并上架appstore

上一篇文章 mac 10.15.7 & Unity 2021.3.14 & XCode 12.4 -&#xff1e; Unity IOS 自动安装 Cocoapods 失败解决方法 从上一篇文章完成后&#xff0c;unity 已经可以导出 xcode 工程&#xff0c;但是&#xff0c;app是没法上架到appstore上的&#xff0c;原因如下&am…

C++函数对象-运算符函数对象 - 比较 - 实现 x == y 的函数对象(std::equal_to)

任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象&#xff0c;同时也提供了许多内置的函数对象。 运算符函数对象 C 针对常用的算术和逻辑运算定义了很多函数对象&#xff1a; 比较 实现 x y 的函数对象 std::equal_to template< class T >…

DelayQueue的使用

具体思路&#xff1a; 在容器初始化的时候就创建出一个 延迟队列 然后项目启动后随即启动一个线程一直监听这个队列 手动调用接口往队列中添加任务 依赖 一个最简单的web的应用即可项目文件结构 第一步&#xff1a;在项目启动的时候就创建出一个延迟队列 Configuration publ…

小程序定制开发前,应该考虑些什么?

引言 在移动互联网时代&#xff0c;小程序已经成为许多企业和个人推广业务、提供服务的理想平台。然而&#xff0c;在进行小程序定制开发之前&#xff0c;开发者和业务方需要细致入微地考虑一系列关键因素&#xff0c;以确保最终的小程序既能满足用户需求&#xff0c;又能够顺…

PHP入门指南:起步篇

PHP入门指南&#xff1a;起步篇 PHP入门指南&#xff1a;起步篇什么是PHP&#xff1f;PHP 的优点PHP 开发环境搭建选择本地服务器软件包安装PHP环境配置Web服务器和PHP测试PHP安装 第一个PHP脚本PHP基础语法标记注释变量数据类型常量条件语句循环函数 PHP入门指南&#xff1a;起…

Oracle Server一台价值百万的服务器内存更换过程

数据库代码敲多了&#xff0c;看乏了吧&#xff01; 带各位DBA看看你们的数据库运行在什么样的硬件上。 1、故障现象 事发时2号位置报警 登录ILO发现内存报警 查看详细信息 查看详细报警 2、关于ORACLE 服务器DIMM 备用 默认情况下在 Oracle ILOM 中启用 DIMM 备用。由 DIMM 提…

[linux] kolla-ansible 部署的openstack 修改mariadb默认端口号

kolla-ansible 部署前修改global.yml #freezer_database_backend: "mariadb" database_port: 9306 mariadb_port: 9306如果已经部署成功&#xff0c;直接修改配置文件里的端口号重启是没有用的&#xff0c;怀疑内部做了缓存&#xff0c;查看openstack 使用的memcach…

yarn/npm certificate has expired

目录 报错 原因&#xff1a;HTTPS 证书验证失败 方法 a.检查网络安全软件&#xff1a;可能会拦截或修改 HTTPS 流量 b.strict-ssl:false关闭验证【临时方法】 报错 info No lockfile found. [1/4] Resolving packages... error Error: certificate has expired at TLS…

Java类的继承

XHTMLMapper继承 XWPFDocumentVisitor&#xff1a; 由于endVisitTableCell是抽象方法&#xff0c;XHTMLMapper中必须要实现&#xff1b; existErr()子类是否重写都是自由的&#xff1b; public abstract class XWPFDocumentVisitor<T, O extends Options, E extends IXWPFM…

Unity类银河恶魔城学习记录1-12 PlayerComboAttack源代码 P39

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili PlayerPrimaryAttack.cs using System.Collections; using System.Collect…

实时语音转写的前端实现方案

// 创建一个音频上下文 const audioContext new (window.AudioContext || window.webkitAudioContext)(); // 创建一个MediaStreamSourceNode&#xff0c;用于获取用户的麦克风输入 navigator.mediaDevices.getUserMedia({ audio: true }) .then(stream > { const m…

音箱、功放播放HDMI音频解决方案之HDMI音频分离器HHA

HDMI音频分离器HHA简介 HDMI音频分离器HHA具有一路HDMI信号输入&#xff0c;转换成一路HDMI信号、一路5.1光纤音频信号、一路5.1 SPDIF/同轴音频信号和一路模拟左右声道立体声信号输出&#xff0c;同时还支持EDID存储及兼容HDCP功能&#xff1b;分辨率最高支持1920*1080p&#…

国产软件很流氓?4款没有广告的黑科技软件,白嫖党有福了

提到国产软件&#xff0c;许多人可能会想到一些负面的标签&#xff0c;如“流氓、捆绑、广告多”。然而&#xff0c;事实上&#xff0c;国内也有许多良心软件&#xff0c;不仅功能强大&#xff0c;而且完全免费。 1、原本&#xff08;图片处理神器&#xff09; 在日常生活中和…

国内最全的Spring Boot系列之七

• 阿里巴巴前高级研发工程师 • 三家千万级互联网企业技术顾问 • MBTI/盖洛普技术专家 • 厦门某高校外聘教师 • 51CTO特约合作讲师 • 网易云课堂签约讲师 •《深入理解设计模式》作者 一转眼马上要过年了&#xff0c;回首2023年&#xff0c;感觉自己无所事事、碌碌无…