Skip to content
This repository has been archived by the owner on Jul 17, 2024. It is now read-only.

Commit

Permalink
Merged PR 1583: ELL release v3.1.0
Browse files Browse the repository at this point in the history
ELL release v3.1.0

- Move to VS 2019
- Fix a codegen error that was resulting in incorrect functional behavior
- Fix regressions in audio training tutorial (#232)
- Add importing of Sum nodes to ONNX importer
- Fix crash in LLVMContext::SetName
- Improved performance of CNN models on Pi3 with new implementations of spatial, pointwise and regular convolutions
- Improved performance of reorder node
- New nodes: ReorderDataCodeNode, SpatialConvolutionNode, MatrixMatrixMultiplyCodeNode
- Implement parallelization strategies for matrix multiplication nodes.
- Only enable new MatrixMatrixMultipleCodeNode path for select ARM targets like Pi, and not Intel/AMD CPUs
- Add the flag `--skip_ellcode` to `compile` and `wrap.py` tools to use OpenBLAS for linear algebra computations.
  • Loading branch information
Kern Handa (KERN) committed Jun 10, 2020
1 parent 74fb22c commit f96051e
Show file tree
Hide file tree
Showing 248 changed files with 32,163 additions and 1,723 deletions.
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
###############################################################################
* text=auto

###############################################################################
# Explicitly force .sh scripts to have LF line endings
###############################################################################
*.sh text eol=lf

###############################################################################
# Set default behavior for command prompt diff.
#
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ artifacts/
*.pidb
*.svclog
*.scc
*.ll

# Chutzpah Test files
_Chutzpah*
Expand Down
4 changes: 1 addition & 3 deletions CMake/CommonInterfaces.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@
# On Linux and Mac, this can be done by call *make* on the specific language wrapper e.g.
# make _ELL_python

cmake_minimum_required(VERSION 3.8 FATAL_ERROR)

set(GLOBAL_BIN_DIR "${CMAKE_BINARY_DIR}/bin")
if(WIN32)
set(GLOBAL_BIN_DIR "${CMAKE_BINARY_DIR}/bin/release")
set(GLOBAL_BIN_DIR "${GLOBAL_BIN_DIR}/release")
endif()

#
Expand Down
14 changes: 10 additions & 4 deletions CMake/CopySharedLibraries.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,27 @@
#

# Copies necessary DLLs to global binary directory
macro(copy_shared_libraries target_name)
macro(copy_shared_libraries_to target_name target_location)
if(WIN32)
set(target_location "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/")
if(EXISTS ${BLAS_DLL_DIR})
set(command_target_name copy_dlls_to_${target_name})
foreach(blas_dll ${BLAS_DLLS})
add_custom_command(TARGET ${target_name} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${target_location}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${BLAS_DLL_DIR}/${blas_dll} ${target_location}
COMMAND ${CMAKE_COMMAND} -E make_directory "${target_location}/$<CONFIG>"
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${BLAS_DLL_DIR}/${blas_dll} "${target_location}/$<CONFIG>"
)
endforeach()
endif()
endif()
endmacro()

macro(copy_shared_libraries target_name)
if(WIN32)
set(target_location "${CMAKE_BINARY_DIR}/bin")
copy_shared_libraries_to(${target_name} ${target_location})
endif()
endmacro()

macro(set_test_library_path test_name)
if(WIN32)
set (GLOBAL_BIN_DIR ${CMAKE_BINARY_DIR}/bin)
Expand Down
3 changes: 0 additions & 3 deletions CMake/LLVMSetup.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,4 @@ foreach(DEFINITION ${LLVM_DEFINITIONS})
add_definitions(${DEFINITION})
endforeach()

set(LLVM_LIBS ${LLVM_AVAILABLE_LIBS})
list(FILTER LLVM_LIBS INCLUDE REGEX "LLVM.+")

set_property(TARGET intrinsics_gen PROPERTY FOLDER "cmake_macros")
13 changes: 10 additions & 3 deletions CMake/OpenBLASSetup.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -123,14 +123,17 @@ else()
set(BLAS_LIB_SEARCH_PATHS ${BLAS_PACKAGE_DIR}/lib/)
set(BLAS_FOUND TRUE)
else()
# Known registry ID (family, model) settings for various CPU types
# Known registry ID (family, model) settings for various Intel CPU types
#
# Haswell: Family 6, model 60, 63, 69
# Broadwell: Family 6, Model 70, 79 (compatible with Haswell)
# Kaby Lake: Family 6, Model 78, 142, 158 (compatible with Haswell)
# Sandybridge: Family 6, model 42, 45
# Ivybridge: Family 6, model 58 (compatible with Sandybridge)
# Skylake: Family 6, model 42
# Skylake: Family 6, model 85
#
# Known registry ID (family, model) settings for various AMD CPU types
# Epyc: Family 23, model 1 (compatible with Haswell)

# We can set up a mapping from a detected processor generation to the version of
# the OpenBLAS libraries to use with the set_processor_mapping macro. For instance,
Expand Down Expand Up @@ -159,11 +162,15 @@ else()
set(processor_generation "sandybridge")
elseif(processor_model EQUAL 58)
set(processor_generation "sandybridge") # actually ivybridge, but it is compatible with sandybridge
elseif(processor_model EQUAL 42)
elseif(processor_model EQUAL 85)
set(processor_generation "sandybridge") # actually skylake, but it is compatible with sandybridge
else()
set(processor_generation "unknown")
endif()
elseif(processor_family EQUAL 23)
if(processor_model EQUAL 1)
set(processor_generation "haswell")
endif()
endif()
else()
set(processor_generation "${PROCESSOR_HINT}")
Expand Down
37 changes: 25 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,18 @@

cmake_minimum_required(VERSION 3.8 FATAL_ERROR)

# Error on non-existent dependency in add_dependencies.
cmake_policy(SET CMP0046 NEW)

# Include modules in the CMake directory.
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
set(ELL_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${ELL_ROOT}/CMake")
include(CompilerCache)

project(ELL)
project(ELL CXX ASM)
if(MSVC)
enable_language(ASM_MASM)
endif()

file(STRINGS "VERSION" ELL_VERSION)
message(STATUS "ELL version ${ELL_VERSION}")
Expand Down Expand Up @@ -41,11 +48,14 @@ option(DISABLE_PYTHON "Explicitly disable building python modules" OFF)
option(CNTK "Enable CNTK importer and related unit tests (requires CNTK python module)" OFF)
option(ONNX "Enable ONNX importer and related unit tests (requires PyTorch and ONNX python modules)" OFF)

set(ELL_ROOT "${CMAKE_SOURCE_DIR}")
set(FLAKE8_CONFIG "${CMAKE_SOURCE_DIR}/.flake8")
set(TEST_MODELS_REPO "https://github.com/Microsoft/ell-test-models" CACHE DOCUMENTATION "URL to the git repo containing test models" )
set(FLAKE8_CONFIG "${ELL_ROOT}/.flake8")
set(TEST_MODELS_REPO "https://github.com/Microsoft/ell-test-models" CACHE STRING "URL to the git repo containing test models" )
message(STATUS "Configuring tests to use TEST_MODELS_REPO at: ${TEST_MODELS_REPO}")
set(EXTERNAL_DIR "${CMAKE_SOURCE_DIR}/external" CACHE DOCUMENTATION "Directory to install external dependencies" )

if(NOT ELL_EXTERNAL_DIR)
set(ELL_EXTERNAL_DIR "${ELL_ROOT}/external" CACHE STRING "Directory to install external dependencies" )
endif(NOT ELL_EXTERNAL_DIR)

set(RPI_PASSWORD "$ENV{RPI_PASSWORD}")
set(RPI_CLUSTER "$ENV{RPI_CLUSTER}")
set(RPI_KEY "$ENV{RPI_APIKEY}")
Expand Down Expand Up @@ -106,7 +116,8 @@ endif()
enable_testing()

# Set up global variables to help find NuGet projects
set(PACKAGE_ROOT ${EXTERNAL_DIR})
set(PACKAGE_ROOT ${ELL_EXTERNAL_DIR})

include(OpenBLASSetup)
include(LLVMSetup)
include(SWIGSetup)
Expand Down Expand Up @@ -138,14 +149,16 @@ else()
add_compile_options(-Wmissing-field-initializers)
add_compile_options(-fvisibility-inlines-hidden)
add_compile_options(-Wno-unknown-pragmas)
add_compile_options(-Wno-backslash-newline-escape)
add_compile_options(-Wno-comment)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb3 -O0")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb3 -O0")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -ggdb3")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ggdb3")
if(${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
add_compile_options(-Wno-backslash-newline-escape)
add_compile_options(-Wno-self-assign)
else() # GCC
add_compile_options(-Wno-ignored-attributes)
endif()
endif()

Expand All @@ -163,17 +176,17 @@ add_subdirectory(interfaces)
add_subdirectory(examples)

# Add user directories to ELL build if requested
if(EXISTS "${CMAKE_SOURCE_DIR}/user")
if(EXISTS "${ELL_ROOT}/user")
# Add root user directory if it has a CMakeLists.txt file and INCLUDE_IN_ELL_BUILD.txt file
if(EXISTS"${CMAKE_SOURCE_DIR}/user/CMakeLists.txt" AND EXISTS "${CMAKE_SOURCE_DIR}/user/INCLUDE_IN_ELL_BUILD.txt")
if(EXISTS"${ELL_ROOT}/user/CMakeLists.txt" AND EXISTS "${ELL_ROOT}/user/INCLUDE_IN_ELL_BUILD.txt")
message(STATUS "Adding user directory to ELL build")
add_subdirectory(user)
endif()

# Now add all child directories that have CMakeLists.txt files and INCLUDE_IN_ELL_BUILD.txt file
file(GLOB children RELATIVE "${CMAKE_SOURCE_DIR}/user" "${CMAKE_SOURCE_DIR}/user/*")
file(GLOB children RELATIVE "${ELL_ROOT}/user" "${ELL_ROOT}/user/*")
foreach(child ${children})
if(IS_DIRECTORY "${CMAKE_SOURCE_DIR}/user/${child}" AND EXISTS "${CMAKE_SOURCE_DIR}/user/${child}/CMakeLists.txt" AND EXISTS "${CMAKE_SOURCE_DIR}/user/${child}/INCLUDE_IN_ELL_BUILD.txt")
if(IS_DIRECTORY "${ELL_ROOT}/user/${child}" AND EXISTS "${ELL_ROOT}/user/${child}/CMakeLists.txt" AND EXISTS "${ELL_ROOT}/user/${child}/INCLUDE_IN_ELL_BUILD.txt")
message(STATUS "Adding user directory ${child} to ELL build")
add_subdirectory("user/${child}")
endif()
Expand Down
13 changes: 13 additions & 0 deletions History.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
## 3.1.0
- Move to VS 2019
- Fix a codegen error that was resulting in incorrect functional behavior
- Fix regressions in audio training tutorial (#232)
- Add importing of Sum nodes to ONNX importer
- Fix crash in LLVMContext::SetName
- Improved performance of CNN models on Pi3 with new implementations of spatial, pointwise and regular convolutions
- Improved performance of reorder node
- New nodes: ReorderDataCodeNode, SpatialConvolutionNode, MatrixMatrixMultiplyCodeNode
- Implement parallelization strategies for matrix multiplication nodes.
- Only enable new MatrixMatrixMultipleCodeNode path for select ARM targets like Pi, and not Intel/AMD CPUs
- Add the flag `--skip_ellcode` to `compile` and `wrap.py` tools to use OpenBLAS for linear algebra computations.

## 3.0.3
- Fix VS 2019 build.

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.0.3
3.1.0
4 changes: 2 additions & 2 deletions docs/gallery/ILSVRC2012/Asparagus.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ permalink: /gallery/ILSVRC2012/Asparagus

[Back to Gallery](/ELL/gallery)

## ILSVRC2012 Classification: 64x64x3 Convolutional Neural Network (52.07% top 1 accuracy, 76.40% top 5 accuracy, 108ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)
## ILSVRC2012 Classification: 64x64x3 Convolutional Neural Network (52.07% top 1 accuracy, 76.40% top 5 accuracy, 181ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)

<table class="table table-striped table-bordered">
<tr>
Expand All @@ -19,7 +19,7 @@ permalink: /gallery/ILSVRC2012/Asparagus
</tr>
<tr>
<td> Performance </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz : 108ms/frame </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz : 181ms/frame </td>
</tr>
<tr>
<td> Uncompressed Size </td>
Expand Down
6 changes: 3 additions & 3 deletions docs/gallery/ILSVRC2012/Bean.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ permalink: /gallery/ILSVRC2012/Bean

[Back to Gallery](/ELL/gallery)

## ILSVRC2012 Classification: 128x128x3 Convolutional Neural Network (55.12% top 1 accuracy, 78.21% top 5 accuracy, 144ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)
## ILSVRC2012 Classification: 128x128x3 Convolutional Neural Network (55.12% top 1 accuracy, 78.21% top 5 accuracy, 87ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)

<table class="table table-striped table-bordered">
<tr>
<td> Download </td>
<td> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Bean/Bean_pi3.ell.zip">Bean_pi3.ell.zip</a></td>
<td> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Bean/Bean.ell.zip">Bean.ell.zip</a></td>
</tr>
<tr>
<td> Accuracy </td>
<td colspan="3"> ILSVRC2012: 78.21% (Top 5), 55.12% (Top 1) </td>
</tr>
<tr>
<td> Performance </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz : 144ms/frame </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz : 87ms/frame </td>
</tr>
<tr>
<td> Uncompressed Size </td>
Expand Down
6 changes: 3 additions & 3 deletions docs/gallery/ILSVRC2012/Buckthorn.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ permalink: /gallery/ILSVRC2012/Buckthorn

[Back to Gallery](/ELL/gallery)

## ILSVRC2012 Classification: 64x64x3 Convolutional Neural Network (57.57% top 1 accuracy, 80.55% top 5 accuracy, 171ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)
## ILSVRC2012 Classification: 64x64x3 Convolutional Neural Network (57.57% top 1 accuracy, 80.55% top 5 accuracy, 113ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)

<table class="table table-striped table-bordered">
<tr>
<td> Download </td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Buckthorn/Buckthorn_pi3.ell.zip">Buckthorn_pi3.ell.zip</a></td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Buckthorn/Buckthorn.ell.zip">Buckthorn.ell.zip</a></td>
</tr>
<tr>
<td> Accuracy </td>
<td colspan="3"> ILSVRC2012: 80.55% (Top 5), 57.57% (Top 1) </td>
</tr>
<tr>
<td> Performance </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz : 171ms/frame </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz : 113ms/frame </td>
</tr>
<tr>
<td> Uncompressed Size </td>
Expand Down
6 changes: 3 additions & 3 deletions docs/gallery/ILSVRC2012/Carrot.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ permalink: /gallery/ILSVRC2012/Carrot

[Back to Gallery](/ELL/gallery)

## ILSVRC2012 Classification: 128x128x3 Convolutional Neural Network (64.61% top 1 accuracy, 85.63% top 5 accuracy, 397ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)
## ILSVRC2012 Classification: 128x128x3 Convolutional Neural Network (64.61% top 1 accuracy, 85.63% top 5 accuracy, 341ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)

<table class="table table-striped table-bordered">
<tr>
<td> Download </td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Carrot/Carrot_pi3.ell.zip">Carrot_pi3.ell.zip</a></td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Carrot/Carrot.ell.zip">Carrot.ell.zip</a></td>
</tr>
<tr>
<td> Accuracy </td>
<td colspan="3"> ILSVRC2012: 85.63% (Top 5), 64.61% (Top 1) </td>
</tr>
<tr>
<td> Performance </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz: 397ms/frame </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz: 341ms/frame </td>
</tr>
<tr>
<td> Uncompressed Size </td>
Expand Down
6 changes: 3 additions & 3 deletions docs/gallery/ILSVRC2012/CashewNut.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ permalink: /gallery/ILSVRC2012/CashewNut

[Back to Gallery](/ELL/gallery)

## ILSVRC2012 Classification: 128x128x3 Convolutional Neural Network (60.22% top 1 accuracy, 82.44% top 5 accuracy, 178ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)
## ILSVRC2012 Classification: 128x128x3 Convolutional Neural Network (60.22% top 1 accuracy, 82.44% top 5 accuracy, 106ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)

<table class="table table-striped table-bordered">
<tr>
<td> Download </td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/CashewNut/CashewNut_pi3.ell.zip">CashewNut_pi3.ell.zip</a></td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/CashewNut/CashewNut.ell.zip">CashewNut.ell.zip</a></td>
</tr>
<tr>
<td> Accuracy </td>
<td colspan="3"> ILSVRC2012: 82.44% (Top 5), 60.22% (Top 1) </td>
</tr>
<tr>
<td> Performance </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz: 178ms/frame </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz: 106ms/frame </td>
</tr>
<tr>
<td> Uncompressed Size </td>
Expand Down
6 changes: 3 additions & 3 deletions docs/gallery/ILSVRC2012/Chalta.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ permalink: /gallery/ILSVRC2012/Chalta

[Back to Gallery](/ELL/gallery)

## ILSVRC2012 Classification: 64x64x3 Convolutional Neural Network (58.74% top 1 accuracy, 81.59% top 5 accuracy, 221ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)
## ILSVRC2012 Classification: 64x64x3 Convolutional Neural Network (58.74% top 1 accuracy, 81.59% top 5 accuracy, 147ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)

<table class="table table-striped table-bordered">
<tr>
<td> Download </td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Chalta/Chalta_pi3.ell.zip">Chalta_pi3.ell.zip</a></td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Chalta/Chalta.ell.zip">Chalta.ell.zip</a></td>
</tr>
<tr>
<td> Accuracy </td>
<td colspan="3"> ILSVRC2012: 81.59% (Top 5), 58.74% (Top 1) </td>
</tr>
<tr>
<td> Performance </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz: 221ms/frame </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz: 147ms/frame </td>
</tr>
<tr>
<td> Uncompressed Size </td>
Expand Down
6 changes: 3 additions & 3 deletions docs/gallery/ILSVRC2012/Clary.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ permalink: /gallery/ILSVRC2012/Clary

[Back to Gallery](/ELL/gallery)

## ILSVRC2012 Classification: 128x128x3 Convolutional Neural Network (66.65% top 1 accuracy, 87.17% top 5 accuracy, 506ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)
## ILSVRC2012 Classification: 128x128x3 Convolutional Neural Network (66.65% top 1 accuracy, 87.17% top 5 accuracy, 361ms/frame on Raspberry Pi 3 (Raspbian) @ 700MHz)

<table class="table table-striped table-bordered">
<tr>
<td> Download </td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Clary/Clary_pi3.ell.zip">Clary_pi3.ell.zip</a></td>
<td colspan="3"> <a href="https://github.com/Microsoft/ELL-models/raw/master/models/ILSVRC2012/Clary/Clary.ell.zip">Clary.ell.zip</a></td>
</tr>
<tr>
<td> Accuracy </td>
<td colspan="3"> ILSVRC2012: 87.17% (Top 5), 66.65% (Top 1) </td>
</tr>
<tr>
<td> Performance </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz: 506ms/frame </td>
<td colspan="3"> Raspberry Pi 3 (Raspbian) @ 700MHz: 361ms/frame </td>
</tr>
<tr>
<td> Uncompressed Size </td>
Expand Down
Loading

0 comments on commit f96051e

Please sign in to comment.