Skip to content

Commit

Permalink
Release 18.05
Browse files Browse the repository at this point in the history
  • Loading branch information
Surmeh authored and TelmoARM committed May 23, 2018
1 parent bceff2f commit 3537c2c
Show file tree
Hide file tree
Showing 174 changed files with 5,129 additions and 2,656 deletions.
29 changes: 28 additions & 1 deletion Android.bp
Expand Up @@ -10,6 +10,7 @@
////////////////////////////////////////////
cc_library_static {
name: "libarmnn",
proprietary: true,
export_include_dirs: ["include",
"src/armnnUtils"],
local_include_dirs: ["src/armnn"],
Expand All @@ -25,6 +26,7 @@ cc_library_static {
"src/armnn/backends/ClWorkloads/ClBatchNormalizationFloat32Workload.cpp",
"src/armnn/backends/ClWorkloads/ClConstantFloat32Workload.cpp",
"src/armnn/backends/ClWorkloads/ClConstantUint8Workload.cpp",
"src/armnn/backends/ClWorkloads/ClConvolution2dBaseWorkload.cpp",
"src/armnn/backends/ClWorkloads/ClConvolution2dFloat32Workload.cpp",
"src/armnn/backends/ClWorkloads/ClConvolution2dUint8Workload.cpp",
"src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionFloat32Workload.cpp",
Expand Down Expand Up @@ -76,6 +78,7 @@ cc_library_static {
"src/armnn/backends/NeonWorkloads/NeonSplitterFloat32Workload.cpp",
"src/armnn/backends/NeonWorkloads/NeonSplitterUint8Workload.cpp",
"src/armnn/backends/ClWorkloadFactory.cpp",
"src/armnn/backends/ClContextControl.cpp",
"src/armnn/backends/CpuTensorHandle.cpp",
"src/armnn/backends/RefWorkloadFactory.cpp",
"src/armnn/backends/RefWorkloads/RefMergerUint8Workload.cpp",
Expand Down Expand Up @@ -124,6 +127,29 @@ cc_library_static {
"src/armnn/backends/MemCopyWorkload.cpp",
"src/armnn/backends/WorkloadData.cpp",
"src/armnn/backends/WorkloadFactory.cpp",
"src/armnn/backends/AclBaseMemoryManager.cpp",
"src/armnn/layers/ActivationLayer.cpp",
"src/armnn/layers/AdditionLayer.cpp",
"src/armnn/layers/BatchNormalizationLayer.cpp",
"src/armnn/layers/ConstantLayer.cpp",
"src/armnn/layers/Convolution2dLayer.cpp",
"src/armnn/layers/DepthwiseConvolution2dLayer.cpp",
"src/armnn/layers/FakeQuantizationLayer.cpp",
"src/armnn/layers/FloorLayer.cpp",
"src/armnn/layers/FullyConnectedLayer.cpp",
"src/armnn/layers/InputLayer.cpp",
"src/armnn/layers/L2NormalizationLayer.cpp",
"src/armnn/layers/MemCopyLayer.cpp",
"src/armnn/layers/MergerLayer.cpp",
"src/armnn/layers/MultiplicationLayer.cpp",
"src/armnn/layers/NormalizationLayer.cpp",
"src/armnn/layers/OutputLayer.cpp",
"src/armnn/layers/PermuteLayer.cpp",
"src/armnn/layers/Pooling2dLayer.cpp",
"src/armnn/layers/ReshapeLayer.cpp",
"src/armnn/layers/ResizeBilinearLayer.cpp",
"src/armnn/layers/SoftmaxLayer.cpp",
"src/armnn/layers/SplitterLayer.cpp",
"src/armnn/Descriptors.cpp",
"src/armnn/Exceptions.cpp",
"src/armnn/Graph.cpp",
Expand All @@ -132,7 +158,6 @@ cc_library_static {
"src/armnn/SerializeLayerParameters.cpp",
"src/armnn/InternalTypes.cpp",
"src/armnn/Layer.cpp",
"src/armnn/Layers.cpp",
"src/armnn/LoadedNetwork.cpp",
"src/armnn/Network.cpp",
"src/armnn/backends/OutputHandler.cpp",
Expand All @@ -151,6 +176,8 @@ cc_library_static {
"libboost_log",
"libboost_system",
"libboost_thread"],
shared_libs: [
"liblog"],
stl: "libc++",
cppflags: [
"-fexceptions",
Expand Down
28 changes: 15 additions & 13 deletions Android.mk
Expand Up @@ -7,7 +7,7 @@ LOCAL_PATH := $(call my-dir)

# Configure these paths if you move the source or Khronos headers
#
OPENCL_HEADER_PATH := $(LOCAL_PATH)/../../mali/product/khronos/original
OPENCL_HEADER_PATH := $(LOCAL_PATH)/../clframework/include
NN_HEADER_PATH := $(LOCAL_PATH)/../../../../frameworks/ml/nn/runtime/include
ARMNN_HEADER_PATH := $(LOCAL_PATH)/include
ARMNN_SOURCE_HEADER_PATH := $(LOCAL_PATH)/src/armnn
Expand All @@ -30,18 +30,18 @@ LOCAL_CFLAGS := \

LOCAL_SRC_FILES := \
src/armnn/test/UnitTests.cpp \
src/armnn/test/EndToEndTest.cpp \
src/armnn/test/UtilsTests.cpp \
src/armnn/test/GraphTests.cpp \
src/armnn/test/RuntimeTests.cpp \
src/armnn/test/TensorTest.cpp \
src/armnn/test/Network_test.cpp \
src/armnn/backends/test/IsLayerSupportedTest.cpp \
src/armnn/backends/test/Reference.cpp \
src/armnn/backends/test/WorkloadDataValidation.cpp \
src/armnn/backends/test/TensorCopyUtils.cpp \
src/armnn/backends/test/LayerTests.cpp \
src/armnn/backends/test/CreateWorkloadRef.cpp \
src/armnn/test/EndToEndTest.cpp \
src/armnn/test/UtilsTests.cpp \
src/armnn/test/GraphTests.cpp \
src/armnn/test/RuntimeTests.cpp \
src/armnn/test/TensorTest.cpp \
src/armnn/test/Network_test.cpp \
src/armnn/backends/test/IsLayerSupportedTest.cpp \
src/armnn/backends/test/Reference.cpp \
src/armnn/backends/test/WorkloadDataValidation.cpp \
src/armnn/backends/test/TensorCopyUtils.cpp \
src/armnn/backends/test/LayerTests.cpp \
src/armnn/backends/test/CreateWorkloadRef.cpp \
src/armnn/backends/test/ArmComputeCl.cpp \
src/armnn/backends/test/ArmComputeNeon.cpp \
src/armnn/backends/test/CreateWorkloadCl.cpp \
Expand Down Expand Up @@ -78,6 +78,8 @@ LOCAL_ARM_MODE := arm
# Mark source files as dependent on Android.mk
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk

LOCAL_PROPRIETARY_MODULE := true

include $(BUILD_EXECUTABLE)


Expand Down
65 changes: 59 additions & 6 deletions CMakeLists.txt
Expand Up @@ -27,6 +27,10 @@ list(APPEND armnnUtils_sources
src/armnnUtils/Permute.cpp
src/armnnUtils/DotSerializer.cpp
src/armnnUtils/DotSerializer.hpp
src/armnnUtils/HeapProfiling.cpp
src/armnnUtils/HeapProfiling.hpp
src/armnnUtils/LeakChecking.cpp
src/armnnUtils/LeakChecking.hpp
)
if(BUILD_TF_PARSER OR BUILD_CAFFE_PARSER)
list(APPEND armnnUtils_sources
Expand Down Expand Up @@ -100,6 +104,8 @@ list(APPEND armnn_sources
include/armnn/Version.hpp
src/armnn/backends/ClWorkloadFactory.hpp
src/armnn/backends/ClWorkloadFactory.cpp
src/armnn/backends/ClContextControl.hpp
src/armnn/backends/ClContextControl.cpp
src/armnn/backends/ClLayerSupport.cpp
src/armnn/backends/ClLayerSupport.hpp
src/armnn/backends/CpuTensorHandleFwd.hpp
Expand All @@ -120,6 +126,8 @@ list(APPEND armnn_sources
src/armnn/backends/WorkloadData.cpp
src/armnn/backends/WorkloadFactory.hpp
src/armnn/backends/WorkloadFactory.cpp
src/armnn/backends/AclBaseMemoryManager.hpp
src/armnn/backends/AclBaseMemoryManager.cpp
src/armnn/backends/WorkloadInfo.hpp
src/armnn/backends/MemCopyWorkload.cpp
src/armnn/backends/MemCopyWorkload.hpp
Expand Down Expand Up @@ -214,14 +222,58 @@ list(APPEND armnn_sources
src/armnn/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.hpp
src/armnn/backends/RefWorkloads/RefPermuteWorkload.hpp
src/armnn/backends/RefWorkloads/RefPermuteWorkload.cpp
src/armnn/layers/LayerCloneBase.hpp
src/armnn/layers/LayerWithParameters.hpp
src/armnn/layers/ActivationLayer.hpp
src/armnn/layers/ActivationLayer.cpp
src/armnn/layers/AdditionLayer.hpp
src/armnn/layers/AdditionLayer.cpp
src/armnn/layers/BatchNormalizationLayer.hpp
src/armnn/layers/BatchNormalizationLayer.cpp
src/armnn/layers/ConstantLayer.hpp
src/armnn/layers/ConstantLayer.cpp
src/armnn/layers/Convolution2dLayer.hpp
src/armnn/layers/Convolution2dLayer.cpp
src/armnn/layers/DepthwiseConvolution2dLayer.hpp
src/armnn/layers/DepthwiseConvolution2dLayer.cpp
src/armnn/layers/FakeQuantizationLayer.hpp
src/armnn/layers/FakeQuantizationLayer.cpp
src/armnn/layers/FloorLayer.hpp
src/armnn/layers/FloorLayer.cpp
src/armnn/layers/FullyConnectedLayer.hpp
src/armnn/layers/FullyConnectedLayer.cpp
src/armnn/layers/InputLayer.hpp
src/armnn/layers/InputLayer.cpp
src/armnn/layers/L2NormalizationLayer.hpp
src/armnn/layers/L2NormalizationLayer.cpp
src/armnn/layers/MemCopyLayer.hpp
src/armnn/layers/MemCopyLayer.cpp
src/armnn/layers/MergerLayer.hpp
src/armnn/layers/MergerLayer.cpp
src/armnn/layers/MultiplicationLayer.hpp
src/armnn/layers/MultiplicationLayer.cpp
src/armnn/layers/NormalizationLayer.hpp
src/armnn/layers/NormalizationLayer.cpp
src/armnn/layers/OutputLayer.hpp
src/armnn/layers/OutputLayer.cpp
src/armnn/layers/PermuteLayer.hpp
src/armnn/layers/PermuteLayer.cpp
src/armnn/layers/Pooling2dLayer.hpp
src/armnn/layers/Pooling2dLayer.cpp
src/armnn/layers/ReshapeLayer.hpp
src/armnn/layers/ReshapeLayer.cpp
src/armnn/layers/ResizeBilinearLayer.hpp
src/armnn/layers/ResizeBilinearLayer.cpp
src/armnn/layers/SoftmaxLayer.hpp
src/armnn/layers/SoftmaxLayer.cpp
src/armnn/layers/SplitterLayer.hpp
src/armnn/layers/SplitterLayer.cpp
src/armnn/InternalTypes.hpp
src/armnn/InternalTypes.cpp
src/armnn/LayerFwd.hpp
src/armnn/Layer.hpp
src/armnn/Layer.cpp
src/armnn/LayersFwd.hpp
src/armnn/Layers.hpp
src/armnn/Layers.cpp
src/armnn/Runtime.hpp
src/armnn/Runtime.cpp
src/armnn/SerializeLayerParameters.cpp
Expand Down Expand Up @@ -336,6 +388,8 @@ if(ARMCOMPUTECL)
src/armnn/backends/ClWorkloads/ClConstantFloat32Workload.hpp
src/armnn/backends/ClWorkloads/ClConstantUint8Workload.cpp
src/armnn/backends/ClWorkloads/ClConstantUint8Workload.hpp
src/armnn/backends/ClWorkloads/ClConvolution2dBaseWorkload.cpp
src/armnn/backends/ClWorkloads/ClConvolution2dBaseWorkload.hpp
src/armnn/backends/ClWorkloads/ClConvolution2dFloat32Workload.cpp
src/armnn/backends/ClWorkloads/ClConvolution2dFloat32Workload.hpp
src/armnn/backends/ClWorkloads/ClConvolution2dUint8Workload.cpp
Expand Down Expand Up @@ -427,7 +481,6 @@ if(PROFILING_BACKEND_STREAMLINE)
target_link_libraries(armnn pthread)
endif()


if(BUILD_UNIT_TESTS)
set(unittest_sources)
list(APPEND unittest_sources
Expand Down Expand Up @@ -530,13 +583,13 @@ if(BUILD_UNIT_TESTS)
target_include_directories(UnitTests PRIVATE src/armnn)
target_include_directories(UnitTests PRIVATE src/armnnUtils)

CHECK_INCLUDE_FILE(valgrind/memcheck.h VALGRIND_FOUND)

if(VALGRIND_FOUND)
if(NOT HEAP_PROFILING AND VALGRIND_FOUND)
# Valgrind works with gperftools version number <= 2.4
target_compile_definitions(UnitTests PRIVATE "WITH_VALGRIND=1")
endif()

target_link_libraries(UnitTests armnn)
target_link_libraries(UnitTests armnnUtils)
target_link_libraries(UnitTests ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries(UnitTests ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})

Expand Down
12 changes: 6 additions & 6 deletions LICENSE
@@ -1,12 +1,12 @@
Copyright (c) 2017 ARM Limited.
MIT License

SPDX-License-Identifier: MIT
Copyright (c) 2017 ARM Limited.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
Expand Down
3 changes: 1 addition & 2 deletions README.md
Expand Up @@ -2,5 +2,4 @@

For more information about Arm NN, see: https://developer.arm.com/products/processors/machine-learning/arm-nn

There is a getting started guide here: https://developer.arm.com/technologies/machine-learning-on-arm/developer-material/how-to-guides/configuring-the-arm-nn-sdk-build-environment-for-caffe

There is a getting started guide here: https://developer.arm.com/technologies/machine-learning-on-arm/developer-material/how-to-guides/configuring-the-arm-nn-sdk-build-environment
35 changes: 34 additions & 1 deletion cmake/GlobalConfig.cmake
Expand Up @@ -7,6 +7,9 @@ option(ARMCOMPUTENEON "Build with ARM Compute NEON support" OFF)
option(ARMCOMPUTECL "Build with ARM Compute OpenCL support" OFF)
option(PROFILING "Build with ArmNN built-in profiling support" OFF)
option(PROFILING_BACKEND_STREAMLINE "Forward the armNN profiling events to DS-5/Streamline as annotations" OFF)
# options used for heap profiling
option(HEAP_PROFILING "Build with heap profiling enabled" OFF)
option(GPERFTOOLS_ROOT "Location where the gperftools 'include' and 'lib' folders to be found" Off)

include(SelectLibraryConfigurations)

Expand Down Expand Up @@ -146,7 +149,6 @@ if(BUILD_TF_PARSER)
include_directories(SYSTEM "${TF_GENERATED_SOURCES}")
endif()


include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

# ARM Compute
Expand Down Expand Up @@ -250,3 +252,34 @@ if(PROFILING_BACKEND_STREAMLINE)
add_definitions(-DARMNN_STREAMLINE_ENABLED)
endif()

if(HEAP_PROFILING)
# enable heap profiling for everything except for referencetests
if(NOT ${PROJECT_NAME} STREQUAL "referencetests")
find_path(HEAP_PROFILER_INCLUDE gperftools/heap-profiler.h
PATHS ${GPERFTOOLS_ROOT}/include
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
include_directories(SYSTEM "${HEAP_PROFILER_INCLUDE}")
find_library(GPERF_TOOLS_LIBRARY
NAMES tcmalloc_debug
HINTS ${GPERFTOOLS_ROOT}/lib)
link_directories(${GPERFTOOLS_ROOT}/lib)

link_libraries(${GPERF_TOOLS_LIBRARY})
add_definitions("-DARMNN_HEAP_PROFILING_ENABLED=1")
else()
message("Heap profiling is disabled for referencetests")
endif()
else()
# Valgrind only works with gperftools version number <= 2.4
CHECK_INCLUDE_FILE(valgrind/memcheck.h VALGRIND_FOUND)
endif()


if(NOT BUILD_CAFFE_PARSER)
message(STATUS "Caffe parser support is disabled")
endif()

if(NOT BUILD_TF_PARSER)
message(STATUS "Tensorflow parser support is disabled")
endif()

19 changes: 19 additions & 0 deletions include/armnn/Exceptions.hpp
Expand Up @@ -6,6 +6,7 @@

#include <stdexcept>
#include <string>
#include <sstream>

namespace armnn
{
Expand Down Expand Up @@ -72,4 +73,22 @@ void ConditionalThrow(bool condition, const std::string& message)
}
}

///
/// ComparedType must support:
/// operator==(const ComparedType&)
/// operator<<(ostream&, const ComparedType&)
///
template <typename ExceptionType, typename ComparedType>
void ConditionalThrowIfNotEqual(const std::string& message,
const ComparedType& leftHandSide,
const ComparedType& rightHandSide)
{
if (!(leftHandSide == rightHandSide))
{
std::stringstream ss;
ss << message << " : " << leftHandSide << " != " << rightHandSide;
throw ExceptionType(ss.str());
}
}

}
2 changes: 2 additions & 0 deletions include/armnn/LayerSupport.hpp
Expand Up @@ -37,8 +37,10 @@ bool IsConstantSupported(Compute compute,

bool IsConvolution2dSupported(Compute compute,
const TensorInfo& input,
const TensorInfo& output,
const Convolution2dDescriptor& descriptor,
const TensorInfo& weights,
const TensorInfo& biases,
char* reasonIfUnsupported = nullptr,
size_t reasonIfUnsupportedMaxLength = 1024);

Expand Down

0 comments on commit 3537c2c

Please sign in to comment.