GithubHelp home page GithubHelp logo

oaid / tengine Goto Github PK

View Code? Open in Web Editor NEW
4.6K 229.0 991.0 17.85 MB

Tengine is a lite, high performance, modular inference engine for embedded device

License: Apache License 2.0

C++ 48.97% C 41.85% Assembly 5.27% CMake 2.13% Shell 0.14% Python 1.11% Cuda 0.45% Batchfile 0.08%
arm machine-learning artificial-intelligence cnn tensorflow pytorch onnx x86-64 mips cuda

tengine's Introduction

简体中文 | English

Tengine

GitHub license GitHub Workflow Status Test Status codecov Language grade: C/C++

简介

TengineOPEN AI LAB 主导开发,该项目实现了深度学习神经网络模型在嵌入式设备上的快速高效部署需求。为实现在众多 AIoT 应用中的跨平台部署,本项目使用 C 语言进行核心模块开发,针对嵌入式设备资源有限的特点进行了深度框架裁剪。同时采用了完全分离的前后端设计,有利于 CPU、GPU、NPU 等异构计算单元的快速移植和部署,降低评估、迁移成本。

Tengine 核心代码由 4 个模块组成:

  • device:NN Operators 后端模块,已提供 CPU、GPU、NPU 参考代码;
  • scheduler:框架核心部件,包括 NNIR、计算图、硬件资源、模型解析器的调度和执行模块;
  • operator:NN Operators 前端模块,实现 NN Operators 注册、初始化;
  • serializer:模型解析器,实现 tmfile 格式的网络模型参数解析。

架构简析

Tengine 架构

快速上手

编译

  • 快速编译 基于 cmake 实现简单的跨平台编译。

示例

  • examples 提供基础的分类、检测算法用例,根据 issue 需求持续更新。
  • 源安装 提供ubuntu系统的apt-get命令行安装和试用,目前支持x86/A311D硬件。

模型仓库

转换工具

  • 预编译版本 :提供 Ubuntu 18.04 系统上预编译好的模型转换工具;
  • 在线转换版本 :基于 WebAssembly 实现(浏览器本地转换,模型不会上传;
  • 源码编译 :建议在服务器或者PC上编译,指令如下:
    mkdir build && cd build
    cmake -DTENGINE_BUILD_CONVERT_TOOL=ON ..
    make -j`nproc`
    

量化工具

  • 源码编译:已开源量化工具源码,已支持 uint8/int8。

速度评估

  • Benchmark 基础网络速度评估工具,欢迎大家更新。

NPU Plugin

  • TIM-VX VeriSilicon NPU 使用指南。

AutoKernel Plugin

  • AutoKernel 是一个简单易用,低门槛的自动算子优化工具,AutoKernel Plugin实现了自动优化算子一键部署到 Tengine 中。

Container

Roadmap

致谢

Tengine Lite 参考和借鉴了下列项目:

License

澄清说明

  • [在线上报功能] 在线上报功能主要目的是了解Tengine的使用信息,信息用于优化和迭代Tengine,不会影响任何正常功能。该功能默认开启,如需关闭,可修改如下配置关闭:(主目录 CMakeLists.txt ) OPTION (TENGINE_ONLINE_REPORT "online report" OFF)

FAQ

技术讨论

tengine's People

Contributors

addsalt8227 avatar bowshotds avatar bug1989 avatar bzhang5 avatar caishanli avatar cccxinli avatar clovking avatar cmdbug avatar crouchggj avatar daquexian avatar ddzhao91 avatar dependabot[bot] avatar feigechuanshu avatar gdh1995 avatar jeremy-j-j avatar kalcohol avatar liqi-c avatar mlbo avatar ncnnnnn avatar nihui avatar qinhj avatar rudyfoo avatar shaoeric avatar shitouren1994 avatar sunnycase avatar tpoisonooo avatar xiguadong avatar youlucky87 avatar zchrissirhcz avatar zjd1988 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tengine's Issues

fatal error: arm_neon.h: No such file or directory

I built ACL(ComputingLabrary) by
scons Werror=1 -j4 debug=0 asserts=1 neon=0 opencl=1 embed_kernels=1 os=linux arch=arm64-v8a
command.

After that , in Tengine directory
vi makefile.config

18 # Set the target arch
19 CONFIG_ARCH_ARM64=y
20
21 # Enable Compiling Optimization
22 CONFIG_OPT_CFLAGS = -O2
23
24 # uncomment to build the reference operators wrapped on Caffe
25 # CONFIG_CAFFE_REF=y
26
27 # Set the path of caffe used for compile and link,
28 # if caffe's operator calculation is enabled.
29 # CAFFE_ROOT = /home/firefly/caffe
30
31 # Enable GPU support by Arm Computing Library
32 CONFIG_ACL_GPU=y
33 #
34
35
36 # Use BLAS as the operator implementation
37 #
38 CONFIG_ARCH_BLAS=y
39
40 # Set the path of ACL
41 ACL_ROOT=/home/admin/workspace/ComputeLibrary
42
43 # Enable other serializers
44 CONFIG_CAFFE_SERIALIZER=y
45 # CONFIG_MXNET_SERIALIZER=y
46 # CONFIG_ONNX_SERIALIZER=y
47 # CONFIG_TF_SERIALIZER=y
48 CONFIG_TENGINE_SERIALIZER=y
49
50 # Enable Wrappers
51 # CONFIG_FRAMEWORK_WRAPPER=y

make -j8
then occured these errors

make[2]: Entering directory '/home/admin/workspace/Tengine/driver/acl_graph' g++ -std=c++11 -I. -Wno-ignored-attributes -Werror -O2 -Wall -g -fPIC -I/home/admin/workspace/Tengine/driver/include -I/home/admin/workspace/Tengine/driver/../include -I/home/admin/workspace/Tengine/driver/../core/include -I/home/admin/workspace/Tengine/driver/../operator/include -I/home/admin/workspace/Tengine/driver/../executor/include -DCONFIG_ARCH_ARM64=1 -DCONFIG_ACL_GPU=1 -I/home/admin/workspace/ComputeLibrary -I/home/admin/workspace/ComputeLibrary/include -I/home/admin/workspace/ComputeLibrary -c acl_graph_driver.cpp -o /home/admin/workspace/Tengine/build/driver/acl_graph/acl_graph_driver.o **In file included from acl_graph_device.hpp:35:0, from acl_graph_driver.hpp:36, from acl_graph_driver.cpp:25:** acl_graph.hpp:31:22: fatal error: arm_neon.h: No such file or directory compilation terminated.

How can I solve this problem??

build error for tf_serializer: could not find graph.pb.h

Hi,
I build with CONFIG_TF_SERIALIZER=y, but get following error:

tengine/serializer/include/tf_serializer.hpp:35:22: fatal error: graph.pb.h: No such file or directory

I've downloaded google tensorflow, and find the file graph.pb.h here: google/tf_pb/tensorflow/core/framework.
But I didn't find anywhere to config the include file path for it.

Cheers,
Jacky

Cannot find load function for operator: Reshape

I use mobilenet025 which download from mxnet gluon model zoos, and run test_mxnet_mobilenet.cpp ,it occurs problem"Cannot find load function for operator: Reshape", but I find Tengine supports "Reshape" operater,.

about branching network(MTCNN)

hi:
i'm running a network, like this

 input
       |
 |               |

conv1 |
relu1 |
| |
pool1 conv1-2
\ relu1_2
\ /
\ /
concat1
|
conv2
relu2
.
.
.
.

with tengine/build/examples/mtcnn/MTCNN ....
she is saying:
/sfbak/tengine/examples/build/mtcnn/MTCNN
ACL Driver Initialized
ACL Graph Initialized
Driver: ACLGraph probed 1 devices
Driver: ACLDriver probed 1 devices
tensor: prob1 created by node: prob1 is not consumed
add the node: prob1 into output list
tensor: conv4-2 created by node: conv4-2 is not consumed
add the node: conv4-2 into output list
load PNet model done!
tensor: prob1 created by node: prob1 is not consumed
add the node: prob1 into output list
tensor: fc5-2 created by node: fc5-2 is not consumed
add the node: fc5-2 into output list
load RNet model done!
tensor: prob1 created by node: prob1 is not consumed
add the node: prob1 into output list
tensor: fc6-2 created by node: fc6-2 is not consumed
add the node: fc6-2 into output list
tensor: fc6-3 created by node: fc6-3 is not consumed
add the node: fc6-3 into output list
load ONet model done!

Segmentation fault (core dumped)

:(

Is depthwise convolution supported?

     Hi,I want to import mobilefacenet into Tengine.  The  mobilefacnet uses a depthwise convolution .  And the mxnet load also failed(mxnet json file uploaded).  The error is as followings:

Parse the json file error in line 11
Parse the json file error in line 17
Parse the json file error in line 23
Parse the json file error in line 24
Parse the json file error in line 25
Parse the json file error in line 26
Parse the json file error in line 27
Parse the json file error in line 28
Parse the json file error in line 29
Parse the json file error in line 31
Parse the json file error in line 32

model-symbol.json.txt

what's the suitable version of protoc ?

Hello! I get error while make:

make[1]: Entering directory '/home/pi/tengine/serializer'
make[2]: Entering directory '/home/pi/tengine/serializer/onnx'
protoc --cpp_out . onnx.proto
mv onnx.pb.h ../include
In file included from onnx.pb.cc:4:0:
/home/pi/tengine/serializer/include/onnx.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
 #error This file was generated by a newer version of protoc which is
  ^~~~~
/home/pi/tengine/serializer/include/onnx.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
 #error incompatible with your Protocol Buffer headers.  Please update
  ^~~~~
/home/pi/tengine/serializer/include/onnx.pb.h:14:2: error: #error your headers.
 #error your headers.

It seen that I using the wrong version of protoc , isn't it ?

A bug in mtcnn example.

    I found a bug in function run_PNet  and run_ONet. Width and height parameters are in wrong order . It will not happen if width==height. But in my case ,this bug is fatal.  

   	for(int i=0;i<batch;i++)
{	
	//copy_one_patch(img,pnet_boxes[i],input_ptr,height,width);
	copy_one_patch(img,pnet_boxes[i],input_ptr,width,height);
	input_ptr+=img_size;
}

make Raspberry_pi3 for bug

Hi,

My hardware platform uses Raspberry_pi3 (A53),compiled to which is the following error:
sgemv_1x8_a72.S:Assebler messages:
sgemv_1x8_a72.S:73 Error: ARM register expected ..'cmp x3,0x4'
sgemv_1x8_a72.S:74 Error:bad instruction'prfm pldlkeep,[x1,0x40]'
sgemv_1x8_a72.S:75 Error:bad instruction'prfm pldlkeep,[x2,0x200]'
sgemv_1x8_a72.S:76 Error:bad instruction'prfm pldlkeep,[x2,0x240]'

thanks for your help!

firefly rk3399 board

i build this project on firefly rk3399 board, and run the benchmark .
The result is always as follows :
tensor:prob created by node: prob is not consumed
add the node : prob into output list
load model successfully
..........
0.2763 - "n02123045 tabby, tabby cat"
0.2673 - "n02123159 tiger cat"
0.1766 - "n02119789 kit fox, Vulpes macrotis"
0.0827 - "n02124075 Egyptian cat"
0.0777 - "n02085620 Chihuahua"
the parameter do not take effect ; and What should I do? thanks!

Build error!

sgemv_1x8_a72.S: Assembler messages:
sgemv_1x8_a72.S:67: Error: alignment not a power of 2
sgemv_1x8_a72.S:73: Error: too many memory references for cmp' sgemv_1x8_a72.S:74: Error: no such instruction: prfm pldl1keep,[x1,0x40]'
sgemv_1x8_a72.S:75: Error: no such instruction: prfm pldl1keep,[x2,0x200]' sgemv_1x8_a72.S:76: Error: no such instruction: prfm pldl1keep,[x2,0x240]'
sgemv_1x8_a72.S:77: Error: no such instruction: movi d30,0' sgemv_1x8_a72.S:78: Error: no such instruction: movi d31,0'
sgemv_1x8_a72.S:79: Error: no such instruction: cbz x0,start_convolution' sgemv_1x8_a72.S:80: Error: no such instruction: ldp q30,q31,[x0]'
sgemv_1x8_a72.S:83: Error: too many memory references for and' sgemv_1x8_a72.S:84: Error: no such instruction: b.lt loop1'
sgemv_1x8_a72.S:85: Error: no such instruction: lsr x6,x3,0x2' sgemv_1x8_a72.S:90: Error: no such instruction: ldr q0,[x1]'
sgemv_1x8_a72.S:91: Error: no such instruction: ldp q16,q17,[x2]' sgemv_1x8_a72.S:92: Error: no such instruction: ldp q18,q19,[x2,0x20]'
sgemv_1x8_a72.S:93: Error: no such instruction: prfm pldl1keep,[x1,0x80]' sgemv_1x8_a72.S:94: Error: too many memory references for add'
sgemv_1x8_a72.S:95: Error: too many memory references for sub' sgemv_1x8_a72.S:97: Error: no such instruction: fmla v30.4s,v16.4s,v0.s[0]'
sgemv_1x8_a72.S:98: Error: no such instruction: fmla v31.4s,v17.4s,v0.s[0]' sgemv_1x8_a72.S:99: Error: no such instruction: ldp q20,q21,[x2,0x40]'
sgemv_1x8_a72.S:100: Error: no such instruction: fmla v30.4s,v18.4s,v0.s[1]' sgemv_1x8_a72.S:101: Error: no such instruction: prfm pldl1keep,[x2,0x400]'
sgemv_1x8_a72.S:102: Error: no such instruction: fmla v31.4s,v19.4s,v0.s[1]' sgemv_1x8_a72.S:103: Error: no such instruction: ldp q22,q23,[x2,0x60]'
sgemv_1x8_a72.S:104: Error: no such instruction: fmla v30.4s,v20.4s,v0.s[2]' sgemv_1x8_a72.S:105: Error: no such instruction: prfm pldl1keep,[x2,0x440]'
sgemv_1x8_a72.S:106: Error: too many memory references for add' sgemv_1x8_a72.S:107: Error: no such instruction: fmla v31.4s,v21.4s,v0.s[2]'
sgemv_1x8_a72.S:108: Error: no such instruction: fmla v30.4s,v22.4s,v0.s[3]' sgemv_1x8_a72.S:109: Error: no such instruction: fmla v31.4s,v23.4s,v0.s[3]'
sgemv_1x8_a72.S:111: Error: no such instruction: b.ne loop4' sgemv_1x8_a72.S:113: Error: no such instruction: cbz x5,save_result'
sgemv_1x8_a72.S:116: Error: no such instruction: ldr s0,[x1],0x4' sgemv_1x8_a72.S:117: Error: no such instruction: ldp q16,q17,[x2],0x20'
sgemv_1x8_a72.S:118: Error: too many memory references for sub' sgemv_1x8_a72.S:120: Error: no such instruction: fmla v30.4s,v16.4s,v0.s[0]'
sgemv_1x8_a72.S:121: Error: no such instruction: fmla v31.4s,v17.4s,v0.s[0]' sgemv_1x8_a72.S:123: Error: no such instruction: b.ne loop1'
sgemv_1x8_a72.S:126: Error: no such instruction: `stp q30,q31,[x4]'
Tengine/scripts/makefile.build:116: recipe for target '/Tengine/build/executor/operator/arm64/fc/sgemv_1x8_a72.o' failed
make[4]: *** [Tengine/build/executor/operator/arm64/fc/sgemv_1x8_a72.o] Error 1
make[4]: Leaving directory '/Tengine/executor/operator/arm64/fc'
/Tengine/scripts/makefile.build:72: recipe for target 'fc' failed
make[3]: *** [fc] Error 2
make[3]: Leaving directory '/Tengine/executor/operator/arm64'
/Tengine/scripts/makefile.build:72: recipe for target 'arm64' failed
make[2]: *** [arm64] Error 2
make[2]: Leaving directory '/Tengine/executor/operator'
/Tengine/scripts/makefile.build:72: recipe for target 'operator' failed
make[1]: *** [operator] Error 2
make[1]: Leaving directory '/Tengine/executor'
Makefile:166: recipe for target 'executor' failed
make: *** [executor] Error 2

Get error when compile batch_norm layer !

g++ -std=c++11   -I. -I./include  -O3 -funroll-loops  -Wall -g -fPIC  -I/home/pi/tengine/executor/../core/include -I/home/pi/tengine/executor/../include -I/home/pi/tengine/executor/../operator/include  -I/home/pi/tengine/executor/include   -DCONFIG_ARCH_ARM64=1   -c batch_norm.cpp -o /home/pi/tengine/build/executor/operator/arm/batch_norm.o 
batch_norm.cpp: In member function ‘virtual bool TEngine::BatchNormImpl::BNOps::Prerun(TEngine::Node*)’:
batch_norm.cpp:79:29: error: ‘sqrt’ is not a member of ‘std’
        scale_var_inv[c]=1.f/std::sqrt(var[c]*rescale_factor + eps);
                             ^~~
/home/pi/tengine/scripts/makefile.build:97: recipe for target '/home/pi/tengine/build/executor/operator/arm/batch_norm.o' failed
make[3]: *** [/home/pi/tengine/build/executor/operator/arm/batch_norm.o] Error 1
make[3]: Leaving directory '/home/pi/tengine/executor/operator/arm'
/home/pi/tengine/scripts/makefile.build:70: recipe for target 'arm' failed
make[2]: *** [arm] Error 2
make[2]: Leaving directory '/home/pi/tengine/executor/operator'
Makefile:72: recipe for target 'operator' failed
make[1]: *** [operator] Error 2
make[1]: Leaving directory '/home/pi/tengine/executor'
Makefile:52: recipe for target 'executor' failed
make: *** [executor] Error 2

Tengine build issue with ACL.

Hi,
While enabling the ACL path in makefile.config in Tengine, it shows error while make-
In file included from acl_graph_device.hpp:35:0,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
acl_graph.hpp: In member function ‘bool TEngine::CLGraph::AddFCLayer(TEngine::Node*)’:
acl_graph.hpp:595:69: error: no matching function for call to ‘arm_compute::CLFullyConnectedLayer::configure(arm_compute::CLTensor*&, arm_compute::CLTensor*&, arm_compute::CLTensor*&, arm_compute::CLTensor*&, bool&)’
fc->configure(itensor, wtensor, btensor, otensor,transpose_w);

Tested with ACL ver-18.05 and 18.08.
Please suggest any missing step.
Thanks.

undefined symbol: _ZNK6google8protobuf7Message13SpaceUsedLongEv

I have build tengine successfully.but return some error when I test tengine using ./build/tests/bin/bench_mobilenet -r1

Below is my error log:

./build/tests/bin/bench_mobilenet -r1
./build/tests/bin/bench_mobilenet: symbol lookup error: ./build/libtengine.so: undefined symbol: _ZNK6google8protobuf7Message13SpaceUsedLongEv

ldd ./build/tests/bin/bench_sqz
	linux-vdso.so.1 =>  (0x00007ffe8fe8c000)
	libtengine.so => ./build/libtengine.so (0x00007f106ac22000)
	libopencv_highgui.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4 (0x00007f106a9d7000)
	libopencv_imgproc.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4 (0x00007f106a547000)
	libopencv_core.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4 (0x00007f106a110000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1069dfa000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1069be2000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1069819000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f10695fb000)
	libprotobuf.so.8 => /usr/lib/x86_64-linux-gnu/libprotobuf.so.8 (0x00007f10692f9000)


Is there a plan to support android build?

Current version only support build on arm platform, don't support cross-compile arm package on x86 pc platform, Is there a plan to support android build or iOS?

releases not tagged

The various 0.5.0 / 0.3.0 etc releases aren't tagged (or the tags aren't pushed), please tag exiting releases and ensure process updated so it happens automatically moving forward.

Android Build

Hello!
I am trying to build Tengine for Android and have been stuck since long.
I was able to run and compile Tengine on Ubuntu.
I then moved on to modify the android_build_armv8.sh.
My question:

  1. While adding protobuf path, I need to give path to bin, include or lib folder? (bin has protoc, include has google, lib has .a files )

  2. Same question for BLAS path.

  3. I trried various combinations of ARCH_TYPE. But I always get error. What architecture should I feed for different ABIs (specifically arm64-v8a)

  4. After modifying this file, should I do: i. cd build ii. ..android_build_armv8.sh

  5. Is there an app which you provide? I was able to run Caffe-Mobile perfectly and their repo has an android app too.

Any help/ directions are appreciated. If there is a readme for android build, can that be shared too?

Thank you!

install build failed

  1. copy config example file
    cd ~/tengine
    cp makefile.config.example makefile.config

  2. make


gcc -std=gnu99   -Wno-ignored-attributes -Werror -O2 -Wall -g -fPIC  -I/home/apuser/deeplearning/tengine/executor/../core/include -I/home/apuser/deeplearning/tengine/executor/../include -I/home/apuser/deeplearning/tengine/executor/../operator/include  -I/home/apuser/deeplearning/tengine/executor/include   -Werror -DCONFIG_ARCH_ARM64=1 -I/home/apuser/deeplearning/tengine/executor/operator/include -O3 -funroll-loops   -E sgemv_1x8_a72.S -o /home/apuser/deeplearning/tengine/build/executor/operator/arm64/fc/sgemv_1x8_a72.s
gcc -std=gnu99  -g    -c /home/apuser/deeplearning/tengine/build/executor/operator/arm64/fc/sgemv_1x8_a72.s -o /home/apuser/deeplearning/tengine/build/executor/operator/arm64/fc/sgemv_1x8_a72.o 
sgemv_1x8_a72.S: Assembler messages:
sgemv_1x8_a72.S:67: Error: alignment not a power of 2
sgemv_1x8_a72.S:73: Error: too many memory references for `cmp'
sgemv_1x8_a72.S:74: Error: no such instruction: `prfm pldl1keep,[x1,0x40]'
sgemv_1x8_a72.S:75: Error: no such instruction: `prfm pldl1keep,[x2,0x200]'
sgemv_1x8_a72.S:76: Error: no such instruction: `prfm pldl1keep,[x2,0x240]'
sgemv_1x8_a72.S:77: Error: no such instruction: `movi d30,0'
sgemv_1x8_a72.S:78: Error: no such instruction: `movi d31,0'
sgemv_1x8_a72.S:79: Error: no such instruction: `cbz x0,start_convolution'
sgemv_1x8_a72.S:80: Error: no such instruction: `ldp q30,q31,[x0]'
sgemv_1x8_a72.S:83: Error: too many memory references for `and'
sgemv_1x8_a72.S:84: Error: no such instruction: `b.lt loop1'
sgemv_1x8_a72.S:85: Error: no such instruction: `lsr x6,x3,0x2'
sgemv_1x8_a72.S:90: Error: no such instruction: `ldr q0,[x1]'
sgemv_1x8_a72.S:91: Error: no such instruction: `ldp q16,q17,[x2]'
sgemv_1x8_a72.S:92: Error: no such instruction: `ldp q18,q19,[x2,0x20]'
sgemv_1x8_a72.S:93: Error: no such instruction: `prfm pldl1keep,[x1,0x80]'
sgemv_1x8_a72.S:94: Error: too many memory references for `add'
sgemv_1x8_a72.S:95: Error: too many memory references for `sub'
sgemv_1x8_a72.S:97: Error: no such instruction: `fmla v30.4s,v16.4s,v0.s[0]'
sgemv_1x8_a72.S:98: Error: no such instruction: `fmla v31.4s,v17.4s,v0.s[0]'
sgemv_1x8_a72.S:99: Error: no such instruction: `ldp q20,q21,[x2,0x40]'
sgemv_1x8_a72.S:100: Error: no such instruction: `fmla v30.4s,v18.4s,v0.s[1]'
sgemv_1x8_a72.S:101: Error: no such instruction: `prfm pldl1keep,[x2,0x400]'
sgemv_1x8_a72.S:102: Error: no such instruction: `fmla v31.4s,v19.4s,v0.s[1]'
sgemv_1x8_a72.S:103: Error: no such instruction: `ldp q22,q23,[x2,0x60]'
sgemv_1x8_a72.S:104: Error: no such instruction: `fmla v30.4s,v20.4s,v0.s[2]'
sgemv_1x8_a72.S:105: Error: no such instruction: `prfm pldl1keep,[x2,0x440]'
sgemv_1x8_a72.S:106: Error: too many memory references for `add'
sgemv_1x8_a72.S:107: Error: no such instruction: `fmla v31.4s,v21.4s,v0.s[2]'
sgemv_1x8_a72.S:108: Error: no such instruction: `fmla v30.4s,v22.4s,v0.s[3]'
sgemv_1x8_a72.S:109: Error: no such instruction: `fmla v31.4s,v23.4s,v0.s[3]'
sgemv_1x8_a72.S:111: Error: no such instruction: `b.ne loop4'
sgemv_1x8_a72.S:113: Error: no such instruction: `cbz x5,save_result'
sgemv_1x8_a72.S:116: Error: no such instruction: `ldr s0,[x1],0x4'
sgemv_1x8_a72.S:117: Error: no such instruction: `ldp q16,q17,[x2],0x20'
sgemv_1x8_a72.S:118: Error: too many memory references for `sub'
sgemv_1x8_a72.S:120: Error: no such instruction: `fmla v30.4s,v16.4s,v0.s[0]'
sgemv_1x8_a72.S:121: Error: no such instruction: `fmla v31.4s,v17.4s,v0.s[0]'
sgemv_1x8_a72.S:123: Error: no such instruction: `b.ne loop1'
sgemv_1x8_a72.S:126: Error: no such instruction: `stp q30,q31,[x4]'
/home/apuser/deeplearning/tengine/scripts/makefile.build:116: recipe for target '/home/apuser/deeplearning/tengine/build/executor/operator/arm64/fc/sgemv_1x8_a72.o' failed
make[4]: *** [/home/apuser/deeplearning/tengine/build/executor/operator/arm64/fc/sgemv_1x8_a72.o] Error 1
make[4]: Leaving directory '/home/apuser/deeplearning/tengine/executor/operator/arm64/fc'
/home/apuser/deeplearning/tengine/scripts/makefile.build:72: recipe for target 'fc' failed
make[3]: *** [fc] Error 2
make[3]: Leaving directory '/home/apuser/deeplearning/tengine/executor/operator/arm64'
/home/apuser/deeplearning/tengine/scripts/makefile.build:72: recipe for target 'arm64' failed
make[2]: *** [arm64] Error 2
make[2]: Leaving directory '/home/apuser/deeplearning/tengine/executor/operator'
/home/apuser/deeplearning/tengine/scripts/makefile.build:72: recipe for target 'operator' failed
make[1]: *** [operator] Error 2
make[1]: Leaving directory '/home/apuser/deeplearning/tengine/executor'
Makefile:166: recipe for target 'executor' failed
make: *** [executor] Error 2

Different class color based detection.

Hi, i am using ssd model for object detection. All detected objects are placed inside green color boundry.
Any help to make it different box for different objects?
Thanks.

I use Respberry Pi 3 , but get 'sgemv_1x8.S' error !

my etc/config use ARM a53:
device.default= cpu.rk3399.a53.2

I get error when make:

make[2]: Leaving directory '/home/pi/tengine/operator/plugin'
gcc  -std=gnu99 -o /home/pi/tengine/build/operator/liboperator.so -shared /home/pi/tengine/build/operator/operator/built-in.o /home/pi/tengine/build/operator/plugin/built-in.o 
make[1]: Leaving directory '/home/pi/tengine/operator'
make[1]: Entering directory '/home/pi/tengine/executor'
make[2]: Entering directory '/home/pi/tengine/executor/operator'
make[3]: Entering directory '/home/pi/tengine/executor/operator/arm'
make[4]: Entering directory '/home/pi/tengine/executor/operator/arm/fc'
g++ -std=c++11   -I. -I./include  -O3 -funroll-loops  -Wall -g -fPIC  -I/home/pi/tengine/executor/../core/include -I/home/pi/tengine/executor/../include -I/home/pi/tengine/executor/../operator/include  -I/home/pi/tengine/executor/include   -DCONFIG_ARCH_ARM64=1  -I../include  -c fully_connected.cpp -o /home/pi/tengine/build/executor/operator/arm/fc/fully_connected.o 
gcc  -std=gnu99   -Wall -g -fPIC  -I/home/pi/tengine/executor/../core/include -I/home/pi/tengine/executor/../include -I/home/pi/tengine/executor/../operator/include  -I/home/pi/tengine/executor/include   -DCONFIG_ARCH_ARM64=1   -E sgemv_1x8.S -o /home/pi/tengine/build/executor/operator/arm/fc/sgemv_1x8.s
gcc  -std=gnu99 -g    -c /home/pi/tengine/build/executor/operator/arm/fc/sgemv_1x8.s -o /home/pi/tengine/build/executor/operator/arm/fc/sgemv_1x8.o 
sgemv_1x8.S: Assembler messages:
sgemv_1x8.S:83: 错误:bad instruction `ldp x9,x10,[sp]'
sgemv_1x8.S:84: 错误:bad instruction `ldp x11,x12,[sp,0x10]'
sgemv_1x8.S:85: 错误:bad instruction `ldp x13,x14,[sp,0x20]'
sgemv_1x8.S:86: 错误:ARM register expected -- `ldr x15,[sp,0x30]'
sgemv_1x8.S:88: 错误:bad instruction `ldp q30,q31,[x0]'
sgemv_1x8.S:90: 错误:selected processor does not support `cbz x15,loop_end' in ARM mode
sgemv_1x8.S:94: 错误:ARM register expected -- `ldr q0,[x1],#0x10'
sgemv_1x8.S:95: 错误:bad instruction `ld4 { v16.d,v17.d,v18.d,v19.d}[0],[x2],#0x20'
sgemv_1x8.S:96: 错误:bad instruction `ld4 { v16.d,v17.d,v18.d,v19.d}[1],[x3],#0x20'
sgemv_1x8.S:97: 错误:bad instruction `ld4 { v20.d,v21.d,v22.d,v23.d}[0],[x4],#0x20'
sgemv_1x8.S:98: 错误:bad instruction `ld4 { v20.d,v21.d,v22.d,v23.d}[1],[x5],#0x20'
sgemv_1x8.S:100: 错误:bad instruction `fmla v30.4s,v16.4s,v0.s[0]'
sgemv_1x8.S:101: 错误:bad instruction `fmla v30.4s,v17.4s,v0.s[1]'
sgemv_1x8.S:102: 错误:ARM register expected -- `subs x15,x15,0x1'
sgemv_1x8.S:103: 错误:bad instruction `fmla v30.4s,v18.4s,v0.s[2]'
sgemv_1x8.S:104: 错误:bad instruction `prfm pldl1keep,[x1,0x80]'
sgemv_1x8.S:105: 错误:bad instruction `fmla v30.4s,v19.4s,v0.s[3]'
sgemv_1x8.S:106: 错误:bad instruction `prfm pldl1keep,[x2,0xa0]'
sgemv_1x8.S:108: 错误:bad instruction `fmla v31.4s,v20.4s,v0.s[0]'
sgemv_1x8.S:109: 错误:bad instruction `prfm pldl1keep,[x3,0x90]'
sgemv_1x8.S:110: 错误:bad instruction `fmla v31.4s,v21.4s,v0.s[1]'
sgemv_1x8.S:111: 错误:bad instruction `prfm pldl1keep,[x4,0xb0]'
sgemv_1x8.S:112: 错误:bad instruction `fmla v31.4s,v22.4s,v0.s[2]'
sgemv_1x8.S:113: 错误:bad instruction `prfm pldl1keep,[x5,0xc0]'
sgemv_1x8.S:114: 错误:bad instruction `fmla v31.4s,v23.4s,v0.s[3]'
sgemv_1x8.S:116: 错误:unexpected character `n' in type specifier
sgemv_1x8.S:116: 错误:bad instruction `b.ne loop'
sgemv_1x8.S:122: 错误:bad instruction `st1 {v30.s}[0],[x6]'
sgemv_1x8.S:123: 错误:bad instruction `st1 {v30.s}[1],[x7]'
sgemv_1x8.S:124: 错误:bad instruction `st1 {v30.s}[2],[x9]'
sgemv_1x8.S:125: 错误:bad instruction `st1 {v30.s}[3],[x10]'
sgemv_1x8.S:126: 错误:bad instruction `st1 {v31.s}[0],[x11]'
sgemv_1x8.S:127: 错误:bad instruction `st1 {v31.s}[1],[x12]'
sgemv_1x8.S:128: 错误:bad instruction `st1 {v31.s}[2],[x13]'
sgemv_1x8.S:129: 错误:bad instruction `st1 {v31.s}[3],[x14]'
sgemv_1x8.S:131: 错误:bad instruction `ret'
/home/pi/tengine/scripts/makefile.build:105: recipe for target '/home/pi/tengine/build/executor/operator/arm/fc/sgemv_1x8.o' failed
make[4]: *** [/home/pi/tengine/build/executor/operator/arm/fc/sgemv_1x8.o] Error 1
make[4]: Leaving directory '/home/pi/tengine/executor/operator/arm/fc'
/home/pi/tengine/scripts/makefile.build:70: recipe for target 'fc' failed
make[3]: *** [fc] Error 2
make[3]: Leaving directory '/home/pi/tengine/executor/operator/arm'
/home/pi/tengine/scripts/makefile.build:70: recipe for target 'arm' failed
make[2]: *** [arm] Error 2
make[2]: Leaving directory '/home/pi/tengine/executor/operator'
Makefile:72: recipe for target 'operator' failed
make[1]: *** [operator] Error 2
make[1]: Leaving directory '/home/pi/tengine/executor'
Makefile:52: recipe for target 'executor' failed
make: *** [executor] Error 2
pi@raspberrypi:~/tengine $ 

CAFFE PATH

I have installed caffe on my debian system using command sudo apt-get install caffe-cpu
now how do i search the path of CAFFE-ROOT? it is not available at the location you have provided

parse file: ./models/ssd_mobilenet.pb failed

Is there any requirement of pb files? I use other pb files like download from mobilenet ,or trained by myself , when run test_tf_mobilenet, it shows:
parse file: ./models/ssd_mobilenet.pb failed
Release workspace default resource

So I wonder if there is any special requirement?

RaspberryPi3B+ build example error

pi@raspberrypi:~/Desktop/Tengine_new/examples/benchmark/build $ cmake ..
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /usr/local (found version "3.4.2") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/Desktop/Tengine_new/examples/benchmark/build
pi@raspberrypi:~/Desktop/Tengine_new/examples/benchmark/build $ make
Scanning dependencies of target test_convolution
[ 12%] Building C object CMakeFiles/test_convolution.dir/test_convolution.c.o
[ 25%] Linking C executable test_convolution
/home/pi/Desktop/Tengine_new/examples/benchmark/../../install/lib/libtengine.so: undefined reference to `TEngine::RegisterBatchNormNodeExec()'
/home/pi/Desktop/Tengine_new/examples/benchmark/../../install/lib/libtengine.so: undefined reference to `TEngine::RegisterConv2dDepth()'
/home/pi/Desktop/Tengine_new/examples/benchmark/../../install/lib/libtengine.so: undefined reference to `TEngine::RegisterFullyConnectedFast()'
/home/pi/Desktop/Tengine_new/examples/benchmark/../../install/lib/libtengine.so: undefined reference to `TEngine::RegisterConv2dFast()'
/home/pi/Desktop/Tengine_new/examples/benchmark/../../install/lib/libtengine.so: undefined reference to `TEngine::RegisterPoolingNodeExec()'
/home/pi/Desktop/Tengine_new/examples/benchmark/../../install/lib/libtengine.so: undefined reference to `TEngine::RegisterScaleNodeExec()'
collect2: error: ld returned 1 exit status
CMakeFiles/test_convolution.dir/build.make:94: recipe for target 'test_convolution' failed
make[2]: *** [test_convolution] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/test_convolution.dir/all' failed
make[1]: *** [CMakeFiles/test_convolution.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Is memory optimization supported?

The speed on RK3399 is impressive and noticeably outperform ncnn. Did Tengine further equip with memory reuse or computation graph optimizations? If so, did Tengine-based Caffe/TF benefit from this technique? Memory overuse has been a long-term issue in Caffe.

parse ssd_mobilenet_v1.pb failed

I trained my ssd_mobillenet in tensorflow, then use models/research/object_detection/export_inference_graph.py freeze .ckpt file to get ssd_mobilenet_v1.pb. When I load and parse ssd_mobilenet.pb failed. The error happened in function TFSerializer::ConstructGraph(). It looks like some TFNode's inputs'name are not match with TFNode name, so TFNode can not find its input nodes then set up connection failed.There are two examples:
1)TFNode‘s name is ’Preprocessor/map/TensorArray‘ ,but parse his output TFNode's input, we just find 'Preprocessor/map/TensorArray:1'
2) TFNode‘s name is ’Preprocessor/map/while/Identity‘ ,but parse his output TFNode's input, we just find '^Preprocessor/map/while/Identity'.

darknet2caffe

请问您提供的yolo.caffemodel模型是darknet模型转过来的吗?转换的方法链接有吗?谢谢

Is Fp16 supported?

   Thank you for your great job. Is Fp16 supported ? And the input data preprocess is slow in exmaples such as  get_input_data_ssd () in mobilenet_ssd . Has any plan to speed up? Thank you again.

hi, what the Caffe(optional) means in "Installation Guide" ?

Does it mean that I can use Caffe and Tengine in mixed ?
For example, the "Permute" layer isn't support in Tengine now, can it use Caffe's Permute layer automatically but other layers(such as Conv) still use Tengine's . If so, please tell me how to use this .

You see, Tengine supports poor num of layers now( Tengine layers ), which is not enough for me .

android gpu support

I want to run yolov2-tiny in android (galaxy s9) with ACL ,Mali-gpu G72

but in CMakeList, there is no option for build Tengine with ACL.

Do you have any plan or support for android GPU acceleration with ACL??

build error on nvidia tx2

I try to build Tengine on Nvidia TX2 .But I got the following errors.

/usr/lib/aarch64-linux-gnu/mesa/libGL.so.1: undefined reference to drmCloseOnce' /usr/lib/aarch64-linux-gnu/mesa/libGL.so.1: undefined reference to drmMap'
/usr/lib/aarch64-linux-gnu/mesa/libGL.so.1: undefined reference to drmUnmap' /usr/lib/aarch64-linux-gnu/mesa/libGL.so.1: undefined reference to drmOpenOnce'

The makefile.config is listed as follow.

CONFIG_ARCH_ARM64=y
CONFIG_OPT_CFLAGS = -O2
CONFIG_CAFFE_REF=y
CAFFE_ROOT = /home/nvidia/dongxiao/caffe-1.0
CONFIG_CAFFE_SUPPORT=y

The OS is ubuntu16.04 and the gcc used is gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9).

error in testing resnet50

I got following error while testing tengine resnet50 in my ubuntu machine. I kept default setting in etc/config file. Any idea please?

./RESNET images/air.jpg ../../../models/resnet50/
Successfully load plugin : ../../build/operator/liboperator.so
OPERATOR PLUGIN INITED
Successfully load plugin : ../../build/serializer/libserializer.so
SERIALIZER PLUGIN INITED
Successfully load plugin : ../../build/executor/libexecutor.so
Register reference's operators
EXECUTOR PLUGIN INITED
Successfully load plugin : ../../build/driver/libdriver.so
DEV ENGINE PLUGIN INITED
Driver: RK3399 probed 5 devices
tensor: prob created by node: prob is not consumed
add the node: prob into output list
load resnet50 model done!
failed to set node ops for node: res2a op: Eltwise
graph_task.cpp:103 failed to Prerun task on dev executor: cpu.rk3399.a72.all
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
graph_task.cpp:193 bad status: CREATED
Segmentation fault (core dumped)

failed compilation with hand-compiled libprotobuf.so(2.6.1)

@HEGALLIS I have tried to compiled protobuf(2.6.1) and put the path libprotobuf.so to android_build_armv8.sh, while when Linking lintengine.so, the compilation info shown that generated_message_reflection.h:496: undefined reference to `typeinfo for google::protobuf::Message'

the te_caffe.pb.cc file was generated by host protoc(x86_64),

RRi3B+ build failed.

I used following setting in the makefile.config.

#-------------------------------------------------------------------------------
#  Template configuration for compiling
#
#  First copy makefile.config.example to makefile.config (assume you are on the 
#  root directory). 
#
#  $ cp makefile.config.example makefile.config
#
#  Next modify makefile.config, and then compile by
#
#  $ make
#
#  or build in parallel with 8 threads
#
#  $ make -j8
#-------------------------------------------------------------------------------

# Set the target arch 
#CONFIG_ARCH_ARM64=y

# Enable Compiling Optimization
CONFIG_OPT_CFLAGS = -O2

# uncomment to build the reference operators wrapped on Caffe
# CONFIG_CAFFE_REF=y

# Set the path of caffe used for compile and link,
# if caffe's operator calculation is enabled.
# CAFFE_ROOT = /home/firefly/caffe

# Enable GPU support by Arm Computing Library
# CONFIG_ACL_GPU=y
#


# Use BLAS as the operator implementation
#
CONFIG_ARCH_BLAS=y

# Set the path of ACL 
# ACL_ROOT=/home/firefly/ComputeLibrary

# Enable other serializers 
CONFIG_CAFFE_SERIALIZER=y
# CONFIG_MXNET_SERIALIZER=y
# CONFIG_ONNX_SERIALIZER=y
# CONFIG_TF_SERIALIZER=y
CONFIG_TENGINE_SERIALIZER=y

# Enable Wrappers
# CONFIG_FRAMEWORK_WRAPPER=y

but while building the library i got following error. any help please?

g++    /home/pi/Desktop/Tengine/build/tools/bin/test_accuracy.o  -o /home/pi/Desktop/Tengine/build/tools/bin/test_accuracy -Wl,-rpath,/home/pi/Desktop/Tengine/tools/../build -ltengine -lprotobuf -ldl -lpthread -lresolv -L/usr/local/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core -Wl,-rpath=/usr/lib/aarch64-linux-gnu/mesa  -L/home/pi/Desktop/Tengine/tools/../build
/usr/bin/ld: /home/pi/Desktop/Tengine/build/tools/bin/test_accuracy: hidden symbol `_ZN6google8protobuf8internal17AssignDescriptorsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS1_15MigrationSchemaEPKPKNS0_7MessageEPKjPNS0_14MessageFactoryEPNS0_8MetadataEPPKNS0_14EnumDescriptorEPPKNS0_17ServiceDescriptorE' in /usr/local/lib/libprotobuf.a(generated_message_reflection.cc.o) is referenced by DSO
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
Makefile:66: recipe for target '/home/pi/Desktop/Tengine/build/tools/bin/test_accuracy' failed
make[1]: *** [/home/pi/Desktop/Tengine/build/tools/bin/test_accuracy] Error 1
make[1]: Leaving directory '/home/pi/Desktop/Tengine/tools'
Makefile:145: recipe for target 'tools' failed
make: *** [tools] Error 2

build error . on RK3399, what's happend ...

g++ -std=c++11 -I. -Wno-ignored-attributes -Werror -O3 -Wall -g -fPIC -I/media/firefly/uP/Tengine/driver/include -I/media/firefly/uP/Tengine/driver/../include -I/media/firefly/uP/Tengine/driver/../core/include -I/media/firefly/uP/Tengine/driver/../operator/include -I/media/firefly/uP/Tengine/driver/../executor/include -DCONFIG_ARCH_ARM64=1 -DCONFIG_ACL_GPU=1 -I/usr/local/AID/ComputeLibrary -I/usr/local/AID/ComputeLibrary/include -I/usr/local/AID/ComputeLibrary -c acl_graph_driver.cpp -o /media/firefly/uP/Tengine/build/driver/acl_graph/acl_graph_driver.o
In file included from acl_graph_device.hpp:35:0,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
acl_graph.hpp: In member function ‘bool TEngine::CLGraph::AddConvolutionLayer(TEngine::Node*)’:
acl_graph.hpp:360:23: error: no matching function for call to ‘arm_compute::ActivationLayerInfo::ActivationLayerInfo()’
ActivationLayerInfo act_info;
^
In file included from /usr/local/AID/ComputeLibrary/arm_compute/core/ITensorInfo.h:30:0,
from acl_graph.hpp:34,
from acl_graph_device.hpp:35,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:676:5: note: candidate: arm_compute::ActivationLayerInfo::ActivationLayerInfo(arm_compute::ActivationLayerInfo::ActivationFunction, float, float)
ActivationLayerInfo(ActivationFunction f, float a = 0.0f, float b = 0.0f)
^
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:676:5: note: candidate expects 3 arguments, 0 provided
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:650:7: note: candidate: constexpr arm_compute::ActivationLayerInfo::ActivationLayerInfo(const arm_compute::ActivationLayerInfo&)
class ActivationLayerInfo
^
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:650:7: note: candidate expects 1 argument, 0 provided
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:650:7: note: candidate: constexpr arm_compute::ActivationLayerInfo::ActivationLayerInfo(arm_compute::ActivationLayerInfo&&)
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:650:7: note: candidate expects 1 argument, 0 provided
In file included from acl_graph_device.hpp:35:0,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
acl_graph.hpp:429:65: error: no matching function for call to ‘arm_compute::CLDepthwiseConvolutionLayer3x3::configure(arm_compute::CLTensor*&, arm_compute::CLTensor*&, arm_compute::CLTensor*&, arm_compute::CLTensor*&, arm_compute::PadStrideInfo, int, arm_compute::ActivationLayerInfo&)’
PadStrideInfo(stride_x,stride_y,pad_x,pad_y),1,act_info);
^
In file included from /usr/local/AID/ComputeLibrary/arm_compute/runtime/CL/CLFunctions.h:47:0,
from acl_graph.hpp:38,
from acl_graph_device.hpp:35,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
/usr/local/AID/ComputeLibrary/arm_compute/runtime/CL/functions/CLDepthwiseConvolutionLayer.h:61:10: note: candidate: void arm_compute::CLDepthwiseConvolutionLayer3x3::configure(arm_compute::ICLTensor*, const arm_compute::ICLTensor*, const arm_compute::ICLTensor*, arm_compute::ICLTensor*, const arm_compute::PadStrideInfo&)
void configure(ICLTensor input, const ICLTensor weights, const ICLTensor biases, ICLTensor output, const PadStrideInfo &conv_info);
^
/usr/local/AID/ComputeLibrary/arm_compute/runtime/CL/functions/CLDepthwiseConvolutionLayer.h:61:10: note: candidate expects 5 arguments, 7 provided
In file included from acl_graph_device.hpp:35:0,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
acl_graph.hpp:434:17: error: ‘class arm_compute::ActivationLayerInfo’ has no member named ‘enabled’
if(act_info.enabled())
^
acl_graph.hpp:447:43: error: no matching function for call to ‘arm_compute::CLConvolutionLayer::configure(arm_compute::CLTensor
&, arm_compute::CLTensor
&, arm_compute::CLTensor
&, arm_compute::CLTensor
&, arm_compute::PadStrideInfo, arm_compute::WeightsInfo, arm_compute::Size2D, arm_compute::ActivationLayerInfo&)’
WeightsInfo(),Size2D(1U,1U), act_info);
^
In file included from /usr/local/AID/ComputeLibrary/arm_compute/runtime/CL/CLFunctions.h:44:0,
from acl_graph.hpp:38,
from acl_graph_device.hpp:35,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
/usr/local/AID/ComputeLibrary/arm_compute/runtime/CL/functions/CLConvolutionLayer.h:108:10: note: candidate: void arm_compute::CLConvolutionLayer::configure(const arm_compute::ICLTensor*, const arm_compute::ICLTensor*, const arm_compute::ICLTensor*, arm_compute::ICLTensor*, const arm_compute::PadStrideInfo&, const arm_compute::WeightsInfo&)
void configure(const ICLTensor *input, const ICLTensor *weights, const ICLTensor *biases, ICLTensor output, const PadStrideInfo &conv_info, const WeightsInfo &weights_info = Weigh
^
/usr/local/AID/ComputeLibrary/arm_compute/runtime/CL/functions/CLConvolutionLayer.h:108:10: note: candidate expects 6 arguments, 8 provided
In file included from acl_graph_device.hpp:35:0,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
acl_graph.hpp: In member function ‘bool TEngine::CLGraph::AddPoolingLayer(TEngine::Node
)’:
acl_graph.hpp:663:93: error: no matching function for call to ‘arm_compute::PoolingLayerInfo::PoolingLayerInfo(arm_compute::PoolingType, arm_compute::Size2D, arm_compute::PadStrideInfo)’
PadStrideInfo(stride_x,stride_y,pad_x,pad_y,DimensionRoundingType::CEIL));
^
In file included from /usr/local/AID/ComputeLibrary/arm_compute/core/ITensorInfo.h:30:0,
from acl_graph.hpp:34,
from acl_graph_device.hpp:35,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:583:14: note: candidate: arm_compute::PoolingLayerInfo::PoolingLayerInfo(arm_compute::PoolingType)
explicit PoolingLayerInfo(PoolingType pool_type)
^
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:583:14: note: candidate expects 1 argument, 3 provided
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:570:14: note: candidate: arm_compute::PoolingLayerInfo::PoolingLayerInfo(arm_compute::PoolingType, unsigned int, arm_compute::PadStrideInfo, bool)
explicit PoolingLayerInfo(PoolingType pool_type,
^
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:570:14: note: no known conversion for argument 2 from ‘arm_compute::Size2D’ to ‘unsigned int’
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:557:5: note: candidate: arm_compute::PoolingLayerInfo::PoolingLayerInfo()
PoolingLayerInfo()
^
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:557:5: note: candidate expects 0 arguments, 3 provided
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:553:7: note: candidate: constexpr arm_compute::PoolingLayerInfo::PoolingLayerInfo(const arm_compute::PoolingLayerInfo&)
class PoolingLayerInfo
^
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:553:7: note: candidate expects 1 argument, 3 provided
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:553:7: note: candidate: constexpr arm_compute::PoolingLayerInfo::PoolingLayerInfo(arm_compute::PoolingLayerInfo&&)
/usr/local/AID/ComputeLibrary/arm_compute/core/Types.h:553:7: note: candidate expects 1 argument, 3 provided
In file included from /usr/local/AID/ComputeLibrary/arm_compute/core/Coordinates.h:27:0,
from /usr/local/AID/ComputeLibrary/arm_compute/core/ITensorInfo.h:27,
from acl_graph.hpp:34,
from acl_graph_device.hpp:35,
from acl_graph_driver.hpp:36,
from acl_graph_driver.cpp:25:
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h: In instantiation of ‘arm_compute::Dimensions::Dimensions(Ts ...) [with Ts = {int}; T = long unsigned int]’:
/usr/local/AID/ComputeLibrary/arm_compute/core/TensorShape.h:47:31: required from ‘arm_compute::TensorShape::TensorShape(Ts ...) [with Ts = {int}]’
acl_graph.hpp:89:45: required from here
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h:53:64: error: narrowing conversion of ‘dims#0’ from ‘int’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
: _id{ { dims... } }, _num_dimensions{ sizeof...(dims) }
^
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h: In instantiation of ‘arm_compute::Dimensions::Dimensions(Ts ...) [with Ts = {int, int, int, int}; T = long unsigned int]’:
/usr/local/AID/ComputeLibrary/arm_compute/core/TensorShape.h:47:31: required from ‘arm_compute::TensorShape::TensorShape(Ts ...) [with Ts = {int, int, int, int}]’
acl_graph.hpp:171:75: required from here
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h:53:64: error: narrowing conversion of ‘dims#0’ from ‘int’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h:53:64: error: narrowing conversion of ‘dims#1’ from ‘int’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h:53:64: error: narrowing conversion of ‘dims#2’ from ‘int’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h:53:64: error: narrowing conversion of ‘dims#3’ from ‘int’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h: In instantiation of ‘arm_compute::Dimensions::Dimensions(Ts ...) [with Ts = {int, int}; T = long unsigned int]’:
/usr/local/AID/ComputeLibrary/arm_compute/core/TensorShape.h:47:31: required from ‘arm_compute::TensorShape::TensorShape(Ts ...) [with Ts = {int, int}]’
acl_graph.hpp:567:43: required from here
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h:53:64: error: narrowing conversion of ‘dims#0’ from ‘int’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
/usr/local/AID/ComputeLibrary/arm_compute/core/Dimensions.h:53:64: error: narrowing conversion of ‘dims#1’ from ‘int’ to ‘long unsigned int’ inside { } [-Werror=narrowing]
At global scope:
cc1plus: error: unrecognized command line option ‘-Wno-ignored-attributes’ [-Werror]
cc1plus: all warnings being treated as errors
/media/firefly/uP/Tengine/scripts/makefile.build:108: recipe for target '/media/firefly/uP/Tengine/build/driver/acl_graph/acl_graph_driver.o' failed
make[2]: *** [/media/firefly/uP/Tengine/build/driver/acl_graph/acl_graph_driver.o] Error 1
make[2]: Leaving directory '/media/firefly/uP/Tengine/driver/acl_graph'
/media/firefly/uP/Tengine/scripts/makefile.build:72: recipe for target 'acl_graph' failed
make[1]: *** [acl_graph] Error 2
make[1]: Leaving directory '/media/firefly/uP/Tengine/driver'
Makefile:166: recipe for target 'driver' failed
make: *** [driver] Error 2

Failed to build.

Description:

It seem like gcc failed to generate obj code for assembling file.

Error message:

gcc -std=gnu99 -mcpu=cortex-a72 -Wa,-mcpu=cortex-a72 -Wl,-mcpu=cortex-a72 -g -c /home/abc/tengine/build/executor/operator/arm/fc/sgemv_1x8.s -o /home/abc/tengine/build/executor/operator/arm/fc/sgemv_1x8.o sgemv_1x8.S: Assembler messages: sgemv_1x8.S:83: Error: bad instructionldp x9,x10,[sp]'
sgemv_1x8.S:84: Error: bad instruction ldp x11,x12,[sp,0x10]' sgemv_1x8.S:85: Error: bad instruction ldp x13,x14,[sp,0x20]'
sgemv_1x8.S:86: Error: ARM register expected -- ldr x15,[sp,0x30]' sgemv_1x8.S:88: Error: bad instruction ldp q30,q31,[x0]'
sgemv_1x8.S:90: Error: selected processor does not support cbz x15,loop_end' in ARM mode sgemv_1x8.S:94: Error: ARM register expected -- ldr q0,[x1],#0x10'
sgemv_1x8.S:95: Error: bad instruction ld4 { v16.d,v17.d,v18.d,v19.d}[0],[x2],#0x20' sgemv_1x8.S:96: Error: bad instruction ld4 { v16.d,v17.d,v18.d,v19.d}[1],[x3],#0x20'
sgemv_1x8.S:97: Error: bad instruction ld4 { v20.d,v21.d,v22.d,v23.d}[0],[x4],#0x20' sgemv_1x8.S:98: Error: bad instruction ld4 { v20.d,v21.d,v22.d,v23.d}[1],[x5],#0x20'
sgemv_1x8.S:100: Error: bad instruction fmla v30.4s,v16.4s,v0.s[0]' sgemv_1x8.S:101: Error: bad instruction fmla v30.4s,v17.4s,v0.s[1]'
sgemv_1x8.S:102: Error: ARM register expected -- subs x15,x15,0x1' sgemv_1x8.S:103: Error: bad instruction fmla v30.4s,v18.4s,v0.s[2]'
sgemv_1x8.S:104: Error: bad instruction prfm pldl1keep,[x1,0x80]' sgemv_1x8.S:105: Error: bad instruction fmla v30.4s,v19.4s,v0.s[3]'
sgemv_1x8.S:106: Error: bad instruction prfm pldl1keep,[x2,0xa0]' sgemv_1x8.S:108: Error: bad instruction fmla v31.4s,v20.4s,v0.s[0]'
sgemv_1x8.S:109: Error: bad instruction prfm pldl1keep,[x3,0x90]' sgemv_1x8.S:110: Error: bad instruction fmla v31.4s,v21.4s,v0.s[1]'
sgemv_1x8.S:111: Error: bad instruction prfm pldl1keep,[x4,0xb0]' sgemv_1x8.S:112: Error: bad instruction fmla v31.4s,v22.4s,v0.s[2]'
sgemv_1x8.S:113: Error: bad instruction prfm pldl1keep,[x5,0xc0]' sgemv_1x8.S:114: Error: bad instruction fmla v31.4s,v23.4s,v0.s[3]'
sgemv_1x8.S:116: Error: unexpected character n' in type specifier sgemv_1x8.S:116: Error: bad instruction b.ne loop'
sgemv_1x8.S:122: Error: bad instruction st1 {v30.s}[0],[x6]' sgemv_1x8.S:123: Error: bad instruction st1 {v30.s}[1],[x7]'
sgemv_1x8.S:124: Error: bad instruction st1 {v30.s}[2],[x9]' sgemv_1x8.S:125: Error: bad instruction st1 {v30.s}[3],[x10]'
sgemv_1x8.S:126: Error: bad instruction st1 {v31.s}[0],[x11]' sgemv_1x8.S:127: Error: bad instruction st1 {v31.s}[1],[x12]'
sgemv_1x8.S:128: Error: bad instruction st1 {v31.s}[2],[x13]' sgemv_1x8.S:129: Error: bad instruction st1 {v31.s}[3],[x14]'
sgemv_1x8.S:131: Error: bad instruction ret' /home/abc/tengine/scripts/makefile.build:105: recipe for target '/home/abc/tengine/build/executor/operator/arm/fc/sgemv_1x8.o' failed

Build Error with CONFIG_ACL_GPU=y in RasbperryPi3 B

Hardware: RaspberryPi3 Model B

this is how I build compute library
$ scons Werror=1 debug=0 asserts=0 neon=0 opencl=1 examples=1 os=linux arch=armv7a -j3

makefile.config

#-------------------------------------------------------------------------------
#  Template configuration for compiling
#
#  First copy makefile.config.example to makefile.config (assume you are on the 
#  root directory). 
#
#  $ cp makefile.config.example makefile.config
#
#  Next modify makefile.config, and then compile by
#
#  $ make
#
#  or build in parallel with 8 threads
#
#  $ make -j8
#-------------------------------------------------------------------------------

# Set the target arch 
#CONFIG_ARCH_ARM64=y

# Enable Compiling Optimization
CONFIG_OPT_CFLAGS = -O2

# uncomment to build the reference operators wrapped on Caffe
# CONFIG_CAFFE_REF=y

# Set the path of caffe used for compile and link,
# if caffe's operator calculation is enabled.
# CAFFE_ROOT = /home/firefly/caffe

# Enable GPU support by Arm Computing Library
CONFIG_ACL_GPU=y
#


# Use BLAS as the operator implementation
#
CONFIG_ARCH_BLAS=y

# Set the path of ACL 
ACL_ROOT=/home/pi/Desktop/project/ComputeLibrary

# Enable other serializers 
CONFIG_CAFFE_SUPPORT=y
# CONFIG_MXNET_SUPPORT=y
# CONFIG_ONNX_SUPPORT=y
# CONFIG_TF_SUPPORT=y

# Enable Wrappers
# CONFIG_FRAMEWORK_WRAPPER=y

tengine build error

cc1plus: all warnings being treated as errors
/home/pi/Desktop/project/tengine/scripts/makefile.build:108: recipe for target '/home/pi/Desktop/project/tengine/build/driver/acl_graph/acl_graph_driver.o' failed
make[2]: *** [/home/pi/Desktop/project/tengine/build/driver/acl_graph/acl_graph_driver.o] Error 1
make[2]: *** Waiting for unfinished jobs....
g++ -std=c++11    -I.  -O2 -Wall -g -fPIC  -I/home/pi/Desktop/project/tengine/driver/include  -I/home/pi/Desktop/project/tengine/driver/../include  -I/home/pi/Desktop/project/tengine/driver/../core/include -I/home/pi/Desktop/project/tengine/driver/../operator/include  -I/home/pi/Desktop/project/tengine/driver/../executor/include  -Werror -DCONFIG_ACL_GPU=1  -I/home/pi/Desktop/project/ComputeLibrary -I/home/pi/Desktop/project/ComputeLibrary/include -I/home/pi/Desktop/project/ComputeLibrary/utils -c acl_conv.cpp -o /home/pi/Desktop/project/tengine/build/driver/acl/acl_conv.o 
cc1plus: all warnings being treated as errors
/home/pi/Desktop/project/tengine/scripts/makefile.build:108: recipe for target '/home/pi/Desktop/project/tengine/build/driver/acl/acl_driver.o' failed
make[2]: *** [/home/pi/Desktop/project/tengine/build/driver/acl/acl_driver.o] Error 1
make[2]: *** Waiting for unfinished jobs....
cc1plus: all warnings being treated as errors
/home/pi/Desktop/project/tengine/scripts/makefile.build:108: recipe for target '/home/pi/Desktop/project/tengine/build/driver/acl_graph/acl_graph_device.o' failed
make[2]: *** [/home/pi/Desktop/project/tengine/build/driver/acl_graph/acl_graph_device.o] Error 1
make[2]: Leaving directory '/home/pi/Desktop/project/tengine/driver/acl_graph'
/home/pi/Desktop/project/tengine/scripts/makefile.build:72: recipe for target 'acl_graph' failed
make[1]: *** [acl_graph] Error 2
make[1]: *** Waiting for unfinished jobs....
In file included from /home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/CLHelpers.h:28:0,
                 from /home/pi/Desktop/project/ComputeLibrary/arm_compute/runtime/CL/CLScheduler.h:27,
                 from acl_conv.cpp:40:
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘_cl_context*(const cl_context_properties*, cl_device_type, void (*)(const char*, const void*, size_t, void*), void*, cl_int*) {aka _cl_context*(const int*, long long unsigned int, void (*)(const char*, const void*, unsigned int, void*), void*, int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:81:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clCreateContextFromType);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘_cl_command_queue*(cl_context, cl_device_id, cl_command_queue_properties, cl_int*) {aka _cl_command_queue*(_cl_context*, _cl_device_id*, long long unsigned int, int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:82:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clCreateCommandQueue);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_context, cl_context_info, size_t, void*, size_t*) {aka int(_cl_context*, unsigned int, unsigned int, void*, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:83:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetContextInfo);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_program, cl_uint, _cl_device_id* const*, const char*, void (*)(cl_program, void*), void*) {aka int(_cl_program*, unsigned int, _cl_device_id* const*, const char*, void (*)(_cl_program*, void*), void*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:84:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clBuildProgram);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue, cl_kernel, cl_uint, const size_t*, const size_t*, const size_t*, cl_uint, _cl_event* const*, _cl_event**) {aka int(_cl_command_queue*, _cl_kernel*, unsigned int, const unsigned int*, const unsigned int*, const unsigned int*, unsigned int, _cl_event* const*, _cl_event**)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:85:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clEnqueueNDRangeKernel);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_kernel, cl_uint, size_t, const void*) {aka int(_cl_kernel*, unsigned int, unsigned int, const void*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:86:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clSetKernelArg);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_kernel) {aka int(_cl_kernel*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:87:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clReleaseKernel);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘_cl_program*(cl_context, cl_uint, const char**, const size_t*, cl_int*) {aka _cl_program*(_cl_context*, unsigned int, const char**, const unsigned int*, int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:88:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clCreateProgramWithSource);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘_cl_mem*(cl_context, cl_mem_flags, size_t, void*, cl_int*) {aka _cl_mem*(_cl_context*, long long unsigned int, unsigned int, void*, int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:89:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clCreateBuffer);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_kernel) {aka int(_cl_kernel*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:90:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clRetainKernel);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘_cl_kernel*(cl_program, const char*, cl_int*) {aka _cl_kernel*(_cl_program*, const char*, int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:91:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clCreateKernel);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_program, cl_program_info, size_t, void*, size_t*) {aka int(_cl_program*, unsigned int, unsigned int, void*, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:92:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetProgramInfo);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue) {aka int(_cl_command_queue*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:93:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clFlush);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue) {aka int(_cl_command_queue*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:94:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clFinish);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_program) {aka int(_cl_program*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:95:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clReleaseProgram);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_context) {aka int(_cl_context*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:96:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clRetainContext);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘_cl_program*(cl_context, cl_uint, _cl_device_id* const*, const size_t*, const unsigned char**, cl_int*, cl_int*) {aka _cl_program*(_cl_context*, unsigned int, _cl_device_id* const*, const unsigned int*, const unsigned char**, int*, int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:97:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clCreateProgramWithBinary);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue) {aka int(_cl_command_queue*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:98:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clReleaseCommandQueue);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘void*(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, _cl_event* const*, _cl_event**, cl_int*) {aka void*(_cl_command_queue*, _cl_mem*, unsigned int, long long unsigned int, unsigned int, unsigned int, unsigned int, _cl_event* const*, _cl_event**, int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:99:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clEnqueueMapBuffer);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_program) {aka int(_cl_program*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:100:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clRetainProgram);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*) {aka int(_cl_program*, _cl_device_id*, unsigned int, unsigned int, void*, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:101:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetProgramBuildInfo);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, _cl_event* const*, _cl_event**) {aka int(_cl_command_queue*, _cl_mem*, unsigned int, unsigned int, unsigned int, void*, unsigned int, _cl_event* const*, _cl_event**)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:102:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clEnqueueReadBuffer);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void*, cl_uint, _cl_event* const*, _cl_event**) {aka int(_cl_command_queue*, _cl_mem*, unsigned int, unsigned int, unsigned int, const void*, unsigned int, _cl_event* const*, _cl_event**)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:103:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clEnqueueWriteBuffer);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_event) {aka int(_cl_event*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:104:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clReleaseEvent);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_context) {aka int(_cl_context*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:105:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clReleaseContext);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue) {aka int(_cl_command_queue*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:106:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clRetainCommandQueue);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue, cl_mem, void*, cl_uint, _cl_event* const*, _cl_event**) {aka int(_cl_command_queue*, _cl_mem*, void*, unsigned int, _cl_event* const*, _cl_event**)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:107:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clEnqueueUnmapMemObject);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_mem) {aka int(_cl_mem*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:108:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clRetainMemObject);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_mem) {aka int(_cl_mem*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:109:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clReleaseMemObject);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_device_id, cl_device_info, size_t, void*, size_t*) {aka int(_cl_device_id*, unsigned int, unsigned int, void*, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:110:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetDeviceInfo);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_platform_id, cl_device_type, cl_uint, _cl_device_id**, cl_uint*) {aka int(_cl_platform_id*, long long unsigned int, unsigned int, _cl_device_id**, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:111:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetDeviceIDs);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_event) {aka int(_cl_event*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:112:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clRetainEvent);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_uint, _cl_platform_id**, cl_uint*) {aka int(unsigned int, _cl_platform_id**, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:113:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetPlatformIDs);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*) {aka int(_cl_kernel*, _cl_device_id*, unsigned int, unsigned int, void*, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:114:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetKernelWorkGroupInfo);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*) {aka int(_cl_command_queue*, unsigned int, unsigned int, void*, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:115:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetCommandQueueInfo);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_kernel, cl_kernel_info, size_t, void*, size_t*) {aka int(_cl_kernel*, unsigned int, unsigned int, void*, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:116:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetKernelInfo);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_event, cl_profiling_info, size_t, void*, size_t*) {aka int(_cl_event*, unsigned int, unsigned int, void*, unsigned int*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:117:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clGetEventProfilingInfo);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘void*(cl_context, cl_svm_mem_flags, size_t, cl_uint) {aka void*(_cl_context*, long long unsigned int, unsigned int, unsigned int)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:118:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clSVMAlloc);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue, cl_bool, cl_map_flags, void*, size_t, cl_uint, _cl_event* const*, _cl_event**) {aka int(_cl_command_queue*, unsigned int, long long unsigned int, void*, unsigned int, unsigned int, _cl_event* const*, _cl_event**)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:120:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clEnqueueSVMMap);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue, void*, cl_uint, _cl_event* const*, _cl_event**) {aka int(_cl_command_queue*, void*, unsigned int, _cl_event* const*, _cl_event**)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:121:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clEnqueueSVMUnmap);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_command_queue, _cl_event**) {aka int(_cl_command_queue*, _cl_event**)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:122:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clEnqueueMarker);
     ^~~~~~~~~~~~~~~~~~~~
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:79:38: error: ignoring attributes on template argument ‘cl_int(cl_uint, _cl_event* const*) {aka int(unsigned int, _cl_event* const*)}’ [-Werror=ignored-attributes]
     std::function<decltype(func_name)> func_name##_ptr = nullptr
                                      ^
/home/pi/Desktop/project/ComputeLibrary/arm_compute/core/CL/OpenCL.h:123:5: note: in expansion of macro ‘DECLARE_FUNCTION_PTR’
     DECLARE_FUNCTION_PTR(clWaitForEvents);
     ^~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
/home/pi/Desktop/project/tengine/scripts/makefile.build:108: recipe for target '/home/pi/Desktop/project/tengine/build/driver/acl/acl_conv.o' failed
make[2]: *** [/home/pi/Desktop/project/tengine/build/driver/acl/acl_conv.o] Error 1
make[2]: Leaving directory '/home/pi/Desktop/project/tengine/driver/acl'
/home/pi/Desktop/project/tengine/scripts/makefile.build:72: recipe for target 'acl' failed
make[1]: *** [acl] Error 2
make[1]: Leaving directory '/home/pi/Desktop/project/tengine/driver'
Makefile:131: recipe for target 'driver' failed
make: *** [driver] Error 2

libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)

-- Check for working C compiler: /home/admin/tmp/android-ndk-r16b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
-- Check for working C compiler: /home/admin/tmp/android-ndk-r16b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/admin/tmp/android-ndk-r16b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++
-- Check for working CXX compiler: /home/admin/tmp/android-ndk-r16b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_TOOLCHAIN_FILE = /home/admin/tmp/android-ndk-r16b/build/cmake/android.toolchain.cmake
-- CMAKE_INSTALL_PREFIX = /usr/local
-- Found OpenCV: /home/admin/tmp/OpenCV-android-sdk (found version "3.4.2") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/admin/workspace/Tengine/examples/build

Cmake-version : 3.12.1
Protobuf-version: 3.0.0
OpenCV-sdk-version : 3.4.2

Tengine/examples/android-build-armv8.sh :

#!/bin/bash

export ANDROID_NDK=/home/admin/tmp/android-ndk-r16b

cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
     -DANDROID_ABI="arm64-v8a" \
     -DANDROID_PLATFORM=android-21 \
     -DANDROID_STL=gnustl_shared \
     -DTENGINE_DIR=/home/admin/workspace/Tengine \
     -DOpenCV_DIR=/home/admin/tmp/OpenCV-android-sdk/sdk/native/jni \
     -DPROTOBUF_DIR=/home/admin/tmp/protobuf_lib \
     ..  

Tengine/android-build-armv8.sh :

#!/bin/bash

PROTOBUF_PATH=
BLAS_PATH=
ARCH_TYPE=
ANDROID_NDK=

while read line 
do
   IFS=:
   arr=($line)
   if [ "${arr[0]}" == "PROTOBUF_DIR" ]; then
      PROTOBUF_PATH=${arr[1]}
   elif [ "${arr[0]}" == "BLAS_DIR" ]; then
      BLAS_PATH=${arr[1]}
   elif [ "${arr[0]}" == "CONFIG_ARCH_TYPE" ]; then
      ARCH_TYPE=${arr[1]}
   elif [ "${arr[0]}" == "ANDROID_NDK" ]; then
      ANDROID_NDK=${arr[1]}
   fi  
done<../android_config.txt

cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
    -DANDROID_ABI="arm64-v8a" \
    -DCONFIG_ARCH_BLAS=ON \
    -DANDROID_PLATFORM=android-21 \
    -DANDROID_STL=gnustl_shared \
    -DPROTOBUF_DIR=$PROTOBUF_PATH \
    -DBLAS_DIR=$BLAS_PATH \
    ..

android_config.txt :

ANDROID_NDK:/home/admin/tmp/android-ndk-r16b
PROTOBUF_DIR:/home/admin/tmp/protobuf_lib
BLAS_DIR:/home/admin/tmp/openbla020_android
CONFIG_ARCH_TYPE:ARMv8

Error :( :

Scanning dependencies of target SSD
Scanning dependencies of target FASTER_RCNN
Scanning dependencies of target MSSD
Scanning dependencies of target Classify
Scanning dependencies of target LIGHTEN_CNN
Scanning dependencies of target MTCNN
Scanning dependencies of target YOLOV2
Scanning dependencies of target convert_caffe_to_tm
[  3%] Building CXX object tengine_model/convert/CMakeFiles/convert_caffe_to_tm.dir/convert_caffe_to_tm.cpp.o
[  6%] Building CXX object ssd/CMakeFiles/SSD.dir/ssd.cpp.o
[ 10%] Building CXX object mobilenet_ssd/CMakeFiles/MSSD.dir/mssd.cpp.o
[ 13%] Building CXX object lighten_cnn/CMakeFiles/LIGHTEN_CNN.dir/lighten_cnn.cpp.o
[ 17%] Building CXX object faster_rcnn/CMakeFiles/FASTER_RCNN.dir/faster_rcnn.cpp.o
[ 20%] Building CXX object imagenet_classification/CMakeFiles/Classify.dir/classification.cpp.o
[ 24%] Building CXX object yolov2/CMakeFiles/YOLOV2.dir/yolov2.cpp.o
[ 27%] Building CXX object mtcnn/CMakeFiles/MTCNN.dir/mtcnn_utils.cpp.o
[ 31%] Linking CXX executable convert_caffe_to_tm
/home/admin/tmp/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)
/home/admin/workspace/Tengine/install/lib/libtengine.so: undefined reference to `cblas_sgemm'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
tengine_model/convert/CMakeFiles/convert_caffe_to_tm.dir/build.make:84: recipe for target 'tengine_model/convert/convert_caffe_to_tm' failed
make[2]: *** [tengine_model/convert/convert_caffe_to_tm] Error 1
CMakeFiles/Makefile2:496: recipe for target 'tengine_model/convert/CMakeFiles/convert_caffe_to_tm.dir/all' failed
make[1]: *** [tengine_model/convert/CMakeFiles/convert_caffe_to_tm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 34%] Building CXX object mtcnn/CMakeFiles/MTCNN.dir/mtcnn.cpp.o
/home/admin/workspace/Tengine/examples/lighten_cnn/lighten_cnn.cpp:44:9: warning: comparison of unsigned expression < 0 is always false
      [-Wtautological-compare]
    if(n<0)
       ~^~
1 warning generated.
[ 37%] Building CXX object lighten_cnn/CMakeFiles/LIGHTEN_CNN.dir/__/common/common.cpp.o
[ 41%] Building CXX object mobilenet_ssd/CMakeFiles/MSSD.dir/__/common/common.cpp.o
[ 44%] Building CXX object ssd/CMakeFiles/SSD.dir/__/common/common.cpp.o
[ 48%] Linking CXX executable LIGHTEN_CNN
/home/admin/tmp/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)
/home/admin/workspace/Tengine/install/lib/libtengine.so: undefined reference to `cblas_sgemm'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
lighten_cnn/CMakeFiles/LIGHTEN_CNN.dir/build.make:136: recipe for target 'lighten_cnn/LIGHTEN_CNN' failed
make[2]: *** [lighten_cnn/LIGHTEN_CNN] Error 1
CMakeFiles/Makefile2:310: recipe for target 'lighten_cnn/CMakeFiles/LIGHTEN_CNN.dir/all' failed
make[1]: *** [lighten_cnn/CMakeFiles/LIGHTEN_CNN.dir/all] Error 2
[ 51%] Building CXX object mtcnn/CMakeFiles/MTCNN.dir/test_mtcnn.cpp.o
[ 55%] Building CXX object mtcnn/CMakeFiles/MTCNN.dir/__/common/common.cpp.o
[ 58%] Building CXX object faster_rcnn/CMakeFiles/FASTER_RCNN.dir/__/common/common.cpp.o
[ 62%] Linking CXX executable MSSD
[ 65%] Building CXX object yolov2/CMakeFiles/YOLOV2.dir/__/common/common.cpp.o
[ 68%] Linking CXX executable SSD
/home/admin/tmp/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)
/home/admin/tmp/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)
[ 72%] Building CXX object imagenet_classification/CMakeFiles/Classify.dir/model_config.cpp.o
[ 75%] Linking CXX executable FASTER_RCNN
[ 79%] Building CXX object imagenet_classification/CMakeFiles/Classify.dir/__/common/common.cpp.o
[ 82%] Linking CXX executable YOLOV2
/home/admin/tmp/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)
/home/admin/tmp/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)
/home/admin/workspace/Tengine/install/lib/libtengine.so: undefined reference to `cblas_sgemm'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
mobilenet_ssd/CMakeFiles/MSSD.dir/build.make:136: recipe for target 'mobilenet_ssd/MSSD' failed
make[2]: *** [mobilenet_ssd/MSSD] Error 1
CMakeFiles/Makefile2:420: recipe for target 'mobilenet_ssd/CMakeFiles/MSSD.dir/all' failed
make[1]: *** [mobilenet_ssd/CMakeFiles/MSSD.dir/all] Error 2
/home/admin/workspace/Tengine/install/lib/libtengine.so: undefined reference to `cblas_sgemm'
[ 86%] Linking CXX executable Classify
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ssd/CMakeFiles/SSD.dir/build.make:136: recipe for target 'ssd/SSD' failed
make[2]: *** [ssd/SSD] Error 1
CMakeFiles/Makefile2:200: recipe for target 'ssd/CMakeFiles/SSD.dir/all' failed
make[1]: *** [ssd/CMakeFiles/SSD.dir/all] Error 2
/home/admin/tmp/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)
/home/admin/workspace/Tengine/install/lib/libtengine.so: undefined reference to `cblas_sgemm'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
yolov2/CMakeFiles/YOLOV2.dir/build.make:136: recipe for target 'yolov2/YOLOV2' failed
make[2]: *** [yolov2/YOLOV2] Error 1
CMakeFiles/Makefile2:145: recipe for target 'yolov2/CMakeFiles/YOLOV2.dir/all' failed
make[1]: *** [yolov2/CMakeFiles/YOLOV2.dir/all] Error 2
[ 89%] Linking CXX executable MTCNN
/home/admin/workspace/Tengine/install/lib/libtengine.so: undefined reference to `cblas_sgemm'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
faster_rcnn/CMakeFiles/FASTER_RCNN.dir/build.make:136: recipe for target 'faster_rcnn/FASTER_RCNN' failed
make[2]: *** [faster_rcnn/FASTER_RCNN] Error 1
CMakeFiles/Makefile2:255: recipe for target 'faster_rcnn/CMakeFiles/FASTER_RCNN.dir/all' failed
make[1]: *** [faster_rcnn/CMakeFiles/FASTER_RCNN.dir/all] Error 2
/home/admin/tmp/android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libopenblas.so, needed by /home/admin/workspace/Tengine/install/lib/libtengine.so, not found (try using -rpath or -rpath-link)
/home/admin/workspace/Tengine/install/lib/libtengine.so: undefined reference to `cblas_sgemm'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
imagenet_classification/CMakeFiles/Classify.dir/build.make:151: recipe for target 'imagenet_classification/Classify' failed
make[2]: *** [imagenet_classification/Classify] Error 1
CMakeFiles/Makefile2:365: recipe for target 'imagenet_classification/CMakeFiles/Classify.dir/all' failed
make[1]: *** [imagenet_classification/CMakeFiles/Classify.dir/all] Error 2
/home/admin/workspace/Tengine/install/lib/libtengine.so: undefined reference to `cblas_sgemm'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
mtcnn/CMakeFiles/MTCNN.dir/build.make:166: recipe for target 'mtcnn/MTCNN' failed
make[2]: *** [mtcnn/MTCNN] Error 1
CMakeFiles/Makefile2:90: recipe for target 'mtcnn/CMakeFiles/MTCNN.dir/all' failed
make[1]: *** [mtcnn/CMakeFiles/MTCNN.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

I don't guess reason that error occured.

How can I solve this error???

help me

SET CONFIG_ACL_GPU=y; build error

L../build
../build/libtengine.so: undefined reference to `TEngine::RegisterConv2dOpencl()'
collect2: error: ld returned 1 exit status
Makefile:69: recipe for target '/home/firefly/Desktop/workspace/tengine/build/tools/bin/test_accuracy' failed
make[1]: *** [/home/firefly/Desktop/workspace/tengine/build/tools/bin/test_accuracy] Error 1
make[1]: Leaving directory '/home/firefly/Desktop/workspace/tengine/tools'
Makefile:134: recipe for target 'tools' failed

multi-thread running

I've written my own code to benchmark Tengine with my model and results are pretty good for a single thread but I don't know how to run it with multiple threads. 2/3 of the running time are BLAS operations (convolutions and deconvolutions).

I was trying to set these environmental variables but it didn't help:
export OPENBLAS_NUM_THREADS=4
export GOTO_NUM_THREADS=4
export OMP_NUM_THREADS=4

Build Failed, GetLogger() undefined and C++ problem On MacOS

@xhbdahai @xhbdahai @cyberfire @cyberfire
gcc -std=gnu99 -o /Users/Tengine/build/core/libtengine.so -shared /Users/Tengine/build/core/lib/built-in.o -lpthread -ldl
Undefined symbols for architecture x86_64:
"TEngine::Logger::GetLogger()", referenced from:
TEngine::Graph::CreateNodeFromStatic(TEngine::Node*, TEngine::StaticGraph const*, TEngine::StaticNode const*) in built-in.o
TEngine::Graph::RealCreateFromStatic(std::__1::shared_ptrTEngine::StaticGraph const&) in built-in.o
TEngine::Graph::Replace(TEngine::Graph*, TEngine::Graph*) in built-in.o
TEngine::Node::DumpNode() in built-in.o
TEngine::CheckGraphIntegraityByEdge(TEngine::StaticGraph*) in built-in.o
_set_exec_device in built-in.o
_save_model in built-in.o
...
"std::runtime_error::what() const", referenced from:
vtable for TEngine::te_error_base in built-in.o
"std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::find(char, unsigned long) const", referenced from:
TEngine::TEngineConfig::Load(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, char, char) in built-in.o
TEngine::TEngineConfig::ParseKey(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) in built-in.o
"std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::compare(char const*) const", referenced from:
TEngine::Graph::Replace(TEngine::Graph*, TEngine::Graph*) in built-in.o
TEngine::CheckGraphIntegraityByEdge(TEngine::StaticGraph*) in built-in.o
TEngine::TEngineConfig::Load(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, char, char) in built-in.o
TEngine::GraphExecutor::InferShape() in built-in.o
TEngine::TEnginePlugin::SetPlugin(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) in built-in.o
"std::__1::__vector_base_common::__throw_length_error() const", referenced from:
std::__1::enable_if<(__is_forward_iterator<int*>::value) && (is_constructible<int, std::__1::iterator_traits<int*>::reference>::value), void>::type std::__1::vector<int, std::__1::allocator >::assign<int*>(int*, int*) in built-in.o
std::__1::vector<int, std::__1::allocator >::allocate(unsigned long) in built-in.o
std::__1::vector<TEngine::Node*, std::__1::allocatorTEngine::Node* >::insert(std::__1::__wrap_iter<TEngine::Node* const*>, TEngine::Node* const&) in built-in.o
void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&>(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&&&) in built-in.o
std::__1::enable_if<(__is_forward_iterator<std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >> >::value) && (is_constructible<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >> >::reference>::value), std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >> >::type std::__1::vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >::insert<std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >> >(std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const*>, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >>, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >>) in built-in.o
void std::__1::vector<std::__1::shared_ptrTEngine::NodePort, std::__1::allocator<std::__1::shared_ptrTEngine::NodePort > >::__push_back_slow_path<std::__1::shared_ptrTEngine::NodePort >(std::__1::shared_ptrTEngine::NodePort&&) in built-in.o
void std::__1::vector<TEngine::NodePort*, std::__1::allocatorTEngine::NodePort* >::__push_back_slow_path<TEngine::NodePort* const&>(TEngine::NodePort* const&&&) in built-in.o
...
"std::__1::__vector_base_common::__throw_out_of_range() const", referenced from:
std::__1::vector<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >::at(unsigned long) in built-in.o

failed compilation with protobuf version=3.0.2

@HEGALLIS , Recently, I compiled prototuf(version =3.0.2) with arm64_v8a and 64 bit target successfully, However, when I added local parameter PROTOBUF_DIR to android_build_armv8.sh and compiled Tengine, it shown that no match info .
Could you tell me the required version of protobuf needed by Tengine?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.