树莓派5 gpu 加速

news2024/10/21 5:26:05

树莓派 5 配备了时钟频率 800 MHz VideoCore VII GPU,是用于图形处理的专用硬件,主要用于图形加速(如视频解码、显示等)。这个 GPU 的主要目标不是像 NVIDIA 或 AMD GPU 那样用于高性能通用计算(如深度学习加速)。不过,这个 GPU 支持 OpenGL 和 OpenCL,通过适当的设置和库,还是可以利用 GPU 的部分功能来加速特定的任务。利用 OpenCL 和 TensorFlow Lite 等库,仍然可以在树莓派上进行部分 GPU 加速任务。

树莓派的 GPU 性能虽然比不上专用的高性能 GPU,但在适当的优化下仍然能够胜任一些轻量级的深度学习和计算任务。

1 GPU 检查

1.1 查看和验证树莓派 GPU

查看树莓派的硬件配置,确认 GPU 的存在及其参数:

vcgencmd version

# 2024/09/10 14:40:30
# Copyright (c) 2012 Broadcom
# version 5be4f304 (release) (embedded)

通过上面的命令,可以查看当前的 GPU 固件版本等信息,包括 GPU 的版本、驱动程序信息等。

1.2 安装和使用 vcgencmd 工具

vcgencmd 是树莓派上一个用来获取 GPU 和 VideoCore 的详细信息的工具。可以通过以下命令安装:

sudo apt update
sudo apt install raspberrypi-ui-mods
1.3 检查 OpenGL 支持

安装glxinfo,可以通过以下命令安装:

sudo apt install mesa-utils

用以下命令检查树莓派是否支持 OpenGL(用于 3D 图形和 GPU 计算):

glxinfo | grep "OpenGL"

OpenGL vendor string: Mesa
OpenGL renderer string: llvmpipe (LLVM 15.0.6, 128 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 23.2.1-1~bpo12+rpt3
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5 (Compatibility Profile) Mesa 23.2.1-1~bpo12+rpt3
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.2.1-1~bpo12+rpt3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

上面输出了 OpenGL 的版本、供应商信息以及渲染器信息。

1.4 检查 Vulkan 支持

Vulkan 是一种现代的图形 API,通常可以更好地访问 GPU 的底层功能。

安装 vulkaninfo,使用以下命令来安装:

sudo apt install vulkan-tools
vulkaninfo

输出 GPU 的供应商和型号(通常是 Broadcom 的 VideoCore),则表示树莓派5可能支持 Vulkan。

1.5 检查 PyTorch 和 TensorFlow 的 GPU 支持

要在树莓派5上使用 PyTorch 或 TensorFlow 等深度学习框架的 GPU 加速,需要先检查它们是否可以使用 GPU:

  • PyTorch:树莓派目前通常使用 PyTorch 的 CPU 版本。在树莓派5上使用 PyTorch 的 GPU 加速相对复杂,因为 PyTorch 通常与 CUDA(NVIDIA 的 GPU 计算平台)绑定。VideoCore GPU 不支持 CUDA,因此需要使用特定的 OpenCL 计算库。
  • TensorFlow Lite GPU Delegate:TensorFlow Lite 提供 GPU Delegate,可以利用 OpenCL 进行部分计算加速。要检查 TensorFlow Lite 是否能使用 GPU Delegate,可以安装 TensorFlow Lite 并测试。

安装 TensorFlow Lite,由于 tflite 对于 aarch64 的支持最高只到 python3.8,因此需要可以先创建 python3.8 虚拟环境:

conda create -n py38 python==3.8.11
wget wget https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp38-cp38-linux_aarch64.whl
python3 -m pip install tflite_runtime-2.1.0.post1-cp38-cp38-linux_aarch64.whl

# 测试安装是否成功
python3
import tflite_runtime.interpreter as tflite
# 没有报错即是成功

# 安装 tensorflow
sudo apt update
sudo apt install libatlas-base-dev
python3 -m pip install keras_applications==1.0.8 --no-deps
python3 -m pip install keras_preprocessing==1.1.0 --no-deps
sudo apt-get install libhdf5-dev
python3 -m pip install h5py==2.9.0
python3 -m pip install -U six wheel mock
python3 -m pip install tensorflow
# 验证 TensorFlow
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))" 
# 输出 tf.Tensor(1035.3678,shape=(),dtype=float32)则表示安装成功

测试 GPU 支持:

import tensorflow as tf

# 检查 TensorFlow 版本
print("TensorFlow version:", tf.__version__)

# 检查 GPU 支持
try:
    from tensorflow.lite.experimental.delegate import load_delegate
    print("GPU support is enabled.")
except ImportError:
    print("GPU support is not available.")

2 安装并配置 GPU 加速库

2.1 安装 OpenCL

使用 GPU 加速来加速深度学习或图像处理任务,可以安装 OpenCL 库,树莓派5可以安装 OpenCL 库,如pyopencl,来访问 VideoCore GPU 进行通用计算。

sudo apt install ocl-icd-libopencl1
sudo apt install clinfo

运行clinfo检查 OpenCL 平台是否可用。

clinfo

Number of platforms                               0

ICD loader properties
  ICD loader Name                                 OpenCL ICD Loader
  ICD loader Vendor                               OCL Icd free software
  ICD loader Version                              2.3.1
  ICD loader Profile                              OpenCL 3.0
2.2 使用 glmark2 测试 GPU 性能
sudo apt install glmark2
glmark2

# =======================================================
#                                   glmark2 Score: 20
# =======================================================

3 使用 GPU 加速 opencv

在树莓派上使用 GPU 加速 opencv 需要满足:

  • 树莓派使用待遇 GPU 支持的操作系统版本,树莓派官方的 Raspberry Pi OS 的最新版本支持
  • 需要使用 OpenCV 的 DNN 模块和 OpenCL
3.1 安装 OpenCL
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ocl-icd-opencl-dev
3.2 安装 OpenCV
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-opencv
3.3 使用 OpenCV 的 DNN 模块,在 Python 中使用以下代码:
import cv2
net = cv2.dnn.readNetFromTensorflow(model_path, config_path)
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_OPENCL)

注:

  • 这里的 model_path 和 config_path 是模型的路径和配置文件路径
  • DNN_BACKEND_OPENCV 表示使用 OpenCV 的 DNN 模块
  • DNN_TARGET_OPENCL 表示使用 OpenCL 库及进行加速
  • 这里可以使用 TensorFlow 模型,也可以使用 Caffe、Darknet、ONNX

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

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

相关文章

数据结构:二叉树、堆

目录 一.树的概念 二、二叉树 1.二叉树的概念 2.特殊类型的二叉树 3.二叉树的性质 4.二叉树存储的结构 三、堆 1.堆的概念 2.堆的实现 Heap.h Heap.c 一.树的概念 注意,树的同一层中不能有关联,否侧就不是树了,就变成图了&#xff…

PCL 点云配准 Trimed-ICP算法(精配准

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 perform_standard_icp 函数 2.1.2 perform_trimmed_icp 函数 2.1.3 visualize_registration 函数 2.2完整代码 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算…

国庆旅游高峰期,如何利用可视化报表来展现景区、游客及消费数据

国庆黄金周,作为国内旅游市场的年度盛宴,总是吸引着无数游客的目光。今年,随着旅游市场的强劲复苏,各大景区又再次迎来游客流量的高峰。全国国内出游7.65亿人次,同比增长5.9%,国内游客出游总花费7008.17亿元…

大型企业软件开发是什么样子的? - Web Dev Cody

引用自大型企业软件开发是什么样子的? - Web Dev Cody_哔哩哔哩_bilibili 一般来说 学技术的时候 我们会关注 开发语言特性 ,各种高级语法糖,底层技术 但是很少有关注到企业里面的开发流程,本着以终为始(以就业为导向…

界面控件Telerik UI for WPF 2024 Q3亮点 - 支持禁用数据过滤等

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio…

[Linux网络编程]03-TCP协议

一.TCP协议数据通信的过程 TCP数据报如下,数据报中的标志位双端通信的关键。 三次握手: 1.客户端向服务端发送SYN标志位,请求建立连接,同时发送空包 2.服务端向客户端回发ACK标志位(即确认标志位,任何一端发送数据后都需要另一端…

asyn驱动示例-int32driver

驱动程序源代码int32Driver.c&#xff1a; #include <stddef.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <ctype.h>#include <cantProceed.h> #include <epicsStdio.h> #i…

官龙村捐赠图书整理有感

今天&#xff08;2024年10月20日&#xff09;&#xff0c;我有幸参加了在深圳南山区西丽官龙村举行的义工活动&#xff0c;主要任务是整理捐赠的图书&#xff0c;并根据小学和中学的需求进行分类打包。这次活动不仅让我体会到了劳动的辛苦&#xff0c;更让我感受到了助人为乐的…

【AIGC】第一性原理下的ChatGPT提示词Prompt设计:系统信息与用户信息的深度融合

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;第一性原理与ChatGPT提示词Prompt设计应用第一性原理于ChatGPT提示词Prompt设计系统信息和用户信息的融合实际应用结论 &#x1f4af;系统信息与用户信息的定义和重要性系…

鸿蒙中富文本编辑与展示

富文本在鸿蒙系统如何展示和编辑的&#xff1f;在文章开头我们提出这个疑问&#xff0c;带着疑问来阅读这篇文章。 富文本用途可以展示图文混排的内容&#xff0c;在日常App 中非常常见&#xff0c;比如微博的发布与展示&#xff0c;朋友圈的发布与展示&#xff0c;都在使用富文…

C++高阶:红黑树实现

目录 一.红黑树的概念 1.1红黑树的规则 1.2红黑树的效率 二.红黑树的实现 2.1红黑树的结构 2.2红黑树的插入 2.2.1插入的大致过程 2.2.2情况一&#xff1a;变色 ​编辑 2.2.3情况二&#xff1a;单旋变色 2.2.4情况三&#xff1a;双旋变色 2.3插入代码实现 2.4红黑树的…

【网络安全】简单P1:通过开发者工具解锁专业版和企业版功能

未经许可,不得转载。 文章目录 前言发现过程前言 在探索一个SaaS平台的过程中,我发现了一个漏洞,使得我能够在无需订阅的情况下解锁高级(专业/企业)功能。 发现过程 我使用一个没有任何高级功能的基本用户账户进行常规登录。在浏览平台时,我注意到某些按钮和功能上带有…

【C++STL】list的基本介绍与使用方式

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山冈&#xff01; &#x1f525; 所属专栏&#xff1a;C深入学习笔记 &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 一、list的介绍 文档内容以及大致翻…

ROS笔记之kill掉所有ros节点rosnode

ROS笔记之kill掉所有ros节点rosnode 文章目录 ROS笔记之kill掉所有ros节点rosnode1. 杀死所有 ROS 节点&#xff08;不包括 rosmaster&#xff09;2. 杀死 rosmaster3. 验证所有节点和 rosmaster 是否已终止4. roscore 和 rosmaster 是同一个概念吗&#xff1f;5. 为什么执行 k…

【踩坑日记36】ModuleNotFoundError: No module named ‘taming‘

问题描述 ModuleNotFoundError: No module named ‘taming‘问题分析 未正确安装taming-transformers包 问题解决 从github网站中安装taming-transformers包&#xff1a; 从github网站中下载taming-transformers代码 git clone https://github.com/CompVis/taming-transfo…

微机原理与接口技术知识点总结——绪论

1.1、计算机发展概述 早期计算机的用途主要是用于算数&#xff0c;一直到20世纪电子领域基础研究的突破&#xff0c;也就是电子计算机的诞生&#xff0c;计算机才变得如此广泛。以微电子技术为基础制造的电子计算机已经完全取代了机械计算机和机电计算机&#xff0c;因此电子计…

第二十二届GOPS全球运维大会2024一日感

第二十二届GOPS全球运维大会将于2024年4月25-26日在南山区深圳湾万丽酒店召开。大会将为期2天&#xff0c;侧重大模型、AIOps、DevOps、可观测、SRE、云原生等热门技术领域。 GOPS是我一直关注的一场技术峰会&#xff0c;主要是它的侧重点在运维方面&#xff0c;这和我本身的职…

【C++干货篇】——类和对象的魅力(二)

【C干货篇】——类和对象的魅力&#xff08;二&#xff09; 1.类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。 ⼀个类&#xff0c;我们不写的情况下编译器会默认⽣成以下6个默认成员函数&#xff0c;需要注意的…

从 Microsoft 官网下载 Windows 10

方法一&#xff1a; 打开 Microsoft 官网&#xff1a; 打开开发人员工具&#xff08;按 F12 或右键点击“检查”&#xff09;。 点击“电脑模拟手机”按钮&#xff0c;即下图&#xff1a; 点击后重新加载此网页&#xff0c;即可看到下载选项。

[k8s理论知识]3.docker基础(二)隔离技术

容器其实是一种沙盒技术&#xff0c;其核心是通过约束和修改进程的动态表现&#xff0c;为其创建一个边界。这个边界确保了应用与应用之间不会相互干扰&#xff0c;同时可以方便在不同的环境中迁移&#xff0c;这是PaaS最理想的状态。 程序是代码的可执行镜像&#xff0c;通常…