(三)MNN与Opencl联合编译

2023-05-16

在MNN与opencl进行联合编译中,需要注意一些事项:

1、在MNN中cmakelists进行修改后

2、在source/backend/opencl/core/runtime中OpenCLWarpper.cpp中文件进行修改。否则在编译过程中不报错,而在执行过程报以下错误:

OpenCL init error, fallback ..

例如我们使用全志T507的liunx系统进行开发,需要把liunx下opencl链接库进行添加和修改

static const std::vector<std::string> gOpencl_library_paths = {

#if defined(__APPLE__) || defined(__MACOSX)
    "libOpenCL.so", "/System/Library/Frameworks/OpenCL.framework/OpenCL"
#elif defined(__ANDROID__)
    "libOpenCL.so",
    "libGLES_mali.so",
    "libmali.so",
#if defined(__aarch64__)
    // Qualcomm Adreno
    "/system/vendor/lib64/libOpenCL.so",
    "/system/lib64/libOpenCL.so",
    // Mali
    "/system/vendor/lib64/egl/libGLES_mali.so",
    "/system/lib64/egl/libGLES_mali.so",
#else
    // Qualcomm Adreno
    "/system/vendor/lib/libOpenCL.so", "/system/lib/libOpenCL.so",
    // Mali
    "/system/vendor/lib/egl/libGLES_mali.so", "/system/lib/egl/libGLES_mali.so",
    // other
    "/system/vendor/lib/libPVROCL.so", "/data/data/org.pocl.libs/files/lib/libpocl.so"
#endif
#elif defined(__linux__)
    // "/usr/lib/libOpenCL.so",
    // "/usr/local/lib/libOpenCL.so",
    // "/usr/local/lib/libpocl.so",
    // "/usr/lib64/libOpenCL.so",
    // "/usr/lib32/libOpenCL.so",
    // "libOpenCL.so"
    "/gzy_mnt/SDK/aarch64-linux-gnu-7.4.1/lib64/libmali.so.0",   //添加opencl动态链接库的路径
    "/gzy_mnt/SDK/aarch64-linux-gnu-7.4.1/lib64/libOpenCL.so.2"
/*
 *  0: System32, 1: SysWOW64
 *  --------------------------------------
 *  | Real CPU /          |  x64  |  x86  |
 *  |        / Target CPU |       |       |
 *  --------------------------------------
 *  |         x64         | 0 / 1 |   1   |
 *  --------------------------------------
 *  |         x86         | Error |   0   |
 *  --------------------------------------
 *  0 / 1: 0 if OpenCL.dll (System32, 64bit on x64), otherwise 1 (SysWOW64, 32bit compatible on 64bit OS)
 */
#elif defined(_WIN64)
    "C:/Windows/System32/OpenCL.dll",
    "C:/Windows/SysWOW64/OpenCL.dll"
#elif defined(_WIN32)
    "C:/Windows/SysWOW64/OpenCL.dll",
    "C:/Windows/System32/OpenCL.dll"
#endif
};

然后在进行交叉编译,请参考之前的链接

3、使用MNN进行CPU和GPU(opencl)在全志T507(GPU:mail31),进行模型耗时对比测试.

gpu的性能还是比较低的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(三)MNN与Opencl联合编译 的相关文章

  • OpenCL 找不到平台?

    我正在尝试将 C API 用于 OpenCL 我已经安装了 NVIDIA 驱动程序 并且已经测试可以运行提供的简单向量加法程序here http www thebigblob com getting started with opencl
  • 推力:填充隔离空间

    我有一个像这样的数组 0 0 010 0 0 05 0 0 3 0 0 0 8 0 0 我希望每个非零元素一次扩展一个元素 直到它到达其他非零元素 结果是这样的 1 1 111 1 5 55 5 3 3 3 3 8 8 8 8 有什么办法可
  • 在 OpenCL 中使用内核导致另一个内核

    我已经编写了图像卷积的代码 使用 API 的 clCreateImage2D 创建空间 使用 clEnqueueWriteImage 写入设备 使用 read imageui 读取内核中的图像 使用 write imageui 将图像写回主
  • 数组大小和复制性能

    我确信这个问题之前已经得到了回答 但我找不到一个好的解释 我正在编写一个图形程序 其中管道的一部分将体素数据复制到 OpenCL 页面锁定 固定 内存 我发现这个复制过程是一个瓶颈 并对一个简单的性能进行了一些测量std copy 数据是浮
  • OpenCL 标头包含与 C++ 中的相对路径问题

    我正在尝试在 Eclipse CTD 上运行 OpenCL C 示例 该示例 在 Mac 上 包含 OpenCL 标头 如下所示 include
  • 如何在 OpenCL 中验证波前/扭曲大小?

    我使用的是 AMD Radeon HD 7700 GPU 我想使用以下内核来验证波前尺寸是否为 64 kernel void kernel test warpsize global T dataSet uint size size t id
  • CMake找不到NVIDIA的opencl sdk

    我刚刚安装了 NVIDIA CUDA 工具套件 用它在 Windows 8 1 上开发 OpenCL 应用程序 我遇到了一些问题 1 FinedOpenCl cmake 不起作用 因为 Nvidia 工具包未设置 opencl dir cm
  • OpenCL clBuildProgram 缓存源代码,如果 #include 源代码发生更改,则不会重新编译

    我用opencl实现了一个项目 我有一个包含内核函数的文件 内核使用的函数包含在单独的头文件中 但是当我更改包含的文件时 有时会应用更改 有时则不会 这让我很困惑应用程序是否有错误 我检查了 stackoverflow 中的其他帖子 发现
  • OpenCL:头文件的附加目录

    OpenCL 规范中写道5 6 3 构建选项 5 6 3 1 预处理器选项 I dir Add the directory dir to the list of directories to be searched for header f
  • OpenCL 在线编译:从 cl::program 或 cl::kernel 获取程序集

    我正在使用 OpenCL 运行内核基准测试 我知道我可以使用 OpenCL 供应商提供的各种工具离线编译内核 即ioc64 or poclcc 问题是我得到的性能结果无法用这些工具的汇编 OpenCL 运行时开销或类似的来解释 我想看到由我
  • OpenCL C/C++ 动态绑定库(win32 及更多)

    我正在尝试 OpenCL 为了将其投入生产 我希望能够动态绑定到 OpenCL DLL 在 Windows 下 以便 优雅地 处理没有 OpenCL 的情况安装在主机上 是否有任何可用的库 或代码片段 可以在 C 或 C 中处理这种动态绑定
  • OpenCl 代码可以在一台机器上运行,但我在另一台机器上收到 CL_INVALID_KERNEL_ARGS

    我有以下代码 它在一台机器上运行良好 但是当我尝试在另一台具有更好显卡的机器上运行它时 我收到错误 global 0 512 global 1 512 local 0 16 local 1 16 ciErrNum clEnqueueNDRa
  • CUDA PTX 代码 %envreg<32> 特殊寄存器

    我尝试使用 CUDA 驱动程序 API 运行由 cl 内核生成的 PTX 汇编代码 我采取的步骤是这些 标准 opencl 程序 1 加载 cl内核 2 JIT编译 3 获取编译好的ptx代码并保存 到目前为止 一切都很好 我注意到 ptx
  • 多个 OpenCl 内核

    我只是想问 是否有人可以提醒我在相继使用几个简单内核时要注意什么 我可以用同样的吗CommandQueue 我可以跑几次吗clCreateProgramWithSource cl program与不同的cl program 我忘记了什么 T
  • 有适用于 mac os X 10.8 的 opencl 分析器吗?

    我试图找到 OpenCL 内核中的瓶颈 是否可以在 mac os X 上分析 OpenCL 程序 我发现 gDebuggerhttp www gremedy com http www gremedy com 但需要 10 5 或 10 6
  • OpenCL:为什么指向指针的指针不能作为参数传递给内核函数?

    你好 我只是想澄清一下为什么我们不能将 2D 数组指针作为参数传递给内核 为什么不允许 如果我使用它作为参数会发生什么 在内部 因为我知道代码会给出一些错误 请只做那些需要的 因为在 OpenCL 1 x 中设备有一个独立的地址空间 在设备
  • OpenCL 在调用 clGetPlatformIDs 时崩溃

    我是 OpenCL 新手 在配备 Intel R HD Graphics 4000 运行 Windows 7 的 Core i5 计算机上工作 我安装了支持 OpenCL 的最新 Intel 驱动程序 GpuCapsViewer 确认我有
  • 官方 OpenCL 2.2 标准是否支持 WaveFront?

    众所周知 AMD OpenCL 支持 WaveFront 2015 年 8 月 http amd dev wpengine netdna cdn com wordpress media 2013 12 AMD OpenCL Programm
  • OpenCL 与 OpenMP 性能对比 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有研究比较 OpenCL 与 OpenMP 的性能 具体来说 我对使用 OpenCL 启动线程的开销成本感兴趣 例如 如果将域分解
  • 如何在 pyopencl 中创建可变大小的 __local 内存?

    在我的 C OpenCL 代码中我使用clSetKernelArg创建 可变尺寸 local我的内核中使用的内存 OpenCL 本身不提供该内存 看我的例子 clSetKernelArg clKernel ArgCounter sizeof

随机推荐

  • [Swoole] 在Ubuntu下安装、快速开始

    本文主要讲述在 Ubuntu 下编译安装 Swoole xff0c 并根据官方文档给出的demo进行了测试和搬运 xff0c 包括 xff1a TCP服务器 UDP服务器 HTTP服务器 WebSocket服务器 异步客户端 定时器和协程相
  • C++ 快速幂取模算法

    快速求 b p k的值 1 模运算与乘法的性质 乘积取模可以在乘之前先取模 x y d 61 x d y d d 比如 xff1a a a c 61 a c a c c 2 本题公式 当 b为偶数时 xff1a ab mod c 61 a2
  • [Python] socket实现TFTP上传和下载

    Python socket实现TFTP上传和下载 一 说明二 TFTP协议介绍 xff08 参考网络 xff0c 详情可搜索 xff09 2 1 特点 2 2 TFTP下载过程分析 xff1a 2 3 TFTP操作码与数据格式 xff1a
  • [Python] 通过采集两万条数据,对《无名之辈》影评分析

    一 说明 本文主要讲述采集猫眼电影用户评论进行分析 xff0c 相关爬虫采集程序可以爬取多个电影评论 运行环境 xff1a Win10 Python3 5 分析工具 xff1a jieba wordcloud pyecharts matpl
  • [Python] 用python做一个游戏辅助脚本,完整思路

    一 说明 简述 xff1a 本文将以4399小游戏 宠物连连看经典版2 作为测试案例 xff0c 通过识别小图标 xff0c 模拟鼠标点击 xff0c 快速完成配对 对于有兴趣学习游戏脚本的同学有一定的帮助 运行环境 xff1a Win10
  • cp命令 复制多个目录/文件夹下文件到指定目录

    可以使用cp命令的通配符和递归选项来复制多个目录下多个文件夹下的文件到指定目录 如果目标目录不存在 xff0c 可以使用 mkdir p命令来创建目录 p 选项表示递归创建目录 xff0c 如果目录已经存在 xff0c 则不会报错 例如 x
  • 网络安全传输系统(3)—OpenSSL加密传输

    1 基本介绍 1 1 未加密传输的安全弊端 如果在网络传输中没有加密 xff0c 就是以明文传输 传输的数据可以被抓包软件直接截获 xff0c 并能读取里面的数据 1 2 加密基本原理 对称加密 xff1a 对称加密指的就是加密和解密使用同
  • 网络安全传输系统(4)—线程池优化

    服务器单发模式 初始化 gt 等待连接 gt 处理请求 gt 关闭连接 gt 再次等待连接服务器并发模式 初始化 gt 等待连接 gt 交给子进程处理请求 gt 再次等待连接单发服务器不能同时处理多个客户端请求 xff0c 并发服务器则可以
  • 网络安全传输系统(5)—账号管理子系统设计

    1 登录模块设计 输入用户名和密码根据用户名从数据库提取密码比较用户输入密码和数据库提取密码 xff0c 以决定是否登录成功 2 编译客户端程序 arm linux gcc L 008 openssl 1 0 0s install lib
  • C语言实例—一个数如果恰好等于它的因子之和,这个数就称为完数。(gcc编译)

    1 题目 一个数如果恰好等于它的因子之和 xff0c 这个数就称为完数 例如 xff0c 6的因子是1 xff0c 2 xff0c 3 xff0c 而6 61 1 43 2 43 3 xff0c 因此6为完数 编程序找出1000之内所有的完
  • C语言实例—输入两个正整数m和n,求其最大公约数和最小公倍数(gcc 编译)。

    1 辗转相除法 辗转相除法是古希腊求两个正整数的最大公约数的 xff0c 也叫欧几里德算法 xff0c 其方法是用较大的数除以较小的数 xff0c 上面较小的除数和得出的余数构成新的一对数 xff0c 继续做上面的除法 xff0c 直到出现
  • Linux线程详解

    并行和并发的区别 1 并发 concurrency xff1a 在操作系统 中 xff0c 是指一个时间段中有几个程序都处于已启动运行到运行完毕之间 xff0c 且这几个程序都是在同一个处理机上运行 其中两种并发关系分别是同步 和互斥 xf
  • 数据结构—带头结点的单循环链表

    1 基本操作 循环链表的特点是最后一个元素的指针域指向头结点 因此对于循环链表的初始化 xff08 设表的头结点是L xff0c 不再是L gt next 61 NULL xff0c 而是L gt next 61 L 循环链表为空时 xff
  • 数据结构—有序表的合并

    1 有序表合并 问题描述 xff1a 已知线性表La 和Lb中的数据元素按值非递减 有序排列 xff0c 现要求将La和Lb归并为一个新的线性表Lc xff0c 且Lc中的数据元素仍按值非递减有序排列 例如 xff1a La 61 1 7
  • 数据结构—习题2.6 通过一趟遍历找出单链表中的最大值

    1 题目描述 设计一个算法 xff0c 通过一趟遍历在单链表中确定值最大的结点 2 题目分析 假定第一个结点中数据具有最大值 xff0c 依次与下一个元素比较 xff0c 若其小于下一个元素 xff0c 则设其下一个元素为最大值 xff0c
  • 【MySQL 11】怎么解决MySQL 8.0.18 大小写敏感问题

    1 查看状态 通过 show variables 命令查看当前 mysql 是否是区分大小写 xff0c 如下 xff1a mysql大小写敏感配置相关的两个参数 xff0c lower case file system 和 lower c
  • Ubuntu配置阿里云ddns

    首发于yuany3721的WordPress 生成阿里云access key 注意 xff1a 不能使用ram子用户 下载并配置ddns curl https github com NewFuture DDNS releases downl
  • LibreOJ - 10015 扩散

    题目描述 一个点每过一个单位时间就会向 4 个方向扩散一个距离 xff0c 如图所示 xff1a 两个点 a b 连通 xff0c 记作 e a b xff0c 当且仅当 a b 的扩散区域有公共部分 连通块的定义是块内的任意两个点 u v
  • Python 生成器 (通俗讲解)

    一 生成器的本质 生成器是含有yield语句 xff08 或yield表达式 xff09 的函数所返回的对象 也就是说 xff0c 要创建一个生成器 xff0c 我们首先要定义一个函数 xff0c 该函数内将使用yield表达式或yield
  • (三)MNN与Opencl联合编译

    在MNN与opencl进行联合编译中 xff0c 需要注意一些事项 xff1a 1 在MNN中cmakelists进行修改后 2 在source backend opencl core runtime中OpenCLWarpper cpp中文