diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..5aacc759b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,80 @@ +cmake_minimum_required(VERSION 3.16.3) + +project(sdk) + +if(NOT DEFINED CONFIG_GAP_SDK_HOME) + message(STATUS "Using current directory as GAP SDK Home") + set(CONFIG_GAP_SDK_HOME ${CMAKE_CURRENT_SOURCE_DIR}) +endif() + +add_subdirectory(utils/littlefs) + +set (VP_MODELS ${CONFIG_GAP_SDK_HOME}/gvsoc/gvsoc/models\;${CONFIG_GAP_SDK_HOME}/gvsoc/gvsoc_gap/models) + +add_subdirectory(gvsoc) + +if (EXISTS tools/sfu_gen/CMakeLists.txt) + add_subdirectory(tools/sfu_gen) +endif() + +## Audio fwk +set(AF_COMPONENTS_PATH ${CONFIG_GAP_SDK_HOME}/tools/audio-framework/components) +set(AF_LIBRARY_PATH ${CONFIG_GAP_SDK_HOME}/install/workstation/lib) +add_subdirectory(tools/audio-framework) + +# add checkout target +add_custom_target( + mini_checkout + COMMENT "Checkouting minimal common sdk components" + COMMAND git submodule update --init ${CONFIG_GAP_SDK_HOME}/rtos/pmsis/pmsis_bsp + COMMAND git submodule update --init ${CONFIG_GAP_SDK_HOME}/rtos/pmsis/pmsis_api + COMMAND git submodule update --recursive --init ${CONFIG_GAP_SDK_HOME}/examples + COMMAND git submodule update --init ${CONFIG_GAP_SDK_HOME}/utils/gapy + COMMAND git submodule update --recursive --init ${CONFIG_GAP_SDK_HOME}/rtos/freeRTOS + ) + +add_custom_target( + checkout DEPENDS mini_checkout + COMMAND git git submodule update --init --recursive ${CONFIG_GAP_SDK_HOME} + ) + +add_custom_target( + autotiler + COMMENT "Building autotiler if required" + COMMAND if [ -e ${CONFIG_GAP_SDK_HOME}/tools/autotiler_v3/Makefile ]\; then make -C ${CONFIG_GAP_SDK_HOME}/tools/autotiler_v3 all\; fi + ) + + +add_custom_target( + legacy_makefile_sdk ALL + COMMENT "Building modules using legacy build systems" + DEPENDS autotiler nntool + ) + +add_custom_target( + plptest + COMMAND pip install --user -r ${CONFIG_GAP_SDK_HOME}/utils/plptest/requirements.txt + COMMAND if [ -e ${CONFIG_GAP_SDK_HOME}/utils/plptest ]\; then cd ${CONFIG_GAP_SDK_HOME}/utils/plptest && make build\; fi + ) + +add_custom_target( + legacy_makefile_utils ALL + DEPENDS plptest + ) + +## Install pip requirements, note: does not install nntool reqs as building +## will do that +add_custom_target( + pip_install + COMMENT "install pip deps from requirements" + COMMAND pip install --user -r ${CONFIG_GAP_SDK_HOME}/requirements.txt + COMMAND pip install --user -r ${CONFIG_GAP_SDK_HOME}/nn_menu/requirements.txt + COMMAND pip install --user -r ${CONFIG_GAP_SDK_HOME}/tools//nntool/requirements.txt + COMMAND pip install --user -r ${CONFIG_GAP_SDK_HOME}/utils/gapy/requirements.txt + ) + +add_custom_target( + nntool DEPENDS pip_install + COMMENT "Building nntool" + COMMAND make -C ${CONFIG_GAP_SDK_HOME}/tools/nntool all + ) diff --git a/Makefile b/Makefile index 38511f0bb..5cf96bf10 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,38 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +ifeq ($(TARGET_CHIP), GAP9) +use_old_build = 1 +endif + +ifeq ($(TARGET_CHIP_FAMILY), GAP8) +use_old_build = 1 +endif + +ifeq '$(use_old_build)' '1' + +checkout: + git submodule update --init --recursive + +all: + $(MAKE) -f gap8/gap8.mk gap8.all + +sdk: all + +audio-framework: all +minimal: all +plptest.all: all +autotiler: all +nntool: all +littlefs.build: all +gvsoc: all +openocd.all: all + +clean: + $(MAKE) -f gap8/gap8.mk clean + +else + ifndef GAP_SDK_HOME $(error Please run 'source sourceme.sh' in gap_sdk first) endif # GAP_SDK_HOME @@ -63,7 +95,7 @@ help: checkout: git submodule update --recursive --init -all: minimal gvsoc autotiler nntool littlefs.build openocd.all +all: minimal gvsoc autotiler nntool littlefs.build clean: littlefs.clean $(RM) $(TARGET_INSTALL_DIR) @@ -73,13 +105,9 @@ clean: littlefs.clean $(MAKE) -C $(GAP_SDK_HOME)/tools/nntool clean if [ -e tools/profiler ]; then $(MAKE) -C $(GAP_SDK_HOME)/tools/profiler clean; fi -ifeq ($(TARGET_CHIP_FAMILY), GAP8) -minimal: pulp-os openocd_tools.build plptest.build -else all: sfu.build minimal: plptest.build clean: sfu.clean -endif # TARGET_CHIP_FAMILY # Compat sdk: all @@ -103,75 +131,36 @@ pmsis-bsp.checkout: pmsis-api.checkout: git submodule update --init rtos/pmsis/pmsis_api -# This rules is to compile pmsis-bsp for pulp os on gap8, wihtout having to recompile the whole sdk -pmsis-bsp.build: - $(MAKE) -C $(GAP_SDK_HOME)/rtos/pmsis/pmsis_bsp all - gap_configs.checkout: git submodule update --init utils/gap_configs -# PulpOS_v1 -pulprt.all: pulprt.checkout pulprt.build - -pulprt.checkout: - git submodule update --init rtos/pulp/pulp-os - -pulprt.build: - $(MAKE) -C $(GAP_SDK_HOME)/rtos/pulp build.pulprt - -pulp-os: $(TARGET_INSTALL_DIR) install_others - $(MAKE) -C $(GAP_SDK_HOME)/rtos/pmsis/pmsis_api -f tools/export.mk build - $(MAKE) -C $(GAP_SDK_HOME)/rtos/pulp build - $(MAKE) -C $(GAP_SDK_HOME)/rtos/pmsis/pmsis_bsp all - $(MAKE) -C $(GAP_SDK_HOME)/libs/gap_lib all - # PulpOS_v2 -pulpos.all: +pulpos.all: pulpos.checkout gap_lib.checkout: git submodule update --init libs/gap_lib pulpos.checkout: gap_lib.checkout - git submodule update --init rtos/pulp/pulpos-2 rtos/pulp/pulpos-2_gap8 rtos/pulp/pulpos-2_gap9 rtos/pulp/gap_archi rtos/pulp/hal_pulp rtos/pulp/archi_pulp + git submodule update --init rtos/pulp/pulpos-2 rtos/pulp/pulpos-2_gap9 rtos/pulp/gap_archi freertos.all: freertos.checkout freertos.checkout: git submodule update --recursive --init rtos/freeRTOS -use_old_gvsoc=0 - -ifeq '$(TARGET_CHIP_FAMILY)' 'GAP8' -use_old_gvsoc=1 -endif - -ifeq '$(TARGET_CHIP)' 'GAP9' -use_old_gvsoc=1 -endif - # GVSOC -ifeq '$(use_old_gvsoc)' '1' -gvsoc: pulp-os pulpos.all gvsoc.checkout - ./gvsoc/gvsoc-build +gvsoc: $(MAKE) gvsoc.build -else -gvsoc: pulp-os - $(MAKE) gvsoc.build -endif gvsoc.all: gvsoc.checkout gvsoc.build gvsoc.checkout: git submodule update --init --recursive gvsoc -ifeq '$(use_old_gvsoc)' '1' -gvsoc.build: gvsoc.checkout gap_configs.checkout - $(MAKE) -C gvsoc/gvsoc build BUILD_DIR=$(BUILD_DIR)/gvsoc INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/install - $(MAKE) -C gvsoc/gvsoc_gap build BUILD_DIR=$(BUILD_DIR)/gvsoc_gap INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/install -else gvsoc.build: - cmake -S gvsoc -B build/gvsoc -DCMAKE_BUILD_TYPE=RelWithDebInfo -DTARGET_CHIP=GAP9_V2 && cmake --build build/gvsoc -j8 && cmake --install build/gvsoc --prefix $(GAP_SDK_HOME)/install/workstation -endif + cmake -S gvsoc -B build/gvsoc -DCMAKE_BUILD_TYPE=RelWithDebInfo -DTARGET_CHIP=GAP9_V2 -DCONFIG_GVSOC_SKIP_UDMA_BUILD=$(CONFIG_GVSOC_SKIP_UDMA_BUILD) + cmake --build build/gvsoc + cmake --install build/gvsoc --prefix $(GAP_SDK_HOME)/install/workstation gvsoc.clean: $(MAKE) -C gvsoc/gvsoc clean BUILD_DIR=$(BUILD_DIR)/gvsoc INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/install @@ -179,33 +168,6 @@ gvsoc.clean: # Tools -ifeq ($(TARGET_CHIP_FAMILY), GAP8) - -openocd.all: openocd.build - -openocd.checkout: - if [ ! -e utils/gap8-openocd ]; then \ - git clone --recursive https://github.com/GreenWaves-Technologies/gap8_openocd.git utils/gap8-openocd; \ - cd utils/gap8-openocd; \ - fi - -openocd.build: openocd.checkout - cd utils/gap8-openocd && ./bootstrap - cd utils/gap8-openocd && ./configure --prefix=$(INSTALL_DIR)/gap8-openocd --program-prefix=gap8- - cd utils/gap8-openocd && make -j install - mkdir -p $(INSTALL_DIR)/gap8-openocd/share/openocd/scripts/tcl - cd utils/openocd_tools && cp -r tcl/* $(INSTALL_DIR)/gap8-openocd/share/openocd/scripts/tcl - cd utils/openocd_tools && mkdir -p $(INSTALL_DIR)/gap8-openocd/share/openocd/gap_bins && cp -r gap_bins/* $(INSTALL_DIR)/gap8-openocd/share/openocd/gap_bins - -openocd_tools.all: openocd_tools.build - -openocd_tools.build: - mkdir -p $(INSTALL_DIR)/gap8-openocd/share/openocd/scripts/tcl - cd utils/openocd_tools && cp -r tcl/* $(INSTALL_DIR)/gap8-openocd/share/openocd/scripts/tcl - cd utils/openocd_tools && mkdir -p $(INSTALL_DIR)/gap8-openocd/share/openocd/gap_bins && cp -r gap_bins/* $(INSTALL_DIR)/gap8-openocd/share/openocd/gap_bins - -else - openocd.all: openocd.build openocd.checkout: @@ -221,8 +183,6 @@ openocd.build: openocd.checkout openocd.clean: rm -rf $(INSTALL_DIR)/openocd tools/openocd -endif # TARGET_CHIP_FAMILY - profiler: $(MAKE) -C tools/profiler all mkdir -p $(INSTALL_DIR)/bin @@ -231,17 +191,23 @@ profiler: nntool: $(MAKE) -C $(GAP_SDK_HOME)/tools/nntool all + +# SFUConfigurationGenerator (aka sfu_gen) +SFUGEN_DIR = $(GAP_SDK_HOME)/tools/sfu_gen +SFUGEN_BUILD_DIR = $(GAP_SDK_HOME)/build/sfu_gen + sfu.clean: ifneq ("$(wildcard tools/sfu_gen/Makefile)","") - cd tools/sfu_gen && make clean + rm -rf $(SFUGEN_BUILD_DIR) endif sfu.build: -ifneq ("$(wildcard tools/sfu_gen/Makefile)","") - cd tools/sfu_gen && make lib all install #INSTALL_DIR=$(CURDIR)/tools/sfu_gen/install +ifneq ("$(wildcard tools/sfu_gen/CMakeLists.txt)","") + cmake -S $(SFUGEN_DIR) -B $(SFUGEN_BUILD_DIR) + cmake --build $(SFUGEN_BUILD_DIR) + cmake --install $(SFUGEN_BUILD_DIR) --prefix $(INSTALL_DIR) endif - # Utils gapy.all: gapy.checkout @@ -264,14 +230,10 @@ LFS_MAKEFILE = $(LFS_BUILD_DIR)/Makefile #include $(LFS_MAKEFILE) -littlefs.build: $(LFS_MAKEFILE) - make -C $(LFS_BUILD_DIR) all install - -$(LFS_MAKEFILE): $(LFS_DIR)/CMakeLists.txt | $(LFS_BUILD_DIR) - cd $(LFS_BUILD_DIR) && cmake -DCMAKE_INSTALL_PREFIX:PATH=$(INSTALL_DIR) $(LFS_DIR) - -$(LFS_BUILD_DIR): - $(MKDIR) -p $@ +littlefs.build: + cmake -S $(LFS_DIR) -B build/lfs + cmake --build build/lfs + cmake --install build/lfs --prefix $(INSTALL_DIR) littlefs.checkout: git submodule update --init utils/littlefs @@ -315,4 +277,6 @@ test: plptest --max-timeout=$(TIMEOUT) --bench-csv-file=results.csv score -.PHONY: all clean install_others pulp-os gvsoc minimal +.PHONY: all clean install_others gvsoc minimal + +endif diff --git a/README.md b/README.md index b9afcfec6..152cb255d 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ We provide you with a set of tools and two different operating systems for GAP: #### OS Requirements installation -These instructions were developed using a fresh Ubuntu 18.04 Bionic Beaver +These instructions were developed using a fresh Ubuntu 20.04 (Focal Fossa) 64-Bit virtual machine from [OS-Boxes](https://www.osboxes.org/ubuntu/#ubuntu-1804-info). @@ -80,6 +80,7 @@ sudo apt-get install -y \ libsdl2-dev \ libsdl2-ttf-dev \ libsndfile1-dev \ + graphicsmagick-libmagick-dev-compat \ libtool \ libusb-1.0-0-dev \ pkg-config \ @@ -491,6 +492,24 @@ make clean sdk You can find a list of [releases](https://github.com/GreenWaves-Technologies/gap_sdk/releases) on Github. + +## Cmake Build (experimental) + +In order to build with cmake, source config file as explained before, +and then run the following code: + +```bash +# If your current directory is the SDK top: +CMAKE_GENERATOR=Ninja cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DTARGET_CHIP=GAP9_V2 -DCMAKE_INSTALL_PREFIX=$(pwd)/install/workstation -D +$ If your SDK is somewhere else: +export SDK_PATH=PATH/TO/YOUR/SDK +CMAKE_GENERATOR=Ninja cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DTARGET_CHIP=GAP9_V2 -DCMAKE_INSTALL_PREFIX=$SDK_PATH/install/workstation -DCONFIG_GAP_SDK_HOME=$SDK_PATH +# finally: +cmake --build build +cmake --install build +``` +To be noted: cmake build also takes care of python dependencies by default. + ## Getting help Please [log any issue](https://github.com/GreenWaves-Technologies/gap_sdk/issues) diff --git a/benchmarks/gap8/cnn/AllTest.c b/benchmarks/gap8/cnn/AllTest.c index 2426a4d5d..c66f7ce64 100755 --- a/benchmarks/gap8/cnn/AllTest.c +++ b/benchmarks/gap8/cnn/AllTest.c @@ -1,1323 +1,1323 @@ -#include -#include -#include -#include "pulp.h" -#include "rt/rt_api.h" - -#define NOGPIO -#define BYTE - - -#define ITERATIONS 100 -#define ENABLE_CYCLE_TRACE 0 - -#define ALIM_1_VOLT 0 -#define FREQ_FC (250*1000000) -#define FREQ_CL (175*1000000) - - -#define Wi 112 -#define Hi 112 -#define Wic 100 -#define Hic 100 -#define Wil 1024 -#define Hil 16 - -#define Wxor 100 -#define Hxor 100 - -char tests_names[][50]={ -{"2x2/2 Max Pool"}, -{"2x2/2 Avg Pool"}, -{"5x5 Convolutions"}, -{"Linear"}, -{"Xnor Conv 5x5"}, - -{"2x2/2 Max Pool Vect"}, -{"2x2/2 Avg Pool Vect"}, -{"5x5 Convolutions Vect"}, -{"LinearVect"}, - -{"2x2/2 Parallel Max Pool"}, -{"2x2/2 Parallel Avg Pool"}, -{"Parallel 5x5 Convolution"}, -{"Parallel Linear"}, -{"Parallel Xnor Conv 5x5"}, - -{"2x2/2 Parallel Max Pool Vect"}, -{"2x2/2 Parallel Avg Pool Vect"}, -{"Parallel Convolution Vect"}, -{"Parallel Linear Vect"} -}; - -int test_input_w[]={Wi,Wi,Wi,Wil,Wxor}; -int test_input_h[]={Hi,Hi,Hi,Hil,Hxor}; - - -int tests_ops[10]={ - ((Wi/2)*(Hi/2)), - ((Wi/2)*(Hi/2)), - (Wic-4)*(Hic-4), - (Wil*Hil), - (Wic-4)*(Hic-4) -}; - -int tests_input[][2]={ - {Wi , Hi }, - {Wi , Hi }, - {Wic, Hic}, - {Wil, Hil}, - {Wic, Hic} -}; - - -char tests_titles[][50]={ -{"Sequential"}, -{"Vector"}, -{"Parallel"}, -{"Parallel Vector"}, -}; - - - -#define ALIGN(Value, Size) (((Value)&((1<<(Size))-1))?((((Value)>>(Size))+1)<<(Size)):(Value)) - -#ifndef RISCV -#define Min(a, b) __builtin_pulp_minsi((a), (b)) -#define Max(a, b) __builtin_pulp_maxsi((a), (b)) -#else -#define Min(a, b) (((a)<(b))?(a):(b)) -#define Max(a, b) (((a)>(b))?(a):(b)) -#endif - -#ifdef __EMUL__ -#define plp_cluster_fetch(a) -#define plp_cluster_wait(a) -#endif - - - -#ifdef NOGPIO -#define WriteGpio(a, b) -#else -#define WriteGpio(a, b) rt_gpio_set_pin_value(0, a, b) -#endif - -#ifdef RISCV -#define TOT_TEST 1 -int test_num[TOT_TEST]={5}; - -#ifndef __EMUL__ -#endif - - -#define L2_MEM __attribute__((section(".heapl2ram"))) -#define L1_CL_MEM __attribute__((section(".heapsram"))) -#define L1_FC_MEM __attribute__((section(".fcTcdm"))) -/* HW timer */ -#define ARCHI_FC_TIMER_ADDR ( ARCHI_FC_PERIPHERALS_ADDR + ARCHI_FC_TIMER_OFFSET ) -#define PLP_TIMER_VALUE_LO 0x08 -#define PLP_TIMER_CFG_REG_LO 0x00 -#define PLP_TIMER_ENABLE_BIT 0 -#define PLP_TIMER_RESET_BIT 1 -#define PLP_TIMER_IRQ_ENABLE_BIT 2 -#define PLP_TIMER_IEM_BIT 3 -#define PLP_TIMER_CMP_CLR_BIT 4 -#define PLP_TIMER_ONE_SHOT_BIT 5 -#define PLP_TIMER_PRESCALER_ENABLE_BIT 6 -#define PLP_TIMER_CLOCK_SOURCE_BIT 7 -#define PLP_TIMER_PRESCALER_VALUE_BIT 8 -#define PLP_TIMER_PRESCALER_VALUE_BITS 8 -#define PLP_TIMER_64_BIT 31 - -#define plp_timer_conf_get(a,b,c,d,e,f,g,h,i) ((a << PLP_TIMER_ENABLE_BIT) \ - | (b << PLP_TIMER_RESET_BIT) \ - | (c << PLP_TIMER_IRQ_ENABLE_BIT) \ - | (d << PLP_TIMER_IEM_BIT) \ - | (e << PLP_TIMER_CMP_CLR_BIT) \ - | (f << PLP_TIMER_ONE_SHOT_BIT) \ - | (g << PLP_TIMER_PRESCALER_ENABLE_BIT) \ - | (h << PLP_TIMER_PRESCALER_VALUE_BIT) \ - | (i << PLP_TIMER_64_BIT) \ - ) -#define gap8_resethwtimer() pulp_write32(ARCHI_FC_TIMER_ADDR + PLP_TIMER_CFG_REG_LO, plp_timer_conf_get(1,1,0,0,0,0,0,0,0)) -#define gap8_readhwtimer() pulp_read32(ARCHI_FC_TIMER_ADDR + PLP_TIMER_VALUE_LO) - -#else -#define TOT_TEST 4 -int test_num[TOT_TEST]={5,4,5,4}; -#include "Gap8.h" - -static int CoreCountDynamic = 0; -static int ActiveCore = 8; - -static inline unsigned int __attribute__((always_inline)) ChunkSize(unsigned int X) - -{ - unsigned int NCore; - unsigned int Log2Core; - unsigned int Chunk; - - if (CoreCountDynamic) NCore = ActiveCore; else NCore = gap8_ncore(); - Log2Core = gap8_fl1(NCore); - Chunk = (X>>Log2Core) + ((X&(NCore-1))!=0); - return Chunk; -} -#endif - -#define STACK_SIZE 2048 -#define MOUNT 1 -#define UNMOUNT 0 -#define CID 0 - - -typedef struct ClusterArg{ - int test_num; - int Iter; - int Trace; - char Mode[10]; - int Iter_operations; -} ClusterArg_t; - -ClusterArg_t Arg; - - -char str[100]; -static char *float_to_string(float in){ - - int d1 = in; - float f2 = in - d1; - int d2 = trunc(f2 * 10000); - - sprintf (str, "%d.%04d", d1, d2); - return str; -} - -#ifndef RISCV -#define B_ins(dst, src, size, off) gap8_bitinsert(dst, src, size, off) -#define B_ins_r(dst, src, size, off) gap8_bitinsert_r(dst, src, size, off) -#define B_ext(x, size, off) gap8_bitextract(x, size, off) -#define B_extu(x, size, off) gap8_bitextractu(x, size, off) -#define B_ext_r(x, size, off) gap8_bitextract_r(x, size, off) -#define B_extu_r(x, size, off) gap8_bitextractu_r(x, size, off) -#define B_popc(src) __builtin_popcount((src)) -#else -static __attribute__ ((always_inline)) unsigned int bitcount32(unsigned int b) -{ - b -= (b >> 1) & 0x55555555; - b = (b & 0x33333333) + ((b >> 2) & 0x33333333); - b = (b + (b >> 4)) & 0x0f0f0f0f; - return (b * 0x01010101) >> 24; -} -#define B_ins(dst, src, size, off) (((dst) & ~(((1<<(size))-1)<<(off))) | (((src) & ((1<<(size))-1))<<(off))) -#define B_ins_r(dst, src, size, off) (((dst) & ~(((1<<(size))-1)<<(off))) | (((src) & ((1<<(size))-1))<<(off))) -#define B_ext(x, size, off) (((((x)>>(off))&((unsigned int)(1<<(size))-1))<<(32-(size)))>>(32-(size))) -#define B_extu(x, size, off) (((x)>>(off))&((unsigned int)(1<<(size))-1)) -#define B_ext_r(x, size, off) (((((x)>>(off))&((unsigned int)(1<<(size))-1))<<(32-(size)))>>(32-(size))) -#define B_extu_r(x, size, off) (((x)>>(off))&((unsigned int)(1<<(size))-1)) -#define B_popc(src) bitcount32((src)) -#endif - -#define VSOC 1000 -#define GPIO 17 - -#ifdef BYTE -typedef signed char Ty; -#else -typedef short int Ty; -#endif - -#ifdef BYTE -#define MAX_MEM 55000 -#else -#define MAX_MEM (55000/2) -#endif -Ty L1_CL_MEM Mem[MAX_MEM]; - -typedef struct { - Ty *__restrict__ In; - int W; - int H; - Ty *__restrict__ Filter; - Ty *__restrict__ Out; - int Norm; -} ArgConvT; - -typedef struct { - - unsigned int InBit; - signed char *__restrict__ Out; - unsigned int FilterBit; - int W; - int H; -} ArgConvBT; - -void CheckMem(int Size) - -{ - if (Size>MAX_MEM) { - printf("Memory Overflow (%d>%d). Aborting\n", Size, MAX_MEM); exit(0); - } -} - -#ifndef RISCV -v4s L1_CL_MEM LinearMask[4] = {(v4s) 0, (v4s) 0xFF, (v4s) 0xFFFF, (v4s) 0xFFFFFF}; -#ifdef BYTE -void __attribute__ ((noinline)) MaxPoolingVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Out) - -{ - int Wo=W/2, Ho=H/2; - for (int c=0; cIn; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H; - int Wo=W/2, Ho=H/2; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(Wo); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, Wo); - - for (unsigned int c=First; c>2; - } -} - -void __attribute__ ((noinline)) ParAvgPoolingVect(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H; - int Wo=W/2, Ho=H/2; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(Wo); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, Wo); - - for (unsigned int c=First; c>2; - } - gap8_waitbarrier(0); -} - -void __attribute__ ((noinline)) Additive5x5ConvolutionVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) - -{ - v4s C0 = *((v4s *) &Filter[0]), - C1 = *((v4s *) &Filter[5]), - C2 = *((v4s *) &Filter[10]), - C3 = *((v4s *) &Filter[15]), - C4 = *((v4s *) &Filter[20]), - C5 = gap8_pack4(Filter[4], Filter[9], Filter[14], Filter[19]), - C6 = (v4s)(int)(*((unsigned char *) &Filter[24])); - - v4s V0, V1, V2, V3, V4, V5, V6; - v4s Mask = {1,2,3,4}; - - signed char *PtO1 = Out; - - for (int w=0; w<(W-4); w++) { - v4s *PtI = (v4s *) (In + w); - signed char *PtO = PtO1; - int x0,x1,x2,x3; - V0 = *PtI++; x0 = *((signed char *) PtI); PtI = (v4s*) ((signed char *)PtI+W-4); - V1 = *PtI++; x1 = *((signed char *) PtI); PtI = (v4s*) ((signed char *)PtI+W-4); - V2 = *PtI++; x2 = *((signed char *) PtI); PtI = (v4s*) ((signed char *)PtI+W-4); - V3 = *PtI++; x3 = *((signed char *) PtI); PtI = (v4s*) ((signed char *)PtI+W-4); - V5 = gap8_pack4(x0,x1,x2,x3); - for (int h=0; h<(H-4); h++) { - int S = *PtO<>Norm; PtO+=(W-4); - } - PtO1++; - } -} - -void __attribute__ ((noinline)) ParAdditive5x5ConvolutionVect(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Filter = Arg->Filter; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H, Norm=Arg->Norm; - - v4s C0 = *((v4s *) &Filter[0]), - C1 = *((v4s *) &Filter[5]), - C2 = *((v4s *) &Filter[10]), - C3 = *((v4s *) &Filter[15]), - C4 = *((v4s *) &Filter[20]), - C5 = gap8_pack4(Filter[4], Filter[9], Filter[14], Filter[19]), - C6 = (v4s)(int)(*((unsigned char *) &Filter[24])); - - v4s V0, V1, V2, V3, V4, V5, V6; - v4s Mask = {1,2,3,4}; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(W-4); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, W-4); - signed char *PtO1 = Out+First; - - for (unsigned int w=First; w>Norm; PtO+=(W-4); - } - PtO1++; - } - gap8_waitbarrier(0); - -} - -void __attribute__ ((noinline)) LinearVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) - -{ - for (int i=0; i>3); j++) { - R = gap8_sumdotp4(I[2*j], F[2*j], R); - R = gap8_sumdotp4(I[2*j+1], F[2*j+1], R); - } - // if ((W&0x3)!=0) R = gap8_sumdotp4(I[W>>2]&LinearMask[W&0x3], F[W>>2], R); - for (int j=8*(W>>3); j>Norm; - } -} - -void __attribute__ ((noinline)) ParLinearVect(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Filter = Arg->Filter; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H, Norm=Arg->Norm; - - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(H); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, H); - - for (unsigned int i=First; i>3); j++) { - R = gap8_sumdotp4(I[2*j], F[2*j], R); - R = gap8_sumdotp4(I[2*j+1], F[2*j+1], R); - } - // if ((W&0x3)!=0) R = gap8_sumdotp4(I[W>>2]&LinearMask[W&0x3], F[W>>2], R); - for (int j=8*(W>>3); j>Norm; - } - gap8_waitbarrier(0); -} - -#else -void __attribute__ ((noinline)) MaxPoolingVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Out) - -{ - int Wo=W/2, Ho=H/2; - for (int c=0; cIn; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H; - int Wo=W/2, Ho=H/2; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(Wo); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, Wo); - - for (unsigned int c=First; c>2; - } -} - -void __attribute__ ((noinline)) ParAvgPoolingVect(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H; - int Wo=W/2, Ho=H/2; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(Wo); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, Wo); - - for (unsigned int c=First; c>2; - } - gap8_waitbarrier(0); -} - -void __attribute__ ((noinline)) Additive5x5ConvolutionVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) - -{ - v2s C0 = *((v2s *) &Filter[0]), C1 = *((v2s *) &Filter[2]), - C2 = *((v2s *) &Filter[5]), C3 = *((v2s *) &Filter[7]), - C4 = *((v2s *) &Filter[10]), C5 = *((v2s *) &Filter[12]), - C6 = *((v2s *) &Filter[15]), C7 = *((v2s *) &Filter[17]), - C8 = *((v2s *) &Filter[20]), C9 = *((v2s *) &Filter[22]), - C10 = gap8_pack2(Filter[4], Filter[9]), C11 = gap8_pack2(Filter[14], Filter[19]), - C12 = gap8_pack2(Filter[24], 0); - - v2s V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12; - v2s Mask = {1,2}; - - short int *PtO1 = Out; - - for (int w=0; w<(W-4); w++) { - v2s *PtI = (v2s *) (In + w); - short int *PtO = PtO1; - int X, Y; - V0 = *PtI++; V1 = *PtI++; X = *((short int *) PtI); PtI = (v2s*) ((short int *)PtI+W-4); - V2 = *PtI++; V3 = *PtI++; Y = *((short int *) PtI); PtI = (v2s*) ((short int *)PtI+W-4); V10 = gap8_pack2(X, Y); - V4 = *PtI++; V5 = *PtI++; X = *((short int *) PtI); PtI = (v2s*) ((short int *)PtI+W-4); - V6 = *PtI++; V7 = *PtI++; Y = *((short int *) PtI); PtI = (v2s*) ((short int *)PtI+W-4); V11 = gap8_pack2(X, Y); - for (int h=0; h>Norm; - V0 = V2; V1 = V3; V2 = V4; V3 = V5; V4 = V6; V5 = V7; V6 = V8; V7 = V9; - V10 = __builtin_shuffle(V10, V11, Mask); V11 = __builtin_shuffle(V11, V12, Mask); - *PtO = S; PtO+=(W-4); - } - PtO1++; - } -} - -void __attribute__ ((noinline)) ParAdditive5x5ConvolutionVect(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Filter = Arg->Filter; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H, Norm=Arg->Norm; - v2s C0 = *((v2s *) &Filter[0]), C1 = *((v2s *) &Filter[2]), - C2 = *((v2s *) &Filter[5]), C3 = *((v2s *) &Filter[7]), - C4 = *((v2s *) &Filter[10]), C5 = *((v2s *) &Filter[12]), - C6 = *((v2s *) &Filter[15]), C7 = *((v2s *) &Filter[17]), - C8 = *((v2s *) &Filter[20]), C9 = *((v2s *) &Filter[22]), - C10 = gap8_pack2(Filter[4], Filter[9]), C11 = gap8_pack2(Filter[14], Filter[19]), - C12 = gap8_pack2(Filter[24], 0); - - v2s V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12; - v2s Mask = {1,2}; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(W-4); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, W-4); - short int *PtO1 = Out+First; - - for (unsigned int w=First; w>Norm; - V0 = V2; V1 = V3; V2 = V4; V3 = V5; V4 = V6; V5 = V7; V6 = V8; V7 = V9; - V10 = __builtin_shuffle(V10, V11, Mask); V11 = __builtin_shuffle(V11, V12, Mask); - *PtO = S; PtO+=(W-4); - } - PtO1++; - } - gap8_waitbarrier(0); -} - -void __attribute__ ((noinline)) LinearVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) - -{ - for (int i=0; i>2); j++) { - R = gap8_sumdotp2(I[2*j], F[2*j], R); - R = gap8_sumdotp2(I[2*j+1], F[2*j+1], R); - } - for (int j=4*(W>>2); j>Norm; - } -} - -void __attribute__ ((noinline)) ParLinearVect(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Filter = Arg->Filter; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H, Norm=Arg->Norm; - - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(H); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, H); - - for (unsigned int i=First; i>2); j++) { - R = gap8_sumdotp2(I[2*j], F[2*j], R); - R = gap8_sumdotp2(I[2*j+1], F[2*j+1], R); - } - for (int j=4*(W>>2); j>Norm; - } - gap8_waitbarrier(0); -} -#endif - -void __attribute__ ((noinline)) ParMaxPooling(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H; - int Wo=W/2, Ho=H/2; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(Wo); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, Wo); - - for (unsigned int c=First; cIn; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H; - int Wo=W/2, Ho=H/2; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(Wo); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, Wo); - - for (unsigned int c=First; c>2; - gap8_waitbarrier(0); -} - -void __attribute__ ((noinline)) ParAdditive5x5Convolution(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Filter = Arg->Filter; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H, Norm=Arg->Norm; - int FH=5,FW=5; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(W-4); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, W-4); - for (unsigned int c=First; c>Norm; - } - } - gap8_waitbarrier(0); -} - -void __attribute__ ((noinline)) ParLinear(ArgConvT *Arg) - -{ - Ty *__restrict__ In = Arg->In; - Ty *__restrict__ Filter = Arg->Filter; - Ty *__restrict__ Out = Arg->Out; - int W=Arg->W, H=Arg->H, Norm=Arg->Norm; - - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(H); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, H); - - for (unsigned int i=First; i>2); j++) { - R += In[4*j]*Filter[W*i+4*j]; - R += In[4*j+1]*Filter[W*i+4*j+1]; - R += In[4*j+2]*Filter[W*i+4*j+2]; - R += In[4*j+3]*Filter[W*i+4*j+3]; - } - for (int j=4*(W>>2); j>Norm; - } - gap8_waitbarrier(0); -} - -void __attribute__ ((noinline)) ParXnorConv5x5(ArgConvBT *Arg) - -{ - unsigned int InBit = Arg->InBit; - signed char *__restrict__ Out = Arg->Out; - unsigned int FilterBit = Arg->FilterBit; - int W = Arg->W; - int H = Arg->H; - - int Wo = W-4; - int Ho = H-4; - unsigned int CoreId = gap8_coreid(); - unsigned int Chunk = ChunkSize(Wo); - unsigned int First = Chunk*CoreId; - unsigned int Last = Min(First+Chunk, Wo); - int Wo_F=First; int Wo_L=Last; - int Ho_F=0; int Ho_L=Ho; - unsigned int Stride=1, K=2; - unsigned int C = *((unsigned int *) (FilterBit/8))>>(FilterBit%8); - signed char *PtO1 = Out+Wo*Ho_F+Wo_F; - unsigned char *PtByte; - unsigned int PtBit; - unsigned int ExtMask=5<<5; - unsigned int CC = C; - CC = B_ins(CC, B_ext(C, 5, 5), 5, 6); - CC = B_ins(CC, B_ext(C, 5, 10), 5, 12); - CC = B_ins(CC, B_ext(C, 5, 15), 5, 18); - CC = B_ins(CC, B_ext(C, 5, 20), 5, 24); - - int Iter = Wo_L-Wo_F; - for ( int i=0, w=Wo_F; (i<(Iter/2)); i++, w+=2) { - unsigned int V, N; - PtBit = InBit+(Ho_F*Stride)*W + (w*Stride); - PtByte = (unsigned char *) (PtBit/8); - char *PtO = (char *) PtO1; - V = 0; - N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); - V = B_ins(V, N, 6, 0); PtBit += W; PtByte = (unsigned char *) (PtBit/8); - N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); - V = B_ins(V, N, 6, 6); PtBit += W; PtByte = (unsigned char *) (PtBit/8); - N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); - V = B_ins(V, N, 6, 12); PtBit += W; PtByte = (unsigned char *) (PtBit/8); - N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); - V = B_ins(V, N, 6, 18); PtBit += W; PtByte = (unsigned char *) (PtBit/8); - - for (int h=Ho_F; h>1)^CC))&0x1F7DF7DF); - unsigned int V1 = R0|(R1<<8); - v4s Val = (v4s) (unsigned int) (*(unsigned short int *) PtO); - Val = __builtin_pulp_add4(Val, (v4s) V1); - *(unsigned short int *)PtO = (unsigned short int)(unsigned int)Val; PtO+=Wo; - V = V>>((2*K+1)+1); - } - PtO1+=2; - } - PtO1 = Out+Wo*Ho_F+Wo_F+2*(Iter/2); - for (int w=Wo_F+2*(Iter/2); w>(2*K+1); - } - PtO1++; - } -} - -#endif - - -void __attribute__ ((noinline)) MaxPooling(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Out) - -{ - int Wo=W/2, Ho=H/2; - for (int c=0; c>2; -} - -void __attribute__ ((noinline)) Additive5x5Convolution(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) - -{ - int FH=5,FW=5; - for (int c=0; c<(W-4); c++) { - for (int l=0; l<(H-4); l++) { - int R = Out[l*W+c]<>Norm; - } - } -} - -void __attribute__ ((noinline)) Linear(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) - -{ - for (int i=0; i>2); j++) { - R += In[4*j]*Filter[W*i+4*j]; - R += In[4*j+1]*Filter[W*i+4*j+1]; - R += In[4*j+2]*Filter[W*i+4*j+2]; - R += In[4*j+3]*Filter[W*i+4*j+3]; - } - for (int j=4*(W>>2); j>Norm; - } -} - -void __attribute__ ((noinline)) XnorConv5x5( - unsigned int InBit, - signed char *__restrict__ Out, - unsigned int FilterBit, - int W, - int H - ) -/* - int Wo, - int Wo_F, - int Wo_L, - int Ho, - int Ho_F, - int Ho_L - ) -*/ - -{ - int Wo = W-4; int Ho = H-4; - int Wo_F=0; int Wo_L=Wo; - int Ho_F=0; int Ho_L=Ho; - - unsigned int Stride=1, K=2; - unsigned int C = *((unsigned int *) (FilterBit/8))>>(FilterBit%8); - signed char *PtO1 = Out+Wo*Ho_F+Wo_F; - unsigned char *PtByte; - unsigned int PtBit; - unsigned int ExtMask=5<<5; - unsigned int CC = C; - CC = B_ins(CC, B_ext(C, 5, 5), 5, 6); - CC = B_ins(CC, B_ext(C, 5, 10), 5, 12); - CC = B_ins(CC, B_ext(C, 5, 15), 5, 18); - CC = B_ins(CC, B_ext(C, 5, 20), 5, 24); - - int Iter = Wo_L-Wo_F; - for (int i=0, w=Wo_F; (i<(Iter/2)); i++, w+=2) { - unsigned int V, N; - PtBit = InBit+(Ho_F*Stride)*W + (w*Stride); - PtByte = (unsigned char *) (PtBit/8); - char *PtO = (char *) PtO1; - V = 0; - N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); - V = B_ins(V, N, 6, 0); PtBit += W; PtByte = (unsigned char *) (PtBit/8); - N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); - V = B_ins(V, N, 6, 6); PtBit += W; PtByte = (unsigned char *) (PtBit/8); - N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); - V = B_ins(V, N, 6, 12); PtBit += W; PtByte = (unsigned char *) (PtBit/8); - N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); - V = B_ins(V, N, 6, 18); PtBit += W; PtByte = (unsigned char *) (PtBit/8); - - for (int h=Ho_F; h>1)^CC))&0x1F7DF7DF); -#ifdef RISCV - unsigned int Val = (*(unsigned short int *) PtO); - R0 += Val&0xFF; R1 += (Val>>8); Val = R0|(R1<<8); -#else - unsigned int V1 = R0|(R1<<8); - v4s Val = (v4s) (unsigned int) (*(unsigned short int *) PtO); - Val = __builtin_pulp_add4(Val, (v4s) V1); -#endif - *(unsigned short int *)PtO = (unsigned short int)(unsigned int)Val; PtO+=Wo; - V = V>>((2*K+1)+1); - } - PtO1+=2; - } - PtO1 = Out+Wo*Ho_F+Wo_F+2*(Iter/2); - for (int w=Wo_F+2*(Iter/2); w>(2*K+1); - } - PtO1++; - } -} - -void RunTest(int Which, int Iter, int Trace, char *Mode,int * num_ops) - -{ - unsigned int Ti; - ArgConvT Arg; - ArgConvBT Arg1; - Ty *IN, *OUT, *FILTER; - - switch (Which) { - case 0: - IN = Mem; OUT = Mem+Wi*Hi; CheckMem(Wi*Hi+(Wi/2)*(Hi/2)); - gap8_resethwtimer(); - WriteGpio(GPIO, 1); - Ti = gap8_readhwtimer(); - for (int i=0; itest_num; - char* Mode = ArgC->Mode; - int Trace = ArgC->Trace; - int NumIter = ArgC->Iter; - - RunTest(test_num, NumIter, Trace, Mode, &(ArgC->Iter_operations)); - - return 0; -} - - -int main() -{ - long start_time, end_time; - long int tot_time, op_num,kernel_op_num; - float res,res_kernel; - int cur_test=0; - - #if !ALIM_1_VOLT - PMU_set_voltage(1150,0); - PMU_set_voltage(1200,0); - #else - PMU_set_voltage(1000,0); - #endif - - #ifndef NOGPIO - rt_padframe_profile_t *profile_gpio = rt_pad_profile_get("hyper_gpio"); - - if (profile_gpio == NULL) { - printf("pad config error\n"); - return 1; - } - rt_padframe_set(profile_gpio); - // GPIO initialization - rt_gpio_init(0, GPIO); - rt_gpio_set_dir(0, 1< +#include +#include +#include "pulp.h" +#include "rt/rt_api.h" + +#define NOGPIO +#define BYTE + + +#define ITERATIONS 100 +#define ENABLE_CYCLE_TRACE 0 + +#define ALIM_1_VOLT 0 +#define FREQ_FC (250*1000000) +#define FREQ_CL (175*1000000) + + +#define Wi 112 +#define Hi 112 +#define Wic 100 +#define Hic 100 +#define Wil 1024 +#define Hil 16 + +#define Wxor 100 +#define Hxor 100 + +char tests_names[][50]={ +{"2x2/2 Max Pool"}, +{"2x2/2 Avg Pool"}, +{"5x5 Convolutions"}, +{"Linear"}, +{"Xnor Conv 5x5"}, + +{"2x2/2 Max Pool Vect"}, +{"2x2/2 Avg Pool Vect"}, +{"5x5 Convolutions Vect"}, +{"LinearVect"}, + +{"2x2/2 Parallel Max Pool"}, +{"2x2/2 Parallel Avg Pool"}, +{"Parallel 5x5 Convolution"}, +{"Parallel Linear"}, +{"Parallel Xnor Conv 5x5"}, + +{"2x2/2 Parallel Max Pool Vect"}, +{"2x2/2 Parallel Avg Pool Vect"}, +{"Parallel Convolution Vect"}, +{"Parallel Linear Vect"} +}; + +int test_input_w[]={Wi,Wi,Wi,Wil,Wxor}; +int test_input_h[]={Hi,Hi,Hi,Hil,Hxor}; + + +int tests_ops[10]={ + ((Wi/2)*(Hi/2)), + ((Wi/2)*(Hi/2)), + (Wic-4)*(Hic-4), + (Wil*Hil), + (Wic-4)*(Hic-4) +}; + +int tests_input[][2]={ + {Wi , Hi }, + {Wi , Hi }, + {Wic, Hic}, + {Wil, Hil}, + {Wic, Hic} +}; + + +char tests_titles[][50]={ +{"Sequential"}, +{"Vector"}, +{"Parallel"}, +{"Parallel Vector"}, +}; + + + +#define ALIGN(Value, Size) (((Value)&((1<<(Size))-1))?((((Value)>>(Size))+1)<<(Size)):(Value)) + +#ifndef RISCV +#define Min(a, b) __builtin_pulp_minsi((a), (b)) +#define Max(a, b) __builtin_pulp_maxsi((a), (b)) +#else +#define Min(a, b) (((a)<(b))?(a):(b)) +#define Max(a, b) (((a)>(b))?(a):(b)) +#endif + +#ifdef __EMUL__ +#define plp_cluster_fetch(a) +#define plp_cluster_wait(a) +#endif + + + +#ifdef NOGPIO +#define WriteGpio(a, b) +#else +#define WriteGpio(a, b) rt_gpio_set_pin_value(0, a, b) +#endif + +#ifdef RISCV +#define TOT_TEST 1 +int test_num[TOT_TEST]={5}; + +#ifndef __EMUL__ +#endif + + +#define L2_MEM __attribute__((section(".heapl2ram"))) +#define L1_CL_MEM __attribute__((section(".heapsram"))) +#define L1_FC_MEM __attribute__((section(".fcTcdm"))) +/* HW timer */ +#define ARCHI_FC_TIMER_ADDR ( ARCHI_FC_PERIPHERALS_ADDR + ARCHI_FC_TIMER_OFFSET ) +#define PLP_TIMER_VALUE_LO 0x08 +#define PLP_TIMER_CFG_REG_LO 0x00 +#define PLP_TIMER_ENABLE_BIT 0 +#define PLP_TIMER_RESET_BIT 1 +#define PLP_TIMER_IRQ_ENABLE_BIT 2 +#define PLP_TIMER_IEM_BIT 3 +#define PLP_TIMER_CMP_CLR_BIT 4 +#define PLP_TIMER_ONE_SHOT_BIT 5 +#define PLP_TIMER_PRESCALER_ENABLE_BIT 6 +#define PLP_TIMER_CLOCK_SOURCE_BIT 7 +#define PLP_TIMER_PRESCALER_VALUE_BIT 8 +#define PLP_TIMER_PRESCALER_VALUE_BITS 8 +#define PLP_TIMER_64_BIT 31 + +#define plp_timer_conf_get(a,b,c,d,e,f,g,h,i) ((a << PLP_TIMER_ENABLE_BIT) \ + | (b << PLP_TIMER_RESET_BIT) \ + | (c << PLP_TIMER_IRQ_ENABLE_BIT) \ + | (d << PLP_TIMER_IEM_BIT) \ + | (e << PLP_TIMER_CMP_CLR_BIT) \ + | (f << PLP_TIMER_ONE_SHOT_BIT) \ + | (g << PLP_TIMER_PRESCALER_ENABLE_BIT) \ + | (h << PLP_TIMER_PRESCALER_VALUE_BIT) \ + | (i << PLP_TIMER_64_BIT) \ + ) +#define gap8_resethwtimer() pulp_write32(ARCHI_FC_TIMER_ADDR + PLP_TIMER_CFG_REG_LO, plp_timer_conf_get(1,1,0,0,0,0,0,0,0)) +#define gap8_readhwtimer() pulp_read32(ARCHI_FC_TIMER_ADDR + PLP_TIMER_VALUE_LO) + +#else +#define TOT_TEST 4 +int test_num[TOT_TEST]={5,4,5,4}; +#include "Gap8.h" + +static int CoreCountDynamic = 0; +static int ActiveCore = 8; + +static inline unsigned int __attribute__((always_inline)) ChunkSize(unsigned int X) + +{ + unsigned int NCore; + unsigned int Log2Core; + unsigned int Chunk; + + if (CoreCountDynamic) NCore = ActiveCore; else NCore = gap8_ncore(); + Log2Core = gap8_fl1(NCore); + Chunk = (X>>Log2Core) + ((X&(NCore-1))!=0); + return Chunk; +} +#endif + +#define STACK_SIZE 2048 +#define MOUNT 1 +#define UNMOUNT 0 +#define CID 0 + + +typedef struct ClusterArg{ + int test_num; + int Iter; + int Trace; + char Mode[10]; + int Iter_operations; +} ClusterArg_t; + +ClusterArg_t Arg; + + +char str[100]; +static char *float_to_string(float in){ + + int d1 = in; + float f2 = in - d1; + int d2 = trunc(f2 * 10000); + + sprintf (str, "%d.%04d", d1, d2); + return str; +} + +#ifndef RISCV +#define B_ins(dst, src, size, off) gap8_bitinsert(dst, src, size, off) +#define B_ins_r(dst, src, size, off) gap8_bitinsert_r(dst, src, size, off) +#define B_ext(x, size, off) gap8_bitextract(x, size, off) +#define B_extu(x, size, off) gap8_bitextractu(x, size, off) +#define B_ext_r(x, size, off) gap8_bitextract_r(x, size, off) +#define B_extu_r(x, size, off) gap8_bitextractu_r(x, size, off) +#define B_popc(src) __builtin_popcount((src)) +#else +static __attribute__ ((always_inline)) unsigned int bitcount32(unsigned int b) +{ + b -= (b >> 1) & 0x55555555; + b = (b & 0x33333333) + ((b >> 2) & 0x33333333); + b = (b + (b >> 4)) & 0x0f0f0f0f; + return (b * 0x01010101) >> 24; +} +#define B_ins(dst, src, size, off) (((dst) & ~(((1<<(size))-1)<<(off))) | (((src) & ((1<<(size))-1))<<(off))) +#define B_ins_r(dst, src, size, off) (((dst) & ~(((1<<(size))-1)<<(off))) | (((src) & ((1<<(size))-1))<<(off))) +#define B_ext(x, size, off) (((((x)>>(off))&((unsigned int)(1<<(size))-1))<<(32-(size)))>>(32-(size))) +#define B_extu(x, size, off) (((x)>>(off))&((unsigned int)(1<<(size))-1)) +#define B_ext_r(x, size, off) (((((x)>>(off))&((unsigned int)(1<<(size))-1))<<(32-(size)))>>(32-(size))) +#define B_extu_r(x, size, off) (((x)>>(off))&((unsigned int)(1<<(size))-1)) +#define B_popc(src) bitcount32((src)) +#endif + +#define VSOC 1000 +#define GPIO 17 + +#ifdef BYTE +typedef signed char Ty; +#else +typedef short int Ty; +#endif + +#ifdef BYTE +#define MAX_MEM 55000 +#else +#define MAX_MEM (55000/2) +#endif +Ty L1_CL_MEM Mem[MAX_MEM]; + +typedef struct { + Ty *__restrict__ In; + int W; + int H; + Ty *__restrict__ Filter; + Ty *__restrict__ Out; + int Norm; +} ArgConvT; + +typedef struct { + + unsigned int InBit; + signed char *__restrict__ Out; + unsigned int FilterBit; + int W; + int H; +} ArgConvBT; + +void CheckMem(int Size) + +{ + if (Size>MAX_MEM) { + printf("Memory Overflow (%d>%d). Aborting\n", Size, MAX_MEM); exit(0); + } +} + +#ifndef RISCV +v4s L1_CL_MEM LinearMask[4] = {(v4s) 0, (v4s) 0xFF, (v4s) 0xFFFF, (v4s) 0xFFFFFF}; +#ifdef BYTE +void __attribute__ ((noinline)) MaxPoolingVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Out) + +{ + int Wo=W/2, Ho=H/2; + for (int c=0; cIn; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H; + int Wo=W/2, Ho=H/2; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(Wo); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, Wo); + + for (unsigned int c=First; c>2; + } +} + +void __attribute__ ((noinline)) ParAvgPoolingVect(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H; + int Wo=W/2, Ho=H/2; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(Wo); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, Wo); + + for (unsigned int c=First; c>2; + } + gap8_waitbarrier(0); +} + +void __attribute__ ((noinline)) Additive5x5ConvolutionVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) + +{ + v4s C0 = *((v4s *) &Filter[0]), + C1 = *((v4s *) &Filter[5]), + C2 = *((v4s *) &Filter[10]), + C3 = *((v4s *) &Filter[15]), + C4 = *((v4s *) &Filter[20]), + C5 = gap8_pack4(Filter[4], Filter[9], Filter[14], Filter[19]), + C6 = (v4s)(int)(*((unsigned char *) &Filter[24])); + + v4s V0, V1, V2, V3, V4, V5, V6; + v4s Mask = {1,2,3,4}; + + signed char *PtO1 = Out; + + for (int w=0; w<(W-4); w++) { + v4s *PtI = (v4s *) (In + w); + signed char *PtO = PtO1; + int x0,x1,x2,x3; + V0 = *PtI++; x0 = *((signed char *) PtI); PtI = (v4s*) ((signed char *)PtI+W-4); + V1 = *PtI++; x1 = *((signed char *) PtI); PtI = (v4s*) ((signed char *)PtI+W-4); + V2 = *PtI++; x2 = *((signed char *) PtI); PtI = (v4s*) ((signed char *)PtI+W-4); + V3 = *PtI++; x3 = *((signed char *) PtI); PtI = (v4s*) ((signed char *)PtI+W-4); + V5 = gap8_pack4(x0,x1,x2,x3); + for (int h=0; h<(H-4); h++) { + int S = *PtO<>Norm; PtO+=(W-4); + } + PtO1++; + } +} + +void __attribute__ ((noinline)) ParAdditive5x5ConvolutionVect(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Filter = Arg->Filter; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H, Norm=Arg->Norm; + + v4s C0 = *((v4s *) &Filter[0]), + C1 = *((v4s *) &Filter[5]), + C2 = *((v4s *) &Filter[10]), + C3 = *((v4s *) &Filter[15]), + C4 = *((v4s *) &Filter[20]), + C5 = gap8_pack4(Filter[4], Filter[9], Filter[14], Filter[19]), + C6 = (v4s)(int)(*((unsigned char *) &Filter[24])); + + v4s V0, V1, V2, V3, V4, V5, V6; + v4s Mask = {1,2,3,4}; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(W-4); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, W-4); + signed char *PtO1 = Out+First; + + for (unsigned int w=First; w>Norm; PtO+=(W-4); + } + PtO1++; + } + gap8_waitbarrier(0); + +} + +void __attribute__ ((noinline)) LinearVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) + +{ + for (int i=0; i>3); j++) { + R = gap8_sumdotp4(I[2*j], F[2*j], R); + R = gap8_sumdotp4(I[2*j+1], F[2*j+1], R); + } + // if ((W&0x3)!=0) R = gap8_sumdotp4(I[W>>2]&LinearMask[W&0x3], F[W>>2], R); + for (int j=8*(W>>3); j>Norm; + } +} + +void __attribute__ ((noinline)) ParLinearVect(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Filter = Arg->Filter; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H, Norm=Arg->Norm; + + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(H); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, H); + + for (unsigned int i=First; i>3); j++) { + R = gap8_sumdotp4(I[2*j], F[2*j], R); + R = gap8_sumdotp4(I[2*j+1], F[2*j+1], R); + } + // if ((W&0x3)!=0) R = gap8_sumdotp4(I[W>>2]&LinearMask[W&0x3], F[W>>2], R); + for (int j=8*(W>>3); j>Norm; + } + gap8_waitbarrier(0); +} + +#else +void __attribute__ ((noinline)) MaxPoolingVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Out) + +{ + int Wo=W/2, Ho=H/2; + for (int c=0; cIn; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H; + int Wo=W/2, Ho=H/2; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(Wo); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, Wo); + + for (unsigned int c=First; c>2; + } +} + +void __attribute__ ((noinline)) ParAvgPoolingVect(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H; + int Wo=W/2, Ho=H/2; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(Wo); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, Wo); + + for (unsigned int c=First; c>2; + } + gap8_waitbarrier(0); +} + +void __attribute__ ((noinline)) Additive5x5ConvolutionVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) + +{ + v2s C0 = *((v2s *) &Filter[0]), C1 = *((v2s *) &Filter[2]), + C2 = *((v2s *) &Filter[5]), C3 = *((v2s *) &Filter[7]), + C4 = *((v2s *) &Filter[10]), C5 = *((v2s *) &Filter[12]), + C6 = *((v2s *) &Filter[15]), C7 = *((v2s *) &Filter[17]), + C8 = *((v2s *) &Filter[20]), C9 = *((v2s *) &Filter[22]), + C10 = gap8_pack2(Filter[4], Filter[9]), C11 = gap8_pack2(Filter[14], Filter[19]), + C12 = gap8_pack2(Filter[24], 0); + + v2s V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12; + v2s Mask = {1,2}; + + short int *PtO1 = Out; + + for (int w=0; w<(W-4); w++) { + v2s *PtI = (v2s *) (In + w); + short int *PtO = PtO1; + int X, Y; + V0 = *PtI++; V1 = *PtI++; X = *((short int *) PtI); PtI = (v2s*) ((short int *)PtI+W-4); + V2 = *PtI++; V3 = *PtI++; Y = *((short int *) PtI); PtI = (v2s*) ((short int *)PtI+W-4); V10 = gap8_pack2(X, Y); + V4 = *PtI++; V5 = *PtI++; X = *((short int *) PtI); PtI = (v2s*) ((short int *)PtI+W-4); + V6 = *PtI++; V7 = *PtI++; Y = *((short int *) PtI); PtI = (v2s*) ((short int *)PtI+W-4); V11 = gap8_pack2(X, Y); + for (int h=0; h>Norm; + V0 = V2; V1 = V3; V2 = V4; V3 = V5; V4 = V6; V5 = V7; V6 = V8; V7 = V9; + V10 = __builtin_shuffle(V10, V11, Mask); V11 = __builtin_shuffle(V11, V12, Mask); + *PtO = S; PtO+=(W-4); + } + PtO1++; + } +} + +void __attribute__ ((noinline)) ParAdditive5x5ConvolutionVect(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Filter = Arg->Filter; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H, Norm=Arg->Norm; + v2s C0 = *((v2s *) &Filter[0]), C1 = *((v2s *) &Filter[2]), + C2 = *((v2s *) &Filter[5]), C3 = *((v2s *) &Filter[7]), + C4 = *((v2s *) &Filter[10]), C5 = *((v2s *) &Filter[12]), + C6 = *((v2s *) &Filter[15]), C7 = *((v2s *) &Filter[17]), + C8 = *((v2s *) &Filter[20]), C9 = *((v2s *) &Filter[22]), + C10 = gap8_pack2(Filter[4], Filter[9]), C11 = gap8_pack2(Filter[14], Filter[19]), + C12 = gap8_pack2(Filter[24], 0); + + v2s V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12; + v2s Mask = {1,2}; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(W-4); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, W-4); + short int *PtO1 = Out+First; + + for (unsigned int w=First; w>Norm; + V0 = V2; V1 = V3; V2 = V4; V3 = V5; V4 = V6; V5 = V7; V6 = V8; V7 = V9; + V10 = __builtin_shuffle(V10, V11, Mask); V11 = __builtin_shuffle(V11, V12, Mask); + *PtO = S; PtO+=(W-4); + } + PtO1++; + } + gap8_waitbarrier(0); +} + +void __attribute__ ((noinline)) LinearVect(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) + +{ + for (int i=0; i>2); j++) { + R = gap8_sumdotp2(I[2*j], F[2*j], R); + R = gap8_sumdotp2(I[2*j+1], F[2*j+1], R); + } + for (int j=4*(W>>2); j>Norm; + } +} + +void __attribute__ ((noinline)) ParLinearVect(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Filter = Arg->Filter; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H, Norm=Arg->Norm; + + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(H); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, H); + + for (unsigned int i=First; i>2); j++) { + R = gap8_sumdotp2(I[2*j], F[2*j], R); + R = gap8_sumdotp2(I[2*j+1], F[2*j+1], R); + } + for (int j=4*(W>>2); j>Norm; + } + gap8_waitbarrier(0); +} +#endif + +void __attribute__ ((noinline)) ParMaxPooling(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H; + int Wo=W/2, Ho=H/2; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(Wo); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, Wo); + + for (unsigned int c=First; cIn; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H; + int Wo=W/2, Ho=H/2; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(Wo); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, Wo); + + for (unsigned int c=First; c>2; + gap8_waitbarrier(0); +} + +void __attribute__ ((noinline)) ParAdditive5x5Convolution(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Filter = Arg->Filter; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H, Norm=Arg->Norm; + int FH=5,FW=5; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(W-4); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, W-4); + for (unsigned int c=First; c>Norm; + } + } + gap8_waitbarrier(0); +} + +void __attribute__ ((noinline)) ParLinear(ArgConvT *Arg) + +{ + Ty *__restrict__ In = Arg->In; + Ty *__restrict__ Filter = Arg->Filter; + Ty *__restrict__ Out = Arg->Out; + int W=Arg->W, H=Arg->H, Norm=Arg->Norm; + + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(H); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, H); + + for (unsigned int i=First; i>2); j++) { + R += In[4*j]*Filter[W*i+4*j]; + R += In[4*j+1]*Filter[W*i+4*j+1]; + R += In[4*j+2]*Filter[W*i+4*j+2]; + R += In[4*j+3]*Filter[W*i+4*j+3]; + } + for (int j=4*(W>>2); j>Norm; + } + gap8_waitbarrier(0); +} + +void __attribute__ ((noinline)) ParXnorConv5x5(ArgConvBT *Arg) + +{ + unsigned int InBit = Arg->InBit; + signed char *__restrict__ Out = Arg->Out; + unsigned int FilterBit = Arg->FilterBit; + int W = Arg->W; + int H = Arg->H; + + int Wo = W-4; + int Ho = H-4; + unsigned int CoreId = gap8_coreid(); + unsigned int Chunk = ChunkSize(Wo); + unsigned int First = Chunk*CoreId; + unsigned int Last = Min(First+Chunk, Wo); + int Wo_F=First; int Wo_L=Last; + int Ho_F=0; int Ho_L=Ho; + unsigned int Stride=1, K=2; + unsigned int C = *((unsigned int *) (FilterBit/8))>>(FilterBit%8); + signed char *PtO1 = Out+Wo*Ho_F+Wo_F; + unsigned char *PtByte; + unsigned int PtBit; + unsigned int ExtMask=5<<5; + unsigned int CC = C; + CC = B_ins(CC, B_ext(C, 5, 5), 5, 6); + CC = B_ins(CC, B_ext(C, 5, 10), 5, 12); + CC = B_ins(CC, B_ext(C, 5, 15), 5, 18); + CC = B_ins(CC, B_ext(C, 5, 20), 5, 24); + + int Iter = Wo_L-Wo_F; + for ( int i=0, w=Wo_F; (i<(Iter/2)); i++, w+=2) { + unsigned int V, N; + PtBit = InBit+(Ho_F*Stride)*W + (w*Stride); + PtByte = (unsigned char *) (PtBit/8); + char *PtO = (char *) PtO1; + V = 0; + N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); + V = B_ins(V, N, 6, 0); PtBit += W; PtByte = (unsigned char *) (PtBit/8); + N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); + V = B_ins(V, N, 6, 6); PtBit += W; PtByte = (unsigned char *) (PtBit/8); + N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); + V = B_ins(V, N, 6, 12); PtBit += W; PtByte = (unsigned char *) (PtBit/8); + N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); + V = B_ins(V, N, 6, 18); PtBit += W; PtByte = (unsigned char *) (PtBit/8); + + for (int h=Ho_F; h>1)^CC))&0x1F7DF7DF); + unsigned int V1 = R0|(R1<<8); + v4s Val = (v4s) (unsigned int) (*(unsigned short int *) PtO); + Val = __builtin_pulp_add4(Val, (v4s) V1); + *(unsigned short int *)PtO = (unsigned short int)(unsigned int)Val; PtO+=Wo; + V = V>>((2*K+1)+1); + } + PtO1+=2; + } + PtO1 = Out+Wo*Ho_F+Wo_F+2*(Iter/2); + for (int w=Wo_F+2*(Iter/2); w>(2*K+1); + } + PtO1++; + } +} + +#endif + + +void __attribute__ ((noinline)) MaxPooling(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Out) + +{ + int Wo=W/2, Ho=H/2; + for (int c=0; c>2; +} + +void __attribute__ ((noinline)) Additive5x5Convolution(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) + +{ + int FH=5,FW=5; + for (int c=0; c<(W-4); c++) { + for (int l=0; l<(H-4); l++) { + int R = Out[l*W+c]<>Norm; + } + } +} + +void __attribute__ ((noinline)) Linear(Ty *__restrict__ In, int W, int H, Ty *__restrict__ Filter, Ty *__restrict__ Out, int Norm) + +{ + for (int i=0; i>2); j++) { + R += In[4*j]*Filter[W*i+4*j]; + R += In[4*j+1]*Filter[W*i+4*j+1]; + R += In[4*j+2]*Filter[W*i+4*j+2]; + R += In[4*j+3]*Filter[W*i+4*j+3]; + } + for (int j=4*(W>>2); j>Norm; + } +} + +void __attribute__ ((noinline)) XnorConv5x5( + unsigned int InBit, + signed char *__restrict__ Out, + unsigned int FilterBit, + int W, + int H + ) +/* + int Wo, + int Wo_F, + int Wo_L, + int Ho, + int Ho_F, + int Ho_L + ) +*/ + +{ + int Wo = W-4; int Ho = H-4; + int Wo_F=0; int Wo_L=Wo; + int Ho_F=0; int Ho_L=Ho; + + unsigned int Stride=1, K=2; + unsigned int C = *((unsigned int *) (FilterBit/8))>>(FilterBit%8); + signed char *PtO1 = Out+Wo*Ho_F+Wo_F; + unsigned char *PtByte; + unsigned int PtBit; + unsigned int ExtMask=5<<5; + unsigned int CC = C; + CC = B_ins(CC, B_ext(C, 5, 5), 5, 6); + CC = B_ins(CC, B_ext(C, 5, 10), 5, 12); + CC = B_ins(CC, B_ext(C, 5, 15), 5, 18); + CC = B_ins(CC, B_ext(C, 5, 20), 5, 24); + + int Iter = Wo_L-Wo_F; + for (int i=0, w=Wo_F; (i<(Iter/2)); i++, w+=2) { + unsigned int V, N; + PtBit = InBit+(Ho_F*Stride)*W + (w*Stride); + PtByte = (unsigned char *) (PtBit/8); + char *PtO = (char *) PtO1; + V = 0; + N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); + V = B_ins(V, N, 6, 0); PtBit += W; PtByte = (unsigned char *) (PtBit/8); + N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); + V = B_ins(V, N, 6, 6); PtBit += W; PtByte = (unsigned char *) (PtBit/8); + N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); + V = B_ins(V, N, 6, 12); PtBit += W; PtByte = (unsigned char *) (PtBit/8); + N = B_extu_r(*(unsigned short int *)PtByte, 6, (PtBit%8)); + V = B_ins(V, N, 6, 18); PtBit += W; PtByte = (unsigned char *) (PtBit/8); + + for (int h=Ho_F; h>1)^CC))&0x1F7DF7DF); +#ifdef RISCV + unsigned int Val = (*(unsigned short int *) PtO); + R0 += Val&0xFF; R1 += (Val>>8); Val = R0|(R1<<8); +#else + unsigned int V1 = R0|(R1<<8); + v4s Val = (v4s) (unsigned int) (*(unsigned short int *) PtO); + Val = __builtin_pulp_add4(Val, (v4s) V1); +#endif + *(unsigned short int *)PtO = (unsigned short int)(unsigned int)Val; PtO+=Wo; + V = V>>((2*K+1)+1); + } + PtO1+=2; + } + PtO1 = Out+Wo*Ho_F+Wo_F+2*(Iter/2); + for (int w=Wo_F+2*(Iter/2); w>(2*K+1); + } + PtO1++; + } +} + +void RunTest(int Which, int Iter, int Trace, char *Mode,int * num_ops) + +{ + unsigned int Ti; + ArgConvT Arg; + ArgConvBT Arg1; + Ty *IN, *OUT, *FILTER; + + switch (Which) { + case 0: + IN = Mem; OUT = Mem+Wi*Hi; CheckMem(Wi*Hi+(Wi/2)*(Hi/2)); + gap8_resethwtimer(); + WriteGpio(GPIO, 1); + Ti = gap8_readhwtimer(); + for (int i=0; itest_num; + char* Mode = ArgC->Mode; + int Trace = ArgC->Trace; + int NumIter = ArgC->Iter; + + RunTest(test_num, NumIter, Trace, Mode, &(ArgC->Iter_operations)); + + return 0; +} + + +int main() +{ + long start_time, end_time; + long int tot_time, op_num,kernel_op_num; + float res,res_kernel; + int cur_test=0; + + #if !ALIM_1_VOLT + PMU_set_voltage(1150,0); + PMU_set_voltage(1200,0); + #else + PMU_set_voltage(1000,0); + #endif + + #ifndef NOGPIO + rt_padframe_profile_t *profile_gpio = rt_pad_profile_get("hyper_gpio"); + + if (profile_gpio == NULL) { + printf("pad config error\n"); + return 1; + } + rt_padframe_set(profile_gpio); + // GPIO initialization + rt_gpio_init(0, GPIO); + rt_gpio_set_dir(0, 1< + #include + #define pmsis_exit(a) exit(a) +#endif +#include "RFFTKernels.h" +#include "WinLUT.def" +#include "gaplib/wavIO.h" + +#define BUF_SIZE 16500 +#define STACK_SIZE 2048 +#define NORM 6 +#define N_FRAME 49 + +#if (DATA_TYPE==2) +typedef F16_DSP IN_TYPE; +typedef F16_DSP OUT_TYPE; +#elif (DATA_TYPE==3) +typedef float IN_TYPE; +typedef float OUT_TYPE; +#else +short int PreempShift[N_FRAME]; +typedef short int OUT_TYPE; +typedef short int IN_TYPE; +#endif + +OUT_TYPE *Out; +IN_TYPE *FFTInSig; +short int *inWav; +int num_samples; +char *FileName; + +static void RunFFT() +{ + int OutFrameBytes = (N_FFT / 2 + 1); + gap_cl_starttimer(); + gap_cl_resethwtimer(); + int start, elapsed, timef32; + short int PreempShift[N_FRAME]; + int Q_Out_FFT; + int Log2Nfft = gap_fl1(N_FFT >> 1); + Q_Out_FFT = 15 - (Log2Nfft - 1); + + start = gap_cl_readhwtimer(); + #if (DATA_TYPE==0) + RFFT(FFTInSig, Out, TwiddlesLUT, RFFTTwiddlesLUT, SwapTable, WindowLUT, PreempShift); + #else + RFFT(FFTInSig, Out, TwiddlesLUT, RFFTTwiddlesLUT, SwapTable, WindowLUT); + #endif + elapsed = gap_cl_readhwtimer() - start; + printf("RFFT: %10d Cycles %10d Cycles/Frame\n", elapsed, elapsed/N_FRAME); + start = gap_cl_readhwtimer(); + IRFFT(Out, FFTInSig, TwiddlesLUT, RFFTTwiddlesLUT, SwapTable, (short int *)InvWindowLUT); + elapsed = gap_cl_readhwtimer() - start; + printf("IRFFT: %10d Cycles %10d Cycles/Frame\n", elapsed, elapsed/N_FRAME); + +} + +void test_kickoff(void *arg) +{ + #ifndef __EMUL__ + struct pi_device cluster_dev; + struct pi_cluster_conf cl_conf; + cl_conf.id = 0; + + pi_open_from_conf(&cluster_dev, (void *) &cl_conf); + if (pi_cluster_open(&cluster_dev)) + { + printf("Cluster open failed !\n"); + pmsis_exit(-4); + } + #endif + + L1_Memory = (AT_L1_POINTER) AT_L1_ALLOC(0, _L1_Memory_SIZE); + if (L1_Memory==NULL){ + printf("Error allocating L1\n"); + pmsis_exit(-1); + } + + FFTInSig = (IN_TYPE *) AT_L2_ALLOC(0, N_FRAME*2*N_FFT * sizeof(IN_TYPE)); + Out = (OUT_TYPE *) AT_L2_ALLOC(0, N_FRAME * 2 * (N_FFT/2+1) * sizeof(OUT_TYPE)); + if (FFTInSig==NULL || Out==NULL){ + printf("Error allocating\n"); + pmsis_exit(-1); + } + + header_struct header_info; + if (ReadWavFromFile(FileName, (short int *)FFTInSig, BUF_SIZE*sizeof(short), &header_info)){ + printf("Error reading wav file\n"); + pmsis_exit(-1); + } + num_samples = header_info.DataSize * 8 / (header_info.NumChannels * header_info.BitsPerSample); + + #if (DATA_TYPE==2) || (DATA_TYPE==3) + printf("FLOAT\n"); + for (int i=num_samples-1; i>=0; i--) FFTInSig[i] = ((IN_TYPE) (((short int *) FFTInSig)[i]) / (1<<15)); + for (int i=0; i 0:\n", + " if sum_orig < sum_err:\n", + " if sum_orig == 0:\n", + " return -math.inf\n", + " else:\n", + " # Means error is larger than signal\n", + " return -int(round(10 * math.log10(sum_err/sum_orig), 0))\n", + " # Error portion of signal\n", + " return int(round(10 * math.log10(sum_orig/sum_err), 0))\n", + " # Means no error\n", + " return math.inf\n", + "\n", + "def mse(orig, quant, Size):\n", + " mse = 0\n", + " for i in range(Size):\n", + " mse += (orig.real[i] - quant.real[i]) ** 2\n", + " mse += (orig.imag[i] - quant.imag[i]) ** 2\n", + " return mse\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [], + "source": [ + "data, samplerate = sf.read(\"samples/yes.wav\")\n", + "n_fft = 512\n", + "int_n_fft = n_fft // 2\n", + "frame_size = 512\n", + "frame_step = 160\n", + "Q_in = 15\n", + "Q_fft = 15 - (int(np.log2(int_n_fft)) - 1)\n", + "Q_ifft = Q_fft - (int(np.log2(int_n_fft)) - 1) + int(np.log2(n_fft))\n", + "\n", + "frame_idx= 0\n", + "frame = data[frame_idx*frame_step:frame_idx*frame_step+frame_size]\n", + "win_frame = frame * np.hamming(frame_size)\n", + "out_rfft_np = np.fft.rfft(win_frame)" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [], + "source": [ + "Shift = 4\n", + "out_preemph_c = np.array([\n", + "\t\t-1456, -2816, -1776, -1520, -1920, -2416, -2128, -2128, -2096, -1952, -2544, -2368, -2032, -1120, -1616, -2416, -2464, -2640, -1984, -1552, -1488, -1472, -1664, -2480, -2352, -1680, -1616, -1616, -1728, -1760, -1872, -2224, -2016, -2256, -2528, -2000, -2144, -1904, -1504, -1952, -2080, -2336, -2608, -1568, -1824, -2384, -1760, -1648, -1872, -2480, -2848, -2640, -2176, -1984, -2336, -2464, -2592, -2240, -2240, -2576, -2128, -2000, -2064, -1808, -1920, -2736, -2720, -2080, -2064, -1824, -1936, -1984, -1712, -1968, -2032, -1856, -1808, -1760, -1712, -2320, -2000, -1712, -2016, -2064, -2144, -1872, -1936, -1504, -1824, -2672, -2208, -2000, -2176, -1984, -2416, -1936, -1712, -2400, -1648, -1536, -2224, -2672, -2560, -2288, -2640, -1936, -1744, -2448, -2656, -2544, -2032, -2272, -2416, -2160, -1840, -2400, -2912, -1872, -1072, -1456, -3136, -2896, -2064, -2528, -1696, -2272, -3392, -1888, -1024, -2096, -2320, -1888, -1872, -2576, -3520, -2944, -2384, -816, -704, -2272, -1760, -1344, -1648, -832, -1296, -2320, -960, -1840, -2432, -864, -2912, -3904, 800, 880, -3328, -3216, -800, 1376, -2368, -6512, -2144, 1088, -1712, -2272, -544, -2560, -2320, -2064, -4080, -304, 1536, -2480, -5648, -6160, -2576, 1072, 592, -1408, -2128, -2096, -2608, -2000, -1520, -2176, 112, -112, -3152, -2368, -3168, -2960, -464, -400, -880, -1744, -2368, -1888, -2144, -4720, -5584, -1680, 1376, -560, -2096, -352, 160, -1024, -2416, -2624, -1840, -1472, -1744, -2464, -1984, -1712, -2288, -1440, -512, -880, -1504, -2000, -1696, -2080, -2768, -2816, -2928, -1712, -288, -512, -1648, -1056, -288, -576, -1104, -2144, -2208, -1856, -2064, -2320, -1040, 336, -880, -2544, -3440, -2704, -208, -256, -2848, -3712, -1936, -384, -1296, -2032, -1216, -512, -1152, -1984, -1248, -848, -1104, -1776, -1216, -672, -1744, -1104, -512, -1248, -2128, -1728, -784, -1424, -1392, -880, -1360, -1552, -1632, -2080, -1632, -560, -656, -1296, -1584, -1936, -1760, -1680, -1520, -848, -1056, -1680, -1440, -1104, -1760, -2128, -1840, -1344, -752, -1600, -2112, -992, -1472, -2224, -1536, -1184, -1104, -1424, -2064, -1920, -976, -1536, -2336, -1792, -624, -784, -2048, -1552, -1104, -1088, -1360, -2112, -1856, -992, -1552, -2016, -1424, -1760, -1584, -1536, -1376, -1072, -1408, -1744, -1712, -1632, -1760, -1488, -1344, -1472, -2080, -2048, -1792, -1536, -1904, -2160, -2000, -2336, -1568, -1776, -2800, -1888, -816, -1568, -2416, -1808, -1712, -1552, -1408, -2208, -2432, -1872, -1440, -1728, -2272, -2080, -1424, -1504, -2080, -2080, -2096, -1504, -720, -1440, -1664, -1856, -2336, -1520, -1552, -1936, -1904, -1952, -1184, -1760, -2448, -1952, -1584, -1728, -2384, -2064, -992, -1328, -2640, -2096, -992, -688, -688, -1408, -1888, -1568, -1456, -1792, -1904, -1824, -1648, -1696, -1616, -1376, -1824, -1792, -1712, -1744, -1584, -1264, -1664, -1968, -1088, -1728, -1552, -1120, -1648, -1536, -2016, -2160, -1600, -688, -1056, -2272, -1536, -1552, -1504, -832, -1392, -1888, -1984, -1216, -672, -1424, -2000, -1552, -1824, -1952, -1232, -1376, -1648, -1552, -1328, -1360, -2064, -1984, -1696, -2144, -2000, -1664, -1136, -1776, -2048, -1520, -1344, -1072, -1968, -1840, -1248, -912, -912, -1568, -1520, -1376, -1888, -2144, -1296, -1056, -1600, -1904, -1968, -1232, -464, -1056, -2000, -2160, -1440, -1008, -1904, -1264, -512, -1072, -1504, -1920, -1520, -1056, -992, -1168, -1456, -1248, -1392, -1904, -1536, -1248, -1856, -1712, -1168, -1664, -1984, -1664, -1008, -880, -1152, -1264, -1216, -1184, -1616, -1408, -1200, -1344, -1088, -960, ])\n", + "\n", + "input_frame = np.array([\n", + "\t\t-91, -176, -111, -95, -120, -151, -133, -133, -131, -122, -159, -148, -127, -70, -101, -151, -154, -165, -124, -97, -93, -92, -104, -155, -147, -105, -101, -101, -108, -110, -117, -139, -126, -141, -158, -125, -134, -119, -94, -122, -130, -146, -163, -98, -114, -149, -110, -103, -117, -155, -178, -165, -136, -124, -146, -154, -162, -140, -140, -161, -133, -125, -129, -113, -120, -171, -170, -130, -129, -114, -121, -124, -107, -123, -127, -116, -113, -110, -107, -145, -125, -107, -126, -129, -134, -117, -121, -94, -114, -167, -138, -125, -136, -124, -151, -121, -107, -150, -103, -96, -139, -167, -160, -143, -165, -121, -109, -153, -166, -159, -127, -142, -151, -135, -115, -150, -182, -117, -67, -91, -196, -181, -129, -158, -106, -142, -212, -118, -64, -131, -145, -118, -117, -161, -220, -184, -149, -51, -44, -142, -110, -84, -103, -52, -81, -145, -60, -115, -152, -54, -182, -244, 50, 55, -208, -201, -50, 86, -148, -407, -134, 68, -107, -142, -34, -160, -145, -129, -255, -19, 96, -155, -353, -385, -161, 67, 37, -88, -133, -131, -163, -125, -95, -136, 7, -7, -197, -148, -198, -185, -29, -25, -55, -109, -148, -118, -134, -295, -349, -105, 86, -35, -131, -22, 10, -64, -151, -164, -115, -92, -109, -154, -124, -107, -143, -90, -32, -55, -94, -125, -106, -130, -173, -176, -183, -107, -18, -32, -103, -66, -18, -36, -69, -134, -138, -116, -129, -145, -65, 21, -55, -159, -215, -169, -13, -16, -178, -232, -121, -24, -81, -127, -76, -32, -72, -124, -78, -53, -69, -111, -76, -42, -109, -69, -32, -78, -133, -108, -49, -89, -87, -55, -85, -97, -102, -130, -102, -35, -41, -81, -99, -121, -110, -105, -95, -53, -66, -105, -90, -69, -110, -133, -115, -84, -47, -100, -132, -62, -92, -139, -96, -74, -69, -89, -129, -120, -61, -96, -146, -112, -39, -49, -128, -97, -69, -68, -85, -132, -116, -62, -97, -126, -89, -110, -99, -96, -86, -67, -88, -109, -107, -102, -110, -93, -84, -92, -130, -128, -112, -96, -119, -135, -125, -146, -98, -111, -175, -118, -51, -98, -151, -113, -107, -97, -88, -138, -152, -117, -90, -108, -142, -130, -89, -94, -130, -130, -131, -94, -45, -90, -104, -116, -146, -95, -97, -121, -119, -122, -74, -110, -153, -122, -99, -108, -149, -129, -62, -83, -165, -131, -62, -43, -43, -88, -118, -98, -91, -112, -119, -114, -103, -106, -101, -86, -114, -112, -107, -109, -99, -79, -104, -123, -68, -108, -97, -70, -103, -96, -126, -135, -100, -43, -66, -142, -96, -97, -94, -52, -87, -118, -124, -76, -42, -89, -125, -97, -114, -122, -77, -86, -103, -97, -83, -85, -129, -124, -106, -134, -125, -104, -71, -111, -128, -95, -84, -67, -123, -115, -78, -57, -57, -98, -95, -86, -118, -134, -81, -66, -100, -119, -123, -77, -29, -66, -125, -135, -90, -63, -119, -79, -32, -67, -94, -120, -95, -66, -62, -73, -91, -78, -87, -119, -96, -78, -116, -107, -73, -104, -124, -104, -63, -55, -72, -79, -76, -74, -101, -88, -75, -84, -68, -60, ])\n", + "out_window_c = np.array([\n", + "\t\t-116, -225, -142, -122, -155, -195, -173, -174, -172, -162, -212, -199, -173, -96, -140, -212, -219, -238, -181, -144, -140, -140, -161, -244, -235, -171, -167, -170, -185, -192, -208, -251, -232, -265, -302, -244, -267, -241, -194, -257, -280, -321, -365, -224, -266, -354, -267, -255, -295, -399, -468, -442, -372, -346, -415, -447, -479, -422, -430, -504, -425, -407, -428, -382, -413, -600, -607, -473, -478, -430, -465, -485, -426, -498, -524, -486, -482, -477, -472, -651, -570, -496, -594, -618, -652, -579, -608, -480, -591, -879, -738, -678, -749, -693, -857, -696, -625, -888, -619, -585, -859, -1046, -1016, -920, -1076, -800, -730, -1038, -1140, -1106, -895, -1013, -1091, -987, -851, -1124, -1380, -897, -520, -714, -1556, -1453, -1047, -1297, -880, -1192, -1798, -1011, -554, -1147, -1282, -1054, -1056, -1467, -2025, -1710, -1398, -483, -421, -1371, -1072, -826, -1022, -521, -818, -1477, -617, -1192, -1589, -569, -1934, -2615, 540, 599, -2283, -2223, -557, 966, -1675, -4639, -1539, 786, -1246, -1666, -402, -1903, -1736, -1555, -3094, -232, 1180, -1918, -4395, -4823, -2029, 850, 472, -1129, -1716, -1700, -2127, -1640, -1253, -1804, 93, -94, -2654, -2004, -2694, -2530, -398, -345, -763, -1518, -2071, -1659, -1892, -4182, -4968, -1501, 1234, -504, -1895, -319, 146, -936, -2216, -2416, -1700, -1364, -1622, -2298, -1856, -1607, -2154, -1360, -485, -835, -1432, -1909, -1623, -1995, -2661, -2714, -2828, -1657, -279, -498, -1605, -1030, -282, -564, -1083, -2106, -2173, -1829, -2037, -2292, -1029, 333, -873, -2525, -3418, -2689, -207, -255, -2839, -3703, -1932, -383, -1295, -2031, -1215, -512, -1152, -1984, -1248, -848, -1104, -1775, -1215, -671, -1741, -1102, -511, -1244, -2120, -1720, -780, -1415, -1382, -873, -1347, -1536, -1613, -2053, -1608, -551, -645, -1271, -1551, -1893, -1717, -1636, -1477, -823, -1022, -1623, -1388, -1062, -1688, -2036, -1756, -1279, -714, -1515, -1994, -934, -1382, -2081, -1433, -1101, -1023, -1315, -1900, -1761, -892, -1399, -2120, -1620, -562, -703, -1830, -1381, -978, -960, -1195, -1847, -1616, -860, -1339, -1731, -1217, -1497, -1340, -1293, -1153, -893, -1167, -1438, -1404, -1331, -1427, -1200, -1078, -1173, -1648, -1613, -1403, -1195, -1472, -1660, -1527, -1772, -1181, -1329, -2081, -1394, -598, -1142, -1746, -1298, -1220, -1098, -988, -1538, -1681, -1284, -980, -1167, -1522, -1382, -938, -983, -1348, -1336, -1335, -949, -451, -893, -1023, -1130, -1410, -909, -919, -1136, -1106, -1123, -674, -993, -1367, -1079, -867, -936, -1277, -1094, -520, -689, -1355, -1064, -498, -341, -338, -683, -905, -743, -682, -829, -870, -823, -735, -747, -703, -591, -773, -750, -707, -711, -637, -502, -651, -760, -414, -649, -575, -409, -593, -545, -704, -744, -543, -230, -347, -736, -490, -487, -465, -253, -417, -556, -575, -347, -188, -393, -542, -414, -478, -503, -312, -342, -403, -373, -313, -315, -469, -443, -372, -461, -422, -345, -231, -354, -401, -292, -253, -198, -357, -327, -217, -156, -153, -257, -245, -217, -292, -325, -193, -154, -228, -267, -270, -166, -61, -137, -254, -269, -176, -121, -223, -146, -58, -119, -164, -205, -160, -109, -101, -117, -143, -121, -133, -179, -142, -114, -167, -152, -103, -144, -170, -141, -85, -73, -95, -104, -99, -96, -131, -113, -96, -108, -87, -77, ])\n", + "\n", + "out_swapped_fft = np.array([\n", + "\t-3645-3645j, 1202+1588j, 220+213j, -158-64j, 118-48j, -54+13j, -50+58j, 29+2j, 80-55j, -136-22j, 36-7j, -3+52j, -1-66j, -48+59j, 56+31j, -49-44j, 17-46j, -32+70j, 91-20j, -134-28j, 99+78j, -76-97j, 33+128j, 5-70j, -69-41j, 65+53j, 6+10j, -65-61j, 55+60j, -8-66j, -41+1j, 25+41j, -35-31j, 26+8j, 6-54j, -38+32j, 64+2j, -85+1j, 130+26j, -142-136j, -20+189j, 184-116j, -175-47j, 91+157j, -33-91j, -23+5j, 33-69j, -35+118j, 42-71j, -67-30j, 37+61j, 42-14j, -59-33j, -10+122j, 104-135j, -204+24j, 148+71j, 2-144j, -88+153j, 159-38j, -185-133j, 97+216j, -35-189j, -47+51j, 74+90j, 49-187j, -223+166j, 186+6j, 36-160j, -156+117j, 90+34j, 49-90j, -94-49j, 17+133j, -38-41j, 55-38j, -23-54j, -76+117j, 190-13j, -135-46j, 17+90j, 46-64j, 36-117j, -240+178j, 313-2j, -153-150j, -89+122j, 144-17j, -41-79j, 36+34j, -99+67j, 76-50j, 3+34j, 6-152j, -75+141j, 94+26j, -110-148j, 185+83j, -177-89j, 74+146j, 61-107j, -101-23j, 9+121j, 148-136j, -181+78j, 51+57j, 92-126j, -131+5j, -102+110j, 243-99j, -96-96j, -153+178j, 277+56j, -110-289j, -142+170j, 106+42j, 160-110j, -274-16j, 221+116j, -108-118j, -21+72j, -75-103j, 212+145j, -35-234j, -203+119j, 128+141j, 158-202j, -263+27j, 133+199j, 36-308j, 6+237j, -144-194j, 184+326j, -44-357j, -92+64j, -45+444j, 274-449j, -388-88j, 162+483j, 243-482j, -375+204j, 250-119j, -46+129j, 107-164j, -285+220j, 364+10j, -265-434j, -62+472j, 77+28j, 254-445j, -463+232j, 401+296j, -193-577j, -5+345j, 112-182j, -179+83j, 165+82j, -18-148j, -201+61j, 235+29j, 13-109j, -188+136j, 174-80j, -92+10j, -10-86j, -93+133j, 256-190j, -266+48j, 194+261j, -76-222j, -73-19j, 11+113j, 145-63j, -269-77j, 117+377j, 235-468j, -364+137j, 139+162j, 213-73j, -170-194j, -123+369j, 344-264j, -316+51j, 88+112j, 150-117j, -184-60j, -18+175j, 165-156j, -157-121j, -3+362j, 295-337j, -417-3j, 266+192j, 101-149j, -327-104j, 200+232j, -66-230j, -42+239j, 104-128j, -125-28j, 116+177j, -25-191j, -100+133j, 93-64j, -45+0j, 86-33j, -32-3j, -35+30j, -5+44j, 110-64j, -110+11j, 96+30j, -189-104j, 195+316j, 23-450j, -254+367j, 323-119j, -216-160j, 101+225j, -36-140j, -23+112j, 100-70j, -87-3j, 30+84j, 4-100j, -11+25j, 1-45j, 20+32j, 9+39j, -65-71j, 33+15j, 52+92j, -25-128j, -127+49j, 200+20j, -103-99j, 78+132j, -23-169j, -22+120j, 81-48j, -55+22j, -38-55j, 40+66j, 74-50j, -82+2j, 64+2j, 7+40j, -24-146j, -61+90j, 13+35j, 66-53j, 15-56j, -43+131j, -62-159j, 226+228j, 1615+1221j, ])\n", + "\n", + "out_rfft = np.array([\n", + "\t-3645+0j, 1408+185j, 221-6j, -110+49j, 36-87j, -19+34j, 8+55j, 19-14j, 9-74j, -79+63j, 17-22j, 31+25j, -40-36j, 13+56j, 47-18j, -46+8j, -20-34j, 23+55j, 35-69j, -82+72j, 93-33j, -95+5j, 104+56j, -45-61j, -61+43j, 63-25j, 17+1j, -65+12j, 35-15j, -3-16j, -17+24j, 15-11j, -35+37j, 35-28j, -44-30j, 20+59j, 26-61j, -57+60j, 109-86j, -165+23j, 130+143j, -16-248j, -122+203j, 186-78j, -118-6j, 40+12j, -52-43j, 49+67j, -3-36j, -22-9j, 2-8j, 29+19j, -31-2j, 47+56j, -31-108j, -63+112j, 108-73j, -85-26j, 40+101j, 33-142j, -111+105j, 173-62j, -195-25j, 21+93j, 169-43j, -209-95j, 82+244j, 72-190j, -115+8j, 55+127j, 32-94j, -103-18j, 35+87j, 78-33j, -143-69j, 110+159j, -11-185j, -93+78j, 91+35j, 73-38j, -136-113j, 36+238j, 89-169j, -122+36j, 69+7j, -6-38j, -25+14j, -60+76j, 110-99j, -116-58j, 104+130j, -35-84j, -12+40j, -60-20j, 87+65j, -74-94j, -22+60j, 126-9j, -104-34j, -8+64j, 78-34j, -85-48j, 49+97j, 13-184j, -133+280j, 221-122j, -220-154j, 94+242j, 44-4j, -9-253j, -162+203j, 187+22j, -127-137j, 31+88j, -11-60j, 121+64j, -184-123j, 103+256j, 98-243j, -200+34j, 126+230j, -16-223j, -42-39j, -33+176j, 96-160j, -73+93j, 3-120j, 16+153j, 66-100j, -132-14j, 78+99j, 64-74j, -108-57j, -9+115j, 101-80j, -46+51j, -2-31j, -49+49j, 90-60j, -121+23j, 74+34j, 56-17j, -84-81j, -35+152j, 121-54j, -85-62j, -22+34j, 97+32j, -60-45j, -36+18j, 32+26j, 3-2j, -56-47j, 55+58j, 10-54j, -57+5j, 33+61j, 35-83j, -87+41j, 82-36j, -30+79j, 24-39j, -41-46j, 14+61j, 6-20j, 23+7j, -28+1j, -2-51j, -36+72j, 93-27j, -58-57j, -67+93j, 158-24j, -136-90j, -15+79j, 102+36j, -40-90j, -73+67j, 107+5j, -33-77j, -64+26j, 86+46j, -37-22j, -27-44j, -8+53j, 34-3j, 3-23j, -53-9j, 51+28j, 16-11j, -48-6j, 23-2j, 0+8j, 4-7j, 12+18j, -26-54j, -17+57j, 23-3j, -33-40j, 21+32j, 23-20j, -55+6j, 32+26j, -8-36j, -22+15j, 34+10j, -2-39j, -31+21j, 20+22j, -14-23j, 10-3j, -6+26j, 5-13j, -45+1j, 45+3j, -21-6j, 18-10j, -17+12j, 3+14j, -7-10j, -8-5j, 8+9j, 1-4j, -8+10j, 17+3j, -10-19j, -4+2j, 8+33j, -4-25j, -2+7j, 0+5j, -6-6j, 12+0j, -18-2j, 11+3j, 3+5j, -7-5j, 1+2j, -2+2j, 0-3j, -1+0j, 1+4j, 0-1j, -2+2j, -3-1j, -2+1j, 1+2j, -2+1j, -2+0j, 0+3j, -1+0j, -2+0j, -2+3j, -1+2j, -1+2j, -1+3j, 2+0j, ])\n", + "in_ifft = np.array([\n", + "\t-1823-1823j, 601+794j, 110+108j, -78-32j, 59-23j, -27+7j, -24+30j, 15+1j, 40-28j, -68-11j, 18-2j, -1+27j, 0-34j, -24+30j, 29+16j, -24-22j, 8-23j, -16+35j, 46-10j, -67-14j, 50+40j, -38-48j, 17+63j, 3-34j, -34-20j, 33+28j, 3+5j, -32-31j, 28+30j, -3-33j, -20+0j, 12+21j, -17-14j, 13+4j, 3-27j, -19+17j, 32+2j, -43+2j, 65+14j, -72-68j, -10+95j, 92-58j, -87-23j, 46+79j, -16-45j, -11+3j, 16-33j, -18+59j, 21-35j, -34-15j, 19+31j, 22-6j, -28-16j, -5+62j, 53-67j, -102+14j, 75+36j, 0-71j, -43+78j, 80-17j, -92-65j, 49+109j, -17-94j, -24+26j, 38+47j, 25-92j, -112+84j, 93+4j, 18-79j, -78+60j, 45+18j, 25-44j, -47-23j, 9+68j, -19-20j, 27-17j, -11-26j, -38+60j, 95-5j, -68-23j, 9+47j, 22-31j, 18-58j, -120+90j, 157+0j, -76-74j, -45+63j, 72-7j, -20-39j, 17+19j, -50+36j, 38-23j, 1+18j, 3-74j, -39+73j, 47+15j, -56-72j, 93+43j, -88-44j, 38+75j, 30-52j, -50-10j, 5+62j, 74-67j, -91+41j, 25+30j, 45-61j, -66+3j, -52+57j, 122-47j, -49-46j, -77+90j, 138+28j, -56-143j, -71+87j, 53+23j, 80-53j, -138-6j, 109+60j, -53-57j, -11+38j, -38-50j, 106+75j, -17-115j, -102+62j, 64+72j, 79-99j, -132+15j, 66+100j, 17-152j, 3+120j, -72-95j, 91+165j, -24-176j, -46+34j, -23+224j, 136-223j, -195-42j, 80+243j, 121-239j, -189+104j, 125-58j, -23+66j, 53-79j, -143+111j, 180+6j, -134-215j, -33+238j, 37+16j, 125-221j, -232+119j, 200+150j, -97-286j, -5+175j, 55-89j, -91+43j, 82+43j, -10-71j, -102+32j, 116+16j, 5-53j, -96+70j, 86-38j, -48+7j, -6-42j, -49+68j, 127-93j, -134+26j, 95+132j, -39-109j, -38-8j, 4+58j, 71-30j, -137-36j, 57+190j, 117-233j, -184+70j, 69+82j, 104-35j, -87-95j, -63+186j, 170-130j, -160+27j, 43+58j, 75-57j, -94-28j, -10+90j, 81-76j, -81-59j, -4+183j, 147-166j, -210+1j, 132+98j, 50-73j, -165-50j, 99+117j, -35-113j, -23+122j, 50-62j, -63-13j, 56+90j, -15-92j, -51+68j, 44-29j, -24+2j, 42-14j, -18+0j, -19+16j, -3+24j, 53-30j, -57+7j, 46+17j, -96-51j, 95+159j, 10-222j, -128+185j, 159-58j, -109-79j, 48+114j, -20-68j, -13+58j, 48-33j, -46+0j, 14+43j, 0-48j, -7+14j, -1-21j, 8+17j, 3+21j, -35-35j, 14+10j, 24+48j, -15-62j, -66+26j, 98+11j, -53-48j, 37+68j, -14-83j, -13+61j, 39-22j, -29+12j, -21-25j, 18+34j, 35-23j, -43+2j, 30+4j, 1+22j, -13-72j, -33+47j, 4+19j, 31-24j, 6-26j, -24+67j, -33-78j, 111+116j, 806+613j, ])\n", + "\n", + "out_swapped_fft = np.array([\n", + "\t-13+3j, -10+1j, -10-1j, -11-1j, -9-2j, -11-3j, -8+0j, -8-3j, -10-3j, -8-2j, -8-1j, -8-4j, -10-2j, -8-2j, -8-3j, -9-4j, -9-7j, -11-6j, -10-6j, -8-6j, -10-8j, -13-4j, -10-10j, -10-6j, -11-9j, -16-12j, -14-10j, -15-12j, -17-11j, -15-14j, -16-11j, -14-10j, -14-17j, -22-13j, -16-11j, -17-13j, -15-14j, -18-13j, -16-12j, -17-18j, -19-14j, -20-18j, -22-15j, -21-13j, -19-25j, -23-20j, -25-19j, -28-21j, -22-25j, -21-16j, -30-31j, -33-26j, -35-22j, -24-31j, -38-33j, -29-30j, -36-28j, -28-33j, -45-26j, -18-20j, -51-43j, -34-38j, -29-35j, -58-29j, -17-37j, -40-33j, -34-45j, -62-54j, -43-14j, -13-43j, -34-26j, -32-17j, -26-47j, -20-38j, -49-18j, -58-82j, 18+18j, -71-69j, -17+30j, -52-145j, -49+25j, -39-52j, -11-59j, -55-49j, -97-7j, 38-59j, -137-151j, -63+27j, 16-36j, -54-52j, -66-52j, -39-56j, 3-3j, -83-62j, -83-80j, -12-10j, -24-47j, -64-51j, -58-131j, -155-47j, 39-16j, -59-10j, 5-29j, -70-75j, -53-42j, -50-72j, -58-49j, -67-43j, -14-26j, -44-59j, -50-62j, -83-86j, -89-52j, -8-15j, -50-33j, -9-18j, -34-65j, -68-57j, -64-71j, -33+10j, -27-79j, -107-84j, -5-8j, -88-116j, -59-11j, -41-63j, -39-17j, -36-61j, -39-27j, -34-55j, -38-21j, -55-35j, -17-38j, -67-55j, -24-44j, -44-27j, -42-47j, -50-64j, -50-17j, -20-40j, -48-60j, -54-50j, -46-27j, -33-50j, -43-33j, -53-64j, -54-40j, -22-46j, -62-30j, -43-64j, -44-34j, -32-42j, -59-55j, -28-44j, -66-50j, -17-22j, -57-43j, -31-30j, -38-59j, -50-26j, -42-53j, -38-45j, -42-41j, -37-29j, -37-44j, -44-41j, -44-38j, -33-36j, -51-50j, -44-38j, -46-51j, -47-55j, -37-41j, -65-44j, -19-35j, -54-41j, -38-35j, -31-48j, -52-41j, -31-36j, -47-44j, -28-31j, -42-41j, -41-30j, -14-28j, -32-35j, -43-28j, -30-36j, -35-35j, -20-30j, -43-33j, -26-29j, -39-35j, -16-21j, -42-33j, -16-10j, -11-22j, -29-23j, -22-26j, -28-25j, -22-23j, -22-20j, -25-24j, -22-22j, -20-16j, -19-23j, -13-20j, -18-13j, -19-17j, -21-22j, -17-7j, -11-23j, -15-15j, -14-9j, -13-17j, -19-11j, -6-12j, -18-12j, -14-16j, -9-10j, -13-11j, -11-10j, -15-14j, -12-14j, -12-11j, -8-11j, -12-9j, -7-7j, -11-10j, -7-4j, -5-9j, -8-7j, -9-10j, -6-4j, -6-9j, -9-5j, -2-4j, -8-9j, -6-4j, -7-4j, -3-4j, -4-5j, -4-3j, -3-4j, -4-5j, -4-5j, -4-3j, -5-6j, -3-5j, -5-4j, -3-2j, -4-4j, -3-3j, -5-5j, -5-3j, -4-5j, ])\n", + "\n", + "out_irfft = np.array([\n", + "\t-13, 3, -10, 1, -10, -1, -11, -1, -9, -2, -11, -3, -8, 0, -8, -3, -10, -3, -8, -2, -8, -1, -8, -4, -10, -2, -8, -2, -8, -3, -9, -4, -9, -7, -11, -6, -10, -6, -8, -6, -10, -8, -13, -4, -10, -10, -10, -6, -11, -9, -16, -12, -14, -10, -15, -12, -17, -11, -15, -14, -16, -11, -14, -10, -14, -17, -22, -13, -16, -11, -17, -13, -15, -14, -18, -13, -16, -12, -17, -18, -19, -14, -20, -18, -22, -15, -21, -13, -19, -25, -23, -20, -25, -19, -28, -21, -22, -25, -21, -16, -30, -31, -33, -26, -35, -22, -24, -31, -38, -33, -29, -30, -36, -28, -28, -33, -45, -26, -18, -20, -51, -43, -34, -38, -29, -35, -58, -29, -17, -37, -40, -33, -34, -45, -62, -54, -43, -14, -13, -43, -34, -26, -32, -17, -26, -47, -20, -38, -49, -18, -58, -82, 18, 18, -71, -69, -17, 30, -52, -145, -49, 25, -39, -52, -11, -59, -55, -49, -97, -7, 38, -59, -137, -151, -63, 27, 16, -36, -54, -52, -66, -52, -39, -56, 3, -3, -83, -62, -83, -80, -12, -10, -24, -47, -64, -51, -58, -131, -155, -47, 39, -16, -59, -10, 5, -29, -70, -75, -53, -42, -50, -72, -58, -49, -67, -43, -14, -26, -44, -59, -50, -62, -83, -86, -89, -52, -8, -15, -50, -33, -9, -18, -34, -65, -68, -57, -64, -71, -33, 10, -27, -79, -107, -84, -5, -8, -88, -116, -59, -11, -41, -63, -39, -17, -36, -61, -39, -27, -34, -55, -38, -21, -55, -35, -17, -38, -67, -55, -24, -44, -44, -27, -42, -47, -50, -64, -50, -17, -20, -40, -48, -60, -54, -50, -46, -27, -33, -50, -43, -33, -53, -64, -54, -40, -22, -46, -62, -30, -43, -64, -44, -34, -32, -42, -59, -55, -28, -44, -66, -50, -17, -22, -57, -43, -31, -30, -38, -59, -50, -26, -42, -53, -38, -45, -42, -41, -37, -29, -37, -44, -44, -41, -44, -38, -33, -36, -51, -50, -44, -38, -46, -51, -47, -55, -37, -41, -65, -44, -19, -35, -54, -41, -38, -35, -31, -48, -52, -41, -31, -36, -47, -44, -28, -31, -42, -41, -41, -30, -14, -28, -32, -35, -43, -28, -30, -36, -35, -35, -20, -30, -43, -33, -26, -29, -39, -35, -16, -21, -42, -33, -16, -10, -11, -22, -29, -23, -22, -26, -28, -25, -22, -23, -22, -20, -25, -24, -22, -22, -20, -16, -19, -23, -13, -20, -18, -13, -19, -17, -21, -22, -17, -7, -11, -23, -15, -15, -14, -9, -13, -17, -19, -11, -6, -12, -18, -12, -14, -16, -9, -10, -13, -11, -11, -10, -15, -14, -12, -14, -12, -11, -8, -11, -12, -9, -7, -7, -11, -10, -7, -4, -5, -9, -8, -7, -9, -10, -6, -4, -6, -9, -9, -5, -2, -4, -8, -9, -6, -4, -7, -4, -3, -4, -4, -5, -4, -3, -3, -4, -4, -5, -4, -5, -4, -3, -5, -6, -3, -5, -5, -4, -3, -2, -4, -4, -3, -3, -5, -5, -5, -3, -4, -5, ])\n", + "out_iwindow_c = np.array([\n", + "\t\t-163, 37, -125, 12, -125, -13, -136, -13, -110, -25, -132, -36, -94, 0, -92, -35, -113, -34, -88, -22, -86, -11, -83, -41, -100, -20, -78, -19, -75, -28, -81, -36, -79, -60, -93, -50, -81, -48, -62, -46, -75, -59, -94, -28, -69, -68, -66, -39, -70, -56, -98, -72, -82, -58, -85, -67, -92, -59, -79, -72, -80, -54, -68, -48, -66, -78, -99, -58, -69, -47, -71, -54, -61, -56, -70, -50, -60, -45, -62, -65, -67, -49, -68, -61, -73, -49, -67, -41, -59, -77, -69, -60, -73, -55, -80, -59, -61, -68, -56, -42, -78, -80, -84, -65, -86, -54, -58, -74, -89, -76, -66, -68, -80, -62, -61, -71, -95, -55, -38, -41, -103, -86, -67, -74, -56, -67, -110, -55, -32, -68, -73, -60, -61, -80, -108, -93, -74, -24, -22, -72, -56, -43, -52, -28, -42, -74, -32, -59, -76, -28, -88, -123, 26, 26, -104, -100, -25, 42, -74, -204, -69, 34, -54, -72, -15, -80, -74, -66, -129, -10, 49, -77, -177, -193, -80, 34, 20, -45, -68, -65, -81, -64, -48, -68, 3, -4, -99, -74, -98, -94, -14, -12, -28, -54, -73, -59, -66, -148, -175, -53, 43, -18, -66, -12, 5, -32, -77, -82, -58, -46, -54, -78, -63, -53, -72, -46, -15, -28, -47, -62, -53, -65, -87, -90, -93, -54, -9, -16, -52, -34, -10, -19, -35, -67, -70, -58, -65, -73, -34, 10, -28, -80, -108, -85, -6, -8, -88, -116, -59, -11, -41, -63, -39, -17, -36, -61, -39, -27, -34, -55, -38, -21, -55, -35, -17, -38, -67, -56, -25, -45, -45, -28, -43, -48, -51, -65, -51, -18, -21, -41, -50, -62, -56, -52, -48, -28, -35, -52, -45, -35, -56, -67, -57, -42, -24, -49, -66, -32, -46, -69, -48, -37, -35, -46, -65, -61, -31, -49, -73, -56, -19, -25, -64, -49, -35, -34, -44, -68, -58, -31, -49, -62, -45, -54, -50, -49, -45, -35, -45, -54, -54, -51, -55, -48, -42, -46, -65, -64, -57, -49, -60, -67, -62, -73, -50, -55, -88, -60, -26, -49, -75, -58, -54, -50, -45, -69, -76, -60, -46, -54, -71, -67, -43, -48, -65, -64, -65, -48, -23, -46, -52, -58, -72, -47, -51, -62, -61, -61, -36, -54, -77, -60, -48, -54, -73, -66, -31, -41, -82, -65, -32, -21, -23, -46, -61, -49, -48, -57, -62, -56, -50, -53, -51, -47, -59, -58, -54, -54, -50, -41, -49, -60, -35, -54, -49, -36, -53, -49, -61, -64, -51, -21, -34, -72, -48, -48, -46, -30, -44, -58, -66, -39, -22, -44, -67, -45, -54, -62, -36, -41, -54, -46, -47, -44, -67, -63, -55, -66, -57, -53, -40, -55, -62, -47, -38, -38, -61, -57, -41, -24, -30, -55, -50, -45, -59, -66, -41, -28, -42, -65, -66, -38, -16, -31, -63, -73, -50, -34, -60, -35, -27, -36, -37, -47, -38, -30, -30, -40, -41, -52, -42, -54, -44, -33, -56, -68, -35, -58, -59, -47, -36, -24, -49, -49, -37, -37, -62, -63, -63, -38, -50, -63, ])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 156, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAn7klEQVR4nO3deXxU9b3/8ddnZrIBYcnCloSw7zsBAdF661K1VttbrdpaW+tSr/X+rLa3V2+9vdYubu21t63Wamvr0oprK1oUFa2isoU1CWsIEPaEENaQbeb7+2Mmw2SDAMHhxPfz8eDBzDlnzny/OfDOdz7ne86Ycw4REfE+X7wbICIi7UOBLiLSQSjQRUQ6CAW6iEgHoUAXEekgAvF644yMDNe/f/94vb2IiCctWbJkt3Mus6V1cQv0/v37k5+fH6+3FxHxJDPb3No6lVxERDoIBbqISAehQBcR6SAU6CIiHYQCXUSkg1Cgi4h0EAp0EZEOwnOBvrJgOS8//yfq6uri3RQRkdOK5wK9atnLfHn1d6mrqYp3U0RETiueC3R8fgCCwWCcGyIicnrxXqBbuMmhUCjODREROb14L9AjI3SnEbqISCOeC3SLjtDr49wSEZHTi+cCPVpDD2mELiISy3OB3jBCRzV0EZFGPBfomuUiItIyzwV6wwjdqYYuItKI5wK9YYQeCqrkIiISy3OBbr6GWS4quYiIxPJcoGOReegquYiINOK5QLeGkotmuYiINOLZQHcquYiINOLBQI/U0HVSVESkEc8FumroIiIt81ygR0suTiN0EZFYbQp0M7vQzNaaWbGZ3dnC+n5m9p6ZLTOzlWZ2cfs3Nczna7iwSDV0EZFYxwx0M/MDjwAXASOBq81sZJPN7gZecM5NAK4CHm3vhh5pUMOFRQp0EZFYbRmhTwGKnXMlzrlaYCZwWZNtHNA18rgbsL39mtiY+RtuzqVAFxGJ1ZZAzwK2xDzfGlkW6x7gGjPbCswG/r2lHZnZTWaWb2b55eXlJ9BcsIYRugJdRKSR9jopejXwZ+dcNnAx8IxF73N7hHPucedcnnMuLzMz84Te6Mg8dJ0UFRGJ1ZZA3wbkxDzPjiyLdT3wAoBzbj6QDGS0RwObOjLLRSN0EZFYbQn0xcAQMxtgZomET3rOarJNKXAugJmNIBzoJ1ZTOQbNchERadkxA905Vw/cCswBVhOezVJkZvea2aWRzb4H3GhmK4DngG8659ypabHu5SIi0pJAWzZyzs0mfLIzdtmPYh6vAs5s36a1zBcJdM1yERFpzLtXimqELiLSiAcDXV9BJyLSEg8GeqRKpFkuIiKNeC7Qj8xyUclFRCSWBwNdX3AhItISzwW6+XX7XBGRlngv0DVtUUSkRZ4LdF/kpKhq6CIijXku0KPTFjXLRUSkEc8Fus/fUHLRCF1EJJb3Al2zXEREWuS9QNcsFxGRFnkv0CPfm2GqoYuINOK9QPdrlouISEs8F+gNFxbpXi4iIo15LtCP3A9dI3QRkVieC3S/P9JkjdBFRBrxXKBHrxTVLBcRkUY8GOjhkoup5CIi0oj3Aj06D10lFxGRWJ4LdH90lotG6CIisTwX6BYtuWiELiISy3OBDlDvfDopKiLShCcDPYRp2qKISBMeDXSfaugiIk14NtBVQxcRacyzgQ4u3s0QETmteDPQzfQl0SIiTXgz0PFhqqGLiDTiyUB3+DTLRUSkCU8GelA1dBGRZjwZ6A7TLBcRkSY8Geiahy4i0pwnA93ppKiISDOeDPSQ+QAFuohIrDYFupldaGZrzazYzO5sZZuvmNkqMysys7+2bzMbC2EaoYuINBE41gZm5gceAc4HtgKLzWyWc25VzDZDgLuAM51zlWbW81Q1GBqmLSrQRURitWWEPgUods6VOOdqgZnAZU22uRF4xDlXCeCcK2vfZjYWMh8+zUMXEWmkLYGeBWyJeb41sizWUGComX1kZgvM7ML2amBLNEIXEWnumCWX49jPEOAcIBv4wMzGOOf2xm5kZjcBNwH069fvhN9Ms1xERJprywh9G5AT8zw7sizWVmCWc67OObcRWEc44Btxzj3unMtzzuVlZmaeaJsJmQ/TLBcRkUbaEuiLgSFmNsDMEoGrgFlNtvk74dE5ZpZBuART0n7NbEw35xIRae6Yge6cqwduBeYAq4EXnHNFZnavmV0a2WwOUGFmq4D3gP9wzlWcqkY7U6CLiDTVphq6c242MLvJsh/FPHbAHZE/p5xDFxaJiDTlyStFnaYtiog048lAD9fQdftcEZFYngx0Z6ZZLiIiTXg00P06KSoi0oQ3A1035xIRacabgW5+lVxERJrwZqBj+BToIiKNeDPQVUMXEWnGo4Gue7mIiDTlyUDHfPg0D11EpBFPBrrDh6ErRUVEYnkz0M2nk6IiIk14MtAxXfovItKUJwM9PEJXyUVEJJZHA92PoRG6iEgsTwZ6eJaLaugiIrE8Geg6KSoi0pwnAx0FuohIM54MdNXQRUSa82Sga4QuItKcAl1EpIPwZKA7zXIREWnGk4GO+fGphi4i0ohHA10lFxGRpjwZ6E4jdBGRZjwZ6Ji+gk5EpClvBrrPr0AXEWnCm4FuPvzmcCGFuohIA48Guh8Ap3uii4hEeTTQDYBgsD7ODREROX14M9B94RF6KKRAFxFp4M1Aj5RcQkHV0EVEGngy0M0XbnZIJRcRkShPBnrDCD2oWS4iIlEeDfRIs4P6omgRkQYeDfSGEboCXUSkQZsC3cwuNLO1ZlZsZnceZbsvm5kzs7z2a2IL79NQQ9csFxGRqGMGupn5gUeAi4CRwNVmNrKF7VKB24CF7d3I5o2KXFikWS4iIlFtGaFPAYqdcyXOuVpgJnBZC9v9BHgAqG7H9rWoYYQe1AhdRCSqLYGeBWyJeb41sizKzCYCOc65fxxtR2Z2k5nlm1l+eXn5cTc2KnJhke7lIiJyxEmfFDUzH/C/wPeOta1z7nHnXJ5zLi8zM/Mk3rRhHrpOioqINGhLoG8DcmKeZ0eWNUgFRgP/NLNNwFRg1qk8MWoNI3SnQBcRadCWQF8MDDGzAWaWCFwFzGpY6Zzb55zLcM71d871BxYAlzrn8k9JiwEzXSkqItLUMQPdOVcP3ArMAVYDLzjniszsXjO79FQ3sEX+hptz6fa5IiINAm3ZyDk3G5jdZNmPWtn2nJNv1tE1jNCdZrmIiER58krRaA1dV4qKiER5MtCP3D5XgS4i0sCTge7TCF1EpBlPBjrRe7nowiIRkQaeDPQjNXSdFBURaeDxQFfJRUSkgScD3ecPz7bUSVERkSM8GugJALj62ji3RETk9OHNQA+EAz0YrItzS0RETh/eDHR/IqB7uYiIxPJkoPsD4Rq60whdRCTKk4HuC4RH6K5egS4i0sCTge5PCNfQQxqhi4hEeTPQIzV0lVxERI7wZqBHRugo0EVEojwZ6IGAZrmIiDTlyUD3R+ahE9IIXUSkgScD3ZegGrqISFOeDPSEaA1dJRcRkQaeDPRAIAkAp5KLiEiURwM9PEI3jdBFRKI8Geg+v49659NJURGRGJ4MdIB6/PrGIhGRGJ4N9CB+TIEuIhLl2UCvNwW6iEgs7wY6AVCgi4hEeTbQg/jx6aSoiEiUpwNdI3QRkSO8G+gWwFww3s0QETlteDjQVXIREYnl3UAngDmVXEREGng20EPmx0IquYiINPBsoActgE8jdBGRKM8Gesj8CnQRkRgeDvQAPs1yERGJalOgm9mFZrbWzIrN7M4W1t9hZqvMbKWZzTWz3PZvamMhlVxERBo5ZqCbmR94BLgIGAlcbWYjm2y2DMhzzo0FXgIebO+GNhUyP34FuohIVFtG6FOAYudciXOuFpgJXBa7gXPuPedcVeTpAiC7fZvZXMinkouISKy2BHoWsCXm+dbIstZcD7zR0gozu8nM8s0sv7y8vO2tbIGzBI3QRURitOtJUTO7BsgDHmppvXPucedcnnMuLzMz86Tey/lUchERiRVowzbbgJyY59mRZY2Y2XnAD4HPOOdq2qd5rQtZAB8quYiINGjLCH0xMMTMBphZInAVMCt2AzObAPweuNQ5V9b+zWzO+RLwq4YuIhJ1zEB3ztUDtwJzgNXAC865IjO718wujWz2ENAFeNHMlpvZrFZ21358fgKo5CIi0qAtJRecc7OB2U2W/Sjm8Xnt3K5jCvkC+FVyERGJ8uyVoliCAl1EJIZnA935AwRUQxcRifJsoGMB1dBFRGJ4N9D9CQQIxbsVIiKnDe8Gui8BnzlC9Rqli4iAlwPd7wegrv6UX8MkIuIJ3g10XwIA9XX6omgREfBwoJs/Euj1CnQREfB0oIeviQrWquQiIgIeDvSGkkswqJOiIiLg4UBvKLkE62vj3BIRkdODhwM9UnKpU6CLiICnA73hpKhKLiIi4OFA9wXCgR5SyUVEBPBwoKuGLiLSmGcD3RepoYc0y0VEBPBwoJs/EVDJRUSkgWcD/UgNXVeKioiAhwPdr0AXEWnEs4HecFI0FFSgi4iAhwPdH2iooSvQRUTA04EeHqG7oE6KdmQFrzzIqjefiHczRDwhEO8GnKjoSdGQpi12ZH1XPgJA8LxvRn+Ji0jLPDxCD5dcnEouHdb+il2ks5d09rL0rWdZNu81Du+raPPrS1ctZM39Z7Pm49fCC+oO4+oOn6LWisSfZ0foR0ou3gv03WU7qDl8iKzcwZ/Ye1YfrGTno5dQN+FbDDn/+k/sfU/GtnVL6Rp5PHnRdwGom+tn+1ffYVPJOroueYTDXXKYfNtfW3x92ZsPkVe9At66hoL6p0n+6AHqfUmM+MG7YPbJdELkE+TdEXpCQ6B7r+RS/viX6PNkHkt+fTUuFDzl7+ecY+UfbqF/VSEJC34Nzp3wvvaW72DNz6ZRvOyDdmxhy/aXFgCQn/Z5tviyWTj4dhIIsqt4GYMW/BcjawuYtGc2lWXbmrezcjej9r3Pom4XUkE3Ut7/MUNqihhxeCkrP/jbKW+7SDx4N9ADSeEH9dXxbchxKl7+ASPqV7MuYRiT9sxm6d/+75S/Z9Hi95iydzabfP3oH9xE8Yp5J7yvte8+w/C6VRx4+752bGHLXNkqDpDCpFufJedHRQy96BYAaveUkuH2sKLTGfjMUfLRS81eW/TWU6RYLRn/cgvre17I4OAGgs4oJ43AvAdPedtF4sGzgd49vRcHXApWsT7eTTku+z/4HYdcEr1u+QcFCeMYWvAQ+/eWt+t7uFCIZR+/zZqiZQAc/OhxDpFM5+tfpdolsPvDJ4/6+lBdDcX//AvVByqbreu8IVyPHndoPltLVrdru5tK3V/MjoRczBf+Z9q9RwbVLoFAWQF+c9QNPI/t9CRx/T+aferovHEO2603A8edTeaMbwCwKnk8G7MuYXDdOn25uHRIng30QCDApqRhdK8siHdT2qx46XuMrXiTpWkX0yMtA/95d5NKFes/fr3d3qO+tppVD53PhLcux/fKDeytKGfc3rmsTv8cmVkDWdN5MjkVHx91H0uevZvB/7yF2l+MZHX+u9Hlu7aXMqKmgCXplxDEx+a3Hmm3djcVCoboU7eJ/alHzjOYz0eFL41eB1YBkJSWw4bMzzKmaiE7fjyYnVs3AlBbfZihh5ezNX06mDFozHQW5XyLpPPuxpc2kEQLsmtjIQW/uYqtPx7O0jlPn7J+iHySPBvoAAfTx5BbV0JNdVW8m3JMFeU7SZ51M+WWzqhrHgJg6MRzOEgKtcXvtdv7LHn2bkYdzme9fzAD60soevP3pFgtPc6+EYCa7GlkuV3sKC1u8fVbN65hzKY/sSIpj5D5OPT+b6LrSj5+Bb85Ms+9jTWd8xi4842jfsFI4dtPUfLzKdTVHP/xKV6VTxoH8GVParR8fyCdbLcDgC6ZOQy9+gH+mfMd+rCb0kWzANiw9F06WQ2BYeeFX2TGlOsfZujk80jpNQiALXN/z5iKN+gZKidh6Z+A8PmYg7s2HndbW1JfV8uWdcvbZV8na9kbT/Lhb25g4dsvxLspcop5OtCTc/NItCCbihbFuylHVVdTRdnj/0pPt5vDX3iMtPRMAAIJiWzsNJa+lfm4kzhRCbBt0zoKfnYWZ5Q+waKuF3D4zB8QsBBD1v+RnWQwcMyZAPQcfS4AWxe8zOZFrzUrVZS+8St8OPp8/XHWpZ/LyP0fUXVwHwC+LfPZSyo5w/MIjfoyfdhNwcK5zdqy6NEbmP+7m+n50T0MrF3L+sVvH3d/dueHT1z2n/7lRsurkjKjj3v0yqVXWnc+c91PqSQVK50PwMFVb1Ln/AyafFGz/abnDAUguyz8S3RpxhcYXr2CfRW7WP7Y9SQ/OpHSVQuOu71N5T/+HXL++hmWvvyLk97XydhUuIAJC29n+u6X6P3xPXFti5x6ng70rFEzAKhYd/L/AZty9bVUrJ53UjNCGqx4/TFG1BWxfNLPGTjpvEbravvNINdtY9OmDW3e35Y1+ZT8fAqV9/Rj8dN34UIh9sy8mYG161g44BZG3/QHcsd9BoCe7KE0bVq0Dp078gwO0IlJRfeRO/uaI3O0Cc+GySl/n7Up4+mZPYjOeVfTyWpY9d5MALL2L2dTp7GYz8fwc75CNQkczH+uUds2r1rElLIXmbbrOXqyh6Az9he+2WibPZWVlGwsoebwQZb87nrW5r/TrI/p2+ayLjCUtN65jZbXpfQK/9xcgB6ZfYBwKaak03iy9i0Nv3bnR6xNGEG37mnN9puZNYh65yPb7WS79STtzG+RYEHWPXM748peJWAhePE6dt4zkI0/GUfh20+xfVcZH7z5Aivm/JmlD1zExjXLGu1z375KPvz77zl06FD4Z1BcyMSyl9nvOjGx4CcUzv3L0Q7nKVU55z4OuBQW9bueXLeNbZu8dc5Jjo+nA71n9iDKLZ1e6/7K3srdzdZXVFZSsadtF6K4UIiPn7idxY/dzM5VH7P0d98i/flLWPXOUyfdztQ1z7PJl8PkS25sti5r/OcA2JI/u037KilaRI/nLiG1dhfl/kxGb/gDS575IWOql7Bi+Hc54xv30alLN7ql92aL9QUgMPSC6Ot9gQAbO43FZ479dMb37r188OJvWF2wmNJ1K8hx2zk8ILz98CkXsNV6M3DJz1i/4HWy3U5q+k4BIKlzD9Z1O4sxe96OBhlA+Tu/5rBLZMXQ2ygY9G1WJ4+nV9lH0fXLX/gZKb8aSs8/T2f5rN8yaddL5L52FYvmHplKWDTv7wyrX8vuvp9t1v9Qam8AdvvSMJ8/urwm6wz6ul1sKfyIgfUb2Nv3rBZ/fv5AAmW+8Ci/LHkgQ8bPYKv1ZvLef1DuS2fh8Dvp57ZTmZRFyDmGfPg96h47h7MX3Mi4+bcx8fDHlM35ZXR/pYXzqXt4PDOW/4Dlf/khADtf+wn1BDjwzX+y3j+IrHn/ydbSjVSULGPHyndbbFdrnHOEQsc3qHChEHXVh9iw8mPG7X+fgqwr6Tv9qkjbfkzRLz/Pig9msWrJPJY9dgMFr/224c2o3XlqT3TLqeXZC4sAMKPy/P9lwJxvUfjE15nwgzeiq7ZvK8U9cS4ViX1J/6/3j7mrxbMeY/q2Jwk5w/fCc/QmPApMWfAr3LnXRke4x2vzmqUMq1vD/MG307+FffQeOpkK60HKxreB/0fl1rVUVWwja1zzMMM5amfdQZ0FCN0wly41NSQ8PYO8jY+yPHEiky//fqPNd3QdS++9uxg09fONlve94kFKtq6msnwnk1b+D0OL7oYi2E5PAPpN+xIAfr+f6itmkvjClxj4xjVg0GPEZ6L7SZp8Ld3feZdF781kyiXXU3WgktEVb7I87UKmfvVeABY+ew+jix9m26b1pKZ2Y1jRr9gSyGVocD3jVv2CXZZGrb8TfT68i819c6iY9d9MPPwxpdaH/ufd1OxHEOgW/iW1L5BB35jlPUaeA+t/waHX7gQgfVzzckuDPYl96Vuzi+q0YZjPR+CGOazZsYHsIeM5o1s6FduuZETfAZTt2sr+x86iZ6icFZMfoCYxDV/BTEbsmUt11UGSkjtx+NU76ISjIGkik7Y9S+nqrzF277sUZlzE5AHD2PHVP9P56XNY9foD9NmziL51pZQkzmXg8HGN2lR9aB+1B/fRtVc/IHxS+IO//JTckudJc5VsThlJbc4Mxl3+nyQkpbTat4qy7ex48mvkVq8mYOlUWldGXf5DunbPoJweTKqIfCJ798Poa0I7XiI/oRtJB7cypvB+ii94isHTv9jqe8jpy9uBDgyd/kXmr/6QaVueYPuGIvoOGkUoGKLsz9cwnjL61JRTvqOUzD79Wt3H6vdmMnLZvaxJHEnytc+zc+HLdKmroCq5J1NW/De77h3MrpRBJJx1G4MmX0jB8oVMmDQdn6/1qw0rihdTumoRacsepcYlMLS1qzN9PjamzWDE7ndYMvcFhs67jUxXQ2Xv5fTo1bjNa+c+xfCaAuYNv5uzssOzP5bmfoPEyvUM/fZfSUhofK+TrC/9hIKSK5nYPb3R8owB48gYMA4XClLcK4cu6dlsXfwq/TbMZHXCKEb0GxrddvDICay98jX2vfh10kMVDBgzPbpuyNQvsGtuBikFz8Il17N23itMsDq6TP5adJvc6ZdD8cNsfPt3+AJJTLdaAv/6KKv//l1G1BWxtNdFdB56NuPmfZv6mefTw5JZPODfGHPF3SR36tLsx5WSlgVAVVLPRsuHjJlO0esjGFWzkkpSGTp+RmuHhsOds6FmGQl9xgDQO6s/vbP6R9enZw0EoGfvHLZ/cw5lNYcZN2w8AEUpSXSdO5f892biDyQwoW4VC0b9D9mTP4/70wy6Pv9FUqyW7mdeB0CfQWNZ2XkyY8pm0ZVDYFD1wo1U/WAenZLD11K8/+JvGF94H4lWx8bLXyW9Vy6bnv425xyYx7qk0azrPIGMvSsYsP5hFs6sYfgVP6asZAVp3buTnj3kSL+qqqh87PMMCW5hl78XuaGtrJjyEOPSwj+rjd2nkVr5NiWffx4q1hEkgfQRZ3Ho2WuYOP/fCeIDg/3z/wytBXp9DfgS4CgDnH3795GSnEJiYmKr28ipYSd7Mu5E5eXlufz8/HbZ165tG0l/fCIbkkaQ6GooH/ZVphTey7LMy5hQ/iqLxtxDau/BVH70R0ZULaEyoRflfT9L4qgvECpdwKTCn7LeN4iu33qBXtlHpskF62pZ+ewPCO7dTr99i0mkjsKsK5mx7Q98PPA2pl97b3Tb7SWr2PL2I9BzBLUb5nHWwXDdeA/dKP/cYwybdnGr7V/2znNM+PBmAEp9WWQHt7Mo5zqm3vBwdJtQMMjWn4+nPuToe+dSkpPa/z+LCwVxDnx+f7N1tTU1HDqwlx4ZvRotn//UD5m28bcsnfZbXOHLDDiwhK4/LCEQ88tl5UMXkXtwBYajtNMoRv/nOyx642kmLPgumy5/k8Gj8lh2/3l0qdtDytefJ2fgsFbbuGnNMvrPPIf5Pa9m2i2PNVq3oXAh/V68iJXdzmHSHa+0uo+FT9/NGSW/ofTKd+g3YnJbfzwAhOrr2fGzkVRbComulpD5ybprKYGERBb+409MXnQ7W/zZ9Lt7ZfRT3dJ/PMHExd8n5Iyi0d9nTNFDvJv9b0z/4r/h79aX/T8bxN5AJp3r99LFHcJPED9BFg64lRnX3hPdz7IHL2LwoWXstAyGsIU9dKPTfxSS3Lkrzjk+/O2NnFXxIoVn/57h0y9h55qFZI/7bPQ2B/v2lLG3fDu5kV9ODaoPVrLimTvpVrGcAylZjN3/AfNyb6FbxQpC3fuT982HOFhVxdonrmPcwXmszvoKPb/w3+wo3cCkKY1/cX78yE1ML3+e3XSn5to3WDPvb6QPzmP8mZ/jo7mvcnj5y+SefwtDxk49rp/7+oJF1FVuZlDe50jq1PXYL+jAzGyJcy6vxXVtCXQzuxD4P8AP/ME5d3+T9UnA08AkoAK40jm36Wj7bM9AB1j64MVMrDpSq62gO6l3rqbi/rF0Zx8p1LKXVNZ3m0anA5sZEVyHz8J9X5I8lSG3vkTXLqmt7r/go9mMeftqAKpdAslWR8GUB0jMGIAFa/DN/TGD68NTAWsJsLLP5XSZ8W0GDBxCUkrr+wU4cGAf7hfD2eXvRc/vvMnGP15HblUBm77wAuMnTGXFU9/Dv2slY6rzWTjxQc649Nsn++NqN7U11Wx5cDrpwV0kuDoK0y7gjNuebbTN2kVvMWz2FWzz9SHl+tdJyxqMc46dZWX06RX+BVFVXYPf7ycp4egfGg/sr8T3y2GsHHMX0y6/vdn6DUvm0qPvINL69G91HxXbStjy3hOM++pPG9Xh22r5G08yfmH4vQvPeYLR53wluq5w3qt06tGLgaOPBFbVwX3w0BBKkoYx+q4PKHz4MkbvD5cBV6R+hnEH3mfF1F/RNWcUe+bcT11SDzL/5TsMGjmx0ftuXbeMXn85lwp/JttzL2XixsdZ3P9meo2/gM0LZnHWzj+ztPdXmHjzid9ueFPBR/R/OTz4KLN0eroK1iSN5UAgjUkH32dDYCAD6jey3debrNAOluU9QN4Xwv8e1+a/y7DXv8Tyzmcy5OASai2BHhwAYH3CMHJqS0i28AVdW603JTlfJnX/erL3LcHv6tjmz6G65zj8uWcwZPplhIKOffv2sH3pG0xdeTcAqxPHMOD2OSQnJoG/7QWGgg9epapgFhnTr2XQhM8c+wWnsZMKdDPzA+uA84GtwGLgaufcqphtbgHGOuduNrOrgC8556482n7bO9C3bFxLaf4bOPMzo/BuPs69henX3ceHT9zO+K3PsWjgd5h2xR2kdOoMwMGKbWye/wrBvVsYfvmPSUxuvS4J4RNN6346mWGhYpae8zSBj37J6NqV0V8KAAsn/ZL0/qPJHTKGhOTOx9X+JStXkp2VTa/0NDYXzqfbS1fQyVWxMnkSeTWLOEQyuwO9yb5zCf7A6VUp27GhgP3Pf5thtUUUXfAco6Y3/zSy6oOXyR55Jl0zep/0+5WWbqJ37ywSE+NzO10XCrHmFxcQ8icy6o5/tOlGX4Ufvk5qzxxyh47jUGUZ6157iOTSDxhRv4bDLhH7QTHJnbsdcz97t60nNSMLf1InVt5/LmOrj/wfWt79fMb9+0zsOIKuJRvmzaR71hDSB07iw5d/w/iVP6OLHWZJznVkXfQ9Ov9+MsnUsinQn0H1JRRmXY71GkXG8kcIuHpS7ljG0lmPcnbxg8xP/1eC3fvTt+Qlav0pdPvqk2yY/ypppW8xsmY5VS6JFV3OIpCUQreDxeTWFJNkdZRbGgFXTzd3gHr8FCeNZP+Ai5m69n5CzqjHxybLYW/XoVSnDceflkvCoV0kpnQmKWsse5a8Qr/d75NRv4ui1DMZun8hXS188n5Bzo1kf/ZG9u3fS/W6f+K2LaOmpopgz7FkDptGfaATPdJ7kt1/KPgTIBQCn4+6ujoCfn/z82mhIJivxX8HDSe0j1aePV4nG+jTgHucc5+LPL8LwDl3X8w2cyLbzDezALATyHRH2Xl7B3oDFwpRkD+PEROmk5CQQF19PdW1daR2Onpgt8WSj96iYtX7nH/DTzmwv5KSJ75BTcZI6jv1IlhXzdlf+6926EFY9d5dFD97G6N3v8GKTlMZc8fr+Hw+OIER5Sel6uBeOnXpHu9mfDJCofDfJ3iyHMJlhIEvXcCKLjOY+B/Hf7XwtpJVbH7/Gaz3GHpl9WfA6KknfPL+aPbs3My2xa8x8sKb8Ccksvifs3ChIMPyzmXpH/8f/7IvPENpo+VQddH/MWrKudTXB1m2eB7j8maQ2MqnrvINy0jq1pOuGVnRZQcOHWLj0rkE372Pel8i9WlDSKtcQY/rXqBn1gCK3voTB0tX4IL1dN2/lsxD68mk+S0q6p2PwsRxVKdkMnX/WxwkhV1f/jsV7zzMlH2Np9GW0QPnS6BXqKzZPg6RQipV7LVUUt0hDMd+60LQ+ejKIQ6QEv0UcpBO1OMnhRrqCFBLAj6C1OOnimQcPkIOzIyyid9l2mXNT/q3xckG+uXAhc65GyLPvw6c4Zy7NWabwsg2WyPPN0S22d1kXzcBNwH069dv0ubNm0+oQ58mO4uXkZEzjEBSp3g3RU6BZe+9TGb/UWQPGB7vppwQ5xxri4upq9rH4GFjSImc6D1ZtfUhfAYB/7F/QdXu382eHSUEUjMp27aRqh3rGD7ji3RJC38aXL/oTQIJyQyYcA4uFGL1gtlU7VhPSudUegzKo9egcfh9xr7dOyhe+THJVsfe3TsJ7dlIp9BBqv2pJFTvxqWkUxt0JNTuI9kXpC6xG4n1BzgYSMM5R2LwIL5QkDpfMj5XR8DV4vcnEKAeX30VOIfPHMGQIyHvGww984sn9LM5bQI91qkaoYuIdGRHC/S2fD7bBuTEPM+OLGtxm0jJpRvhk6MiIvIJaUugLwaGmNkAM0sErgJmNdlmFvCNyOPLgXePVj8XEZH2d8zT4c65ejO7FZhDeNrik865IjO7F8h3zs0C/gg8Y2bFwB7CoS8iIp+gNs1vcs7NBmY3WfajmMfVwBXt2zQRETkenr45l4iIHKFAFxHpIBToIiIdhAJdRKSDiNvdFs2sHDjRS0UzgFYvWuqAPk39/TT1FT5d/f009RVOXX9znXOZLa2IW6CfDDPLb+1KqY7o09TfT1Nf4dPV309TXyE+/VXJRUSkg1Cgi4h0EF4N9Mfj3YBP2Kepv5+mvsKnq7+fpr5CHPrryRq6iIg059URuoiINKFAFxHpIDwX6GZ2oZmtNbNiM7sz3u1pb2a2ycwKzGy5meVHlqWZ2dtmtj7yd494t/NEmdmTZlYW+VKUhmUt9s/Cfh051ivNbGLrez79tNLXe8xsW+T4Ljezi2PW3RXp61oz+1x8Wn1izCzHzN4zs1VmVmRmt0WWd9Rj21p/43t8nXOe+UP49r0bgIFAIrACGBnvdrVzHzcBGU2WPQjcGXl8J/BAvNt5Ev07G5gIFB6rf8DFwBuAAVOBhfFufzv09R7g+y1sOzLy7zkJGBD5d+6Pdx+Oo699gImRx6mEv1h+ZAc+tq31N67H12sj9ClAsXOuxDlXC8wELotzmz4JlwFPRR4/BXwxfk05Oc65DwjfMz9Wa/27DHjahS0AuptZn0+koe2glb625jJgpnOuxjm3ESgm/O/dE5xzO5xzSyOPDwCrgSw67rFtrb+t+USOr9cCPQvYEvN8K0f/IXqRA94ysyWRL9UG6OWc2xF5vBPoFZ+mnTKt9a+jHu9bI2WGJ2PKZx2mr2bWH5gALORTcGyb9BfieHy9FuifBjOccxOBi4DvmNnZsStd+PNbh51r2tH7B/wOGASMB3YAv4xra9qZmXUBXga+65zbH7uuIx7bFvob1+PrtUBvyxdWe5pzblvk7zLgb4Q/lu1q+Dga+bssfi08JVrrX4c73s65Xc65oHMuBDzBkY/dnu+rmSUQDre/OOdeiSzusMe2pf7G+/h6LdDb8oXVnmVmnc0steExcAFQSOMv4f4G8Gp8WnjKtNa/WcC1kRkRU4F9MR/fPalJnfhLhI8vhPt6lZklmdkAYAiw6JNu34kyMyP83cKrnXP/G7OqQx7b1vob9+Mb77PFJ3B2+WLCZ5Q3AD+Md3vauW8DCZ8JXwEUNfQPSAfmAuuBd4C0eLf1JPr4HOGPonWE64jXt9Y/wjMgHokc6wIgL97tb4e+PhPpy8rIf/I+Mdv/MNLXtcBF8W7/cfZ1BuFyykpgeeTPxR342LbW37geX136LyLSQXit5CIiIq1QoIuIdBAKdBGRDkKBLiLSQSjQRUQ6CAW6iEgHoUAXEekg/j+qpJXmctsxZQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(np.abs(out_rfft) * 2**(-Q_fft-Shift))\n", + "plt.plot(np.abs(np.fft.rfft(out_window_c*2**(-Q_in-Shift))))" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 157, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAD4CAYAAAD2FnFTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABbz0lEQVR4nO2dd5hcZdm47+ecKds32XTSIaGFTghdQFoANYjoDwtNFFRERD8RLIDYQL5PPlHADwEpIqCAAlJCAFEREAKEkoSQEALpbbN9d8o57++PU+acmTM7uzub7Gbz3te11868p71nd+Z9ztNFKYVGo9FoNPkYAz0BjUaj0QxOtIDQaDQaTSRaQGg0Go0mEi0gNBqNRhOJFhAajUajiSQ20BPoT0aOHKmmTJky0NPQaDSa7YpXX311k1JqVP74kBIQU6ZMYf78+QM9DY1Go9muEJEPosa1iUmj0Wg0kWgBodFoNJpItIDQaDQaTSRaQGg0Go0mEi0gNBqNRhOJFhAajUajiUQLCI1Go9FEogWEZkizuS3Fk2+vHehpaDTbJVpAaAYlqazFX19fTbn9Sh69+bvMfmB3mlpa+mlmGs2OgxYQmkHJdU8s5vd/eoDn3t1Y1nnmtD8IgNWpBYRG01u0gNAMSvZZcTsPJ68gseo/ZZ3H0z9050SNpvf0i4AQkdkiskRElonIZRHbkyJyv7v9PyIyJbDtcnd8iYic6I5NFJG/i8giEVkoIhf3xzw12w/jU8sAqExtKOs8tvcR1wJCo+k1ZQsIETGBG4GTgD2Bz4rInnm7nQdsUUpNA64HrnWP3RM4A5gBzAZucs+XBb6tlNoTOAS4MOKcmqGMu6CLSL+eT6PR9Jz+0CBmAcuUUsuVUmngPmBO3j5zgDvd1w8Ax4rzzZ8D3KeUSiml3geWAbOUUmuVUq8BKKVagcXA+H6Yq2Y7QbwFvZ8EhEILCI2mt/SHgBgPrAy8X0XhYu7vo5TKAs3AiJ4c65qj9gfKM0ZrtjNs55eYZZ1F4QgYW9nlTkij2eEY1E5qEakBHgS+qZSKDEMRkfNFZL6IzN+4sbyIF83gQdwFXYzyPqK+gMhmy56TRrOj0R8CYjUwMfB+gjsWuY+IxIB6YHN3x4pIHEc43KOUeqjYxZVStyilZiqlZo4aVdAQSTOIWfXc7XQ1rY/cJng+iP4REDqKSaPpPf0hIF4BpovIVBFJ4DidH8nb5xHgbPf16cCzyvnGPgKc4UY5TQWmAy+7/onbgMVKqV/2wxw1g4y2pk1MeO4SFs77fZE9+kdAeNiW1iA0mt5SdstRpVRWRL4OzAVM4Hal1EIRuRqYr5R6BGexv1tElgGNOEIEd78/AYtwIpcuVEpZInIEcCbwlogscC/1PaXU4+XOVzM4SKU6qQEymUzkds/EpPrLxGRrAaHR9JZ+6UntLtyP541dEXjdBXy6yLE/BX6aN/Y80E/xjZrBiLIs90W08zhoYrJtxXsb25g+prb31/FMTN71NBpNjxnUTmrN0MXynuiL+AaCTuo/PTGPjhs/wsLlq3p9HSWeBqGjmDSa3qIFhGZAsAMaREtXhsb2dGi7uGGuIia7L/41+xrLaV/8VPnX02g0PUYLCM2AkDMxKf7np5dy98/Pz9vBNTEBdqwSAKurvQ9Xck1M2geh0fSafvFBaDS9xXKjipSy+ZF5uzt6h7/d0yCUGNixKgDsdO8FhO0LCK1BaDS9RWsQmgHBM/lIUR+EM66UgoQrIFJ91yBsLSA0ml6jBYRmQPBMPkpFL9xeFJNSNsQdAUEfNIjc9bSA0Gh6ixYQmgHBe6IvqkF4tZiUjSSrnbFMR6+vo7SJSaPpM1pAaAYEL7O5aJXVgInJ80FItu8CQkcxaTS9RwsIzTal/a3Hydz1KVTWzaAukihneBqEbWO7FV2NTGevr+flQWgNQqPpPVpAaLYZ6axN9YOfJb78aawupzivFMukVjkfhFdoz7R6r0F4aAGh0fQeLSA024xUqst/nU47iXHFqqzmfBDKFyIxqyty3+7RGoRG01e0gNBsM+xMboG3S5iYQlFM7j5xq/cmJp0HodH0HS0gNNuOgLageliLKWhiqlDlaBC6FpNG01u0gNBsM4JP8bblmJiE7vMgUMrXIEz6Xi5Dl9rQaHqPFhCabUbQ35CLYiq6t3tMzsTUl/rvXpgrRRLyNBpNcbSA0GwzguUuciamEmGuSgUK9/XeTJTLg9AmJo2mt2gBodlmRGsQpZ3Uyt+nD32lvTyIraFBKAVLnwbt39AMUbSA0GwzVEiD8FqNdl+sD2Xnmgf1QT74bIUopnUv3AP3fIrVT/+m38+t0QwGtIDQbDuCEUtuqY2iiXIBE5NXjqMcE9PWCHNdsfxdAD5cvrjfz63RDAa0gNBsM+ygMLB6ZmKin5zUWzMPoljBQY1me0cLCM02I5iLoKwSeRAE+kGU44NwBUQxTaUsPP9G/59ZoxkUaAGh2Wao4CJdwgdhqFyxPk+IGH0wMflRrltTg9hqZ9ZoBhYtIDTbjFA2c4kwV1+DoH9MTJlslu/89Fr+9dZ7fThLMbRo0AxttIDQbDNC1iRXgwg6noMCJJxJ7R3Ye2OOnwfR+D7XZX6G+fBXen0OjWZHRQsIl8/97iUef2vtQE9jaBPMRYjwQdgBAWEEO8q5GoSRp2088d/n8sKzj3R/SVdAJNNNAIxVG/oy8xJoL4RmaNIvAkJEZovIEhFZJiKXRWxPisj97vb/iMiUwLbL3fElInJiT8/Zn1i24oX3NvO1e17bmpfZ4bGDKkREsT4r0PUt6KRWRXwQJ7U9xGH/PLPba3pGIMNKOZeVWF+m3u25NZqhStkCQkRM4EbgJGBP4LMismfebucBW5RS04DrgWvdY/cEzgBmALOBm0TE7OE5+42uTG5huu3597fWZXZ4go5iiTAx2YGCekZEsb6ggOhpC1Gvo5xpOwIiK/E+zLz7c2s0Q5X+0CBmAcuUUsuVUmngPmBO3j5zgDvd1w8Ax4qIuOP3KaVSSqn3gWXu+Xpyzn6jMyAgfvy3RQXbf/nUEv48f+XWuvwOQ6g5kGduCpUAD/ogcuW+wRMQgWqwPYxK8kxMngZh9aOAyF1Em5g0Q5P+EBDjgeDqucodi9xHKZUFmoER3Rzbk3MCICLni8h8EZm/cePGPt1AUIMA+NKdr3Dxfa+TcQu83fDsMr7zwJv+9qxl8637F7BwTXOfrrfDEvAhGBGZ1FZg0TdCiXJuy9GABmFZPS3f7QgIr9mQZfSngNAahGZos907qZVStyilZiqlZo4aNapP5+jKhG3bTy/ewMML1jD7f//JprZUaNvmthQf+/XzPPT6ai764+s89NoqvnL3q1zx8NtF22dqHMIaRGEeRNhsFGFiUtERTz1pBpSwnX7W9tbQIDSaEix7+Qneue54sulA06unr4L7Pt/jczRu3sg9v7mSD1etDm/IdMJLv4VMXxpqdU9/eOxWAxMD7ye4Y1H7rBKRGFAPbC5xbKlz9hupzjamylreV+NC4+9tbGfmT57mQvOvrFEjuOjenXj0jTX+dgV8609v+O/XNHXyqzP2pzrZf47QoUTIhORqCxJa9AMahFLOA3owiqmIBtG6ZRN1I0ZHX9N9BqpwBUT/ahC5q2g03VH7xDcYozaw8NXnmHHobGfw+eud320beXT+Unj1DvY48UtM22sWtq247i//Zt+dd6Ljxds4aM5X6frjWXy+/VVW3/lX5ps7EZs0k6nZ5dQv/5t7kTEw45P9Ou/+WMleAaaLyFScRfwM4HN5+zwCnA28CJwOPKuUUiLyCPBHEfklsBMwHXgZZ2kodc5+Y8y/fsDDib/xgr0XK9QYrsnmLpUgw3fifwJgtzcOBhIcKEvYSTbzzKYDgAp/36cXb2C/q59i3iVHMWVkdcF1fvHkOxyz+2gOmtKwtW5lUBPMpDaUt8CXCnNV/h4hE1Ng346OlqICwqNKuRpEPwoIpU1MGpe2VJYf/OUtLjl+VyaPcL77i9a0cNeLK/jxqXvRJUlQsGnhc3zYuZrhz19FrXvsjTf/L0e2PsY+xvvwwP3wANxddQ7f7biDzW/WMkJaee2WeRwgS3jHnkhduoVd2UDduy8AYCvh4T3+m0/2s3CAfhAQSqmsiHwdmAuYwO1KqYUicjUwXyn1CHAbcLeILAMacRZ83P3+BCwCssCFyi3cH3XOcudajJa6aewsncw2XwFgsT0JA8U+xnL+be/l73eU8QZJMvw64ZR3ftHak29lvsqp5r95T43jKXsmGQsuf+gt7j3/kNA1LFtx03PvcdNz77HimlO21q0MapSdEwaGF8WkgpFJOa0gWKwvSoNQQXNUt3WWnPNUqi4QUEair9MvIBiB1dKV4ad/W8z3Tt6D+iptxtrReOXtd/jaos+z5t0xTL7i7wDc84ffcUbbPcyf8TB7Wo0gULNpAZNW3Rw69jNtdzPKaOb9Xc5k1LI/UyNdnN1xBwAjpBWAA2QJAKtO+D/ueCfG9IpmjllyNb/nE7yUnYb1diUzGzuY2FDVr/fVL7YQpdTjwON5Y1cEXncBny5y7E+Bn/bknFuLLTXTQ+9/lbjJf30uc/3XhxkLOdRYxPv2GJ60Z/HV2KP8xbiCsbIFcATGpdkvk8oO4+EFq3lpeSOHrv8jq2v35VOfONU/zwvvbeLNVc185ahdtu6NDTKCGoT4SXPRUUxGIA/CExBmKCQ2GNFU3MTjLeKV4vTA7k8Nwi9ZjuKJt9by71df4xpD+Plpe/ffNTTbhJb1H7Dx7nMZe969VA8f0/MDNy2FTe9iL1zArsZqsFdjdbZgJGv4acfVYMBdz97JodIOwLSut0KH2yf/klGPfwvLSDD19B+zYsN/8bsn5nLJuktprd2Z5pYWbszO4dvJh+nc7ZMcd8ThHHcENHWkufi+YXSks/z84Mnc9Nwy1rd0DU4Bsb2zuSq3UF+eOY8jjbe4Pns618dvYi9jBT/LfJbDjEWcE3sKgB9kzuVle3e+GnuUsbKF/8uewgY1nG/EHuLRxA+4cNU3+OZ9jUyTNfw8eRMt6yp5csnhXGw+yL/svfnc75xrXfCRnZEdKZY+ysRUJJPa0yCcBd6NYhKFsm3EMELaRndO6vxS3P0ZR+B1qVMKdk0v5vnkxfxm+UWAFhCDlWfn/pWqugYOOfQjofF3H7qamW2v8sqTt3DQZ3/Y/UmaV8Gmd+mceBSVv5kJwOjKg/zNrdfPYu3oI9jDfX/QuvvBgIWJfZmRfiN0KmP/z8O/rsPc5aNQOZwpk4dzyVcugOW7UTvpUO759yp2jRmMPOQXYOaW62FVCe784iz//Zz9dtoqa4kWEECT2cBD1hE8bB3OP+x9udc6FoDz099igmzkZbUHT9iz+L1cxzRjDXOtg9hEnX/8w9bhLFJT2KJq+GXit9yT+Dn/sXfnYOMdAOqkk+se/AevVDzIJTzI9zLnMYJmNrcfx8ia5IDc80AQ8kHYhWGuwUQ5idAgwMm2jhlGXhRTdzkRYYmQ8330jN/9czmH7jKCvcbXF2yTwHVj2TYAPt/6e+AnvbqGZtvx0RfPdl4c2gwdjfDYt+GU/0FlHQ0z24NM+/RvjyHRuYF/n/wvjnPHZnTO5xXZh4PUmwxLr2XYqj/7++9hfAjAlqmnwBJHQDxVfzrDdzuSg+IV8NUXIJ735L/z0QA9tjJsrQdNLSCAVNbm0szXCsbXMJI1aiR7j69nbXOCE9uuZSTN7DZtGrsLnLbsKrKYLFJTOGLaSB5ddhh7Z9/n3NhcXzg8bs3iROMVfpf4pX/en8VvA+CKu47iqq+ciWHsGFpE0AcRZWKKzI4O+CAALDtLjHjIxNRdv+mCEuF27wTE8U/P5s65J1Bz7P6w9GmmXHBvwbkEhS0mAMOlrVfn1wwc6Zd+R2LhQ6Trp2JYaXfQMQU9s3g9m9vSfOagiQXHJTqdel51/7zSHzNQNE84mkdWVHOYsZCR0gLAs9Mu56PLfs5yeyxTj/wsLPkZi+2JHHvxrZje975q8AataAFBOJM6iocvPJzVTZ0c+Yu/o2rH8YcvHQzA5Q9Vcu/LK7l6zgzOOnQKd/z7ff725ihWrxrJD+L38IX05aidj2bVihs4P/ZYwXknrnmC9zefxjOL1/PR3ccwbXSNv00px6n98X12YtKI/rUrDhTBhdx0n+SL5TYEDiIkRLIWJKN9EH99fTUja5IcMX2kv03yNAjpRphEMcVYz5XG3fDPuwun5s1B2Vu134QGnluygU3NbZw+a+d+OV97yxbeXt3GwcCiD9YQTzt+RNqcxf+VP1zBLrKGFTVXMuLJr7J6/Mns/pkfhWyUs9qepZka6nEeCsbteiA3VXwSa2w7n/zXxwDY45QL+cpdU9l1/Ci+NWESdxz9AluaW9ljO3ko1AKCXKLc5BFVZC3F6qZOTEOw3IXHMIRx9RUcOX0kFx4zzT/ua0dPY8m6Vj62z04AnHP4VM45fCpfvsNk9pK9eUdN4qmPz+DF175G9qUniEluAXzD3pnd5UNWrNnAhHlf4Tf/PpkzP3c2Kxs7OXHGWC576E0eXrCGJ95ey98uOpLlG9t4bslGvnjE1G34l+lfgolyBoVhrnPfXsNBiZ3Ye0J9wMRkh76UlvvUHtI2bIt01mbDg9/hFTWGI356vb8pv5Oc9MLEZFt2QSaplUljxhPuudw52NmQf6UzbfHbf7zHhcdMIxHb7nNRBwXv3f0Nzos9wWruZPysU/t0jq7ODj8ofd3yt/yuhla6k/rUegBiHU41hsvi9wHw/v1nUssaapoagR/RtnkVNYFzvjfyWA7Y9DAAU2YczI1HOrlUS5d/EqP5Q3YZXstvL/5//v7nHD2jT3MfKLSAwCm1ETOEf3znGJRSnHHLS5x3xFTWtXSxYGUTADHT4O7zDg4dN7Ghioe+dnjB+S49aU8u67R445yDqK+Ms+tJR/DXFw7hCONt6g84jVhlHR/+ZyGHZl/h/j9fyYWxlxnZ2cynbt4VgKvnzODRBau4LHYf/2w+BjiSz/3uP6xr6eLTMydQW+FE4vx72Sa6MhbH7tGLqIuBJOSktgrG7n7xfa5+oSsUBiwU+iCcw4ImJpsFi5cEtLScgMhHevGkb9nZAgHR1rSR+lFu1RfPxGRnQ9rP755dSOz5/+H+yu9z5hG79vh6muJ81FwAwOplb/ZZQLS1NPoCon3zGszOTQAkuzYxzGp0N2zg9/9+n9mMZBybmIqTGDuKZpr/+wA2ZCsJxjxWTD+S9U3zaZ18HNMacom20798R5/mONjQAgLHxFQZd2zIIsL9Fxzqbzvr0GJHFWf6mFoe/OphobHvZb7ECGnmn584FxHhyPgNDPvHM5xpzgNgV1nFBNnAFFlPYmULyyucxjbnZJ/i1RWfZH1LBzV0ce1DL/DDk6fz5ArFxfctACjIq/jX0o2YIhw2bSTbknWbGnntHw9z0mnnRDrNghqEZ2IKmoD+nvw292WPBk7JJaHZdkiIeKGldp6AyCxxwpFbqAmED4RzFSAgmHqAlc2QHxTb1rwpICC8bHArJCAOWPl7joj9lec/2BWO+H6Pr6cpjmfGIdXao/2tTJo37r6U8TM/QfvzNzP1/D/Q0dLob892tWK42kJt5yrqVSsIHKTe5u+P/4zhsWa/1NZb1Yeyd/uLJNveox5IS4K2iR+l4cMnmbT7TGpOWMiYIRqNqAUEkIyZjKmvKL1jGXzv1JnMXbjOXzgrp30E/uFEOL1g7clh5iKeSFxOrXQ6aYMuFaQ5/7dzuch8hm/FH4B3gXfh4q4/+vu0dmW4/5WVfPHwqRiGcOZtLwOFgmNrs+SGOZxsvMnaWR9h3MTC6IvgImqqwlIbAGfEnnPGfcER3u6V2AiamGxbYWacTOk2KkMCwlA9i2J67M217Da2hmmja/0xK1u4b2dgkRE/EssKRWjF3CRA0y0QqMnRuKWRN597iKNOPa/HkTddne00uAljPRUQbz79Bw748Pfw4e8BWLHoZdLZgKmyq42Krs0ATM6uAIGUipGULJe6lRMer5rD8soZzJo+AV560T920/D92enMO2DZM9RM3r9H89le0QICuOyk3bnspN236jW+cMhkvnDIZP99cvw+/utLsxdwLbdwuJlLFr8u8xnaqeCq+F1cEPtbgZP7WONVDjUWsbt8yK/+2MWt71YwbXQNbakshxiLsJQBbFsBcZThVLy10kWKhgUWUdMt3Z3/hF9wSF6Yq685BDUI2/LPnSQdOr6nGsRN9z7IOtXAq9fkyqxkA7kWaWWSEItUy+bA5Nx7sLNhQectfN1meO+YvHvrFzm6/e8sm74P0/aaVfoAYMua5XjGGyPdQw0iLyKuq63Jr84MsPqtf3C4WhEqyLs0Np29rMX++9F7HM7JH7+ARQteJEjN4edDvBL2+FiP5rI9oz1oA4Vh8MX0f/G59Pf42bmncGX2bBbZk7GV84l9zt6PM+Y4LTA84fCstZ9/+G2J/+FMcx5HmAs5buUNrKj4HDSv5Ot/fJ37Ej/hz8mrI6vLvru+lb+/08O2m0rBhnd6tKsVCGG1smnHFNT0Yd7pCk1MpUw+TqJbYaMgS4VNTL6AUGEBkZ8HUSyK6bHk93kyGW5cqLIZ/3VCnOPS7QENQgVMTEFhYDjmSmXbsHQebFxSeMFUK7x08w7XS2J4yrHpZ7tKL/SLln/Ay28uonXDCn8slikdRrz61s9Rs/IfobGuzavItG/x35/K3xklLSyZkqumur423JMsOcwRSxN3O4DfJ8/kXyc/A198iroDTy85h6GCFhADSGKPk5k882Q+suso5hz3UU5O/5zb9r6Hx2s+xexjj2XylFxI35+yR/HFzKVM77qLJfYEAGanr6VLxTlELQDAev+FcH2gjvzFEk64/p+ce8crPZvggnvgpoNh+XOh4c5UloefXxBa8DOZ3GJqZdJ0PfUj+N+9oSVQ/TZohnE1iGICIliLKZRt7T7Vq8DToLJt/9wVhMuz54e5dieQRkm4v4dlZQr2sQKLTM4Hkc3TFozc3O85HW4sfFLOPvE9ePIy1NJ5kXN5f9UaXnjt9aJz7S3PLF7Ph5s7+u18fcfTrkoLxrF3Hsashw6lo7UJcExAsWx7t8d0tWxm/KrH2H39o6Hxhtd/TaY5/GC0cLcLSR5whv8+O8rJgE8rk4fipzBmxhEA1FYmOffy33DkrJkwKRyoMtTRAmIA+e2ZB/p1e07Zx3laOeLwIzn5v27nouN2p7Ih1yNp9JQ92Ht8PecdtRunpq/m+NQvuPVbZ7CB4f4+i996hY8bL/nvt6x+t+CaSdIMp6VH88uuderG2GveDI0/ddfPmPP0USx4/T+5fbM5YWRlM6x7/UkAVn7wHgArnvw1suQJfx+vO1yxJ/qc5q9C5TLsqCgm2/Kjk2Jih8NpVb6JqdCvUKyPR9DPkVXOV8XubMrNMaAFhXI4xHC3Fzcxvfv+CgAWrYxuctVy6yc47JGjsaz+MVONvvcE/vjLS/rlXOXgBR9Y2ULhm0+Dm3SYTTmCrVHqSWS71yDWrVgcOT7JXs3Yxb8PjWVH7snYyXv4740ph7HYnsgPqq/ktO//kdENgzeBbVuhBcQgYedRNay45hT2GBdwscZyZThStZN59KIjuOyk3bn04wewLjmFnUdWY9TnhMixxmvc4FaaBehYswilFH99fTXprLPQ/Cv5TV5OXtijOS3c5CyQby5fFRqf1PhvAMwtuf7d2XRQQKTptB0zS6qtCbpamPLSD5jx4R9yt+YtrkQLCENyeRChvtURTmql7JB2kkrlfCA90SCKLcJ2YBHzclhUKrdAeQJAlBXWIFwTE91oK+mMcx/5zao89mUpAB8uj17wesvexgo/tr8/SW9ZzZr/Ox3V1bOHDs8/k+3qecZ5V9M6AFqMYSTtCC3o2Z/Az52M56bVEeY8l8msoZNcNd9k/Wgq6kdxfeZTLLYnMX367pyUvpYjT4ysK7pDogXEIGdu3emsVQ20j9rPHzv38Km8ddWJiAhjJziJc49Zs9jDCPfNbt60lovvW8A371/AEw/9Hq6qZ7Q0ERfLFxjdYZmVAKzbtDk07ldX9RZCIJPJmXbsbMbv/Txt7hfgmsJyBZ6JyYxYREONhZRCBTOp3cghFSyZEfBBAHS1B+3beQIiQiBlMoWmOCjS1jQbED7uHAzbCpf7EE9AlC5DXiyQ50PD+ZttePel6B0GCU/OfZSd1s7jxf+80KvjrDwB0dyR4ZnF6yP3NRqXA9Aeb/AbP4X453WQaoF0B6kNywo23xg7y3/dZOQ07up6pwPl8JN/yKe4jgkjallxzSl8fN+denUvQxktIAY5j437OoemfoNVV7jIAsQapoCZYN70K2lXjsZxUNeNAPz99Xd4881XAThp0aWh4zq7SrcntNJOmGa2M+xQ9J7Wxch9fKyAD8LOpkt2bvOjmCIW0WBVV5WXKOf1gQhqDCrQlhSgqyP3NGvkCYgogRQUbqF5RJhBjGwudNXTRhwTU24f5a76xUxMb869g4TV4e4b/RVsrHQi3qx1PQsS6I6gCa2/2+J2tLvhxe3d+wb863smplR4/0vvfYEb7/oj61sKP5dVbR8AkEqMoFJ1QDYNUf6hlrUkNrxVMP61y69nVWwSAO3xEf54bYOTYHrO4VNZdPVsYqZeDvPRf5FBjte+tGi9qMMugi/O5X/POoKjU7/k06kr2EQ9lhK+F7+X55Lf5vHE5SQIPw2nWh2t4J/vbqSlK9oebLuRJiNUU2jcs/dng5FLQQ3CypTsu+BFBUU90duhvhF22AdhR/kgwhpEqqM1dHyQqOtZRTQIOyLr2rACC5gnIMiGNAhxF33DKhQ86z58l31evJg9U2+4+0ZeGsv9akq2+1yK5vY0LyyNfvL2zxUwx7Vs2dzNnr0nLq4WZZV+4ICcQLTzBMQZa6/loeRVdG5Z6491ueagURmn23C2ciTVqoP0rw8mdcPBdGUsnng9Z+Zc9NKT7N/+LzbGAq2DL3oNMWOkqh2tYEtAg6gd3rce9jsSWkAMcj65v+NjKNqmtKoBxh8AwCmH7c8ranfev+bjtEmuYsyexgcFh6VaN9ORznL57Y9x768uK9gOoNzKlvX2lrwtzqIbFApBJ7WjQfSsc1spE5PzzFkY5hrSMvIERCYoIHrgg8gWyduwI55SjYCJKahBhKJyXNObZAvP29kWjpSSKDMWOWe6ZKO1G4+7bvkF0/9wEB3daITZgCbUtGFl0f36Qly5nQEj7rU7vM+Wx66WE8yQbs9pf2k3j324asZSgl09GlMUieblJJvf408vvUfnQ1/39997/vcAaN73y7kTj3ASNsdN29f5XV/pbzJjuvNfKbSAGOTMmtpQ6LwuwlWfmOFnT3dJ95nhmfZG2rqy/CV5JRd03grthU+WRtqxEyfyk8/cxdjO5J5ug1EpdjZDT4tVmlEaRPDJ3Q6HuaoIH4RSlrOfS7oz4EjONzFFJOZZAeGWCjjb7YjF27RzC7YEBURwzq5aEKVBZLrCGoHKpnhrVTON7fl/Yy8JL1q78efTtJxR0kymq3gIazYTvKfuz9db4vRMkOWjMnl/B9dv0xEh3KskRRcJjNrwE/+wd/7IaebzobEF4z/HtFO+WXC9qkPPB2DCxKm8XnVYwXZNNFpADFEStvMFvD97dOR2q62RjrTFaGkCoLWpUECYbsx5TIWfpD0BoTK5p8agmUZZaeI9NDlE2elVqIVoXrlv38Rkh/cPnCcbMF8UCojuTUwdrbknfBUhIGJ2wEkdFBDB67iLXZTZJZsOL+R2NsWM303mb9d/NTTeUw0i4SYGWkX8KBDWIKLKh5RDHFeDiBCGUcRcgSd5GoTnt0m1N/ljwf9dWhIk68JFKSetcUKpW895DoAWVcmIT14Lhok68r9g9jW5nUdOgwv+Bcddyf6XPgFXhTU5TTRaQAxRvMY18+JHR263Orbw/MKc/bapaVPBPl5SUr4ZKKdB5BaF4AJlbljI3p0v92ieUQt2KCIor2GQrzkEn9jzwkztgEaQ3zAoyqSVDcy9sy1nTovSIGKBhdA3MRGOYvIcsWaEgLBShQLCEMVZ2QdC44Z7f0GNhbcegOXhDGEvMTCT7kZAFNGKtrSnWbq+Z6UriuGHK/fwgSCmnHnm+1YUjlDNtLeyYGUTnWmLeCBnJU2CymFhAbGfWsyyukOonbI/s9Vv+O6UB5k40tG05dgfwiFhocu4fSBZi6bnaAExxPntRadFjr/93gfc/MR8/317oAgdbz8IL/2WhFtsLk7+QukuupncYhc0Xey34rYezy/axBQOcw0+nasoH4SyQwl3QcHVWw0iFbCBRwmIuAqamJw5OCamwHW8MOCAeahz4eO0/f5TftKXv2tAmL3+4ZZcDxJPgwiahB48D+76ROh4r/ZUthsBEbyPoPA874a/8MNf/bbocT3B0yCizGlRJFyBZ2TzBKWrdbW2NPL1m/7KN//4CknJaT4ZSVAzYhz5dI53zEV//cHnuOkcbTrqb7SAGOLEhk3gJ5nP86KVqzNjKaFjy3qGSU7N72xphFWvOk+4D3wRnvwulTgCIuYuArzwa3ju2pyJKWD+6ElmbBSRAkKFTUyhYn1eRI4K+iBUngbRnYCICKsNCJRMKvdkG2ViituFGoRJWINREU//lX/+LDUfPI3qCDv8VTp3vf1vn+LkqwTPbXe/8Hq1p7IRJiY7k+LD5+8LbQsKi4+3P8iN8V+FD1q/EBrfp6fEfEFWfJ7LNrTSlsq683X2M7OddGUsFq1xBLIX3ZRqXM3zyYv52HtXhs6RkSTDRoz138+3nT4bVbO+AEBF3NxqfZl3ZLSAGKqc/w/4+A1gmCzZ+Ww+m/kB7P1p2g68kE3UMyK7jm/H/uTvrhrfh1s/yuZ7zvPHqpRjNoh5T+dP/QCe+5m/eAXt48En095gRvoggkkFdmiR9xLl7NATeziKKPhUHqVB5OcCWIGn9EwqqBUVCr1EQIMw/HpSdjhr2n0dFCZp5ZpQmnK1qZwNYVv8uBV/debpLryxEk5qT4Ow0p1hsxvwxh++x6SnL2DtK3+NvKcqUtTSEf573HwY3LBft9cMYng+hW6imI775T85/WYnkS7hmsSSmSYeeuQh7N8eyYfzH/fDeitbnKS4j5vhBMGMkaC+xmm9m1Ix/rLH9ZyS+imTJ22/HRa3B3S576HKTvs5P8Dt5xzkZE4nT8HqzLDhlcc4Rf0TzMD+m50M1NEfPu4PVeIKiDwTU1KlnGJJgUVB9VVARJXaCC10YROTH60UyoNQoQU6qEHk+yDiWGQsRSKWe9q0M0EBEdAg8hbclIqRkIB/w/dB2CHHul8XKrC4Z4mRwEJaV4fvNZOXYOYu1oafaR7xd7UtP5S2whUQUx84EVAh52u2yQlpTTWuDByaZfXSBQwbO4W4ZEmIRVcqRUVFH/uheMK1iJPcshWPJS7nqY0zgY9QodIgMDq9kvrNC9jLWMHaf/6cTvfPN7zrw8jzZI0khiF8OnUF4yZN45efOYz2Uw/WyW1bmbL+uiLSICLzRGSp+3t4kf3OdvdZKiJnB8YPFJG3RGSZiNwgro4oIteJyDsi8qaI/EVEhpUzzx2duGn4CXdVCZONFOZUJJqWF4zVSrQPIuk+BQbNCsFM6t5QysQkrpPaK4OeC3PNK9YXNPGU0CDsfA0iWGgwkBORb2Jqk+pQOfGggAiZmNyn9KC/wovSSXSEk9ryo3ly5y6uQaiOXMRZhSuw8u/TuaYbTRUQ5LFlTzH+nqOYf1cuedJPLOxDlrXhCQjXSd286h22fLgQu3UjWx79AV1dXcwwPuCS+INY6S6SkqFTJRilGhmpHGFmdbb62tZ4tS7yOl5ezW1XfoPrvvwxYqZBfaXOY9jalCt+LwOeUUpNB55x34cQkQbgSuBgYBZwZUCQ3Ax8GZju/sx2x+cBeyml9sHpoXZ5mfPUuMRNg+FjwmU7shiMzqwqcoTz1G0HCtpVuZpF0MSk+hhfH+UTCPebdha/LGZoWyjM1XVkd6pEwVwkb9GLiV1QnC8UjZUOahBhAdEuVVRK2r+2b2LKExC4HeWC5ihvAa9Jh0tOGwWZ0s5+XrRVLEKDaN2Y00IqKNzesmkdW9Z/iDJcA0Hg/zRy1VMAVLat9AV/l1tKRaV7XkDPx71XTwjV33oww28/jGX3fJPhr/6alf/OFQhctcQJilgac/wHNVuc1okVVgtJ15w5XqIzvS3DKSNTVxEnGTMj99H0P+UKiDnAne7rO4FTI/Y5EZinlGpUSm3BWfxni8g4oE4p9ZJyvuF3eccrpZ5SyvdCvgRMKHOemgA7jw4n3W0xRvj5EPm0UI0hCmtJzvTklWFOpDbT+PY8yHRF2ut7gimFT62hKCacRLkCAZFv81c2abdAICETU+H5s3magQrMPZj8l69BdBpOdnra9VN4pcTzBYRXxC9JUEA4DLfC4cQF/Q3c6Zru4h13BURwjo0bV7Ou2VlQowRE3W92Y/jNe6OMwnyMatXuzi1Nwg0+SHc4/8+ulsDcXMHansoWJPEFMexAHkRAGLe6NZo2rs1l8Te7Wdxbhu8FwPgupxx9nd3sO6+LYZnJbrdrtg7lCogxSimveMo6YEzEPuOBYH7/KndsvPs6fzyfLwJPRIwDICLni8h8EZm/cWN0bX1NmLoDPuU3HQJoSkT92xw6pBqA+J8+X7Btn7bnaXjgdNqeua7AB/GPyRfxUv3JfZtg8KlfOaU28gVEvg9ClEXGLc0QLOQWZXrJj7hSRUxMdp4G0Wk6MfSpTldAeH4CbEK9s13BUhla9Jx5jMjrxREr0rfa0yC8UhbBciCb5l7H2OvH0NbWWiAgvIUZAHE0CCPgLK92tb+qbJOvQWTcyqqtW3LfH68c96W/uYdv/fS6yDlCzsRkWCk6tgQc8HHHoazacudMNTqaT3L8PqSVyTAczSVBlpE0Fb0GgNICYkAoKSBE5GkReTviZ05wP6XyAtb7ARH5PpAF7im2j1LqFqXUTKXUzFGjdPGtniC7HEPDd17jZ5nP8hfrcDZVOyp/Y4Srp8OoLnm+Ze+/H3rCBagaszMqVlnkiO4Jte90i/VlxRMQng8iaCZyNAgbg5SKgxXtpPb8GPkCIhiBFcwOJ0+DSMcdzSvVGU4gNFS4SZHXSMjrIQFQGfGkD7mMd/9Yz8TkCh8vzyDY42KmtQBw+ixXSPi8S18PJNK5GoQZEYJanW0m7hZMzLilSdqbcot5q5s4eWPrN7gj8Quai2gRhivATDvFhuWBSqpuL5PKtpzT2WpxniUr6kawxuxZSW3PbGgnSpea0fQ/JQWEUuo4pdReET8PA+tdUxHu76hmx6uBoNF7gju2mrDpyBvHPd85wMeAz6v+rlGsYVRtkgcqPsUlmQtpr3Nam6YTwzghdS2zU7kSBV1m6cxTO91eICCSNSNQsb499QVrMQkKQWH7GoSbgxHyUyhQChuDDDEkpEHkSLtP1Ha2OxNTwK+Sp0HYcUdYeoUJPeFjEM72Ju+47kjY+eGhYQHhOcXTEbWWspl0geBJr1uUe+MKVTPC0V2nWki6wsdymyClWnMmptYt4a/ysqWLiMILc43ZKVpWvp0bdxPh6rtyRgKj3XHQJypraa4qHp66Rer91xvEDaioqC+yt2ZrUq6J6RHAi0o6G3g4Yp+5wAkiMtx1Tp8AzHVNUy0icogbvXSWd7yIzAYuBT6hlBoMjXSHJH//9tG8cNlHWT/mIyyxJ/CXqT/iXTWR1ppd/H1SsZpuzuBgZjoKBERF3QiU2bOKrvmEngfcjnIpHGHjm4NCC7KzQCuEjMQhsCAGK8F6Jigrz6EeMo8FS0YUCAjnb+FFbJlBE5Nd6IPoCck8DcIzr8V8DcI5VzZdaIrKprv8PAh/js25KCDP9xCLKINRQ4cfbOA178m05DSI9ubNoUTIpuXzQ8en27bQuWUdpuuDiNlpMuuc7ndtqpJY2jEf7WTlzE6JTkfoJKpqSVc7SW8r1SietvbnzuEXsbDO6QHdGM8lxHWYruZQOazgHjRbn3IFxDXA8SKyFDjOfY+IzBSRWwGUUo3Aj4FX3J+r3TGArwG3AsuA98j5Gn4D1ALzRGSBiJRXD0ATSX1VnJ2GVdIY34kT07+gqX43/nXpMTx2ydG0KMc8lImV1iDMbLsfD59Wbjht/UgMo29pNipfg1CKtBvF4pmACus1WShxNAgjIACCTmpPQNjZcGhtKAIrYGIKtjUFUAlXQGQ9AZHTIFTISd1zh30F4cXbi1ryfRBiYWczZFKFi3y2q42khIWR0ZYLo42nHX9HZJtOYIw4Wd2ZjhbS6QzSnHMVdrZspnnN0tw8W94n++rdZJ/9GQAd/7MPlb/aDVN5Ib1pKpqcXJokaeJZR0DUSMBBnnY0lMqaeqgYBkB7YiSjzv8rZ33jx3RWOWan9oqcgMD9DMWqhkXeg2brUlainFJqM3BsxPh84EuB97cDtxfZb6+I8WnlzEvTOyaNcByKe4ytY2KD83qlqqFOOskmogXEKjWSCeJ84WNWp2+v75IkCbLUDhsNRt+eP0LVXF0ndUY8DcJZcLKZQKkN23bNUIIlsdACHRIQEgdVqEEQfB+snpqnCUjSERBe3aliYa690SAqVVfIDuY97cewsJVgiCKd6owWEJ2FFUkTXTnTUCLtPIdV2OFIqS4Vp0Iy1IsjOA54/fusWHAT5rBd6VQJKiVNpm0zzWuXM8w7KNNJ7FG398JHv8cw5Qgfz3wVVykaUk6IalwsKrOFcxtmOdurqusxqoa7x2fYd6JzFeV+1joTua5vXn5ErHoYmm2PTkPU8Il9d+LPXzmUOfvlHIdNOPZ2q4iAaI6N9l8n7E6UuyinSJJVBrV1w6BIO81ShJ7G3af0jK9BdLL8vSUc/s5PQvuL66TOSDzkgzACYbRZ8TSIaB9EJ0kkYI7J90EYFY65w9cgvKJ8Eq4XZaheCIg8J3PczmWvd+BkN6dTXWQiTEyZ1saCMe8pHaAq42gIVSp8bIsUmg2nqNVUta/kXdN5Nsu2N9LeGEhay0RHW9VmnTlMVasYSROrxYmIq7Pym0zBKDdSqbK2nli1IyCCpeSV6+MJNpvyBESytkjDLM1WRQsIDSLCQVMaQsXOmpSziKgi0SNddVP81wm70686mpIkLVKNYRrF+2mWIJwE52RTZw23FES2i81vPRWev3Ke4JUYWBL3n2rDkU6QFTciJs8E5AmUDirDRefySm2YlY6w9Kq/BrPAQ8IkolVpT0moLmzLwhRFuzhmvnRna2TXu0x7oYCot3Jjte4iXZ3nxms1ov+nI9Jr2FI7nYwyUR1b6GhyzFWWklBCXzA/ZBRhQbCifhbgdIEL4tWiAkhW1pKscbSEYCKgJ8q9lq121Ug/2bCiJqdVaLYdWkBoImnCfcqsjI4eMXc9jneOuon5w06kQnWBlSWjTLISo01craPPGkTQB+GYj5QRI61Mx3GavwC7jmyVZ2Ky8wSE5WoQBU1zrDRZZZAyKkL+iwIB4WoQXkXUYBZ4yKzVCw0in4SdIuM6zVvNYYDjMLYiBES2PeIpXTXSoRxta5i7SCfy/BQdZvT/tIYO2kfuR5tU07R6CaMX30lGmWySBsxAee6OlkLBBE6tKsbtF7ltM841u0ggZozKekcjiAc1CO//ZZhwySKMi171uxlW12sBMRBoAaGJxNMgxHUmAqQueNF/LbEkux/zeezkcMeObmfIYmIR8xPK+iog7AIfhEKJQZoEku0qsPErpdwoJoOsJPzIGjtvgc8ajoBobu/inO/9hPv//Y57QXfukgj3Nci7TqLS9UFkc1FMGe/JOLBvOQKigi7fhNURd8wwHS3RAsLuLBQQpigaDdd8E1HGBCAVj9Yg2lQFex57Jm1GHR8z/8MkYyNxsUgbFVSncuam1i0baKWq4PhOKkhW5sxXrSqXB2O7jha7zol4r64fCYQFhF9wUUyoHw+Vw6hwhVt1nTYxDQRaQGgi2eJqEGZV7mkzGXhteDkOiRoqSUE2TVZM2mP1NPuZ2X38eOX5IBz7vpCWuFP/KW/hV66JycbAkpgfWZOfPmO7eRCdaxZxR+I6Rj/3HecaVoYMMbJGItx/IU9AmHHXRGWlsS0bUxQZN84jpEEUcVIHzSyQS9wLUq/aaG93nMrphLModrVsxsoUCgginNQA7bHImpk+2US0BrHeGM3UnUbRlRe5ljYqGJ5e679vb95MVE5sShKYyZxQ2GzkFvXsqf/H2hN+S9WFTiJf7XBHQFQYub9b5zjHPNU+4XB/TH3hL6zb/Wwqa7u/J83WQZf71kRyf/YY3rfH8fnKwGKRyGVVGzFnsZSkU6uJVBNZ4lSc8Xvq4m7Jiz76IEKmIVeDQMTRIKxUQRlur2eEEgPbSJBwQyzzNQhPQEjK2T7FWuFuSJMhhmUkMUMmpjwntZlzclt2FgPISAxIhbSaYhpEh1SRINfis41K6gj7BwxRbFi9glGAVTUSWiDT1ogRK6xcaqSiBURnogG6ibS1ktFP49mY8/+tJeyQzhgV7JJ9L3f+ls1E/WezxDDiOQHRFh8JaSf3dfL+x4f29XwQyRFT/LGjjv8k88bsy7H77OyP1exyMDW7HFz8ZjRbFa1BaCKpHbszf7GPJJEM9AmIEBBmhaNpVHVtpMOoZtedd2bKRMeMIH00MWUDPgJx+0EoN0LJsFJ+qKuPyiXKWUY8p0Hk+SC8tpZ2lxui6XdDy5CVGFkzGWryo2wLK/CUb7qLtG2lfTOQl1sREhCB8uiZgNbQKeHSI8H3i+s/wrMznByD5nVu6fUq5ynb6tgSyvD2iKejBUQmMTw073xUVfTTeLzKMT0NG54TIG3TPpELEHBJtW32CxWCEzYLoJCQBtGZdErfbFYRkXDxSvjMXcTOesgfMgzh+P12wTB0Z7jBgtYgNJH84UsH8/bqZhJdgfaTZu4pVlxzi7jJY/XZTXTGwnWb+lqBM9SdTiknl0GEtCQdH0FeDwXlZVKLgTLifuhkKJkO/LaW0uk4Wf3OeHaGLDEso4K4asrdo22RxfQrq3omJmVlyLoCIuvmVgQFhBnQXDqlgjjOfLuMaoLtLzqNKrCd3ID6037J8PaNsBC6Njn1i4zqBmwlqM4tWBFlS7xktAJiSVIkqCIsVLy8CrOIgJgyzjENVnzubmhdDxMOpAawrgsXXcy2bQ41kWqTKipoRmEQS+Z8E1b1GGh1oqYiXcx7zoka1QwitAahiWRkTZKjdxsdadoAiMWdp0oj4fxuUE2kzHB8/Ybpn+HG7Cd6fW0VqqWUi1ByHNCpwiY7gSgm20j4mkHI2U2ugY7Z1eT8xhMQWbISw4pVhstO21msQNs9wy0dYmWzWG6Wta9BqKAGERAQ5J6+M0a49EiXkVtMzXiChrGO5mW7neAwE7RKNdLVTLZlfYHPojIbrgzr32csSZrC/1vKHTNrRkYeZ+z8EedF/QSYcKA/bpmOVmApwVbC+2+9SEJy9+hV/LXFIJ4I3JMrLKwKHYG0vaIFhKZbYq6ACC5mAIb7NG0mnMWjXtpJ5zk35xwwlVFzfpYLme0hlWv/478WtxAfYrhO5DRGJq+xTSAPQpkJEm5sfX6Yq+eDiKebnLn7AiJNlji2WRESEKKyZANfkZjnW7EyfiSTl3wXdFKbAWHhJfgBWHkKezooIGJJEvVjsRFiLa4GYcZolxrMVDNGy+qQ0xegynZrKBF2fmMmSUthHayUO5asLVyw39v9K3DQlwrGAeyYI+Q2SwObZRhnxJ4Lbe90K/4qhERFzsQ0crrjdJ4w+5uR59UMfrSA0HSLuHkQL4w7MzRuuiaPoEkhGw8LCMMQPnPQRL8bWE+Z/Nq1gXeOiUmJgWUkidmpUEw+uG1JXT+FMpPE3dh5L4rJs8d7GkQy6/kgLL79pzfY2NSGJTFUrIokqVz0kxsZlbtn19ZuZfyKrpbfcyH3RB0UENmAULDzalNlAya5WDwBZpx1iclMTzuVU8VM0GHWkMi2Utm5lpa8vh21yhEQbeSVZI9VOGVF8kjjCIjK+sKy+J2j9ikaVOCVbW+NDac1/1rga45KDBrGTPLHzTG7w5VNJPf9VOR5NYMfLSA03WJWj2TvrltZODX8dGnGCwVEsbIclQd8ps/X90xMIFhGgpidLhAQCoXhFuuzYxW5vtHuou0t8p6A8EwzcbJ0LHiQ483XsCWGildQTzun/vffnGvnmZjMWM4Hody2pZZRaGIyA/Z5FYj38TQYj5CASDjnbhx1UK7tphknbVYTz7bTkN1AqibXT6tdVVAhjtaSr91JLEFawkI5o0z/XqqHFQqIWKIwr8Gfd8zZ1pFoCHXJ88/tVrm1Maiuz2k5VTX1fY5k0wwOtIDQdEs8JrRSxbDqsMnCTDgLUDwQtaKS0QlYVSf/lIUzvl0wnlU9+Pj5iXKCZVYQU2kSVp4PwrZxxIRArIIkGQ77+TOk3KqtnidCuQt0te1WGqWTmxO/cuYicYhXERObh9u/4GgRtoWFydLDruO9Y24MaBBZLF+DcE1tQR9EnnPcn6bXj8JrXBTPmd5irvDJjNonNxZPkDZriGdaGMcmpH4CmSpHi0h5daWUkDLyGjPFKvyyIh5ZTD+Kq65+WMHcYhXFG0PFu5z6Tskxu1KdVzsKIBvPaRBBamp1D4ftHS0gNN0ytq6Cqz6+J6fsE+4AFnN9EPGABqEqinT9MkzSlYVPrdl823kEXrlvMLCMBJJN0dUR9kEoZTtd3cSAWCUxsXkhdRprNzj9DZSnQbjVZeuVIyCChfxsI4YKxPCnMllEZbHEYPoJ57PLUV/w71lZGb8UuOWajYIaRIxoAaHcfb3kOq98OEAs5moXFTktLF5ZSyZeza6ykqRkSY7bk/hF/4FLFpFxzUVdJHwzl4cRT5LNc4inJIHlCojq6sL/k91N744pB80GYPqcy6jcaY+C7ZbbM0TlZUcEs6o12ydaQGi6RUQ45/CpNORpEF4UU6IiJyCMbrp+GUahMAja5xccdB2rzIkF+wRLbXR1dTHR2Mi+xvLwHF1HtsJA4rmoIWuLEw3klXnwNIgaKaxMaksMiefupb21GZQVMjH5Tmo7g+VGWtkRGkTQxBS6FdccFSUgTDf2P5bMjSUqa/wmRQD1ux0JlcOhfrzvhE5Lwq8x5f89YslQRVSALHEsYnSoJIaZuyevZEZ3C0HDoWfBDzcjwyaS/Nw9WHl7e8LFM+G17HqaMw9TR9Fv72gBoekT3tN0IqBBGEUK+wGIWeg0tQImiZpJe7N2xpcLj8P2W3uusKLDM5WyMHB8EEEB4RWVU76AKP5xt404RsAO39XWjNhWyEkdc/0u2Fm/YJ9lFgqIWKhUSEBLcQVUxsvoTubMOl4l3XhlwC9RUeP7dRpVLQ0TdvO3eWYlR0DkaRCJyoLAAFsMbDHpyvNNJIY7XX93GVXcB+HcoHuN6pG8UXd0+Hru/9ZwNbS6M26FH0R1H9Zsb2gBoekTcTf/IVGZW1gS1cXr5UgJDULEiNzHa8GJGMw862fRJ/e0DAQjkTMTZVqdRcpf5LvpcGcbcYyAsOts9wREbk7xeC6KyRMQnlYQ9DsU0yDEfXJfIRN5257iO/qDxCpyGkNFZTW4AmKL2YAEGjClXMd0RpLYeRqEGU8WJCnaOAIiJeGsaPnc/TDrfGT8gfQUSYRNR8N2mg7A2FlutJJhQh/7kWsGF1pAaPpEzHQ+OsmAiamym4qbUeaGoPlGDPEX0NBxKKelpxjMmDyWNca4wn28UhtihgSEanN9EK5p3DOBRGFL3E/sAkh3NLs+iOAc3Sd/K6dB2EahBhEv4oPY7agzAKg57Ve8dtLDiKt9ZEK9EgICoroWko6ASOVFKqXd0NIus7ogfNaMV/iCrRkvwsjEplBAJEbtDCdf5yzqPWS32ReE3meHTYH/WkbNsd/p8Tk02wdaQGh6xdfS3+Bpa3/fZi4Bx25NXXENIqo/dWjxxSxSHtzRDjwTTDqvLpCzRy7SyQyYmIyOTe52T4MovghaGMQCJp90RyuiLD/yx5mkkFYmFWtf4v25NzrnjjIxYfm9uYNU73ca/GAj0/eexVmHTvHNbpmAJpWsqg29NlynddoMC4is232tK1ZX4IMwExVUuO1G1yYmA46JyZJYYcRTH6iadgRclasDZcYroGaUDmkdgmgBoekVj9uH8KXMd3Ld50RIucXaaocVL6kQrUEETEyGkG3dGN6uBCNgPoJc05/nJ30Nrmp2kuDcKCYwQlpAvMvJJ8h3UkfOT9l+VjRAttMVEHlfkSwx9rcXcny7kyvhmZiCZiVDlJ+1XEAsNy7u63Tg71ARFBAV1SRcs1bGDIeheqGl6XidHx2Vu0QltRlHOLbXOpVRbQzM3WfDbuG6Sv1BlKlMMzTQYQaaXvHI1w/n38s2h8a6iJMkQ003JiYzwnxkScxPUhAxUK3rw9sxwO0o52kXnqDwakDZGLlaTGIQC+RlVGe3uMe4RfoCGkQbldQEylob2H75DIBsZ0uhBkHYsQ5O3SNwsrKDpEhQm1fKOx/PuZstIiDEMBC3rEg2Hrb7K/e9lahHMuG8EDNRwUjl/I9k1G6w+VEUBrt96of+PsemrsPC4LluZ9gzYgktIIYqWoPQ9Ip9Jgzjq0fvEhpLkaBTJTC6eZI0I4r+he37woyZR4W22xgYXhSTtzCLJyAcTUEhoX4QwYzgSrcX88rJnwRgt+PO9rd1Eja1iLLZfWquTITd5WkQ4Weo/HpK+BpEWEDkMpkLG+v41/Q0iIDmEgwbBlgx8hjesScWlDpRbjisilcVaBDxRAXt+5zrTG+4Y2LKF2wXfvpkvn1G/2gTcS0ghixaQGjKpkvFI1tQBokSEMEIIRGT2gNOh+/kGtNYmE4pbQKhqr4G4VYQ9QWEo0EEE/e8ngWp4bvCVc1UjcsleXXmOX1RFvEJ+5H5f/c679NtkRpEfnKf52jOFxCZYiamAF6l3JDQybPjn3jw3ty29z2c+/Hjwgd7GpURL4hiiiUrGX3aNXBFo++0V3nzPu2ACXx833DyY1+JxQv9QpqhgRYQmrJJkaBFlRAQEdpFMH7f92lUjwxsN3ItR/NMTDH3SdvG4M2VW9y6SwbxYOKe3+PYOTYWEFJdRtim75Xoju12onOdVCuGbRXkTlh5AsMzMeVnT+f7LqLw2rZGFdbzqErEuO7T+xYkKopbZ0qJGerTAZBwzW8Ypq/Vqa3oQA6WW9EMLcoSECLSICLzRGSp+zsyjEVEznb3WSoiZwfGDxSRt0RkmYjcIBL+FIvIt0VEiUh0hpRmUNAwrI7hDd3/i+KJwkXEDgmIQh+FjeGGuRb6IEw34qhKUlwQe4xJrAORcOKeV87bM0sF/CDpvOZGnrYhhulkG2faMaJ8EPkmpogoJufeAsed9juYfS35+BpENwKiGOLOV4nB7sd8LrQtHii57QnmngisvpLQJqYhS7mfmsuAZ5RS04Fn3PchRKQBuBI4GJgFXBkQJDcDXwamuz+zA8dNBE4APixzjpqtzIgp+zBi5/263cdMFJoh7DwfRD6OiUmFspG9V8Hex/42MSNNTJCLuPJyDvKjgiTgZE5LArHSCNkIJ3VYQIirBeTnPqTdJjl1e54A+3wGDvlKwXxN12me7YOAaE2Odn5X7ETdnsfBVc2k3XuLB9rE5rLIe57n0FuC19MMLcqNYpoDHO2+vhN4Dvhu3j4nAvOUUo0AIjIPmC0izwF1SqmX3PG7gFOBJ9zjrgcuBR4uc46arc1pt5TcJRZhYrKjTEwBLEy33HdQgzCK7q8wqKkOPD17i3YgA9l5krYKooKCPZYzxBEr7RYA7P4r4vXmzjcxtcVHwDcW0FAfUV/KRWy3IqwRFhAfNhxGNjmMnbu57oGnfoMb7q7gC3NygidmCChIBLQ1r6jgVtUgtIAYspT7qRmjlFrrvl4HjInYZzywMvB+lTs23n2dP46IzAFWK6XeKHN+mkFC1FNmKAM4IoktaGLynoC9nAa/BEcQEace1KduY5Mx0u0jQWQCl53Xu8LfF8cnYFgpv8dEkCThcteG13pV8udjQsPUXA2jCKxMuGS4x6RvPMHOF9xb9DiAEbWVfONrF9NQkxO8xhn3wNSjfK0GALdXdnd1qPrKwqN+yzuVB4R8O5qhRclPjYg8LSJvR/yEOo4rpw1X8Zi+HiIiVcD3gCt6uP/5IjJfROZv3Lix9AGaASEW4YMIPp0bESYmW0wMN0LJkwtj9jwSgGk7Rzxfe4vg3qfTaIwI1EfKfcy9wn8q0Y0GIQkMO+0WAAwLrs54ONdDYtHRSsoovSC31EwF4IWa40vu2yN2mw1nPxISiLvssR8A9Yee0z/XCDDjmM+y+3f/HqoRpRlalDQxKaWOK7ZNRNaLyDil1FoRGQdElXBcTc4MBTABxxS12n0dHF8N7AJMBd5wzQgTgNdEZJZSal3E/G4BbgGYOXNm2QJKs3WI1iByT55GhI3cMTG5VnR38R/58avhkM9SMXbPgv2Di7kSA9MVBhJ4evbHkmENon7/3PNOVuIYdsZ1Uoe/IhuH78fkdUty8y6W+9GDJ/a995zBKf98lF+cvm/JfftK5YiJcGUT43UZDE0fKFf0PwJ4UUlnE+0vmAucICLDXef0CcBc1zTVIiKHuNFLZwEPK6XeUkqNVkpNUUpNwTE9HRAlHDTbD2ZErHwpH4Ryw1xDiXJmDMbuHXmNYCinQnxtIXhqzxQUEhDfXcH4k/7Lf2tJHNN2fBD5pq9Jn/wRzyeOiLyvYIe8njiFq5MxHrv4I8zYaSt3XtPCQdNHyhUQ1wDHi8hS4Dj3PSIyU0RuBXCd0z8GXnF/rvYc1sDXgFuBZcB75BzUmqFGRLG+eDCyKcJMYWEiSmGKQujBIifBBdrwndRRJhAjeO3K4aFFNOv1vo4wMY0eM44jvveYHw1lBOzvweq0PdEgNJrBTllRTEqpzcCxEePzgS8F3t8O3F5kv71KXGNKOXPUDBIinmKzY/aGzY+5m6N9EDHl1EfqkZM1KCAwMJXju1CB56AWVUmddCKx4pE3lpEgkW1zfBBFKsB2SCX1tPnlvoFQp7WtGVaq0Wwr9GOOZkCwJIYVSFaLakmqxPCT3XryRB72QUhOgwgIn1ZxnNNmvHgpDMtIYKoMprKKhrmqEU6TnOFVue3ZoFDoRX8FjWawoqu5arY931qMGa+CJ+/2h6JMSDZmoFxGT+zoeRqELyBy4x1GLdgbMeJJ7qw4k7pdDuaT+dc1EsRU2vFhFFnoh537Z3jnb8QapgTmGxBiWoPQDAG0gNBse+qcInHBhTuq3agtpu9o7pGACDqpxYg8NhWrg7TTHe7sy34TeRplJIirjOuDKPIVqRkFM8/FWP1+br6EfSAazfaO/hRrBo6ggDALP4q2mH5Yao+cvka+BuHVV8oJiEyiDoDOti1FT2ObOQFRylQUrO8UclJrE5NmCKAFhGbACPoGovQDR0C4ZqIefFRVXntQ089uzh07dud9AJg6qnhoqW0miZNxnNwR0VdBgr6TUI9trUFohgDaxKQZOAJP/FFOaltMp1Ob0EMTU1iDyI3njh33iSthym6M2u/04ucxEyRUplsfhL9roJSGLWauloD2QWiGAFpAaAaOkA8iSgDkzERReRIFpyviAwg9zccScMBZ3Z5HmQniZIiLBSWK9QV7bWsTk2aoofVgzYARXLgjNQgjlqvI2qM8CIl8HZVj0S1mkoR4lWBLaRC57aHS4FqD0AwBtIDQDBjhhTu61IavQfQgk9o2c7kNxUxMPSKYRFfCBxFspRoKc9UF7DRDAP0p1gwcJTQIehnFlKoa678uamLqCYEKrdJNuW6AWGBfWyfKaYYYWkBoBo4SHeVsMXN9FnqwyI/YaWrg3H3XICRYobWUiSkWw1bO+bWJSTPU0AJCs834v5oLuTOb630QqrIaWWqj+2qv+UycMj1wbFCD6N1ibQQa7kQl8AURETJurIcdDHPVGoRmCKCjmDTbjC9966eoQCe44CJqRAmAkBYQ/SyzSdUxUloAaBib0yDK8UHEKgKlwEv4IACymCTJ5JmY9LOXZvtHf4o12wzTEGJm9MIdVZJbBRfnIgKi/ooPUF7f50BvBlVGFNPwGbkCxdITAeG1Qw2azLSJSTME0BqEZsAotYjmZ0ZHETcNOP8f0NkY3hDKsejdc9CkiZNZYY9hirEejNL9ljM4+1hGz01TGs32gNYgNANGySd7I/hE3s1HtXoEjJyeNxgQED1pNhQ80hBWxia5r0t/RbwEuVCYrRYQmiGAFhCagaPE4hvWIHr5UQ0lzfX+Y95eMwWAylRUm/UwlutMD2kQ2sSkGQJoAaEZMErlJwR9EL31I4TKbUeW8eie7Kg9AehqbSyxJ2S9KCYz5wPRJibNUEALCM2AUXLRD3WI660G0XcTE8C4I77AdZnPsGqvr5bc19MgVDAD29QCQrP9o53UmoGjlImppz6IqGODPog+PM0fOHU0o7/9K8YPqyy5rxe9pBI1uWuWKPKn0WwP6E+xZsAoaafvQZhr0XMbwUS53msQABMbqnq1v0oEemxHNEDSaLY39KdYM2CUWrgllFdQhg+ijwKi5xdzk/+CJibtpNYMAbSA0AwYpfITQqGivcxlCJmYtnJ3N8PtEiS9KNGh0WwPaAGhGThKLNxShg8i5KTe2hqE10YukAehBYRmKKAFhGbAKLno9yCTuvix5Tmpe4cjIIy41iA0Q4uyBISINIjIPBFZ6v4eXmS/s919lorI2YHxA0XkLRFZJiI3SOBRT0QuEpF3RGShiPyinHlqBielfRBlmIlCx/bu0N4ikSYmHf+h2f4pV4O4DHhGKTUdeMZ9H0JEGoArgYOBWcCVAUFyM/BlYLr7M9s95hhgDrCvUmoG8N9lzlMzCCn2lP1g8pPuDt0X8+v+5OVlUvfqUq6AMOPBRkNaOdds/5T7KZ4D3Om+vhM4NWKfE4F5SqlGpdQWYB4wW0TGAXVKqZeUUwP6rsDxXwWuUUqlAJRSpesdaLY7ii36x138O9780gehhV319qMa7Fa3jQSE1iA0Q41yvzljlFJr3dfrgDER+4wHVgber3LHxruv88cBdgWOFJH/iMg/ROSgYhMQkfNFZL6IzN+4cWNf70MzABQzMdVXxdlnwrBQ5FKvHc0DEOZqBnwQkS1UNZrtjJKPOSLyNDA2YtP3g2+UUkpEVMR+fZ1XA3AIcBDwJxHZWQW7zeSuewtwC8DMmTP76/qabUBpJ3UZjuYyyn33Fk/8GPFgLSZtYtJs/5QUEEqp44ptE5H1IjJOKbXWNRlFmYJWA0cH3k8AnnPHJ+SNr3ZfrwIecgXCyyJiAyMBrSIMJUolk5WjBWzDMFfBBvI0CFObmDTbP+U+5jwCeFFJZwMPR+wzFzhBRIa7zukTgLmuaapFRA5xo5fOChz/V+AYABHZFUgAm8qcq2aQUfIhu4wopnAm9bbxQcR0mKtmiFHuN+ca4HgRWQoc575HRGaKyK0ASqlG4MfAK+7P1e4YwNeAW4FlwHvAE+747cDOIvI2cB9wdpR5SbN9U2oRLSfMNVimoydNf8rB009iiZyJSfsgNEOBsvRgpdRm4NiI8fnAlwLvb8dZ9KP22ytiPA18oZy5aQY/vfFB9LrURsistJUFhIoyMWkBodn+0Z40zcBRqtRGGX6Eco7tLd7ZzViuf7UOc9UMBbSA0AwYRqlOb0bfTUyhY/vQUa53uHkQodw8rUFotn+0gNAMGCX7QZTjaC6nTEcvWZ7YFQCzItcwSEcxaYYCWkBoBoxSuQJSjgYh206DmHbBH3j68HsZPWa8P6ad1JqhgBYQmgGj1KIvZSS7hX0QW3exHj1iBMcdf3JoTHeU0wwF9KdYM2CUfLIPlfsezP0gctjKuZY2MWmGAlpAaAaMko7cgAAxervIB5sNbcOyF5b7lTJ0FJNmCKAFhGbAKOmDkL63HA1rHNtOg1DutUTnQWiGAFpAaAaMUmW4g6ah3mdSD4yJydMgTG1i0gwBtIDQDBglTT/lVGQN9oPYhhFFngahTUyaoYAWEJqBozflvstJlBsADWIrp15oNNsE/THWDBilHM/9Fea6tTvKBXlXpgKglP5qabZ/9KdYM2CUMv2EhULf+0GobRjFVHfun7hvj99QN2x46Z01mkGONpRqBoySWkGonlLv/AgD5aSePnki0yefuc2up9FsTbQGoRk4epFJXbKwXz5G8Fj9Mddo+oL+5mgGjFILd0jD6GW5jIHSIDSaoYQWEJoBo6SACHaFKyOTels6qTWaoYT+5mgGjNJ5EAGhUI4PQpuYNJo+ob85mgGj1JO9Eaqn1NsopmChP21i0mj6ghYQmgGjdC2mvifKBc1X2sSk0fQN/c3RDBil+jRIOZFIhjYxaTTlor85mgGjZOhqSIDoKCaNZlujBYRmwCidSS2Rr3uCDFCxPo1mKKEFhGbAKPVkH8ye7q2JSQaoWJ9GM5QoS0CISIOIzBORpe7vyAI0InK2u89SETk7MH6giLwlIstE5AZxv8kisp+IvCQiC0RkvojMKmeemsFJb5zUvW85OjAd5TSaoUS535zLgGeUUtOBZ9z3IUSkAbgSOBiYBVwZECQ3A18Gprs/s93xXwA/UkrtB1zhvtfsYJTjpO51WKxGoymgXAExB7jTfX0ncGrEPicC85RSjUqpLcA8YLaIjAPqlFIvKaUUcFfgeAXUua/rgTVlzlOzHRI0DfU2VFV0wx6NpmzK/RaNUUqtdV+vA8ZE7DMeWBl4v8odG+++zh8H+CYwV0T+G0eIHVZsAiJyPnA+wKRJk3p/B5pBS6iCa281CN3yU6Mpm5LfOhF5WkTejviZE9zP1QJUP83rq8AlSqmJwCXAbcV2VErdopSaqZSaOWrUqH66vGYwUE65DDOW6O/paDQ7HCUfs5RSxxXbJiLrRWScUmqtazLaELHbauDowPsJwHPu+IS88dXu67OBi93XfwZuLTVPzdCjnGxoM57s7+loNDsc5fogHsFZzHF/Pxyxz1zgBBEZ7jqnTwDmuqapFhE5xI1eOitw/BrgKPf1R4GlZc5Tsz0ifQ9zjSW0gNBoyqVcQ+01wJ9E5DzgA+AzACIyE/iKUupLSqlGEfkx8Ip7zNVKqUb39deAO4BK4An3B5zIpl+JSAzowvUxaHYsQpnWvewHEdMahEZTNmUJCKXUZuDYiPH5wJcC728Hbi+y314R488DB5YzN832j5RRzVVrEBpN+egMIs2gxSgjk9qMaye1RlMuWkBoBi3Jymr/dW/LfScSFf09HY1mh0MLCM2gpaKq1n/dWw0intQCQqMpFy0gNIOWyuqcgOhtHkRcaxAaTdloAaEZtBixuP+6twIipjOpNZqy0QJCs13Q+1pM+qOt0ZSL/hZptgt00x+NZtujBYRmu6C3UUwajaZ89LdOM+C8Z0wpuY/u76DRbHu0J08zoGz5xnvsVFFZcj/dNlSj2fZoAaEZUIY3jBzoKWg0miJoE5NGo9FoItECQqPRaDSRaAGh0Wg0mki0gNAMah5KfmKgp6DR7LBoJ7VmUHPcJbezrKWLaQM9EY1mB0QLCM2gpq4iTl1FvPSOGo2m39EmJo1Go9FEogWERqPRaCLRJibNkGXjpx4k3biS8QM9EY1mO0ULCM2QZdTexw30FDSa7RptYtJoNBpNJFpAaDQajSYSLSA0Go1GE0lZAkJEGkRknogsdX8PL7Lf2e4+S0Xk7MD4T0VkpYi05e2fFJH7RWSZiPxHRKaUM0+NRqPR9J5yNYjLgGeUUtOBZ9z3IUSkAbgSOBiYBVwZECSPumP5nAdsUUpNA64Hri1znhqNRqPpJeUKiDnAne7rO4FTI/Y5EZinlGpUSm0B5gGzAZRSLyml1pY47wPAsaI7xmg0Gs02pVwBMSawwK8DxkTsMx5YGXi/yh3rDv8YpVQWaAZGlDdVjUaj0fSGknkQIvI0MDZi0/eDb5RSSkRUf02sp4jI+cD5AJMmTdrWl9doNJohS0kBoZQqmm0kIutFZJxSaq2IjAM2ROy2Gjg68H4C8FyJy64GJgKrRCQG1AObi8zvFuAWdz4bReSDEucuxkhgUx+P3R7Zke53R7pX2LHud0e6V9h69zs5arDcTOpHgLOBa9zfD0fsMxf4WcAxfQJweQ/P+yJwOvCsUqqkdqKUGtXDeRcgIvOVUjP7evz2xo50vzvSvcKOdb870r3Ctr/fcn0Q1wDHi8hS4Dj3PSIyU0RuBVBKNQI/Bl5xf652xxCRX4jIKqBKRFaJyFXueW8DRojIMuBbRERHaTQajWbrIj14MN8h0E8iQ5cd6V5hx7rfHeleYfvTIIYStwz0BLYxO9L97kj3CjvW/e5I9wrb+H61BqHRaDSaSLQGodFoNJpItIDQaDQaTSRaQAAiMltElrjFAbf7iCkRuV1ENojI24GxyMKK4nCDe+9visgBAzfzviEiE0Xk7yKySEQWisjF7viQu2cRqRCRl0XkDfdef+SOT3ULWy5zC10m3PHtvvCliJgi8rqI/M19P5TvdYWIvCUiC0Rkvjs2YJ/jHV5AiIgJ3AicBOwJfFZE9hzYWZXNHbj1rgIUK6x4EjDd/TkfuHkbzbE/yQLfVkrtCRwCXOj+D4fiPaeAjyql9gX2A2aLyCE4BS2vdwtcbsEpeAlDo/DlxcDiwPuhfK8Axyil9gtEKw3c51gptUP/AIcCcwPvLwcuH+h59cN9TQHeDrxfAoxzX48Dlriv/w/4bNR+2+sPTsLm8UP9noEq4DWcSsmbgJg77n+mcRJVD3Vfx9z9ZKDn3ot7nICzKH4U+BsgQ/Ve3XmvAEbmjQ3Y53iH1yDoWzHB7ZFihRWH1P27ZoX9gf8wRO/ZNbkswCltMw94D2hSTmFLCN/P9l748n+BSwHbfT+CoXuvAAp4SkRedevMwQB+jssttaHZDlFqYAorbm1EpAZ4EPimUqolWCF+KN2zUsoC9hORYcBfgN0HdkZbBxH5GLBBKfWqiBw9wNPZVhyhlFotIqOBeSLyTnDjtv4caw0iVxjQY4I7NtRYL05BRSRcWHFI3L+IxHGEwz1KqYfc4SF9z0qpJuDvOGaWYeIUtoTw/fj3KiUKXw5CDgc+ISIrgPtwzEy/YmjeKwBKqdXu7w04wn8WA/g51gLCqQ813Y2MSABn4BQLHGp4BRAhXFjxEeAsNyLiEKBZRTdxGrSIoyrcBixWSv0ysGnI3bOIjHI1B0SkEsfXshhHUJzu7pZ/r97foMeFLwcDSqnLlVITlFJTcL6XzyqlPs8QvFcAEakWkVrvNU5h07cZyM/xQDtlBsMPcDLwLo4t9/sDPZ9+uJ97gbVABscueR6OLfYZYCnwNNDg7is4UVzvAW8BMwd6/n243yNwbLdvAgvcn5OH4j0D+wCvu/f6NnCFO74z8DKwDPgzkHTHK9z3y9ztOw/0PfTxvo8G/jaU79W9rzfcn4XeWjSQn2NdakOj0Wg0kWgTk0aj0Wgi0QJCo9FoNJFoAaHRaDSaSLSA0Gg0Gk0kWkBoNBqNJhItIDQajUYTiRYQGo1Go4nk/wMP+H4kR/p4VQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(out_irfft * 2**(-Q_ifft-Shift))\n", + "plt.plot(out_window_c * 2**(-Q_in-Shift))" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 159, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD4CAYAAAAEhuazAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACUbElEQVR4nOyddZgUx9bGf9XdI+vG7uIs7hYsCkmIE09unLi73riHeG6+uLu7KyEkhJDghAS3xRfWday76/ujenpm2EU2QATmfZ48Waprunt6Zk6dOuc97xFSSpJIIokkkti5oP3dN5BEEkkkkcRfj6TxTyKJJJLYCZE0/kkkkUQSOyGSxj+JJJJIYidE0vgnkUQSSeyEMP7uG9gStGjRQhYVFf3dt5FEEkkk8a/C9OnTy6SU+U0d+1cY/6KiIqZNm/Z330YSSSSRxL8KQojlGzuWDPskkUQSSeyESBr/JJJIIomdEEnjn0QSSSSxEyJp/JNIIokkdkJsE+MvhHhRCLFeCPFH3FiuEGKsEGKR8/8cZ1wIIR4VQiwWQswWQuyyLe4hiSSSSCKJLce28vxfBg7aYOw6YJyUsiswzvk3wMFAV+e/c4GnttE9JJFEEkkksYXYJsZfSjkBqNhg+AjgFefvV4Aj48ZflQq/AtlCiFbb4j6SSCKJJJLYMmzPmH+hlHKt83cJUOj83QZYGTdvlTOWACHEuUKIaUKIaaWlpdvxNpP4qzG1uIIFJbV/920kkcROjb8k4StV04BmNQ6QUj4rpRwspRycn99kgVoS/1L85+lfOPD/Jvzdt5FEEjs1tmeF7zohRCsp5VonrLPeGV8NtIub19YZS2InweueMSyRrYFRf/etJJHETovt6fl/Cpzm/H0a8Enc+KkO62dXoDouPJTEToDWopwcUfd330YSSezU2CaevxDiLWBvoIUQYhVwK3Av8K4Q4ixgOXCcM/1L4BBgMdAAnLEt7iGJfw86aSV0ouTvvo0kktipsU2Mv5TyxI0cGtnEXAlctC2um8Q/FHM+hiXj4PDHtutlpj58HJ4+RzJg/5O263WSSGJHRLLCN4ltj/dOgxmvbvfLDKn+hgE/X7Ddr5NEEjsiksY/iX81PrT2/LtvIYkk/pVIGv8ktjnW+Lts8vgsuxPjrf5bfZ0qmUaNTN3q8ySRxM6IHd74SykJm/bffRs7FR7t+hJ95LsbPV4i8yiTWVt9nWxRz67avK0+TxJJ7IzY4Y3/HZ/PpdtNX2HZzaoxS2IrYEuJLTf+vHuLYtaSu02utUQmlUGSSOLPYIc3/m/8ugIA0056/38V7v9jOHO14zd6PE/U4CeyVdeQzue50G63mZlJJJFEU9jhjX8Sfx/qQybnvDqNtdWBhPFUEeJc4wsA3vr8G775ZXqzz207xr+PtmzrbzSJJHZC7DTGfxNRiCS2E8ZOn0eLBW/y4mc/bHTOidOO48Bv9m32uW3bAmB/fcafvLskkti5seMbf/F338DOi8y6pdzjeYHudVPcMdnEKlz9Jxg7UeOfRBJJ/Dns+MbfQdLz/+uRXq+UuzsE5rhj9gaJ9+V2AePs5jdzk5qXCpnO99aArbrHJJLYWbHzGP/mKUonsRVY6uu50WOmlEyyejHF7g5AS1FJR9F8nR8bKJXZhPD82dtMIomdGjuP8U/a/r8M97R5nKLgm00es20oloWskKq3j09EGKgtbvY17EiQ7toqhmrzt+pek0hiZ8XOY/z/7hvYwbG0tI7Fj4yidPwTjUI78bBCtRyrT2Cu3QGA182RlMnMZl/PjgQB+Noa+uduOIkkdnLs8MY/mu/dVNFREluPt6eupLBiOsvmz+aF4v0o9p9EwN8CgD8yYvo7lmniFRbCWY7rSCGdQPOL8CxF9VwsW2+bN5BEEjsZdnjjH0XS9m9f7LbqRTJEACljxXSVGd0ZHb6OJakxHR/bMgG42fM6AOcbn+MXEeoCwWZdz3aus6f2x9beehJJ7JTYaYx/Mu6zfZFiVjcas9HoLlaSFSlzxyyz6cre+tqqZl0vSvUcqc9s1uuSSCIJhZ3G+CfZPtsZ0a1VnOefUb+cmzxv0LPul9i0Jvj5Aeml3tKbdTk7KdeRRBJbhe3ZwP0fhWTYZ/tCoIxxraeFO5ZVuxCAlqFidyyi+RJeVy4z+MLald5m876KdkoLZthKOrr5VQJJJJHEDu/5Cyfjm0z4bl9IKamU6UwoHM3vHhXjt5v4elneLMZag1y2TwYN7KItwmyoatb1bAR1MgWZLOFOIok/hZ3H8/+7b2AHR0lKF1bb65ESbs25hxkrqnhdK3aOxp6+ZVkslwXUkEIvwMSgj1bM72VzgE5bfD0ZqGC4/vu2fAtJJLFTYYf3/KNIOv7bF9PyDiOHWvYqeQXbtjEwE+L/UYiKJZxtfMWPjizDaeFrAbBlM7V6QrUAPGoeuTW3nUQSOy12HuOf9P23K2wJvbVicsJr+bjsUBb7T3VX3F+yD3XnSVtRPS3nqxf9P1bzjH9Uz7/Ybrm1t55EEjsldhrjn7T92xcHr36MQlGV4O2vzx7I0aHbWOnv5o7ZjpF/wvsoAB/6blPjzqKwpYiyho7QJ23FXSeRxM6LHd74Cych+OQPS5KtHLcjfHYDgFu5CxDWfAzXZ9MmGNPusa2mef5NUUA3hSjVc4Q+u7m3mkQSSbATGP8oXp5UzMczV//dt7HjwgnxxOv1Z9Sv4HLjQ3rH8fztJsI7y+0CqrJ6NfNySZ5/EklsDXZ44y/imIBBM9kAZPtBGf0yb1t3JK9mLgDZkVJ3LORvkfCqkDT4wt6VBn9Bs64Wzu7Mh9aeLLeb97otxXFP/8LBj/y0Xc6dRBL/BOw0VM8ktjOkZI3M5bsWo8kpn0FncxGm5o8edKcFU1vxsbU7A8QSigCfMNlT+501DeuBLRdps6WqI9DF9tkBnLf6erxEgJ+3y/mTSOLvRtL4J7FNsCylD7+XSSSSa/03s7y8gZeM4kbz7EiItTIPC40iYJldSD9tGaHSycCALb6eVruaY/UJ2+juGyOpGZTEjo4dP+zzd9/AToLJOaPoIlZzaMlTeK0GcqmBJhg86SVTuMD4jHfMfQA4PaJ4/rKZVE/RUAnALZHTsG1JxErmAJJIojnY4Y1/En8RJLQX68gySxkbPIkZ/vNJDa0H4Ju8U9xpUTVOEx0pZYzn30y2j3SKwtbIFlz4+hS63vjVNngTSSSx8+BvM/5CiIOEEAuEEIuFENf9XfeRxLbB8WvupaO2LqGUelnOnhwQuo8yTxt3LMrn/9B3G9KWTPRdDsSMOUDFpJcJj2m36QXBoXqepX/FyIV3McF72TZ8N0kksePjbzH+QggdeAI4GOgFnCiEaB7XL4l/FHSp+PvxPP8GkcpR+kS6N0yPTYwL79hxxj2e56+NvRlvpIbaijUbvV60mctu+lyGaAtor5VudG4SSSTRGH+X5z8UWCylXCqlDANvA0f81TchpWRdTfM6SCWxEURtfhz/Pqd+MRcYn9G7/ld3LN7gRwu1Jts9WNUi1upxnqYqgkvrNx7Ht+OyOUXauq269aYwMvQAx4Ru3ebnTSKJfwr+LuPfBlgZ9+9Vztg2h4gj+m8o7vbqL8sZdvc45pfUbI9L72RQhnqVr4s70qrmNwBSrdjzrU3vCIAlhRvq+dHqR603xtdf6++CKTVWh1M3erX6vL48bR5GSHpid7ANk75LZBumy+7b7HxJJPFPwz824SuEOFcIMU0IMa20dPts6X9erNoLFpfVb5fz71yQLLFb8VXOyXzDrsyyOxPQ0p0jMdSkd+QNcyQVZLribAfpU0mrK3bnlGX24mt7KOWlG/fobQkWAo2YwY+Y4W32br72Xss73ju22fmSSOKfhr/L+K8G2sX9u60z5kJK+ayUcrCUcnB+fv42uajYKO8zSQjdWsxPGcwn1h5ICVfJKzkyfCdBPb3xxHAdFWTwo90fG8GPVj/6actoV/qjO2Vty305QJtK27nPbfR6voqFXGR8ikdYlMsMAMzItjP+PbSVDNPmb7PzJZHEPw1/l/GfCnQVQnQUQniBE4BP/6Z7SWIbYFLWwQzSFjJ63f3k26V0FqsRljLGIi7e1nL1WC4xPuZR8yik7uP8yOXqQFwuwNA1KsmAhjI2Bj1QDsB54ct50jwcADPStGjcViHZCCKJHRR/S4WvlNIUQlwMfAPowItSyjl/x70ksY1gmRSKSoJ2GuP1i0CHKYGjAXg3/zIGOdOirB5LathSxlo9xlE9R674PwpFFSs20aQ9mi+olBkslO34NdSLV/SUbf62bMtk5ooKLMtiaNctl59IIol/Ov62mL+U8kspZTcpZWcp5ZjtdZ1kQOevwTnr7qCHtjLBy5+RcwB7BB+hXs+ITXR4/j/4rsQO1jDDd54zHjP+wmUMbcL4O/Lc//W8w3jfVeyvTycit/2nHYmEMF8+nF1e742ZFAZMYgfCPzbhm8S/DI7RF3EGO0gKo42xDKkdF5vmGHmPsMC2SBMhdSDey48uBJuSbXYWkcHaQgCO1SdgBWq3+HYtW1Ld4ISJGioSrx+HSCTMMG0+hrCZ92uyijiJHQc7lfFPhm+3J5yHG/eQ29X/zvnG5/RomBablVDYpQzup9ZuzC44zB2PLiAzM0du9GqW5k34d1tRhl2/8RzBhhjzxTz63/Etgcp1cH9HIt/fHbsvKRkSfILDQndhan6VfwBClcl+EEnsONipjP/GETNYc9ZU8960lZuYm0TTUM9wobenO9KhXnXZ8sgYC6ckayBhqWNKzS34mmp3p9oTp8svLdbJbOakDdvo1SoLhnFHZHTCmGVuecJ34ZypXG68z6L5qhah+tfX3GOmLSklh99lJyJS535xJo+aR1KSvwffz1/HT4uS1cRJ/PuxUxn/DameTVE/Rz06kWveT7YGbC6ElPxhF/FR+gm8be7N59YwavQcIJHnX57ejZetgwjjcSt8j9R/pqA2lu9fmDaYH6wBpIeVkV1QUsspz0+mNhgz7na8KJwDMxza4vu9yXyKy40PqS5XtQTLrNjiYwbrme47jzc9d2EFa/ha7Mn/zOMIerKZ8/p/mfJyUooqiX8/dnzjH2fgb/zoD4qu+4Kr3v3t77ufHRTTUvfiPWsEEalxnXkuF0cuo1bLajTPG64kgJdPrN2Rho93zL0ZpC2iR9lYd87MjH3ZRVvEMesfB+DUFyczcXEZ80tiMf2M0hnc7nkFgBKpFpmN9QduCgFvLgA11RUssVtRLtPcY5FIkDxRy+76XOzaUnrKJVxjvE1azVIuMT7mKs/7zXgySSTxz8SOb/ybwAczVv3dt7DDYWL6AeyrzeS/5bfQQ6xgF7EQrx0AoMH28NlvSqSt65pPucz4iDHmydjeTK41z6VWpiQkdw0rgJ+wmz84o+ElZvnOwbc2ljvwBFV8/7DQXdwQOQsAq4kK36qGMF/MXttoPJyi2klqFYt5zhrF4+FYzsEOx85jmWGekGO4yPiUvIrpjc6TRBL/VuyUxj+JbQ+fVU+BqCLbruBr33V86LuNVsElAJxZcSqXvDWTxetr3RCQjeL5q78FIo7n/5+1D9BOK3UTv+cbn5Mt6rHqK2IXjEscF8uWjAw9QE1mYy2ee1//nDXvXsnK8rqEcekkjHtUTeBez/NkEJP4MON2EPELioxnBFUuh6+ubVp2euoLsODrph5TEjsgPvrobX6fExcqjgTh8yug7p+dG0oa/yS2CS4qu4ue2gq0OCM+NvMY+gefZQ/td+b6ziBUX+say7n+MxE1q1niO5ks0ZDg+bsLwQZUTysYC/tIZ+H4yHsL3/uuppWoIIyHDXH2ujs5x/iSUMm8hPHoNbIstaAcpv0Su04k0fOPylRLaVMUfJOi4Jus++QmmPw09StmNH4YX1wJbx2/kScFwV+eQzaDmZTEPxi2zVG/nUerd0fFxhZ+BdNehEmP/H33tQVIGv/N4I/V1dQEt4NswA4HZSDjjX8IgwuNT3jZ+wCpIoS3ekkCFVTaFrqIUkTji7ws51ybMv5qjuE0cD9X/xyjprjRXUVVXSPBhoTxeenDeNo8jPvlqQCcZHzvcv0t9Ng14/WC4rz8VytU+4ni6ubxh2vWr8D/zdWUPnlws163MTSETWasqNwm50qi+ZCmkoRvIeKUgdML1f87b5yq/E/ADm/8N1XzuSnev2VLnvxhMYc+NpEzXpq6ze9rR0O0slcnZiB7NUzlPOML999mRlviq3ajVbpPm4fxXf7psZM55xqXcXjCNWSc8Y/oaQnHhuu/46ta2ui+5vgGAlCenhgS+iNtN+41T6Q+bl03Qyo0FEwppFfwRUaGHqA2q0fcDdgU+0+i2H8SEc2v3nckcVGJ4lNrtybH6wMqD/J4VdPHm4v3Xn2cXV4soqQsuZP4OxAKNvH5R9RnjGfby41sS+zwxv/P4vPZa7j/6wUATF+e9KzkZirkovH5ydpAd6xHKJEyK4VOce5erJZ5QKyZy0K7DVV6Xuxc0mKe3Z7ZKUMAXM3+UqOlO2dd4XAuCCe2brTNxg3j56YN5RHzKGrDiffvC1dxif4hJ+rfu2OBeuW9mbakAT9LZBvCwsft4nyui5zNopaHuHMPDHyp7jXO+M/6/BmmPnsRYyIn8a61d+OHBFgOHbVKNqF4+iewR8nrAJQtbiL89C9ATSDE84/fzdrfxm1+8iawsqKBU1+ckkAHdvHT/2DyM1t1/o0hFGjC+IccJ+X397bLNbcVdmrjvyHPf9SjP7l/14eSOi5RSCk54NbX+N+3CzYxCabY3XnGOIknzMN53jyYEq1lwhQjVElpahfeNfcGYv18j9R/pkvtZHfelNR9mGT3piCsWFkXWVeyX+h+fs8c7s5piuffFNVzTWoPQOApmZkwfvTa/3GV531ai3ImWr0BCNarH61WtpDpvvN43vMARnUx48Uw3rb2Jahnuq+PFq5FZOweBkz7L0PWvM4KWUh7sb7Jx2RFlPE/z/icSHjru8itSu8DwApabmbm9kfNr68QXPbr5ifGYe6ixRxc+jxpH526Vdd+87OvOXjp3UycMq3RsZXjX2DNt9sn/h5uyvP3OxTnQNV2uea2wk5t/DfEnDWxuJ0kqQURxcz5SxirXUL9hEc3Omd86gG8be5DnfTzgHkCd5mjqdayE+YIK0xaqARNSF4yD8Q00nnJPJDh+u8MqvrGnfdL2t7015ZwaoW63nh7AItlW+pDMc++YO0EnvU+DMAfdhEAttWY6pkn6rjM+JC09Yk0zWheYY3M4zXrAACC9dUAyFAteaKW/fSZ+CoXMVDO4y7jBfKq/3Bfv8roQLVMpTRnIBviQuMTLjE+avI5hYViGfXWlrvX2xgmLirbfJvRFLVjWh7YeNezvwqZX1+K/5UDm/WaWqMFP1gD0GTjXVtzkEMtJxrj8dQ1pnEvi+RQEvnzIZhF62qZtbKqyWMN3jwqZDpL7Faxwc77gDcd0guafE1TWLy+bqPX2F7YaY1/lHe+MdhJ2+9i9R9qR5TXputG50xM2ZdD9V95MXQ1g8QCRmi/kWKrGHpIOsrhUtJr7SdcZnzI7eaphFNacLt5GkvsVglUz1SzmizqiSaRR4qp/OY7m8OL73LneEMqxr1H8BEujlyiBpvw/A+uVGEREaxKGI8amyKthBAGB4Tuoyq1SJ0mTibCtiI8LO/nFGMcrSqnuOM+woTw0hCO3XedUKGc/tpSWokKyr+5D27LQoZj3mF9egeujZyjnktDIv00HlJKnnnpOa5+/K2NzgFoSGmJLQVyzXaoQahZC/Xl2/68caiuq6eGVLxsHakiG+W4GfWNu78N139nF23xnz73/g9P4Mgnfm7yWED42CX0LCPDDyUe8KZBeMs7BD74zQKu//D3P32PfwY7vPEXG2nfdclbsTBAU+HszcW4dybk1CnlzOF1G1e1zDQrKBBVtGI9H/hu5xXvfXSJLCQgvbxsOd6gbbk7Kh8RLMvCR7ThSywRfEHZGLpqqxHSRto2z3r+R5ZoICUSl3tx8gVpIogXk2HBx1lSsH+j+9JsZVREsHqDcWX8W4sKXvY+wELZljpL5RbsDYy/C2lTJjMJSC+5VhkFooqclWOJ/P4xdtVqTs57h+Ghh2Pzf3kKgPLyGN/btGwCUnn/oYBj/MMNMOPVhC9iJBTkNe+9XBeMO18TmJk3isWyNbutfX2T8/4U/tcDHui0xdNXyzx+dkJoW4p2C1/lAuMzvI7K659F26D6jvobHKfu8ysV134boimbEKktY6Q2nWziFGVnvQl166BhyxfOivowDeGt2/00Fzu88d8SNOXl2xsMrt/E9rshbDJv7Y7bBF5zwikRh0e/dE0plbWK0WDZklkrq7iyagx9tGKMOLbPqymj6Rd6nuGaSvzatuka+QX+0/GW/sEC/+l01tYmeP5RiqdAuoVgAB4z5kFLZ863vmv51nct6SKQ0MzdPZet7t0Ib2D8NwgznKF/DWWqbaOMM/jSTKR6Dg49Tc/QyywxOgPgr16C54PTqHzqQOrDFinE9IU+0RTVr37JZCrGPwmAb+0UHvU+AUA4qDxD+8f74dNLYP7n7muDdep+e2vLG72neEQsiYmBsP9aw9EUvrB2ZZLdPOMvnG5tptSQUZbMn4CMMmui55j2guLab0MnrrQ29tkuXl9LVUMYff0fvOB9iHG+q93FoWyNYp0toe0Wn7s6ECEU2YSE+XZA0vhDgoGJYsORoXdvnI1wyZszOfiRnwiEd8wkcVSGOWqgOz3bhZyHVILxsw/fIOW5PcgPKyVUPc6ImzZcZbxHT00ds2wSCrdsK2aw4j3/KHNISBsrjsFj2HEL8AY1AFcYH5BXkZjUhZjnr5uJW/CxqYdwdeQ8XjeVgb7V8xr+dUrzKWhkUGwXOveY6PkLbHyEecd/HAD1wTC1MoVfGlrzXc3hfOOLib55hEVIGnT47hxyf7xeDYZioZ5o7cEvpc6iuixGVQ0GtsyZGL76WXppy7c6Zr61MMNBTHQm2z02PzkOerCSdTKbLqHXCWl/Pi6v6eoZmhv8cKWpDPbEZu5IEu4Ri+uMt6icG7MB+/1vAkc9OQkrrBabPFFLKKK+++vLqzClxhPaiVt8DdFQRiiS9Pz/cjRl/JsT859arKpEw+Zfu3L/VViUpTjpQlqJntT7Z9Gu+F26a6vcIpd4z3+v8ETONz4DICC91Of1Jn5ZjS4qt0RO46W8K93xaKHYe2knubLPAIaMGeKAJyfhHg/Vf01IyEah22Hm2e14JO/mhPGfvXvyvjUCDYnpMHaiRWRV2b0ZGX6QYcHHWdHyQLfCFylZ5j+FBf7T8Zj12FIQCtSzTLYkjcSd4TnhK2kl1+ETiT9o22H7nBy+nvKsvgCM9+wNQFl1LHQQbNhMvLh0AVStJC2sQgvRRW5b4jtrII+YR23R3FCgnguNT+mnLWvWNbyhCsqlYsdslefrLNLjCs4AoCa1A8WtDnZDa+PsXf70qdMJcKb+JeHVKiYfjQosK6t3jT9AnfOZaVaQIF40IagORBj9wmTu+XJe4xO7927ydeQMZsrjGu9U6su3WyOSpPFnI55/Mx64pomNnuffhurKMgL1iR2xlqf2YabdRRn/+PDCH+8zqO7HhLlf2Lu6f/c1Y8bYQsOyJXPyDmSG3QUA21KGvUTmUh2vAColE6y+zPIOdBeIVbIFE/Wh7pQVhSM5NBRLAENiuCaK71MP4mnzMBo2OJQbWcs5+uecZHxPldOsxXa8ctOWWOisI5eQ8HMdl3JG+Bqmtox5cnfV3IgmJNn1S+mnLXM7igHcFzmB3+zOfCzUrmK63dWN89tOGGm9zCFoqe+NPyOPeunDqI01iwnHdyW7LQu5LEZDBuCJoUQeGYhwjH68519fWwW3ZTH1k6caPY/m4OzINTxs/meL5kYpj7d4XtvMTCipDtL1uk+YtGAN/kgV7cR67jeeIVy1aRLGJmGFMKXm1nNcVnUcVxYPI+CEz/bUGjsGW4p2Yj1eYblhuvq42Hy88Q/U1cCMV8monEu6CHLO8mv4Y3U1Py0q45kJjQsQo4iUxr47hDcgAbx0MLx3+p++901hhzf+G8n3qmNO/W9THfyaY8ejlzB3AIpQ1iOdqXowkb6YGlzPBLsv36cdkvBl3xATrL7cGjmNOyMnMyZyEku0Du6xdBHEV7mI9Smd+NJSTVqihv1I/WeG1X7nzv085TBmyq50DC/C0rwcF7qZ40K38KwRM762TJRhUIONjf/Pvj3xiQiHVr+ZMP7f6jHc6FFjd3kvxZbCZWfkrhzHVN/5POR5kpzK35hgD2C8PZB64Xdfny9VrFoPKyOdIWLPZZ5sz5nGV+6uxU+YFBFGWhFsJwxxhfE+nvUqF7LX+tdIEyGmZMYS1pGAupfoQrni28cT7n+G3YVfze5urP/59AvcY+UlKk/Qetb/NXoezcH9xjN85b12i+ZGQk1XOjeFhQvnssh/Kgu+fZ7x3uFMtbtznPEjZu2fF0Kbmn8MP9j92XvNs4Cifl5sfEydr5DnzYMZqc9EWs0Pq0gped7rMHmcfEJt0GQXsZBCKpBxtRpmsB4+vYQ21Yp5lRdaSUV1Lfcaz9JTLMe0bOf1ESYsjL3XhvXFsXPUxLGVwg1QvgjyGwsWbgvs8MZ/S2BLyau/FDca21Jozgpj/ZuM/2OD4OVDmzxUbyUmTvcseZXR+lh+9e1OONR04vsTa3fesfYhiJcXrFE8Zx1KBdkJc/SG9eQ2LCeFEI+ZR9Lgb8lj5pEM0+YxvD6mgjnBN4K+Yinn1z2OLTSmyJ6soQWhuJxK0ZrP+cR7EwDjrf5qsIkfd3ZoDcfoPzEimJiz0R1PuUxm8kfKEBrwQ8TZtkdqyBc1HKNPJLdyNnvImTzkeYr2FbECpgwa+MoawpvmvgAcFbrdPXasPoHzjc85x1a6/7215bxvDSdgCeq8+cyz23OIPgV/+TznevVEpM58OkL1agg3sD5vMJ2Dr/GAqQTivpNDEu6/QfpIFSE0GWGR3YYlehF/rK7mf2MXommKWjtP6xJ7wZLxcFsWlC9p9Iw2huOMH918zeYQCW15stafporl/OFyPvIcyqvW/s45tnwB2RAVWh4+InSrV4b3eOMH9tVn0RAyKXPCSn+mqC5s2WSjvHHh6PjUBk0+9N3Gp76bWJa3J8+bB7PSzsdyGGXveI/iTXNfPFYD9trZnGD8wFe+66kpUd7/u9NWcdpLsWrkQENsl5dg/NfNUbmtlv2afd9bgp3a+LcJLeE779Xc+f4kbvlkTsKx5thxVzzM+hfF/MsXQ/FPjYbXyWym2ImehrAtckUdeeG1hKTBOpnd6HVvmCMZpf/K976rGKH9xiHar+TISvecoDz9/us/5jzjcx4yj6MhvR0PmcexSLZNSPjmRUrIF1UIaWOHgxypTeRFz/18a57uzvGFKvAKi77B5zkj8l/nPhsb/xuqb2OYNh+fTOzypaPmthA19GMR/9Ef5pt8FS+Ol4mQtslj2kMco/9Ep6pJCecI4cFjqh9uHSlUOQ1hDtXVItGDYndurUyhLmSyJmcIJ4dvUOd2pCFEpAGPsMgrnwYP96L02SMIhE0GiYXspak4cyWZrF2zgtFPjGVFeQN76nMYpC1imacrJjoDGn7h0Mcm8ui4RVTWqkVsghYLk1XMmwCo5jXbA2YzDGt6jeLcD26YiNesxaMrM2Ru4QLy64v/ZcLj5yHfPVUxeoA21dPYS/9DfQekZJjmMLdKfuMKQy3CQSc0tSGTLwHzv4CGCpWYf7gP1s9P4BcOXdgx/vW16ntdKKqo1HK5yxzNXuFH3ArwWfW51JGCz24gUBujJwfWzAUUa0hK+L/vFnHFO7MIxtV7JBj/CidUlPT8tz3ksgl00dbQSjT+QTTl+Rdd90WjMQAn5P/vC/ukNa5ALBRV9NJWJIwJx0u+tOpeQnoqw0JPslc8nx1owEdrUUYbUc4r3vt40vsoPe1FrJIteN9SsgzStkDa+IiQRzUyEiSPajTsBDXQW2rvpK9WjEAiQ3X8n/dJ9tDm4IvrBRxdLFqIavqLJfQKvsj3Lc9s9H48TpK4kfGPi5GfFnyDKk8BNbbDNrHj6J2W6bKPpLSZYXdhjq3CWUfqk7jX8zwAtxmvsH/oAcZETnJfGp/8PsP4hmD5SiKWTQAn/u8Uf0WNynnl9wGQXzYF/9qpvOu7kwuNTwFoGVjM3Hfv4Mn1o/lhbswb/zzzeIplIVfUP+yKztVWrOWeyIkskW3ceT+vUAvCd+tjEhWbRFOx0E2gJrMHL5kHxgr64jD8+he54a3YwhnNe3jtAE/XXcpNusoTbKnnH142ifT10xBzP3G5/APKldaSIU0wY5+1vu53N+keDjawpLSOTjd8yXdzGxeDUVcKb58E754KDWVQvRJWK82kR8yjGdfmfHWeSpWbaJA+0ivncbg2CZAE6pShv8fzAucaX+AnTGV5iXv6SKnadVUH1Pt/YeIyPpq5mtLUrrxiqt3PmrJKZk/+XvWOKNoT/vMKZG05ZbQ52KmNfx0qhlsrG5fGNyfhG80rmP8izz+U2oryNns3eWyAlhgaiHrUGhbBoDLYJTKPkDR42jyMzsHXuNfzPAO0xKTWA9pZ7Bl6lP01tRVXMX6JR1hM919A1tqfme6/gKHaAtfAQhzVExvLiZsHhTehCjTK8x/vu4pPfLfgNTQisnGCx9io8Y+jpOopHGt/Q69KJfKWEBuWFrpzPxGpc3T4DkaF7+ElM1HGYA99DpminhRiC0cNqcyz27n/jlSupnPx2/zku9wZSDT+ebZi7twYOZOUSuW5Vsk0amUK2ZF1tK+eQoYI0L5S9R4olZlELBsT3Q1NAFTWBjheH88pVkxiItNUDo43smlJidjb3vJ+yAAhy2aq3Z2PrD0bHfvOezUd5sRyFlHjnyIDGNKkQUujRqZiNiHM1xSiFbu2FDxqHgnEalE0aRIJxTXmqY4Z33CggcXr1XN6fXIT9RNeRyk2oxXFv6uKXuFUTs+z21NrK3tRprXg2NAtDA/9Hx3Xfcuj3sd5x3sndlliFfHX1hDWrY0l8e1qtWhUOlKybUUp/cVi1vg7c6t5Ot2DL7Nwwrv0++ooiudNZfxaD0sL9ttu6qA7vPHflKRzAVUAFIrGqp3NceKjMf+QaXPzx3+wpHTjZfv/FIyt7cD4eSUJY9GcRVVcP1vA1drXpAXr5zDdfwGL/KfiEyYDtUX86LuCPlpx44tIm6uNd+imqR+AKfWE8I50FhVLio3w/CU4jKAQPnQhMaP6+hsszlcZ79Kz4ns2hCeOHirjaKNP6qdwfOhmiu1CTD2Fo62vGFCjXl/tbcVYy6EGWqbbc0DaNjoWudRwr3kik6xeTLG7u+qi43zXcGVcf99MGvDEef+h+mr0SF1M+91JIC7wq5hudJGpkumuJISFRj1+vFYD6VIZtYzSmZhS4x1rHy4vvZXD9A3E1CqLVVc1GasVyDJVgrrNyqZ3rxsiEo4Zf7kFuwC9bB5Dtfk8Zh6VEFaRUiIRCcl52/kMP7d2w8Bimacr/ULPU1I4vNF5NwVNSNdxixbzVYosAvUx4x9y4ulXhC8g4G9Bhk/tTFZVNLHL8KaC7oPM1vwwXbGDFtOOK8Pn01NbQc9SVeFeZXqYJntQRhY4C/cwbT5Vlp8FtvLS56Ttyo3eaxXLDY166YN6leStbFD3+qznf3ziu4VgdRmtKaeVKHdDhmLFL+S+fSiTPn+pWc+kOdjhjf+m0FqoH0SvJqooy+u23POJGv95a2t47dflXPTG9pPXraxvLF72Z7DIbsOx+gSq62Ox2pBpMd7qz3JZmDB3YpbqUqRLCzOYGJcdps2nrWhaS/4o+R0XG58AsMRuRWnhHolG2zH+l1lXcHPmGHdYkzbL7EIe95+L5cwJC5/6vxMXrvG1TPCqj+BHOtY2fu5eIrxoHkTP0MvEC7V+KfZksuxJqghh6X4sYbi0yeV5e3JO5Cr6Bp9ncpvR7mvSI2Us8Y9mhv989tJ+J4wHLxFqabxz7Bx8jU/t3emixeiLZqAGHK93F+sVvmmpGDo/pCk6ahSjjCmK6YEqHmopKmlnLifDMf56oAxD2HQTq8iwGnvyRaXjSRdBBjHXHZufoSi4dsOWxfwjls0vVi8uCF9GeAs8Ib2qmNONb8kS9YTi6l3CpolPmHiIy6M4u4q3zeEYRBCGCoMFN8Pzt2xJVUPi9/8y40N1fTvMbLsjl/nvIuBw+y8PX8hakQ/AT3Y/AtJHJNTAD94rOKC6sdxyqLYMrBArly/GG1S7sLW04EN7OHtqvzOwUhl///rf+NJ7PbcZL2PF5SkCgQBh1OJi6T6yUz28Zh3ApV2+Y5rdndKwBwKVpNat4Ehtomt3Oi15hYm+y8gn9lm2mfk/+rOAU5bftMlnsjXYqY1/xPmg4mOzUbzyy6bL6uMRDftErO0b8x+/YD0D7xzLz4ubNraTFpcRjGxZlXE05DV3WSx+HAqG2Ef/jc4ikW8939uPz6xd0bBIWdHYu47H99YA9+9BMmZ8bIfnPzn/aD6PUj2d8EqdSKOO2NZWYDNLdmGW3sf1Ohd4evCCeTAhp4RzUcGBnBCOFW6F8SJkY6rn/ZzO55YyfPHPpqu1mOP18RSIKtB0LOFBd4y/yt0IakklaBucGL6RQ0J38352LKfwvPch9tZ/Y4C2lPP0zxKu+ZJ5IBY6V0UuICQ9fGmpxKsZqAU7giUFmi+dgOnsasIRtw5gut2VPK2ukdRBtlVBukMn9TiG6QB9On7Z2IPNCKkdnREX2voxZX/WyWxEILbL/XFh6UYLE00jgxMjN/GtPditXN0UbOd+v/TdkMDXDznOwjnGl+5YZXpXHjGPRsfGkBapmsnjnkfIXj1+k9f48qW7WX7vsISx6G9XsyNEMDAtSZ0nj9PD/+UXu5d7/UP0X7FqShA1qynS1rGXnAE/3g+TYuGomuJZACxbXUKaEyZba2UxWMzHRmA4i1a7krH00pYzXJuNHYk5Tz1WvUdfZwfcJriYD+tGM0TMp21eKh/0eIhh69+F+4o4sP5j/s/7pPs6GawlgJdpsht7hv6PN8198IS3LDy3Ndipjf/jTrywKePfHMSM//aN+U9zKombai5TUh3kpOcn8/UfJY2ONYJtcbPnDQDM+ip3OBRQX7h0kcjcKAgWM8vuwtf6vrSe/UTCsYq4piRfW0P4b+Q8rgqfz+XhC5khYyyFrtpqckqnst7XgZ9tpUEfDcMcqv/M4Q2x+PRzxknMsYsYEJlNJCWfUaG7eTXzXO40RxNyuPa2najnbwnDFWuLx/v2CNJ8Gg95niRYFUvyvWDfyt2GStbOzDsES3jQnMWjb/ErTPedx3XGWxSVT+AXuzdzZRFBO/Hn0iDVbmQPLZEpNtPuyp3Gi/QVS7ER5IkaTKkpj9hSRupM4ysGrVZibDeUXM7h+iROD1+DhUaaCGM54a7nTdXu0SPD3Bg5kzrpRw/XcmvkNABS7Tr+sIu4KXIG463+jLV2oVgq6Q1NxJyRYF0l1TINPVQFwLzFS3nypVd44PPGkhigKI4n69+xxD+acHXT36kV5Q28MHEZUkrsOLZPvMb9hu0zAapSi8iknne8d/KEfRRLs4ZxqD6ZlOoNaKhSKuNcWQzAQSseor+2lDfNfQBVgbxOqkrvJ7KvYqrdnTtC91Fn+1hkt+FJ7yMskm04MXwjd3heQS+bj69a5aV20+fC+DHw7Y1QokI8Eaew7mXjP2SZ5cy1O7Amksb7vjtIE2EyzHIYfzeaQwlOFaEE4+8Px4TcVmf0I0vWcKHxCYeUPM2ootjbOsGOLYQARqCMIF4kGqtkATeYZ2Maajc51tdYrHBbYac2/pVOZWcqzef/xiMa9ol6URtTEt1a6JojQ9DENry8XnkldaHNJ82ifUcB9DgPIxJU4x9YeyXMP6biOY7UJ/JxXc9G54oa4A+svfjQ2hMLwQf2cD6296RUZiXM9TaspVX9AnKo5d7ICVRkdOfeyAl0ZyUHh2N6/t/pe9FHW8YVoSexNQ9zZBGWL5sUgoTDykD3W/UW3/uuBuAnqw8memOqp23Tw17EYE8xx+gTCdfFfpwGFgGU8a7zt8EShuv562YdeaKW0fq3tK+eyuHaJB72PMHQusRdz73mCUyw+vKH6MINkbPc8T2MuYw2vuMz302kiDDDtPkcE76NyZkHsNbfma/Yg93kbwysVucz7BBLZGu6i1UM1RaQQw0ftjiXouCbLJGtATg1fC1vWPsxzt6FsCVpcO49TdazXBbwurU/Z0Su5Vzzaj6NDAbgXWsfmPMR2BbPlJxAN201vkiVejSLv+cd352sWNq07IBdsYwxHkWjjIQCSt75pVFQG1sILnlrBnd+Ppc11UFknBGMZ+2EI02EKYNVtBbleInweOQIVrRwYv0bCrvVrFHG+R0VevMIJ/mPj7Uylz5aMXlO/mSdzMVHhCHyd8LVJRyoT2OQtghvwzrqpNpVmuEAdlyRYiRPOSeVa1SiNtSgzlVt+bghdDpXR87DdpLHdVomBeZa+PE+WjSoRSqVII/rJ3OudS2z7Y4u229Q8Ckmt1O7xH303+hY8RP9FyU6TfHwhCrc7yJAFvUYZgN3R07kbs/FG33d1mKHN/6bMsRRtck0seXx/XgW0PqaIDXBiGv8A872eGtN/7y1NRRd9wWTlyZKwupi4zIStUFl+LZk9xEMxH4AWiiWFIzG03+1E428Jk1aigoGa407eeU7P77Xzf04UJ/GJN+lHKxN5lj9R9oIleCaZ7cHlKc/pPxjTjO+5WnrcKrSO/O0dTirRCtF0XPQ0VR6+AIbgtWcrH/HMfXvMM9/Jnb5IgB8kSoKRBVFwTcZHbmBiPAiUYvf2mr1PuxwPR8aNzFSqi5h4UAsEW9gYTtf/5bh5TxacAe3ZDlyEbZFROpY6BhmA496H+co/WcGBmPdxgBM4cUnItiajxWygKl2NwCO1xIXiV/tnvwmO7OsrJ6Z2ftzh34RIV8u6VYVoLz6HFHLaGOsek5Coz5k0ksUc7quFsV6/PQSxdzKeVxlX8YDHlXJ+qvVkxBeTtZVhXRhhh/NCU80SA+8dzql3zyAlwjvmiN4zqd2DHK9CskdW5dY+RyFFYzjnocClH7zACyfyJofX8K+t4jImye7v60V5Q2YcQypSNxzDnhy+cYanJCfabPyCw7Up+EXEVpTRrZXEpY6RrAcvr4h1gHLUfwkI7FL2cn6d6yQBbQUle4udUT9N4zQfsPAxFj3myszMbz+W64x3gHguXFzmLwwxr65JKRyLr8tUwta9PtxjfkMa2jBnZ6XuFF/1Xkf2er/0stqVB4hlRCLgjnM8A3h8PAY5mrdqZN+yskCX5zj48skqyoWAo3HSjufOttD2KH/AvzmPxeAVTKfmsC212yKYquMvxDiP0KIOUIIWwgxeINj1wshFgshFgghDowbP8gZWyyEuK7xWbchGioYZ53Bifq4hMbiUUSN/zPmKHdssJjvFoU0BZfLX1/OLffew74P/uCGfaKaH811/L+fv46S6pjnNHGR+tJ/MyeRi2wIk//oP2A1UckaNf7mFuQdAk7f0W+tQVRlxhq0RKs0R2iJvXeFtMgXNdzheYWHIseyR/ARDg/d6R4vlVmE8NBerCNFhHnK+wgPep6hj1jGDLsL42xHLsK2ENImlRDtxTr0UA3txTo0TeCNUjFtm0fMOximzUfDhrr1jPG8SHuzWL0/N7xgY0qNTmINw8Q8Lsl5iqfzruPYpyax2z3K+EYrOoOG2uGZjjaLtC00IfE78std66YgPanU284P0I5gomMJPUEyooEU3jBHuovZWcZXDNPm49csztc/5XnzEKbZ3VgWJ2vxmT6S5Ye+w12FP7L/sgeJWDYeXcPy55Ilq0BKvDJIL7HcTZxXkMn+pa/wrvcOumuqM9Vjnsf40ncDwzPLCAVjbJZHzaNYK3MZ43mRCb7LeNa6hUuNj7g9MtqtX6mfpxaG96wR/BpWUtS+SqUns5vVNDkh2m4y+hxLVqvn/1ukDbWBEJ8tDHCU/hNLfScTmPc1v7c+jiNCd6j51WuZsLCU5eUq+duAj9Q4qWviaKST/JcypPwT6kmh3+q34dcnYPrL6qCzy6gamqjL7xMmPYXKydVLH0jJUYEP6KSVYEiTyuqYQzNQzmW4rgrlUkSI9ZVqpzve6s+cctVRzmihehaYTtins1jDWfoXbu7LlBqvtriKWXZnNGz0gPqclstChkd+YqQ+C+cEpIsgxf6T6FcaywNJXwblBzzqdpyL4nHzCE6NXMcr5v685T++0WewRragNmhut94iW+v5/wEcDUyIHxRC9AJOAHoDBwFPCiF0IYQOPAEcDPQCTnTmbh9oOjnUMkr7lSX+0XQXicVLXiKsl9lUEit8Gagt5jLjQzJpWlXRtCRSSn586wGe9v4fkboK19NvcOgkmzP+04orePIHtdWUUnLmy9M45qm4Ihjnw9Y2OE//te/xgOdZ+q77tNE56xrquc14GX/95svxg47x/8YaQtCT645HHOmGQzegDmrOwlkuM3jFOgBN2MyVHZhs92Cy3YMhoad4zPMYQ+LEzQBuiJzF0eE7OERTHrO0bZBKB2eC7wrarv6KCb4r6MhqvA4/vvqxvchzWA9CSpcRZBtq6+6W6EsbG8H3vqt5x3cnuiYwbcnA0o+513gWMxJxdzJhj/LCop5dlC5qOgl/qfnYveF7jq5/V13Xcow/eoJaZiWZ3Giexalh9YOt1tWzCxvp7KnPoYNYRw61hPVY8jovM4Pjh3agp1HCrsGfOGLFvbxjXoZMy8dPhHBDDSkySLVQ38Gw1DlLH0OfhqmuV/uuOcJVy9zbmM0LngcBGGcNZKUscN9HpgggNI3VsgUphDlQV/1s14XUotahRQaD638EKUlpUIY1lWCTVM5442+GAgQjJsV2IeGOIzGwKDP9dLGWoQlJi6WfEDJtimVLXjH3Z42dw9UvfsMhD3wF5Ys5Sv+Z6bIb04oreGzcokYd1zTdw0paMjN9BBAjI1SUrgXgzh8b57gyneT3XeYp2DNedes5vMJi39lXJ74Xp/6jr1hKjtN05St7KF94b+QNayTrM5QJWpy3LxGpky+qudnzBtlC2YAgPnxeDwO0JfiEycRIT/YNPcjI8EOcqX/FaeYHfOG9nvzIWveauq6xusMRAKSk55DaYRDHh2/mEfNo97N73dyPDmId04Lt+C0nVjeyxG7F4vTBzJFFhC07gT21LbFVxl9KOU9K2VRX7yOAt6WUISnlMmAxMNT5b7GUcqmUMgy87czdPnA0TvbUVUKu3wZFSD5hUiCqONgxTncYL9HfKXBqK5oWmTJtmzXVQT5fpgxiOgH2Nn9msu9CAhvRvdkQxz79C/d/rR5b9INdXaW+zFJKt1etEHDqi1MY88VcPp+9hunz1f2nhhuzfXJWjON041sGL316s9dvwM8b5kiKtBI89TFmRnVqO2baXRrNj1bf5olaZvvP5SffFSz2n8owbT4dRQkzfefSWVvb6HUCuNx4n06as63WUyGumCtaPxDW/G5Hr6zKmPqihu2Ko9m6k+h1jb9Exn19jw+8zcHV73KP5wVOMH6gsmytu5iZftVnNaqXbqFxcfgSbrZUO8WKjG70bZjCQeFvAVid0oOvxJ7YaOhx1b6aNPESwSfCPGoezSKf0oh/sf09ANzgeYvO2lq6R+a7jWWkrgyvkd+FFqIaf91KDGy09HxqZCrr1q3lJfNAZqSq4qga0giGLbx2XOOauEBioV5DV6du4h1rbz733eDSHcN4iWg+2ov1dBTq81hst6ZDcC6L7DYckl3MI/r/EaivITWidgWakJQumMSs24awcOZPULceeXcbfGtVy8pZdmfqPbl8K4fxvHUI0oqQJkKca3yBbjnf2XA9RWu+4BrjHW41z+AP2ZHvfFdzpfE+0mkD+bG1B1c/8yFzx73mLiwvOMlsDC9nee/j5DIVklqxdj3BiMXkzAP5yhrCweWvIqXkgPCDCTtOUNW02meXJtRzAKzsdAK/OI1lSshlVGgMpxljGaH/Ro/gS7SghkzRQI1MI+zkutaJPL6xYwGMeumjXGZwg3YZ+9THuthV2CmsNVQYy0+YiJ5Cb205E8xefGM5rzdSaHPGq9CqP96sQjL9BvWk8Ih5NCeGb+R+83jONL7mZe/9HKv/SPeU2AJXSyoRW7hsxJrg9gn9bK+Yfxsg3gVd5YxtbHz7QFM/wCi1sGaDSt5oxegpTrx0V20u/YUysO02Yvx/WVLOHvd+7/SYhXQRYJ/ITxSKKkJBp8pwC+M+ti0baZg/M2Epj36/2D3PhIWlPPfTMm77dC6fWHsAENQa88rTK9UCV+3dfNPoGj2LF62DuMT4mNyy2La/QfoUPW6DEv3XUkfzm910O78CUUWOaLqo7ULjEy53DNPPVm+WFR6Q0IQlyvZ5L/NMBpgvJ7z2R6sf1xtXYzs5jGinJtNJ2JX6ixgnB7nzdwlNo09wmvvvqtI17i6hJqcXu4SeZVnO7gBEpMbn9m6sooV7bql7XcmH6dkHcJ9+Hkd5n+Wl3FjIobu1kIX+05jou5wrjPfRPCpJp4vG2/LuoVf41e5JtV99vQsHHgLAAHM2ljCo6XYs/ULP8+P6FB42j6Wyowo9phLiGXk7KXHG/3jjh9gz88d2av21JbSOkyaJCC+W5qWVqOA/htqMP2IezXPmIXxUdDPp2eq7MX/SZ9xknuWK0i2YPZUBLOTjWatZO/t7RLgO/8yX+M4ayDWR86j1t+bL+h4cpU+k5bIP3Ovplnq+hhmgoGoWh+hTKEjVqChdS6ZQVcZ2qXJy8qnmPe8dPOV9hGB9DbYUvGgeBCjPP91nMFpXOQ+7oYKBd4zlgjdmkCtq6cBaKhsiLLRbs0DGcgdRzLU74CHCq+b+FAXfZA9epN3JT3CJ93Y+t4YRFH6WSdVgXSXU6/ivR+UBpvgvousSldhOK/2N3bRYbL5GZFAsWzLdN4yFWXtwZ+RkQAn33eR5nbe9d9JVrCJsqKJIH2EVqgREtCr33B/hkAcwHP2iFlSzzG7J4fokzjVUwd11nrc5vepJbjikB3cc0ZsB2hJ6NkyN3Udg+zR52azxF0J8J4T4o4n/tp/Hrq57rhBimhBiWmnpn5R6dTz/oJNJzxSJtLNo9aVfKKOdLgLMkyqe21as5ybjNfqJRPrZr0vVj+0ip3gpnQAr9PZYUhAOB5jrO4PB4SlsCQIRi6CZmIv48vc4DzpuDdE1WCELWGHnExCNy72XpKjGIMEmjm2IYDAYazcYl2gVtWs4XJ+ktFDi4oy/aX1cL2pTqJDpTLdjOYT43UBUz39si1NjHp8T0tG9PgKmwLalWyG5SLZhtuiOdHYH9altedQ8klrHmP7e4hCuJmaYbWEk6PXUV6wl4MvnkvDFNBSoRSK6o7LCQXbX/mCwUBIKfhlCah63EMm0JIYuELpOtUzlsNBdDAk+wa36pe75TzHG0dVS343dq2LtFwGm5h6GRxecEL6ZWa1VLLdlt8EqEQiYwkNmqtoRzF60lEzqaJ2vjPpC2ZbdtTlkyZqEcKSLVEVtDEudixzdn2hYw9J82JovYfpj3scpEusYsfcBeDPyABg46SLO5X1+8w7kD7sIvU7tJHap/5kSUzkWl9WfwTmRq1gncwhUrSc/vEqxZ6pizVr8IbUDNewAmtlASPh4Vr+H4xddAziU4VVqQX7I+zT5QoXz5obyedA8jq5OPkMYXs6x3uZ6j2pWvzilP/ejtIqGafPx2Q2smDeVc/TPud5onKB+zdoPHyGXAdWgZYBukO4zkAgCIo2zdEWvnGF34TynwVCJzFFS3g5Tqdfq98gTMYXNSf7hVMp0hugLWae35CVLfW8HaYs42f6MXbV5GMImoqdiScHlxofsrytnSvOmwAsHwpvHJdzrFP9FfO+72v3sXHhSOHd4Z07drYjLrCt4OuMS99Df5vlLKfeTUvZp4r9PNvGy1UD8Et3WGdvYeFPXfVZKOVhKOTg/P3/z76QpaBqfib3ZVWs6035h5DJ+svrgc3YA6QRYJfMJSYNdtXmcbXzF096H+cB7q/uaaDw+2t0pQwRIpQFdSPrW/kSqCHFMw8YTxvFoCFuNirL8nlgZvJTQUyynrViPJgQDxGKesg7n58xRiSdaPZ2lekd6BV9kYuHJm72uZ/UUPvepykFpWUrF8NUjyVn9o5t0jG+M0iP8B4vsNpRKZYzGiHPcY1GRM4Af7f6cH76cs8JXMTp8HbPidgvD9d/pUPItpd627i4i6vn3iszlLuMFwoEajgvfwo2RM1kiW7OvNYlAdlf2Dj3E0taH8z/zOCpT1OJs2zKBVWVpica/Yv0qHn/pVb6wd8Wf24anPQ8z44vnmbmiEqu+gje9d9O7qA13aufTZ98TkLoHw/keHLPybt6NXMrZ5tvsXvs1v8tOlJKTIA8BUJaqQmStQ4kOQkVaZ8YYz3OU9hNex+NDCH73KOnpkJ5GjqzmMc+jnLnkcqb5L2TowIGc57uflXkq/BPGYELKSMZasd3NHZHRaH61gJwaud4df4/9eMfcmylpI5ifkVgEBXC4PolerdJJyWrhjg3QllLZYhcODd9Ng7MoplPriqDVSR+dxRpm+8+h9eQ7+Nh3i3pvMo3LwxcCsdyJxwqiRQKEhJ+AvxUtwrGftNEQIy2cGL4RgJV1gjr8vOx9gMfMI6nN60dXWy0qD0b+w9hwvwTJihSzhoKfbuJGz5sca0x0vz/XRc7mefNgGqSP4eHHWKW1pdh/EtdK5cnfHvkfdTKFyzMe5CpHdqODWMdR+kQuDF/KEaE7CeKlsGoGvH8mRqSGhXYb18P/Om80XkwuCL3I6qoANppbjFeu5bn3Z2s+wiTKoIezOirph0XfwiK1ozl6oHJcUptgFwpfrF7mR8/ufCBi/P4omWNbY3uFfT4FThBC+IQQHYGuwBRgKtBVCNFRCOFFJYUbZy+3IW7TLmatzOUXqxfvWXsnHLPRqCEVLxEENukEqSWVfqHnedZUWvfFdksGaYvoKpSXEuXY1ztJqfUymwJb7UyOcWhzlXpii8F4HBuX2A2ELbekva1Yz3sPX0YbUQ5IDtV+IRgI8JXveib6LkcTglH6ZK433nQppbXBiJJ7eG5frp93FAYWYVuZxMe/X0TRdV80yRRI0F6XJsz9BJaOp9sSpSNybeSchAKqSwJPMlKfwUS7L6so4NwLYgk109Fs+c4ayCfW7vhEhHH2IH6y+1HhLBbRNompgbV0rJ9Ja1HOTZEzWJk9hJsiZ5AmgpxijCNUX82R+s9cZHxML7Gc6+xnsTQfxbIVvpRUWlCN6VAQR6x6hq/FpVTLVCZavZHCQI+L++bPfYkHzbt50vMImVqY/bTpPOZ9nA9e+T8sR/UxLzuLm2+5j9Y5acrzdxYP3Q6hIdnbmsTgwM+coH/PQ54nOdaK9RwAWFp4AKbUqDNymGz3YLbdEYDC8AqOEBN42PsUfctiBT2P5V7PmMhJzE7fi0y/h8P0X+lBMfN8/cnIyuWZ688jr5VaTA8O3cuXrS9mlWxBUHroF3yOl6wDISWbFXY+ERlzEmq0bK41z2VcwenMzj2YV83EwqAs0UCG30tGToFrvACGpDg7szploL1WAMvJk7zhvZvvfEoqu0XVb7HvTjBAhVMfc3/4WIYEn+S61FvRrSBhzY+V0YYcYmwbM47nv1bmUiJz6GoupKNQeaDXzP0JZ3d2d11BvFSviLHNfvbuQb61jtbVyqNe42mPjwi2FBTmZlMl03nE+ySVdgpZXvVd31+q31g+lXTUSvDqGuVS3XOeqCUsfHxp70pOyw6E8NK2Zib88QEpgXVUksGb1kj2jjyGNyWDFBEioqewulL9Zq6PnA1AlaEc0ifNw/mu5ZlMFapw8WerN72CLxIqHBgLcTqspf8dP4CNIjW2mPgMLcHgby+659ZSPY8SQqwCdgO+EEJ8AyClnAO8C8wFvgYuklJaUkoTuBj4BpgHvOvM3a7Ip5pSshqNn61/wSh9Cj4ipBCmijSqZBohvHgdDe/XrP0plxn813gbiHn+9dLPl9ZQ5soiFhuK393KXkeJzOG06vNY2ZRwFDDNrc6VBCIWISfs01Os4D/VL7O+ZBUHaNN43PsYRaWx7laapnYmmSLAkWsfAWDY3ePY7c5YyGG2/xx6lKvXPDpO5Q2iieR4mPHduGwLu53q0VuZqgzPFLsHETvmV+vSopWo4CBtKkEtFcMXE37r7yTRX7IOYl9tFhN9l3OU9hMn69/RRSgPcKrT1FtKiz0qP+U/+o+8bu3P+rTuvG7tT0OKisdGgg3caLxOa1FBJ7FWST3XruVc/TPa1v3ONP8FtFqhtuxeu54sUUf/0POcErmRBj2DOuljZOgBLgxfygxTeYcH6VPJqV/kemb9WIwVcX5Meiy38VPRJW7eQUgLS+jY6GRZVdzreZ5j9ImMYHrCczQMA0PYmJqPb61BfMZwJsvelLcd6e4mfSJm/NJ9Bs9ZhzK54D+k58R2syWFI9y/Na8Ku6SKIB1SApxhfINfRMgXVfQTS6lqvz83m2fygvfB2EdopHCh/gl5RhC/AdmijrUylw/iFTaFoFVRDyoLd+PDtBMA6JZaz6feG/EGnfBNuIY1BXvwk9WHlLj7bmWtZa7sSEgadKybwf88TntIK0wp2ayOZBKQHmr1HPRctbGPqp7+QVcuCatCpRuNN3kgcjypBDnDUPULvbTl+GTQXbhv8rzB3cExXBi+lCUnTGBlTqwnwZJOp+AjTA9tJT9nH8Y551zMiL5qwb3VeJVeunLQovUbpp7Krto8/hP52HVEQOVGXj5jCK+fPYyQUIthtUwlEg4yTJvPz75LKSWTU8oeZoi2EEv3s3sXZZwnpu7LUrsltU5urUH6CPtbcKVxIwvtNlSTRgN+DF3EaH/+jctoXxVWMtF6Wsz4ew0tIdTzj/T8pZQfSSnbSil9UspCKeWBccfGSCk7Sym7Sym/ihv/UkrZzTk2pukzbzt8Y51NkbaOw/VfuEBP3GQcqv/KLLsTR4XvoAE/u4Se5SXrYC7TP+BkXXV+Winz+c4a5PRola7nnykaqJWp6Fh8kHY81TKVd8TB7Bp6AgudEQ9sXKfkeuMNiv0n0xCKEIzYXKx/xD7aLADahxZyhaGSaiPLlATD/yLHogvharsUBVUYqyFs0XKDXgRdahRzafcWDRT7T0L/8OzEi6+b6yoRXhs5h2V5Ixi7WHlqFWVqB3OkPpFIKJbE1bAYqC0mRYT5xHcEXn8Kp4RjYYdfrF5EpOEa+4e9TyluvlbKN9ZgZkoVHhGOnn+GCNBLFOMNltJLFOMx1NcwUl+J16ni3EOfg0DirV3BDZ63yLEUa8TVvJESCQwQi9lNm8OrrW/iFPNWlsg2fGnvynNWLDSme/zuVnsvewqW6fS91WNesGF4CDs0Xs2OYKNjCz1hN7FW5vKEeTjLbCV8161GSSvnhtdy8Q3/x6U3PET7K8ex18ExTX/pjf3wT659kXe8d5Du08lIibWE9Lfp6/5tp7ekVGbxivc+hgVju8Rxvmt433s7KR6dTOpdGuL9keOp9eTxX887nFjyIAeuf4HD9V+4IzKa7mKV4sFfoxZo4U2j9YWfctRVT7H61EkUFvWin7aM54L7MsnqhS9SQ9A2WOokR+OxNH0AM+iBbZq0EDXsG3qQI7SfectzF8eH3ueejBv4v8IxpLRQDsSX1jCqZSoiVEPQKWDaX5/OIG1hgtLpy977aVEx0w3ZLbLbkC3q+MoeSmHH3vze8hiGBJ/gHO12Oo1+HFtT50rrsS/pmTkYKcqjH218RweH4RRVELUciYRe5jzyRKyS3UuEvbsX0CLdx1ua2uFniQZ3N5Ir6rhEvO92RLP0FO45ui+/Xj+Sgb41dNJKMI1UZsqunGSMo1NwLl5d4CfMIfoUiv0nkbEulrDFl9HoedoI5tnt+dzelUvDF2F2ie3WfIZOQ1zXun8b2+cfAy2OWjhAS9Tb9mJSKnOo2CCxdoT+MwdoKlEVxMtM2YUcUUeRKHE9/zGRkzne+IFLjI+wJVTKDFKtGoZrv3GT8Rq2hA+mr+KQR1S3rHgBrWgR1ZqqAKc+8wNXe97jJEMVJl1rvE1PbQXL7EI6OIVNFWSgaYIM1G4ixY7VIGzYiMZwGBiDMqoASI//Ei7/BZ7ajZ7LVNXiz3Yf6jx5+ErUlrqHVLHry4yPsKrXwTy1q4jXvp+aNhyPrjHT7sIL5sFEpM6JkZv4P+8T7K4n5lZujpzOeZErOVRTRlLaFgJJgajiS98N9F3zAV/6bnANe6g6sahNk9Jt8q77VUzUDtaqMWljo/Gx7xbe8o7B0ASp4XLO0r/kXP0zeouYMJ/hjRlaW+hYjrKmiPP8u1T/yv95Hqfkrp50bZiBJQxs9IQ8wgpZwAPmCVwZuZCnzMOU/C9gal5y0rxk+D20ykrBa8R+Vp60bPfvbGoZps1n1Prn0OKKOLLbdnP/NtvvycnhG2grysjxqu/MOEsVyXmERU6gmMe8SoxsTOQkxtqD8HocOqkuwFDvdbG3J320YlW9HudVAghNo02n3hgp6pmmEmK27ESxaEPa+hmc5lQax8OT05YL9Vv5DCXFUCtTGKrNZzd9LhfYb9MQNknzGmR16M/DkWNIE0GODd/GnFABYzwvcm9E7TZOMr53mUhRaIaX8b59WWK34uvUQxVTKGUq6T6DVK9OKTkE2+yGEIKwrnadQVsZeE9qbEdvepSRlUI9f9uj5lqal9w4RloLGfvNfOA70g1L3meewKROlwNwvvEZlsMWFP5MfIZOyyw/V4afYpHdhrFtL+YCcYvapTb8xqOR22mvxYgpmh2GVgPUP+KrfXPVjvS09Gc4KXwDvUUxDfjxt44RKnxGoln+R4Z9/g2I1xHPJDEU4yXCYG0Bl+of0lWs4inPw3QXKwjhYZy9C52Cr7NEtuZHqz+3RU4lKL38vlp5yZ/Zu1MrU0gnwKHrnqRIW8dh2s887nmUs42vMDC56r3fmLu2htVVAbrd9BVvT1FFZuUyk2l2N8YvLFOqknHIFvVYUvC+pUIBE63eXGm8x6jIWLdeQbcjLCtTC0D1Btr7uq083HxLeTE18fmHSpVUq/W34lHzSPbVZpBVu4gUR9voUYcWCLBm+mdYEx+GcH3CAtqacjy6YI7/LM4yvsIjLJb6Tk6gHEYhkIzSfnV/FPWeXCAuBxFdVDxpBKWHYE1i/YKG7TZt0ZxQ0x4rnmbm/x3rsJFiBnRE1ce86r2Hmz2vc4PnLZ7xxjqNxRt/C4NgWhtOD19Dbf4u7nh+YAlH6pNoZa0ljSA/+/ciqPmx4q7hJ0I2tZSTyQfWXgTSVfJ5dvZ+jd57FL70GDUzyvkXjidYbBcSkF4K28QS49mpHlevxp+vxuOFB1NEbDH6ze7MWN9/2T/kGGvDD4ZakAamqQXVbqLBjXtvKeqZPuN9mDUyj7v088msSKzufsk8kKfMw6hsOxKfoUNYGdH7PM+59RseYXFF7UPsX/cpOYXt+NYezMve+xmgLeYOz0sUiCretEYmnDde7VT3ePnKdyAjww/R0FaFqu6SaoFL9ykD/J/BKpz0Y6GqBQg6dGRfasxxq09VTLFKkQ1AQ4b6fEzhS5DMfjKOSZOrN2AIp9ZGtiC1y+7usaqwMo8VfWJqrhE9jXp8WP48MgznczH8tKCCL6yh/GI5NatCh56HQU5HSMmOvfHTv4Szv6fG34ZKMrnaeJfnvQ+RY8TCbBsa/39k2OffABOd98zhfGcNJNPZKg8W89lNm4OXCDmijsuMD2gtyjlYn0oaQVen3UZDorGWPF62DqKEPOatrSGFIMPEPHRs0gnQXqx3rxetPIzv6LRwnaKPfTxLhUUKRBWDtYV0CMxN6MAUxUpZQI2jET9ddiNX1NHVaUz9nTUQj4xw2ouKTjpXFjHBioUNDMf4Z4bUFrhWi/04olrj41qezZPmEdzheYV25RNdnvrH1h7MdpgU06b+gr56GkQC3Khd5nLCT65/uZFektYEzx3gJuN17vCoJPJkuwe/FRyZ0LQFhz1TVrg7PUKvsNZb5B4ab/XnFPt2d46m6W6yclDt96xM7cVYEfuhtgsu2mizcY/Pz8ORYwBYo7UkrKfzgz0QKy2mGSPiQkC/20V8nn4cd+Tex7XGf93x3fS5zPKfx7veO3jDe7draA0ae2bHhm5hgtUXf07LRsdw4vp7hx+mZ+hlCjJj9NwcLchbXhUNTW+p4tkj9JhB9qbEFvs9HGdA05WDo3n8rud/ZuRNbCl4zDqqyWeizhVjmOjYVNZHEgTaPrN25W7zZO4zTySS3YmHrHu4VlehyH2jkgYORloTaWsWk+bVXXLEWXqsMGoXbVHC/CWyNe85Do7u8RGVpMpu25M3zX05U9yu3seeRbxz7q4c3l8J3A3qkA1A+wLl1Ojth3J/RNFp1xbuQ1HwTS5JewCA4p7nUy4zaJAGdVI9lwbpo60doyDfFbyXGkf47XzjMzrFBQFKG9T3um23mJMQ9uUyQFtK5/qZHItadD1YWMJDvqjmRvNM3jVHkN1jOHTdHy6bBXmdYyfNbAVtB7msvl186lmlBmM2xGfEHNacVE8y7PNnYaFjCIt6Ulz1zvd9d/CWd4xbOakLSZZjhGtIJYSHffTfGGO84BSCSbqKVRRSAUjO0L/hHd+dpIoQrUU5Hkx+t4tYLWPba3+clonl6O1YtqRIrHUrNAdWjWW27ExR8A26BF/lS2soVTKNkzwP07WNSggOFCpU1U2sYondiql2DxbRjtVVAY7SfuIc/XM3pgoqWQngM51FJY6y+cFEpXHy45Iq8p0dh7AtbKfiso+2jBN1FX6Kbv3r6+uYKnsyT6pYrqXFrrUhFtptXJ4+qFL7KG/aRxhLSt7Nu5C7IyeqCU5Ixe982RvqYiyRqXYP5sgibOf9CN3gaXGse3xG7sE8YMQop3ZcCCceT5uHoWcUkiNqqZJpXO25AbuhjP21afgjsd1KtKHIOplNpczAEDa6Jii2ChgZeoA+wee5OKw8xpaikkJRxeAWaoE/PGdVo+tOkz04NXI9KQWdGx1DJP7s4kNAmZmx+HBGXuP6R1+cwY5W9mrOe9c8fre4KGBk0YCPNDbeFN2XlkWlI8m9X+pixnEumYuUtHbH4OtcErmUDqKEo7UJ5MoqWkm1g5tvt3N3FNHCSa+wkJ5UPIbOo16lYPmVNZSfrD6sJ4eXvfcnXPtp8zB3QdANL/89qDs5qR72692KG8yzWeRVHnSG38OwTrHf1aB2yjp3aa1+Hy3yC1jsKJ+mpKtnpzvPsyDDR5VMp8xKY5RDHT1If473cs91zxfRfFQ7z2AXbTEZliJkmFKj964H8I5xGJ1axBZnK1Vdt2PtdBZpanHGk4IlDIZqC/hv698ZdfOHtMnbdK/kVK/6zktnscaf7R7zeWLfjxbpvu3m+Tf9i9mB8LXYi7P191luF7BS5if0ih0R/j/O1T/jBs9b5DpGKiB9BB0P82RjHLeapyGQjHVob+Ot/uyjK+rbfLsdPbXlzLM70FWsxi8i1MoUxf0XIQ4Xk8gSdVhOJappS37wXeVeX7qNpgUmBvMLR7Fv6Uy6iNX4W3SA9biiVD20lUy2e/CMdRjPWIcBkou9H7uFVEvtluwbfoi92uXzGqrPKKhScUr+gJLZzK1UX7jnGi4jxefsTGzT1SR/zvu/Rs8vFKhnb3syZZr60td6E2supttdGeT8iKfZ3XnYPIYOYh0BfDziecLtZDVAW0rpmrd51ziUUufHKhxNmQy7kv95nqUmeDq9gy+wh/YHfsIcJ76jMv8KhgSf5JkW/XjPruJs8RH3mScgZSLPHxHzlkLSg09Eazca8KaksW+fdpTMzaU6EMFXvoDnvP/j95pdAKVgqjnG/11rby4xPia78lbm+PpRbVVzr1S7hvjwF0DOwKNg/RQK972o0XO7TP+ANBEkKyUWEqr1qM/EdLR/njhpF7fwLIqM1Fj1dmZuIfPs9nQRq/EIixfMgznCrzz/2yOjudVRrlxSeBALKyX5nY6koV4Z+0pfW9IbJnGmd1yje4vCn57DmZFLedN7N1pmSwrLf6HQcQqi0hlRuue0uoGYmpfxkf6cZV7L794zSCPEcq0NfaXj1XsSK88ze+/PgnY30aVdCF7elavC53OE51engC2dS4yPedccweCstuzTvoCZtxyAlJLzRnRyPf1G6LQ3nPM9tFG/qUwtQp6o4cjQHVzrtSj2n8SngVHACPIzfIwMP0SBz8fNcjk9WcnZ+/cnPz1WCNfeXEF+XKxeZHegIr0bVlZ7Bu93HIP3SyzSEqkqjGdHAkw2BnFo7V0c2+5A8pepsidp+Enzbd6spjjG/5fdnmXf8HhIi9Vg7N45jx8WqHvKS/dut5j/Dm/8X9WP5GzzfV639uM561BXsycqsBRyvOZsJyEUwMepkeu5Wr7D+fpnrmhWFFHDDzCt1QmsXrWSffSZ+B1jUynTSSNIqhZhtP4t/cRSvgs5laiOF/6sOYqDtSlgBrnNeBkDi5vMs1ibvxdDVj2Fz5PNebsM5OHfjuEKzwdUyTSyRT1lDl1NYPM/z1MJFbSdtBIyaSBi2SxeX8dD9QdxbXAf+udn88nTewKSH1M+oqHhyYQik5a1c+i08ueE93hn5GS32UsoUM/dPMZn+t7q357EGoZo39mpdje+tIfRQtQwTSpqZyXphKThFg7ttuZl+or3eF6M4Mrw+fTIGcI7q3I4LiWLo/WJ3LNwIO1Fax7wPMNKWUAPsYKfxLWUko0wvHjsIAeY97OWPN5a+QAXRqYwy+5EjUzDq8WKbGpEGvlOf+bD9F9AQMHxD/HVm4/w3IJbsSLKoGlGXGGOR3lglxgfs8wuxNZ0eoVnk0cxpbqfrmI1u2pK+351z7NJrZpPjscPh8ZyC/G4wqMYW+GU2DVm5R7EgpUltMweAMCofo1ZNZomWCtzmWD143jDoEqmM5MunBi6CQudE9LSmWe3S2gdqbfszQW/d+WzjsNYs1CFgirTOsJhn6JltW10jSh8hsYw5z0Z7QZDeayhTrH/JDdUoh5PmpKwJkKa1yAgUvjE3INXsy+gvKyUqf4LiYjE6uJ9+7SlY79OlJeoXJdfhCnztKZTZJWrPfShvRfD0mJ5ESEE1x/cuG9E3ATX8KsHZnCn52WeNUeRZihWWS9LVW4XZKj7qQ5EuMS8hMsiF7N4WIeEnVa+rcItM+0uDNQWQ353ci+b4Fafb4iaNiNgyWNUWiloQvCH7MSJXh+LU/vTo3quG3bbHKJhn4r0rjBon4RjZ+/ZiXSfhzSfjmXLjXZb21rs8GEfvxN7j4okBaWXGXYXfrV78ojncYZo6osipWCVbEHAWQxSCCeEU5rC3PxDeMo63I2TA7xh7Uen0OusNDoyRFuIT5iIqmJAFf+AqooNY9AutIjTjW9dY5yflUYtqVi2ZFCHHHJFDVUyjYfM/wCwWLblOH08c31ncpSeaLAB3vHewUlVz7Lf/35kfa2j6R4yqW63D2E9lbBpU++UwEekTkTqdKpKPI8pNUqc8FW1TCVo6xjYtEUl9/QNpEYHOEJ4T5mHs6f2B1/5rudEfRyn61/TVyyjlBy3GXq6WUnLyCoO1yfxoT2cFSnd+cjeCz1dcaavDz/G7Z6XyRINdBMr0ZD4qxdzhfEe3sB6ntAe4hf/JXzmvQERqsGDyZHhuzg1cj1Bbw4r7Xx2DT7GVSl3ufpEWaIBn0dxrnNkFbtq8wjXqa29pscM87oOh7kOQYGoQiCQQqetKONmzxucYPxAkabYSMZu55Nz3pY1Qo9n/uw5aAAPmCfQu9+gTbxCJfGznPzUbvpchmoL2EP7g+5iBSkpaRwcvo/We8covN27duO7K4fTt20WRp0jQ+zNhk4jEuPNG0AIwRDfSiZmHEzbvrFag58sVbAU39HNk5KOpXnZXZ/LGP0Z1ohC6kihS+sW1ONnit2dFi3U51jrxNBFtgoVep3dyhjPi3yVdRy1MtWlMw8SC/GKrQhrGF4MLC40PsWjqfCq7ewCWzgevhJPFNhoCYYf4ITwTdwUOYPFdmvVfCg1FzwpTdIzAfy5ajEtt/zkpSn7YEuYXnBM9EFt0W2nOMY/0ESLTE0TnDSsPUcMaMPRu7TlhKHtt+iczcWO7/mbyss7QJvGkfrPnBS+kQfN4zhEm8wR+iRujpzONZHzVJjCUh/g8fp4zjK+cuUM4vG6OZJTDLWVTvF5aUk5j5kqqXai/r0TkgG/IYiSNF4YOwPoTsuwoh8ukO0J4aWVE1/82BFsi3oqpiXxl8914+6vWQfwmnUAAOfqnyUU4IBqCNFOK6WntpLCYD1wLGOMFzjZGMfXdSOYVRek0MzjevkQ+bqKq5vC4ATrDg7PXsZZtU+74SpD2FxsKA/woNB9PJXRmXZYdJMrQEBVmopznhe+gmP0CRygT2e5rX70PRzJ7Hs8L7j3NlkMILKBhG8GDQwR88kOCIaI+Xj9MVXvoU7DmCjfP6V6CZcZH7E4dC4tnMR6X62Y3yMZgODifbrgNTSmRDpz+mJFQyxMy6J75asU+xXfPkqFFE5YwgqoZ6B5You7R9fcvE+aCJFhllHtSRTJC0gvj5lHckY8e2MjKLYL3cUiil075VF876iNvCKGdBGgHeq9/tLmdGwMXl19H8V2IZp2gXuOWT91okpm0Cu7kA6ZyuNcp7dmmt2Nitz+m70OwLDrv0E3DEL1MVVJjcYJfJ8/nbn+nvQNzaALK3nIey5XWI+Tn7mGR+4+GhZnondQxYILZVsCtpeOmSpE6E+NJanzUwTZoo4KkUMOdVzjeZcaeQc0UYTZXEQT39EiL79HZ1TfVhw1sA1nvzqtydf8avfiV3pxVeY36Mbm72FwG2XcD+yWzcjdduG6D2YztCiX6lWODHucQ7EpRGP+gfD2iedvCXZ44x+N8aeKEAO0JTzgeZrFsg2jDVUJu15mEyBxqzZQqBhmdVx/2h+s/mSLWret3q2R08jXg/zqv4Q7IyfTgI8UwrSmjEuND5mi7eUa/2xRBxK8EZVXqJAZXBi5lD28SxgjniTg9ILNdsS+og3Em0LfDgWQ2F/dDVnVyRQ8TlOU6LZ6qD2TGiOPIm0lnWXshREMFosiJpRXcJZXaRRFEWXN1JFCfTCCIWyqZBoFVFKXpryQqXZ3Qng4QJ/OveaJ/J/nCZfpFMW9kRP4MusEvrX/kzDeUVvHe747mLL+UK72fc4SMYpRobs5UR/nLqxRRJu8IzS3sAnAbwexheDqA1Urvv99u4BBYgG7a3Ow5QC66bHeDVFvT3jVD9cOOsY/7ofaMdfPgca37r/TzGoqvYlhmQWyHU9aR3JWyqaTeQCVp37P/IpqDtrszMZYdsw3bnXobuc8ovoQ3Pd8o8XkPvNEbKnxfFyCMLVFW44N38bDbTqwJdCNKGUy2x2Lsoji4UtN56uCs2hZORWvJ4XMhuX00Yspz85Uu8FusSKl96wRFFBFD2cBNwwvs+2O9NOWsW9oPK1EBb952kNEfc9S0jb/PDeJfW6Cnx7Cdn4zdlz+54mT1a7z80v2ZH5JbaOXfnDB7qyoqCfHMwbSN6+I689rDyNvoXDgaEhP4bWzlJbSeCcRX+PfSK5iA3TOV/Pz0nybmbn9sMMb/2h7tOWykAEsYT9tBr+bsTBNvqjmZuM1bARtRBkXRi4njIdymcF+4VgJ/TPWoYzQZtNBrGO/0P0sla251JNBSHrc+DjAkcYkTjB+IKDFvgRR+eevzV2YFbmZwb26srAsSEnZGvDihpqynPiwZUt3+ygHn815eiee+XEpfdpk0qEw1zX+10XOprcodhcyy/CTYqkveFSp1CvDrDXaUGQuc3ugfmcNZLpnMMcwnpOMWPjigchxfGLvztfe6/jV7smH3lupWaYE4KJ6+5lSnf99721ujcJT3keafPYCaOEJufmQ963hHKvHCnyizKT0FA9DdtubtZNnATBt+EtEFo9ntzWvYjvGP+rVRaFhJejc9ywfy5U+RQ+cXV9MP8806qQ/IXShOcZ/RUpPHgzdzJ05Re6xri2zqJGprvLr73TGr2dhSYEuJBGpKmvbilI3z7EpDOzSFqVb2Hzs1S+xp4LHp+67Vs8mPhgxVMznCu8HWJ7L3bEThrSjVbafvbs1UwxRCOxbqvju1pEcoMdkLO6MnEJbUcqonFakeJaTSoignsuDmuLhF3VuHJ/3EuFKz/vUWmOAdISm8aU1jH7aMnJtVX+wLr0XK8pX014rxeNrLFHeLIy4BkZcQ2TqjwCUGG3YsENUnzZZ9GnT2LMf1CGHQR1y2OLPStNgr6saj6cXUhR8k3NSO27RaY4f0o7CrD/xOW1D7PAx/7Uin6l2Nz6z1JY0hDehWbKfMGcZX7GPNsulnoXwuNosUfxi96ZWpnC68S0rZYHaWgrhagZVa+r/B/ZUWftKPZ+BQdVYpau2mquMd/FEapgie7JPr9bsr89gkLaIV8z9qTVUjD3Dr2Robz28F3jVVlkU9nKZD6GIje6J3fvb1r7cbJ7JN8beAIS1FLyYtBPr6OK0oPMR4RbtMvc1j5lHcnbkGj71HsIVvEGPOG78E9aRBNPaUSJzaSUq6Kqtxm6o5MjQHW4LutYB1a2rk1aSYFibwrWetzkrHJPgrZUpiT0VHOOvCY1D2ptu+8wBI45kTtFp7BN6CDta5KUlGv9Zel/GOu8bICscayweNc4CmdhEPjWPOXYHymUGU2RP9DglRSEEY3p+xHl5ShHyp3B33m11NSeEbwagigw6aSVM9F2Gbjat27S9IDSdhlFPkHJBomTIXg4TLOq9g9rl7NO9YJO9qzcGTRMJ3/uvrSG8YB3C7eZppKamc0j9h/TWlmPrPrc2pF1hi0bnicokeH2xHXU0sWw5DK9QelvG2oNVfuBP3GtTqMvpTVHwTZ7NuXKbnK85iIZx4mUZNgUh/vzntK2ww3v+FjopWK4KZwCvq/sNsF4q9kqmaKDBCb+EMUgXQS7RP+Qx6+jYXLIBxa++31Tl6qUym7aijGojn6xwNf17dodFUFldTRXp/DeiuOj3e55jT+0PXjYPwGsM4MDQN3i0NYwK38MbZw/ji9/XMqBdNn/c7sgjRZtYl8wmraO6Vsi0kZmK+/22uTeFVHCq8a1LyytO7YNRXcctxmuuB+sRFiuqQlge5cGWk0MrymkvjITq5zUyl6O0n2iH6dIzASKhBmbJXtyrn0vA8qN3bdxrNIpfrF6019Y5yqQKrVjH0+ZhLJatedDzDOOsgXxm7cb/eZ90qZ5CaGSFStxKS0PXCHuzWSZbYdlqcRKaznfWQPbTZ7LAbssnngNZKdpwevRCcWyf6I7iYfNYZthd+dAZb2izJ8eG7+HSiORIbSJeeygQWwDuO2FXguEI3A3txXpqNcFvsjPDgo9j+rM5JvIFN3jewjC2LK67LZE65JRGY4M3aJu5LRAtKCsKqkV7X20GPcQKUjyHkJ6qdiDVZDBjt8cJly5l1w17jYIr2uaN8+ijLLl1Qnm6DS36ss/yVxPCjVsLn5NEbZm5ZYybbQk3gbuFxv+fgB3e818i2jNAW0IHoeKla2WeG2PfL3Q/y6WK82VR74ZfahzJhCi1L4qoF3mh04hBIChzxvJMJx7rFPAM0+Zzp/ESP1gDKJXZgOoP/Ij3SVXBZ/hJI4gHk04tUrn7qL5utx9AsQ1yO0PH4WSnKmMzuCgHs8NwioJvcp15Lq1EBRcZn3KQqQqzvi84k4O8L7n01WWyJYvsNnxrXOl6aqcb3/CL/xLuDY1xE2MArUUFD3uf4mTrQ56wj+ZXW23nZbCG/+g/cPHQbIKjHueIIUqH5jVzPz61dqNExqifc2QHjgjdxcGR+9kr9DCrZAsEgvbHP8CDnmcAGKnPZB3R1zg/FE3D58R9zwsrWmxh7TzO1r/gBzGUnsEXsbI7sjx7GKUyi0PC97BKFiZoDsUrdGpO8Vj/IXtx2Rkxoxml17Wumsb/eZ/EiMSKytw5Xg8z7C6EM9qzV+WH3ON5nnXkInU/hrOjiPe0/05sqEm1LaFqGiQveh/kv5530TWBN0eFRr707M8uB45m11NubfK1wXZKokHE5VSW2i35zNqVtBwlileU66eTVsLX1pBtds+7tM/mvmP6ctdRfTc/eRujc4FyIrq3bJol9E/EP+NbvB3xoxjKKXzKWpnHUrsln1u7MtYexIDgM9SQRnehPEufiBByiruesQ7lbOML1sRV7AKuEY/Csm1et/Zjf306abaTTNIMgloqXezV9NBX8oW9K4fqvyS8zmdoCMNHkbaORf5TKbOWAhvEPTUdLlWCa9nA2CuG0y43lRUVDeRQw0H927N7dheYHHtJpqilIZzlJnuPEI9SEzKZ7zvNuf8s/vD2oyiyBgsjQbPffU8YnHjtM5RXVsHzXdED5TzgeYMpNTkMPSSW1Hs191JK60J8Z50FqIK3sdZgOok1zBK9CEtJrUwFITikbyuIdf+jh1jBeeEr6JjVlWfLB3CPPxNfqvrRRDuMtamexjGeN+gzaR8CpKLrOsdfPIb3pp2P9dlcbgw+RBdWACo5GW9oosa/qDCPvnEx1cyGYj723oRZo3ZPRhzbJx4tLvuJk9M8zHv2TIbpP7HCLqCVDHCCR2nz63+D598U9Eumsaa2ii1LMW4Z1p/zG4sX/MbSCadQvUHb0/QClURODa5r6qUu/KPfhZq1CeGcID78RBjeuz0sga4FysH60e73p5LiTUEIwfFDtg8tcnPYpX0OX166Fz3+RcZ/h/f8Mx36XkB62Tf8P563RhHCy4XGp1xtvKuaJUudEpnDYqmMQgFV5Isa5siihHOt38D4Hz+0PT/a/fnY2p0Xc6+Ao56BvsdxU8+vedNSWjgn6OM5Rp+Y8DqfoSkdFgeGb/Pc4K6FGfg9OlnlvzHTfz53LTyMLp1U4voXYyjkdsYvwzxs3UNvTVFK/YaGjoVfRHjCPJwhoSeRjtJhRBgJrIgobHRy07x0apXHj1Y/t7AsmiyNYuyVI5h1ywG0cETIHjaPYag2j3d9dzJaG8v5+qf01FYkNFmPYn99Ot/YQ1jq7c639hCEJwW/4/nf4HFyBM69/eE/m5uM19BD1aT7DAaygO+8V9PNXpqQ8DW9WSyy27C/+TCf+w8nLHVEXPEQgF+TDNCWkhlRhX76Rmh57fNSyfR7kM49XOH5gL3tWGvODfMPfxey8gppXdR9m56zoE0RuRnqO5IlGqhJjRnTrBbq93Gk+VWTr3XhTYMWiUnrXtpy9teno/c5Co55AeEk2/tv0Cb134xerTMb1RH8k7HDG/9bLMVKiMRtcgqp4FzjCw7QprFK5rNH6FF2DT3B1RHVWOFMQ3251zqe/22HKe5AGVn8ZndyQyJtslN49KhOvGIeyMSUfaH/CaBpGJog3dERmmw3wYYwNHTH+IeksVEPtCmkeRzaIgIy27BX6GFuT70eLp2B8PjYT5/pzn3CvpMvvUp3XzWzEG4i2ULnMt9d7BJ8mhoRCx9YjsHTdZ1z5A1M0tW2XItLjsZjcq+bOCx0FymE3UXnKvEG/zVUg+wSb+OG21migb21mbQNzGdvbSaaHSElXYXPXJXTOP2bs42v3CSrYQXpoq1xlEhjP7Q1bQ9m//ADrKAV33tH0C30GlbOhqwZp9G20xzdMDbz3OOMfPS53G6ejtB27J9NPKkg87JJcJXThL11Eb90vIjCEx5r9jln2Z0VacCbBn2PRfeqZ39CXHP6JP5a7NjfYmK9dsNxxj+q4xNtHbeenITXfGANZ6y1CxNsFTuMlrxINDRs6uPK3luVT+Yj360UhmOsmcNKHucy4wMiUmeWrSos74/ENEI0TbCo18V8aQ0lhBejGd5CeprDAjK8SAkrZaHbqD7a3zWKbFFHd6dJdjThbTuFTpq0KDcKqCCTTBmLfceHglI8OqEG9az0uO5d8Rh23DWIvI78n/dJDtKnOs9JPfXHzCP5JE9VosYLvnVlFS97H+CIypd52fsAwgzgS8mg2C5kmu1o228ofuZQPYXzrHSshJxFq6wUTtC/50T5Jft2V3mcllmJiT9vinrv/qjx927G+IvYd8YSBsV2IW9ssyDFPxfxxh9fBmQoZVKhaex22t2069L8mHr6xT/iuyi2AzY2IsSXxF+HHf4TqCSLTOoTtFBCTku/n23VQKGPWMrnvpv40hrKhZHLWSTbck5E9amddcv+fDgj1pD65PANbuIPQDoG9z81LwGq8XOnuhn4hEmJzGGRbEtY6mSLem6LnMocu4hLgiZ6eh7VMo0AXlKbs1V0ZISF7ok1k3diq7v27AAzYlP/8Pana0Btq8v1fLBgdWp3Vtj5vOk9klHmdxzvVe0pa30teaV+GONyjiOq8PIW16HVqHMb/qaNP8CTDdck/FtGS+mx0Zx7+8XuxQy7Kyca44mg48V0C/A0TUNoGnWkUBXtT9BI+TJq/NVXVt+A5985z8e9nucBsPd7lFN260BBxgbG33kPX7MH74aG8YFn0wU2Dd6YU2Cj00qso7u2ehOv2DGgb+a5/Bl0KUiMhRvOTnKa3Y3B2/xqSWwJdnjPf7rWh1KZyQpZ6I4tla05MXwjt5pnALj9XffU/mj0+uxUL+mOSt/puxdRQ3oCy0I6Uqx5VkwZMGRkMtXuxq6hJ4hg4BUWR+s/cdZV99Gq374M7ZhLYfVs+mlLecU8oJFeziYR1Z3XvfRomcHRu7Th0RMGANCtfWLqr9LTkrDUeco8jFNHn8VRA9uQ33d/hocfYZy2B0eGv6CdVsq8tKG8s+dXPGgeT00c9TGbOlbauewfuh+z1cb1aKIeuOXI/EqhFoCLjE85ukzVOtgH3c+z2Zczy+7siuVpjlZ/dPHqoxWzt6YogcvaHJ5wDRE1/s6i8L0czHe+mGJmq5yYcdE00cjwg2peMtXuxu9WO+bIIjybYe1MbXu6yz4q1/LwCZM3tZs2+ZodAYaT3/nG2n5m2eMxKJcZzLP/ngRtEjuB52+iJ3jqUfxix9qmrXDonlG9/w1xzKC21IZMjt2lLS9PKgbgxdPVDyOS3ZlamcLbaadwrTM/ZGSQRazo6LjQzejC5q3cVB49UbXka1E5k47acv4TvpX/NqfQIxraGXwmhq7xv+MGxI45yVxbCjQh6WQto44U2ogy+rTOYq+u+Xz9+xoGiMV4rFw34St1H367gWuMt4mEWwN7A2AKDyFTsEi2damYTSHaNu8bOZRhzEUKDa8TUsuxVHeuM/fsiL9mGe/8vDdlWgue0+9DEG3Uol5fndufSLs9aAFYnthOw5bC9fztlBx+sPrzkjwYM6Uv5zlztiTR5vP5OC5yGwNZyEn6OHRt0zo7Xl1jnD2QPsHn6dq2kCNKHuNIY9ImX7MjQMtp5/L8i7fTNYQQ5IlauqY2bmaUxF+DHd74pxIkR9SRS81GedFBfDxiHu2qGW4IXROctWdHt3k7wL491E5C86XSN/QCA33Z7rGQJ5N+2mruKPyRW9aNYIrsyYZaWdGtdXxj6S1CWgu4bSOv0TSOKviSP1aUcZvxCrNyTqFN7Ww6irWk+9VH3bL8Fz723UJJpAVVTmWxNHx0L/mMIcanLIu0B+4DlPHvJ5Zyhv4VqXIwbOT52U6xWDGtuSF0JgUpklpT8Il+bUJopqhyIid5XuBM60Z1u9EKX8ewZ10ak37Iq1E1FrdHRvOSdTCzHOZOKLc7p0euJVML0kMmFgitOX0KhsfHxhRahBD4DI0D5VRO1ccCjfsXxKNXxXe84X2FU8PXoesGxgZ5hh0VHl0jk/rNqtpuLcoGXUbf3ods12sksXHs8MZ/gejEoYx3RZ82hofNWJeog3q35Os5JY3mNBWe8TqFWXbcwlDvVwmyXbwbjw9H+8q+6rkXOHOj85qL2w7rzRFP/MyN5lnsredzUPheBJLFzn1GJQ0MTNdoo/vAoT3Gt1m0hIdOWim3aq9RKv7LxmALjVWyBRPkLgzQFjOHXagVwmm7GPfMnJ3GQLGQk8PX0zK7kJL163hBb2xk8mqV1PZEuy8C2w0N6c7/H9UfoXVtADjAfc2W0B7f0G9nEPNc2eFNIdOsYJg2nzuMl/HUteRoYxylG5ADdkR47BCz/eewRuYCR26367Q47I7tdu4kNo8d3o3JdpgskWasc+1yt0yTG3CrcuNsP1PanIEtBbX+li5NdEPIFspQPWsdusXX2hL0b5fNhxeq3rats1Ow0BMa0uh+FRv3EHHDPsGUlm4P2/jlbbZ/sKvF40/dePHKN6mHcXfkJAZqi3jZ+wCj+ZwLxYd00NYnFPpE4/bDxUx+tvuyQO/Cz3Zftw1hApxQ0ljff3na839othKWS6lcwC++i9lLm934NVuA1qjcjCk2/30QDgX3eOMHOllLARIkMXZUeJ22mq1FxWZmJvFvxg5v/EfbirtibuGP9vjB7VyZ4C1BlKYZHxJKDa1DE5J6X0tO32MjKn8ddqco+CZvWSO3+Fpbil3a5/DUybtwy6GNF54oa8eQFg9k30zf4PP80ePSmOcflx/5JPcMXrIUtXFTxv+H1APJF9X0EcpAjpafcYb4DIC1/rhmIo7xz6CBUdqv9A9NZ5T2a6P2iADE7UAO1Ke58hSaNGklKtCFbLKAbHNYpSvKqcHmNViEHmO9WIbTetF7erOv+W+Dx6ved80W7I6S+Pdihzf+z+lKFC28hZ7/VQd0U9o7W4golTFKuwToVqaasOibMDBRIajthYP7tnK1bOLhSYl6/iZBI5NaUknx6ghHsiC+kYdX10ghREB6N8mMyZMV3O55hd1RTB2JYvu8ZB7ID3knuvOEs9NoSTlPeB/l7IYXecL7qPsM4yGtxIY10bxAvLSz3EworylMb6O0fjLYvDKniKM82noK1TKVid69mn3Nfxt0Xee2yKl8OvjVv/tWktiO2OGN/+vG0RQF39wiL/Gn/+5DQTMVAaPFnvHG/4/cAxlrDWJJ4YEbfZ3f89c8+ptG9eSmUbEqYyM1myV2K+62T2VEcBzF/pPotvZT6nN6c0dkNBf773Lnnlt2L+caXxAQm+Z9X155NxCjfEoE0jHo8ZK1a1qqXqVljjqqhtVoThTS3ND4G87c2HOTf0ION7/33gB8Yu2+2bl2akyu2Pamq/aSclmzr/lvgxCC28Y8ximHHbD5yUn8a7HDG//moFl8++hrROOwT7W3gHMiV2F5N06P9Ddjd7E1OHuvTpy9V6x5jS8llZHhh3jd2p8RDWqHkm5WEM7qxIvWwZQR08MxhMV6mc1pnoc2fRHHICcYfwRnGN9w6Lqn3GmmvwWL7DYEHUltzQntNCWXsDQ30cOO0kGjnv9YaxDjUptfbTusWxsejhzjts7cFGpa7ckj5tFYUlCfrkTNrgs03bA9iST+bUga/zg0FX7YHKJea5zj7y4E0fPlpXldVpB7rb9JACoa0rKkJNOuAkCmt8IjAzzteZgjIl+7c6XmISQ91Ho33d4umjieoA2lXvqoERluSCbViklHZARW8bJ1IHegehzoWG5h2IawrMSQme48P+nL5HNrGE+ZhzEhtfmeaducVB6xjmG8PXCzc72GxsPmsXQNvca89icx1hrUpBJqEkn8G7HDUz2bgy3R69qrawu6xpWqu7o8cTbMNf7OsV+uH4lsoin23wGf4RhRCZlWFQAisyW5lX/QV5/KALMYuF/N0Ty000o5TP4A7LPRc0bVL0u1fIY0PEXrTA8NpsZn1vkJMg0tqv9gjOdFLpKqHE6T1kbj9qkNiiZ7ZvhqxtsDWBZdZDNac3HkMvKpYqCzeDUXZ+7RkcqG8Gbn5dTM43PvDdwUOROv3hsda4uJA0kk8U/HTm/83zt/N/7ztNLb3xLPP9qwOYoOeamcO7wTxw+JqVdG4/+6czqv8c/xFqPGv11uChkNqljMyGqNqCpzZsQWKenQPw80vwdu3+g5Q3oqAellqjGAfbWZ/MHuhDUPtqUltuhzQja7i984MnQHaWmpBIOBeKn/2NSIqvy00BNaC0bDbE94HyGt0g8c3Ix3r3DLRui3G8KHSQ+tmDGeFygr8zFCn0Wx/HN9eZNI4p+GrbJKQogHhBDzhRCzhRAfCSGy445dL4RYLIRYIIQ4MG78IGdssRDiuq25/tZiUIcchhTFYtx/NuxzwyE96Zwf08SJev5/JoewvSGE4IXTBvP++bsTEorKZ2S1RnPZPjGK5ZrMAQCY+qYpf5OzD+W6yNn0sJfyuPcxTrc+4AL7bfJFdUKiXXN2CEOZwyzZhfmyiN/p2uQ5o71eX/Hex/OeB91xo24Vs31nM1Rb8KcSvs1BVHa7t7acVEupmxqObEUSSfzbsbUu6Vigj5SyH7AQuB5ACNELOAHoDRwEPCmE0IXi+j2Bctd6ASc6c7cbZDOiLfo2MiZRz/+f2thhZM9CCjP9XNv5Y7oGXyUlIwfNaMzoWdLyYJbYrbA2Y/yXZgymjSinp70YgAPtHznMVq0l16bGGXenmCuVIMfp4znI/oGjtAmNzgfQtjomT9pLj8ll60K4/Yn/DM+/OdC9sWcinOfzkv6f7XrNJJL4q7BVYR8p5bdx//wViGokHAG8LaUMAcuEEIuBoc6xxVLKpQBCiLeduXO35j42eY/NiLWLbWRLLhjRhTlrajikT6ttc8LtBKl7iWCQ6jWabE3oMzRSRYiyzRj/fLOEazzvsNxWoa8o2+cdc29+b3EERznzohW+mdRxv+c5au0UNGED9zQ657qM3lD6PgDegtgCIuIarGxvzz8qwQG4ndd+28hOJYkk/m3YljH/M4F3nL/boBaDKFY5YwArNxhPDKJvY2zK89/QdGwrz799XiqfXrznZue9ePpgPPrflw+I5iT8Hg2Z0YqrwuezJLUfHzvHh6x8iVaiguXapr8mI8teA+KlD5Tx17BVxzEHNQWqK9gCihjMPHTsjSZ8Rx53Cc+PHcQZmVNI3+VUd1xLyMpv32dnpMSouppT8NXHXrBdr5lEEn8VNmv8hRDfAS2bOHSjlPITZ86NgAm8sa1uTAhxLnAuQPv2f17ze1N+/4a2Pj7m/92VIxrRM7c1osqgfxc0TZDi0RFCoKVk8YE9nPy4gq5oU/TvW53Drps4j3QWB9vZOgU82aSGK/iPMYGWa59CRfpA+jJYbhdQpym9IB17o5XXaX4PZx82AhiRMC6cpPFkuweTM0bRr7lvuhkwMgv4yepDCA+5aYrueqb9AXD3drxqEkn8Ndis8ZdS7rep40KI04FDgZFSun72aiC+eWtbZ4xNjG943WeBZwEGDx78p3mSzYn5xzuVXQqa7lm7I0EXglSvMqaGtPjeeyXvWYcC6iM3hWL7GJtpeiKFWiSmWV3owlJWFuxL59UfgwSPHaNUpgRKeMU6kLl6H/aW01U3LtE82WDhSeUdc28+tvcgJW3zu6utgU/XGR25AYA3Ww5hjt2B9Vo+yfYjSewI2Fq2z0HAf4HDpZTxYimfAicIIXxCiI5AV2AKMBXoKoToKITwopLCn27NPWweW279/wzb59+MQ/u35qy9lPCc16yhk1bCufa77nFpK4pl14aZTb7enefsEBaahXQKvk5o8HmclPIktTIlIS6fVr+SWzyv0Y51ABjCbnb1g+bP4FrzXNbIPPLMdc18dfPgFWpBHK1/i9fQ0LEx5T+HtptEEluDrY35Pw74gLFOpeuvUsrzpZRzhBDvohK5JnCRlKpzhxDiYuAbQAdelFLO2cp72CT+DrbPvwUjuuUzols+ALrDxBHx5tgMAdC6YeEmzxPwKrps5q6nMaagkAP6t+PuscUObTSO6ukka/eVk9kvpArJ0v1eN8ewJYgyqJ7yPEKoog1q07l94PV66aSVcLH4mKqak+iurSRfNrP5ThJJ/EOxtWyfLps4NgYY08T4l8CXW3Pd5qA5nuVOZvsToPtVmOsdcZDbGrHSq9hKQV/eJl+7LHc4Hy+BTr50ThyqgiLnhF8jTYQSPH/hLDB9WcRip1gqT2te2EcL17HEdzK6kMxk+xZcRSUlCkUVDZr6JqUR2NRLkkjiX4MdvsJXNsP1b0pdcmeB7vFTFHyT3DSva/yrUosACKe32ejrAOpT29JZW0NuzRxAKYgONxXZqyQ9pigapWn6iHCm/hUeTCyZCey/5fep6a62v9xW3NzNYLrdlQKH9vmidTAX/iVXTSKJ7Ysd3/hv4pj4E3rwOyqi6178Ynl07yyYBSN6bdrDzgmv4UTjU76v6US01EMKwefmMObnxQx7tGOXhwi3eBQ9tMzOJqoltEX3mUD13P6f3wcjvqV7xw4YTq/lpfKfXbuRRBJbih0+e9WcmP/OjGjjl4P6xFi9KaZS5PR6N63n36lyopofLnfHFM9fJoTSIrk9AJgkBrhjzW2IHt/ycXsXeQEcs88w+hS1xON4/ruIRdv9mkkk8VdgJzD+ja3/9Qf3+Bvu5J8Nv0dn6o37cecRfWKDPQ+FK+dB540regKgOdXBVkz3RqJxiD6F4SufcceEx8sKO59KsuLmNc+ARxPTc+wOTMw+vFmv3Rp4nN7HI/Tf/rJrJpHE9sSOb/ybGGuZlditaycO9ScgP8PnNqR3kdl68y+MMoVkTH2zXqhCrvi2kJ5wFe9ZI/hSixVuNdf4a5rGS+aB3GeewOK0Qc167dbAm5ZFpUxnrPXXXTOJJLYndnjj35T13zCxO+7KETxx0i5/0Q3tgIg2f7djnv/VGfdjSZEQmvGGqrjK8z5d5Ap3rLnGX2gad1inUS6zyA+v2sob33Ionr/V7DBVEkn8U7FTJnw3FNvslJ9Op/wdv6J3eyGQpoq2Z2bt5wo1CSHQhUzouRuVZjhE/shuwcfQhU1+VhofNfN6KSLCs56HWFs+EDhs69/AFkDXBJkiwJnG15ufnEQS/wLs+Ma/iZi/y/JJhnu2CWqye3Je+AoKjA7u2FmBl5y/Yg85Gq/vKpezljyQoDk6P83BLM+ZeIXFmr+I6hnFYr0zFb1Gu/K0SSTxb8aOb/ybGPuHyuz/a6EbHnbT5lAZiskdD4jMAmBtZiyBHK3wFUguNj4mj2qqzA5sqkVkU1A6/tZ21/PfEF1unrH5SUkk8S/Bjm/8m4z5//X3sSMjLbiOUca3fFxfBJwMgI3OeKs/K3L3cOdpcRISl+vvYwiblZHWwAPNul60ifrOXJSXRBJbix0+e9VUM5ek0di2yAwoYdaiQEymSQpIEWE0JekEgMhQEtafsA+2Ew6y/0ToJpokbm6yOIkkkohhhzf+TSFpMrYtbK9KlgeJUWh1abGrNo8hq15xxzRNZ7ldQBlZbsjmzxhwS2gU24VMzj1y6248iSR2YuykYR9lcJKLwLaBt+s+jBl3Eqk9znCbvlRqOWCREGPTrSBf2cOYrXV1Pf8/E7d/hcOZbrajZVrPzU9OIokkmsQO7/knE77bH/3a5bD/2WO4+JDB7ti9mTeqP+LCOrq0ON/4jD5ycZzH3/wP4yX9WALST0Fo+dbcdhJJ7NTY4T3/pou8/vrb2NExtGNuwr8FtvNH7GFrTtPgw/mR/XiKQDBMp5a5fNDMa+VQw6vee5lVPoq/iuefRBI7GnYCz19ywd6dKb53lDuWTPhuf5xR7/D8ReNmLu0poVakU0kmAdF8nv/b1lX4RGTzE5NIIomNYof3/KVsHFhImv7tj07mEgDWZ/Z1x4THz/+3d+8xcpXnHce/z+zV913jZVl7DbbTjQm3GLLC5pIISOIYksYtoKaAZDd1RdOQikpUKBQJFFAqogpIkFoaKlxCAwSFkMZCSGBIoqYp4RYw5mZsyILZ+Mp6vb6t9zJP/zjv7A7mjM3M7MzY5/w+0mjOvO/x2ef1zj7zznve8543s3O52y/j7+oeoavhbd45+Bngs0Ude2zIqMoXeYkkSfKTPx8d5lHPv/KGrJHnsgvZ1jq+ZlJTQwPLhr7HtZ/v4orfXkRr3R42Dg0Ufezx9XX0exQpVfKTv/tHbtqSO+Grz4DKmsVuGrIHx17XZWxs+O2D35Y+1TNrGfDq3clLJIkS/9cT1/NvnRzdN/YTWsytYib7fhZktnJy76Ox9eVcqOUY272FF9v+vKwYRdIsBT3/jw4OnDp7Oj9etZjuea01iSkNdmTa6GJjwSE2L2Oe/0MNl/L63inMnzy/rBhF0izxPX/gI11/M+P8rlljty6UiXf31G9FGwWGZsZP2hbf83+8aRl1ZGk/sKnU8ERSL9E9/9xyzrn00j69iW0DBwv/A5kwlrvAokByv6zxh/xxYJDu9lYeLvLY7b6T/2i8g2c+uAqo3q0cRZIk4ck/es7ln0e/eR7rNvfXLJ40WblvdbRRoOefzdQzSh2eKf4t+M/7bwnH1hl7kVIlO/mH59xsnzktk5jTMql2AaXIrOxOAHa2nhFb/zcjD7Gk8Rme23cJcE5Rxx4/SZyOUUuRSkh28s8N+6iDWHWD1szr2ZPonx6/+NoXR/+HzsxWRgefLfrYY1M89YsVKVmiu07jPX+pNnPnRNtG4+j+2PqxJZ1LSOBjF3lpnr9IyRL913PomL9UT4v3M9UGOWlr/A3Px5N+CfP8LcOAT2J9+5+VHqBIyiV72IfcsI+yf7VtqevgkyNvUah/Md7zL77/8fPJl7Nh5xCnTZpdTogiqZaKnr9U34+n/BVQ+IN3iOgq6xFrKPrYzzadRyt7adv3VsnxiaRdonv+Oer418Lhx9z+fvr3eXPrHi48qY3/LPLIc7J/5PbGf+eZPoCvlBOkSGqV1fM3s1vN7BUze9nMnjSz2aHczOwuM9sU6s/K+zcrzWxjeKwstwGHMzbmr1O+VXekef65bwSZEj6ZvzlwZzhISaGJCOUP+/yLu5/h7ouAx4CbQvnFQFd4XA3cDWBmM4GbgcXA2cDNZlaxBXbGx/wr9ROkkGaPrqTubzk9tn7Fgf/izaaVLB14pOhjZwnLcmi2j0jJyvrrcff8xdinMD67cjlwv0d+B7SYWQfwJWCtu/e5+y5gLbCsnBgOH1/0rNxffXttKj3ZdvbNWBBb3z38Is02zCcHXyn62NncVcFK/iIlK3vM38y+C6wAdgMXhuI5wOa83d4PZYXK4457NdG3Bk488cSSYhub56/sX3X1DDMvs43XhvfE1o9fqFV8As9mwkli/WJFSnbEvzwze8rMXo15LAdw9xvdfS7wAPCtiQrM3e9x9253725rayv1GFEb1PevurbRHQC0b/9NbH05SzoPZqL7MGzoWF5idCJyxJ6/u3/hYx7rAeBxojH9XmBuXl1nKOsFLjik/Ncf8/hFU8+/djbXn8jCkQ2HWdK59Ct8/7d1Offu+jTdTTPLilEkzcqd7dOV93I58GbYXgOsCLN+lgC73X0L8ASw1Mxaw4nepaGsIjTPv3b+e9KlYSs+ue/LTAPGe/HF6J30KU6wPo7bo3n+IqUqd8z/NjNbCGSBd4FvhPLHgUuATcB+4OsA7t5nZrcCz4f9bnH3vjJjKGxsqrm6/tWWW8/fMvH9i9tmfofne3bxpwtnc16Rx54zupnrGn7EM/1tRBPLRKRYZSV/d7+sQLkD1xSoWw2sLufnflxjUz2r8cPkQ1bsuw8o/ME7Ps+/+GOf3/+Lwx5bRI4s0XPltLBb7QxZtHzDQOtpsfVf23M/Pc1XckHfT4s+tmeKXxJCRD4s2ck/PCv3V9+ATWeHT2dwSmds/cLh1wHoPFj8fXg9E32wWHak9ABFUi7Zyd+1qmetNPsgbTZA43B/bP34FM8SlnSui3r+PjpcYnQikuzkH56V+6tv9mgvAK0fvBRbn7vIq5QlnQ80Rdd9bDju8yVGJyKJTv5N9RkuPXMOC2YVP51QyvNu/Xyg8LeusfvwlvDJ/N6sz7Fq6Dr662eVHJ9I2iU6+U9rbuCOry3i/C4liWp7atJSoHDy3113HAD76otf12+4qZWF9j7T9vaUHJ9I2iU6+UvtjKV8q4ut/1HbPzJv8EGe7PhGbP3htB3czPUNDzO3/7nSAxRJOSV/qYgr994fbRxhnn8p52NO2LsegBmDvSXFJiJK/lIhO+uiobZ9rafE1i/fdR89zVdy7s7i5/lbXTTVk6xm+4iUSslfKmJPZgYHvJHRyfHnW+YM9wDREE6xMiH5Z0aHSo5PJO2U/KUipmT3MsmGaDjYH79DGO8pZaon9dE8f3Nd5CVSKiV/qYi5I+8BMLX/jdj68Yu8SljPf/onAFg3+dySYhMRJX+pkJ6GcPvGQj37sTt5FX/G92DLfK4YupH1TYtKC05ElPylMv6vKVqo2Qok/76GEwDY21j8XdrOWNDJM9lT+eq5Z5QeoEjKKflLReT684Uu8nq8/W+ZN/ggz3ZcVfSx26c303Pbl7lw4fFlRCiSbkr+UhF/se9BoPDNXJrqo/KMFl4SqQklf6mInvpozH+wpSu2/nO719DTfCWf2fZINcMSkUDJXypiIDMdgGzjtNj6Ft8NwPShrVWLSUTGKflLRbRkdwFQN7grfofGaKXVzMhgtUISkTxK/lIR80f+AEDzwB9i6zNNU6Lnkf1Vi0lExin5S0W8Ux9diOUFVvW05mg4qG7kQNViEpFxSv5SEesazwIK32zdp3YAsLXuhKrFJCLj6msdgCRThtFoo8BUzsE5S5g3+CCfnTaLi6sYl4hE1POXili+/1EArMAJ3cmNUb/jwNBo1WISkXFK/lIRrzWeDsDgtJNi62fsf5ee5iu5vu+maoYlIoGSv1TEHovm+Xt9U2x9c0P01uscKX49fxEpn5K/VETb6HYA6g7ujq1vnDIDgKxXLSQRyaPkLxWxYGQjAI37t8TWt7Z1cvvw5fxm8b9VMywRCTTbRyrinfouPjX8OtlMc2x9c2M913333ipHJSI56vlLRbzVcDIAow1TahyJiMSZkORvZteZmZvZrPDazOwuM9tkZq+Y2Vl5+640s43hsXIifr4cfRrRzdVFjmZlD/uY2VxgKfBeXvHFQFd4LAbuBhab2UzgZqAbcOBFM1vj7gVW/5Jj1UUHngSgfvCDGkciInEmoud/J3A9UTLPWQ7c75HfAS1m1gF8CVjr7n0h4a8Flk1ADHKUeaFpMQBDkztqHImIxCkr+ZvZcqDX3dcdUjUHyJ/A/X4oK1Qed+yrzewFM3thx44d5YQpNbDPoiWbPaM5BSJHoyP+ZZrZU0Dc6ls3Av9ENOQz4dz9HuAegO7ubs0GP8bMHn0fgPqhPTWORETiHDH5u/sX4srN7HRgPrAu3KS7E/i9mZ0N9AJz83bvDGW9wAWHlP+6hLjlKDd2ZW99Y20DEZFYJQ/7uPt6dz/e3ee5+zyiIZyz3H0rsAZYEWb9LAF2u/sW4AlgqZm1mlkr0beGJ8pvhhxtzvnr27n3zJ9x6mln1joUEYlRqQHZx4FLgE3AfuDrAO7eZ2a3As+H/W5x974KxSA1dHzLFFYtj/3SKCJHgQlL/qH3n9t24JoC+60GVk/UzxURkeLpCl8RkRRS8hcRSSElfxGRFFLyFxFJISV/EZEUUvIXEUkhJX8RkRSyaEr+0c3MdgDvlnGIWcDOCQrnaJemtkK62pumtkK62luptp7k7m1xFcdE8i+Xmb3g7t21jqMa0tRWSFd709RWSFd7a9FWDfuIiKSQkr+ISAqlJfnfU+sAqihNbYV0tTdNbYV0tbfqbU3FmL+IiHxYWnr+IiKSR8lfRCSFEp38zWyZmW0ws01m9u1axzMRzGy1mW03s1fzymaa2Voz2xieW0O5mdldof2vmNlZtYu8eGY218x+ZWavm9lrZnZtKE9qe5vN7DkzWxfa+51QPt/Mng3tetjMGkN5U3i9KdTPq2kDSmBmdWb2kpk9Fl4nua09ZrbezF42sxdCWc3ey4lN/mZWB/wrcDFwCnCFmZ1S26gmxH3AskPKvg087e5dwNPhNURt7wqPq4G7qxTjRBkBrnP3U4AlwDXhd5jU9h4ELnL3TwOLgGXhNqjfA+509z8BdgGrwv6rgF2h/M6w37HmWuCNvNdJbivAhe6+KG9Of+3ey+6eyAdwDvBE3usbgBtqHdcEtW0e8Gre6w1AR9juADaE7R8CV8Ttdyw+gF8AX0xDe4HJwO+BxURXftaH8rH3NdH9r88J2/VhP6t17EW0sZMo4V0EPAZYUtsa4u4BZh1SVrP3cmJ7/sAcYHPe6/dDWRK1u/uWsL0VaA/bifk/CF/zzwSeJcHtDcMgLwPbgbXA20C/u4+EXfLbNNbeUL8bOK6qAZfn+8D1QDa8Po7kthXAgSfN7EUzuzqU1ey9XKkbuEuNuLubWaLm75rZVOBnwD+4+4CZjdUlrb3uPgosMrMW4OfAybWNqDLM7CvAdnd/0cwuqHE41XK+u/ea2fHAWjN7M7+y2u/lJPf8e4G5ea87Q1kSbTOzDoDwvD2UH/P/B2bWQJT4H3D3R0NxYtub4+79wK+Ihj5azCzXUctv01h7Q/0M4IPqRlqy84CvmlkP8BOioZ8fkMy2AuDuveF5O9EH+9nU8L2c5OT/PNAVZg80An8JrKlxTJWyBlgZtlcSjY3nyleEmQNLgN15XzGPehZ18e8F3nD3O/KqktrettDjx8wmEZ3feIPoQ+DysNuh7c39P1wO/NLDAPHRzt1vcPdOd59H9Lf5S3e/igS2FcDMppjZtNw2sBR4lVq+l2t9EqTCJ1guAd4iGje9sdbxTFCbHgK2AMNE44CriMY+nwY2Ak8BM8O+RjTj6W1gPdBd6/iLbOv5ROOkrwAvh8clCW7vGcBLob2vAjeF8gXAc8Am4KdAUyhvDq83hfoFtW5Die2+AHgsyW0N7VoXHq/l8lEt38ta3kFEJIWSPOwjIiIFKPmLiKSQkr+ISAop+YuIpJCSv4hICin5i4ikkJK/iEgK/T9d67Jf+oFdUQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(out_iwindow_c*2)\n", + "plt.plot(input_frame, '--')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FLOAT 32" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [], + "source": [ + "out_window_c = np.array([\n", + "\t\t-0.000222, -0.000430, -0.000271, -0.000233, -0.000295, -0.000373, -0.000330, -0.000332, -0.000329, -0.000308, -0.000405, -0.000380, -0.000329, -0.000183, -0.000268, -0.000405, -0.000418, -0.000453, -0.000345, -0.000274, -0.000266, -0.000267, -0.000307, -0.000465, -0.000448, -0.000325, -0.000318, -0.000324, -0.000353, -0.000366, -0.000396, -0.000479, -0.000443, -0.000505, -0.000577, -0.000465, -0.000508, -0.000460, -0.000371, -0.000491, -0.000534, -0.000611, -0.000696, -0.000427, -0.000507, -0.000676, -0.000509, -0.000486, -0.000564, -0.000762, -0.000892, -0.000844, -0.000709, -0.000659, -0.000792, -0.000852, -0.000914, -0.000805, -0.000821, -0.000962, -0.000810, -0.000776, -0.000816, -0.000728, -0.000788, -0.001144, -0.001159, -0.000902, -0.000912, -0.000821, -0.000887, -0.000925, -0.000812, -0.000950, -0.000999, -0.000928, -0.000920, -0.000910, -0.000901, -0.001241, -0.001088, -0.000947, -0.001133, -0.001179, -0.001244, -0.001104, -0.001160, -0.000915, -0.001127, -0.001677, -0.001407, -0.001294, -0.001429, -0.001322, -0.001634, -0.001328, -0.001192, -0.001695, -0.001180, -0.001115, -0.001638, -0.001995, -0.001937, -0.001755, -0.002052, -0.001525, -0.001392, -0.001979, -0.002175, -0.002110, -0.001707, -0.001932, -0.002080, -0.001883, -0.001623, -0.002143, -0.002631, -0.001712, -0.000992, -0.001362, -0.002968, -0.002772, -0.001998, -0.002474, -0.001678, -0.002273, -0.003430, -0.001929, -0.001057, -0.002187, -0.002446, -0.002011, -0.002014, -0.002799, -0.003863, -0.003262, -0.002667, -0.000922, -0.000803, -0.002615, -0.002044, -0.001576, -0.001949, -0.000993, -0.001561, -0.002818, -0.001176, -0.002274, -0.003031, -0.001086, -0.003690, -0.004987, 0.001030, 0.001142, -0.004354, -0.004240, -0.001063, 0.001842, -0.003194, -0.008849, -0.002935, 0.001500, -0.002377, -0.003177, -0.000766, -0.003630, -0.003312, -0.002966, -0.005902, -0.000443, 0.002251, -0.003658, -0.008382, -0.009199, -0.003870, 0.001620, 0.000900, -0.002153, -0.003273, -0.003242, -0.004057, -0.003129, -0.002391, -0.003441, 0.000178, -0.000179, -0.005062, -0.003822, -0.005139, -0.004825, -0.000760, -0.000658, -0.001455, -0.002896, -0.003950, -0.003163, -0.003608, -0.007977, -0.009476, -0.002863, 0.002354, -0.000962, -0.003614, -0.000609, 0.000278, -0.001785, -0.004227, -0.004607, -0.003242, -0.002602, -0.003093, -0.004384, -0.003541, -0.003065, -0.004108, -0.002593, -0.000925, -0.001594, -0.002731, -0.003641, -0.003095, -0.003806, -0.005076, -0.005176, -0.005394, -0.003161, -0.000533, -0.000949, -0.003061, -0.001965, -0.000537, -0.001076, -0.002066, -0.004018, -0.004144, -0.003489, -0.003885, -0.004373, -0.001963, 0.000635, -0.001664, -0.004817, -0.006520, -0.005130, -0.000395, -0.000486, -0.005415, -0.007062, -0.003685, -0.000731, -0.002469, -0.003873, -0.002318, -0.000976, -0.002197, -0.003784, -0.002380, -0.001617, -0.002105, -0.003386, -0.002318, -0.001280, -0.003322, -0.002102, -0.000974, -0.002373, -0.004043, -0.003281, -0.001487, -0.002699, -0.002636, -0.001664, -0.002570, -0.002929, -0.003076, -0.003915, -0.003068, -0.001051, -0.001229, -0.002425, -0.002959, -0.003610, -0.003276, -0.003121, -0.002818, -0.001569, -0.001950, -0.003095, -0.002647, -0.002025, -0.003220, -0.003884, -0.003350, -0.002440, -0.001362, -0.002889, -0.003803, -0.001781, -0.002635, -0.003969, -0.002733, -0.002100, -0.001952, -0.002509, -0.003624, -0.003360, -0.001702, -0.002668, -0.004043, -0.003090, -0.001072, -0.001341, -0.003490, -0.002634, -0.001866, -0.001831, -0.002279, -0.003523, -0.003082, -0.001640, -0.002554, -0.003302, -0.002321, -0.002855, -0.002557, -0.002467, -0.002199, -0.001704, -0.002226, -0.002743, -0.002678, -0.002539, -0.002723, -0.002289, -0.002056, -0.002238, -0.003144, -0.003077, -0.002676, -0.002280, -0.002808, -0.003166, -0.002912, -0.003379, -0.002253, -0.002535, -0.003970, -0.002659, -0.001141, -0.002177, -0.003331, -0.002475, -0.002326, -0.002093, -0.001885, -0.002934, -0.003207, -0.002449, -0.001869, -0.002225, -0.002902, -0.002635, -0.001789, -0.001874, -0.002570, -0.002548, -0.002546, -0.001811, -0.000859, -0.001703, -0.001951, -0.002156, -0.002689, -0.001733, -0.001753, -0.002166, -0.002110, -0.002142, -0.001286, -0.001893, -0.002607, -0.002058, -0.001653, -0.001784, -0.002436, -0.002087, -0.000992, -0.001314, -0.002584, -0.002029, -0.000950, -0.000651, -0.000644, -0.001302, -0.001726, -0.001417, -0.001300, -0.001581, -0.001660, -0.001571, -0.001402, -0.001425, -0.001340, -0.001127, -0.001475, -0.001430, -0.001349, -0.001356, -0.001215, -0.000957, -0.001242, -0.001449, -0.000790, -0.001237, -0.001096, -0.000780, -0.001131, -0.001039, -0.001343, -0.001418, -0.001035, -0.000438, -0.000663, -0.001404, -0.000935, -0.000930, -0.000887, -0.000483, -0.000795, -0.001061, -0.001097, -0.000661, -0.000360, -0.000749, -0.001035, -0.000789, -0.000912, -0.000959, -0.000595, -0.000653, -0.000768, -0.000711, -0.000597, -0.000601, -0.000895, -0.000845, -0.000709, -0.000880, -0.000806, -0.000658, -0.000441, -0.000676, -0.000765, -0.000557, -0.000483, -0.000378, -0.000680, -0.000624, -0.000415, -0.000297, -0.000291, -0.000491, -0.000467, -0.000414, -0.000557, -0.000620, -0.000367, -0.000293, -0.000436, -0.000508, -0.000515, -0.000316, -0.000117, -0.000260, -0.000484, -0.000512, -0.000335, -0.000230, -0.000426, -0.000278, -0.000110, -0.000227, -0.000312, -0.000392, -0.000305, -0.000208, -0.000192, -0.000223, -0.000273, -0.000230, -0.000253, -0.000341, -0.000271, -0.000217, -0.000319, -0.000290, -0.000196, -0.000275, -0.000325, -0.000270, -0.000162, -0.000140, -0.000182, -0.000198, -0.000189, -0.000183, -0.000249, -0.000216, -0.000184, -0.000205, -0.000166, -0.000146, ])\n", + "\n", + "out_swapped_fft = np.array([\n", + "\t-0.444425-0.444471j, 0.147275+0.194642j, 0.027436+0.026680j, -0.018663-0.007176j, 0.014902-0.005467j, -0.006206+0.001986j, -0.005695+0.007473j, 0.003942+0.000640j, 0.010041-0.006324j, -0.016139-0.002189j, 0.004948-0.000271j, -0.000006+0.006766j, 0.000338-0.007721j, -0.005458+0.007491j, 0.007430+0.004324j, -0.005510-0.004976j, 0.002125-0.005343j, -0.003766+0.008789j, 0.011320-0.002141j, -0.016141-0.003256j, 0.012492+0.009640j, -0.009013-0.011697j, 0.004403+0.015917j, 0.000866-0.008477j, -0.008141-0.004794j, 0.008170+0.006828j, 0.001121+0.001526j, -0.007603-0.007261j, 0.006941+0.007631j, -0.000752-0.007954j, -0.004860+0.000304j, 0.003283+0.005407j, -0.004007-0.003549j, 0.003328+0.001073j, 0.000848-0.006385j, -0.004421+0.004222j, 0.007978+0.000512j, -0.010129+0.000289j, 0.016129+0.003253j, -0.017095-0.016406j, -0.002201+0.023343j, 0.022771-0.013964j, -0.021021-0.005531j, 0.011207+0.019485j, -0.003859-0.010800j, -0.002701+0.000881j, 0.004337-0.008159j, -0.004004+0.014596j, 0.005157-0.008426j, -0.007892-0.003491j, 0.004670+0.007666j, 0.005405-0.001529j, -0.006854-0.003917j, -0.000888+0.015013j, 0.013148-0.016200j, -0.024670+0.003036j, 0.018275+0.008998j, 0.000496-0.017387j, -0.010456+0.018874j, 0.019651-0.004264j, -0.022312-0.015949j, 0.012105+0.026449j, -0.003994-0.022785j, -0.005456+0.006374j, 0.009045+0.010898j, 0.005977-0.022802j, -0.027180+0.020229j, 0.022784+0.000787j, 0.004343-0.019581j, -0.019107+0.014334j, 0.011030+0.004020j, 0.006091-0.010908j, -0.011419-0.006003j, 0.002043+0.016339j, -0.004516-0.005033j, 0.006712-0.004695j, -0.002872-0.006649j, -0.009265+0.014356j, 0.023214-0.001586j, -0.016589-0.005575j, 0.002044+0.011030j, 0.005768-0.007906j, 0.004332-0.014265j, -0.029414+0.021730j, 0.038192-0.000389j, -0.018614-0.018334j, -0.010955+0.014862j, 0.017594-0.002117j, -0.004915-0.009562j, 0.004446+0.004193j, -0.012264+0.008250j, 0.009326-0.006108j, 0.000447+0.004165j, 0.000888-0.018458j, -0.009058+0.017200j, 0.011397+0.003055j, -0.013435-0.018011j, 0.022668+0.010100j, -0.021480-0.010890j, 0.008992+0.017854j, 0.007556-0.013092j, -0.012457-0.002827j, 0.001119+0.014884j, 0.017877-0.016606j, -0.022094+0.009592j, 0.006142+0.006962j, 0.011161-0.015412j, -0.016032+0.000657j, -0.012483+0.013445j, 0.029670-0.012158j, -0.011642-0.011745j, -0.018580+0.021792j, 0.033877+0.006946j, -0.013491-0.035224j, -0.017337+0.020858j, 0.012910+0.005003j, 0.019510-0.013328j, -0.033523-0.001945j, 0.026986+0.014258j, -0.013343-0.014427j, -0.002581+0.008835j, -0.009168-0.012474j, 0.025877+0.017666j, -0.004202-0.028545j, -0.024776+0.014482j, 0.015818+0.017275j, 0.019344-0.024627j, -0.032221+0.003440j, 0.016086+0.024290j, 0.004482-0.037519j, 0.000768+0.028871j, -0.017526-0.023666j, 0.022623+0.039857j, -0.005381-0.043627j, -0.011163+0.007781j, -0.005465+0.054251j, 0.033490-0.054796j, -0.047309-0.010889j, 0.019800+0.058987j, 0.029604-0.058806j, -0.045791+0.024924j, 0.030404-0.014495j, -0.005635+0.015764j, 0.012941-0.020116j, -0.034777+0.026882j, 0.044472+0.001186j, -0.032342-0.053007j, -0.007532+0.057640j, 0.009362+0.003377j, 0.031258-0.054299j, -0.056555+0.028431j, 0.048858+0.036162j, -0.023690-0.070438j, -0.000546+0.042063j, 0.013761-0.022143j, -0.021860+0.010200j, 0.020076+0.010002j, -0.002091-0.018067j, -0.024423+0.007475j, 0.028663+0.003642j, 0.001555-0.013429j, -0.022914+0.016655j, 0.021368-0.009692j, -0.011336+0.001344j, -0.001132-0.010418j, -0.011427+0.016277j, 0.031163-0.023158j, -0.032278+0.005834j, 0.023594+0.031951j, -0.009339-0.027116j, -0.008990-0.002247j, 0.001336+0.013779j, 0.017550-0.007664j, -0.032897-0.009433j, 0.014249+0.045984j, 0.028637-0.057123j, -0.044525+0.016771j, 0.016866+0.019820j, 0.026017-0.008976j, -0.020923-0.023657j, -0.015052+0.045162j, 0.041948-0.032284j, -0.038705+0.006202j, 0.010743+0.013694j, 0.018214-0.014400j, -0.022378-0.007299j, -0.002211+0.021404j, 0.020072-0.019028j, -0.019217-0.014759j, -0.000381+0.044195j, 0.036154-0.041251j, -0.050833-0.000389j, 0.032453+0.023402j, 0.012366-0.018220j, -0.039904-0.012728j, 0.024446+0.028350j, -0.008011-0.027999j, -0.005103+0.029315j, 0.012847-0.015579j, -0.015197-0.003415j, 0.014266+0.021502j, -0.003060-0.023334j, -0.012216+0.016300j, 0.011237-0.007733j, -0.005269-0.000183j, 0.010499-0.004021j, -0.003834-0.000370j, -0.004112+0.003638j, -0.000730+0.005403j, 0.013482-0.007827j, -0.013606+0.001315j, 0.011675+0.003687j, -0.023109-0.012650j, 0.023814+0.038557j, 0.002835-0.054919j, -0.030982+0.044839j, 0.039389-0.014412j, -0.026328-0.019518j, 0.012438+0.027516j, -0.004412-0.017029j, -0.002837+0.013698j, 0.012274-0.008605j, -0.010618-0.000405j, 0.003755+0.010224j, 0.000295-0.012240j, -0.001278+0.002999j, 0.000198-0.005554j, 0.002270+0.003855j, 0.001127+0.004883j, -0.007861-0.008704j, 0.004021+0.001858j, 0.006470+0.011166j, -0.003190-0.015620j, -0.015537+0.006138j, 0.024431+0.002345j, -0.012524-0.012096j, 0.009545+0.016231j, -0.002683-0.020701j, -0.002722+0.014627j, 0.009854-0.005622j, -0.006771+0.002796j, -0.004558-0.006744j, 0.005077+0.008122j, 0.008893-0.006168j, -0.010098+0.000398j, 0.007907+0.000308j, 0.000988+0.005039j, -0.002966-0.017820j, -0.007371+0.010886j, 0.001622+0.004201j, 0.007932-0.006469j, 0.001879-0.006965j, -0.005096+0.015896j, -0.007607-0.019441j, 0.027511+0.027778j, 0.197063+0.149044j, ])\n", + "\n", + "out_rfft = np.array([\n", + "\t-0.888896+0.000000j, 0.344305+0.045582j, 0.054695-0.001180j, -0.026231+0.012147j, 0.009621-0.020925j, -0.004401+0.008663j, 0.002120+0.013729j, 0.005094-0.003143j, 0.002752-0.017492j, -0.018770+0.015464j, 0.005092-0.004912j, 0.007988+0.006673j, -0.009268-0.008684j, 0.003511+0.013809j, 0.012184-0.004122j, -0.010708+0.002425j, -0.004440-0.008184j, 0.006003+0.013540j, 0.008852-0.016603j, -0.019511+0.018037j, 0.023209-0.007868j, -0.022720+0.001534j, 0.025888+0.014002j, -0.010743-0.014858j, -0.014714+0.010745j, 0.015640-0.005696j, 0.004633+0.000680j, -0.015323+0.003196j, 0.008946-0.003471j, -0.000636-0.003774j, -0.003871+0.006233j, 0.004058-0.002474j, -0.008327+0.009354j, 0.008818-0.006604j, -0.010312-0.006855j, 0.005411+0.014915j, 0.006681-0.014519j, -0.013539+0.014899j, 0.027195-0.020697j, -0.039782+0.005730j, 0.032335+0.035112j, -0.003541-0.060391j, -0.029512+0.049970j, 0.045758-0.018703j, -0.028488-0.001303j, 0.010202+0.003519j, -0.012326-0.010486j, 0.012344+0.016695j, -0.000679-0.008522j, -0.004872-0.002048j, 0.000953-0.001559j, 0.007195+0.004936j, -0.007236-0.000010j, 0.011743+0.013994j, -0.007297-0.026278j, -0.015037+0.027962j, 0.026787-0.017476j, -0.020361-0.006293j, 0.010054+0.024973j, 0.008459-0.034359j, -0.026641+0.026080j, 0.042550-0.015078j, -0.047190-0.005789j, 0.005439+0.022812j, 0.041152-0.010103j, -0.050856-0.022745j, 0.020174+0.060188j, 0.018023-0.046065j, -0.027696+0.002400j, 0.013603+0.031415j, 0.007700-0.022642j, -0.024896-0.004004j, 0.008379+0.021484j, 0.019172-0.007684j, -0.034727-0.016595j, 0.027156+0.039177j, -0.002383-0.045001j, -0.022543+0.019361j, 0.022720+0.008820j, 0.017961-0.009107j, -0.032878-0.027364j, 0.009056+0.058099j, 0.021965-0.040871j, -0.029413+0.009434j, 0.016949+0.001785j, -0.001167-0.009066j, -0.006009+0.003551j, -0.014718+0.018812j, 0.027188-0.023910j, -0.027906-0.013727j, 0.025493+0.032125j, -0.008146-0.020313j, -0.002392+0.009780j, -0.014344-0.004666j, 0.021584+0.016179j, -0.017643-0.022617j, -0.005032+0.015101j, 0.031000-0.002038j, -0.024939-0.008119j, -0.001781+0.016130j, 0.019189-0.007983j, -0.020405-0.011529j, 0.012304+0.023943j, 0.003728-0.044251j, -0.032487+0.068896j, 0.054018-0.029360j, -0.053593-0.037225j, 0.023642+0.059440j, 0.011078-0.000471j, -0.001774-0.061323j, -0.039184+0.049952j, 0.046168+0.005593j, -0.030818-0.033253j, 0.007653+0.022068j, -0.002590-0.014494j, 0.029539+0.015824j, -0.044587-0.029652j, 0.025229+0.062778j, 0.024310-0.059151j, -0.048601+0.008940j, 0.031151+0.056453j, -0.003680-0.054016j, -0.010177-0.009109j, -0.007593+0.043523j, 0.023927-0.038661j, -0.017633+0.023050j, 0.000823-0.029098j, 0.004271+0.037743j, 0.016086-0.024290j, -0.032011-0.003216j, 0.019289+0.024399j, 0.015924-0.017891j, -0.026081-0.013287j, -0.001990+0.028441j, 0.024891-0.018994j, -0.010953+0.012710j, -0.000241-0.007178j, -0.012052+0.012478j, 0.022476-0.014422j, -0.029148+0.005916j, 0.018306+0.008600j, 0.013775-0.003673j, -0.020381-0.019588j, -0.008203+0.037176j, 0.029917-0.013318j, -0.020276-0.015013j, -0.004800+0.008691j, 0.023912+0.008475j, -0.014199-0.010539j, -0.008416+0.004484j, 0.008198+0.006618j, 0.000981-0.000161j, -0.013297-0.011133j, 0.013603+0.014419j, 0.002577-0.013085j, -0.013912+0.001498j, 0.008443+0.015110j, 0.008682-0.019792j, -0.020964+0.010246j, 0.020331-0.008495j, -0.006849+0.019682j, 0.006127-0.009017j, -0.009274-0.010713j, 0.003896+0.015135j, 0.001708-0.004803j, 0.006044+0.002072j, -0.006594+0.000717j, 0.000074-0.012087j, -0.008509+0.017604j, 0.022973-0.006188j, -0.013937-0.013558j, -0.016111+0.023047j, 0.038793-0.005490j, -0.032898-0.021730j, -0.003383+0.019378j, 0.025349+0.008881j, -0.009603-0.021624j, -0.017684+0.016287j, 0.026511+0.001429j, -0.007646-0.018652j, -0.015542+0.006811j, 0.021505+0.011588j, -0.008493-0.005360j, -0.006386-0.010328j, -0.001584+0.013087j, 0.008610-0.000394j, 0.001119-0.005258j, -0.012638-0.001946j, 0.012822+0.007222j, 0.004380-0.002657j, -0.011200-0.001292j, 0.006000-0.000331j, 0.000346+0.002402j, 0.001472-0.001783j, 0.003292+0.004269j, -0.005998-0.013177j, -0.003682+0.014031j, 0.006089-0.000779j, -0.007663-0.009480j, 0.005659+0.007679j, 0.005754-0.004972j, -0.012693+0.001593j, 0.008230+0.006221j, -0.001394-0.008752j, -0.004887+0.003725j, 0.008709+0.002444j, -0.000116-0.009595j, -0.007132+0.005082j, 0.005106+0.005306j, -0.002865-0.005729j, 0.003057-0.001013j, -0.001228+0.006324j, 0.001521-0.003153j, -0.010736+0.000369j, 0.011326+0.000582j, -0.004671-0.001587j, 0.004853-0.002644j, -0.003641+0.002618j, 0.001372+0.003566j, -0.001002-0.002418j, -0.001540-0.001333j, 0.002442+0.002089j, 0.000541-0.000875j, -0.001735+0.002547j, 0.004615+0.000663j, -0.002053-0.004882j, -0.000792+0.000375j, 0.002154+0.008034j, -0.000878-0.006219j, -0.000142+0.001753j, 0.000510+0.001012j, -0.001000-0.001359j, 0.003384-0.000081j, -0.003928-0.000244j, 0.002946+0.000429j, 0.001183+0.001135j, -0.001171-0.001277j, 0.000687+0.000592j, -0.000255+0.000166j, 0.000084-0.000871j, -0.000207-0.000045j, 0.000640+0.000656j, 0.000323-0.000324j, -0.000075+0.000150j, -0.000493-0.000565j, -0.000087+0.000215j, 0.000844+0.000398j, -0.000335-0.000166j, -0.000082-0.000283j, 0.000470+0.000417j, 0.000117-0.000213j, 0.000073-0.000288j, 0.000186+0.000439j, -0.000039-0.000118j, 0.000252-0.000082j, 0.000034-0.000015j, 0.000326+0.000000j, ])\n", + "\n", + "out_irfft = np.array([\n", + "\t-0.000222, -0.000430, -0.000272, -0.000233, -0.000295, -0.000373, -0.000330, -0.000332, -0.000329, -0.000308, -0.000405, -0.000380, -0.000330, -0.000183, -0.000268, -0.000405, -0.000418, -0.000453, -0.000345, -0.000274, -0.000266, -0.000267, -0.000307, -0.000465, -0.000448, -0.000325, -0.000319, -0.000324, -0.000353, -0.000366, -0.000396, -0.000479, -0.000443, -0.000505, -0.000577, -0.000465, -0.000509, -0.000460, -0.000371, -0.000491, -0.000534, -0.000611, -0.000696, -0.000427, -0.000507, -0.000676, -0.000509, -0.000486, -0.000564, -0.000761, -0.000892, -0.000843, -0.000709, -0.000659, -0.000792, -0.000852, -0.000914, -0.000805, -0.000821, -0.000962, -0.000810, -0.000776, -0.000816, -0.000728, -0.000788, -0.001144, -0.001159, -0.000902, -0.000912, -0.000820, -0.000887, -0.000925, -0.000812, -0.000950, -0.000999, -0.000928, -0.000920, -0.000910, -0.000901, -0.001241, -0.001088, -0.000947, -0.001133, -0.001179, -0.001245, -0.001104, -0.001160, -0.000915, -0.001127, -0.001677, -0.001407, -0.001294, -0.001429, -0.001322, -0.001634, -0.001328, -0.001192, -0.001695, -0.001180, -0.001115, -0.001638, -0.001995, -0.001937, -0.001755, -0.002052, -0.001525, -0.001392, -0.001979, -0.002175, -0.002110, -0.001707, -0.001932, -0.002081, -0.001883, -0.001624, -0.002143, -0.002632, -0.001712, -0.000992, -0.001362, -0.002968, -0.002772, -0.001998, -0.002474, -0.001678, -0.002273, -0.003430, -0.001929, -0.001058, -0.002187, -0.002446, -0.002011, -0.002014, -0.002799, -0.003863, -0.003262, -0.002667, -0.000922, -0.000803, -0.002615, -0.002045, -0.001575, -0.001950, -0.000993, -0.001561, -0.002818, -0.001176, -0.002274, -0.003031, -0.001086, -0.003690, -0.004987, 0.001030, 0.001142, -0.004354, -0.004240, -0.001063, 0.001842, -0.003194, -0.008849, -0.002935, 0.001500, -0.002377, -0.003177, -0.000766, -0.003630, -0.003312, -0.002966, -0.005903, -0.000443, 0.002251, -0.003658, -0.008382, -0.009199, -0.003870, 0.001620, 0.000900, -0.002153, -0.003273, -0.003242, -0.004057, -0.003128, -0.002391, -0.003441, 0.000178, -0.000179, -0.005062, -0.003822, -0.005139, -0.004825, -0.000760, -0.000658, -0.001455, -0.002896, -0.003950, -0.003163, -0.003608, -0.007977, -0.009476, -0.002863, 0.002354, -0.000962, -0.003614, -0.000609, 0.000278, -0.001785, -0.004228, -0.004607, -0.003242, -0.002602, -0.003093, -0.004384, -0.003541, -0.003065, -0.004108, -0.002593, -0.000925, -0.001593, -0.002731, -0.003641, -0.003095, -0.003805, -0.005076, -0.005176, -0.005395, -0.003161, -0.000533, -0.000949, -0.003062, -0.001965, -0.000537, -0.001076, -0.002066, -0.004018, -0.004144, -0.003488, -0.003885, -0.004373, -0.001963, 0.000635, -0.001665, -0.004817, -0.006520, -0.005129, -0.000395, -0.000486, -0.005415, -0.007062, -0.003685, -0.000731, -0.002469, -0.003873, -0.002318, -0.000976, -0.002197, -0.003784, -0.002380, -0.001617, -0.002105, -0.003386, -0.002318, -0.001280, -0.003322, -0.002102, -0.000974, -0.002373, -0.004043, -0.003281, -0.001487, -0.002699, -0.002636, -0.001664, -0.002570, -0.002929, -0.003076, -0.003915, -0.003068, -0.001051, -0.001229, -0.002425, -0.002959, -0.003610, -0.003276, -0.003121, -0.002818, -0.001569, -0.001950, -0.003095, -0.002647, -0.002025, -0.003220, -0.003884, -0.003350, -0.002440, -0.001362, -0.002889, -0.003803, -0.001781, -0.002635, -0.003969, -0.002733, -0.002100, -0.001952, -0.002509, -0.003624, -0.003360, -0.001702, -0.002668, -0.004043, -0.003090, -0.001072, -0.001341, -0.003490, -0.002634, -0.001866, -0.001831, -0.002279, -0.003523, -0.003082, -0.001640, -0.002554, -0.003302, -0.002321, -0.002855, -0.002557, -0.002467, -0.002199, -0.001704, -0.002226, -0.002743, -0.002678, -0.002539, -0.002723, -0.002289, -0.002056, -0.002238, -0.003144, -0.003077, -0.002676, -0.002280, -0.002808, -0.003165, -0.002912, -0.003379, -0.002254, -0.002535, -0.003970, -0.002659, -0.001141, -0.002177, -0.003331, -0.002475, -0.002326, -0.002093, -0.001885, -0.002934, -0.003207, -0.002449, -0.001869, -0.002225, -0.002902, -0.002635, -0.001790, -0.001874, -0.002570, -0.002548, -0.002546, -0.001811, -0.000859, -0.001703, -0.001951, -0.002156, -0.002689, -0.001733, -0.001753, -0.002166, -0.002110, -0.002142, -0.001287, -0.001893, -0.002607, -0.002058, -0.001653, -0.001784, -0.002436, -0.002087, -0.000992, -0.001314, -0.002584, -0.002029, -0.000950, -0.000651, -0.000644, -0.001302, -0.001726, -0.001417, -0.001300, -0.001581, -0.001660, -0.001571, -0.001402, -0.001425, -0.001341, -0.001127, -0.001475, -0.001430, -0.001349, -0.001356, -0.001215, -0.000956, -0.001242, -0.001449, -0.000790, -0.001237, -0.001096, -0.000780, -0.001131, -0.001039, -0.001344, -0.001418, -0.001035, -0.000438, -0.000663, -0.001404, -0.000935, -0.000930, -0.000887, -0.000483, -0.000795, -0.001061, -0.001097, -0.000661, -0.000360, -0.000749, -0.001035, -0.000789, -0.000912, -0.000959, -0.000595, -0.000653, -0.000768, -0.000711, -0.000598, -0.000601, -0.000896, -0.000845, -0.000709, -0.000880, -0.000806, -0.000658, -0.000441, -0.000676, -0.000765, -0.000557, -0.000483, -0.000378, -0.000680, -0.000624, -0.000415, -0.000297, -0.000291, -0.000491, -0.000467, -0.000414, -0.000557, -0.000620, -0.000368, -0.000293, -0.000436, -0.000508, -0.000515, -0.000316, -0.000117, -0.000260, -0.000484, -0.000512, -0.000335, -0.000230, -0.000426, -0.000278, -0.000110, -0.000227, -0.000313, -0.000392, -0.000305, -0.000208, -0.000192, -0.000222, -0.000273, -0.000230, -0.000253, -0.000341, -0.000271, -0.000217, -0.000319, -0.000290, -0.000196, -0.000275, -0.000325, -0.000270, -0.000162, -0.000140, -0.000182, -0.000198, -0.000190, -0.000183, -0.000249, -0.000216, -0.000184, -0.000205, -0.000166, -0.000146, ])\n", + "out_iwindow_c = np.array([\n", + "\t\t-0.002778, -0.005370, -0.003389, -0.002898, -0.003663, -0.004607, -0.004060, -0.004058, -0.003999, -0.003722, -0.004853, -0.004516, -0.003877, -0.002135, -0.003083, -0.004607, -0.004701, -0.005034, -0.003785, -0.002959, -0.002839, -0.002807, -0.003175, -0.004729, -0.004487, -0.003203, -0.003083, -0.003081, -0.003297, -0.003356, -0.003571, -0.004241, -0.003846, -0.004302, -0.004823, -0.003814, -0.004090, -0.003631, -0.002869, -0.003722, -0.003968, -0.004455, -0.004975, -0.002990, -0.003480, -0.004547, -0.003358, -0.003143, -0.003571, -0.004730, -0.005433, -0.005035, -0.004151, -0.003784, -0.004456, -0.004699, -0.004944, -0.004272, -0.004273, -0.004913, -0.004059, -0.003814, -0.003937, -0.003448, -0.003663, -0.005218, -0.005188, -0.003967, -0.003937, -0.003479, -0.003693, -0.003784, -0.003266, -0.003753, -0.003876, -0.003540, -0.003449, -0.003357, -0.003266, -0.004425, -0.003815, -0.003265, -0.003846, -0.003936, -0.004090, -0.003570, -0.003693, -0.002868, -0.003479, -0.005096, -0.004212, -0.003814, -0.004151, -0.003784, -0.004608, -0.003692, -0.003266, -0.004577, -0.003144, -0.002929, -0.004242, -0.005096, -0.004883, -0.004364, -0.005036, -0.003692, -0.003327, -0.004669, -0.005066, -0.004852, -0.003876, -0.004333, -0.004608, -0.004120, -0.003510, -0.004577, -0.005554, -0.003570, -0.002045, -0.002777, -0.005982, -0.005524, -0.003937, -0.004822, -0.003235, -0.004333, -0.006470, -0.003601, -0.001953, -0.003998, -0.004425, -0.003601, -0.003571, -0.004913, -0.006714, -0.005615, -0.004547, -0.001556, -0.001343, -0.004333, -0.003357, -0.002563, -0.003143, -0.001587, -0.002472, -0.004425, -0.001831, -0.003509, -0.004639, -0.001648, -0.005554, -0.007446, 0.001526, 0.001679, -0.006348, -0.006134, -0.001526, 0.002625, -0.004517, -0.012421, -0.004089, 0.002075, -0.003266, -0.004333, -0.001038, -0.004883, -0.004425, -0.003937, -0.007782, -0.000580, 0.002930, -0.004730, -0.010773, -0.011749, -0.004913, 0.002045, 0.001129, -0.002685, -0.004059, -0.003998, -0.004974, -0.003815, -0.002899, -0.004150, 0.000214, -0.000214, -0.006012, -0.004516, -0.006043, -0.005646, -0.000885, -0.000763, -0.001679, -0.003326, -0.004517, -0.003601, -0.004089, -0.009003, -0.010651, -0.003204, 0.002624, -0.001068, -0.003998, -0.000671, 0.000305, -0.001953, -0.004608, -0.005005, -0.003510, -0.002808, -0.003327, -0.004700, -0.003784, -0.003265, -0.004364, -0.002746, -0.000977, -0.001678, -0.002869, -0.003815, -0.003235, -0.003967, -0.005280, -0.005371, -0.005585, -0.003265, -0.000549, -0.000976, -0.003143, -0.002014, -0.000549, -0.001099, -0.002106, -0.004089, -0.004212, -0.003540, -0.003937, -0.004425, -0.001984, 0.000641, -0.001679, -0.004852, -0.006561, -0.005157, -0.000397, -0.000488, -0.005432, -0.007080, -0.003693, -0.000732, -0.002472, -0.003876, -0.002319, -0.000976, -0.002197, -0.003784, -0.002380, -0.001617, -0.002106, -0.003387, -0.002319, -0.001282, -0.003327, -0.002106, -0.000977, -0.002380, -0.004059, -0.003296, -0.001495, -0.002716, -0.002655, -0.001678, -0.002594, -0.002960, -0.003113, -0.003967, -0.003113, -0.001068, -0.001251, -0.002472, -0.003021, -0.003693, -0.003357, -0.003204, -0.002899, -0.001617, -0.002014, -0.003204, -0.002747, -0.002106, -0.003357, -0.004059, -0.003510, -0.002563, -0.001434, -0.003052, -0.004028, -0.001892, -0.002808, -0.004242, -0.002930, -0.002258, -0.002106, -0.002716, -0.003937, -0.003662, -0.001862, -0.002930, -0.004456, -0.003418, -0.001190, -0.001495, -0.003906, -0.002960, -0.002106, -0.002075, -0.002594, -0.004028, -0.003540, -0.001892, -0.002960, -0.003845, -0.002716, -0.003357, -0.003021, -0.002930, -0.002625, -0.002045, -0.002686, -0.003326, -0.003265, -0.003113, -0.003357, -0.002838, -0.002564, -0.002808, -0.003967, -0.003906, -0.003418, -0.002930, -0.003632, -0.004120, -0.003815, -0.004455, -0.002991, -0.003387, -0.005341, -0.003601, -0.001557, -0.002991, -0.004608, -0.003448, -0.003266, -0.002960, -0.002686, -0.004211, -0.004639, -0.003570, -0.002747, -0.003296, -0.004334, -0.003967, -0.002716, -0.002869, -0.003967, -0.003967, -0.003998, -0.002869, -0.001373, -0.002746, -0.003174, -0.003540, -0.004456, -0.002899, -0.002960, -0.003692, -0.003632, -0.003723, -0.002258, -0.003357, -0.004669, -0.003723, -0.003021, -0.003296, -0.004547, -0.003937, -0.001892, -0.002533, -0.005036, -0.003998, -0.001892, -0.001312, -0.001312, -0.002685, -0.003601, -0.002991, -0.002777, -0.003418, -0.003632, -0.003479, -0.003144, -0.003235, -0.003082, -0.002624, -0.003479, -0.003418, -0.003266, -0.003326, -0.003021, -0.002411, -0.003174, -0.003753, -0.002075, -0.003296, -0.002960, -0.002136, -0.003144, -0.002929, -0.003845, -0.004120, -0.003052, -0.001312, -0.002014, -0.004333, -0.002930, -0.002960, -0.002869, -0.001587, -0.002655, -0.003601, -0.003784, -0.002319, -0.001282, -0.002716, -0.003815, -0.002960, -0.003479, -0.003723, -0.002350, -0.002624, -0.003144, -0.002960, -0.002533, -0.002594, -0.003937, -0.003784, -0.003235, -0.004089, -0.003815, -0.003173, -0.002167, -0.003387, -0.003907, -0.002899, -0.002564, -0.002044, -0.003754, -0.003509, -0.002381, -0.001739, -0.001740, -0.002990, -0.002900, -0.002624, -0.003602, -0.004089, -0.002473, -0.002014, -0.003052, -0.003631, -0.003754, -0.002349, -0.000886, -0.002013, -0.003815, -0.004119, -0.002747, -0.001922, -0.003632, -0.002410, -0.000977, -0.002044, -0.002869, -0.003661, -0.002900, -0.002013, -0.001893, -0.002227, -0.002778, -0.002379, -0.002656, -0.003631, -0.002931, -0.002379, -0.003541, -0.003264, -0.002229, -0.003173, -0.003785, -0.003173, -0.001924, -0.001677, -0.002198, -0.002410, -0.002320, -0.002257, -0.003083, -0.002684, -0.002290, -0.002562, -0.002076, -0.001830, ])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAnRklEQVR4nO3deXhcZd3/8fd3ZrI03dOka9qke5vubboB4sIioIKIS/HhBwKCPIKAqI+gPIggKqD4qAiyq6AsylahUChCy9It6d6kS7pvaZKmTddsM/fvj1k6k6UNbdpw0s/runp15pyTM/c9p/3kPt9znxlzziEiIt7na+0GiIhIy1Cgi4i0EQp0EZE2QoEuItJGKNBFRNqIQGu9cEZGhsvJyWmtlxcR8aSCgoJy51xmY+taLdBzcnLIz89vrZcXEfEkM9vU1DqVXERE2ggFuohIG6FAFxFpIxToIiJthAJdRKSNUKCLiLQRCnQRkTbCc4FeNH8mcx//PrU11a3dFBGRTxTPBXrlmg+ZuvVJamuqWrspIiKfKJ4LdCzc5GAw2MoNERH5ZPFeoPv8AIRCoVZuiIjIJ4v3Aj0yQnfBulZuiIjIJ4vnAt1iI3SVXERE4nku0KMjdAW6iEgiDwZ6eITuVEMXEUnguUA3X3SWi2roIiLxPBfosVkumrYoIpLAc4Fu0VkuKrmIiCTwXqDHZrmo5CIiEs9zgR4tuTjNchERSeC5QI+VXFRDFxFJ4L1Aj5ZcnGroIiLxPBjokRuLNEIXEUnguUA/fGORAl1EJJ7nAt10UVREpFHNCnQzO8/MVptZsZnd2sj6fmb2rpktNrNlZnZByzc18lrRQFcNXUQkwVED3cz8wJ+A84Fc4FIzy6232e3AC865ccA04KGWbujh9kRr6JqHLiISrzkj9ElAsXNuvXOuBngOuKjeNg7oFHncGdjeck1MZP7wCB3dKSoikqA5gd4H2BL3fGtkWbw7gcvMbCswA/heYzsys2vNLN/M8svKyo6huXEjdNXQRUQStNRF0UuBvzjnsoALgKctmrxxnHOPOufynHN5mZmZx/RC5guE96URuohIguYE+jagb9zzrMiyeFcDLwA45+YCqUBGSzSwvug8dKfPchERSdCcQF8IDDaz/maWTPii5/R622wGzgIws+GEA/3YaipH4dMsFxGRRh010J1zdcANwEygiPBslpVmdpeZXRjZ7AfANWa2FHgW+JZzzp2YFuuzXEREGhNozkbOuRmEL3bGL7sj7nEhcHrLNq1xPn+khq4RuohIAu/dKRr7gguN0EVE4nkv0HXrv4hIozwb6DgFuohIPM8Fus8f/ZJo1dBFROJ5L9A1QhcRaZTnAv3wjUUKdBGReJ4LdF/k1n80bVFEJIHnAl2zXEREGue5QPf5IyUXjdBFRBJ4LtBj0xY1QhcRSeC5QPf79fG5IiKN8VygR2e5aNqiiEgizwX64XnoGqGLiMTzbKBrlouISCLPBbr5NQ9dRKQxngt0X7SGrhG6iEgCzwW6368auohIYzwX6Kqhi4g0znuBHqmh2wn6ylIREa/yXqBHP21R89BFRBJ4LtD9muUiItIozwV69E5RUw1dRCSB5wIdoM75VHIREanHk4EewlRyERGpx6OB7lPJRUSkHs8GukboIiKJFOgiIm2ENwPdFOgiIvV5M9AxTLNcREQSeDTQNUIXEalPgS4i0kZ4NtBNgS4iksCTge50Y5GISAOeDHSN0EVEGvJkoDvzaZaLiEg9zQp0MzvPzFabWbGZ3drENl83s0IzW2lm/2jZZiYK4QP0BRciIvECR9vAzPzAn4BzgK3AQjOb7pwrjNtmMHAbcLpzbreZdT9RDYZwDV0jdBGRRM0ZoU8Cip1z651zNcBzwEX1trkG+JNzbjeAc660ZZuZKGR+1dBFROppTqD3AbbEPd8aWRZvCDDEzD40s3lmdl5jOzKza80s38zyy8rKjq3FaJaLiEhjWuqiaAAYDHwGuBR4zMy61N/IOfeocy7POZeXmZl5zC+mWS4iIg01J9C3AX3jnmdFlsXbCkx3ztU65zYAawgH/AnhzIehQBcRidecQF8IDDaz/maWDEwDptfb5hXCo3PMLINwCWZ9yzUzkUboIiINHTXQnXN1wA3ATKAIeME5t9LM7jKzCyObzQR2mVkh8C7wI+fcrhPV6PA8dAW6iEi8o05bBHDOzQBm1Ft2R9xjB9wS+XPCOXRjkYhIfd69U1Q1dBGRBJ4MdNXQRUQa8mSgh0fouvVfRCSedwNdNXQRkQTeDHR8mNMIXUQknjcD3Xz40AhdRCSeZwNdNXQRkUTeDHTNchERacCbga556CIiDXgy0DEfPo3QRUQSeDLQNUIXEWnIm4GOD58CXUQkgTcD3fyahy4iUo8nAx0zzUMXEanHk4HuzK956CIi9Xgy0DXLRUSkIU8GevjWfwW6iEg8TwY6CnQRkQY8GejO/Ap0EZF6PBno6MO5REQa8Gyg+zVCFxFJ4MlAD99YpEAXEYnnyUDXCF1EpCHPBrpq6CIiiTwZ6M78GqGLiNTjyUDHpxG6iEh93gx01dBFRBrwaKD78ZnDhRTqIiJRHg30cLNDCnQRkRhvBrovGuj6THQRkShvBnpkhB4M1rVyQ0REPjk8GehmfgDV0EVE4ngy0KMlF43QRUQO82agR0bouigqInKYRwM93GynEbqISIwnA918GqGLiNTXrEA3s/PMbLWZFZvZrUfY7hIzc2aW13JNbOyFVEMXEanvqIFu4SklfwLOB3KBS80st5HtOgI3AfNbupENREboaIQuIhLTnBH6JKDYObfeOVcDPAdc1Mh2dwP3AlUt2L5GWXSEHtIIXUQkqjmB3gfYEvd8a2RZjJmNB/o6514/0o7M7Fozyzez/LKyso/d2Nh+ojV0lVxERGKO+6KohYfLDwA/ONq2zrlHnXN5zrm8zMzMY35NF53lEtJH6IqIRDUn0LcBfeOeZ0WWRXUERgLvmdlGYAow/UReGNUIXUSkoeYE+kJgsJn1N7NkYBowPbrSOVfpnMtwzuU453KAecCFzrn8E9JiDge6c/pwLhGRqKMGunOuDrgBmAkUAS8451aa2V1mduGJbmCjop+2GFSgi4hEBZqzkXNuBjCj3rI7mtj2M8ffrCMzC0ReS9MWRUSiPHqnqAEaoYuIxPNooEdG6PqCCxGRGG8Guukbi0RE6vNmoPuj89BVQxcRifJkoB/+PHTNQxcRifJkoPuiH86li6IiIjGeDHTzhy+K6uNzRUQO82Sg+wLJALhgbSu3RETkk8ObgR4ZoYfqFOgiIlGeDHR/ZIQe0ghdRCTGk4HuiwW6augiIlGeDHR/IHKnaLCmlVsiIvLJ4dFATwLAqYYuIhLj0UBPAcDpxiIRkRhPBrovVnLRCF1EJMqTgR5I0jx0EZH6vBnosRuLVHIREYnyZKD7IhdFCWmELiIS5clAT0rSCF1EpD5PBnq0hq4RuojIYd4M9GjJRSN0EZEYTwa6+XzUOZ9G6CIicTwZ6AB1+DFNWxQRifFwoAfA6RuLRESiPBvoQfNphC4iEsezgR4eoeuiqIhIlGcDPYgf04dziYjEKNBFRNoI7wa6BRToIiJxPB3oPtXQRURiPBvoIZVcREQSeDbQg+bXCF1EJI6HAz2A6cYiEZEYzwZ6SCN0EZEEHg70AD7V0EVEYpoV6GZ2npmtNrNiM7u1kfW3mFmhmS0zs3fMLLvlm5ooZAF8KrmIiMQcNdDNzA/8CTgfyAUuNbPcepstBvKcc6OBfwH3tXRD6wv5AvjRCF1EJKo5I/RJQLFzbr1zrgZ4DrgofgPn3LvOuYORp/OArJZtZkMhzUMXEUnQnEDvA2yJe741sqwpVwNvNLbCzK41s3wzyy8rK2t+KxvhLIBfJRcRkZgWvShqZpcBecD9ja13zj3qnMtzzuVlZmYe12s5XwC/RugiIjGBZmyzDegb9zwrsiyBmZ0N/BT4tHOuumWa1zRnfvxohC4iEtWcEfpCYLCZ9TezZGAaMD1+AzMbBzwCXOicK235ZjYU8iVplouISJyjBrpzrg64AZgJFAEvOOdWmtldZnZhZLP7gQ7AP81siZlNb2J3Lcb5AgQ0y0VEJKY5JRecczOAGfWW3RH3+OwWbtfR+QIquYiIxPHsnaJOgS4iksCzgY4viYBq6CIiMZ4NdOfzq4YuIhLHs4FuviQChFq7GSIinxieDXTnT8JnjmCdRukiIuDhQMfnB6C29oTfwyQi4gmeDXTzJwEQrKtt5ZaIiHwyeDbQ8YUDva5WgS4iAh4O9OgIvU4lFxERwMOBji98k6tKLiIiYZ4NdAtEa+g1rdwSEZFPBs8Gui96UVQ1dBERwMOBjj9actEIXUQEPBzo0RF6KKgRuogIeDrQkwFdFBURifJsoFu05FKrkouICHg40H2RWS4uqM9yEREBLwe6Si4iIgm8G+iBcMklFFTJRUQEvBzosVkuKrmIiICHA92fFC65OJVcREQADwf64RG6Si5t2bxn7mTBy39o7WaIeEKgtRtwrPya5XJKGFz8JAB1X7yOQOSsTEQa59kRuj8QKbnoTtE2a3fZDrpRSTcqWfLWX1k+51UqSrc1++eLl35I0T1TWfbeiwAc3F9J1cH9J6q5Iq3OuyP0JO/e+l9Ruo2qg/vpnTP0pL3m3j27KHnwPCpHfouJX77+pL3u8di+djFdI4/zFv4QgNp3/Gz4+htUlmwgZd7v2Z/Wl4nff6HRn9/zzgPk1RbCe1ex3Iyk9+8j6Esi99bZmM+zYxmRJnn2X3V0hI4HSy5lj36Fnk9NZuHvvnbSvuR69VPfZUjdGjKX/RkXCh3zfipKt7HmFxNZs+i9lmtcE/ZvWQ7AgvQvscGXzbwhPyTJglRsXE6v93/CkJoiJux5i/KSLQ1+tnJ3OSMrZ7OgywWU04W0OXcxrK6IETXLWD77pRPedpHW4NlAj9ZTQ7VVrdySj2fNovcYWreK1cnDmVj5FvkvPXDCX3NV/jtMrHyT9b4cckKbWbvk/WPe19p3n2ZI3RoOzLq3BVvYhLJV7HPtmHjD3+h/xzKGn3cdALUVm8lwFSxrPxWfOdZ/8M8GP7pq1l9JtVq6nHkdxT3OY2BwA0FnlJJO8oe/OfFtF2kFng30Lt16ss+1w8pXt3ZTPpbK2Q9xwKWSdcPrrEgZy/DC31G5a2eLvoYLhVi1cBab1ywBYN/7j3LApdLx269yyCWz+8Mnj/jz1VUHKXj9cSoryhqs67DuNQDGHJjLtvVFLdru+jruXcu2pJxYeaRTl25UuSSSSpfjN0dN/7PYbj1ILZ7R4Kwjdf2bbLWeDB77KTJPvwKAwtRxrOv9RQbWrjlpZ0YiJ5NnA93n97MpdSjpe1a0dlOabdXCWYzf8xbLu3+Jjp3TCZx1O504SPH811rsNWqqq1hx7+cY9vol1Dx/FZUVZYza8w4rMj5PZu8cVrWfSN+KuUfcx6JnfsqEhT/A9/tRrMp/J7a8vGQzw6tXsCD9SwTxsfntB1us3fW5UIheNRvZ23FgbJn5fOzypdNjfyEAKelZbO5xNqOrFlJ210BKt20Awr+QBh9cyrZup2E+HwNGTmFu32tIOud2/On9SbIgm9csJv+BS9j+8yEsnvnXE9YPkZPJs4EOsC99NNl1G6iuOtjaTTmqPeUldJzxXXb6Mhlx2X0ADBr3afa7dtStm9Nir1Pw9G2Mql7MmsAQ+tetp+jNP5NqtXQ781oAqrOm0tvtpGRLcaM/v33DKsZveZql7SYRND8HZh8O7fUfvoTPHJlnfY/CtDz673iTUDDYdFtef5ziu8dTdejAx+7HxlUFdGUf9JmQsHxvIIMsVwJAx8x+jL3ifuYO+j7dqWDT/OkArM2fRZpVkzLsXCD8i2Dq1b9hWN5ZpPUI/4LYOftx8vbOoluogsCipwAI1tWxfWPLnPHV1lSzqaigRfZ1vPJfe5T5D17F0ncblqakbfF0oKdkTyDZgmwqXNDaTTmiqkMHKHnkYjJCFey94GE6dk4HwtcB1qWNpnfF8bd/x6bVFN5zOlO3PsnCzudx6LQf4TfHwDVPUEImA0edBkDGiM8BsPGDF1j67j8blCo2v/l/GI6e//VnVnc7m+F7P+TAvj0A2Oa57KYTOcMnUjv8YnpSzpq4EXzU/AevZN5D19Jv4S8YFFzH2oVvfez+lCwITzUccNolCcsPpmTGHnftmU1qu/ZM+eYdVNAJNn0EwL6VM6l1fgZNOq/BftOzwjOL+pa+C8CSzAsZXrWUPeUlFDz0Lbo/NYXipR9+7PbWt+ix75L9/OeY//yvj3tfx6N46Yfk5f+IiWUv0fX9n7VqW+TE83Sg9849HYDda+e1+L5rqqsomj/zuGaERC197WGG1RayYtKvGTbx7IR1h/qcRl+3nbLtG5u9v/Ur5lN893h235nF3Kd+jAuFKP/Hd+hXs465/a9n5LWPkzPm0wBksptN6VNjdej+IyazlzSmrL6XMbO/zYr3X4nt14VCZJW+x6p24+iRNZCOedNIs2qK3n0OgF57l7AxbRTm8zHsM9OocklULny2Qdsml7/ElNLnyWQ3dc7HgZUzE7Y5sG8P5SWbqTq4n/l/vIJV8xsGfret77AmMISM3tkJy2vTugNQ4wJ0zegFhEfgG9uPpc/exQB0L/2INSm5dOjUlfq6Zw2gzvno43ay3bqTfsaVBCzE2mduZlLFvwlYiJRXvk3pnf3ZeNcoCl5/nL17drHs3X9RMOMpltx3HptWLUrY577KCvL//UjsTGRr8QrGl75MJe2ZXPSrVi3p7H371+wljfn9vk2/0DZKNq9ttbbIiefpQO+RNZBS0um++h9U7i5vsP7g/kr2VVY0a18uFGLuYzcz76FrWbNoNksevpLhb3ydRW8c+QJic3RZ/QIbff0Yf/5VDdZljDoHgI0LXm/WvjasnE+Pf15Ip+BuygK9GLfxCeb95VZGVS9m5YhbmHrFL2nXviOdu/Vgs68PAElDz439vD8QYH3aGAAqaU/qnHtY+MqDbCoqYEvxMrLcDg71D7dp2KRz2Wq9GLDoHpbPeZksV0J170kAdOjUlZUdT2do+VsJJa/yd37PIZfM3AE3MrfvNRSljqFn2eER77y//xz/bwbR7uGJLJ3+RybveoWcGd9k+ZxXY9sse+9FhtStYVfWWQ3fgA49w6/jS0+YS16TNYXebidrF89hYHA9+3qf2ej7F0hKZqcvPMovbTeQQaNPZ6v1YuKeNyghk/nDfxr+BZvcl6D5GbngVip/fwajZ1/NhAU3M/bgXHbO/G1sf8VLP6Dmd2PJK/gfFj/zEwB2/Ptuaglw6KrZrPUPov/cn1C6bQMbVs6ncO4bRzvEx82FQhw6sI/ipR8wdt/7rOzzDXqdNg2AzS/dwdJ7z2X5nFdZu3gO8/94BQte/F3sZ5sqxYk3ePbGIgiPzHZ+7gGGvnM1hY9dxtj/eTO2btfOrdQ+/BnKU/ow8rbZR91X/vSHmbrtKYLO8E9/HoBql0TXgj/izr/qmG9E2VRUwNC61cwbfAs5jexjwMgplL/cBX/xTOB6tq1fSeXOzeROPb/Bti4U4tArt1BjyXDNf0g7dIDA059i6uZHWJaax8RLfpCwfUmnMfTaXcLgKV9IWN71wl+yZOtqaveWMnHZHbDkp7AEdhAOun5TvgyELzy7bz5P3d+/TO47V4JBeu5nYvtJyrucLu+9R8F/nmXCBVezr7KC0RVvsbTb+Uy9/G4A5j3zM0YV/x8lW4pJbdeBMWseZHNSf4bUrWFM0W8ptXQO+dPo+u6P2ZDRm8rX/pexB+ey2deHQede1+A9CHTpDUBlIIPeccszR3wWVt9H7RvhUO02tuH7F7U7uRd9qndyqOtQzOcj9Ttvs2b7enoOGMnkLt0o3fY1cntls7t8B5UPnUG30C7y8+4jpVMm1QV/Z3jFO1Qd3E9Kahp1//4hDmNZah7jt/6dDSu/ycg9/2FZxvlM7jeY2mlPkvbMZ1k1/V4yy+czoG4Lm7vNot+QsQlt2r93Nwf2VtAja2DsWM9/7h76rP0HXUK72dAulwO9T2f8128jJTWtyb5VlG5j+xPfJKdqNSm+rlRYZ3K/ejudOqdTSjqT9swIb/if+bGfCZW/yuIO6VSXb2LK2t+y/LNPMerTX2nyNeSTy9OBDjDqzIuZWzyXqZsfYWvxCrIGjcSFQux48r8YSRndq8opL9lMRs9+Te5j8VvPkLv4LgqTR9LnupdY/d6zhPaV4uvci0lLb6f0roGUpA7Ed/r3yD3ti2wsymfAyMlHbNfaJe+zZ/0iei7/M1UuicFnX93odj6/n/XpnyJ31yyW/ucFBsy+kUxqKMteRGbvnIRtF73xJBNqV7Bg5M+Y1Kc/AHOzLid191qGXf88Pr8/Yft+l9zN6o3TGBmp2UdlDxtP9rDxhIJBlnbtTYeMvpQumk7/Dc9TlDSC4dmH72DtO3gMO658kw1/u5SuwXL6j5waWzfijIsoeS+D5KVPwwVXs+aDl5hgtXSafFlsm6wpXyO09vdsnPkQLpDMVKsh6SsPUfjyzeTWrmBxrwtIG/wpxsz5DnXPn0s3a8fc7OsYN+0OUtu1b/B+paaHzzoOpvZIWD5g5BSK/j2C3Jrl7KZT7JpBYw627wvVS0jqNQKAjJ59yejZN7a+e+S9Te/eh5Kr32ZX9SHyBo0CYIU/QMdZs8h/91l8/iTG1xWxYNTP6TfxC4SeOI30f15MO6uh6+lXxd6/Je0nkbvzVTpxEAwOvXAtdT/+IHYvxcJXHmToknvo5OpYe/FLdO2ZzZa/XceUgx9SmDyK7R3y6L5nGaPX/4G5z9Yw5YpfsWn1IpJS2tNnwPBYu6urDrL7kS8yqG4LJf6e5IS2kD/hPvK6ZgCwscsUOu1+m80X/Yu9W4swfxK9R36KfU9fxpiPbiKIDwxqF/4Fmgj0qkMHSE5ObfBvLd6BfXtITmlHUnJKk9vIiWHOuVZ54by8PJefn98i+yrbvpGuj4yjOHkYgVA1u4Z9k8kr72Z++oVMrpjOgpE/I63HQKrnP8nA/fmU+3tQ1ucsuuddTHnRHCYX/Yq1/kF0uvKF2AgJoK62hoV/+RGB/TvIrlxIErWs6vsNpm55nHmDbmbKZT+Pbbu1eAVb334Qf6+RuI0fxkZC5XRh57kPM+K0C5ps/5JZzzL2g/BodJMvi77BbczveyVTv334VDgUDLLlnjE4jL4/WYw/0PK/i6MzVhr7z1pXW8OBfZV0Ts9MWD73b//L1PV/YNHUB3ErXiRn3yK63L4+oX2L7zufgQeXYi7EhnYjGX3rLBa/9QwjPryR7dPeInvoeJbddy7tayvocMXz9Ow3uMk2blq9hOxnP828Hpcy5b//nLBuQ+FCsp7/PEs7f5a8W15sch9z//pTpm54kA1fn0X/3InNem+iQsEg23+RS62lEnA1BC1A1m0FBJKSWTzzr4z56CY2+7PIvn1Z7Kwu/7VHycv/ESFnLBjyfaasfYB5OdeT87kryeiVzd57BrLL352OwUo6un34COEnxKIhNzH50ttj+1l83wUMPrCIcn8GOaEt7KIz7X64nLQOnQGY99A1TCl9gSVn/Jlhp32Jjcs/YujEs2M/X7m7nL27dtA38sspav/e3az4+210qVjK/na9GV35HouG3EjyjgKqO2Yz4Vv3U1dbTeEjVzJ672wW9biE4dPuYdf29Q0GNtE2lNOF6stnsHXhv+ncfwLDJp3Dyo9msH/RP8k48xoGjm76F25jNqycT2XJBgZPOo/2Hbt8rJ9ta8yswDmX1+i65gS6mZ0H/B7wA487535db30K8DdgArAL+IZzbuOR9tmSgQ6w+P4vMO7AB7Hn5XShw48LqbhvLOmh3aRaLbvpRHHnqXQ8uIUhNUX4LNz3xWmnkXvji0c8lS2c9ya5b34DgCqXRKrVsnDsL0nr3p9QXTXtZt/NoOA6IFyqWdzzErLO+R4ZvXNITetwxLYfOrCP2vuHUObvScZ332T9E98i5+By9nz9ZXKGTWDeYzfRfvdKRlcVkD/xN+R94ZrjfbtaTG1NNZvunUpGcCfJrpYV3c5l0o3PJGxTNH8mw9/4OlusN0lXTo8F9v69u2MXLkPBIGZ21NLWgX174DdDWTn6NiZdcnOD9asWzqJbn0ENzm7ilWwpZsOsx5h8+S+PONJsSsGMJ5iw4BYAlp75CGM+Ny22bsUH00nr0iMh6A7ur4T7B7MhZSi5t85m8W8vYvyB8FTVRe3PZPyBOSya/H90zR7Jrjd/TV1KV3qfc0ODssymVYvo/ezZlPoy2Jx1IVO3PMbcvtfQecTZVC5/g6nb/sK8zK8x5frHP3afotYueZ/Br3wRgBIy6UkZhcmjOJTcjXH7ZrMuMJD+devZ4etJ79AOFk/4NXkXhgcjq/P/w9DXLmZx+zMYvL+AOvPThfCHoa0JDCG7dgMpFv7spW3Wg805XyVp12r67V1EEnWUJPWlMn00SdmTGfapiwkGgxzav4dNC2cwaentABQmjWTA92fiDyR9rDOA5bNf4uDy1+h62uUMGf+ZY35/PgmOK9DNzA+sAc4BtgILgUudc4Vx23wXGO2cu87MpgEXO+e+caT9tnSgl2wpZkvBm4AxcclPmJdzPVO+9UvmPvEDRm7+O4XDb2LMRTfGTuN37dzK+g9fpG73Fsb/111HDHMI1zTX/nIyQ+rWsPKcf+Dm3Edu1dLYLwWAgkkPkJ49kl79Rxw1xBtrf5duPUlN60Dx0g/p9vI36OAOUpg2gTGHFnDApbLT35PsnxSckNH58diydin7X/hvhteuZOW5zzZ6NrLs3X/Rd+TpdM3sddyvt2vnVrp069lq74MLhVh+3zkEfcmM/eHrzbq+svKjGXTK7EPfwWOo3LWTwlfup+uODxhWV8Qhl4z7UXFspH0k2zeuJr1HFqnt2rPs1+GbqqLyO53NuBufP+73ZfFbz9A5awgDcieRP/1hhhX8nA52iLl9vsXQi/6HpD9NIJUaNgb6M7BuHQszL4buuWQXPoKfOtrdspiVbzzC5KJfMT/jK7j0AfQo/hfVvnZ0mPY42wpeo/36NxhZvYSDLoWVXT6N86fQad86+tesJcVqKSWdJGrp7PZTh5+1KbnsH/hFJhf9EoAa52ervy+7Og4hmJlLcrccaiq2YMnt6dJ/HBUFL9N757t0D+6ksNPpDN43P1zyAub2/TY5Z19L9cF97Fw2C9+OJfiCVdRkjqLjgIkkp3WmfZcMumcNIik5hVAwiM/vJ1hXh8/na3C862pr8PsDJ+0D34430KcCdzrnPh95fhuAc+5XcdvMjGwz18wCQAmQ6Y6w85YO9CgXCrFu+Uf0HzEFfyBAKBjEOdci//nXLJpNReG7TLnsTvZVVrD20cupzhhBoHNvQrWHmPyNW1ugB2G7y3ZQ/MzNTKx8kyVpUxl1y2uY2TGNKE+Wg/srmxVKbcGRylPNtaFwIf2eP4elHc5g/I8+/t3C29YXsfn9p0nrN44O3fowYOSUExIqZds3smH+dMZ94TskJaew8qMZOBdk0LjPsvSpm5hc9i8ANvr6UnXB7xmWdxYuFGL9inn0HzG5yfdoU1EBHdJ70K1HVmxZTXUVaxa+hW/OfQQtiQNdhtB112LSr3qBzN45FMx4gpptyyEUJG13Eb2q1tGdhjPZ6pyPotSxVKVmMrFyJvtdO0q/9iq73n6AiZVvJmxbRldqLYnerrTBPg5aKh3cISqtIx1d+Gxjn3UgiI9Obj/7LY3Obh8AByyNIH5SXDW1FqCWJPwEMRx1BKgjQNAC1DofpRO+z6QvXXtMx+N4A/2rwHnOuW9Hnv8/YLJz7oa4bVZEttkaeb4usk15vX1dC1wL0K9fvwmbNm06pg6dSjatXkLP7CFHPYMQb1o+52UysnPplX3yPkq5pZWXbObQvj30yhnWKl9CUrlrJ+Xb1tE5ow8VJRvZu7WQgVO/HDsbLJz7Bv6kFIbmfQ4XClE4700O7FiNL6U9mYMnkT10LBC+m3tL4VyCtdXU7C0luGsDvqo9hFI64zu0i1BqVzDDV7UHC9WFl9fsJZgWvq7kq94LoTpcoB0WqsWC1Tjzg/mwUC0EayFUR4qFSJ50BcPP+PIx9fcTE+jxTtQIXUSkLTtSoDfn/Gwb0DfueVZkWaPbREounQlfHBURkZOkOYG+EBhsZv3NLBmYBkyvt8104IrI468C/zlS/VxERFreUa8UOufqzOwGYCbhaYtPOudWmtldQL5zbjrwBPC0mRUDFYRDX0RETqJmTf1wzs0AZtRbdkfc4yrgay3bNBER+Tg8/eFcIiJymAJdRKSNUKCLiLQRCnQRkTai1T5t0czKgGO9VTQDaPKmpTboVOrvqdRXOLX6eyr1FU5cf7Odc5mNrWi1QD8eZpbf1J1SbdGp1N9Tqa9wavX3VOortE5/VXIREWkjFOgiIm2EVwP90dZuwEl2KvX3VOornFr9PZX6Cq3QX0/W0EVEpCGvjtBFRKQeBbqISBvhuUA3s/PMbLWZFZtZy33n2yeEmW00s+VmtsTM8iPL0s3sbTNbG/m7a2u381iZ2ZNmVhr5UpToskb7Z2F/iBzrZWY2vvVa/vE10dc7zWxb5PguMbML4tbdFunrajP7fOu0+tiYWV8ze9fMCs1spZndFFneVo9tU/1t3ePrnPPMH8If37sOGAAkA0uB3NZuVwv3cSOQUW/ZfcCtkce3Ave2djuPo39nAuOBFUfrH3AB8AZgwBRgfmu3vwX6eifww0a2zY38e04B+kf+nftbuw8fo6+9gPGRxx0Jf7F8bhs+tk31t1WPr9dG6JOAYufceudcDfAccFErt+lkuAj4a+TxX4Evt15Tjo9zbg40+Fbfpvp3EfA3FzYP6GJmvU5KQ1tAE31tykXAc865aufcBqCY8L93T3DO7XDOLYo83gcUAX1ou8e2qf425aQcX68Feh9gS9zzrRz5TfQiB7xlZgWRL9UG6OGc2xF5XAL0aJ2mnTBN9a+tHu8bImWGJ+PKZ22mr2aWA4wD5nMKHNt6/YVWPL5eC/RTwRnOufHA+cD1ZnZm/EoXPn9rs3NN23r/gIeBgcBYYAfw21ZtTQszsw7Ai8DNzrm98eva4rFtpL+teny9FujN+cJqT3PObYv8XQq8TPi0bGf0dDTyd2nrtfCEaKp/be54O+d2OueCzrkQ8BiHT7s931czSyIcbn93zr0UWdxmj21j/W3t4+u1QG/OF1Z7lpm1N7OO0cfAucAKEr+E+wrg1dZp4QnTVP+mA5dHZkRMASrjTt89qV6d+GLCxxfCfZ1mZilm1h8YDCw42e07VmZmhL9buMg590DcqjZ5bJvqb6sf39a+WnwMV5cvIHxFeR3w09ZuTwv3bQDhK+FLgZXR/gHdgHeAtcAsIL2123ocfXyW8KloLeE64tVN9Y/wDIg/RY71ciCvtdvfAn19OtKXZZH/5L3itv9ppK+rgfNbu/0fs69nEC6nLAOWRP5c0IaPbVP9bdXjq1v/RUTaCK+VXEREpAkKdBGRNkKBLiLSRijQRUTaCAW6iEgboUAXEWkjFOgiIm3E/weZiX2QqAUxVQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(np.abs(out_rfft))\n", + "plt.plot(np.abs(out_rfft_np))" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAD4CAYAAAAZ1BptAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACUa0lEQVR4nOydZZQcxdqAn2oZWde4bJQ4CfFAIFgI7u4WLLhc3PXy4e4e3AkWAgFC3N3dNrtZl5lpqe9H91h2N0IEuPRzTk52uqura2Z66q16VUgp8fDw8PDwqA/lrx6Ah4eHh8ffF09IeHh4eHg0iCckPDw8PDwaxBMSHh4eHh4N4gkJDw8PD48G0f7qAexK8vLyZEFBwV89DA8PD49/FNOmTSuWUubXd+5/SkgUFBQwderUv3oYHh4eHv8ohBCrGjrnqZs8PDw8PBrEExIeHh4eHg3iCQkPDw8PjwbxhISHh4eHR4N4QsLDw8PDo0E8IeHh4eHh0SCekPDw8PDwaBBPSHj8LZFS8tHUNURM+68eiofHvxpPSHj8LRkzeSbrPr+Ld0eN+auH4uHxr8YTEh5/S4zSNVyrf4pStvKvHoqHx78aT0h4/C1JrVkHQNPQ8r94JB4e/248IeHxl/HVrPUs3VRV7zl/uASALKNwp+5RHTZ5448VeGV6PTz+HJ6Q8PjLuPWzOXwweXW956R0DNZS7Nwj+spn31Lx3T2Mmzl/p/rx8Pi34gkJj7+MueIUTlz6n/pPukKCnRQSKRXLuVr7HLty53YkHh7/Vjwh4fGX0rnst3qPr8vuD8D61C471X/H2pkABKvX7VQ/Hh7/Vjwh4fG3xBA6FTKIrfh2qp90qxwAxazZFcPy8PjX8T9VdMjjfwdhGXxgHUQ4vdtO9SMR7h+e4drD48+wS3YSQohhQohFQoilQoib6znvF0J86J6fJIQoSDh3i3t8kRDiMPdYSyHEL0KI+UKIeUKIq3fFOD3+Pkh765HUmbWrGK6NIujuBP40whESnojw8Phz7LSQEEKowHPA4UAX4HQhxJaK5AuBUille+AJ4BH32i7AaUBXYBjwvNufCVwvpewCDACuqKdPj38wliskKrUcNqxaxJxfP0s6nxraBECLqjlu+z83zS8P9gBgc06vPztUD49/NbtiJ9EPWCqlXC6ljAAfAMdu0eZY4C3370+Ag4UQwj3+gZQyLKVcASwF+kkpN0gppwNIKSuBBUDzXTBWj78JFoKjw/fzQrsXWPzacLr/cn7Sed104icyI5uYs7acdrd+y2+Li3b4PlVaNnPtAkzFv0vG7eHxb2NXCInmwJqE12upO6HH2kgpTaAcyN2ea13VVC9gUn03F0IMF0JMFUJMLSra8UnE469BSpgj21Lia8YKuxGlMm2LBnEX2HnLVzNUmcL4mXN2+D7rgh2YaHdGi+yk2srD41/K39q7SQiRBnwKXCOlrKivjZTyZSllHylln/z8/D07QI8/jRWqZGXgDM5cdTtBIqRSm3Q+FiEtFNqVjOVl3xMcvO6FHb5PhlnKRdp3pNSs3xXD9vD417ErhMQ6oGXC6xbusXrbCCE0IBPYvLVrhRA6joB4T0qZrLD2+MdjWRYA3St+5VRtLD5hJZ2f2/gYAKr8jdH8zi5DNZMFyfbQo9KJw/BHSnZmuB4e/1p2hZCYAnQQQrQRQvhwDNFfbdHmK+Bc9++TgJ+ls1T8CjjN9X5qA3QAJrv2iteABVLKx3fBGD3+JphGhNm/fg6WtdV2FiobZA6WGkANOEJCs3Y81iE1GidhGTs+WA8Pj50XEq6NYQTwA46B+SMp5TwhxL1CiGPcZq8BuUKIpcB1wM3utfOAj4D5wPfAFVJKC9gXOBs4SAgx0/13xM6O1eOvZ9oLF9Ljl/NYvTBuYlpot6zTLqtmBb9YPVmVOxhFcwLqdGvHdxJRPBdYD48/xy4JppNSfgt8u8WxOxP+DgEnN3DtA8ADWxwbB9EoKI//JfqXOJtMacXjJH6w+9BRrE1aseRVL+UQ7Wde5fZYHJzPDu3w/UQsTsITEx4ef4a/teHa43+P0dY+AJjCWZ+Uao1IpxZFyKQAu6BRBkBB6QRqMgqYZHfiNe20Hb5fUaA1AKuaDNvJkXt4/Dvx0nJ47FFeMY8kU1Rj+vM4MPwYg9u25OKlVwCOW2x0+6jaYQBSI5sIpTTj3MidNPL7eXAH71eu5zPJ7oS9k9lkPTz+rXi/HI89ShlpjIhcRWVKK9bKfMq0PCbLvVht55OUqCMhTkKEKzhWGUcnY94O329pWl+W203JLl+wS8bv4fFvw9tJeOxRPvHdzSfWAeiVe7EkcA7T1g+hhFoaizJsW4LqtLPQAcemkFk0had8z2NKBdixNF4+GeJ07RfGVw/ZtW/Ew+NfgreT8NijZIhaLtC+J63UqRTXu2osh6rT8AsD24h7L41rciYAEjVmuNbE1pMC1kfUUK5a4Z0cuYfHvxNPSHj8JQijus4x247HTtioLLWbEdbTYRsZY7dG0HJraMs/34eHx78ZT0h4/CVI24z9PdHuDICdIAzal/3BLNmOpU2PjtW73qn7efUkPDz+FJ6Q8PhrsOJCYrTVG0gWEk1qF3OkMhFbyp2a4KXr1WQL9U/34eHxb8YTEh57lE+twQDUahkAbNKaki+c1BkyQXDoVi0BYdBu43eUZ3XhFfMIroyM2OH7hdU0LCmY37zeWE4PD49t4Hk3eexRXjcPJ4cKyoKt6Rd6jkEdG3PDqksBsNRArJ2Qjn0iJVRISbAZD5hnAfDMDt6vJNCSn+1ef7pokYfHvx1vJ+GxRwkQ5nbjAkoCrYigUS3SWGC3Yp7dGluLCwnFFRJIGy20mTPUMRymTNnh+83LGUoIHy03jdlVb8HD41+FJyQ89igf+u7jdO1nsssXMDNwCecWP0amqKat2IBtRmLtapVU9y9JbtEEHtRf4yXfEzt+QwFHqxPJrlq2a95AAuUlRXB3JlO+enGX9+3h8XfBExIeexRN2IzQvqRJ2XQABlX/RD9lEUERQdRsjrUb1egS5w9p75QL7OANb8X72cVsXLMUAGXOh7u8bw+PvwuekPD4SxCxAkLxZL9WguHaAmbabanW83ZqgvdbTjyGsLdev+LPYKQ2BWCa3meX9+3h8XfBExIefwnCdooASeBbq5/zd8JEvt/mT1lgt2Ze42N3LsbBFTBS7nohgeL4fWiY22jo4fHPxRMSHnuMxFTguAJBIhjjpg+XCR5ILUKLGajMx5Zy51RF7rVhEWDi23ewaOrPf76vLfBVrQWgd2TqLuvTw+PvhickPPYYUsJL5pEAlPocVU2x2phWSqFzPiEKW0iLAqWQHus/pjC3H/cZZ3JB5AbshGJFvy0uYtHGyq3eU0ibUpnGH03PZcDyp1nx5Y4mG99K3+5u6Hf/4F3Wp4fH341dIiSEEMOEEIuEEEuFEDfXc94vhPjQPT9JCFGQcO4W9/giIcRh29unxz8PG3jfOohvrAGsDnahe+hVbsl/hpPVXwGI+HNibWNxEkYx1YEmvGYdyc/2PiQqjS56/Q/OePLrrd5zXXAvvrf6YoSdBH9z7Da77P1E1WNFIm+X9enh8Xdjp4WEEEIFngMOB7oApwshumzR7EKgVErZHngCeMS9tgtwGtAVGAY8L4RQt7NPj38YUtoUiEL+a55Kka8FmaKaMDprZCMmWF2wfBmxtjFDs5QEazZwoTqKk9WxWKYRa/OF704+8N2/1XtOyzmCVBGi7/p3AGgqNm+1/Y4QHUt7c+ku69PD4+/Groi47gcslVIuBxBCfAAcC8xPaHMscLf79yfAs8IpPnws8IGUMgysEEIsdftjO/r0+IchLZM3ff/lUeMUGpeHGee/mTHlw8imkmbKZjZGaoA0AMpUd1chbRpvGscd+nsA1Bi3gd8PQBdl1TbvaUvYV5nL2mpHTXWWtuuC6mxXSAwyJuyyPj08/m7sCnVTc2BNwuu17rF620gpTaAcyN3KtdvTJwBCiOFCiKlCiKlFRUU78TY8djfRBH436h/RsdyZWPet/YWOyjrSRAi1Ij7pv51zFWGpOYaMBMO1Zdb1UjKNSJ1jUY5e+zi5ohKf6aQMj8hdl4kmojoCrUak7LI+PTz+bvzjDddSypellH2klH3y8/P/6uF4bI2EyT5aw1oKkXA6ft60JRPtLpQGmkFCYVNp1RUSJZvWNXhLzQ4BsIlsAGay158bez2UZXWiSGawWmmxy/r08Pi7sSuExDqgZcLrFu6xetsIITQgE9i8lWu3p0+PfxiJ8Q5CRj2ZBO+aBwPJRYdOL32RFbIJM/OPg4TrLLtuTEJZYcNqJ4FzbbWls9huToVI34l3kIxlSUw0NHZDDIaHx9+EXSEkpgAdhBBthBA+HEP0V1u0+Qo41/37JOBn6cwYXwGnud5PbYAOwOTt7NPjH0aiEIh6L0lgrN3T+TvhfOvIUjorq5FSJu0wEqOyo1T7GjV80+juxYrQUVlHtqj6829gC7LWjaWpKKG1tW3biIfHP5WdFhKujWEE8AOwAPhISjlPCHGvEOIYt9lrQK5rmL4OuNm9dh7wEY5B+nvgCiml1VCfOztWj78WqQW4z3BqV6/R2wFQJrLpLJxJNlEYKNKiv7KQQeveZFX+gVwVGcEJ4bux/FmxNncb53Bm5BbCKY0bvKeQNqvsRnxv9ATgO98hu+z9iIgTo/Fm8FwsW/LQtwtYU1Kzy/r38Pg7sEuseFLKb4Fvtzh2Z8LfIaDeqi9SygeAB7anT49/NlKofGMNpINYx9LgPtwQepuuzbJ4dfPZAITS4hpG4e4AgmYZVYEmfGUPAsAUeqzNB9aBNBObIVKN4wdRlyUpPZlYkkKacGwTc/W9d937sRzvpk0ij3VFpUz4fTQf/taImQ+ftsvu4eHxV/OPN1x7/HOwzQh9lMW8ZB3NRtGYtmIDAosimcWPVm+MhF2CEtXzS5uMqhWMUD/nbPVHZG1FrM3R6gR+9t9AWtGMBu85PvNImohS7tCcOIm9xI6phiZ9/BizfvmYlQumMuGVa5J2O1Eh0d+YjFK5nq/8d/C0/uwO9e/h8XfHq0znseeI1PCc72nuNc6mWfVanvU/wTfVR5AtKmkhNrE0VA448RFrleZ0ZDECScviXzlZ/9g5Xn0x4KiXHtVfBpwgvYawpaSrWEFQOG6yp9d+CFy73UPuOfdBCmU2qqowUBZSvPFa8pq1du7r2kcOjYzBts8BYH91znb37eHxT8DbSXjsOdzJ/E79HQbU/ALA4Mg4mooSMkQtgZKFsaaPpV1PqUyrU0/Crse7SW6l3sSF6++isxIPuVF20BPpN7sHVaQg3ZTm1eXFsXMV/iYAmEKrM4YZq0sxrV1fw8LDY0/jCQmPPUaiC6yS4N0UO58oDCT8YvdkY6Btcpt64iSiO4nJT5/FpKfP3vIkAAvtlhTJzHhZ1O2knVhPF2UV031OzYgNvtaxc2tyBjLJ7kQtgVigIMDctWUc//x4nvhp8Q7dy8Pj74gnJDz2GIkusIobJyERPGGc6PydsEv4T9UjFMtMJuceBwkTe3QnYScKC9uiomwz/Uq+pn9Jsqd01AC+SWYx3e6ww0KirbIRgCV6J14xj6CkJp47yrQkEamhYya575YXrmC6fzgZiz/boXt5/O9imSYLJvwz/XA8IeGxx6h/JyEYZ3dzz8dX462t1bQUm7AlSZHaUeFguZPyOplLZUZHVs5w1FcL7cQYTOcOALmigsPUqagNFAiqriiltrrhtOPz7ZbYCPRVv8WOdVn1LoPVuQRlLaGUpiyyncjr1Irl5Igq+tT8RlXYpDpc/z1LCtc2eD+P/y2mvHsHnX84nfnjR8WORcIhykv//qmEPCHhscew/VlcFbkCgFlaDwCqRCoDlAUAVK+dx9qlcwEQ2ByuTuHI9U+zoNExnBG5lYPDj1Kb4cRX2BJuMy7gksi11KQ0wzYdw/QNxiVJ9xTSZo5dwCy7LQAP+q6qd2ypjxcQerT+RMPL7Kasi6RxiTaK9MIpseOq6ZRGvTn1XixfJmdEbmNo+BFwU40ErBquvecBRtz3f3X6XDjpR3Je6Mr0797Y1sfm8T9AUbWzqKkoi2ch/v2Zi8h8qv1fNaTtxhMSHnsMqWj8ZvfgNfNwftcGUhAayXmpzzNc+4YSmcaAxY/S4t19gXg6DZ9VTaUvn/F2N5bJ5piqkwHWRuUTa38AlHA55VmduNEYzjqZl7RjmREcyBfWfmjYrJc5zKVDg+PLpqLOsbDUGW334TrjFWdctfEfeVQ9VkIWMlxOR2Utm2QWUtHd92BzpfY5Z4vv6vRbsnw6AJHlf9Q7lsmfPwN3Z251d+Pxz2FlSlcADCUYO7awTGBKZauOF38HPCHhsceQRg2HqtN4zzqYQnLoJZYgbItKUvjZ3iepbVRIICV5lQu4VvuYi9RRKJXrASc9x1HKRL7x307OpgnUBJqSQpgJ/iuprY5P9mPTjqC1KOQU7VeaiRL2M+qflE2pMNHuXOe4XxgMUWbSRDrV89RweXyMbmW6Y8Nf4ytdwvu+B3hSfz5mB1GkRVNRQo6oK3zW5vQHYF1a13rHkzXvbQCWTd815VaXzBzH6iWzdklfHjuOUFTnfzMekV8jA2jCJhIJ/VXD2i48IeGxxxChch7VX2aIMouhkZ/43H8XI8KvkkE1hyjTktouVJwVv0DSdvOvXK19zu36e2gVqwGww1U85nsRcLyi1FApPZRlBIRBTVV8ItesWjqIeG7Im62X6x3bJrJYbSfngLJtyf3GmXRS1tBDWQGAatXGG7hxEicYX8VWg0PUWQi3zTKtHfminJ7K8qR+N65eTMR02ut2/WnOS7IdddyiDeX1nt9R2n1+FOXvnLNL+vpfZc2S2ckOEbuQfcpHA2CJeGjatdonAIT+5rtFT0h47DJMy+bTaWuxbFnv+aib6J36OxxuOD+afa1JZIhaskQ1H5pDOCNyKwAP+K9hrcxzXVjrpgpP9CaS0iZ30x+cqI4DoDZBSFxbfBcD1XitqoYM19PsjrR2a23H3o8t+dVOTuMhrPikvi7YEQBNJns31SppfG/15Qf/sLqfgWXR5PW+nDzlVAAsxV/veKQWICx1frO713t+R1kum7JKNpzj6u/OlzPXse/DP/P93I071c+TPy3mls9m1zm+fO4kWr43mMnv3b1T/TdEte4Eia7PGRg7pgnnua6t8YSEx7+ELz55G+2Lixk7Y0H9DRLrSdQTJ/Gz3ZPxMU8n+MHqy8pg16TronYAy0yY7G0rSa8brk5QCbnXlslURlu90RpwgV1ot6K/spBwKK4OMM0IhyuTY69/sfbmrox7Y69nZx3Ce+bBqCTfvzSlDZca17JcjcdURKkxJYZUCUkfAKsy+9Q7nkl5J3Ja5HZCxtZXtrYtmb++rjprS3RM0qmlNhTeZtvdycTlmym4eRSz1pTt0HXT5i9l/8pv2Djv1526v/HLo+w34/o6x9e6yYFXlTVcwGpn0KXhfO+2qHMuFDbqueLvgyckPHYZ6sqxDFOmoKdk1ns+0cVVdSOfpRTcalwIwEu+J/nAdx8AT4Rux0BjfPYxWwgJ57rEmAuknRRLEU6wSQh3F1Iks1gqmzVY+yFNOCqiyrJ4RLURquY63VEJzLLb8rU1kJoEd1bDlhioaJhJMR6WaTLOfxWXVT7HaKt30n1qIiYGGpnC8Yyy1ADzxn/LsjmTktqVaI24XPuK8zfcV+94ozz3y1KOePp35q7bulqqtbKJA9TZbFg6c6vtdjeT5yxgiDKDaYtX7tB1J655gIf01+hc9P1O3b+7soJDt1BtAkTUVAAsxbdT/TdEwK5GFxbtVoyMHZtqd2Sc1ZWKQNPdcs9dhSckPHYZvarH4xcGgVARUkpmrC5NOi8T1FBqggppsh2vFhd1h21mF5InyrGlTNpuRIVDVFhMtDtTlN0rtpL/zepOhZogpFxPp8aihGHK5HqFhLRtLtO+BqC6vCR+r4SyqB9YBwJwcfVLsWPHrn6E87Qf0aRFZeZejLF6AZBf+BstRDEdzUXMl62TxhspWUeKiK/m+20cSdcfT6fdp0OTxtS8YgaHqtPIMDezNSoX/8Zb+sOUr1+y1Xax9kWrt6vd9hI2LW75bA7FVdu3Q+m38QPe9D1Kl7Wf7NB9AkYZAMLcOSPvMHUKPhHf+S2Z8StGJIxeswGAXGvTTvXfENEdrR6Kf58BIoTwURP5exet8oSExy6jwNXp+8uW8OGUNRz//HhGz3eOLZr6M0sWzOT0yG0A/MAANsgcqkQqQ+tZ2QkkJ6m/ccb6h5jc5DQODz9E/9CzlOQ7XkGmns7Vkcu52biIqmBzcCfhW4yL2OQvSOjH5g+rK9PtjgRFhKMj92NtkVPJSBAGtRXxnYTlHv/KGsh0uwMDlAUMteLqDsUOs0lmsa/1IhF/DlcbV7Bv6ClCOG6OARmirVjPh+YQxswvpNMd31FSvCHp3nqCt0tVRWnMcLpP8TfOeTs+KU589nxmPHJY0vVHlY/kAHU2aVUr6nyGifxiObYVae5a1caSwiren7yaicu3LszqsmNun2lWGQCKtWvUZbU1laxaMI0OXx7DtNeuJrXCcS7IMwu3ceWfY17qAACEEf++qwlwiDoDff2Uhi6rQ3npZqzdZFxvCE9IeOxypGVSuWoGX/hup3qp43K61zfHc8DkS5hpt+Np8zi+sPdnYPhZztQf5yrtM+bbyfp7xZ1ENBmhSstmgWxNITkYwlEHmGqQ7+1+NBGl+Gs3sTGnH5dFrqaUdGpC8Un/58ChfG7vh4LNOpnHPNkGYwvDeiQc91gKV8Z3EqYboDfO7sb7vvs5RfuVFBmftIVtUSUDlFs+1JoiBirzqSSI6fYflDUcrU5kiWzOr999wH3yeZatSE5VLhImvbTHC/jx7Qfdvp3JPFFIDCj+jF61E5Ovd9Vsiuti2RCPmKcDYFu7VufuX/ULKwNn0H7OE9t3gairk98eMmxHhahau8ZdtKq8hKpSRyBklMzBNp3vYVrm0K1dtlVm//o5c8fVX0BzZnAARTIDYcaftTuN85w/KjfUe82WlJcUk/lUWya9efOfHuOfwRMSHruMMunodW3LpFvpGHoqy2lcPIHykk2MtvZhjZ3PaeovfGntS6mdwkBlHlJCGJ1Jdqd6+xTSpkXFdK5WP+Vq9VOC5a5axahlmDKZD3z302TTb1QGmzPB7sL8wAW0SdD7jg4cRkuxif3VOXQQ6zhT/QnTSF6NGmFn4nnGPI71uf1jx2131X2UMpEct+ypT5gYEed6RRq0VTZym/oOacWzeMX3OI/qL6OFHUETkE67dmI9fYwpnKz9hr9sKQAnh+9kvcxBmCEGh59gv/CTAKxevSrWN4BPxsf6tHkcplQwE3Y+Yitp0hOJ2oBsa9fuJESN816DVWu20XIL6neAq5dwqIZ012akNuAyvKNU1oQQmrPgmBDYDxl2bERrU+rGymwP5SVF9PjlPLr9dDah2uo65/VQMQEMlMQ4CRzPNitUt319rFvk7Diarvsh6biUkgnLNlNeu3sM4DslJIQQOUKI0UKIJe7/2Q20O9dts0QIcW7C8d5CiDlCiKVCiKeFcJYZQohHhRALhRCzhRCfCyGydmacHnuGkyN3AW6dBdX5AXZd9Q7qU92xUcgXZdylv8MQZSbnilG873uA281nSaOWY9TxSX1NFj3cvyR7lf7GtfqnXKt/SkqZm1m1cj1P+Z53Wtg2/pr19FfcVONmfGJNt8poIxy3yQxRwwP663V+lIYbzLRe5lJjxlfkoWAjTgzfFasRUSOdH3WN69euuMbqi7TvYivRw9Sp+F0h8bvrvnq69gt7m04fTUucnYCBRljqKFaENbIxa2UjqmSAFOlMIsLtexzxIMNaN/iqeGPcrqC4QiJUvIrF08cmva+qihJmP3IohWuXMsrvqPnKUuNpICpDBpN2WE2UjCmdnUGSI8F2ILdD3VRcFWbG6lLKaiLca5zNVZEreDHjyj81zijrZC6fWPuzWWsMrsBcpbbCjjife+6fVDeVlcSvqy/u4dzCh0kXtazU2sWOfe5zfy8RZwGycNL3lBatb/AeFSud4lqVvryk40WF6/jj9f/w0x+T6rtsp9nZncTNwBgpZQdgjPs6CSFEDnAX0B/oB9yVIExeAC4GOrj/oo7lo4FuUsoewGLglp0cp8cuJBIOMeG1G6ipTna9tNzHSdoGqE5qigxRS5Awh6lTCQjnR3mH/h5nqGMA2E9OQxWSXFHJ91Zfjgw76pa71RFOsj4p6/duspK9m1psGstLPkflIROExJ3ld3KMOiFpnFvuJMJKKv81TuUAZTapm+L2EUP4mSY7xl6XKllslumEaxwhMyvYjwrp2B+iuaMASvXGfGoN5nUzHicRVbLoYceY/4X/TtoohSz2d2Fl4AwW+c8lTYQ4GEeIqLbBTLst99oXxPr4j/4BAGXrlyf063w2fefcTcevjk16X/NHv02P2sms+vh2AJ4wTqQkQUj88cPHzH1jBNU1tfxZTNcxwG4gNmZL5jQ6mgV2KzZmbLuM7KvPPMCil8+j3FB53Tqcr+x9WSfztnnd1njWPI6vrYGU1xoUZfdieORaqmUKIuJ8pwNLvvxT/RbrzbnZuAiAcD07A80OM8nuxDepJzBmQSEFN48iz43El+FqCtcupdN3p7L69fMavMeiUBY/Wb14PP/BpOMrVq1iiDqLzhm7J3J7Z4XEscBb7t9vAcfV0+YwYLSUskRKWYojAIYJIZoCGVLKidJJtvN29Hop5Y9SyqhP4USgxU6O0+NPIG2bGT++E1tpR5nx5TMMXPMKs0bekXT8Ae11XjaPZF2jIQg1XovapGF9eaKG+he7J/NkgXNvCd9YA5gf7J2sUomuWLdwgU0MZiNB7y4S9Br/Zzhl1q0tjLdhNcg71qEMU6eQVTIz3m1NMaepv8Refx84gt7hl6j0OfW0f0o5gmfM4522CUJiTUpXbjKGE0ko/JhiO6vF6UZrZtttnL/t9vwQPApw0n8ABHEE2CuZV3G1MYLaeuIk1ofjbpojU8/iJuNiJ/AQsBOM8hXZTsqPjVozAPJFGTIcF+xZm2dyofotVQneNcuLqrbpTpuI4fr929up9ioLtuLwyMOsyui9zbZNqhdwmDqVyspK2ol1HKFOYr/q0ds9tvoYY+3Drdp7pC37hpAF9+pvMjT0LWPzzyAiVZQdVGeVlxYza+ynlNVEWCfzGGd1JWQ6z9y65fOZ/8B+lJcUo9oRQtJHbcRi9pj3WeA/L96HyGD5GCfRY3qk4Z3MBK0/Fxk3UlyT/PxOrWnMSZG7adnjgB0a+/ays0KisZQyanXZSLSuZDLNgUSF5Vr3WHP37y2Pb8kFQN0MaS5CiOFCiKlCiKlFRbsn7W5pdYSiyr82COmvYN74b+g1fgRT30gOPrINR2hEy3dG6aksRQJhJZhUTc4vTDbLdDbL9Dr3ENhcGHH6f0R/hd98VwPwsXU1ARHh14yjSVRgx+MkEu4t7aTdhkjYSURX2iGpU4izgU3U6QNEQtW0Eo7ro4zEdcZK2Woe1l+NvV6d7ri41oRdN9wEwWAn7E4sy+JF/Qke0V/hqsgId4zONTmyDMMVHrXSTyhc/3NVKPI5VJnGXP3cmJAulhm8ax7M0po0Jr40AiMSZpbWg4+sA/nd6s5GmU21YTFtVQlvT1iJmeKkGQnZzs/8LG0MGYs+YdHdezPh5StJr3HsH7WVZbH7HvTYrxz1zO/1jqk+QqrznW4KtN2u9jkVCzhe+X279PDNxGayRRXmqkmM8d/II/rLnFb74Xbdp6aqHO7OZOLIB5JyVrVVNrCXshaltoTAplk0EaU0sjZRbvlZIZvusPfUuuePY++xFyAWfMVJ6m+MMK6i2ud87hO/H0kXYw6TZ81GkxEOUGdz++abyDCKYuV0HzROZ3L2kUzBCSIVW9mQ1UZMDlOmcFrpK0nHF2yooFVOCukBvYErd45tCgkhxE9CiLn1/Eva27q7gR0wR20bIcRtgAm811AbKeXLUso+Uso++fn5u/L2MXrd9yN9H/hpt/T9dybiGuD85cnulWUpjifSouzklUtQRLhEG0VG6TxWpffkv8YphGQ0I6qkUqbUuYdAMtuO62lbKY6gz6WMDGqcHUM9O4mouulDcwir8wbHjr9pHsby1J6x5oqrDgkIIxZEZZnJQkLdNJ9RficdCEZc9ZKoQnrDPIyUlDRe1J+ATU4sx63FN3Ob7hjJN2T24i3zUAB6FX7Coep0GolSlkunxOnNxsVMsztwlDqR3opjfN9XncdDxck69gtx9NT9q3/mEHU6QRGh1lVvBYgQQSf/jzsZsOEd5v7yAW0iS/jUdxeHqNPwY1ATinDGC79y55fz8FvO7iUnEtdzL1xfwl6sJHfjHzSpnAeAWbIydv7/9BeZ6B/B9rI+ZwAFoZGMbXrBthsD3Qq/5gnfC+y7+vltth2oOOlUZNEiAKpJTTLkb43yMscu1GHRC7R6b39mj/0UgA989zt9WgbBEud7zLTL6Fg8mr2Utaj2tvufO+4rlt23D5FwKLarCxbP4Vh1PDYKIdNdRLgLDpFTgC6dZynVrmS/6vhcEsJHVchkgdqR+4yzmG4WJGUxTuQ/hdfzku8JTrG+SYrwv2DljdzLtj/PP8s2hYSU8hApZbd6/n0JFLpqI9z/64tEWQckVoJp4R5bR7IaKXoct7/zgKOAM2VDn9oeYqT+QCwS+N9EVbNBACzWkz2PTKGz3G6C4Uapbkl26WxWpnTjeeu4mKopR1RRoBRycPhRAD6x9me81YWN5HGyOrZOHwLJOdporii8kx+aDGdg6Bm6hV5lWTNHPRNOb8nFkev4P/NkKgLNY4LkOeUM5qQOTOjH4lurHwvtlqQQYkj4MUIpzZLuZSXsAhJdFC13p/Rf41S+t/rRVC1jmDoFpdrNCCtNfre6URB6j+JgAQ+YZ7F36GWK9Gax93yc+gePGKexwG7N1cYIPrX2S7p3VA0VpdqNsTi25tNYYGGkxmmTJkJcoH3P8aqbyVaoXF31JL2VJeSLCrJFFeXLJrMocB4L/eeSXuoIgYlaX14xjwDAjET43uqLjoElnO8mkmBbOkn9jSaidLvTVxuueitsbl/7qMvvlkFxZcUbmfjcRUlpUWqF81nISsfxIKSk4GP7PHiirsEBnMm5Zt3cpFQuwoog3QWBQNKzzFFjbY/3VPaYG2hnLaNwzRJ+cgMotRpn6hvluxV9rWNAbhxybEe+mkLeUU6gSgbQpIHqeq6VyxRu0D7msLVPkF2xiF/snlwfGZ6ktYiEQ3B3JpNevwHNFWA+YfHuj+N5848VFK5aRPvIAtK03ZdufGfVTV8BUW+lc4H6rD4/AEOFENmuwXoo8IOrpqoQQgxwvZrOiV4vhBgG3AQcI6WsqafPPcogdX7sB/uvQgsSkSp+M9lboyi1I/NkAWlmQnRygiFZWiZa7Wbe0h+mluQ0BytlEx4yTudd8xDOMG7nJPkoN+kf8bPVM6mdcNcFAkmtms4GcqkiBdNV1RhaOj/bveihLCe9ehVL8g7mnMh/SNFAhOMT78e+4/nMGoyGRRlprJRNMUXyttwy4hOWkiAkouqkCBof+u+jQ9gpiBTdiSjSdFVHgkDVao5QJmGiYiVMsBdp3/Gb3Z1b9JHsq8yts5uKrjCjnCcdP3tNxifDcKgKw7R42DgtqW1Fy4Ni8SRTbcfAXrrMyTUVEAZWmbODWGU34r+mc+1x4leGqVPItMuICMdbywjVzf20vUnnmq39lpWBMzh65YPbbkw8GG5Ltc6ikTcyoOhjZn8fL8JUqDraa9WdgENqKv7t3EmY4WQhtD53UFI8jG0ZMSGhYKFZtdhS8HbKeQCsXTqX2T/Xr9qK2rkEglScPvwhZwfcUinCDpUB0MxYCUBK0Uw+Zwg/2n3QpIHmfudXGVeyTDYjL7SK80qe4C7NSQ+/ZpPj3BCOhKksd7zPuq16B90OU4hjDxv/24/c/fU8Gr/RjwyqMYO7R4sCOy8kHgYOFUIsAQ5xXyOE6COEeBVASlkC3AdMcf/d6x4DuBx4FVgKLCNue3gWSAdGCyFmCiFe3MlxevwJAptmskHmMkHrl3RcsSMcrU4kOxQ3NVm2xTLbzUFjm+y39mUOUGeT73pwzLLbYkvBZepXjLZ7YyM4QJmFLSW2FCyQrZLvEasnYdOp/A+u1L7kVu098kpc76NQGUcok3jN9xitin6hItCc3+y9eUfezInr/xvr5zv9YJqLYtor62krNjJc/RoqkzOJRncSp4Tv4ING18WOR+MkTlSdkqUikOked4UEFj2U5TykvUKrwp950vc8D+uvkBVO7r+Hspyj1Ymcr37PedqPrJO5FIRG8om1P7X46B56lf6hZ3nfPJBDcVahqjQxpfPzjIRqqDVtXrSOoVymUCFTGGX1IyJVVNe/I7pjk6Xx7yS6Au8Wnk4WzqTfQXE261mykvca3+RcW+sI1cRVfMV2ltX0uZNjilGyjZYOirsa3jIoLuryKxOcDh7LcJwl/SEnCj6ipuEnEku10hBv/rGC3xc57zPVTYESCjZxVuUuZb6mSHdx8KD/GjQ7zHi7C/OE4/215N1r6fHb8DpODgCj1IMBMCJh7tAdTXiiR50ZcgRH0HY+TytcTXNjFenUokuDWjc+olBmUymD+Mxq/HYN7dRCVgbOoPe7nZj243toDzSG551d8SJa4ZMh1qU5tosXfE8xzX9p7J4yvclWP5OdYaeEhJRys5TyYCllB1ctVeIenyqlvCih3etSyvbuvzcSjk91VVftpJQjomolt11LKWVP99+lde++5/m7V5Da1WiVa2mtbKLMCiQdb7XZiWlIN+I+9hYqR0UecF7YZlJKbYBimYkiJDfoH3OIMo1rtE95y/cIz4uHUYTkbDXZa+UH3DQGQOfy37hc/Zzh2iiyypwdnb9kMc/4nnXvZ5NRtZzDlMlYQk+6d2OrkBbCmcjaiA3cqr+PqEgO/Ioa4itIpcaIT0Cbc/bhkPB/6aw47dVglvv2nP5VaZInKjhd+wXdcDyCjlYnkmk46qh10ln1PaS/BkAntx+JIJMqIlLDj0ElKRSSQyUppLgrUxWT5aIl75kHU02QUChEK1GIACbZnSiSWfgLZ8R2ItGdrl4V9wWJqkBOj3zGlMAVzLDbx7ygRloHsbHaeZ6tkCMkyjfHPWuqS7cvh1F0t7W9vw3F/W623EmUBBzNs5GQOt0KZAGw3s7hZuMiPmtyNYPCz8RUXA3R/YeTkRNeANzKgtY+pIfWYUScz/Z243wW5B6KNMNEpMocuy2aHWEvZS09ap2AtVGGo0Zav2J+nTrUr6snUxAaSXl6OzbLdN4zD2al3ZjVrt9ONOZihBsRIMNVfMxN7K0s4ycxkAqZiikVRvrup5uykqBdTYpdTaUed+8Vsz90XMNxnqv35DB8MoKppzOp9SVsIodcEd/tqX9XIfFvIxz+8/7k/0RsdzveMzI16Xgw4qzstAT9sGlLLHc169s4nX5l38bOLbObcrA6I/b6Vv19DlJnAjAQJ8gsQ9Tym9WdwWEn1uFW+1Km2+0BG4HEiBZriaYY36KeRPui0bzkexJL6EnGx0dr7+RizRlLdHy2meyVVZzehRuN4Rzjm8p+JfHEc2E1haUybjZT0vNZK/Ni3knfaENjOmmREMm8Um/PW+ahvGAeQ320EMXMCgynsShlqt2RRf5zWBk4g+HaKIIigmkYaNJkqb4Xt5kXUqQ2wixdx2/+a8kQNeSISs7TfiRQthg/yZNtaii+iwmGnYk+2uZl80iW2M2ZZbfldvNC2pX9wbdWPxbnOMkLKzc71xbKLMpsxx4wf8J3THz+4nrfh/OhOpO+vZ1mw3cyLuF1cxi/Bw9MOv5743MoCI1keZMjYsdOrhrJXLuAF+XxfGAdRCjdSc0StrZ+r65iJZWksMxuyji7G4eq08nfNJ6ImsLNxkVMtDtj2JIfmwzn+Mi9DA7/ii4j5Ityrgw5wqUy3dlRrJ34GZlPtWfiq/EdZgdrGfuIxVTXhsimimIyuNm4iKuDDzmfhSskVkh3Zx2uxCdM3jMP5iH7XF4RJ/CSdRQ5oooaJY2gXU2qrKEqNb6b1sy499fB4Uf5Te7NpxzEyqwB9D//vywvOD12vkhmUJG2fd5lfwZPSGwHhTILgJoEV8F/A1G3zhMjXyefcI3EMuHxsWrK+dJ3O3cZ59KpanJS82gMQH0oCZG3f9jdWOMWxpESPrf2Y3Jwf5B2bILHVUvYCStXIWXM5dZQ/DHDoNN/fEJ5WLnQ7SJ5l1Pmb8rH1hAGqAvZpzru/ukvX8qFalzY0agz+4WfZnX+EAA+1I7ia+nU2U7MwTTHtzcPmmfSVCRHM5tSoVIG+dpydkmT7U48Zx6LXyQLrcqyYs5SHubr/ItRsCkrr8JwXUZn2O1j3lEyUsPd1gUcF76XBbYzwXxvD+BHNz35eHrGPkuA1qKQtmID1QQR2Owdnk4zUUyZaycplqk8ZpzEKZE72ag4K9P53z7PgE0fJUV5JxHdGbi5psKmRWWo4e97tWjCveY5/Krvn3RcEdF4i/ix9qF5VMoUyiIK3cVyOhqLuFr9NKleCMCUb17FviuL2upKaqsrCQiDS7RRRNDZW1nmflbVhEWQD6yDeFF/kgGrXyFsWhypTuI++SwX+R/lC2sQPndndoV0AhdzVjka8AFrX4vd73bzWT7z340xfxSKkFytfU4Pcx7+1ExGW715cWaYs16dxCm2c62odVRxYXTCls1yM58rNMf2tMzfhVl2O1JEGDM9viB5nlOwpOA+40xu0UZyl3iNx42TWd7I8aATAcf1+EXzKO5o8hKDBh/U4Ge+s3hCAif3iWXLBl3PHjDOYoPMIVT7l9vQ9yhRNYyPLTw+3I8posXjHiwjRGdlDTaCMMmG4RbC2XlEg8iSuxIc4UZZ36K/z1L/WQBMVC8iV1TwS+owQMYM1tG6DYn1G6S0QFpYUmApviQPlcRAvLBw1GZyi/xFalUhvcQSUPSkhHrpJfO4Q3839jqY5UychruSTTErSNGiwX0JfVoRLlZHcYX2Ff1Cz8UObxR5BAnH05VrfjJE8jNVKYMUbVzDBiuLvMx0lvrPpsnit4mEnXbPmsdSJDOc24Rr+NLoz0zZnlp8/GZ158nqQ7nCvp42oXd5InQU460upOC8p5v1D2itbKKVUsyKwFkMVmbTU1nO/Anf8dRPS1hSm8kz1gmsl3lUVDmqjI9Nx815/YJkwR+lVHdiAhZoXQA45cUJdL/7R6RtM/uXj7Atiwlv/IfJnz8DwD7Vv3OkMpHUcHLQ2IGFb7AycAbNCuPBi6o0GajO5zLrfb72307nmilcq39KOCFTL0DLqQ+hCElJ4VrKE9JjdFZWx6KaRaQao7aKHmIZ7ZX1+I1yem36gkvVr/EJi4qwTalMjz/rbpTnXuaiOu85D8ewHFzzW+zYY74XOMkcxcXG9eRQyaCVz3K9eJevrIF8l+4EcV6ijWKueibd7bgTzG/5p3Np5CqGR65lffNhbJJZvG8eyPdlLegQfodf7b05RJ1BJ7ESn1VFiuY8e2rQeQbetw7iiQsPI8UXD9zc1XhCAnjvx3Gcd/vDhML1u7/9bPdk//CTlPucVW5NVTkT3rqN5XN3T66UvwvRiGH/Fh442BEsKZjc9Iz4IVeFc7X2WSxq+KrIFTEdOMTVPYkIJEsSVDrRko5p1JJJNT6zBiHtWPbXaKpr6aqdHjVOYUH+ke5uQ+GPtGH84B+a1H90DP1xvJNsK8LISatZUuhMhM3Xf8/n/rvwKTJJSESFyUaZzR9WVzL8Km/rD9F0vWM/eS9yNdcwkkoZZFbaATxgOJ/HKeVvcoP+MeCsHmulj5fMI/nRdwiasDlcdfTe5yrfMdLnCMhVSgvGHTWW7uFXWUZLLpCf0kkucwzS1UWxnYSCjDkDWLXlDFDm86L+BPsoS8kQ1TRhM41TdXyaRltjCYPU+fhEXDX3nnkwD2QkR8o/b9zBfr+dTum6JTQTm1kSOIc2i9/EtiwM9zurXj29zncHMCXnGApCI3k36Lz3wze+yDj/Vcz44S16/HoxUz56mIGrXqTfrNuRts1p1e/xnO9pHihPzuCTYjnvKb0ynnIkuiM8zU3hoqQ4wZBPfjuD/R/5OdYu6NpxIqEqqkqShU8UYdagbF7MV37nvQvboH3lFBQ3eu0q41X2U+YScJ91zV1oXBK5hoeM0zki8nC8L3eVtDKcxijLcepoIYppba9BxeIx34tcrn2FT1gsl03Z7G4yw8KPT1g8pT0T6ystLR0LlR/tvli5e/GZNZgaAhyjjOdq7TN+8jvOBe3FeuYGLqLfxvcBMHI78avVg4JgiKBv6xmAdxZPSADti3/mHd/DrFkwmcUz6kabTvZfwY3ah9REnInw95EPM3DFs2we/X/b7HviSyOY9OEju3zMW+ODyau588u59Z6TsuEd05bManQ8b5iHxXTwUSrUHGbK9iS6xpvuhJonKpgl23FJ5Fq+svfFkPEHuJeylL1DLwNOyo0PzCEsk824QE0OqJe2jYLN+doP3FhyJ+83voGLgk/QyRzJr82coK3vS5pyeuQ23rEOpdzfBKSFRGFa5qF853qfgKPO+sPuTrlMQRWSvqHn2Jg7kFs/n8MRT7vfteuZEtEz8NcjJO41zuYl6yjSAzr7q3MI1jjGYRWLcWo/uodfY35wH161jqBD6G0WaPG4ktu097jSuJJPrAMYnX5CLLgQoEZJi/1dO+xJunftBgjWltZypfiYdlVTKRWZqLUlWNGdhB6fYHw1hXzgu59hrtDpqSxnYuBK3jJv4i7tLV7zOc/nEeEHY+6zGhYpKXXjWySC/Zc+wjspjzuJDGtL2LR+BZ/573Y+x4q1da6B5DgJadtcqn1NC1Ecy0gaKYk7CaxeMjtmaM+3NxOqrWbqqNfcrLpu3q+EeguqTFbDqWmOI8CRG57j25q4Tv5Z6wQAqi2VciN5Sqt2kzKqRnVSzi7FNvAluHafpY6hg7IOnzAxjQiaHWastTc/2P14yTqa+XarWO32qJBYWJXC0+YJsT5sLciywNlJ9z9GGU/78gncaAxnlq9Xnc+vhzmHuf4LOEMdQ46opN/wZ2iU34infc9ytfZZnfbC56gGZdO9sRHcIV6r02ZX4wkJQCjOJNjxy6Po+OVRdc6niDDDtVGIddMJGRY3rBvCOplLILRtN8EBG96h/wJntbipMrTb0vkmon51BYdMrd8h7InRi2lzy7fblZAtbDqrc3WLjJ0Tck9gg8ylx8a4kTfRGLzEbs6Bygw+890ZKwsapZw0bjMu4BXzCG42h3Nc5F5u0d9nrBVP+GZZZlJOp4gSIKSk4tM0woZNcVWY5yaWMMHuygHKLHKrFjE1/wTOs+8kS6khw4h75jynnsk3DEbFJiL8FJFNZVUlKwNn8JrifC9Rt0vDn0Vi0gDbDaY7WJ3By/rj+APOhBP16NGkCYoz6TeqWcIZqrO6lQmlVE/RfmWlbMz9+ut01tdTiz/m2lqqO+qrOXYBIiWXzKDOw4E3ab7wNTRhIxUflWoW/vBm1gfacrdxDhU4k8R1kUv5LBifoH6yelEiHaET0tI4hEk0FmVUSz/zZQEvWsewxs7nVG0sg+26RW76KItpVbuQ0pQCKkQ6ariMiqJYbCuGrTDxpcvhbscNuCZisrE8xMFrX2Bl4AyerriGzZvi7YubODaHCiWTGuknJHXW1yqxiGm/MJjz3av0mXIds585DdyVezTRHsAmkZzMz+cKiQPU2aSJELVuttVXjMMpCI2k2NeCdXprHjLiAiRVhFkr8+hT8RPl49+MHe9bOopu4RlsJl7F8At7fy6KXM/4V6/Fb9fSTBRzo/YBxynjOE/9PqZujtrRWpmraCzi1RelXjejQFtlI/1qfudjawjr/MnG5afME/Cl5ZAmQjyov0bjmkXs0yqb/LzcOv1EUXTHoSAjoNNaFFLj37mEh9uDJyQglrG0PpKiNMvXsLqkhsqwyXS7A9kRNxLUsKiq2nYx+n4PjGG/hG3y7qKJKCFVhOrdMfzwy8+crf5IeItgo/rosv5TuisrONZO3glFLJuByjzyqpfGjplCY5zlJJTrqyziNG0s+yhLY6qR6AR2s/Y+4+2upItaDlRmxAzLq2WjWF+WZcbUAEhJ7/IfOcX4nOuVkXTd9DWhkvWsDJzB+/r9PON7lg7FYyjzNWW26MjJRc/yTE1clTFKDKGRWkmaCNFZLuVa7ROC65yssNEU4JhhLCn4ud0tDDGfjb9RK15PIiAMdN2fdFzDohUbeFp/hsEln/KA/joP669QYK5M+ryGKVPoryyku72IbFHFx9YBFIRGsiTDUVVcGLkRmed40/TQ19N1oxuTqurU6NkEjVIWVqbylj2MVYqTvGCRbEUoIVLaj0GIaEGmlJj9JVWEuUH7kNZiIz7XgaAJjkH9TuNcZiakRMmmArXHyVSr6eiRMmpKnbRsx4bv5b3cK1m8xhG+phHhwjenMuChMaQZzkIpw65g0/LZsb5CUiMkdYJGKV3Cb9Ap/BblWj4BwmzEmdisYuf56V35c8wlVpi1XPPBDD6auobrfbfHY2+AYGbyhFjhuun2FovIp4yqsElpVbhOplgfzm+4b4lT7W+OXRA7N3HwWxwddlJ1bNRbcJz6B/sXvstGM5XmopgrtK940vc8d+tvE6lxPu+r5Q0AnK/9wMO+13jVPBwAqQWpjyy7hF5iCelq8s5out2BlPR4dQV/apbzGfjS2JKZtiNghN8RRFm1a2irbKRDeH6999yVeEKC+E7iS2sQEZms30sMwDFCVRgb5vGa/ihN/AaN7E3UhiLs/9CPVD26dx0PECklo63eLLGdvIU3a+9zm/k8IcOK6cN3B4PVufRWlsSiNWPjsW1+8N/MffqbdTxE6iOneikdxVpW28nRnAeue5lcURkLgAKIpDTmLOM2SmQaeynJqolymcJM25kEL9W+ZqgylTu0d3jD9yhf+hwd8TlaPE7Csm1Gmo63hsCme9UfHG6M4VA5njYVUzGrnfc1UJ0ffWM0qZzLkcof2Ko/yTW3g72cFq6XUbqs5mrtM3KLtjDCWk5OpNSATti0MV0VysKmxzIg9EzMO0vVNGcX4O48VCzSZTXHqBPIdGtRn6j+ThM77oZaK30x+0Qzy1lp54syWohN+HyO0PEJA5/q/BQrWh5Ea9tR0QjNx6zsoXwrDiC8dgZ90stZJpuzWaZzlDqB46o+AsCQKoPVuTQTjheNpfoxlHik+wjtS371X8f3Vl8A7NTGvGweyXy7NdUyOQam58GnU6tmkle7kk6/OTmczGA+tYbFMumkG6ks20zOylGM8V0fq52hE6Fy7bxYPwWLXycgDBbqXdAwaS/WYlZtJiDDFPkdTyyfmxNsmd2UVb4OgFPSMzT7C6Z9/hSmJTHQWGY35arICHzN9+ayyNWxe1SVFrNw8o986r+HKYHLyV/yMR1mP8q12iccH74n1i4aFT1Kc9SQNxsXUxAaySMDJpFT0IPlrqtqM62CLmIlABdHrudHuw8AS1VHkEZTgI+3ulAQGskEqwtFSiMeNk9ngd2ScEoTSi6bx4T211Et/QwLP8wfVlc6i1V87r+LVNXiS8tJdbNZpvOS/jhpGVmxcfrTHIGhBuoKidsMxzNPdXcS6ZnOdYU5feq03dV4QgJiO4ka6RiWEiNPIwlpsqURwipdy8HqDNblDuBe8xxGTlxO09rFNBElrJ6ZvEuoNSxesw7nIbd05KXa15ymjeX1N17kxafuj9k4dheVWxjxyhKCperLeb8lihUmW1RxkXBWtrYtMS2bnLAjBESCR0+0ZGd9xunZdttYXAQ4XkxRQdJeiSefG291YZ/QixjCz63mRfxudUPguLhKBIbwo9hhQlsKOCnpsfl7buM1UH1J+X1esO/hTOmsIG03V5EWShaeM7KHcbO4ivbV03hSfzbmIVNLgI3kslrEcz0tojXVaiZSSh43T2Z20NkNKAlut1NEDx41TuEbawDrZVx1YGqOLeAQdQbj/NcQ8GmssBvzne8WArVuKc2O+8baCy3A0iZH8oY5lOPXPMKd4hVqTUglxFB9ZkxttFQpSHo/lhrEEMmTP8DvbgEjNS2PB80zOVn9jT/srkmrdaEoTMseRgu5IVb/4zz/LxxT/BqHKk68TFV5MTfrH9BO2RB7FnRpIIucglAfmENQqoswpcIf9OAT39385L+J3NXfcVjkEX5pdzN3GOfxinIyB4cfZVjkEcakOQbw91PP5kXfkzyiv8KjkfuZYbfnfOMmvmVf0lKCcc8woGjGN3T69uTYaxkqJ6ViGRF0ZsgOvGQeSa30sdJNsvgCJ3NVZAQbFMcBJaCppNsVXOjaxNpJZ3UOTgT7dNsRXEVNnZiOUE01hmEw1B5HG7GBoAhhqkH8GBwXuY/lrU8lp3EL1ne+kK7hN1goW7FBxBdYa7P6cqNxCedE/sN0uyMBYRDMyImdT0nPAkALxL0GJ9mdODj8KMUyk6fMEzBznPQrmfktmHvIu+Sf82ad73lX4wkJoKTxIK6MjKCzsorbjAuoNOIa8YhUeS26nTRDGLXOBFXebDDvWoeyYu5EWmklRKRGZGXyCrWypJDjlXGUyeSVQec1HzJc+4YN5TteJGT++FFMfNOpwWRbFpNeuIQ5k37mpk9mUVKd7IVUXRa3mZRvLmTdq3FdbSS0bXfeqArgP9oH2JbF8Hem0v6272I595UEIaEWLeQ339XcaAx3JoesY5nY6hLASfm8PcyS7SghA9O0AMkn1v6MDgxFYCNRMIQP1Qpj1CSr9oS0kNjYqEjVj54wYQskphuI90GK44ETiMTHM/vXzyif/S1/aAPIMzZwnDqe3Oc6UV5SROOSKVypfkbu9ZOoum4lAKeJR/gj/xQsW/KidQyLUp2JV0twu/2FPrxiHUk7sS7JnlMTiKvUAEJZ7XnVOpJ0UYtPc8YYcFeTNxiXsKntieT4JbmhVbQ2V1KdtRedu/UkjA9bCbBItmR45FruyX6YcplCuUxhkt2JRVn7U6VlMdtuw+dWXOjsrTnvQU/JIEup5QT1d/JFOVcZzo7hOcupjbGo0eEst52JdaPMpqNcQffwNPZTnZ1CbcVmdFcd2EI6k6ofg9qaKqbYHbnZHE4k4nwe/pIl9FQcj6VITRUrZFOCTTrwsTKMn0sbsUw2x0CjKuwsmGrL4vak/nI2tfhRsemvLiRVFzyiO2myR1n9WFSRrCZutPxTetZORFMVRvtu5BI3ONE++wuG2C+wtlrhK3sQr2v/ZWXgDPbZ9AnpVinX6Z9wZWQEY/NOjfU1P3ABR7QIU3TZXAItnSqJl735B8f83yie8T3LL/7r6aksR9NU5gUu5Hz1e1JcL6NUv0o+ZVyrfUITPf478wUCCCTj7O4cqjrpZYKZ8WciNcP57sPN+jPHLmCZ3ZRTI3fSVazkN/81fGQegN44XgSr235Hk+oKlt2JJyQAI7UpC2UreirLKZepVIbjP+yIEuC/5qkss5tSI1Kwap0JKjMlwF5iNYeWf8Lt6jss9XWi3cZvKS2KFzWvLd3AqdpYTlR/T0pbcKA6i0xRTcmGlTs81i4/nsGAlc8jbZuZP75N/8IP0L+7hkNnXcM3XzoJyRbYjt468Qf3x6fP0C0cj3o2XCGxaOoYqu9uTElhXe8VkTDxWZZJ2qLPeEx/PiYkypSs2Hlp1NJKKSJIBE3YmOnNqM50VmLtFOczGWPV9e4AYvWdL9O+ZmXgDOyqTawMnElzUcyYwFCQNrYQmIof1Q5j1iYLCSlthLSd2GzNjx8j9nmLhBgLXLViNJoYoMcv53OL/j69xSLUhBVcWUkhzUqncL3+CSkpaaS5P2CfqmBYNqZl0UJsIl1xBJKS4IkTtKvoqyyks7KGB824m3DE7+wqwtIZR1owhWZuDIkecHTNgYw8Ztrt2CSzCKam07/kC37234BPmKT1OJL+p91K5j3rMRQ/laTwo92XtMxsNCw+tA7k1MidLMs7kOeb3M8xkQdiQXYAV+I8H2pqLn/oV6ALi37KQs5WRzPXLmCh7tiUAkZ5bEd4v3EWlhokYMV3nhWGoFJzvvsimcEquxGfWftxVdV5nGndA0iUSCWasHnduCl2nVKziYvVb2gSXk7fjFJOlKP5yHcPo303ctuGK1kZOIMrKx6LtfcJkwOUWbylP8wL6qP4dY0UNxfT1cYInisfRL/Qcyw8dhTVMkBbayUANf78WI4qgLZNcnhbu5+3fQ8xUJlHrmsn04WNP9WJNwiKMHowbsQGQAuS37gliutRdK/+BgdWfZvUJOJzPoeb9Q9oWe4sEvNqlvOx7x6u1j5jWsZBXB9xnEj2qpnOosB5XKd9HLs+Lbsxg0JPc55xM8GUdPcZyOXoyIMcHHmM89XvOFSdhl+YdFDWkhPcffEQDeEJCSAtUsRZbu6gY9Tx1BTH3fYi4TBZVHFE5CFm5R2N7e4kWhor+cF/M3sZC4kIP9qw+8mnlMVj46UvQpWO58OZ2pg6KT2aiFJYPnar41o6e3yS0AEnwhKgdPMmnp/rPDDLrcYcqk4nq3YlpmVzmXGNM/bKeNDRPDok9RP1uw//9CCphFg9d1yd+5cmlCy3LJPH9Rc4UR2HakeYYndkZPblsfO2a8y9SXMiVfFnsL7Zoayw43Wo7AYetyI3oj12L9dVMUtUk2ltdl0OBbVqmhu1HPciGRG5komNTkNICxuFdXmDuds8h4iblVaRkiLhTM6tLed7nWztRbvQO7QLvRPr5w7zWbRgfMcXqSpF2k6SPaHEx/24/V/2X/8GZqiKcf5rGFQ1mkKZxWf+Y7k0cg1hqXGHfIX3fE6KBh2L361uTLM7kNHImbAntr6Uid3upLk/FIu8TU13JqhgbkuuMy5jkDKPHLMQNSWujtirbzz+w1CDdBMrGKLM4KjId6SKMLminD5iIWmKQcCncpgyJbZiBVgrmjLB6oLZej8ibibcrsoqTtPGOqVjT3ACGc87tC/Th33BbT1+x7f3SVhagEa2syu93Tif9YEOhFTns/rQOpADIk9yi3kxlWGLa5svYGXgTNqG62ZNTq1Zx236SJpUL+I/5ss8qL9GP2URHZR1NLGc5zwayxKlnbKBVkoRJlrse1gnc5EIyisr0bOa0anXflQR4ENzCE/ow8k6Lu5oUXXdSlLTswgrKfRUlvO+7wF015Ct6AGCqc7n/l/9FVqyRX1p11Eh1Gwg+4WfpK+ymJv05MywsxodF/s7RTqagTRqKFAc9aGeloft+uopboLIEVo8WXZAV9ik5DPD1zv2/tJEDaepP3OWOpq79Hc4WnVK2r7pe5Qsbc8XP9vzYulvSHbZPA50DadD1WnM2bQIOrm+7puXMikwgssjVxGxOlNl+1lhN8bvelqkyiqKlMZ06HUA336zHxsq0+jv9huuirvHVVWUsqWW2Cyr3/c8yuZPrmW21poT7vyIyStKOPu1SQx1PTO++mMGP23OYZM/iyNUdwUTWk112KJYZvK1NQBVxPXhJZG4Cu3KyAjOzHDeXzTLpciJu+etWjidoiVTeDPzciaVpHCbPhLLNGIeR6tECzbaFoZd1120jVLoRA03PQCfpsQ8bgAOVafRI/QKE/wjGG93Y65dwDB1Mldt4Q8eHdNwbRQHVizikebPs6mylvyMVAorQ5yc0ZJPIiPIERWMtnuTp+eDbWOjUJ7Xi7ctP9cb4NedncQ6pRm97TkoCnQJvY4ptNhK+THjJK7XP8EWClrCSjJcWYKwDEzUpB9JB1axvjad8uL1pAEbU/bilE3n0j4zjaV2FXuF3+ZZ/WmGKlPwCYuLtVHcZlyIwOa9fY9gcfYXDO65P4qqMn/i97F+Nd35nFL9Gu3Eei7VvmGpvIyqtLiQ0H3x5Hc1/nzSQiFe1/+PSeJ8AE5Ux3GiOo4JhYW0jqRyku8J5toFHBO+j57KUk4PTkKzTNL8eh3b0X6dWzCgm2ObaJWbQqtBHYkqXyY9E4wZ74tkFuW1RiyGYZWbRuV45XdOUX/FyD8DNsEcWVBn0vVHHCO35k+hJqUZJOxss9m6d2B0N7hW5jHJ7szEwFXkU8pYMRQ4iM+twSyTTbl+xH00To8/c9EdYERxFhaGVJFuChChBwmmxneP2Vu4awvXSOwLptZRGYelzkzZjuKceBlWLeDYnHwpGbFjrfVy2qhTedQ4hX0z6lZhFkKw1Hc6K2kOOI4YqbImqSLietGYZtIROukZ2XX62N14OwlAaMm6TaM6nvY4Wmvged/T9Fw7kvHZx3KMeAbNdUVLF7UYih+hKHzc6i4+KOsc76emLPZ3TUUJ31j9ecw4KXZMqUzeJSRSHTapkX66mo4eePJPH3Et73GUu6rInPYMJ+SsdEqFuqh2hEWvnMfcwEWMtnqzIj3+AF9U8jjgCIiv7UHUuiqPzZaTCK08NZ4yo/UHB9Jn2k1ETDu2+jcTXIFfUE9HwebkTU9xy2dz+GrW+thOAmCc3Q2yWtN6089kimQDuYrFf4zhPGUez1PWiZwX+Q9XaF8l1ZNILC8qpMRCgKIR0FVChk1V2OQrexBvWsM4SplIy8qZ/NDoAq7z3UUGNXQVK5nzsxOZeru8lLG6W+hHqNQQ4Ab1Q5b6z+J+7bVYPIaUIuaCCGBUlYBtxlVV0bEJjT6VY2j+tuOlorq2hM6ROVyojoq9xxq3YE5PZRndlBU8pL+KX5h07H0giuoa0H3OsiGaZgPApym84nO+q0BqFoF0R9A/bsX15QDftrmNN8zDqCaA9DkT3STbEfxCD9DScOwAVQSZLdvxtnUYnc2F9FUWk26Vxr7XqDff1qJmQr64S+lLvicoWPIWS9V2vGAezXHKH6wMnMETvhcYqM4nNdWZKF8ND+Vx91lfK/N41zyYX4WzfFICaVhpzereKIEjww8mpXGJ2pVaiGL2VeZS7BZ2CuQ6qtWu5z7BGZfcSpPMQNLOL0rEdRqoFQFU1/it+oL4/PGlm5HdPpanDRzHAYAUs5w7tfiuE2Cd2pz+ykLyiS8EU7Ic+4I/QUjk+QwOV6cwX7ZGT81J6uNXq0fs7wIZV49FdzdRVrWIFwGt773tbrydBKBuESdh1sS9Z8wE76as2lVUhgzSAhq6Lz45m25647Z5qcxZEV89Jab5qKooY4RxNQKb16wj+NF/E1qkYTfU4s0lSAR7KWupqiihlzGbfTUn0d5mmc7x6h80C+ZzkfYSp5c8y3naj6iRSvpUOikMJIKwEfcESbOdlVqWqOIS9Wu0zZlAIz4IDyJL9GBoQltbChQhubj0MTYI6B16gdF6giqmppIOYi3+GoNFU37CWpNJi4Ht+dHqzVB1GoerUxhDJTpmzC0zyoP6azxsnk53sYJGoowFtlMKtZT4ii4xAZ9AclDFF9jhalK0XA6pnkfWig6sDDzDR+YBHKOOZ1bp0czLv5pVqkqbkt+cUqRTYVpmLt/JAZyII2i7hWdwm7aWY9TxaMLmLG1M7D4VIpXUpt0pkWnkiCqqTdBtE0sk/yitLfJSZdjljkt0uIqu+hK6KKvoqywiRBBwUnAfrkymu7ISmbATAFB1ZxK63biAl+p5BoLpWZjuZ1HsS55UM4M6uaKCciULW3MWLJk4AlnowZjPfhuxgef1JxlpxaPQUwN+Nso0ZthtKdKacpb8eqs1Gqa2uYQLVxxAY0r53X8NetV6nvdfyMLSSn703ZjUNhrw5hcGNW7dhGHhh6kihWGGkwdJ96cittT/u1TKIMdF7mWVbMwxkQd4VX+UQ9QZMWG9iRxq1AwnY2rZPLL2drLGDu6w9aI7lvsZhfAzRhnE6fY3mBmOgLndOJ/79TcIpmdTItNpLMqce7muuilWOadov8b6Oi58L9fmTqBt1Uq6lv6EJQWqkLTs6DgxpCas9n05zj1OVH8jEBgUO/6GeRiz7bYkFwB2SElzhMxKpRXGsS/Rt0sfeODlrb6/3Ym3kwCEKySGR64FwA6VE6qpYvrDQylbMjHezopwyLrnudN+PrYKfMI4kffyrgLgkOJ3marEC9dPzhjK6ZHbAKgqL6ExJfzg+w/7K7Mpl6koVsPeTTVrZsTcRovWLMEfiruvvmsdAoDMLiDo12KGuBI7lW/dXDLP+J5lwIp4YJghFSpkCvfpb3KL/j7BYkf3u1Q241btPbJXxVUfUZfdzpG5NBUlbCYTS8bVVS/Y97KfOo++ymI+89/NWTXvUp7ZieHG9bE2eeHVCM2ZJMplCqPdzKSHq1MYqkzlIf1VXvf9Hz/5ncCk4xXHJrJO5hLR0njFPIIKmQJI9q6dxIDIBFpFlrC/NZGUGkcQn6L96rhpSpuOlZMYZv+K6o/bK0o3F7GPXEAzGTfgn69+H5sEEolInTS/RhgfH5pDmJ+5P980vYJj1OTawdEVbRRdkRyszqCxdHT2J6rjyBMVVCvOynWOXcAQdRZQdxUYfYb81O8KnZqRTVpeKx4yTqd5x2R/+K41kzhGnYAhfOiKM8FH61UIPYh0VSWZVHOEOpl3fQ8xN+jESaSkZ/GmeShfWYMI+Fyhl1hHfAsCuoqJxjryKRS5qKESIqbN57476ZhgIAbwucbX930PMFSdyt3GORhodBBrY3YKPZiG4k9Pum6uXcAKuzHzZWtKZDq3aiPpKZbGhMPTKVcA0OjuFbS5fQYdz32WKb0fZa/e9Wc/vSByA/cY8RQZ83Od7KlhEeAx5TwKQiMxGvcEoNhVy6amptBZWcMquxEFoZHM9Tnn9UByGpPZsi1/tHDK5UgthYfMM/jG6o8v4EZDZ+dTJDP5P+Nk0rs7QuwodRK+rGaxPGKthl3NhVc4Xoozm5/JzIILY/3rPj+z93+ZtOHf0mHvQWi6j4l259hOcU+z00JCCJEjhBgthFji/l+v0kwIca7bZokQ4tyE472FEHOEEEuFEE+7pUwTr7teCCGF2CJGfxeiuuqmSHSVGK5i8aTv2Cc0iQGLH421U6wwzWoX01auRc1szo3GcD6z96M0xdHnKynO6mj57HFMWVnC02OWsNB23BQX1mYyKTCCjso6ntSf42nzeN5Pd3TJ1Xc1YtLT8QfatGxGjom705qRMMGEFCA9hFs7N789J4U/42h1ItPsDtwnz+dy4xoea/8OlTKIFtrMxKfPhbszaSGKsBK+7mitiDZiIzmiChmOB/dFK2elyUr2Equ5XvsIu7ac76y+fGgOqbPq1GQEa4sc/76UdFTd+TyrCCYZUG/TR5Lu6n+jlcMUIbGk4NDwo9SmNOMB8ywm2F0QUiKk4wIrtQA6ERRjixgPadO3/HvOiXyE6ov/oNWaTbyp3s9hhmNvsoUSq+C2JV8pB5KiWjQVJQxQ5lNRaxKROmE1eTJboTtBgavtfO40zmVTtuOxlRibMcbqxaiU4yiWGcy021Mp64/EVdMd9cQl2tf1nvf7g+Tl5XHatY9xyUlHJJ3Lk6Xx9xRITuOg+IIx/dEarSB2fH2gHWGpo/v8rJGNOFX9hcVZ+/KGeRgrcwfXOwaAjmXjWBk4g6vUz6jQculb/gM/Vx1LL8WJmE58fyKjecxlfKnSliWyOa/rj/Km//84UJ1J/9CziCZdqWy+L1dHLmf/8BOsPuNXJh70MTc1e5PnzGO5WPuWC7Tv+cJ/JxPsLuwbeooF/njaFqEoZGbn0ffo4Q2qX9ROh/Nt6nGx1+vyD+Dw8EM8lzYiFtPj15xr923t2h7cBUZrZROXHNCWSw5wguj8rpCY4QaEnqL+Spbq7PCqCfBt2ol81u6B+OevqvQNv8Cz1vH4/QEmNjqNkNTRsltwdPh+TgzfRadOnenW3Jkvel78PD3Pezxp/D0OOpW8Ji1jr980D+MNc1iD39HuZFeom24GxkgpHxZC3Oy+/k9iAyFEDnAX0Afn8Z0mhPhKSlkKvABcDEwCvgWG4ZYxFUK0xKmJ3UAy+11DOLcTz5nHcLn2JUeEH+TA/AEMLna2l/eJSxCRKi7XvkS1w+h2CEMN4EvN5GNrCMcp42hnqEBvVFfnuNc3JzIw9AzXa2PISfXzcOhE0jfGvRICwqDc35Qi2QLTskkVYfqXfBU7P2tNCfdFnORsxTKDsK2Qbm5meupg6HYiHSY/AhIym7aj+0xHV/qrtTdVJYUcpiyiU4eTiCz10a90VNL7zBbx2s92pBZp27zhc4SgNGqZ/n/HYHc4jFPUsbxqHs6h6jRaK5u4UvmCDbW3cZnh7LR+9V2T1K9mh8laN5ap/ht4Qx7N+eJrgqkZmBWOsGm+nXESa2QjaghgmiZp1PCZtR9t0xSOtH8GIZBqgICMoFoJwY5SRUjbiZUQSsx4CBCoWoeCpFjJp721nN9Th9K+ZjZgUCP9MXdKgNWyManBIDNSBrFX9TR6rHqDQpFHG3sFEFfVvJZ9DSNX9eB09Wfm2m3olOH4rWvSjKWX/s7ux4rUw7i08hmnRvfF41m3bglbrgP1tBxW2o1ZIpvTNeH4BKsLPmHQ250A2+TVTcgXfda+DJ5Axzxnlzba2ocWoohQXjfWri+mk0xjSqOT6LDB8bRqG1oQM0D3URaxvzqH4m59uG5VU97qUL97MkCm5agML9W+ZpGvN1tufGpECunUUirTULKac595NmerPxLwKRxozmRfdR6rlBbotkUhOQQCQZTs1nxpO7aiVh17clFHqDSgydrJnKjGk2zW4KeJKKGDHQEaFmRb8so5yTuvLD9YKCzUO/KzfQ45gUqWlH8HDOKUsy9n+tg8enXpw9T0g1C6Hsstw+K2RX/QER7fW33ZLNO5UPueVTXOWjhQvZbxt1xR5/59xEKGqtMI2P3pf+kLwAtk1zo2rpWyCYFA3e90a1x62bVkBP4a68CuUDcdC7zl/v0WcFw9bQ4DRkspS1zBMBoYJoRoCmRIKSe6pUvf3uL6J4Cb2LpdbadRg5kUySz6KYvYKPIpM32weSlhqfOj71BetY5kHPuwUW2CZocx1SA+RbKPWMyTvufpX+msVPW0+IruJd/jXKl9wQBjEsPyi2iz7quke/bxrWbv6vFsKA8x1e4Yy3sEsGBjdSzXUd/w84wpbcwqI5tIWgv2Ofx89Iu+ZULLiyno2h9LDbDUbsYf+acwI3ApL/meoFV4CcYWuvPEHD0AGLUYCQZiaYTYp+pX+sy4lY5ibSyxX1TNdMqL42gr1vOm/gitleTSlrodRpg15IkK0hVn4g2mZWKnNk5q94mVXGgmyn7hJ5lkd6JAcWr89nmrHXMDF9FElPKTPgSkY2NBD+ATJoTjws5Ec1QlUmKjxBwKAJRwWVIwnSotTDfq+md136Qx9LTnIxSFXjd9R6mSRU7VEjpXjOcoa0xSO5+mMNbuyX7KHG7X3yVFcT5DPWHmbEIJObKMGd1vZ9/T/0OjFm3p1P+wOu/br0KBUphUGAlgquzIrC2/ry3wuUF3ZVoefsVRFf1g9+XwyCOYOR1Y0vx4eoVfJqtVl9g1RlZbKhVn9XqN61F23KDujL/5IA7ouBWdvhtfUqg2YW1m7zqnf/EN4TXzcI6O3I9fFaRTg09YdBKruUhzopmr1Sx6Ksv4wHcfKcIgU9TwtP4MV6ufxvrpVjKa07VfqEmIFh+ozOdT/z2cW/3mVj+PbdE/MpEf/f+hf9m3sXTgPp/jBeUPpLDPsPMQikKf6z9nn2HnJV0b3Um0FhvpKNayzldAm30clW/jXkfWe78XfE8yXBuFT7ERiuNGnZ2iMydwEb/7r8Gv7tiU1rNlFm3z66br2BPsCtHUWEoZddPZCDSup01zILGw8Fr3WHP37y2PI4Q4FlgnpZy1hQYqCSHEcGA4QKtWrRpstzV8ZgWnqU6xk3MDv7Fm5jxKlVX4hUGHqimoohFPp19LfloKj1RdgKX48QszlkbZdo2EwYy4kCgQTiRqpl3GSfYP9LeThcRR9i+k1ZSybtNpgEJWghdQ2py3+NA6kOb9jkWOV/h0+lreNS7j22Odia1x87Y0vtDZaVhqgKAI03ev1s5eDEjNaebUX0h4Di+M3MC0wGWx19IMEa6tjjmoRlNRg7PTuVj9lqWyGStEc9qzlnPU0bEyoADvmwfSXBSzvzoHXUaQrgvsSfJHAFLSMjFzk7NiRqRKWOp1KtXVyADNqLvbaCRKaWJvwBQaNoIqJYP1MocptU3Zx31yz+Meujbai2PW/R+goOS2oVr6SRVh5isd6S8kSjALItChRRPMzRrvmgfzbt41vFE4mNd9j5IpajhffoGzqYWQkoJq1iAVHWsLG8T5Zc/ykH88qSLMPmIpRuVsltlNecMaxgy7A+/4HuQG/WPmli+h2+W/sjV8rl/9EUpyXZLmJzzAmpKtl8qVbvbZDtYy8ixHLXG4MhlLKmhWd24YuhdD9sqnWW08CWPnS96s04+iqjTLql8dFhtPz4OZufRbmp7xLLPGLuFo4unKf7V68GHWhcyoKAMgaGxmTsDR14d8OURr+FR3OgnmzKWXWAoBnczwRvZRJ+Bo/14HIN12+ggRIGr0H+xGeVtKw0k4t4fcNnvDJLjFfoWQu4DS/Nu3mlc1jXlD36dV0XpazfiFYq0D7br3h+7lW0QfxYkmtvT5E1Rx7jyWIsKY2j/HHLxdQkII8RNQX6Xt2xJfSCmlEGKnV/1CiBTgVhxV01aRUr4MvAzQp0+fP3Vvf20RrV2j3/H8zCK7CZeGr2FZYByv649gS8FZ6aOc0oO0JBIsSPrypesqF8griB3LcHXua4N7Yac0gmQnH0J6FjnGRsSCL+inLEw61754DJ0DIZSOnfhk6gW8WHMaczL2Jr9ZAVuiK446Z9+yL5kZ6EfP0GSyGrXgG98QtOqNHKlOJFPUcJ0WT+s9MPQMJzbuQYdQTcynaJXamkqrL/sqc0kXtShCcr9xFk39Bo/Ix5MEhCkV5skCBJLpdnue813Ipa6QCOPDT4TUlDSUzSWslzkxD6cztF8YFHqaL/x3Mtcu4Hu7L+eqP3KT9gEtlbpp16/QvuLommnc0Pg1FAGXDGjHo4sdYXp8+B56KMtZrBfQQstxdhJCwZ+ex3d2fwYo8/lGDOF8/ovIaMbmM+dzSF5TBs5vzsZQmH4BnclyL46P3MvP/huScgKZwo9mhTAR2FvYMLJkWazSHoAdzOXgSDxKeJ/wy3zmuxN9Ozbp/oATHDity82x2BqAE/ap60+/JS3a94AfoEevAXQfdAQTV11Ly5WjeMJ8gTnF/Ql2acXgDvksLQxwZuQWBPBuwvWLj/mS6uI1NKxkitO8bVea3+Q4NqSHfks6N8nuRJpP5WndUa3p/ngw6YbMXlDlCMq+J16LecwV1JaXkhVIIbCFmyfE02BbQo0tcMrVHPKtUkx164JsWzRrG9+pR1Ol+APb32fXQUcwe6yz64k067vN9gv1znQyFiTNE4lE42L+CWyXkJBSHtLQOSFEoRCiqZRyg6s+2lRPs3XAkITXLYCx7vEWWxxfB7QD2gDRXUQLYLoQop+UciO7GFWLf2G1ShqHqtO4rU+A9TMb0UxuolKkcH7VqwTDhVwlbuCI5k0YqmkxV1Hh7iTSc5tRKLNi3jNFZNP2kvdZ8IMTGPOz1ZMKUjhOHY/hyyZQE8ZyA+qut0YQnWr8VjU1WhbZqk0fZTHPywdYZbYCZtYZe3RBEgimsteVnzNv9u90bdScj9POZE55OQ+bpzM7cDFnuu6en1qDqQo0psrSY/mbbjSGU6P3J9teRLaopL9whFaQMJrmg+SFP3ea57NZZNNX+Z7TI7cT0Rohbce9cYPShCpLo5uqEKxcQSrJHlzpooYbjEsolpnMlwVMtzvwk/8mxli9OFidwZYIt0iSEAoHdmpEo7Q/qApFODVyJzOsDlwU+JXGFa15K/daSiur+T9VMliZTYAIhmlxYeR69s8fyMBGTiZeTVMY5buFqsq2rNUNptuOTWEjOUTDCU3Fj2aHsRXdmbASiDTrB4vjE6XmRuUeokyjjdjAK9ZRqNixZIJbQ9U0uKc0SUBsL9n5TeHucqLm3AFn3c3ch8bWsRf4dZU/7O51ru+4z5A/cVc44YTTuPuxGdytv81NxsXcq73J7PIS+qlO+vWQG3fwiHEajZscAOuejF2r6T6y8hxFQzAto07fiutWbqNySvgOrtE+xR/MgtplmGrdWg07gu7zM6HlxQRb96HH706ajC29lrZF9/2PZ56q0W9Q3ZozW9L8ilEsWTGXDlryFDt/6HtUzvn2T33nfxW7Ys/zFRD1VjoX+LKeNj8AQ4UQ2a7301DgB1dNVSGEGOB6NZ0DfCmlnCOlbCSlLJBSFuCoofbZHQICQEkIplPcgjFdaqYQEc4EUCnSybWLaWGuJmRYBHVnAojVPHAf7oygzojIVbG+VmX0JiMrFz3T+WH8n3kK1xgjaBt6FzOYQ0CGEeFKaqSfT41BzP3jW+Y9OJgO5hJMPQ3ddZH0CQutAbPM7OaOu6ovI49gahpdBzqeJT5V0Ecs5JhOqbFcQQBlMo0LlVG0L/6JWi2dG43hTLH3IlC6lNu095hgd4ml0njJ9yQtlGL2Cr2ZdM8gYXLSArRTNjBEnclB5u9UBJrxmbUfBfZqurneV0IoZIoa1iSkGn9Sf47lshl9lEVJ9SSsBh5FgeTEyvc4pspJh2CoKfRXFvJm00+Zf+9hnGd/Qa+KnyhTsijV8gmKCI1FGZmihsfKr2GM3Zvy1IJYf8PN9+mqrEJRVE5Ux/GA/jphqfNLQjDfen8b1irNENKqo27qfNhw1hNPyuZTJB/67uVZ/Wmu1j7jRf0J9laWI5U9b2SszHGEQVpuPKYiIGsY7buR09UxDV22Q7TMSeHAvR0vn2luJlPU+CLLH0jBkoIsUUl6prNbuN04v04/KfUkposKiSeDlzNZduYM43YqUxxVmt1ArYYdYeCF/0fPQ07jbctxh/UHd0xICEWh6+BjY8GQWyM9K5cOvepGQXQZdBT9L3m+niv+vuyKJ/lh4CMhxIXAKuAUACFEH+BSKeVFUsoSIcR9QLQk1r1SyqgC5nLgTSCI49WUXMtyDxDd+t1sXMSlyg/OsYxGRJQg2FCjZmCrPnwywmfcwJrNZwBdKJcpzLLbsaHl8QwAVEXwwDXDWf7iG7SVa1if7vxoU7KdH22eKOdl7TEnVYVvb3zCRAmXoWPSTyxg4ZwaToo4hVtMLQ0tYasaUZIDsaJkSkf3GchIzjB6T/mtdPPPZFLVCY7RF6dwyZHqRAwZZFPpauZ8XcQYax8+9d2F3BwkKCLMswv4wDyQiYErAchSagiTvDW+Q3+XKcLxTPmvm5XzncyZ3GEEOEGN54BSo9XGhOQHqw+HqVPprKzhMGUyd+jvUSt9BIXTppmSrI972TySg5QZBFWLXuGpRNyVZDQoKkUYpPg0NiMQ0qZf1c9EIhECbupucMpfHqxMIzsUAFd7fIDlrHilFv88BTbhBEP/Z42vYummKvLTfFiWSWK2nszcxmTevYRXnn2Qi4sfISR1+rvqwhqpxEqJyu3YSexq+l7wGIvnnETHrvF1qk+BDso6HlJeAx5v+OIdQAYdz6oPfE6xHtsX3xUIRUEVkku0UUwNH8tNxsUUZdVVavnrU8OkNmaq3ZEKNYfrtI8okln4XePypGZn0a/uFX+KV9Mv4+7S81jegCrII5mdFhJSys0k+gjGj08FLkp4/TpRC1Xddt22cY+CnR3n1lBU52PQsPC75RWDGY1ikdQhLRNb9ROUNTRTCimzHaPadcZlbJC5nJcSN1h3bJzOXD2XqaEgs5uewjFAsFUv7jPO5G1fPPHYuy3u4Z7FBdwb/h5dWHzkv4+rzFfobLemq7IK25cW89sGMJW69QEA2peMBSAjLdnzwXITuNl6WiwFg3T/DympFFROp3flL/T25eMXBortvO9XfI9zRcJuqLks5C7trdjrW4wLuUd7EwKZkGBbDbsBhDOPGoUvUk4XQFEc4dRCFNNCjevx79AdvbU/QY9V2+si3t9UQWj1TE5Sf+NB80xy9XIGsgSQSDfyOSokbLdUpC0UkDaDq75Ht0No+p2xPnVp8JrvMSYWhYg+otGcRbYaFxIztR706nNg7HVAVwmZFqZdNxo/SlFef65ffykHBVvHjkU9p2babZmQecR26ft3JZruo+M+yavXHdG7by9pOGrKfOFkDJBbBMb9ZPXiEHUGaZk57HvytQxsW7ccp1AUzo38h3Uyl5/cY6FmfZlqd6GRLOYq7QsAnmn5M1etGMipGW3r9PFn+fjSgcxeWx57Pj22zj/HxL4b0dJy+dTaj6PUibyiOEVMUnKa8H7ulTxsnMYf+adgq34ypOt66W6LZ9nt2U+ZQ25kTVJ/oUAe+ZSR4neET15OdqyqVxSZ3oSFshWj1f0Y5UZJ1xSvpVSmMdXuyKT21+IPpMRcV021/p1E+iH/YWKTM2ncYQvXxGgSM386K3Du3UtZShNRSlhNJRc3m61SRCNRRraMpwh5zvc0e4ecNADZspzzNWd3dZ9xFu9bB+ETFlZqEya0uIDJWU6QV5flb7DQfy5t2nWiyyDHLbCgc18mNjmTt4Ln1Dv2xMA2NZhJm4OH00SUkC5qGa5+zVfWvrygnR3LAgtx4RAvFSnoXTWWzMimmBCMorjGaJngHRdVH8mEz7PfHWMZePQFsdfDSt7lqdrbOLryA46o+aLesV9+zGBS+5/Nwb27xWpWW+6a6xtrIAvSB9V73Z4mumKf0OTMXdZn0y7J7sPCFRIbpLPD+Mx2BJUeTOfYns1plFH/AudXe2/adI4/t35VYYT6Jd2teEnOMH6GqDNpaqzadePPDHJY1/r8cDzqwxMSOCswU2q0FJtQLWd5nJ7blOLU9rxoHcPmxvtRktKOOdJJOBbNDnmx9g236u/TMphs2Z3UajitlU30LXK8IVL9GmeqyVXr8iNrOUf9gV/DHXkjw0m5/Sr3sJ86j2wqSQvo+PxBjovcx6PGKSxIG1jv2Ju16cSAS5+voydVoqVF/WncIy/iRfPo2DlDS9bFRnPPJOLXnQnPVJ0f+GmR23nNOoJ3dCcwS6o6Ay96AtnMyVejhMsJCAMtwVCnqCoDLn2erpqTuuEHKznAKSok9gs/SXHzQ8gsdvI+Adyqv0++KONndV8EMjbRT2zhpi9wv4PGlmOmaiXXxXYb01McVZjqppoQCfmXbFdIFGb2pCEy7TLay5UMCP/B3qGp9bbJSvFx77HdCOhqPAmi+346irXkWnW9tf4KhKIg7ypjwPBnt914O2nerhvyzlKmuLmIqvK687R5HFdFnOJFzX3OTsMf3Lpf//IHj+Dls+NCIlg6H0VIupjxNOOtNo/jUf1l2pZN2GXj99gxPCGBo2Y6VRtLc7GZ5oPP5cjwg2TlNqV12SQe0l6hfabN2vanc7VbwUt1dxKXaE5Ec6tOyav4dLdurU+LT9zRtBQLj/iU4kvn0Kh6Mffqb1FQM4dmOekU41yzSWZRRZA2NXNQFIFPVXjOOo7J+Sfs0HtS3epsajCDAw86nIfN05l5wOtM6/N/mHryj7dCpBOWGu+ZB7OeRizUu8QKo5T6HeezocpUVgbOYLDq5vtXXOO9+1moISdNRKCeicHIcoTrZpnBZhlXTSQaq52Ao2RB10IU095aRqVIo1Zx+rXUAJ9b+7I5zbExXGDdGmsfnaz3uWkUbzW5lVHKELfz+E4ipDh5pFY3Ppj/Gqfwklk3GEpqQQIygiJN7O3wz59LWx40Tuds/1OssfM5RfuVI4vraFb/MoQQuzx7qFAUypRsimQGVY3787h5Cv2GOJ/lkYE5AGj++ncQURRFkBQD5QZJ6hiUjVhE6RULaV3uxJCIBtR+HrsfLwssoCU8p+cd3JPzDu4JwKklL9JGW8UcezEt+hzF29+pTLfbY26R5jiQkjwxtrMd754UWTcgKi2nCXlNWrHODeR5WXuUqeWHsD7QgbzQFNbLXHoqy5hmOcFlH2h3MZbuFGtX1+lra4zxH4wRqqa66QAu69+Oy4bEI3jv/Xwfvp3aiLt0J6XHb779mV6dy1vWYcy+fSjNAjoZ93Tkc2tf1mUP4aDSj7hA+z6p//I0x8OlpPmBHDXpfq62pxKSOgGt7iPV5+wHGfu6Rdv1EzkncjPP6k+zWjbmE+0ILrI+4k7tHdLL2qJskXbgMvUryo1fOC/7bZplBRgANAotd4oUZTga/1ISXCkTJpzpWUOZUdSFC/kYEnYSL7X8L6PnrecGVfC4dZwTf7HlgN3Ibk0a2NvhpXQu91NpmbTWUhgceYqJ/iv+EsP1nmaRrxtrKiwaqworH44L23aXjmTmlB/p2bL9DvXXtsd+LBjTFf2oR8nKc9VBbgp6of1z4gr+1/B2EsQT/G1Jlu143OS03IvsVB9P6s9RKVOobe7oZGfv/xKz96+bwrdZxNGfphtxY+16V1+rprplMBOCiSw9lRntnfwv0UjtqJ99gdjAdfonHF24Y25zP/gO4djI/Wg5BXXOBYKpvGEdHns9odnZvGcdjMAmxXXvDYsgKYTR6/lxfmzuz9pGQ9z3k8dc2RbDMKgV9a8cdZ+fxr0OZ4CygGxRxfXGZdxvnsUEtQ93GOczVJ1GMLSB0BY+/hYKAoktZWzFmVe70kl3ECkD4BAmsdRuxgnhu3kmL2609ssI0jY5PXIbKxofGjvePBhmSeAcuq//kFl3DmXmXXXjNaN1BAJ2LVJsW0ioquBkdSxnmJ87r7GQyv++kFivt+QC7XuaF/6SdDw9M4eeh5y2w/0FUtLofNt42u8dt3lES+UKrX6bnMfuxxMSNFzIY3H2EAAatXBXzWoerUQhft1p3+Og0+hx0Kl1rssZfCEzgwNIOTCeOnuMvQ8lMg3Vze+UmMJD6mnkt+sJEEvPIdwsrbEcTNrWt+51xhDZyLHKONKVuruZjrUzeEB7jSW2E2CW36gp/9VfZp7/QjTVeW85spTD1KnkUMYB4bjrZFhqaMJCcz1D0sxizlDHsMLK5xv10Dr3ihJVJb2iP8Y6mcfR6nj2Y2ZC3iIFWZ2cmiMqJC6teZnDy5wiQllhJ014hyIn/cchylSai2IqSCGUkLH1pI1P8KG8gQl2V2qC8Z1fT8NJ201tKZkpOhmBuguEmrTW/GZ1x5AKhrJt76AX5X08qr/MUONX3tEfdFIy/At2EtHqdELffRN4VEgou/EeHlvHExIuIaknGXcB9rnsNUquWBgrG9lK2UwbpZCssvn1dREjMzufnv/5gUbNC+L9qxnkiCqEm74iJSOe+Vz60+neOEixzGCK6y3UopdbMyL6Fek75sr4QNWdPOV7nqxI3QD4ppHVnKmNoYOyjkKZxSBrKieo45JrJbgr94Bi4XPDeKf1e5w5ogPHq3+w13pn1ZxZu5YH9deYZbTgrdTzGhxP1M04KCIcpU3mKu0LrrNe5wv/ne7tFLoNPpYJbUawb+gp7jfOZIFoi4JNT3MWBeHFbju3XrA7efgxCIoIP/lvYr/q0Unj98sIxyh/kFWzMnY4T3H03mp1vD7HlmxqMZRzjFvYL/wUn7X8T4PtorRxq4rZQonZbP6KYLo9zakVbwKgqrvvvS7xO+k0arM7b6Olx+7CExIuTi3jZH2H7vOTk9809roqrQAAGdp6Pd76OPCE4UzKPprc9HgKj2PC9wEg/Gm0bNaETYe/Qvfhr8Dd5TRx9bnCzTMjdlBIqO570QN10xlIM54iO49yMnKd91iqxMsrmoqjZsqQlTypP+f0qQe5TTi2EdVV/6vuCk81qkjVt5KIMUH98h/ViZNIyn4qBKqmMfDcB9gg8nnVOpIVoiUC6bjAul13Pv4mpqUfSNfjnMk7WmgHoG/t7wn9KaRTw9O+52i+Oe4Z06jbEGe8BclunIkE9ATX3O0w+BrRmBQUTKmw2s5nfs4204794xHR728rCTh3lun5x9Ml9Doif6/ddg+PrfO/v9zZTubL1uSJhsuJAnS5+GUmf/McfQcevtV29dG+x0Da94i7sQb8Oktkc24xLuSwFo7LZpcBdYuKLBRtaSw3I3w7lrtmQ1o3mlX+TGpGTp1zakoWABPaX4uW2YSOnftR9GM2lQfGC6e80+xOrlk9goAw6ao4NhaZkosmip3ka663SbQE5wv6k8yvHAOMo14SigE5XkhWUiI3kbAavVkbSZqs4WdlCBOs7lzL+7EdVWZ2Pr2v/6LeW0Qjy8GJeI7WMk70oGnTtT/lzZbRO7Pu5xKleckExvn/Q6HMZlXZKUDd3EeJmEJ30pkLBRvB1/ZAKjK3Gh/qsZ3cfuzedG6Ry77bKE/qsfvwhIRLkDBp1NXfJ5KSlkW/027bapvtRQjBiervFMks0lvv3WC7W+3LOMtqQufcrg22qY+ul73NsqWzaZdbN3N772OuYGHzLgzsl5C38e6VJP4MU/XkHcx1kUs5pWkfHrAdARmLUk/IZtlQVDiAldOe6yOX8pjvxdhkHs2wOjT8CHc2ia/sz1O+wycs5ojefENfrpfvJXkoNUSSR5FIiP3Y4trM7K0XOfQr0okSF8UYoSXbvG80ul2iIFHopyxkmlEI/G+rSNZrLegamYXpb1jg7iwZAZ3z922z2/r32Daeusmlu7KSwcqcPXrP27T3uFkbSdOMho1yp+3fg8ntrqL3oAYT8dZLICWddj3qV6koqkqnflvvr3PNdACsNEfIqMLGpym0xM2xGBUSvrgazNQa3u2oQlBNgNV2fjw1hjupK8gtNBZuOg8K6SPnsknkUanVPxHdZlyQcFm8kyWZ+/KK6Zb83A4BkzTWxDoD2xEnscTXiRfMo7kn/wkW0Yq+ymL23lR/SdL/JVbqTqoMYzcKCY+/Hk9IJOAX9Rek310ERYQ2SiGN0hr2Ab/y4A68cX4/0uvxwtmdqG68QyTHKbr5qP4y6VUrKHPjEkLpBU67rBYcFP4/ymUK1lYydfqq13O59iV3muezlkaMtfbmhbQrmGG35179DVLK4yv26E7jWGs0z/EI1wbu5YvGI+rt195CxRRlada+vOIGym2taFV9NOvQi1rpfCfbY4B+I+sqHjFPx+fTON12kt7xL3CBrc7uwkvmkQRSdiybqsc/C09IuMxIP5DJ7XcsYG1Xoel/v2hS4doQgqodO+ZToFDkMctuS3Wuo6fXfT6Wy2bYKNhb20nYBj2UFWRTyU32CO42z2G5vzP/NU+ln7IIX7g01taOqaMcF1iJRGlgot9LrGGl3ZjuoVd5t2k8+jpg16BjcnT4ftY22bFdWHZ+U2bnuXan7diF+DSF67WPOKTmO0TULfRf4N108emn0OSkR+nevvW2G3v8Y/GEhEuv67+g31n37tF7zhryOpN6PrhH77m9tC6dCECasZnrI06RFs0XxEIlQCQWpe4TJhepo5hud2B1Tv35pSBuw3jC9wJVIoXz1e/Z25wd85BJXO2X40Sw20JBQXJH6HEO2vx+vf22FRsoUArppSxJqmtwwIbX+NF/E3NkW4zAjqtDwh2OAaA4tO1dyIVlT3Ol9gWdwrN5TX0o+oZ3+J7/NFL9Gsf2bP5XD8NjN/O/v9z5G7P3kBP/6iE0SHWzQVAyibScJmS4AX4p6VnomOylrCW8aRx0OQldgdv19/ivcSr+Rgc22J+SkK7jGH7nXG00c6uL6Oab6RxMEBInyUcYbE5kaMoSmlkb6GEvYE2k/mRx0XTVb/se4b1yDejpdqeQKsKcro4hoyod2LH65017HUbB2JEM9Ody9DbaZtiOS7St+unKCvcN/+8LCY9/B95OwqNe2p1wBxsvmEJus7axHE9ZuY15W3dSqSuuC6zPrZ7XVGwmVWvYpqMlRMwOF04gXmKJz0R1UpnI5H3rYDapTWJxEonurYl0VlbH/u5QEy9/GrVPPKS/Rm7ZrO14x8m0b5TGzYd34qETtu7+CmC7Oxip+qkSKdRIP2vzh+zwPT08/o54QsKjXoSi0qRVx1jQnHNMicceuEIimqL8bO0num/Fo0f31zVuJhqaZUKWz2vFe3zgu4/J/kFcbNzgBtNt+1G1UhKceBOC4HbUcB295tID2lGQt22jrO0GHtpagBqC/GLvTU1GwQ7f08Pj78hOCQkhRI4QYrQQYon7f3YD7c512ywRQpybcLy3EGKOEGKpEOJpkfBrFkJcKYRYKISYJ4T4786M0+PPE01++KhxCgCXmW87x+tJxaD4Gp5Q9dSMWK3jqB0imjzv+PA91OTH67idxE8MUBaQThVj7b1RsLcrqlfJahl/kShUdtAFdkeR7k7C1tMQSA5VppEWbjjth4fHP4md/fXcDIyRUnYAxrivkxBC5AB3Af2BfsBdCcLkBeBinALEHYBh7jUHAscCe0spuwL/t5Pj9PiTqAmlXQEyZSWQHCEdaxvYipBQFcpkGgvsVrHiPNEqcQJJYiXJqGqphb2eocoUltOCcl/doEBwMtJGCeTFvWxWZw/iXdMpWSp2s5DYEOzA59a+zGgznEKRj09YtNg8frfe08NjT7Gzv55jgWgB5LeA4+ppcxgwWkpZIqUsBUYDw4QQTYEMKeVEKaUE3k64/jLgYSmdgtNSyrpZ6jz2CFF10hVuzeG1iuPNItPiOa1uVG8CQPM3XIlMUwRXaZ/xsXUAS2jFH1ZXvs2/kGl2Bx7WXyFQsSLWNiokBobH8bLvCS4Vt/Nrk/Pq7deXENuS0TguJDZm9uT1aDr03ZhbCGBK7rFca1xBQFd5VL/MOfgvcIH1+Hews0KisZRyg/v3RqC+5V5zILEI9Fr3WHP37y2PA3QEBgshJgkhfhVC9G1oAEKI4UKIqUKIqUVFf4+Skf9rjG92HsuP+giA5UoBIaljZ8RdHyOKEx+hbaVcpRCC1mIT+aKM/8gR3GhcQkmwgOfNY+iorEMzqmJto0IiWo5U2naDcRLjMo/i0sg1FITeI6cgrrJKMcvwYXJw+FE2NW3Y62pX4DMqeF5/ktblk/EpTlyJshszo3p47Em2+SQLIX4C6qsanpTESEophdiiUPLOjSsHGAD0BT4SQrR1dxxJSClfBl4G6NOnz666v0cCg4Y/FftbIAkIA13Eg+wGMZN5dmvUnK3n2PELg8u0r/nSPoTr9U/YUKuwALc+eIIQKCGLHCpi9ahf5R6KCw8FHqjT58PXXc76sloOX11KZmo8TqJb4edc7H+OjqG3sPSt11reWQ7a9BaD1clMqj2M6w3XeO/tJDz+R9jmkyylbDBcVQhRKIRoKqXc4KqP6lMLrQOGJLxuAYx1j7fY4vg69++1wGeuUJgshLCBPMDbKvzFtHRrJ/gqVkLTngD0s2awSDaiQ/b2BVaNkO9zlDqRCUZ7RvjeAJLtBldod7FXzQyOSN9Aj9BUurOM6UaPevtSFUHLnBRa5mwR7e16Tl2ifk16VSOgWd2LdxEBy9kFCaGQL51qhP+GiGuPfwc7q276Coh6K50LfFlPmx+AoUKIbNdgPRT4wVVTVQghBrheTeckXP8FcCCAEKIj4AOK6/TssccZpw0CknMaBQnRTqwnZTvnxaNUJ5o72KZ/7Fiim2qpyOIrexCVmlO9z/Fu2rFHNVpt8Hr9EzIrFu3QtTuMjNdVWOfabMob9dm99/Tw2EPsrJB4GDhUCLEEOMR9jRCijxDiVQApZQlwHzDF/XevewzgcuBVYCmwDPjOPf460FYIMRf4ADi3PlWTx55HE46Xk51Qxa6JXUgHZR0pcuup1rfElxb3mJYJ5Vkvt95jiv9S5qf15+TwnRhoO+7GmuQCu3sN1/GiGAqVSgYbZA5WSqPdfE8Pjz3DTu2JpZSbgYPrOT4VuCjh9es4E3997epUZ5FSRoCzdmZsHruHIyM/ACAilXXOBVPT6xxL5AHjDG7TR7LwyM/Q/EGUWkdNc1bkFm7PaR9rd4Q9lnxRQYoMMUV2ajDaeqskCondnCIjEq1Mp/pJIURTUcLycDH1+3F4ePyz8CKuPXaIim6OdjG3Wds653z+hosOARTKbKbaHWnVpR/tewyKRUU79dzigsB2H8sm5lqOV35njmxDeWDHEsltzOnPO2bUnLZ7dxLTMobymbUfRXn9Y7EfGbtbxeXhsYfwhITHDtHv+BFwdzkZWbmxY7+lHU6Ibac7P14dx1qZh9AdI7OR2pSpdkce0V/BV5noJe1M6p1qp/GE7wUuiVzLjCYn79A4KzI78qE1xOltNwfTNe0+hOuMyylo3ZYxKU4J2vqCDT08/ol4QsJjp1EUQQVbVzUBZIgacqmImQis9Oa8ZQ6lqShBsUKxdna0QYOV67ZN0CjFh8m+oacobbrfjl28g5zUuwVTbjuE7i0y0aJe4NtR0c7D45+AJyQ8dpplTY7kg4zzt9mut7KEwepchB0BQNgmueL/27v3KDur+ozj3+ecM5dcyYWQxIRriZWoBHQgoFCiJpAiC1hURZRlapEsbxXEJYVS5VYVEUu19UaB1WhdlmKxRFYthgBWLWCCBBJQTFBirgRzJSSZZOb8+sd5z8xJfE8mZ85k3smZ57PWWfO+e+95Z+/kzPzOu/e79y4ts62KBfn+oNJdSnkBwAUtn+aU9en7SVRz1EsPc1/LDaVB78L+u8HqJYlxI0qr3J67Y34psbjnoP5Ms/7ie2Kr2yXveR8dxWLPBRPl8Ydhm57jhqbSgoGVj8Be33I1o7c+y3taS/tYjNUrDOnYVlOdcuVHYAv3MnT7nwL987TRkOQJr2JnZ7/8PLODzXcSVrfmQo6hzQf+eaMrIOQqH1PtPt6SH8PDxTfRXhiZmn8gInmi6eLCowzZ/vseSvedX7dOA+DV4Uf2UNLs0OAgYf1ma5QGrMuf8ivvHlTo3pTog+3f5cXW9/HiYafwzvby9q61DUpUDlZXdmUdbOUJgB3hm3RrDA4S1m/u6jgXqPgDXl46Y/eVFEd0r9Ayo/PnALREO89Fsu1oL2dcl/Tf23x0cSMAhZ1eQcYag4OE9ZuVcQQ/6Tyx6w4il2wiIfaeFB3J23Jc+yo+kF/AouJr2Taktu6bTWPbuveTyB3sGdfd3jDj3axnHFOnpq81ZXaocZCwfnNS7gWO1bquT/nFYeN5sjiF25q+SX5H905u5fVXJr26lBub5nHVno+wfPzsmn5W+/DJPFA8HTj48yQqHT/tDCbcsILDxnq2tTUGBwnrNzmKDFf3+k7FIWO5p3MGw7WLXLF786DoeluWZ2RHzftUt+7eTIFOTtn1NV4ZX3U7EjPrgYOE9Zs5hQWMUffmQip2cLRKdxCVYwgv5w4Hujcf+knLVbxx7b01/ayxGxfxb81fYKxeIZf3xDaz3vIjGNZvdkUTreqeZNb8yko+VihNPqvsErp92JUUN/yGOa3dcy+ai7WtMFvez+Ezhe/Qsv0tlPawMrNa+U7C+s3Lly5k0Yk3dZ2rYnXWyu1Jt+VH80ScwO58xUZCNXY3lYPOW/PP0rLTW6Sb9ZaDhPWbI6dM45SLrug6r7x7iEL31qOX7PweL7a+jw1Dj++eJ1HrI7D59Il6ZlYb//ZYZspB4lO7P4yGdq8qO333EwC0FHeyKsaVS9d48e67lFoHvc2sm4OEZUZdM6/33lYokuAxdtdKLiv8N48XT2DbsKNruvaOsW+smCdxcDcdMmtkdQcJSWMkLZC0PPk6ukq5OUmZ5ZLmVKS/WdJSSSskfTXZ7xpJJ0l6XNISSYslnVpvXW1giSGjeap4PLc1fYtce/cCfu1nXssrMYQJI1u5ovADbt5zKWvH/VlN1+4ccjiPFE8CfCdhVo++uJO4BlgYEVOAhcn5XiSNAa4HpgOnAtdXBJNvAJcDU5JXedbUrcCNEXES8Nnk3BqIWkYwv7M04S1H95NMbzzrIkbcuJ7CsFFJXnTNzj5Qze2bEHDyrm/SPs6zn816qy+CxAXAvOR4HnBhSplzgAURsSkiNgMLgNmSJgIjI+LxiAjg2xXfH0B5GdDDgLV9UFcbQFTcw1StTE7+uEuoPGbxw5a/Y8rq+2q69vBty7mz+cu8Lreq5iejzKxbX8yTGB8R65Lj9aTv/j4JqNyfcnWSNik53jcd4ErgQUm3UQpmb0n74ZLmAnMBjjrqqN61wDJR2LmRdxf+F0hfX6ny6adc1Lg/QzIOcUvhX2h/9XxKnzPMrFYHdCch6SFJy1JeF1SWS+4GosplavUR4JMRcSTwSeCutEIRcUdEtEVE27hx49KK2AC113LeKZ/2VWW/iQNRXo786NwGmvZs7V0FzezAgkREzIyIN6S87gdeSrqNSL6mzVxaA1Qu4zk5SVuTHO+bDjAHKPcx3EtpLMMaSUUQSFs6Y9v46byz/XNAL/aEqHyiyfMkzHqtL3575lP6g07y9f6UMg8CZ0sanQxYnw08mHRTbZN0WvJU0wcqvn8tcFZy/HZgeR/U1QaQ8izrz+z5S9Q85I/yVWhhc4won9V27Sqzuc2sNn0RJG4BZklaDsxMzpHUJulOgIjYBNwMLEpeNyVpAB8F7gRWAC8AP0rSLwe+LOlp4PMk4w7WOMrzF0R07XtdqXX7aj5auJ//65zK9hHH1nTtPaOm8J2OmeUfVHddzQarugeuI2Ij8I6U9MXAhyrO7wburlLuDSnpPwPeXG/9bOBSy3CWFI/jpqZ57Or8AjBsr/zWHWu5tLCQS3Zfx1+Mre2tEC3Deaw4lYvipyjvyXRmveWPWJYZFVr5cWdb6Tht4Dpf3k+iSK2byzXt2UoTHcxq/xIdo/6k7rqaDVYOEpYZ0cGpueeBvccQuvKTbqLvNn+BI1c/UNO1m19dz1eav8603AsekzCrg4OEZUZ7djIj/3TpuIdHYGtdWiOXdDH9c9NXKezcWEctzQY3BwnLTK7yEdjUO4l8ZeGarl0eFM8ryHXs6F0FzcxBwrJTGRjS7hR2jTuR89r/PsnvXZAoHbu7yay3HCQsM+XA8MU9702dLJfLF9hNeZJdbW/V/F4ByG9zs97yb49lpms/iSoruTTtWM8nCvfx887Xs3NEbftJdA6f2DVPoubZ2mbWxb89lhnlm1lWPIarm+5JzW9q38J5+Sf4ducsto+eWtO1m1qG8GTxtWyIUalLfpjZgXGQsMzkcjkeLU6jI9LfhuU7gOHsQtS2Cmwzexiqdubs/hti2BF119VssHKQsMwIeFtuCQUVU/NzyVjCl5u/yfh1P6np2i3q4PNNd3Fm7hnvTGdWBwcJy0xO8Prcyv0U6P0jsM2tQwH426bvkdu9rYfSZlaNg4RlpqcB5cotS2udNV0odI9D5IodtVXMzLo4SNiA1Tn6eC5svwmAqHmeROVEPXc3mfWWg4RlqjPEP3VcmJqXk8hRGq+oa65Dyv7ZZnZgHCQsU0VyVedJ5Hdt5JOF7/NY51TaR9a+f/m8jlmAZ1yb1cNBwjL1QryGjxfSNjOEfOdOzswv477iGbTXuOkQwLI4lt8WJ3jGtVkd/NtjmXqsOJVtMTQ1rzyuMI4t5Iu7e3X9WzouIdc6stf1Mxvs6goSksZIWiBpefJ1dJVyc5IyyyXNqUj/nKRVkrbvU75F0j2SVkh6QtIx9dTTBq5z8osYqfRVWsurwF7d9B+M/MMva772ZfkfcVH+Z3iahFnv1XsncQ2wMCKmAAuT871IGgNcD0wHTgWurwgmP0zS9nUZsDkijgduB75YZz1tgHqNNlXNy1V0E/Wmy+h1uVXMzi8i19m7uxAzqz9IXADMS47nARemlDkHWBARmyJiM7AAmA0QEY9HxLoervt94B3ytNnBJ9/7yXSVpPSBcTPrWb1BYnzFH/n1wPiUMpOAVRXnq5O0/en6nojoALYCY9MKSporabGkxS+//HItdbcBTsPGcenua4G97ypqvo4fgTXrtUJPBSQ9BExIybqu8iQiQhl8ZIuIO4A7ANra2vyR8RCzNYZyX+eZfDAlr3KeRD13EjkvFW7Waz0GiYiYWS1P0kuSJkbEOkkTgQ0pxdYAMyrOJwOP9vBj1wBHAqslFYDDAG9U3ICa6GQo7al5uT07+FThXh4vnsCwEZNrvvbdHbP5q8L/+BFYszrU+9szHyg/rTQHSHvg/UHgbEmjkwHrs5O0A73uu4CHI8J3CQ3odzGBiwuPpuaJTqblfsuCzjfTOSztZnb/fhOTWVo8xstymNWh3iBxCzBL0nJgZnKOpDZJdwJExCbgZmBR8ropSUPSrZJWA0MlrZZ0Q3Ldu4CxklYAV5Hy1JQ1hqXFY1kfqU9Od3UTHat15Ivpdxv7szFG8kDn6Xvtd21mtemxu2l/ImIj8I6U9MXAhyrO7wbuTil3NXB1Svou4N311M0ODefnH2OoqnQ3JUHi0sJCVmxZDkenPRdR3dtyTzEz/1TddTQbzOoKEmb1qhYgAHJ73QHU3mV0cf5R8n781awuHtGzAatyue/edBk5QJjVz0HCBqxcUysf3n1l6bgXg8+L225jafPJfVwrs8HF3U2WqbUxhp92nsjFKXl7zZPoxYS4tvMuh/Mur6+CZoOc7yQsUyPYyeHampqXz4m/LvwXzxaPpjjsiH6umZmBg4Rl7HcxgdNzz1XNn6BNLC6+lhgyph9rZWZlDhKWqRdjAuuiegBoooNTc8+T68U8CTOrn8ckLFPn5x/bb/5w7eIE/Z5V29dSZY1HMzuIfCdhhwQv0meWDf/m2SHBy32bZcNBwga0T++ZWzrwnlNmmXCQsEwtL07igc7pPZZzd5NZNjxwbZk6Qpt5lZaq+dNyvy0dDE1fKdbMDi5/PLNMrYzxHKEtVfM7cq28Gi2oeXj/VcrMujhIWKY2xCg2xciq+SNzuximdmLPrn6slZmVubvJMtXTfg/TWQpAx+bVMHZUP9TIzCrVdSchaYykBZKWJ19TO44lzUnKLJc0pyL9c5JWSdq+T/mrJD0n6RlJCyUdXU897dC1dtonABh1xKSMa2I2ONXb3XQNsDAipgALSdlmVNIY4HpgOnAqcH1FMPlhkravp4C2iDgR+D5wa531tEPUKRd+HG7YyvCRHrg2y0K9QeICYF5yPA+4MKXMOcCCiNgUEZuBBcBsgIh4PCLW7fsNEfFIROxITh8HJtdZTzMz64V6xyTGV/yRXw+kbUI8CVhVcb46STtQlwE/qpYpaS4wF+Coo46q4bI2ECwpHseWGMGMrCtiZql6DBKSHgImpGRdV3kSESH17X6Rki4F2oCzqpWJiDuAOwDa2tq8X+Uh5hi9xDZeyboaZlZFj0EiImZWy5P0kqSJEbFO0kRgQ0qxNbDXB8XJwKM9/VxJMykForMiwutEN6iVMZ4mOrOuhplVUe+YxHyg/LTSHOD+lDIPAmdLGp0MWJ+dpFUl6WTgW8D5EZEWeKxBvBqtvMKQrKthZlXUGyRuAWZJWg7MTM6R1CbpToCI2ATcDCxKXjclaUi6VdJqYKik1ZJuSK77JWA4cK+kJZLm11lPG6Dekn+O6blfZ10NM6tCEY3Tjd/W1haLFy/OuhpWixsOS76m73NtZgefpCcjoi0tzzOuLVNPvfXroBwnZ10RM0vlIGGZOnnW+7Ougpnthxf4MzOzqhwkzMysKgcJMzOrykHCzMyqcpAwM7OqHCTMzKwqBwkzM6vKQcLMzKpqqGU5JL0MrOzltx8O/KEPqzPQDab2Dqa2gtvbyA5WW4+OiHFpGQ0VJOohaXG1tUsa0WBq72BqK7i9jSyLtrq7yczMqnKQMDOzqhwkut2RdQX62WBq72BqK7i9jazf2+oxCTMzq8p3EmZmVpWDhJmZVeUgAUiaLel5SSskXZN1ffqCpLslbZC0rCJtjKQFkpYnX0cn6ZL01aT9z0h6U3Y1r52kIyU9Iuk5Sc9KuiJJb7j2SmqV9AtJTydtvTFJP1bSE0mb7pHUnKS3JOcrkvxjMm1AL0nKS3pK0gPJeUO2V9KLkpZKWiJpcZKW6ft40AcJSXnga8CfA1OBSyRNzbZWfeJfgdn7pF0DLIyIKcDC5BxKbZ+SvOYC3+inOvaVDuBTETEVOA34WPJ/2IjtbQfeHhHTgJOA2ZJOA74I3B4RxwObgcuS8pcBm5P025Nyh6IrgF9VnDdye98WESdVzIfI9n0cEYP6BZwOPFhxfi1wbdb16qO2HQMsqzh/HpiYHE8Enk+OvwVcklbuUHwB9wOzGr29wFDgl8B0SrNwC0l613saeBA4PTkuJOWUdd1rbOdkSn8c3w48AKhR2wu8CBy+T1qm7+NBfycBTAJWVZyvTtIa0fiIWJccrwfGJ8cN82+QdC+cDDxBg7Y36XpZAmwAFgAvAFsioiMpUtmerrYm+VuBsf1a4fr9I3A1UEzOx9K47Q3gx5KelDQ3Scv0fVzo6wvaoSEiQlJDPf8saTjwn8CVEbFNUldeI7U3IjqBkySNAn4AvC7bGh08ks4DNkTEk5JmZFyd/nBGRKyRdASwQNKvKzOzeB/7TgLWAEdWnE9O0hrRS5ImAiRfNyTph/y/gaQmSgHiuxFxX5LcsO0FiIgtwCOUultGSSp/6KtsT1dbk/zDgI39W9O6vBU4X9KLwL9T6nL6Cg3a3ohYk3zdQOkDwKlk/D52kIBFwJTkaYlm4L3A/IzrdLDMB+Ykx3Mo9d2X0z+QPC1xGrC14vZ2wFPpluEu4FcR8Q8VWQ3XXknjkjsIJA2hNPbyK0rB4l1JsX3bWv43eBfwcCQd2IeCiLg2IiZHxDGUfjcfjoj304DtlTRM0ojyMXA2sIys38dZD9QMhBdwLvAbSn2712Vdnz5q0/eAdcAeSn2Vl1Hqm10ILAceAsYkZUXpCa8XgKVAW9b1r7GtZ1Dqy30GWJK8zm3E9gInAk8lbV0GfDZJPw74BbACuBdoSdJbk/MVSf5xWbehjrbPAB5o1PYmbXo6eT1b/luU9fvYy3KYmVlV7m4yM7OqHCTMzKwqBwkzM6vKQcLMzKpykDAzs6ocJMzMrCoHCTMzq+r/AUq8vvIhYqqmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(out_iwindow_c)\n", + "plt.plot(frame, '--')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/autotiler/Mnist/CMakeLists.txt b/examples/autotiler/Mnist/CMakeLists.txt new file mode 100644 index 000000000..6be652789 --- /dev/null +++ b/examples/autotiler/Mnist/CMakeLists.txt @@ -0,0 +1,99 @@ +cmake_minimum_required(VERSION 3.16) +include(${CONFIG_GAP_SDK_HOME}/utils/cmake/macros.cmake) +# set(CMAKE_VERBOSE_MAKEFILE ON) + +setupcrosscompile() + +set(TARGET_NAME "Mnist") +project(${TARGET_NAME} C ASM) + +set(GWT_PMSIS_BSP ${CONFIG_GAP_SDK_HOME}/rtos/pmsis/pmsis_bsp) + +#=================================================================================================== +# Paths +#=================================================================================================== +if (NOT DEFINED TILER_PATH) + if (NOT DEFINED ENV{TILER_PATH}) + set(TILER_PATH $ENV{TILER_PATH}) + else() + set(TILER_PATH ${CONFIG_GAP_SDK_HOME}/tools/autotiler_v3) + endif() +endif() + +if (NOT DEFINED TILER_LIB) + if (NOT DEFINED ENV{TILER_LIB}) + set(TILER_LIB $ENV{TILER_LIB}) + else() + set(TILER_LIB ${CONFIG_GAP_SDK_HOME}/tools/autotiler_v3/Autotiler/LibTile.a) + endif() +endif() + +if (NOT DEFINED TILER_EMU_INC) + if (NOT DEFINED ENV{TILER_EMU_INC}) + set(TILER_EMU_INC $ENV{TILER_EMU_INC}) + else() + set(TILER_EMU_INC ${CONFIG_GAP_SDK_HOME}/tools/autotiler_v3/Emulation) + endif() +endif() + +if (NOT DEFINED TILER_INC) + if (NOT DEFINED ENV{TILER_INC}) + set(TILER_INC $ENV{TILER_INC}) + else() + set(TILER_INC ${CONFIG_GAP_SDK_HOME}/tools/autotiler_v3/Autotiler) + endif() +endif() + +#=================================================================================================== +# Options +#=================================================================================================== +set(MODEL_POW2 1) + +#=================================================================================================== +# Mnist +# - build steps: +# [1] Build code generator GenMinst +# [2] Run GenMinst on host to generate target sources (gen_kernels) +# [3] Build target application Mnist +#=================================================================================================== +add_executable( + ${TARGET_NAME} + $ + Mnist.c + ${CMAKE_CURRENT_BINARY_DIR}/MnistKernels.c + ImgIO.c + ) + +target_compile_options(${TARGET_NAME} PRIVATE -fcommon -w -O3 -mno-memcpy -fno-tree-loop-distribute-patterns -fdata-sections -ffunction-sections -Wno-maybe-uninitialized -Wno-unused-but-set-variable) +target_link_options(${TARGET_NAME} PRIVATE -flto -Wl,--gc-sections) + +setupos(${TARGET_NAME}) + +add_subdirectory(${TILER_PATH} ${CMAKE_CURRENT_BINARY_DIR}/cnn) + +target_link_libraries(${TARGET_NAME} PRIVATE cnn_lib) + +target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) +target_include_directories(${TARGET_NAME} PRIVATE ${GWT_PMSIS_BSP}/include) + +#=================================================================================================== +# GenMnist +# - custom command execution as it requires host compiler and is difficult +# to use two toolchains within the same cmake project +#=================================================================================================== +add_custom_target( + GenMnist + COMMAND gcc -o GenMnist -fcommon -I${TILER_INC} -I${TILER_EMU_INC} ${CNN_GEN_INCLUDE} ${CMAKE_CURRENT_SOURCE_DIR}/MnistModel.c ${CNN_GEN} ${TILER_LIB} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/MnistModel.c ${CNN_GEN} ${TILER_LIB} + VERBATIM + ) + +add_custom_target( + gen_kernels + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/GenMnist + DEPENDS GenMnist + BYPRODUCTS MnistKernels.c + VERBATIM + ) + +add_dependencies(${TARGET_NAME} gen_kernels) diff --git a/examples/autotiler/Mnist/GenMnist b/examples/autotiler/Mnist/GenMnist new file mode 100755 index 000000000..172bf3b0e Binary files /dev/null and b/examples/autotiler/Mnist/GenMnist differ diff --git a/examples/autotiler/Mnist/MnistKernels.c b/examples/autotiler/Mnist/MnistKernels.c new file mode 100644 index 000000000..13f3b0677 --- /dev/null +++ b/examples/autotiler/Mnist/MnistKernels.c @@ -0,0 +1,404 @@ +#include "MnistKernels.h" +L1_CL_MEM AT_L1_POINTER Mnist_L1_Memory; +L2_MEM AT_L2_POINTER Mnist_L2_Memory; +static AT_HYPERFLASH_FS_T HyperFlash; +void Conv5x5ReLUMaxPool2x2_0( + short int * __restrict__ In, + short int * __restrict__ Filter, + short int * __restrict__ Bias, + short int * __restrict__ Out) + +{ + /* Shared L1: 40768 bytes, L2 buffer: 0 bytes */ + /* Local variables used by this kernel */ + AT_L2_EVENT DmaR_Evt1; + AT_L2_EVENT DmaR_Evt2; + AT_L2_EVENT DmaR_Evt3; + AT_L2_EVENT DmaW_Evt1; + KerSetBias_fp_T S_KerArg0, *KerArg0 = &S_KerArg0; + KerConv_fp_T S_KerArg1, *KerArg1 = &S_KerArg1; + KerReLUPool_fp_T S_KerArg2, *KerArg2 = &S_KerArg2; + + /* Iteration space related variables */ + int D1Ind, D1Ind_Last; + int T0Ind, T0Ind_Total=0, T0Ind_Last, T0Ind_NextLast; + int D0Ind, D0Ind_Last; + /* User kernel arguments related variables */ + unsigned int _C_Out; + unsigned int _SP_Out, _SC_Out; + unsigned int _LP_Out, _LC_Out; + unsigned int _N_In; + unsigned int _SN_In; + /*============================= Ker Arg Iter Spaces ========================================= + User Kernel Iteration Space: + [D1 Dim: Init: 32, Tiled: 1][Tile0 Dim: 2][D0 Dim: Init: 1, Tiled: 1] + Ker Arg: Out, Tiled Space: Tile0 + Min Pipe Depth: -1, Max Pipe Depth: 0 + KerArgItSpace: 2 logical tiles, 2 physical tiles + Total Size: 9216 [D1, [0 x 9216, 9216]][Tile0, 2:[12x8, 12x4], 2] + KerArgItSpace (User Kernel Iter Order): + [D1, [0 x 9216, 9216]][Tile0, 2:[12x8, 12x4], 2] + Tile0: [0, 6144, 192], Tile1: [192, 3072, 96], Tile2; [0, 6144, 192] + Ker Arg: Bias, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 64 [D1, [0 x 64, 64]] + KerArgItSpace (User Kernel Iter Order): + [D1, [0 x 64, 64]] + Tile0: [0, 64, 64], Tile1: [0, 64, 64], Tile2; [0, 64, 64] + Ker Arg: Filter, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 1600 [D1, [0 x 1600, 1600]][D0, [0 x 1600, 1600]] + KerArgItSpace (User Kernel Iter Order): + [D1, [0 x 1600, 1600]][D0, [0 x 1600, 1600]] + Tile0: [0, 1600, 1600], Tile1: [0, 1600, 1600], Tile2; [0, 1600, 1600] + Ker Arg: In, Tiled Space: Tile0 + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 2 logical tiles, 2 physical tiles + Total Size: 1568 [D0, [0 x 1568, 1568]][Tile0, 2:[28x20, 28x12], 2] + KerArgItSpace (User Kernel Iter Order): + [Tile0, 2:[28x20], 2][D0, [0 x 1568, 1568]] + Tile0: [0, 1120, 1120], Tile1: [896, 672, 672], Tile2; [0, 1120, 1120] + Ker Arg: ConvOut, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 2 logical tiles, 1 physical tiles + Total Size: 36864 [D1, [0 x 36864, 36864]][Tile0, 2:[24x16, 24x8], 2] + KerArgItSpace (User Kernel Iter Order): + [D1, [0 x 36864, 36864]][Tile0, 2:[24x16, 24x8], 2] + Tile0: [0, 24576, 768], Tile1: [0, 24576, 768], Tile2; [0, 24576, 768] + ======================== End Ker Arg Iter Spaces =========================================*/ + /*=========================== Call Kernel, Invariant assignment =====================*/ + KerArg0->Out = (short int * __restrict__) (Mnist_L1_Memory+16192); + KerArg0->W = (unsigned short int) (24); + KerArg0->OutFeatures = (unsigned short int) (32); + KerArg0->Bias = (short int * __restrict__) (Mnist_L1_Memory+2240); + KerArg1->W = (unsigned short int) (28); + KerArg1->UsedW = (unsigned short int) (28); + KerArg1->InFeatures = (unsigned short int) (1); + KerArg1->OutFeatures = (unsigned short int) (32); + KerArg1->Filter = (short int * __restrict__) (Mnist_L1_Memory+2304); + KerArg1->Out = (short int * __restrict__) (Mnist_L1_Memory+16192); + KerArg1->Norm = (unsigned char) (14); + KerArg1->TotalInFeatures = (short int) (1); + KerArg1->Pad = (v4s) 0; + KerArg1->Orientation = (unsigned char) (1); + KerArg2->In = (short int * __restrict__) (Mnist_L1_Memory+16192); + KerArg2->W = (unsigned short int) (24); + KerArg2->UsedW = (unsigned short int) (24); + KerArg2->OutFeatures = (unsigned short int) (32); + KerArg2->Pad = (v4s) 0; + KerArg2->Orientation = (unsigned char) (1); + KerArg2->Oper = (unsigned char) (1); + KerArg2->LB = (int) (0); + KerArg2->UB = (int) (32767); + /*================================= Read Tiles Prolog ===============================*/ + _C_Out=0; _SC_Out=6144; _LC_Out=192; + _SP_Out=0; + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) Bias+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+2240), 64, 0, &DmaR_Evt1); + AT_L2_WAIT(0, &DmaR_Evt1); /* Wait previous DMA read Bias */ + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) Filter+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+2304), 1600, 0, &DmaR_Evt2); + AT_L2_WAIT(0, &DmaR_Evt2); /* Wait previous DMA read Filter */ + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) In+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+0+0), 1120, 0, &DmaR_Evt3); + _N_In=0; + /*============================= End Read Tiles Prolog ===============================*/ + { /* Single iteration on D1 */ + int D1Ind_Last = 1; + for (T0Ind=0; T0Ind<2; T0Ind++, T0Ind_Total++) { /* Iteration on Tile0 */ + int T0Ind_Last = (T0Ind==1), T0Ind_NextLast = ((T0Ind+1)==1); + /*================================= Prepare Tiles ===================================*/ + _SN_In = 0; + if (!(T0Ind_Last)) { + _N_In = _N_In + (896); _SN_In = (1*((1)?672:1120)); + } else if (!(1)) { + _N_In = _N_In + (-896); _SN_In = (1*(1120)); + } + /*============================= End Prepare Tiles ===================================*/ + /*================================= Read Tiles ======================================*/ + AT_L2_WAIT(0, &DmaR_Evt3); /* Wait previous DMA read In */ + if (_SN_In) { + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) In+_N_In), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+0+1120*((T0Ind_Total+1)%2)), + _SN_In, 0, &DmaR_Evt3); + } + /*============================= End Read Tiles ======================================*/ + /*====================== Call Kernel LOC_D0_PROLOG =========================*/ + KerArg0->H = (unsigned short int) (T0Ind_Last?8:16); + AT_FORK(gap_ncore(), (void *) KerParSetBias_fp, (void *) KerArg0); + __CALL(KerParSetBias_fp, KerArg0); + { /* Single iteration on D0 */ + int D0Ind_Last = 1; + /*====================== Call Kernel LOC_D0 =========================*/ + KerArg1->In = (short int * __restrict__) (Mnist_L1_Memory+0+1120*((T0Ind_Total)%2)); + KerArg1->H = (unsigned short int) (T0Ind_Last?12:20); + KerArg1->UsedH = (unsigned short int) (T0Ind_Last?12:20); + AT_FORK(gap_ncore(), (void *) KerParConv5x5Stride1_fp, (void *) KerArg1); + __CALL(KerParConv5x5Stride1_fp, KerArg1); + } /* End iteration on D0 */ + /*====================== Call Kernel LOC_D0_EPILOG =========================*/ + KerArg2->H = (unsigned short int) (T0Ind_Last?8:16); + KerArg2->UsedH = (unsigned short int) (T0Ind_Last?8:16); + KerArg2->Out = (short int * __restrict__) (Mnist_L1_Memory+3904+6144*((T0Ind_Total)%2)); + AT_FORK(gap_ncore(), (void *) KerParPool2x2Stride2_fp, (void *) KerArg2); + __CALL(KerParPool2x2Stride2_fp, KerArg2); + /*================================= Write Tiles =====================================*/ + if (_SP_Out) AT_L2_WAIT(0, &DmaW_Evt1); /* Wait previous DMA write Out */ + AT_L2_COPY2D(0, ((AT_L2_EXT_ADDR_TYPE) Out+_C_Out), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+3904+6144*((T0Ind_Total)%2)), + _SC_Out, 288, _LC_Out, 1, &DmaW_Evt1); + /*============================= End Write Tiles =====================================*/ + /*================================= Update Arg Pipeline =============================*/ + _SP_Out = _SC_Out;_LP_Out = _LC_Out; + /*============================= End Update Arg Pipeline =============================*/ + /*================================= Prepare Tiles ===================================*/ + _SC_Out = 0; + if (!(T0Ind_Last)) { + _C_Out = _C_Out + (192); _LC_Out = ((1)?96:192); _SC_Out = (32*_LC_Out); + } + /*============================= End Prepare Tiles ===================================*/ + } /* End iteration on Tile0 */ + } /* End iteration on D1 */ + /*================================ Write Tiles Epilog ===============================*/ + AT_L2_WAIT(0, &DmaW_Evt1); /* Wait previous DMA write Out */ + /*============================ End Write Tiles Epilog ===============================*/ +} +void Conv5x5ReLUMaxPool2x2_1( + short int * __restrict__ In, + short int * __restrict__ Filter, + short int * __restrict__ Bias, + short int * __restrict__ Out) + +{ + /* Shared L1: 38272 bytes, L2 buffer: 0 bytes */ + /* Local variables used by this kernel */ + AT_L2_EVENT DmaR_Evt1; + AT_L2_EVENT DmaR_Evt2; + AT_L2_EVENT DmaR_Evt3; + AT_L2_EVENT DmaW_Evt1; + KerSetBias_fp_T S_KerArg0, *KerArg0 = &S_KerArg0; + KerConv_fp_T S_KerArg1, *KerArg1 = &S_KerArg1; + KerReLUPool_fp_T S_KerArg2, *KerArg2 = &S_KerArg2; + + /* Iteration space related variables */ + int D1Ind, D1Ind_Last, D1Ind_NextLast; + int T0Ind, T0Ind_Last, T0Ind_NextLast; + int D0Ind, D0Ind_Total=0, D0Ind_Last, D0Ind_NextLast; + /* User kernel arguments related variables */ + unsigned int _N_In; + unsigned int _SN_In; + unsigned int _LN_In; + unsigned int _N_Filter; + unsigned int _SN_Filter; + unsigned int _LN_Filter; + /*============================= Ker Arg Iter Spaces ========================================= + User Kernel Iteration Space: + [D1 Dim: Init: 64, Tiled: 1][Tile0 Dim: 1][D0 Dim: Init: 32, Tiled: 8] + Ker Arg: In, Tiled Space: Tile0 + Min Pipe Depth: 0, Max Pipe Depth: 1 + KerArgItSpace: 8 logical tiles, 8 physical tiles + Total Size: 9216 [D0, [7 x 1152, 1152]][Tile0, 1:[12x12], 2] + KerArgItSpace (User Kernel Iter Order): + [Tile0, 1:[12x12, 6:12x12, 12x12], 2][D0, [7 x 1152, 1152]] + Tile0: [0, 1152, 288], Tile1: [1152, 1152, 288], Tile2; [2304, 1152, 288] + Ker Arg: Bias, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 128 [D1, [0 x 128, 128]] + KerArgItSpace (User Kernel Iter Order): + [D1, [0 x 128, 128]] + Tile0: [0, 128, 128], Tile1: [0, 128, 128], Tile2; [0, 128, 128] + Ker Arg: Filter, Tiled Space: D0 + Min Pipe Depth: 0, Max Pipe Depth: 1 + KerArgItSpace: 8 logical tiles, 8 physical tiles + Total Size: 102400 [D1, [0 x 102400, 102400]][D0, [7 x 12800, 12800]] + KerArgItSpace (User Kernel Iter Order): + [D1, [0 x 102400, 102400]][D0, [7 x 12800, 12800]] + Tile0: [0, 12800, 200], Tile1: [200, 12800, 200], Tile2; [400, 12800, 200] + Ker Arg: Out, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 2048 [D1, [0 x 2048, 2048]][Tile0, 1:[4x4], 2] + KerArgItSpace (User Kernel Iter Order): + [D1, [0 x 2048, 2048]][Tile0, 1:[4x4], 2] + Tile0: [0, 2048, 2048], Tile1: [0, 2048, 2048], Tile2; [0, 2048, 2048] + Ker Arg: ConvOut, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 8192 [D1, [0 x 8192, 8192]][Tile0, 1:[8x8], 2] + KerArgItSpace (User Kernel Iter Order): + [D1, [0 x 8192, 8192]][Tile0, 1:[8x8], 2] + Tile0: [0, 8192, 128], Tile1: [0, 8192, 128], Tile2; [0, 8192, 128] + ======================== End Ker Arg Iter Spaces =========================================*/ + /*=========================== Call Kernel, Invariant assignment =====================*/ + KerArg0->Out = (short int * __restrict__) (Mnist_L1_Memory+30080); + KerArg0->W = (unsigned short int) (8); + KerArg0->H = (unsigned short int) (8); + KerArg0->OutFeatures = (unsigned short int) (64); + KerArg0->Bias = (short int * __restrict__) (Mnist_L1_Memory+2304); + KerArg1->W = (unsigned short int) (12); + KerArg1->UsedW = (unsigned short int) (12); + KerArg1->H = (unsigned short int) (12); + KerArg1->UsedH = (unsigned short int) (12); + KerArg1->InFeatures = (unsigned short int) (4); + KerArg1->OutFeatures = (unsigned short int) (64); + KerArg1->Out = (short int * __restrict__) (Mnist_L1_Memory+30080); + KerArg1->Norm = (unsigned char) (14); + KerArg1->TotalInFeatures = (short int) (4); + KerArg1->Pad = (v4s) 0; + KerArg1->Orientation = (unsigned char) (1); + KerArg2->In = (short int * __restrict__) (Mnist_L1_Memory+30080); + KerArg2->W = (unsigned short int) (8); + KerArg2->UsedW = (unsigned short int) (8); + KerArg2->H = (unsigned short int) (8); + KerArg2->UsedH = (unsigned short int) (8); + KerArg2->OutFeatures = (unsigned short int) (64); + KerArg2->Out = (short int * __restrict__) (Mnist_L1_Memory+28032); + KerArg2->Pad = (v4s) 0; + KerArg2->Orientation = (unsigned char) (1); + KerArg2->Oper = (unsigned char) (1); + KerArg2->LB = (int) (0); + KerArg2->UB = (int) (32767); + /*================================= Read Tiles Prolog ===============================*/ + AT_L2_COPY2D(0, ((AT_L2_EXT_ADDR_TYPE) In+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+0+0), 1152, 288, 288, 0, &DmaR_Evt1); + _N_In=0; + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) Bias+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+2304), 128, 0, &DmaR_Evt2); + AT_L2_WAIT(0, &DmaR_Evt2); /* Wait previous DMA read Bias */ + AT_L2_COPY2D(0, ((AT_L2_EXT_ADDR_TYPE) Filter+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+2432+0), 12800, 1600, 200, 0, &DmaR_Evt3); + _N_Filter=0; + /*============================= End Read Tiles Prolog ===============================*/ + { /* Single iteration on D1 */ + int D1Ind_Last = 1, D1Ind_NextLast = 1; + { /* Single iteration on Tile0 */ + int T0Ind_Last = 1, T0Ind_NextLast = 1; + /*====================== Call Kernel LOC_D0_PROLOG =========================*/ + AT_FORK(gap_ncore(), (void *) KerParSetBias_fp, (void *) KerArg0); + __CALL(KerParSetBias_fp, KerArg0); + for (D0Ind=0; D0Ind<8; D0Ind++, D0Ind_Total++) { /* Iteration on D0 */ + int D0Ind_Last = (D0Ind==7), D0Ind_NextLast = ((D0Ind+1)==7); + /*================================= Prepare Tiles ===================================*/ + _SN_In = 0; + if (!(D0Ind_Last)) { + _N_In = _N_In + (1152); _LN_In = (288); _SN_In = (4*_LN_In); + } else if (!(1)) { + _N_In = _N_In + (-8064); _LN_In = (288); _SN_In = (4*_LN_In); + } + _SN_Filter = 0; + if (!(D0Ind_Last)) { + _N_Filter = _N_Filter + (200); _LN_Filter = (200); _SN_Filter = (64*_LN_Filter); + } else if (!((1))) { + _N_Filter = _N_Filter + (-1400); _LN_Filter = (200); _SN_Filter = (64*_LN_Filter); + } + /*============================= End Prepare Tiles ===================================*/ + /*================================= Read Tiles ======================================*/ + AT_L2_WAIT(0, &DmaR_Evt1); /* Wait previous DMA read In */ + if (_SN_In) { + AT_L2_COPY2D(0, ((AT_L2_EXT_ADDR_TYPE) In+_N_In), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+0+1152*((D0Ind_Total+1)%2)), + _SN_In, 288, _LN_In, 0, &DmaR_Evt1); + } + AT_L2_WAIT(0, &DmaR_Evt3); /* Wait previous DMA read Filter */ + if (_SN_Filter) { + AT_L2_COPY2D(0, ((AT_L2_EXT_ADDR_TYPE) Filter+_N_Filter), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+2432+12800*((D0Ind_Total+1)%2)), + _SN_Filter, 1600, _LN_Filter, 0, &DmaR_Evt3); + } + /*============================= End Read Tiles ======================================*/ + /*====================== Call Kernel LOC_D0 =========================*/ + KerArg1->In = (short int * __restrict__) (Mnist_L1_Memory+0+1152*((D0Ind_Total)%2)); + KerArg1->Filter = (short int * __restrict__) (Mnist_L1_Memory+2432+12800*((D0Ind_Total)%2)); + AT_FORK(gap_ncore(), (void *) KerParConv5x5Stride1_fp, (void *) KerArg1); + __CALL(KerParConv5x5Stride1_fp, KerArg1); + /*================================= Update Arg Pipeline =============================*/ + /*============================= End Update Arg Pipeline =============================*/ + } /* End iteration on D0 */ + /*====================== Call Kernel LOC_D0_EPILOG =========================*/ + AT_FORK(gap_ncore(), (void *) KerParPool2x2Stride2_fp, (void *) KerArg2); + __CALL(KerParPool2x2Stride2_fp, KerArg2); + } /* End iteration on Tile0 */ + } /* End iteration on D1 */ + /*================================ Write Tiles Epilog ===============================*/ + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) Out+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+28032), 2048, 1, &DmaW_Evt1); + AT_L2_WAIT(0, &DmaW_Evt1); /* Wait DMA write Out */ + /*============================ End Write Tiles Epilog ===============================*/ +} +void LinearLayerReLU_1( + short int * __restrict__ In, + short int * __restrict__ Filter, + short int * __restrict__ Bias, + short int * __restrict__ Out) + +{ + /* Shared L1: 22568 bytes, L2 buffer: 0 bytes */ + /* Local variables used by this kernel */ + AT_L2_EVENT DmaR_Evt1; + AT_L2_EVENT DmaR_Evt2; + AT_L2_EVENT DmaR_Evt3; + AT_L2_EVENT DmaW_Evt1; + KerLinearLayerReLU_fp_T S_KerArg0, *KerArg0 = &S_KerArg0; + + /* Iteration space related variables */ + int D0Ind, D0Ind_Last; + int T0Ind, T0Ind_Last; + /* User kernel arguments related variables */ + /*============================= Ker Arg Iter Spaces ========================================= + User Kernel Iteration Space: + [D0 Dim: Init: 10, Tiled: 1][Tile0 Dim: 1] + Ker Arg: In, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 2048 [Tile0, 1:[1x1], 2048] + KerArgItSpace (User Kernel Iter Order): + [Tile0, 1:[1x1], 2048] + Tile0: [0, 2048, 2048], Tile1: [0, 2048, 2048], Tile2; [0, 2048, 2048] + Ker Arg: Filter, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 20480 [D0, [0 x 20480, 20480]] + KerArgItSpace (User Kernel Iter Order): + [D0, [0 x 20480, 20480]] + Tile0: [0, 20480, 20480], Tile1: [0, 20480, 20480], Tile2; [0, 20480, 20480] + Ker Arg: Bias, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 20 [D0, [0 x 20, 20]] + KerArgItSpace (User Kernel Iter Order): + [D0, [0 x 20, 20]] + Tile0: [0, 20, 20], Tile1: [0, 20, 20], Tile2; [0, 20, 20] + Ker Arg: Out, Tiled Space: Buffer + Min Pipe Depth: 0, Max Pipe Depth: 0 + KerArgItSpace: 1 logical tiles, 1 physical tiles + Total Size: 20 [D0, [0 x 20, 20]] + KerArgItSpace (User Kernel Iter Order): + [D0, [0 x 20, 20]] + Tile0: [0, 20, 20], Tile1: [0, 20, 20], Tile2; [0, 20, 20] + ======================== End Ker Arg Iter Spaces =========================================*/ + /*=========================== Call Kernel, Invariant assignment =====================*/ + KerArg0->In = (short int * __restrict__) (Mnist_L1_Memory+0); + KerArg0->InSize = (unsigned short int) (1024); + KerArg0->TotalInSize = (unsigned short int) (1024); + KerArg0->OutSize = (unsigned short int) (10); + KerArg0->Filter = (short int * __restrict__) (Mnist_L1_Memory+2048); + KerArg0->Bias = (short int * __restrict__) (Mnist_L1_Memory+22528); + KerArg0->Out = (short int * __restrict__) (Mnist_L1_Memory+22548); + KerArg0->Norm = (unsigned char) (13); + KerArg0->NormBias = (signed char) (16); + KerArg0->LB = (int) (-32768); + KerArg0->UB = (int) (32767); + /*================================= Read Tiles Prolog ===============================*/ + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) In+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+0), 2048, 0, &DmaR_Evt1); + AT_L2_WAIT(0, &DmaR_Evt1); /* Wait previous DMA read In */ + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) Filter+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+2048), 20480, 0, &DmaR_Evt2); + AT_L2_WAIT(0, &DmaR_Evt2); /* Wait previous DMA read Filter */ + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) Bias+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+22528), 20, 0, &DmaR_Evt3); + AT_L2_WAIT(0, &DmaR_Evt3); /* Wait previous DMA read Bias */ + /*============================= End Read Tiles Prolog ===============================*/ + { /* Single iteration on D0 */ + int D0Ind_Last = 1; + { /* Single iteration on Tile0 */ + int T0Ind_Last = 1; + /*====================== Call Kernel LOC_LOOP =========================*/ + AT_FORK(gap_ncore(), (void *) KerParLinearLayerReLU_fp, (void *) KerArg0); + __CALL(KerParLinearLayerReLU_fp, KerArg0); + } /* End iteration on Tile0 */ + } /* End iteration on D0 */ + /*================================ Write Tiles Epilog ===============================*/ + AT_L2_COPY(0, ((AT_L2_EXT_ADDR_TYPE) Out+0), ((AT_L2_INT_ADDR_TYPE) Mnist_L1_Memory+22548), 20, 1, &DmaW_Evt1); + AT_L2_WAIT(0, &DmaW_Evt1); /* Wait DMA write Out */ + /*============================ End Write Tiles Epilog ===============================*/ +} diff --git a/examples/autotiler/Mnist/MnistKernels.h b/examples/autotiler/Mnist/MnistKernels.h new file mode 100644 index 000000000..12825d4e9 --- /dev/null +++ b/examples/autotiler/Mnist/MnistKernels.h @@ -0,0 +1,25 @@ +#ifndef __MNISTKERNEL_H__ +#define __MNISTKERNEL_H__ + +#include "AutoTilerLibTypes.h" +#include "CNN_BasicKernels.h" +#define _Mnist_L1_Memory_SIZE 40768 +#define _Mnist_L2_Memory_SIZE 0 +extern char *Mnist_L1_Memory; /* Size given for generation: 45000 bytes, used: 40768 bytes */ +extern char *Mnist_L2_Memory; /* Size used for generation: 0 bytes */ +extern void Conv5x5ReLUMaxPool2x2_0( + short int * __restrict__ In, + short int * __restrict__ Filter, + short int * __restrict__ Bias, + short int * __restrict__ Out); +extern void Conv5x5ReLUMaxPool2x2_1( + short int * __restrict__ In, + short int * __restrict__ Filter, + short int * __restrict__ Bias, + short int * __restrict__ Out); +extern void LinearLayerReLU_1( + short int * __restrict__ In, + short int * __restrict__ Filter, + short int * __restrict__ Bias, + short int * __restrict__ Out); +#endif diff --git a/examples/autotiler/Mnist/README.md b/examples/autotiler/Mnist/README.md index a2d7113d7..ea3f481e6 100644 --- a/examples/autotiler/Mnist/README.md +++ b/examples/autotiler/Mnist/README.md @@ -84,3 +84,12 @@ To execute the application on the specific image contained in RGB.img, just type ~~~~~sh make clean all run ~~~~~ + +## Compile with cmake build alternative (freertos only) + +~~~~~sh + mkdir CMBUILD + cd CMBUILD + cmake -DCONFIG_GAP_SDK_HOME=$GAP_SDK_HOME .. -DCMAKE_MODULE_PATH=$GAP_SDK_HOME/utils/cmake -DCONFIG_CHIP=GAP9 -DCONFIG_CHIP_VERSION=2 -DCONFIG_PMSIS_OS=freertos + cmake --build . +~~~~~ diff --git a/examples/autotiler/Mnist/test_img/0/10.pgm b/examples/autotiler/Mnist/test_img/0/10.pgm deleted file mode 100644 index ce86982a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/10.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1001.pgm b/examples/autotiler/Mnist/test_img/0/1001.pgm deleted file mode 100644 index acd0fdf3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1009.pgm b/examples/autotiler/Mnist/test_img/0/1009.pgm deleted file mode 100644 index 6ba3dc1af..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/101.pgm b/examples/autotiler/Mnist/test_img/0/101.pgm deleted file mode 100644 index 63a5bb4a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1034.pgm b/examples/autotiler/Mnist/test_img/0/1034.pgm deleted file mode 100644 index f3fc38d21..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1047.pgm b/examples/autotiler/Mnist/test_img/0/1047.pgm deleted file mode 100644 index 3d75e5231..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1061.pgm b/examples/autotiler/Mnist/test_img/0/1061.pgm deleted file mode 100644 index 2bccd33a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1084.pgm b/examples/autotiler/Mnist/test_img/0/1084.pgm deleted file mode 100644 index 6cb6549d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1094.pgm b/examples/autotiler/Mnist/test_img/0/1094.pgm deleted file mode 100644 index a7b8c5d89..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1121.pgm b/examples/autotiler/Mnist/test_img/0/1121.pgm deleted file mode 100644 index 2fe50fff5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1148.pgm b/examples/autotiler/Mnist/test_img/0/1148.pgm deleted file mode 100644 index 0fbad4345..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1154.pgm b/examples/autotiler/Mnist/test_img/0/1154.pgm deleted file mode 100644 index 176f4841e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1176.pgm b/examples/autotiler/Mnist/test_img/0/1176.pgm deleted file mode 100644 index 74c836a4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1188.pgm b/examples/autotiler/Mnist/test_img/0/1188.pgm deleted file mode 100644 index 61b170998..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1191.pgm b/examples/autotiler/Mnist/test_img/0/1191.pgm deleted file mode 100644 index 7f7a02ab1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1195.pgm b/examples/autotiler/Mnist/test_img/0/1195.pgm deleted file mode 100644 index 76965410e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1197.pgm b/examples/autotiler/Mnist/test_img/0/1197.pgm deleted file mode 100644 index 9bc36e896..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1203.pgm b/examples/autotiler/Mnist/test_img/0/1203.pgm deleted file mode 100644 index 4108fbc24..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1218.pgm b/examples/autotiler/Mnist/test_img/0/1218.pgm deleted file mode 100644 index 069c18be5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1220.pgm b/examples/autotiler/Mnist/test_img/0/1220.pgm deleted file mode 100644 index 36ebfc847..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1223.pgm b/examples/autotiler/Mnist/test_img/0/1223.pgm deleted file mode 100644 index 606e98388..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1231.pgm b/examples/autotiler/Mnist/test_img/0/1231.pgm deleted file mode 100644 index d806c08e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1246.pgm b/examples/autotiler/Mnist/test_img/0/1246.pgm deleted file mode 100644 index 946bc25f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/126.pgm b/examples/autotiler/Mnist/test_img/0/126.pgm deleted file mode 100644 index 70a25e503..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1261.pgm b/examples/autotiler/Mnist/test_img/0/1261.pgm deleted file mode 100644 index deffc094c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1271.pgm b/examples/autotiler/Mnist/test_img/0/1271.pgm deleted file mode 100644 index dcd5ab827..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1273.pgm b/examples/autotiler/Mnist/test_img/0/1273.pgm deleted file mode 100644 index 5fa423f3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1288.pgm b/examples/autotiler/Mnist/test_img/0/1288.pgm deleted file mode 100644 index d83581433..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1294.pgm b/examples/autotiler/Mnist/test_img/0/1294.pgm deleted file mode 100644 index 9e5538730..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1297.pgm b/examples/autotiler/Mnist/test_img/0/1297.pgm deleted file mode 100644 index aa625fc1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/13.pgm b/examples/autotiler/Mnist/test_img/0/13.pgm deleted file mode 100644 index ad6215e9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/13.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1333.pgm b/examples/autotiler/Mnist/test_img/0/1333.pgm deleted file mode 100644 index 82ce2f4b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/136.pgm b/examples/autotiler/Mnist/test_img/0/136.pgm deleted file mode 100644 index c606a680f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1379.pgm b/examples/autotiler/Mnist/test_img/0/1379.pgm deleted file mode 100644 index e12bc4a0a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1390.pgm b/examples/autotiler/Mnist/test_img/0/1390.pgm deleted file mode 100644 index 95dec7978..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1399.pgm b/examples/autotiler/Mnist/test_img/0/1399.pgm deleted file mode 100644 index b549d5e40..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1404.pgm b/examples/autotiler/Mnist/test_img/0/1404.pgm deleted file mode 100644 index 378cbda60..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1408.pgm b/examples/autotiler/Mnist/test_img/0/1408.pgm deleted file mode 100644 index 366478491..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1411.pgm b/examples/autotiler/Mnist/test_img/0/1411.pgm deleted file mode 100644 index 2d024f028..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1416.pgm b/examples/autotiler/Mnist/test_img/0/1416.pgm deleted file mode 100644 index 5024b059d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1438.pgm b/examples/autotiler/Mnist/test_img/0/1438.pgm deleted file mode 100644 index e5b34bb6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1445.pgm b/examples/autotiler/Mnist/test_img/0/1445.pgm deleted file mode 100644 index e9636c16a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1454.pgm b/examples/autotiler/Mnist/test_img/0/1454.pgm deleted file mode 100644 index 4d90d104c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1457.pgm b/examples/autotiler/Mnist/test_img/0/1457.pgm deleted file mode 100644 index e20c24d26..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1468.pgm b/examples/autotiler/Mnist/test_img/0/1468.pgm deleted file mode 100644 index c5f27847b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/148.pgm b/examples/autotiler/Mnist/test_img/0/148.pgm deleted file mode 100644 index 2d552c637..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1487.pgm b/examples/autotiler/Mnist/test_img/0/1487.pgm deleted file mode 100644 index 92f276e12..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1504.pgm b/examples/autotiler/Mnist/test_img/0/1504.pgm deleted file mode 100644 index 7c17e5ad1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1517.pgm b/examples/autotiler/Mnist/test_img/0/1517.pgm deleted file mode 100644 index e95a1c69f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1526.pgm b/examples/autotiler/Mnist/test_img/0/1526.pgm deleted file mode 100644 index c03731af1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1533.pgm b/examples/autotiler/Mnist/test_img/0/1533.pgm deleted file mode 100644 index ac50cf462..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1534.pgm b/examples/autotiler/Mnist/test_img/0/1534.pgm deleted file mode 100644 index 6acc7b713..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1535.pgm b/examples/autotiler/Mnist/test_img/0/1535.pgm deleted file mode 100644 index 5cb71c764..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1558.pgm b/examples/autotiler/Mnist/test_img/0/1558.pgm deleted file mode 100644 index 48cfeea49..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1565.pgm b/examples/autotiler/Mnist/test_img/0/1565.pgm deleted file mode 100644 index 16fcd8b42..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/157.pgm b/examples/autotiler/Mnist/test_img/0/157.pgm deleted file mode 100644 index 9f97e8cf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1570.pgm b/examples/autotiler/Mnist/test_img/0/1570.pgm deleted file mode 100644 index 5690f396b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1589.pgm b/examples/autotiler/Mnist/test_img/0/1589.pgm deleted file mode 100644 index 291120e5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1590.pgm b/examples/autotiler/Mnist/test_img/0/1590.pgm deleted file mode 100644 index 4f11f1a3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1610.pgm b/examples/autotiler/Mnist/test_img/0/1610.pgm deleted file mode 100644 index 7cf501da7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1619.pgm b/examples/autotiler/Mnist/test_img/0/1619.pgm deleted file mode 100644 index 9b9b8f644..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1621.pgm b/examples/autotiler/Mnist/test_img/0/1621.pgm deleted file mode 100644 index 8acfb8c07..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1623.pgm b/examples/autotiler/Mnist/test_img/0/1623.pgm deleted file mode 100644 index f6f7df9a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1638.pgm b/examples/autotiler/Mnist/test_img/0/1638.pgm deleted file mode 100644 index 725d68bb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1650.pgm b/examples/autotiler/Mnist/test_img/0/1650.pgm deleted file mode 100644 index 5582aada7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1692.pgm b/examples/autotiler/Mnist/test_img/0/1692.pgm deleted file mode 100644 index 714dd4f2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1700.pgm b/examples/autotiler/Mnist/test_img/0/1700.pgm deleted file mode 100644 index 8d41f4179..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1708.pgm b/examples/autotiler/Mnist/test_img/0/1708.pgm deleted file mode 100644 index c3c80a362..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1712.pgm b/examples/autotiler/Mnist/test_img/0/1712.pgm deleted file mode 100644 index a7b088c3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1713.pgm b/examples/autotiler/Mnist/test_img/0/1713.pgm deleted file mode 100644 index 6faf1a4f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1723.pgm b/examples/autotiler/Mnist/test_img/0/1723.pgm deleted file mode 100644 index 4c971aed2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1726.pgm b/examples/autotiler/Mnist/test_img/0/1726.pgm deleted file mode 100644 index f83e04501..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1739.pgm b/examples/autotiler/Mnist/test_img/0/1739.pgm deleted file mode 100644 index 45fcbcaac..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1748.pgm b/examples/autotiler/Mnist/test_img/0/1748.pgm deleted file mode 100644 index 8617d7611..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1757.pgm b/examples/autotiler/Mnist/test_img/0/1757.pgm deleted file mode 100644 index 9c042ab92..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1762.pgm b/examples/autotiler/Mnist/test_img/0/1762.pgm deleted file mode 100644 index 0972a16ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1764.pgm b/examples/autotiler/Mnist/test_img/0/1764.pgm deleted file mode 100644 index 2472569dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1768.pgm b/examples/autotiler/Mnist/test_img/0/1768.pgm deleted file mode 100644 index 109134279..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1775.pgm b/examples/autotiler/Mnist/test_img/0/1775.pgm deleted file mode 100644 index e9a8b0403..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1777.pgm b/examples/autotiler/Mnist/test_img/0/1777.pgm deleted file mode 100644 index 9d430de14..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1794.pgm b/examples/autotiler/Mnist/test_img/0/1794.pgm deleted file mode 100644 index 72d039863..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1796.pgm b/examples/autotiler/Mnist/test_img/0/1796.pgm deleted file mode 100644 index e7177d7d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1807.pgm b/examples/autotiler/Mnist/test_img/0/1807.pgm deleted file mode 100644 index d0002992b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1808.pgm b/examples/autotiler/Mnist/test_img/0/1808.pgm deleted file mode 100644 index 80b24c0ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1826.pgm b/examples/autotiler/Mnist/test_img/0/1826.pgm deleted file mode 100644 index a152576fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/183.pgm b/examples/autotiler/Mnist/test_img/0/183.pgm deleted file mode 100644 index 4e8eb58cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1841.pgm b/examples/autotiler/Mnist/test_img/0/1841.pgm deleted file mode 100644 index 2046d38b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1843.pgm b/examples/autotiler/Mnist/test_img/0/1843.pgm deleted file mode 100644 index c02b0cd6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1870.pgm b/examples/autotiler/Mnist/test_img/0/1870.pgm deleted file mode 100644 index 0aae82bf4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/188.pgm b/examples/autotiler/Mnist/test_img/0/188.pgm deleted file mode 100644 index af3c74775..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1892.pgm b/examples/autotiler/Mnist/test_img/0/1892.pgm deleted file mode 100644 index ce4917f93..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1898.pgm b/examples/autotiler/Mnist/test_img/0/1898.pgm deleted file mode 100644 index 38c78e6a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1907.pgm b/examples/autotiler/Mnist/test_img/0/1907.pgm deleted file mode 100644 index 4229d7527..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1918.pgm b/examples/autotiler/Mnist/test_img/0/1918.pgm deleted file mode 100644 index 85c67aff9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/192.pgm b/examples/autotiler/Mnist/test_img/0/192.pgm deleted file mode 100644 index fbaa898a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/194.pgm b/examples/autotiler/Mnist/test_img/0/194.pgm deleted file mode 100644 index 89db27efb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1944.pgm b/examples/autotiler/Mnist/test_img/0/1944.pgm deleted file mode 100644 index d2a903f20..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1959.pgm b/examples/autotiler/Mnist/test_img/0/1959.pgm deleted file mode 100644 index 57b122887..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1972.pgm b/examples/autotiler/Mnist/test_img/0/1972.pgm deleted file mode 100644 index dbee0c7db..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1987.pgm b/examples/autotiler/Mnist/test_img/0/1987.pgm deleted file mode 100644 index 78707a1f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/1995.pgm b/examples/autotiler/Mnist/test_img/0/1995.pgm deleted file mode 100644 index 405787e11..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/1995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2023.pgm b/examples/autotiler/Mnist/test_img/0/2023.pgm deleted file mode 100644 index 3b80d4871..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2033.pgm b/examples/autotiler/Mnist/test_img/0/2033.pgm deleted file mode 100644 index e4907dba7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2042.pgm b/examples/autotiler/Mnist/test_img/0/2042.pgm deleted file mode 100644 index 832906d3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2060.pgm b/examples/autotiler/Mnist/test_img/0/2060.pgm deleted file mode 100644 index 7ab71e154..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2061.pgm b/examples/autotiler/Mnist/test_img/0/2061.pgm deleted file mode 100644 index 08441f0bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2067.pgm b/examples/autotiler/Mnist/test_img/0/2067.pgm deleted file mode 100644 index b371d8b9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2081.pgm b/examples/autotiler/Mnist/test_img/0/2081.pgm deleted file mode 100644 index dc0e3ca84..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2087.pgm b/examples/autotiler/Mnist/test_img/0/2087.pgm deleted file mode 100644 index 7efa53ea5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2096.pgm b/examples/autotiler/Mnist/test_img/0/2096.pgm deleted file mode 100644 index 550e3c712..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2106.pgm b/examples/autotiler/Mnist/test_img/0/2106.pgm deleted file mode 100644 index e04016149..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2127.pgm b/examples/autotiler/Mnist/test_img/0/2127.pgm deleted file mode 100644 index 453e4bc01..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/215.pgm b/examples/autotiler/Mnist/test_img/0/215.pgm deleted file mode 100644 index b2bd3130e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2155.pgm b/examples/autotiler/Mnist/test_img/0/2155.pgm deleted file mode 100644 index 4df06a94c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2178.pgm b/examples/autotiler/Mnist/test_img/0/2178.pgm deleted file mode 100644 index fa2c477b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2185.pgm b/examples/autotiler/Mnist/test_img/0/2185.pgm deleted file mode 100644 index 0f76b5565..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2188.pgm b/examples/autotiler/Mnist/test_img/0/2188.pgm deleted file mode 100644 index c6928229a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2190.pgm b/examples/autotiler/Mnist/test_img/0/2190.pgm deleted file mode 100644 index bcb36469e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2204.pgm b/examples/autotiler/Mnist/test_img/0/2204.pgm deleted file mode 100644 index a58d52c9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2209.pgm b/examples/autotiler/Mnist/test_img/0/2209.pgm deleted file mode 100644 index fb53a43e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2217.pgm b/examples/autotiler/Mnist/test_img/0/2217.pgm deleted file mode 100644 index f630dda42..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2226.pgm b/examples/autotiler/Mnist/test_img/0/2226.pgm deleted file mode 100644 index f4ff51872..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2236.pgm b/examples/autotiler/Mnist/test_img/0/2236.pgm deleted file mode 100644 index 2abbed60e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2294.pgm b/examples/autotiler/Mnist/test_img/0/2294.pgm deleted file mode 100644 index 0c61133c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2295.pgm b/examples/autotiler/Mnist/test_img/0/2295.pgm deleted file mode 100644 index 748a5baed..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2304.pgm b/examples/autotiler/Mnist/test_img/0/2304.pgm deleted file mode 100644 index 53d6311ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2318.pgm b/examples/autotiler/Mnist/test_img/0/2318.pgm deleted file mode 100644 index a92963f17..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2326.pgm b/examples/autotiler/Mnist/test_img/0/2326.pgm deleted file mode 100644 index df5f0f55a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2328.pgm b/examples/autotiler/Mnist/test_img/0/2328.pgm deleted file mode 100644 index d27fce15d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2329.pgm b/examples/autotiler/Mnist/test_img/0/2329.pgm deleted file mode 100644 index 00e9231dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2333.pgm b/examples/autotiler/Mnist/test_img/0/2333.pgm deleted file mode 100644 index 3b1b7177f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2370.pgm b/examples/autotiler/Mnist/test_img/0/2370.pgm deleted file mode 100644 index 0c90e684f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2376.pgm b/examples/autotiler/Mnist/test_img/0/2376.pgm deleted file mode 100644 index edf0fa6db..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2378.pgm b/examples/autotiler/Mnist/test_img/0/2378.pgm deleted file mode 100644 index c41c6395d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2384.pgm b/examples/autotiler/Mnist/test_img/0/2384.pgm deleted file mode 100644 index 261eb85e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2385.pgm b/examples/autotiler/Mnist/test_img/0/2385.pgm deleted file mode 100644 index d1848431c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2403.pgm b/examples/autotiler/Mnist/test_img/0/2403.pgm deleted file mode 100644 index 92ddbfc40..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2410.pgm b/examples/autotiler/Mnist/test_img/0/2410.pgm deleted file mode 100644 index 2e25bd99d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2417.pgm b/examples/autotiler/Mnist/test_img/0/2417.pgm deleted file mode 100644 index ce65400db..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2435.pgm b/examples/autotiler/Mnist/test_img/0/2435.pgm deleted file mode 100644 index a9227ccbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2449.pgm b/examples/autotiler/Mnist/test_img/0/2449.pgm deleted file mode 100644 index 5d0b230e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2455.pgm b/examples/autotiler/Mnist/test_img/0/2455.pgm deleted file mode 100644 index 4270e0895..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/246.pgm b/examples/autotiler/Mnist/test_img/0/246.pgm deleted file mode 100644 index ee0950020..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2461.pgm b/examples/autotiler/Mnist/test_img/0/2461.pgm deleted file mode 100644 index 2f7a3c52e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2479.pgm b/examples/autotiler/Mnist/test_img/0/2479.pgm deleted file mode 100644 index a615ab23c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2485.pgm b/examples/autotiler/Mnist/test_img/0/2485.pgm deleted file mode 100644 index 072fea239..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2492.pgm b/examples/autotiler/Mnist/test_img/0/2492.pgm deleted file mode 100644 index 3e957076b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/25.pgm b/examples/autotiler/Mnist/test_img/0/25.pgm deleted file mode 100644 index 20f1c2dd2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/25.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2506.pgm b/examples/autotiler/Mnist/test_img/0/2506.pgm deleted file mode 100644 index 22aede068..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2527.pgm b/examples/autotiler/Mnist/test_img/0/2527.pgm deleted file mode 100644 index 5f6f81bde..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2531.pgm b/examples/autotiler/Mnist/test_img/0/2531.pgm deleted file mode 100644 index 7c1bfaea5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2536.pgm b/examples/autotiler/Mnist/test_img/0/2536.pgm deleted file mode 100644 index 78a1b6e99..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2557.pgm b/examples/autotiler/Mnist/test_img/0/2557.pgm deleted file mode 100644 index 3e6917c78..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2568.pgm b/examples/autotiler/Mnist/test_img/0/2568.pgm deleted file mode 100644 index cff21085d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2571.pgm b/examples/autotiler/Mnist/test_img/0/2571.pgm deleted file mode 100644 index 31784a55f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2592.pgm b/examples/autotiler/Mnist/test_img/0/2592.pgm deleted file mode 100644 index ea3de3b31..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2593.pgm b/examples/autotiler/Mnist/test_img/0/2593.pgm deleted file mode 100644 index dc1e719ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2619.pgm b/examples/autotiler/Mnist/test_img/0/2619.pgm deleted file mode 100644 index f77d9b5dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2627.pgm b/examples/autotiler/Mnist/test_img/0/2627.pgm deleted file mode 100644 index e29ec25d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2631.pgm b/examples/autotiler/Mnist/test_img/0/2631.pgm deleted file mode 100644 index 5231adf64..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2638.pgm b/examples/autotiler/Mnist/test_img/0/2638.pgm deleted file mode 100644 index 445938668..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2641.pgm b/examples/autotiler/Mnist/test_img/0/2641.pgm deleted file mode 100644 index 040f6afef..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2649.pgm b/examples/autotiler/Mnist/test_img/0/2649.pgm deleted file mode 100644 index 87fceabed..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2656.pgm b/examples/autotiler/Mnist/test_img/0/2656.pgm deleted file mode 100644 index 2c58df9b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2657.pgm b/examples/autotiler/Mnist/test_img/0/2657.pgm deleted file mode 100644 index 8796cff03..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2660.pgm b/examples/autotiler/Mnist/test_img/0/2660.pgm deleted file mode 100644 index 63cb585b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2687.pgm b/examples/autotiler/Mnist/test_img/0/2687.pgm deleted file mode 100644 index f9392d398..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/269.pgm b/examples/autotiler/Mnist/test_img/0/269.pgm deleted file mode 100644 index ea00fc79d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2703.pgm b/examples/autotiler/Mnist/test_img/0/2703.pgm deleted file mode 100644 index 5b76156c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2707.pgm b/examples/autotiler/Mnist/test_img/0/2707.pgm deleted file mode 100644 index be7ced06d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/271.pgm b/examples/autotiler/Mnist/test_img/0/271.pgm deleted file mode 100644 index 21c53cdef..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2713.pgm b/examples/autotiler/Mnist/test_img/0/2713.pgm deleted file mode 100644 index 0c564e6e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2714.pgm b/examples/autotiler/Mnist/test_img/0/2714.pgm deleted file mode 100644 index 9b539897a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2717.pgm b/examples/autotiler/Mnist/test_img/0/2717.pgm deleted file mode 100644 index 1f0e31570..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2733.pgm b/examples/autotiler/Mnist/test_img/0/2733.pgm deleted file mode 100644 index 266ad7494..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2747.pgm b/examples/autotiler/Mnist/test_img/0/2747.pgm deleted file mode 100644 index 2ef67a83d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2748.pgm b/examples/autotiler/Mnist/test_img/0/2748.pgm deleted file mode 100644 index 93eb74156..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2761.pgm b/examples/autotiler/Mnist/test_img/0/2761.pgm deleted file mode 100644 index 7d00e6984..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2763.pgm b/examples/autotiler/Mnist/test_img/0/2763.pgm deleted file mode 100644 index 3ee9d7262..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2764.pgm b/examples/autotiler/Mnist/test_img/0/2764.pgm deleted file mode 100644 index 3d9f57905..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2765.pgm b/examples/autotiler/Mnist/test_img/0/2765.pgm deleted file mode 100644 index a4fe52864..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2777.pgm b/examples/autotiler/Mnist/test_img/0/2777.pgm deleted file mode 100644 index 884196e5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2779.pgm b/examples/autotiler/Mnist/test_img/0/2779.pgm deleted file mode 100644 index b45a43de1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2794.pgm b/examples/autotiler/Mnist/test_img/0/2794.pgm deleted file mode 100644 index 69107eb72..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/28.pgm b/examples/autotiler/Mnist/test_img/0/28.pgm deleted file mode 100644 index 0e71eeb81..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/28.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2811.pgm b/examples/autotiler/Mnist/test_img/0/2811.pgm deleted file mode 100644 index 252ef3281..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2817.pgm b/examples/autotiler/Mnist/test_img/0/2817.pgm deleted file mode 100644 index 263f677ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2821.pgm b/examples/autotiler/Mnist/test_img/0/2821.pgm deleted file mode 100644 index d1857f8ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2824.pgm b/examples/autotiler/Mnist/test_img/0/2824.pgm deleted file mode 100644 index 7749c97a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2842.pgm b/examples/autotiler/Mnist/test_img/0/2842.pgm deleted file mode 100644 index e05740f7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2873.pgm b/examples/autotiler/Mnist/test_img/0/2873.pgm deleted file mode 100644 index 9f3b618ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2894.pgm b/examples/autotiler/Mnist/test_img/0/2894.pgm deleted file mode 100644 index d46667af9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2899.pgm b/examples/autotiler/Mnist/test_img/0/2899.pgm deleted file mode 100644 index e1397209e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2932.pgm b/examples/autotiler/Mnist/test_img/0/2932.pgm deleted file mode 100644 index 1bb6c9580..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2937.pgm b/examples/autotiler/Mnist/test_img/0/2937.pgm deleted file mode 100644 index 6406510b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/294.pgm b/examples/autotiler/Mnist/test_img/0/294.pgm deleted file mode 100644 index 08e18faa6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2942.pgm b/examples/autotiler/Mnist/test_img/0/2942.pgm deleted file mode 100644 index 2e0b64e23..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2944.pgm b/examples/autotiler/Mnist/test_img/0/2944.pgm deleted file mode 100644 index d0056aa79..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2954.pgm b/examples/autotiler/Mnist/test_img/0/2954.pgm deleted file mode 100644 index 2bf677447..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/296.pgm b/examples/autotiler/Mnist/test_img/0/296.pgm deleted file mode 100644 index 306537ce1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2962.pgm b/examples/autotiler/Mnist/test_img/0/2962.pgm deleted file mode 100644 index a2d38f336..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/297.pgm b/examples/autotiler/Mnist/test_img/0/297.pgm deleted file mode 100644 index cefb0d099..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2972.pgm b/examples/autotiler/Mnist/test_img/0/2972.pgm deleted file mode 100644 index 82ab96f89..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2988.pgm b/examples/autotiler/Mnist/test_img/0/2988.pgm deleted file mode 100644 index ed49e6947..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2996.pgm b/examples/autotiler/Mnist/test_img/0/2996.pgm deleted file mode 100644 index e050dff17..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/2999.pgm b/examples/autotiler/Mnist/test_img/0/2999.pgm deleted file mode 100644 index 2edabb080..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/2999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3.pgm b/examples/autotiler/Mnist/test_img/0/3.pgm deleted file mode 100644 index fe5cdd333..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3013.pgm b/examples/autotiler/Mnist/test_img/0/3013.pgm deleted file mode 100644 index f8b435780..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3016.pgm b/examples/autotiler/Mnist/test_img/0/3016.pgm deleted file mode 100644 index a5a8ff010..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3020.pgm b/examples/autotiler/Mnist/test_img/0/3020.pgm deleted file mode 100644 index 06cd33250..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3032.pgm b/examples/autotiler/Mnist/test_img/0/3032.pgm deleted file mode 100644 index b40b6355e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3043.pgm b/examples/autotiler/Mnist/test_img/0/3043.pgm deleted file mode 100644 index b221a1dc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3044.pgm b/examples/autotiler/Mnist/test_img/0/3044.pgm deleted file mode 100644 index 79308fba7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/305.pgm b/examples/autotiler/Mnist/test_img/0/305.pgm deleted file mode 100644 index 59f3fb348..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3052.pgm b/examples/autotiler/Mnist/test_img/0/3052.pgm deleted file mode 100644 index 4d2b86f41..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3077.pgm b/examples/autotiler/Mnist/test_img/0/3077.pgm deleted file mode 100644 index d7156e56e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3087.pgm b/examples/autotiler/Mnist/test_img/0/3087.pgm deleted file mode 100644 index a098b85d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3090.pgm b/examples/autotiler/Mnist/test_img/0/3090.pgm deleted file mode 100644 index 8de4d87c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/311.pgm b/examples/autotiler/Mnist/test_img/0/311.pgm deleted file mode 100644 index cf6b5a281..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/312.pgm b/examples/autotiler/Mnist/test_img/0/312.pgm deleted file mode 100644 index c47d685fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3140.pgm b/examples/autotiler/Mnist/test_img/0/3140.pgm deleted file mode 100644 index e3db443ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3170.pgm b/examples/autotiler/Mnist/test_img/0/3170.pgm deleted file mode 100644 index 2973b00f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3178.pgm b/examples/autotiler/Mnist/test_img/0/3178.pgm deleted file mode 100644 index 5954b4792..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3179.pgm b/examples/autotiler/Mnist/test_img/0/3179.pgm deleted file mode 100644 index 701aae8aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3185.pgm b/examples/autotiler/Mnist/test_img/0/3185.pgm deleted file mode 100644 index b7eb50814..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3191.pgm b/examples/autotiler/Mnist/test_img/0/3191.pgm deleted file mode 100644 index aff725ae8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3210.pgm b/examples/autotiler/Mnist/test_img/0/3210.pgm deleted file mode 100644 index b201115db..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3215.pgm b/examples/autotiler/Mnist/test_img/0/3215.pgm deleted file mode 100644 index afea212ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3219.pgm b/examples/autotiler/Mnist/test_img/0/3219.pgm deleted file mode 100644 index 007ca7e50..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3226.pgm b/examples/autotiler/Mnist/test_img/0/3226.pgm deleted file mode 100644 index 69cced787..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/324.pgm b/examples/autotiler/Mnist/test_img/0/324.pgm deleted file mode 100644 index 6a95756f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3242.pgm b/examples/autotiler/Mnist/test_img/0/3242.pgm deleted file mode 100644 index 1397440c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3243.pgm b/examples/autotiler/Mnist/test_img/0/3243.pgm deleted file mode 100644 index 53c0409d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3251.pgm b/examples/autotiler/Mnist/test_img/0/3251.pgm deleted file mode 100644 index f28c956d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3265.pgm b/examples/autotiler/Mnist/test_img/0/3265.pgm deleted file mode 100644 index 75a4e8480..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3266.pgm b/examples/autotiler/Mnist/test_img/0/3266.pgm deleted file mode 100644 index 13102c4f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/327.pgm b/examples/autotiler/Mnist/test_img/0/327.pgm deleted file mode 100644 index c811dfdce..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3271.pgm b/examples/autotiler/Mnist/test_img/0/3271.pgm deleted file mode 100644 index 071228548..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3297.pgm b/examples/autotiler/Mnist/test_img/0/3297.pgm deleted file mode 100644 index 987acc29f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3305.pgm b/examples/autotiler/Mnist/test_img/0/3305.pgm deleted file mode 100644 index 76a669e18..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3306.pgm b/examples/autotiler/Mnist/test_img/0/3306.pgm deleted file mode 100644 index 0a46df9b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3310.pgm b/examples/autotiler/Mnist/test_img/0/3310.pgm deleted file mode 100644 index 56f16df31..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3315.pgm b/examples/autotiler/Mnist/test_img/0/3315.pgm deleted file mode 100644 index 2d1fd34e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3317.pgm b/examples/autotiler/Mnist/test_img/0/3317.pgm deleted file mode 100644 index 7f92ed3d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3322.pgm b/examples/autotiler/Mnist/test_img/0/3322.pgm deleted file mode 100644 index b075ea111..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3325.pgm b/examples/autotiler/Mnist/test_img/0/3325.pgm deleted file mode 100644 index b0a9b84f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3346.pgm b/examples/autotiler/Mnist/test_img/0/3346.pgm deleted file mode 100644 index 419609797..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3347.pgm b/examples/autotiler/Mnist/test_img/0/3347.pgm deleted file mode 100644 index b6fa07e94..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3358.pgm b/examples/autotiler/Mnist/test_img/0/3358.pgm deleted file mode 100644 index fd02a1205..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3359.pgm b/examples/autotiler/Mnist/test_img/0/3359.pgm deleted file mode 100644 index f7a0be7ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3368.pgm b/examples/autotiler/Mnist/test_img/0/3368.pgm deleted file mode 100644 index 7939ffbe8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3371.pgm b/examples/autotiler/Mnist/test_img/0/3371.pgm deleted file mode 100644 index b2ca020f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3401.pgm b/examples/autotiler/Mnist/test_img/0/3401.pgm deleted file mode 100644 index a0e6844b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3412.pgm b/examples/autotiler/Mnist/test_img/0/3412.pgm deleted file mode 100644 index cce477f9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3413.pgm b/examples/autotiler/Mnist/test_img/0/3413.pgm deleted file mode 100644 index 98caa807b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3417.pgm b/examples/autotiler/Mnist/test_img/0/3417.pgm deleted file mode 100644 index e9bc04acb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3439.pgm b/examples/autotiler/Mnist/test_img/0/3439.pgm deleted file mode 100644 index 0bda0f970..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3445.pgm b/examples/autotiler/Mnist/test_img/0/3445.pgm deleted file mode 100644 index d3d5bf661..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3446.pgm b/examples/autotiler/Mnist/test_img/0/3446.pgm deleted file mode 100644 index 391bb91be..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3450.pgm b/examples/autotiler/Mnist/test_img/0/3450.pgm deleted file mode 100644 index 6118ad420..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3458.pgm b/examples/autotiler/Mnist/test_img/0/3458.pgm deleted file mode 100644 index bdbdccdc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/346.pgm b/examples/autotiler/Mnist/test_img/0/346.pgm deleted file mode 100644 index 6008d5245..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3479.pgm b/examples/autotiler/Mnist/test_img/0/3479.pgm deleted file mode 100644 index 722a2f336..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3481.pgm b/examples/autotiler/Mnist/test_img/0/3481.pgm deleted file mode 100644 index 1f310f11a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3496.pgm b/examples/autotiler/Mnist/test_img/0/3496.pgm deleted file mode 100644 index cca11099d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3512.pgm b/examples/autotiler/Mnist/test_img/0/3512.pgm deleted file mode 100644 index 5943a8d28..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3536.pgm b/examples/autotiler/Mnist/test_img/0/3536.pgm deleted file mode 100644 index 7a70bcf33..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3540.pgm b/examples/autotiler/Mnist/test_img/0/3540.pgm deleted file mode 100644 index 5be0436ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3574.pgm b/examples/autotiler/Mnist/test_img/0/3574.pgm deleted file mode 100644 index 09b3dc318..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3581.pgm b/examples/autotiler/Mnist/test_img/0/3581.pgm deleted file mode 100644 index 021a1a07e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3584.pgm b/examples/autotiler/Mnist/test_img/0/3584.pgm deleted file mode 100644 index 13b611357..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3608.pgm b/examples/autotiler/Mnist/test_img/0/3608.pgm deleted file mode 100644 index e97f9a90c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3613.pgm b/examples/autotiler/Mnist/test_img/0/3613.pgm deleted file mode 100644 index 16b897bc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3624.pgm b/examples/autotiler/Mnist/test_img/0/3624.pgm deleted file mode 100644 index 3217d8c2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3634.pgm b/examples/autotiler/Mnist/test_img/0/3634.pgm deleted file mode 100644 index 380f3d0fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3640.pgm b/examples/autotiler/Mnist/test_img/0/3640.pgm deleted file mode 100644 index 4ef4d5a79..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3646.pgm b/examples/autotiler/Mnist/test_img/0/3646.pgm deleted file mode 100644 index 63a27c179..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/365.pgm b/examples/autotiler/Mnist/test_img/0/365.pgm deleted file mode 100644 index 89008773a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3650.pgm b/examples/autotiler/Mnist/test_img/0/3650.pgm deleted file mode 100644 index 8c2947005..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3660.pgm b/examples/autotiler/Mnist/test_img/0/3660.pgm deleted file mode 100644 index 813cf72eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3677.pgm b/examples/autotiler/Mnist/test_img/0/3677.pgm deleted file mode 100644 index 265e7e858..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3680.pgm b/examples/autotiler/Mnist/test_img/0/3680.pgm deleted file mode 100644 index 40477930c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3695.pgm b/examples/autotiler/Mnist/test_img/0/3695.pgm deleted file mode 100644 index 2d969fb2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3698.pgm b/examples/autotiler/Mnist/test_img/0/3698.pgm deleted file mode 100644 index 5e9a8e0c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3706.pgm b/examples/autotiler/Mnist/test_img/0/3706.pgm deleted file mode 100644 index b39a8dbe0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3710.pgm b/examples/autotiler/Mnist/test_img/0/3710.pgm deleted file mode 100644 index 17840bd35..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/372.pgm b/examples/autotiler/Mnist/test_img/0/372.pgm deleted file mode 100644 index 05d2e61d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3724.pgm b/examples/autotiler/Mnist/test_img/0/3724.pgm deleted file mode 100644 index 8f36be9c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3734.pgm b/examples/autotiler/Mnist/test_img/0/3734.pgm deleted file mode 100644 index b6e708274..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3735.pgm b/examples/autotiler/Mnist/test_img/0/3735.pgm deleted file mode 100644 index f6fc9d1d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3764.pgm b/examples/autotiler/Mnist/test_img/0/3764.pgm deleted file mode 100644 index 0bb21894c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3768.pgm b/examples/autotiler/Mnist/test_img/0/3768.pgm deleted file mode 100644 index 70f15ed09..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3774.pgm b/examples/autotiler/Mnist/test_img/0/3774.pgm deleted file mode 100644 index b30c8ef98..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3790.pgm b/examples/autotiler/Mnist/test_img/0/3790.pgm deleted file mode 100644 index 5add3ecfa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/380.pgm b/examples/autotiler/Mnist/test_img/0/380.pgm deleted file mode 100644 index 978084390..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3803.pgm b/examples/autotiler/Mnist/test_img/0/3803.pgm deleted file mode 100644 index b3bb87f9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3804.pgm b/examples/autotiler/Mnist/test_img/0/3804.pgm deleted file mode 100644 index 752833024..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3805.pgm b/examples/autotiler/Mnist/test_img/0/3805.pgm deleted file mode 100644 index ff98be79d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3818.pgm b/examples/autotiler/Mnist/test_img/0/3818.pgm deleted file mode 100644 index ebae26a80..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3830.pgm b/examples/autotiler/Mnist/test_img/0/3830.pgm deleted file mode 100644 index 2ee5e32cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3847.pgm b/examples/autotiler/Mnist/test_img/0/3847.pgm deleted file mode 100644 index 4d270f317..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3849.pgm b/examples/autotiler/Mnist/test_img/0/3849.pgm deleted file mode 100644 index cb7d390ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3864.pgm b/examples/autotiler/Mnist/test_img/0/3864.pgm deleted file mode 100644 index 057429426..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3867.pgm b/examples/autotiler/Mnist/test_img/0/3867.pgm deleted file mode 100644 index 76a4e6c35..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3870.pgm b/examples/autotiler/Mnist/test_img/0/3870.pgm deleted file mode 100644 index 6b15c8a74..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3883.pgm b/examples/autotiler/Mnist/test_img/0/3883.pgm deleted file mode 100644 index 3af52b417..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3895.pgm b/examples/autotiler/Mnist/test_img/0/3895.pgm deleted file mode 100644 index f4a264ac8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3903.pgm b/examples/autotiler/Mnist/test_img/0/3903.pgm deleted file mode 100644 index 14a9d850d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3911.pgm b/examples/autotiler/Mnist/test_img/0/3911.pgm deleted file mode 100644 index 682615720..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3940.pgm b/examples/autotiler/Mnist/test_img/0/3940.pgm deleted file mode 100644 index 163331060..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3942.pgm b/examples/autotiler/Mnist/test_img/0/3942.pgm deleted file mode 100644 index 0a0ad80ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3959.pgm b/examples/autotiler/Mnist/test_img/0/3959.pgm deleted file mode 100644 index d6d728c79..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3980.pgm b/examples/autotiler/Mnist/test_img/0/3980.pgm deleted file mode 100644 index 6845c5724..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3982.pgm b/examples/autotiler/Mnist/test_img/0/3982.pgm deleted file mode 100644 index 2f031fee5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/3989.pgm b/examples/autotiler/Mnist/test_img/0/3989.pgm deleted file mode 100644 index aca9e1c48..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/3989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4023.pgm b/examples/autotiler/Mnist/test_img/0/4023.pgm deleted file mode 100644 index 411564181..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4033.pgm b/examples/autotiler/Mnist/test_img/0/4033.pgm deleted file mode 100644 index 9a8cf43a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4034.pgm b/examples/autotiler/Mnist/test_img/0/4034.pgm deleted file mode 100644 index ec862f855..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4043.pgm b/examples/autotiler/Mnist/test_img/0/4043.pgm deleted file mode 100644 index a33dc6158..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4048.pgm b/examples/autotiler/Mnist/test_img/0/4048.pgm deleted file mode 100644 index 179f9cbcc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4062.pgm b/examples/autotiler/Mnist/test_img/0/4062.pgm deleted file mode 100644 index da21174d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4065.pgm b/examples/autotiler/Mnist/test_img/0/4065.pgm deleted file mode 100644 index cb1eb6a54..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/407.pgm b/examples/autotiler/Mnist/test_img/0/407.pgm deleted file mode 100644 index 83e330afa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4070.pgm b/examples/autotiler/Mnist/test_img/0/4070.pgm deleted file mode 100644 index 27fea06b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4079.pgm b/examples/autotiler/Mnist/test_img/0/4079.pgm deleted file mode 100644 index dd3b7feb0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4080.pgm b/examples/autotiler/Mnist/test_img/0/4080.pgm deleted file mode 100644 index 162523b5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4082.pgm b/examples/autotiler/Mnist/test_img/0/4082.pgm deleted file mode 100644 index 7634f75f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4090.pgm b/examples/autotiler/Mnist/test_img/0/4090.pgm deleted file mode 100644 index 063976536..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4091.pgm b/examples/autotiler/Mnist/test_img/0/4091.pgm deleted file mode 100644 index f1f0fe5e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4146.pgm b/examples/autotiler/Mnist/test_img/0/4146.pgm deleted file mode 100644 index be38eb512..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4150.pgm b/examples/autotiler/Mnist/test_img/0/4150.pgm deleted file mode 100644 index 6c7cd1a50..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4155.pgm b/examples/autotiler/Mnist/test_img/0/4155.pgm deleted file mode 100644 index 1fc1a5dcf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4157.pgm b/examples/autotiler/Mnist/test_img/0/4157.pgm deleted file mode 100644 index 54f0f8812..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4166.pgm b/examples/autotiler/Mnist/test_img/0/4166.pgm deleted file mode 100644 index 30abf6dc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4186.pgm b/examples/autotiler/Mnist/test_img/0/4186.pgm deleted file mode 100644 index 9b8e15f76..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4188.pgm b/examples/autotiler/Mnist/test_img/0/4188.pgm deleted file mode 100644 index 47d8e2a15..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4208.pgm b/examples/autotiler/Mnist/test_img/0/4208.pgm deleted file mode 100644 index 355df614d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4227.pgm b/examples/autotiler/Mnist/test_img/0/4227.pgm deleted file mode 100644 index 3428ecefa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/424.pgm b/examples/autotiler/Mnist/test_img/0/424.pgm deleted file mode 100644 index f1abe7bf4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4241.pgm b/examples/autotiler/Mnist/test_img/0/4241.pgm deleted file mode 100644 index 93200d3f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4278.pgm b/examples/autotiler/Mnist/test_img/0/4278.pgm deleted file mode 100644 index 8323271a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4281.pgm b/examples/autotiler/Mnist/test_img/0/4281.pgm deleted file mode 100644 index 66d90f1fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4282.pgm b/examples/autotiler/Mnist/test_img/0/4282.pgm deleted file mode 100644 index 9d07a700e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4286.pgm b/examples/autotiler/Mnist/test_img/0/4286.pgm deleted file mode 100644 index 07730464a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4320.pgm b/examples/autotiler/Mnist/test_img/0/4320.pgm deleted file mode 100644 index 3d2200fea..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4327.pgm b/examples/autotiler/Mnist/test_img/0/4327.pgm deleted file mode 100644 index c3205c5cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4329.pgm b/examples/autotiler/Mnist/test_img/0/4329.pgm deleted file mode 100644 index 1ce7c0aa2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4343.pgm b/examples/autotiler/Mnist/test_img/0/4343.pgm deleted file mode 100644 index 6a873583e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4348.pgm b/examples/autotiler/Mnist/test_img/0/4348.pgm deleted file mode 100644 index ad9b48208..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4351.pgm b/examples/autotiler/Mnist/test_img/0/4351.pgm deleted file mode 100644 index 784978d59..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4353.pgm b/examples/autotiler/Mnist/test_img/0/4353.pgm deleted file mode 100644 index a34d2bab6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4361.pgm b/examples/autotiler/Mnist/test_img/0/4361.pgm deleted file mode 100644 index 54498a6cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4365.pgm b/examples/autotiler/Mnist/test_img/0/4365.pgm deleted file mode 100644 index 20e9d8263..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4370.pgm b/examples/autotiler/Mnist/test_img/0/4370.pgm deleted file mode 100644 index d9311d88d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4392.pgm b/examples/autotiler/Mnist/test_img/0/4392.pgm deleted file mode 100644 index 1cfa88725..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/440.pgm b/examples/autotiler/Mnist/test_img/0/440.pgm deleted file mode 100644 index c974f6059..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4403.pgm b/examples/autotiler/Mnist/test_img/0/4403.pgm deleted file mode 100644 index 11b2a1b08..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4404.pgm b/examples/autotiler/Mnist/test_img/0/4404.pgm deleted file mode 100644 index dd896af1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/441.pgm b/examples/autotiler/Mnist/test_img/0/441.pgm deleted file mode 100644 index 2c4d58723..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/443.pgm b/examples/autotiler/Mnist/test_img/0/443.pgm deleted file mode 100644 index fe1a83090..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4432.pgm b/examples/autotiler/Mnist/test_img/0/4432.pgm deleted file mode 100644 index 476f662c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4447.pgm b/examples/autotiler/Mnist/test_img/0/4447.pgm deleted file mode 100644 index 5ea7a0359..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4448.pgm b/examples/autotiler/Mnist/test_img/0/4448.pgm deleted file mode 100644 index 7a7f3a2b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4457.pgm b/examples/autotiler/Mnist/test_img/0/4457.pgm deleted file mode 100644 index fa285e58d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4462.pgm b/examples/autotiler/Mnist/test_img/0/4462.pgm deleted file mode 100644 index 494e46777..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4470.pgm b/examples/autotiler/Mnist/test_img/0/4470.pgm deleted file mode 100644 index 812545b6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4473.pgm b/examples/autotiler/Mnist/test_img/0/4473.pgm deleted file mode 100644 index c3c0031f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4477.pgm b/examples/autotiler/Mnist/test_img/0/4477.pgm deleted file mode 100644 index 457f0e889..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4495.pgm b/examples/autotiler/Mnist/test_img/0/4495.pgm deleted file mode 100644 index 4ffca4154..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4515.pgm b/examples/autotiler/Mnist/test_img/0/4515.pgm deleted file mode 100644 index dd81d3ad2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4527.pgm b/examples/autotiler/Mnist/test_img/0/4527.pgm deleted file mode 100644 index e7dc1181e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4531.pgm b/examples/autotiler/Mnist/test_img/0/4531.pgm deleted file mode 100644 index 4a1202d3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4542.pgm b/examples/autotiler/Mnist/test_img/0/4542.pgm deleted file mode 100644 index b76e06133..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4554.pgm b/examples/autotiler/Mnist/test_img/0/4554.pgm deleted file mode 100644 index 867d4080b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/459.pgm b/examples/autotiler/Mnist/test_img/0/459.pgm deleted file mode 100644 index 87dfe3595..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4604.pgm b/examples/autotiler/Mnist/test_img/0/4604.pgm deleted file mode 100644 index eccdb6e57..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4611.pgm b/examples/autotiler/Mnist/test_img/0/4611.pgm deleted file mode 100644 index fa68f22ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4614.pgm b/examples/autotiler/Mnist/test_img/0/4614.pgm deleted file mode 100644 index 0eac577ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4617.pgm b/examples/autotiler/Mnist/test_img/0/4617.pgm deleted file mode 100644 index 48b159853..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4628.pgm b/examples/autotiler/Mnist/test_img/0/4628.pgm deleted file mode 100644 index cc27eaf42..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4631.pgm b/examples/autotiler/Mnist/test_img/0/4631.pgm deleted file mode 100644 index 91c5985f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4641.pgm b/examples/autotiler/Mnist/test_img/0/4641.pgm deleted file mode 100644 index b8fc3f7a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4642.pgm b/examples/autotiler/Mnist/test_img/0/4642.pgm deleted file mode 100644 index 1ce2ab137..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4650.pgm b/examples/autotiler/Mnist/test_img/0/4650.pgm deleted file mode 100644 index 660f9f90f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4672.pgm b/examples/autotiler/Mnist/test_img/0/4672.pgm deleted file mode 100644 index e43c75293..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4675.pgm b/examples/autotiler/Mnist/test_img/0/4675.pgm deleted file mode 100644 index a6d4505ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4718.pgm b/examples/autotiler/Mnist/test_img/0/4718.pgm deleted file mode 100644 index e55a7df5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4720.pgm b/examples/autotiler/Mnist/test_img/0/4720.pgm deleted file mode 100644 index 022becaa4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4739.pgm b/examples/autotiler/Mnist/test_img/0/4739.pgm deleted file mode 100644 index 5e86b0e6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4741.pgm b/examples/autotiler/Mnist/test_img/0/4741.pgm deleted file mode 100644 index 01b4d27c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4757.pgm b/examples/autotiler/Mnist/test_img/0/4757.pgm deleted file mode 100644 index 85f8e166f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4776.pgm b/examples/autotiler/Mnist/test_img/0/4776.pgm deleted file mode 100644 index f72a3d9a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4780.pgm b/examples/autotiler/Mnist/test_img/0/4780.pgm deleted file mode 100644 index b3ffd3903..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4788.pgm b/examples/autotiler/Mnist/test_img/0/4788.pgm deleted file mode 100644 index 099b59dd5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4804.pgm b/examples/autotiler/Mnist/test_img/0/4804.pgm deleted file mode 100644 index 2a9c37c53..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4819.pgm b/examples/autotiler/Mnist/test_img/0/4819.pgm deleted file mode 100644 index 472829fe4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4824.pgm b/examples/autotiler/Mnist/test_img/0/4824.pgm deleted file mode 100644 index 675daa7b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4834.pgm b/examples/autotiler/Mnist/test_img/0/4834.pgm deleted file mode 100644 index 902ba3156..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/485.pgm b/examples/autotiler/Mnist/test_img/0/485.pgm deleted file mode 100644 index fbc18891c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4857.pgm b/examples/autotiler/Mnist/test_img/0/4857.pgm deleted file mode 100644 index b8b2b1f12..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4862.pgm b/examples/autotiler/Mnist/test_img/0/4862.pgm deleted file mode 100644 index 6dc0ba89e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4880.pgm b/examples/autotiler/Mnist/test_img/0/4880.pgm deleted file mode 100644 index 348e583a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4887.pgm b/examples/autotiler/Mnist/test_img/0/4887.pgm deleted file mode 100644 index fab7588aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4891.pgm b/examples/autotiler/Mnist/test_img/0/4891.pgm deleted file mode 100644 index 79f9ecaec..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/490.pgm b/examples/autotiler/Mnist/test_img/0/490.pgm deleted file mode 100644 index 433ef8b9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4923.pgm b/examples/autotiler/Mnist/test_img/0/4923.pgm deleted file mode 100644 index 6717e5bde..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4935.pgm b/examples/autotiler/Mnist/test_img/0/4935.pgm deleted file mode 100644 index 3f2e32ac7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4937.pgm b/examples/autotiler/Mnist/test_img/0/4937.pgm deleted file mode 100644 index a588b883e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4957.pgm b/examples/autotiler/Mnist/test_img/0/4957.pgm deleted file mode 100644 index 5d8eec6d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4958.pgm b/examples/autotiler/Mnist/test_img/0/4958.pgm deleted file mode 100644 index 461cb8e16..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4959.pgm b/examples/autotiler/Mnist/test_img/0/4959.pgm deleted file mode 100644 index a62cb5535..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/498.pgm b/examples/autotiler/Mnist/test_img/0/498.pgm deleted file mode 100644 index 22d1177d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4992.pgm b/examples/autotiler/Mnist/test_img/0/4992.pgm deleted file mode 100644 index e42ae6c8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/4999.pgm b/examples/autotiler/Mnist/test_img/0/4999.pgm deleted file mode 100644 index 3c792a336..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/4999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5006.pgm b/examples/autotiler/Mnist/test_img/0/5006.pgm deleted file mode 100644 index 4221a4c07..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5008.pgm b/examples/autotiler/Mnist/test_img/0/5008.pgm deleted file mode 100644 index 4dce4624b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5031.pgm b/examples/autotiler/Mnist/test_img/0/5031.pgm deleted file mode 100644 index 9fede621e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5033.pgm b/examples/autotiler/Mnist/test_img/0/5033.pgm deleted file mode 100644 index 2b1df9c05..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5035.pgm b/examples/autotiler/Mnist/test_img/0/5035.pgm deleted file mode 100644 index 3f32fb412..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5043.pgm b/examples/autotiler/Mnist/test_img/0/5043.pgm deleted file mode 100644 index ff5815eb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5051.pgm b/examples/autotiler/Mnist/test_img/0/5051.pgm deleted file mode 100644 index 8ad7d3b7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5069.pgm b/examples/autotiler/Mnist/test_img/0/5069.pgm deleted file mode 100644 index dc696f7f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5079.pgm b/examples/autotiler/Mnist/test_img/0/5079.pgm deleted file mode 100644 index 06a234705..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5087.pgm b/examples/autotiler/Mnist/test_img/0/5087.pgm deleted file mode 100644 index c9a5f2af3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5108.pgm b/examples/autotiler/Mnist/test_img/0/5108.pgm deleted file mode 100644 index f3364907e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5109.pgm b/examples/autotiler/Mnist/test_img/0/5109.pgm deleted file mode 100644 index d4d9d98f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5124.pgm b/examples/autotiler/Mnist/test_img/0/5124.pgm deleted file mode 100644 index 0bc62b0e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5133.pgm b/examples/autotiler/Mnist/test_img/0/5133.pgm deleted file mode 100644 index 6214a5ace..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5139.pgm b/examples/autotiler/Mnist/test_img/0/5139.pgm deleted file mode 100644 index f9a7b3dbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5141.pgm b/examples/autotiler/Mnist/test_img/0/5141.pgm deleted file mode 100644 index d3bf5811d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5147.pgm b/examples/autotiler/Mnist/test_img/0/5147.pgm deleted file mode 100644 index 6630ca4c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5155.pgm b/examples/autotiler/Mnist/test_img/0/5155.pgm deleted file mode 100644 index ba8619581..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5165.pgm b/examples/autotiler/Mnist/test_img/0/5165.pgm deleted file mode 100644 index 56c306c33..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5241.pgm b/examples/autotiler/Mnist/test_img/0/5241.pgm deleted file mode 100644 index 5c7adcdab..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5243.pgm b/examples/autotiler/Mnist/test_img/0/5243.pgm deleted file mode 100644 index 3b097c4fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5244.pgm b/examples/autotiler/Mnist/test_img/0/5244.pgm deleted file mode 100644 index 23606f375..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5249.pgm b/examples/autotiler/Mnist/test_img/0/5249.pgm deleted file mode 100644 index 5047c2426..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/525.pgm b/examples/autotiler/Mnist/test_img/0/525.pgm deleted file mode 100644 index fa37b9b15..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5251.pgm b/examples/autotiler/Mnist/test_img/0/5251.pgm deleted file mode 100644 index d54abb30c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5253.pgm b/examples/autotiler/Mnist/test_img/0/5253.pgm deleted file mode 100644 index bb5d2f650..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5255.pgm b/examples/autotiler/Mnist/test_img/0/5255.pgm deleted file mode 100644 index 5a405be3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5257.pgm b/examples/autotiler/Mnist/test_img/0/5257.pgm deleted file mode 100644 index 13a757c58..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5259.pgm b/examples/autotiler/Mnist/test_img/0/5259.pgm deleted file mode 100644 index 10cfc3799..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5270.pgm b/examples/autotiler/Mnist/test_img/0/5270.pgm deleted file mode 100644 index 89470e3d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5280.pgm b/examples/autotiler/Mnist/test_img/0/5280.pgm deleted file mode 100644 index f77fb8fdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5290.pgm b/examples/autotiler/Mnist/test_img/0/5290.pgm deleted file mode 100644 index d68079b58..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5301.pgm b/examples/autotiler/Mnist/test_img/0/5301.pgm deleted file mode 100644 index 8ce6741a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5305.pgm b/examples/autotiler/Mnist/test_img/0/5305.pgm deleted file mode 100644 index e5df4ef0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5307.pgm b/examples/autotiler/Mnist/test_img/0/5307.pgm deleted file mode 100644 index 25964d67f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5320.pgm b/examples/autotiler/Mnist/test_img/0/5320.pgm deleted file mode 100644 index d64ac315c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5321.pgm b/examples/autotiler/Mnist/test_img/0/5321.pgm deleted file mode 100644 index 8cf596e3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5337.pgm b/examples/autotiler/Mnist/test_img/0/5337.pgm deleted file mode 100644 index a475c416d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5342.pgm b/examples/autotiler/Mnist/test_img/0/5342.pgm deleted file mode 100644 index 5b5570152..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5353.pgm b/examples/autotiler/Mnist/test_img/0/5353.pgm deleted file mode 100644 index d3a0fefa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5368.pgm b/examples/autotiler/Mnist/test_img/0/5368.pgm deleted file mode 100644 index d935af709..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5369.pgm b/examples/autotiler/Mnist/test_img/0/5369.pgm deleted file mode 100644 index 87f94b982..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5398.pgm b/examples/autotiler/Mnist/test_img/0/5398.pgm deleted file mode 100644 index 739e45ceb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5405.pgm b/examples/autotiler/Mnist/test_img/0/5405.pgm deleted file mode 100644 index 5ae8e8abc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5415.pgm b/examples/autotiler/Mnist/test_img/0/5415.pgm deleted file mode 100644 index 99eac6348..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5428.pgm b/examples/autotiler/Mnist/test_img/0/5428.pgm deleted file mode 100644 index e98a9cf07..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5430.pgm b/examples/autotiler/Mnist/test_img/0/5430.pgm deleted file mode 100644 index c3dc32708..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5435.pgm b/examples/autotiler/Mnist/test_img/0/5435.pgm deleted file mode 100644 index 1235990e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5443.pgm b/examples/autotiler/Mnist/test_img/0/5443.pgm deleted file mode 100644 index 4df5ab06f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/545.pgm b/examples/autotiler/Mnist/test_img/0/545.pgm deleted file mode 100644 index 496295f97..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5450.pgm b/examples/autotiler/Mnist/test_img/0/5450.pgm deleted file mode 100644 index 1a8ea159b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5452.pgm b/examples/autotiler/Mnist/test_img/0/5452.pgm deleted file mode 100644 index a61ee41b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5459.pgm b/examples/autotiler/Mnist/test_img/0/5459.pgm deleted file mode 100644 index e476bf659..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/546.pgm b/examples/autotiler/Mnist/test_img/0/546.pgm deleted file mode 100644 index e79bc6dac..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5463.pgm b/examples/autotiler/Mnist/test_img/0/5463.pgm deleted file mode 100644 index 14a91a72b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5470.pgm b/examples/autotiler/Mnist/test_img/0/5470.pgm deleted file mode 100644 index 5570b4af9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5483.pgm b/examples/autotiler/Mnist/test_img/0/5483.pgm deleted file mode 100644 index b895db05d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/55.pgm b/examples/autotiler/Mnist/test_img/0/55.pgm deleted file mode 100644 index 146e7e5fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/55.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5505.pgm b/examples/autotiler/Mnist/test_img/0/5505.pgm deleted file mode 100644 index 523ae2a75..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5513.pgm b/examples/autotiler/Mnist/test_img/0/5513.pgm deleted file mode 100644 index e692bb6a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5519.pgm b/examples/autotiler/Mnist/test_img/0/5519.pgm deleted file mode 100644 index 1e009f94e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/552.pgm b/examples/autotiler/Mnist/test_img/0/552.pgm deleted file mode 100644 index 69a426b8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5526.pgm b/examples/autotiler/Mnist/test_img/0/5526.pgm deleted file mode 100644 index baa1dfdb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5529.pgm b/examples/autotiler/Mnist/test_img/0/5529.pgm deleted file mode 100644 index 9fbc83acc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5531.pgm b/examples/autotiler/Mnist/test_img/0/5531.pgm deleted file mode 100644 index b11b5a92c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5554.pgm b/examples/autotiler/Mnist/test_img/0/5554.pgm deleted file mode 100644 index a3127b42f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5567.pgm b/examples/autotiler/Mnist/test_img/0/5567.pgm deleted file mode 100644 index 9db95bf59..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5584.pgm b/examples/autotiler/Mnist/test_img/0/5584.pgm deleted file mode 100644 index f6413d6bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5592.pgm b/examples/autotiler/Mnist/test_img/0/5592.pgm deleted file mode 100644 index f5a3a9a4e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5593.pgm b/examples/autotiler/Mnist/test_img/0/5593.pgm deleted file mode 100644 index 1240c9aa4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5603.pgm b/examples/autotiler/Mnist/test_img/0/5603.pgm deleted file mode 100644 index 2c6e0f86b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/561.pgm b/examples/autotiler/Mnist/test_img/0/561.pgm deleted file mode 100644 index 5e124f332..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5613.pgm b/examples/autotiler/Mnist/test_img/0/5613.pgm deleted file mode 100644 index 2c7152853..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/564.pgm b/examples/autotiler/Mnist/test_img/0/564.pgm deleted file mode 100644 index b79343bf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5652.pgm b/examples/autotiler/Mnist/test_img/0/5652.pgm deleted file mode 100644 index c0209f712..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5653.pgm b/examples/autotiler/Mnist/test_img/0/5653.pgm deleted file mode 100644 index 25a52ceee..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5659.pgm b/examples/autotiler/Mnist/test_img/0/5659.pgm deleted file mode 100644 index 75f3619f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5669.pgm b/examples/autotiler/Mnist/test_img/0/5669.pgm deleted file mode 100644 index bb3049d8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/567.pgm b/examples/autotiler/Mnist/test_img/0/567.pgm deleted file mode 100644 index 286a7ac89..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5673.pgm b/examples/autotiler/Mnist/test_img/0/5673.pgm deleted file mode 100644 index fe7d87d15..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5684.pgm b/examples/autotiler/Mnist/test_img/0/5684.pgm deleted file mode 100644 index 7dd5d2e6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5685.pgm b/examples/autotiler/Mnist/test_img/0/5685.pgm deleted file mode 100644 index b84286bff..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5686.pgm b/examples/autotiler/Mnist/test_img/0/5686.pgm deleted file mode 100644 index cafb213cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5695.pgm b/examples/autotiler/Mnist/test_img/0/5695.pgm deleted file mode 100644 index 8918a1b88..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5718.pgm b/examples/autotiler/Mnist/test_img/0/5718.pgm deleted file mode 100644 index 646f81e65..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5721.pgm b/examples/autotiler/Mnist/test_img/0/5721.pgm deleted file mode 100644 index 9c7e837dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5731.pgm b/examples/autotiler/Mnist/test_img/0/5731.pgm deleted file mode 100644 index ddf116e50..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5737.pgm b/examples/autotiler/Mnist/test_img/0/5737.pgm deleted file mode 100644 index df95d5d62..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5750.pgm b/examples/autotiler/Mnist/test_img/0/5750.pgm deleted file mode 100644 index aa6b653a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5756.pgm b/examples/autotiler/Mnist/test_img/0/5756.pgm deleted file mode 100644 index aa963a952..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5778.pgm b/examples/autotiler/Mnist/test_img/0/5778.pgm deleted file mode 100644 index 2d403ca23..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5791.pgm b/examples/autotiler/Mnist/test_img/0/5791.pgm deleted file mode 100644 index 277f4e18d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5806.pgm b/examples/autotiler/Mnist/test_img/0/5806.pgm deleted file mode 100644 index 7c4274210..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/581.pgm b/examples/autotiler/Mnist/test_img/0/581.pgm deleted file mode 100644 index 93d44be8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5812.pgm b/examples/autotiler/Mnist/test_img/0/5812.pgm deleted file mode 100644 index d8e209152..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5818.pgm b/examples/autotiler/Mnist/test_img/0/5818.pgm deleted file mode 100644 index 356d96ab6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5827.pgm b/examples/autotiler/Mnist/test_img/0/5827.pgm deleted file mode 100644 index 864a50dab..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5828.pgm b/examples/autotiler/Mnist/test_img/0/5828.pgm deleted file mode 100644 index 34c5c4a68..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5830.pgm b/examples/autotiler/Mnist/test_img/0/5830.pgm deleted file mode 100644 index c712a7ac8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5838.pgm b/examples/autotiler/Mnist/test_img/0/5838.pgm deleted file mode 100644 index 708e97887..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5847.pgm b/examples/autotiler/Mnist/test_img/0/5847.pgm deleted file mode 100644 index 05391addb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/586.pgm b/examples/autotiler/Mnist/test_img/0/586.pgm deleted file mode 100644 index 99064f743..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5865.pgm b/examples/autotiler/Mnist/test_img/0/5865.pgm deleted file mode 100644 index 4ba7f81b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5870.pgm b/examples/autotiler/Mnist/test_img/0/5870.pgm deleted file mode 100644 index 480e8ef58..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5890.pgm b/examples/autotiler/Mnist/test_img/0/5890.pgm deleted file mode 100644 index 96bdfa7e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5899.pgm b/examples/autotiler/Mnist/test_img/0/5899.pgm deleted file mode 100644 index 972b48ca1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5918.pgm b/examples/autotiler/Mnist/test_img/0/5918.pgm deleted file mode 100644 index 04244e418..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/592.pgm b/examples/autotiler/Mnist/test_img/0/592.pgm deleted file mode 100644 index bb6e88c40..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5929.pgm b/examples/autotiler/Mnist/test_img/0/5929.pgm deleted file mode 100644 index 7a35535bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5930.pgm b/examples/autotiler/Mnist/test_img/0/5930.pgm deleted file mode 100644 index c5fd1edc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5932.pgm b/examples/autotiler/Mnist/test_img/0/5932.pgm deleted file mode 100644 index d96e33f20..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5942.pgm b/examples/autotiler/Mnist/test_img/0/5942.pgm deleted file mode 100644 index 3229e7fb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5952.pgm b/examples/autotiler/Mnist/test_img/0/5952.pgm deleted file mode 100644 index b41caa90c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5965.pgm b/examples/autotiler/Mnist/test_img/0/5965.pgm deleted file mode 100644 index cf147eb13..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/597.pgm b/examples/autotiler/Mnist/test_img/0/597.pgm deleted file mode 100644 index 65cde513d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5974.pgm b/examples/autotiler/Mnist/test_img/0/5974.pgm deleted file mode 100644 index 2eeb4aeaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5980.pgm b/examples/autotiler/Mnist/test_img/0/5980.pgm deleted file mode 100644 index aa75bb06a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5987.pgm b/examples/autotiler/Mnist/test_img/0/5987.pgm deleted file mode 100644 index 544092f00..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5990.pgm b/examples/autotiler/Mnist/test_img/0/5990.pgm deleted file mode 100644 index 504c66545..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/5993.pgm b/examples/autotiler/Mnist/test_img/0/5993.pgm deleted file mode 100644 index 2e951c688..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/5993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6003.pgm b/examples/autotiler/Mnist/test_img/0/6003.pgm deleted file mode 100644 index 7d5ed76a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6015.pgm b/examples/autotiler/Mnist/test_img/0/6015.pgm deleted file mode 100644 index 81dcae98f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6016.pgm b/examples/autotiler/Mnist/test_img/0/6016.pgm deleted file mode 100644 index 311ae9e1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6040.pgm b/examples/autotiler/Mnist/test_img/0/6040.pgm deleted file mode 100644 index 7a2338b69..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6062.pgm b/examples/autotiler/Mnist/test_img/0/6062.pgm deleted file mode 100644 index 1d02af416..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6072.pgm b/examples/autotiler/Mnist/test_img/0/6072.pgm deleted file mode 100644 index 114bf1afc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/608.pgm b/examples/autotiler/Mnist/test_img/0/608.pgm deleted file mode 100644 index 6e9b0c658..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6082.pgm b/examples/autotiler/Mnist/test_img/0/6082.pgm deleted file mode 100644 index 983150164..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6097.pgm b/examples/autotiler/Mnist/test_img/0/6097.pgm deleted file mode 100644 index bf2ffaa65..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6099.pgm b/examples/autotiler/Mnist/test_img/0/6099.pgm deleted file mode 100644 index f22189c6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/611.pgm b/examples/autotiler/Mnist/test_img/0/611.pgm deleted file mode 100644 index 8911fda68..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6114.pgm b/examples/autotiler/Mnist/test_img/0/6114.pgm deleted file mode 100644 index 96054e4be..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6117.pgm b/examples/autotiler/Mnist/test_img/0/6117.pgm deleted file mode 100644 index d4c5ff65e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6127.pgm b/examples/autotiler/Mnist/test_img/0/6127.pgm deleted file mode 100644 index 77f8c7ef0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6129.pgm b/examples/autotiler/Mnist/test_img/0/6129.pgm deleted file mode 100644 index 81be0f515..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6131.pgm b/examples/autotiler/Mnist/test_img/0/6131.pgm deleted file mode 100644 index 3218c6ffb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6133.pgm b/examples/autotiler/Mnist/test_img/0/6133.pgm deleted file mode 100644 index 40909ad59..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6140.pgm b/examples/autotiler/Mnist/test_img/0/6140.pgm deleted file mode 100644 index 67898f07a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6163.pgm b/examples/autotiler/Mnist/test_img/0/6163.pgm deleted file mode 100644 index 45ea182b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6181.pgm b/examples/autotiler/Mnist/test_img/0/6181.pgm deleted file mode 100644 index bf7e0ff38..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6191.pgm b/examples/autotiler/Mnist/test_img/0/6191.pgm deleted file mode 100644 index 52856ca1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/620.pgm b/examples/autotiler/Mnist/test_img/0/620.pgm deleted file mode 100644 index cc0a1be4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6201.pgm b/examples/autotiler/Mnist/test_img/0/6201.pgm deleted file mode 100644 index fb8333828..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6211.pgm b/examples/autotiler/Mnist/test_img/0/6211.pgm deleted file mode 100644 index f94a9cfa0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6241.pgm b/examples/autotiler/Mnist/test_img/0/6241.pgm deleted file mode 100644 index 17f337388..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6250.pgm b/examples/autotiler/Mnist/test_img/0/6250.pgm deleted file mode 100644 index 16a7eef72..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6259.pgm b/examples/autotiler/Mnist/test_img/0/6259.pgm deleted file mode 100644 index e0c1b7d21..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6264.pgm b/examples/autotiler/Mnist/test_img/0/6264.pgm deleted file mode 100644 index c28383f5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6280.pgm b/examples/autotiler/Mnist/test_img/0/6280.pgm deleted file mode 100644 index 243818bfa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6286.pgm b/examples/autotiler/Mnist/test_img/0/6286.pgm deleted file mode 100644 index abd2ff33e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6287.pgm b/examples/autotiler/Mnist/test_img/0/6287.pgm deleted file mode 100644 index e19ba2bc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6288.pgm b/examples/autotiler/Mnist/test_img/0/6288.pgm deleted file mode 100644 index c89ad9445..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6293.pgm b/examples/autotiler/Mnist/test_img/0/6293.pgm deleted file mode 100644 index 2f3dbb38b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6309.pgm b/examples/autotiler/Mnist/test_img/0/6309.pgm deleted file mode 100644 index 4556bff5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6319.pgm b/examples/autotiler/Mnist/test_img/0/6319.pgm deleted file mode 100644 index 8150b8868..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6328.pgm b/examples/autotiler/Mnist/test_img/0/6328.pgm deleted file mode 100644 index 47195e0cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6342.pgm b/examples/autotiler/Mnist/test_img/0/6342.pgm deleted file mode 100644 index 3ad5389a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6344.pgm b/examples/autotiler/Mnist/test_img/0/6344.pgm deleted file mode 100644 index 3a9f8ae6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6351.pgm b/examples/autotiler/Mnist/test_img/0/6351.pgm deleted file mode 100644 index efc96d11a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6383.pgm b/examples/autotiler/Mnist/test_img/0/6383.pgm deleted file mode 100644 index d0be2ed62..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6398.pgm b/examples/autotiler/Mnist/test_img/0/6398.pgm deleted file mode 100644 index a71eaed6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6400.pgm b/examples/autotiler/Mnist/test_img/0/6400.pgm deleted file mode 100644 index b06900028..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/642.pgm b/examples/autotiler/Mnist/test_img/0/642.pgm deleted file mode 100644 index 19f3263db..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6424.pgm b/examples/autotiler/Mnist/test_img/0/6424.pgm deleted file mode 100644 index 9fc800a22..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6426.pgm b/examples/autotiler/Mnist/test_img/0/6426.pgm deleted file mode 100644 index 179c33d6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6428.pgm b/examples/autotiler/Mnist/test_img/0/6428.pgm deleted file mode 100644 index 0e583db39..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6429.pgm b/examples/autotiler/Mnist/test_img/0/6429.pgm deleted file mode 100644 index 72d278aa9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6437.pgm b/examples/autotiler/Mnist/test_img/0/6437.pgm deleted file mode 100644 index 84725db8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/644.pgm b/examples/autotiler/Mnist/test_img/0/644.pgm deleted file mode 100644 index 52ecaf45a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6444.pgm b/examples/autotiler/Mnist/test_img/0/6444.pgm deleted file mode 100644 index ad561a4bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6454.pgm b/examples/autotiler/Mnist/test_img/0/6454.pgm deleted file mode 100644 index 468faffa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6461.pgm b/examples/autotiler/Mnist/test_img/0/6461.pgm deleted file mode 100644 index ffc16ee62..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6470.pgm b/examples/autotiler/Mnist/test_img/0/6470.pgm deleted file mode 100644 index f4d24ef9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6473.pgm b/examples/autotiler/Mnist/test_img/0/6473.pgm deleted file mode 100644 index 73a64b3d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6478.pgm b/examples/autotiler/Mnist/test_img/0/6478.pgm deleted file mode 100644 index 445f19df5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6489.pgm b/examples/autotiler/Mnist/test_img/0/6489.pgm deleted file mode 100644 index 05d6c0609..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6510.pgm b/examples/autotiler/Mnist/test_img/0/6510.pgm deleted file mode 100644 index e4d8f8cc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6526.pgm b/examples/autotiler/Mnist/test_img/0/6526.pgm deleted file mode 100644 index 62b1bd219..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6532.pgm b/examples/autotiler/Mnist/test_img/0/6532.pgm deleted file mode 100644 index d74c774f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6546.pgm b/examples/autotiler/Mnist/test_img/0/6546.pgm deleted file mode 100644 index 522e6b0a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6557.pgm b/examples/autotiler/Mnist/test_img/0/6557.pgm deleted file mode 100644 index ffb070781..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/656.pgm b/examples/autotiler/Mnist/test_img/0/656.pgm deleted file mode 100644 index 4f1c40338..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6567.pgm b/examples/autotiler/Mnist/test_img/0/6567.pgm deleted file mode 100644 index b07345a48..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6580.pgm b/examples/autotiler/Mnist/test_img/0/6580.pgm deleted file mode 100644 index d033acf59..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6583.pgm b/examples/autotiler/Mnist/test_img/0/6583.pgm deleted file mode 100644 index 41d9f52c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6588.pgm b/examples/autotiler/Mnist/test_img/0/6588.pgm deleted file mode 100644 index aed35e346..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6590.pgm b/examples/autotiler/Mnist/test_img/0/6590.pgm deleted file mode 100644 index e49b46587..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6597.pgm b/examples/autotiler/Mnist/test_img/0/6597.pgm deleted file mode 100644 index a70038eb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6602.pgm b/examples/autotiler/Mnist/test_img/0/6602.pgm deleted file mode 100644 index f226b22e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/661.pgm b/examples/autotiler/Mnist/test_img/0/661.pgm deleted file mode 100644 index 900c88657..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6621.pgm b/examples/autotiler/Mnist/test_img/0/6621.pgm deleted file mode 100644 index 75f8c2453..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6633.pgm b/examples/autotiler/Mnist/test_img/0/6633.pgm deleted file mode 100644 index 7a6e602e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6643.pgm b/examples/autotiler/Mnist/test_img/0/6643.pgm deleted file mode 100644 index be91b85f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6651.pgm b/examples/autotiler/Mnist/test_img/0/6651.pgm deleted file mode 100644 index ddc950e1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6672.pgm b/examples/autotiler/Mnist/test_img/0/6672.pgm deleted file mode 100644 index 3a54e3b10..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6701.pgm b/examples/autotiler/Mnist/test_img/0/6701.pgm deleted file mode 100644 index e749dc6e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6711.pgm b/examples/autotiler/Mnist/test_img/0/6711.pgm deleted file mode 100644 index 938bbf78a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6719.pgm b/examples/autotiler/Mnist/test_img/0/6719.pgm deleted file mode 100644 index f9db88178..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6750.pgm b/examples/autotiler/Mnist/test_img/0/6750.pgm deleted file mode 100644 index cc0e75206..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6752.pgm b/examples/autotiler/Mnist/test_img/0/6752.pgm deleted file mode 100644 index 4703198da..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6753.pgm b/examples/autotiler/Mnist/test_img/0/6753.pgm deleted file mode 100644 index c45a99c92..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6760.pgm b/examples/autotiler/Mnist/test_img/0/6760.pgm deleted file mode 100644 index fd7ad4afe..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6766.pgm b/examples/autotiler/Mnist/test_img/0/6766.pgm deleted file mode 100644 index fb96c990c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6770.pgm b/examples/autotiler/Mnist/test_img/0/6770.pgm deleted file mode 100644 index a9a9bb798..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6779.pgm b/examples/autotiler/Mnist/test_img/0/6779.pgm deleted file mode 100644 index 652287c90..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6781.pgm b/examples/autotiler/Mnist/test_img/0/6781.pgm deleted file mode 100644 index 2f1d86c87..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6786.pgm b/examples/autotiler/Mnist/test_img/0/6786.pgm deleted file mode 100644 index d2a7d8827..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6795.pgm b/examples/autotiler/Mnist/test_img/0/6795.pgm deleted file mode 100644 index 19b95765f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6798.pgm b/examples/autotiler/Mnist/test_img/0/6798.pgm deleted file mode 100644 index 0b178d40f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6808.pgm b/examples/autotiler/Mnist/test_img/0/6808.pgm deleted file mode 100644 index 011db7543..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6818.pgm b/examples/autotiler/Mnist/test_img/0/6818.pgm deleted file mode 100644 index 72480b0fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6833.pgm b/examples/autotiler/Mnist/test_img/0/6833.pgm deleted file mode 100644 index 069dc70d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6835.pgm b/examples/autotiler/Mnist/test_img/0/6835.pgm deleted file mode 100644 index 864efd9f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6841.pgm b/examples/autotiler/Mnist/test_img/0/6841.pgm deleted file mode 100644 index cd2ee489f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6843.pgm b/examples/autotiler/Mnist/test_img/0/6843.pgm deleted file mode 100644 index ac5880210..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6877.pgm b/examples/autotiler/Mnist/test_img/0/6877.pgm deleted file mode 100644 index 0116679d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6892.pgm b/examples/autotiler/Mnist/test_img/0/6892.pgm deleted file mode 100644 index f88dd8946..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6894.pgm b/examples/autotiler/Mnist/test_img/0/6894.pgm deleted file mode 100644 index 13ff2c974..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/69.pgm b/examples/autotiler/Mnist/test_img/0/69.pgm deleted file mode 100644 index d1339374f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/69.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6921.pgm b/examples/autotiler/Mnist/test_img/0/6921.pgm deleted file mode 100644 index 0092f9b48..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6923.pgm b/examples/autotiler/Mnist/test_img/0/6923.pgm deleted file mode 100644 index 01393c47f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6925.pgm b/examples/autotiler/Mnist/test_img/0/6925.pgm deleted file mode 100644 index 838323573..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6927.pgm b/examples/autotiler/Mnist/test_img/0/6927.pgm deleted file mode 100644 index 041269b4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6937.pgm b/examples/autotiler/Mnist/test_img/0/6937.pgm deleted file mode 100644 index df53826e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6947.pgm b/examples/autotiler/Mnist/test_img/0/6947.pgm deleted file mode 100644 index af8ceea13..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6959.pgm b/examples/autotiler/Mnist/test_img/0/6959.pgm deleted file mode 100644 index d8c7f7c5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6962.pgm b/examples/autotiler/Mnist/test_img/0/6962.pgm deleted file mode 100644 index ce1015a57..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6968.pgm b/examples/autotiler/Mnist/test_img/0/6968.pgm deleted file mode 100644 index e32fe5f33..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6970.pgm b/examples/autotiler/Mnist/test_img/0/6970.pgm deleted file mode 100644 index d6c3855fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6971.pgm b/examples/autotiler/Mnist/test_img/0/6971.pgm deleted file mode 100644 index 23defd0bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6978.pgm b/examples/autotiler/Mnist/test_img/0/6978.pgm deleted file mode 100644 index 4559ecdd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/6979.pgm b/examples/autotiler/Mnist/test_img/0/6979.pgm deleted file mode 100644 index 724720240..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/6979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/701.pgm b/examples/autotiler/Mnist/test_img/0/701.pgm deleted file mode 100644 index 10cb96bd3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7031.pgm b/examples/autotiler/Mnist/test_img/0/7031.pgm deleted file mode 100644 index b1b50dd68..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7037.pgm b/examples/autotiler/Mnist/test_img/0/7037.pgm deleted file mode 100644 index 457201678..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/704.pgm b/examples/autotiler/Mnist/test_img/0/704.pgm deleted file mode 100644 index 04fa0cc83..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7049.pgm b/examples/autotiler/Mnist/test_img/0/7049.pgm deleted file mode 100644 index 017b0d4d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7052.pgm b/examples/autotiler/Mnist/test_img/0/7052.pgm deleted file mode 100644 index 82d7aa18a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7062.pgm b/examples/autotiler/Mnist/test_img/0/7062.pgm deleted file mode 100644 index d30e9b435..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7072.pgm b/examples/autotiler/Mnist/test_img/0/7072.pgm deleted file mode 100644 index 046c9682e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7084.pgm b/examples/autotiler/Mnist/test_img/0/7084.pgm deleted file mode 100644 index 333a78aa5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7086.pgm b/examples/autotiler/Mnist/test_img/0/7086.pgm deleted file mode 100644 index 2c474312d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/71.pgm b/examples/autotiler/Mnist/test_img/0/71.pgm deleted file mode 100644 index 14e11d6d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/71.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7112.pgm b/examples/autotiler/Mnist/test_img/0/7112.pgm deleted file mode 100644 index 3e826a20c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7129.pgm b/examples/autotiler/Mnist/test_img/0/7129.pgm deleted file mode 100644 index 0d3061b2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/713.pgm b/examples/autotiler/Mnist/test_img/0/713.pgm deleted file mode 100644 index 6bb560c7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7133.pgm b/examples/autotiler/Mnist/test_img/0/7133.pgm deleted file mode 100644 index ab52dc438..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7139.pgm b/examples/autotiler/Mnist/test_img/0/7139.pgm deleted file mode 100644 index aa429137e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7161.pgm b/examples/autotiler/Mnist/test_img/0/7161.pgm deleted file mode 100644 index e2b8efae0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7162.pgm b/examples/autotiler/Mnist/test_img/0/7162.pgm deleted file mode 100644 index 48784dd81..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7168.pgm b/examples/autotiler/Mnist/test_img/0/7168.pgm deleted file mode 100644 index 4803fe750..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/717.pgm b/examples/autotiler/Mnist/test_img/0/717.pgm deleted file mode 100644 index a4a120797..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7175.pgm b/examples/autotiler/Mnist/test_img/0/7175.pgm deleted file mode 100644 index 09c504c2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7190.pgm b/examples/autotiler/Mnist/test_img/0/7190.pgm deleted file mode 100644 index f2a6ecea2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7202.pgm b/examples/autotiler/Mnist/test_img/0/7202.pgm deleted file mode 100644 index a96cfa1ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7203.pgm b/examples/autotiler/Mnist/test_img/0/7203.pgm deleted file mode 100644 index f49a8e685..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/721.pgm b/examples/autotiler/Mnist/test_img/0/721.pgm deleted file mode 100644 index 484708e6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7216.pgm b/examples/autotiler/Mnist/test_img/0/7216.pgm deleted file mode 100644 index 4233d146a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7221.pgm b/examples/autotiler/Mnist/test_img/0/7221.pgm deleted file mode 100644 index 7211b3795..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7225.pgm b/examples/autotiler/Mnist/test_img/0/7225.pgm deleted file mode 100644 index a33719ea6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/723.pgm b/examples/autotiler/Mnist/test_img/0/723.pgm deleted file mode 100644 index 5c54201c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7231.pgm b/examples/autotiler/Mnist/test_img/0/7231.pgm deleted file mode 100644 index 27c8dd775..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7255.pgm b/examples/autotiler/Mnist/test_img/0/7255.pgm deleted file mode 100644 index 644751001..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7261.pgm b/examples/autotiler/Mnist/test_img/0/7261.pgm deleted file mode 100644 index 083ac1cd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7263.pgm b/examples/autotiler/Mnist/test_img/0/7263.pgm deleted file mode 100644 index 8671b8995..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7269.pgm b/examples/autotiler/Mnist/test_img/0/7269.pgm deleted file mode 100644 index b15b1be0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7279.pgm b/examples/autotiler/Mnist/test_img/0/7279.pgm deleted file mode 100644 index 7ca9e7c67..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7289.pgm b/examples/autotiler/Mnist/test_img/0/7289.pgm deleted file mode 100644 index d218cf5e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7317.pgm b/examples/autotiler/Mnist/test_img/0/7317.pgm deleted file mode 100644 index ef119707e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7330.pgm b/examples/autotiler/Mnist/test_img/0/7330.pgm deleted file mode 100644 index 52917d1d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7337.pgm b/examples/autotiler/Mnist/test_img/0/7337.pgm deleted file mode 100644 index 84f225501..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7342.pgm b/examples/autotiler/Mnist/test_img/0/7342.pgm deleted file mode 100644 index bf89c146d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7354.pgm b/examples/autotiler/Mnist/test_img/0/7354.pgm deleted file mode 100644 index 98f1ae664..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7363.pgm b/examples/autotiler/Mnist/test_img/0/7363.pgm deleted file mode 100644 index b16a0e8ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7367.pgm b/examples/autotiler/Mnist/test_img/0/7367.pgm deleted file mode 100644 index 60831dfc5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7368.pgm b/examples/autotiler/Mnist/test_img/0/7368.pgm deleted file mode 100644 index 9a704cdbf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7381.pgm b/examples/autotiler/Mnist/test_img/0/7381.pgm deleted file mode 100644 index 75e270ffa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7385.pgm b/examples/autotiler/Mnist/test_img/0/7385.pgm deleted file mode 100644 index 4ae46e80a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7410.pgm b/examples/autotiler/Mnist/test_img/0/7410.pgm deleted file mode 100644 index 5e9ec65ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/742.pgm b/examples/autotiler/Mnist/test_img/0/742.pgm deleted file mode 100644 index a7a00ca5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7440.pgm b/examples/autotiler/Mnist/test_img/0/7440.pgm deleted file mode 100644 index 373f82ba0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7446.pgm b/examples/autotiler/Mnist/test_img/0/7446.pgm deleted file mode 100644 index a1419ada2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7449.pgm b/examples/autotiler/Mnist/test_img/0/7449.pgm deleted file mode 100644 index ec78c0e8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7452.pgm b/examples/autotiler/Mnist/test_img/0/7452.pgm deleted file mode 100644 index 08a199760..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7465.pgm b/examples/autotiler/Mnist/test_img/0/7465.pgm deleted file mode 100644 index e3890bdbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7485.pgm b/examples/autotiler/Mnist/test_img/0/7485.pgm deleted file mode 100644 index 2643953a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7491.pgm b/examples/autotiler/Mnist/test_img/0/7491.pgm deleted file mode 100644 index 541addd2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/750.pgm b/examples/autotiler/Mnist/test_img/0/750.pgm deleted file mode 100644 index c8bb9f1f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7505.pgm b/examples/autotiler/Mnist/test_img/0/7505.pgm deleted file mode 100644 index 9bc25ac76..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7506.pgm b/examples/autotiler/Mnist/test_img/0/7506.pgm deleted file mode 100644 index e698ce9f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7516.pgm b/examples/autotiler/Mnist/test_img/0/7516.pgm deleted file mode 100644 index 0f63567ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7526.pgm b/examples/autotiler/Mnist/test_img/0/7526.pgm deleted file mode 100644 index 5c225c290..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7536.pgm b/examples/autotiler/Mnist/test_img/0/7536.pgm deleted file mode 100644 index a516b317a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7537.pgm b/examples/autotiler/Mnist/test_img/0/7537.pgm deleted file mode 100644 index 0b9a2bb91..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7555.pgm b/examples/autotiler/Mnist/test_img/0/7555.pgm deleted file mode 100644 index 78f551eea..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7558.pgm b/examples/autotiler/Mnist/test_img/0/7558.pgm deleted file mode 100644 index c1b3eb4af..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7566.pgm b/examples/autotiler/Mnist/test_img/0/7566.pgm deleted file mode 100644 index 973d384cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7593.pgm b/examples/autotiler/Mnist/test_img/0/7593.pgm deleted file mode 100644 index f257e6e6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7599.pgm b/examples/autotiler/Mnist/test_img/0/7599.pgm deleted file mode 100644 index 94464e409..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7601.pgm b/examples/autotiler/Mnist/test_img/0/7601.pgm deleted file mode 100644 index 41ddd1675..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7607.pgm b/examples/autotiler/Mnist/test_img/0/7607.pgm deleted file mode 100644 index f3f8d5b05..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7617.pgm b/examples/autotiler/Mnist/test_img/0/7617.pgm deleted file mode 100644 index f8f868f35..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7625.pgm b/examples/autotiler/Mnist/test_img/0/7625.pgm deleted file mode 100644 index 3c18c3d15..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/763.pgm b/examples/autotiler/Mnist/test_img/0/763.pgm deleted file mode 100644 index fc27589a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7646.pgm b/examples/autotiler/Mnist/test_img/0/7646.pgm deleted file mode 100644 index 1275de894..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7655.pgm b/examples/autotiler/Mnist/test_img/0/7655.pgm deleted file mode 100644 index 61f810766..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7671.pgm b/examples/autotiler/Mnist/test_img/0/7671.pgm deleted file mode 100644 index 3cfc9257b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7688.pgm b/examples/autotiler/Mnist/test_img/0/7688.pgm deleted file mode 100644 index 62ddfbe78..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7693.pgm b/examples/autotiler/Mnist/test_img/0/7693.pgm deleted file mode 100644 index da87c21f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7699.pgm b/examples/autotiler/Mnist/test_img/0/7699.pgm deleted file mode 100644 index 79a13b626..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7702.pgm b/examples/autotiler/Mnist/test_img/0/7702.pgm deleted file mode 100644 index ba6542594..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7703.pgm b/examples/autotiler/Mnist/test_img/0/7703.pgm deleted file mode 100644 index c70274003..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7706.pgm b/examples/autotiler/Mnist/test_img/0/7706.pgm deleted file mode 100644 index 073188685..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7723.pgm b/examples/autotiler/Mnist/test_img/0/7723.pgm deleted file mode 100644 index 9af0906d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7727.pgm b/examples/autotiler/Mnist/test_img/0/7727.pgm deleted file mode 100644 index 817ac4728..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7737.pgm b/examples/autotiler/Mnist/test_img/0/7737.pgm deleted file mode 100644 index 5f8d781a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7747.pgm b/examples/autotiler/Mnist/test_img/0/7747.pgm deleted file mode 100644 index bc15c8907..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7780.pgm b/examples/autotiler/Mnist/test_img/0/7780.pgm deleted file mode 100644 index 80c91f5d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7782.pgm b/examples/autotiler/Mnist/test_img/0/7782.pgm deleted file mode 100644 index c2f9a44dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7791.pgm b/examples/autotiler/Mnist/test_img/0/7791.pgm deleted file mode 100644 index 18068d627..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7810.pgm b/examples/autotiler/Mnist/test_img/0/7810.pgm deleted file mode 100644 index 2e8da2200..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7817.pgm b/examples/autotiler/Mnist/test_img/0/7817.pgm deleted file mode 100644 index 696a0af6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7820.pgm b/examples/autotiler/Mnist/test_img/0/7820.pgm deleted file mode 100644 index 7ba68aa25..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7830.pgm b/examples/autotiler/Mnist/test_img/0/7830.pgm deleted file mode 100644 index 3084b6a64..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7835.pgm b/examples/autotiler/Mnist/test_img/0/7835.pgm deleted file mode 100644 index 0d96e82f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7838.pgm b/examples/autotiler/Mnist/test_img/0/7838.pgm deleted file mode 100644 index cbab232f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7846.pgm b/examples/autotiler/Mnist/test_img/0/7846.pgm deleted file mode 100644 index 0e20e4a39..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7855.pgm b/examples/autotiler/Mnist/test_img/0/7855.pgm deleted file mode 100644 index 6366dfcdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7866.pgm b/examples/autotiler/Mnist/test_img/0/7866.pgm deleted file mode 100644 index 6cb2c4068..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7868.pgm b/examples/autotiler/Mnist/test_img/0/7868.pgm deleted file mode 100644 index baead60be..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7873.pgm b/examples/autotiler/Mnist/test_img/0/7873.pgm deleted file mode 100644 index b35ad70cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7882.pgm b/examples/autotiler/Mnist/test_img/0/7882.pgm deleted file mode 100644 index bdb263cc2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7887.pgm b/examples/autotiler/Mnist/test_img/0/7887.pgm deleted file mode 100644 index 4083d85ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7889.pgm b/examples/autotiler/Mnist/test_img/0/7889.pgm deleted file mode 100644 index f15019854..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7898.pgm b/examples/autotiler/Mnist/test_img/0/7898.pgm deleted file mode 100644 index be54fd541..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7907.pgm b/examples/autotiler/Mnist/test_img/0/7907.pgm deleted file mode 100644 index cbfab9a76..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7913.pgm b/examples/autotiler/Mnist/test_img/0/7913.pgm deleted file mode 100644 index fe4bf341f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7933.pgm b/examples/autotiler/Mnist/test_img/0/7933.pgm deleted file mode 100644 index 5980dccd4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/794.pgm b/examples/autotiler/Mnist/test_img/0/794.pgm deleted file mode 100644 index 046fd06ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7943.pgm b/examples/autotiler/Mnist/test_img/0/7943.pgm deleted file mode 100644 index c0e2ee72e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7953.pgm b/examples/autotiler/Mnist/test_img/0/7953.pgm deleted file mode 100644 index dcc85be54..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7967.pgm b/examples/autotiler/Mnist/test_img/0/7967.pgm deleted file mode 100644 index 8cd39eab2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7987.pgm b/examples/autotiler/Mnist/test_img/0/7987.pgm deleted file mode 100644 index 29c8ba5e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/7989.pgm b/examples/autotiler/Mnist/test_img/0/7989.pgm deleted file mode 100644 index 73b776b99..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/7989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8007.pgm b/examples/autotiler/Mnist/test_img/0/8007.pgm deleted file mode 100644 index 101d433c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8016.pgm b/examples/autotiler/Mnist/test_img/0/8016.pgm deleted file mode 100644 index ce9dbf307..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8021.pgm b/examples/autotiler/Mnist/test_img/0/8021.pgm deleted file mode 100644 index 02c09569c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8023.pgm b/examples/autotiler/Mnist/test_img/0/8023.pgm deleted file mode 100644 index eaa878965..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8029.pgm b/examples/autotiler/Mnist/test_img/0/8029.pgm deleted file mode 100644 index cc54ab0e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/804.pgm b/examples/autotiler/Mnist/test_img/0/804.pgm deleted file mode 100644 index bb3eed5fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8055.pgm b/examples/autotiler/Mnist/test_img/0/8055.pgm deleted file mode 100644 index 4d79ec919..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8056.pgm b/examples/autotiler/Mnist/test_img/0/8056.pgm deleted file mode 100644 index aad7cc6f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8057.pgm b/examples/autotiler/Mnist/test_img/0/8057.pgm deleted file mode 100644 index d12a92bbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8067.pgm b/examples/autotiler/Mnist/test_img/0/8067.pgm deleted file mode 100644 index 101685ac0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8077.pgm b/examples/autotiler/Mnist/test_img/0/8077.pgm deleted file mode 100644 index af86ac3ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8085.pgm b/examples/autotiler/Mnist/test_img/0/8085.pgm deleted file mode 100644 index 65d8a33d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8098.pgm b/examples/autotiler/Mnist/test_img/0/8098.pgm deleted file mode 100644 index 7bdb192d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8111.pgm b/examples/autotiler/Mnist/test_img/0/8111.pgm deleted file mode 100644 index 658551290..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8114.pgm b/examples/autotiler/Mnist/test_img/0/8114.pgm deleted file mode 100644 index a3e1ba6c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8117.pgm b/examples/autotiler/Mnist/test_img/0/8117.pgm deleted file mode 100644 index 106e9cf7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8127.pgm b/examples/autotiler/Mnist/test_img/0/8127.pgm deleted file mode 100644 index 00d1b509c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8137.pgm b/examples/autotiler/Mnist/test_img/0/8137.pgm deleted file mode 100644 index eea372125..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8152.pgm b/examples/autotiler/Mnist/test_img/0/8152.pgm deleted file mode 100644 index 912a242a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8163.pgm b/examples/autotiler/Mnist/test_img/0/8163.pgm deleted file mode 100644 index 29ecb4f0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8172.pgm b/examples/autotiler/Mnist/test_img/0/8172.pgm deleted file mode 100644 index ebe0307d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8179.pgm b/examples/autotiler/Mnist/test_img/0/8179.pgm deleted file mode 100644 index bde8bb424..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8194.pgm b/examples/autotiler/Mnist/test_img/0/8194.pgm deleted file mode 100644 index fe28760ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8195.pgm b/examples/autotiler/Mnist/test_img/0/8195.pgm deleted file mode 100644 index 0a8be0240..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8199.pgm b/examples/autotiler/Mnist/test_img/0/8199.pgm deleted file mode 100644 index 453574b7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/821.pgm b/examples/autotiler/Mnist/test_img/0/821.pgm deleted file mode 100644 index feac2c413..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8212.pgm b/examples/autotiler/Mnist/test_img/0/8212.pgm deleted file mode 100644 index a5804cb28..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8221.pgm b/examples/autotiler/Mnist/test_img/0/8221.pgm deleted file mode 100644 index 32f133ec3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8228.pgm b/examples/autotiler/Mnist/test_img/0/8228.pgm deleted file mode 100644 index 774f598e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8243.pgm b/examples/autotiler/Mnist/test_img/0/8243.pgm deleted file mode 100644 index 4a8c33f2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8251.pgm b/examples/autotiler/Mnist/test_img/0/8251.pgm deleted file mode 100644 index d2db6eaac..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8260.pgm b/examples/autotiler/Mnist/test_img/0/8260.pgm deleted file mode 100644 index 4d88b1d12..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8273.pgm b/examples/autotiler/Mnist/test_img/0/8273.pgm deleted file mode 100644 index 94ae6c003..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8278.pgm b/examples/autotiler/Mnist/test_img/0/8278.pgm deleted file mode 100644 index b75b76981..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8283.pgm b/examples/autotiler/Mnist/test_img/0/8283.pgm deleted file mode 100644 index 32c23a401..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8307.pgm b/examples/autotiler/Mnist/test_img/0/8307.pgm deleted file mode 100644 index faf7300e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8325.pgm b/examples/autotiler/Mnist/test_img/0/8325.pgm deleted file mode 100644 index 7e57cffdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8335.pgm b/examples/autotiler/Mnist/test_img/0/8335.pgm deleted file mode 100644 index 1ba73c42e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8338.pgm b/examples/autotiler/Mnist/test_img/0/8338.pgm deleted file mode 100644 index 7ebca3d89..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8342.pgm b/examples/autotiler/Mnist/test_img/0/8342.pgm deleted file mode 100644 index 7a25c63ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8343.pgm b/examples/autotiler/Mnist/test_img/0/8343.pgm deleted file mode 100644 index f76f1f81f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8351.pgm b/examples/autotiler/Mnist/test_img/0/8351.pgm deleted file mode 100644 index e3b4059d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8359.pgm b/examples/autotiler/Mnist/test_img/0/8359.pgm deleted file mode 100644 index da12699d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8373.pgm b/examples/autotiler/Mnist/test_img/0/8373.pgm deleted file mode 100644 index a156affef..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8382.pgm b/examples/autotiler/Mnist/test_img/0/8382.pgm deleted file mode 100644 index ef41f6ab8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8388.pgm b/examples/autotiler/Mnist/test_img/0/8388.pgm deleted file mode 100644 index 60607aa8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8389.pgm b/examples/autotiler/Mnist/test_img/0/8389.pgm deleted file mode 100644 index 1eb9a5ba0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8414.pgm b/examples/autotiler/Mnist/test_img/0/8414.pgm deleted file mode 100644 index 4c06ba2f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8425.pgm b/examples/autotiler/Mnist/test_img/0/8425.pgm deleted file mode 100644 index 89f379194..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8448.pgm b/examples/autotiler/Mnist/test_img/0/8448.pgm deleted file mode 100644 index 18bd7d5ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/845.pgm b/examples/autotiler/Mnist/test_img/0/845.pgm deleted file mode 100644 index 0bbba3701..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8458.pgm b/examples/autotiler/Mnist/test_img/0/8458.pgm deleted file mode 100644 index 736ade341..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8468.pgm b/examples/autotiler/Mnist/test_img/0/8468.pgm deleted file mode 100644 index abe5ff15d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8481.pgm b/examples/autotiler/Mnist/test_img/0/8481.pgm deleted file mode 100644 index 755ea082b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8490.pgm b/examples/autotiler/Mnist/test_img/0/8490.pgm deleted file mode 100644 index 1decb5e08..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8496.pgm b/examples/autotiler/Mnist/test_img/0/8496.pgm deleted file mode 100644 index 29b689da4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8501.pgm b/examples/autotiler/Mnist/test_img/0/8501.pgm deleted file mode 100644 index 35eafb1fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/851.pgm b/examples/autotiler/Mnist/test_img/0/851.pgm deleted file mode 100644 index 8d29f2af4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8513.pgm b/examples/autotiler/Mnist/test_img/0/8513.pgm deleted file mode 100644 index 788af350a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8514.pgm b/examples/autotiler/Mnist/test_img/0/8514.pgm deleted file mode 100644 index 9c2777701..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8528.pgm b/examples/autotiler/Mnist/test_img/0/8528.pgm deleted file mode 100644 index a4a08a09d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8535.pgm b/examples/autotiler/Mnist/test_img/0/8535.pgm deleted file mode 100644 index a04b454cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/854.pgm b/examples/autotiler/Mnist/test_img/0/854.pgm deleted file mode 100644 index ed8e5eb84..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8548.pgm b/examples/autotiler/Mnist/test_img/0/8548.pgm deleted file mode 100644 index 434d6ceb4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8558.pgm b/examples/autotiler/Mnist/test_img/0/8558.pgm deleted file mode 100644 index 8903eb4c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8567.pgm b/examples/autotiler/Mnist/test_img/0/8567.pgm deleted file mode 100644 index e0fae435c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8576.pgm b/examples/autotiler/Mnist/test_img/0/8576.pgm deleted file mode 100644 index 1ee4e579f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8587.pgm b/examples/autotiler/Mnist/test_img/0/8587.pgm deleted file mode 100644 index 25e986a26..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8595.pgm b/examples/autotiler/Mnist/test_img/0/8595.pgm deleted file mode 100644 index 5d21ce998..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8611.pgm b/examples/autotiler/Mnist/test_img/0/8611.pgm deleted file mode 100644 index 9caf5c074..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8614.pgm b/examples/autotiler/Mnist/test_img/0/8614.pgm deleted file mode 100644 index 40f020d13..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8619.pgm b/examples/autotiler/Mnist/test_img/0/8619.pgm deleted file mode 100644 index f3c9c95d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8621.pgm b/examples/autotiler/Mnist/test_img/0/8621.pgm deleted file mode 100644 index 4456ec752..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8629.pgm b/examples/autotiler/Mnist/test_img/0/8629.pgm deleted file mode 100644 index 5970b0556..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8634.pgm b/examples/autotiler/Mnist/test_img/0/8634.pgm deleted file mode 100644 index 4ab3f6034..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8657.pgm b/examples/autotiler/Mnist/test_img/0/8657.pgm deleted file mode 100644 index 35ca8aef7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8671.pgm b/examples/autotiler/Mnist/test_img/0/8671.pgm deleted file mode 100644 index c37a15451..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8681.pgm b/examples/autotiler/Mnist/test_img/0/8681.pgm deleted file mode 100644 index 388b0aa15..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8691.pgm b/examples/autotiler/Mnist/test_img/0/8691.pgm deleted file mode 100644 index c08d9b64e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/871.pgm b/examples/autotiler/Mnist/test_img/0/871.pgm deleted file mode 100644 index f1a5b9843..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8730.pgm b/examples/autotiler/Mnist/test_img/0/8730.pgm deleted file mode 100644 index 6d68032fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8731.pgm b/examples/autotiler/Mnist/test_img/0/8731.pgm deleted file mode 100644 index b35ffbe09..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8738.pgm b/examples/autotiler/Mnist/test_img/0/8738.pgm deleted file mode 100644 index 89e679398..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8748.pgm b/examples/autotiler/Mnist/test_img/0/8748.pgm deleted file mode 100644 index 167d1f235..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8752.pgm b/examples/autotiler/Mnist/test_img/0/8752.pgm deleted file mode 100644 index c2ce0daa0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8763.pgm b/examples/autotiler/Mnist/test_img/0/8763.pgm deleted file mode 100644 index 29407ddb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8764.pgm b/examples/autotiler/Mnist/test_img/0/8764.pgm deleted file mode 100644 index d664324a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8765.pgm b/examples/autotiler/Mnist/test_img/0/8765.pgm deleted file mode 100644 index 652c3e9c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8772.pgm b/examples/autotiler/Mnist/test_img/0/8772.pgm deleted file mode 100644 index a52a9d5aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8795.pgm b/examples/autotiler/Mnist/test_img/0/8795.pgm deleted file mode 100644 index 9bf3dcdfe..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8798.pgm b/examples/autotiler/Mnist/test_img/0/8798.pgm deleted file mode 100644 index 1f135588a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8808.pgm b/examples/autotiler/Mnist/test_img/0/8808.pgm deleted file mode 100644 index 025d40d6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8818.pgm b/examples/autotiler/Mnist/test_img/0/8818.pgm deleted file mode 100644 index b4a57eda2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/884.pgm b/examples/autotiler/Mnist/test_img/0/884.pgm deleted file mode 100644 index 537bb00b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8845.pgm b/examples/autotiler/Mnist/test_img/0/8845.pgm deleted file mode 100644 index 8a7a2309c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8849.pgm b/examples/autotiler/Mnist/test_img/0/8849.pgm deleted file mode 100644 index c8a202b8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8851.pgm b/examples/autotiler/Mnist/test_img/0/8851.pgm deleted file mode 100644 index f4d1d0043..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8858.pgm b/examples/autotiler/Mnist/test_img/0/8858.pgm deleted file mode 100644 index 0c3238b35..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8859.pgm b/examples/autotiler/Mnist/test_img/0/8859.pgm deleted file mode 100644 index 9f581fd1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8865.pgm b/examples/autotiler/Mnist/test_img/0/8865.pgm deleted file mode 100644 index ec2e0a757..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8868.pgm b/examples/autotiler/Mnist/test_img/0/8868.pgm deleted file mode 100644 index 7b66b6e9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8881.pgm b/examples/autotiler/Mnist/test_img/0/8881.pgm deleted file mode 100644 index 4e8413aef..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8895.pgm b/examples/autotiler/Mnist/test_img/0/8895.pgm deleted file mode 100644 index bc3d0873d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8913.pgm b/examples/autotiler/Mnist/test_img/0/8913.pgm deleted file mode 100644 index 7180cb41b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8921.pgm b/examples/autotiler/Mnist/test_img/0/8921.pgm deleted file mode 100644 index ba97bc0ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8929.pgm b/examples/autotiler/Mnist/test_img/0/8929.pgm deleted file mode 100644 index 5f6aab2d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/895.pgm b/examples/autotiler/Mnist/test_img/0/895.pgm deleted file mode 100644 index df06b862e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8951.pgm b/examples/autotiler/Mnist/test_img/0/8951.pgm deleted file mode 100644 index af8bd752a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/896.pgm b/examples/autotiler/Mnist/test_img/0/896.pgm deleted file mode 100644 index 702786b18..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8978.pgm b/examples/autotiler/Mnist/test_img/0/8978.pgm deleted file mode 100644 index 60eac92c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8983.pgm b/examples/autotiler/Mnist/test_img/0/8983.pgm deleted file mode 100644 index 540406528..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8991.pgm b/examples/autotiler/Mnist/test_img/0/8991.pgm deleted file mode 100644 index 40f07117e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8992.pgm b/examples/autotiler/Mnist/test_img/0/8992.pgm deleted file mode 100644 index ab88a44e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/8999.pgm b/examples/autotiler/Mnist/test_img/0/8999.pgm deleted file mode 100644 index 3f507f465..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/8999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9004.pgm b/examples/autotiler/Mnist/test_img/0/9004.pgm deleted file mode 100644 index dba2d3a68..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9016.pgm b/examples/autotiler/Mnist/test_img/0/9016.pgm deleted file mode 100644 index ece29e369..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9037.pgm b/examples/autotiler/Mnist/test_img/0/9037.pgm deleted file mode 100644 index ec828861e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9038.pgm b/examples/autotiler/Mnist/test_img/0/9038.pgm deleted file mode 100644 index 6fbb3ab74..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/904.pgm b/examples/autotiler/Mnist/test_img/0/904.pgm deleted file mode 100644 index 4c820fa0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9052.pgm b/examples/autotiler/Mnist/test_img/0/9052.pgm deleted file mode 100644 index 010f6ceb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9060.pgm b/examples/autotiler/Mnist/test_img/0/9060.pgm deleted file mode 100644 index 17774e7eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9070.pgm b/examples/autotiler/Mnist/test_img/0/9070.pgm deleted file mode 100644 index 062ca004c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9080.pgm b/examples/autotiler/Mnist/test_img/0/9080.pgm deleted file mode 100644 index e831ca410..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9095.pgm b/examples/autotiler/Mnist/test_img/0/9095.pgm deleted file mode 100644 index 46b2b31ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9105.pgm b/examples/autotiler/Mnist/test_img/0/9105.pgm deleted file mode 100644 index 1302bb5f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9134.pgm b/examples/autotiler/Mnist/test_img/0/9134.pgm deleted file mode 100644 index 88875fc51..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9137.pgm b/examples/autotiler/Mnist/test_img/0/9137.pgm deleted file mode 100644 index 58fabc48e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9158.pgm b/examples/autotiler/Mnist/test_img/0/9158.pgm deleted file mode 100644 index 993c0b951..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9162.pgm b/examples/autotiler/Mnist/test_img/0/9162.pgm deleted file mode 100644 index a5932d176..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9167.pgm b/examples/autotiler/Mnist/test_img/0/9167.pgm deleted file mode 100644 index 92c5511fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9174.pgm b/examples/autotiler/Mnist/test_img/0/9174.pgm deleted file mode 100644 index e47dfe3c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9179.pgm b/examples/autotiler/Mnist/test_img/0/9179.pgm deleted file mode 100644 index c8bfa3470..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9189.pgm b/examples/autotiler/Mnist/test_img/0/9189.pgm deleted file mode 100644 index 4701f2f9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9199.pgm b/examples/autotiler/Mnist/test_img/0/9199.pgm deleted file mode 100644 index 9261c4425..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9220.pgm b/examples/autotiler/Mnist/test_img/0/9220.pgm deleted file mode 100644 index 87f4cadb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9221.pgm b/examples/autotiler/Mnist/test_img/0/9221.pgm deleted file mode 100644 index ccfc08272..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9223.pgm b/examples/autotiler/Mnist/test_img/0/9223.pgm deleted file mode 100644 index bd1161bb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9230.pgm b/examples/autotiler/Mnist/test_img/0/9230.pgm deleted file mode 100644 index 5f999843f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9236.pgm b/examples/autotiler/Mnist/test_img/0/9236.pgm deleted file mode 100644 index 013bd9a0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9239.pgm b/examples/autotiler/Mnist/test_img/0/9239.pgm deleted file mode 100644 index 0861d79c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9244.pgm b/examples/autotiler/Mnist/test_img/0/9244.pgm deleted file mode 100644 index 3b32c4c70..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9264.pgm b/examples/autotiler/Mnist/test_img/0/9264.pgm deleted file mode 100644 index 423cab42b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9273.pgm b/examples/autotiler/Mnist/test_img/0/9273.pgm deleted file mode 100644 index 2d290e172..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9281.pgm b/examples/autotiler/Mnist/test_img/0/9281.pgm deleted file mode 100644 index 9a8e2d7d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9296.pgm b/examples/autotiler/Mnist/test_img/0/9296.pgm deleted file mode 100644 index 55c8bb155..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9297.pgm b/examples/autotiler/Mnist/test_img/0/9297.pgm deleted file mode 100644 index d412b46e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9310.pgm b/examples/autotiler/Mnist/test_img/0/9310.pgm deleted file mode 100644 index bb4b4a683..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9311.pgm b/examples/autotiler/Mnist/test_img/0/9311.pgm deleted file mode 100644 index fe012392d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/932.pgm b/examples/autotiler/Mnist/test_img/0/932.pgm deleted file mode 100644 index 6bea8d040..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9325.pgm b/examples/autotiler/Mnist/test_img/0/9325.pgm deleted file mode 100644 index 5b25742aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9339.pgm b/examples/autotiler/Mnist/test_img/0/9339.pgm deleted file mode 100644 index bbafc7412..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9352.pgm b/examples/autotiler/Mnist/test_img/0/9352.pgm deleted file mode 100644 index 1bc9b97e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9358.pgm b/examples/autotiler/Mnist/test_img/0/9358.pgm deleted file mode 100644 index ca91ea070..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9367.pgm b/examples/autotiler/Mnist/test_img/0/9367.pgm deleted file mode 100644 index d83e057fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9377.pgm b/examples/autotiler/Mnist/test_img/0/9377.pgm deleted file mode 100644 index 3a188695b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9387.pgm b/examples/autotiler/Mnist/test_img/0/9387.pgm deleted file mode 100644 index fb668007b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9396.pgm b/examples/autotiler/Mnist/test_img/0/9396.pgm deleted file mode 100644 index 7eb049ba2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9405.pgm b/examples/autotiler/Mnist/test_img/0/9405.pgm deleted file mode 100644 index f63f7cbd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9414.pgm b/examples/autotiler/Mnist/test_img/0/9414.pgm deleted file mode 100644 index 66af56480..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9425.pgm b/examples/autotiler/Mnist/test_img/0/9425.pgm deleted file mode 100644 index 8022f8e9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9436.pgm b/examples/autotiler/Mnist/test_img/0/9436.pgm deleted file mode 100644 index f655a77dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9439.pgm b/examples/autotiler/Mnist/test_img/0/9439.pgm deleted file mode 100644 index a246f685c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9440.pgm b/examples/autotiler/Mnist/test_img/0/9440.pgm deleted file mode 100644 index 50ec65737..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9455.pgm b/examples/autotiler/Mnist/test_img/0/9455.pgm deleted file mode 100644 index 91f0060ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9457.pgm b/examples/autotiler/Mnist/test_img/0/9457.pgm deleted file mode 100644 index 34475d66d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9459.pgm b/examples/autotiler/Mnist/test_img/0/9459.pgm deleted file mode 100644 index 730656952..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9488.pgm b/examples/autotiler/Mnist/test_img/0/9488.pgm deleted file mode 100644 index b4b16ae10..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9498.pgm b/examples/autotiler/Mnist/test_img/0/9498.pgm deleted file mode 100644 index 326d78da2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9508.pgm b/examples/autotiler/Mnist/test_img/0/9508.pgm deleted file mode 100644 index 0bb55769d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9519.pgm b/examples/autotiler/Mnist/test_img/0/9519.pgm deleted file mode 100644 index 6c8160be4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9527.pgm b/examples/autotiler/Mnist/test_img/0/9527.pgm deleted file mode 100644 index 27ae0096c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9528.pgm b/examples/autotiler/Mnist/test_img/0/9528.pgm deleted file mode 100644 index cd0e39dc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9542.pgm b/examples/autotiler/Mnist/test_img/0/9542.pgm deleted file mode 100644 index b41c42e94..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9552.pgm b/examples/autotiler/Mnist/test_img/0/9552.pgm deleted file mode 100644 index cf6dbf139..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9585.pgm b/examples/autotiler/Mnist/test_img/0/9585.pgm deleted file mode 100644 index dfeb4b1c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9601.pgm b/examples/autotiler/Mnist/test_img/0/9601.pgm deleted file mode 100644 index f961f7b2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9611.pgm b/examples/autotiler/Mnist/test_img/0/9611.pgm deleted file mode 100644 index 6dac311bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9621.pgm b/examples/autotiler/Mnist/test_img/0/9621.pgm deleted file mode 100644 index d5876560b..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9631.pgm b/examples/autotiler/Mnist/test_img/0/9631.pgm deleted file mode 100644 index 75b4a5492..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9633.pgm b/examples/autotiler/Mnist/test_img/0/9633.pgm deleted file mode 100644 index 246cc7f0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9634.pgm b/examples/autotiler/Mnist/test_img/0/9634.pgm deleted file mode 100644 index b65c57c03..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9647.pgm b/examples/autotiler/Mnist/test_img/0/9647.pgm deleted file mode 100644 index a533fa213..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9648.pgm b/examples/autotiler/Mnist/test_img/0/9648.pgm deleted file mode 100644 index 71f6d4ffd..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9663.pgm b/examples/autotiler/Mnist/test_img/0/9663.pgm deleted file mode 100644 index 1b427f4b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9666.pgm b/examples/autotiler/Mnist/test_img/0/9666.pgm deleted file mode 100644 index 27956a664..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9677.pgm b/examples/autotiler/Mnist/test_img/0/9677.pgm deleted file mode 100644 index e9f7d47c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9687.pgm b/examples/autotiler/Mnist/test_img/0/9687.pgm deleted file mode 100644 index f4897173c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9688.pgm b/examples/autotiler/Mnist/test_img/0/9688.pgm deleted file mode 100644 index cf2fd1200..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9704.pgm b/examples/autotiler/Mnist/test_img/0/9704.pgm deleted file mode 100644 index fdfa1e03e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9714.pgm b/examples/autotiler/Mnist/test_img/0/9714.pgm deleted file mode 100644 index b88408b3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/972.pgm b/examples/autotiler/Mnist/test_img/0/972.pgm deleted file mode 100644 index 86ab9d598..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9724.pgm b/examples/autotiler/Mnist/test_img/0/9724.pgm deleted file mode 100644 index c9d67a724..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9739.pgm b/examples/autotiler/Mnist/test_img/0/9739.pgm deleted file mode 100644 index f82c3a8d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9753.pgm b/examples/autotiler/Mnist/test_img/0/9753.pgm deleted file mode 100644 index 1939d562d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9757.pgm b/examples/autotiler/Mnist/test_img/0/9757.pgm deleted file mode 100644 index 078083075..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9761.pgm b/examples/autotiler/Mnist/test_img/0/9761.pgm deleted file mode 100644 index 7919a1cc5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9763.pgm b/examples/autotiler/Mnist/test_img/0/9763.pgm deleted file mode 100644 index e046835b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9791.pgm b/examples/autotiler/Mnist/test_img/0/9791.pgm deleted file mode 100644 index f8a4bba15..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9800.pgm b/examples/autotiler/Mnist/test_img/0/9800.pgm deleted file mode 100644 index 02481ad56..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9801.pgm b/examples/autotiler/Mnist/test_img/0/9801.pgm deleted file mode 100644 index 385ccce38..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9809.pgm b/examples/autotiler/Mnist/test_img/0/9809.pgm deleted file mode 100644 index 2a865611a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/981.pgm b/examples/autotiler/Mnist/test_img/0/981.pgm deleted file mode 100644 index a3bb8acb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9818.pgm b/examples/autotiler/Mnist/test_img/0/9818.pgm deleted file mode 100644 index 572de6870..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9826.pgm b/examples/autotiler/Mnist/test_img/0/9826.pgm deleted file mode 100644 index 68e979190..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9850.pgm b/examples/autotiler/Mnist/test_img/0/9850.pgm deleted file mode 100644 index af45e6eda..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9865.pgm b/examples/autotiler/Mnist/test_img/0/9865.pgm deleted file mode 100644 index 274e1470d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9879.pgm b/examples/autotiler/Mnist/test_img/0/9879.pgm deleted file mode 100644 index e28c2328f..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9885.pgm b/examples/autotiler/Mnist/test_img/0/9885.pgm deleted file mode 100644 index db7843c2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9897.pgm b/examples/autotiler/Mnist/test_img/0/9897.pgm deleted file mode 100644 index 0b358cb39..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9902.pgm b/examples/autotiler/Mnist/test_img/0/9902.pgm deleted file mode 100644 index 81054ec25..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9911.pgm b/examples/autotiler/Mnist/test_img/0/9911.pgm deleted file mode 100644 index 769bc830a..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/993.pgm b/examples/autotiler/Mnist/test_img/0/993.pgm deleted file mode 100644 index be9be8c9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9930.pgm b/examples/autotiler/Mnist/test_img/0/9930.pgm deleted file mode 100644 index 7725b81a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9939.pgm b/examples/autotiler/Mnist/test_img/0/9939.pgm deleted file mode 100644 index 78307b0a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9948.pgm b/examples/autotiler/Mnist/test_img/0/9948.pgm deleted file mode 100644 index b431c97df..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9951.pgm b/examples/autotiler/Mnist/test_img/0/9951.pgm deleted file mode 100644 index 41d2defd7..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9952.pgm b/examples/autotiler/Mnist/test_img/0/9952.pgm deleted file mode 100644 index 9e068c67e..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9962.pgm b/examples/autotiler/Mnist/test_img/0/9962.pgm deleted file mode 100644 index adff39829..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9964.pgm b/examples/autotiler/Mnist/test_img/0/9964.pgm deleted file mode 100644 index 45e4c80b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/997.pgm b/examples/autotiler/Mnist/test_img/0/997.pgm deleted file mode 100644 index 7e39ebb41..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9983.pgm b/examples/autotiler/Mnist/test_img/0/9983.pgm deleted file mode 100644 index 99be53e10..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/0/9993.pgm b/examples/autotiler/Mnist/test_img/0/9993.pgm deleted file mode 100644 index 2bf486e09..000000000 Binary files a/examples/autotiler/Mnist/test_img/0/9993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1004.pgm b/examples/autotiler/Mnist/test_img/1/1004.pgm deleted file mode 100644 index 2af5c38b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1008.pgm b/examples/autotiler/Mnist/test_img/1/1008.pgm deleted file mode 100644 index eda855aee..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1011.pgm b/examples/autotiler/Mnist/test_img/1/1011.pgm deleted file mode 100644 index 5cea2e744..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1019.pgm b/examples/autotiler/Mnist/test_img/1/1019.pgm deleted file mode 100644 index 6c685ab26..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1025.pgm b/examples/autotiler/Mnist/test_img/1/1025.pgm deleted file mode 100644 index a6180e688..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1027.pgm b/examples/autotiler/Mnist/test_img/1/1027.pgm deleted file mode 100644 index c75034f45..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1030.pgm b/examples/autotiler/Mnist/test_img/1/1030.pgm deleted file mode 100644 index c6fc54c13..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1037.pgm b/examples/autotiler/Mnist/test_img/1/1037.pgm deleted file mode 100644 index e950b27c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1038.pgm b/examples/autotiler/Mnist/test_img/1/1038.pgm deleted file mode 100644 index 66deb726c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1040.pgm b/examples/autotiler/Mnist/test_img/1/1040.pgm deleted file mode 100644 index 74ed2d688..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1054.pgm b/examples/autotiler/Mnist/test_img/1/1054.pgm deleted file mode 100644 index dd6520337..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/107.pgm b/examples/autotiler/Mnist/test_img/1/107.pgm deleted file mode 100644 index fccb43e7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1075.pgm b/examples/autotiler/Mnist/test_img/1/1075.pgm deleted file mode 100644 index 197374c1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1083.pgm b/examples/autotiler/Mnist/test_img/1/1083.pgm deleted file mode 100644 index 98871e638..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1097.pgm b/examples/autotiler/Mnist/test_img/1/1097.pgm deleted file mode 100644 index 248078734..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1129.pgm b/examples/autotiler/Mnist/test_img/1/1129.pgm deleted file mode 100644 index 4e7483902..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1136.pgm b/examples/autotiler/Mnist/test_img/1/1136.pgm deleted file mode 100644 index 712b1bfc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1137.pgm b/examples/autotiler/Mnist/test_img/1/1137.pgm deleted file mode 100644 index ba481606c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1139.pgm b/examples/autotiler/Mnist/test_img/1/1139.pgm deleted file mode 100644 index 46325801f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1179.pgm b/examples/autotiler/Mnist/test_img/1/1179.pgm deleted file mode 100644 index 5bc5af72c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1180.pgm b/examples/autotiler/Mnist/test_img/1/1180.pgm deleted file mode 100644 index 9b88afef1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1189.pgm b/examples/autotiler/Mnist/test_img/1/1189.pgm deleted file mode 100644 index 7e22ca851..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1193.pgm b/examples/autotiler/Mnist/test_img/1/1193.pgm deleted file mode 100644 index 28379d87f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1201.pgm b/examples/autotiler/Mnist/test_img/1/1201.pgm deleted file mode 100644 index b414d2b50..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1211.pgm b/examples/autotiler/Mnist/test_img/1/1211.pgm deleted file mode 100644 index 996a7178f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1213.pgm b/examples/autotiler/Mnist/test_img/1/1213.pgm deleted file mode 100644 index 68b6d14cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1214.pgm b/examples/autotiler/Mnist/test_img/1/1214.pgm deleted file mode 100644 index 9f66d6047..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1236.pgm b/examples/autotiler/Mnist/test_img/1/1236.pgm deleted file mode 100644 index cead6120a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1238.pgm b/examples/autotiler/Mnist/test_img/1/1238.pgm deleted file mode 100644 index de1e7341a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1240.pgm b/examples/autotiler/Mnist/test_img/1/1240.pgm deleted file mode 100644 index a37f448ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1254.pgm b/examples/autotiler/Mnist/test_img/1/1254.pgm deleted file mode 100644 index 9cd769c37..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1257.pgm b/examples/autotiler/Mnist/test_img/1/1257.pgm deleted file mode 100644 index d4ff3d951..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1280.pgm b/examples/autotiler/Mnist/test_img/1/1280.pgm deleted file mode 100644 index ff6d1e18a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1295.pgm b/examples/autotiler/Mnist/test_img/1/1295.pgm deleted file mode 100644 index 4223c0670..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1302.pgm b/examples/autotiler/Mnist/test_img/1/1302.pgm deleted file mode 100644 index d874dff86..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1305.pgm b/examples/autotiler/Mnist/test_img/1/1305.pgm deleted file mode 100644 index b12d832ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1316.pgm b/examples/autotiler/Mnist/test_img/1/1316.pgm deleted file mode 100644 index cf9e49ec3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1318.pgm b/examples/autotiler/Mnist/test_img/1/1318.pgm deleted file mode 100644 index e269b6787..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1329.pgm b/examples/autotiler/Mnist/test_img/1/1329.pgm deleted file mode 100644 index 977554eb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1338.pgm b/examples/autotiler/Mnist/test_img/1/1338.pgm deleted file mode 100644 index 2442a029d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/135.pgm b/examples/autotiler/Mnist/test_img/1/135.pgm deleted file mode 100644 index 33a605a26..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1350.pgm b/examples/autotiler/Mnist/test_img/1/1350.pgm deleted file mode 100644 index 42ddc8f95..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1351.pgm b/examples/autotiler/Mnist/test_img/1/1351.pgm deleted file mode 100644 index 33dce9c18..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1358.pgm b/examples/autotiler/Mnist/test_img/1/1358.pgm deleted file mode 100644 index 0be3f9271..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1360.pgm b/examples/autotiler/Mnist/test_img/1/1360.pgm deleted file mode 100644 index 83d1bd0b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1368.pgm b/examples/autotiler/Mnist/test_img/1/1368.pgm deleted file mode 100644 index 3d4ee7a32..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/137.pgm b/examples/autotiler/Mnist/test_img/1/137.pgm deleted file mode 100644 index 528b1518f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1392.pgm b/examples/autotiler/Mnist/test_img/1/1392.pgm deleted file mode 100644 index 148e9c8ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1397.pgm b/examples/autotiler/Mnist/test_img/1/1397.pgm deleted file mode 100644 index f7822b071..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/14.pgm b/examples/autotiler/Mnist/test_img/1/14.pgm deleted file mode 100644 index 20ff5a018..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/14.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1403.pgm b/examples/autotiler/Mnist/test_img/1/1403.pgm deleted file mode 100644 index 5d954c69b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1424.pgm b/examples/autotiler/Mnist/test_img/1/1424.pgm deleted file mode 100644 index 67f8e9956..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/143.pgm b/examples/autotiler/Mnist/test_img/1/143.pgm deleted file mode 100644 index d5e3467d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1430.pgm b/examples/autotiler/Mnist/test_img/1/1430.pgm deleted file mode 100644 index 45fc09f84..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1434.pgm b/examples/autotiler/Mnist/test_img/1/1434.pgm deleted file mode 100644 index 71d85c76a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1448.pgm b/examples/autotiler/Mnist/test_img/1/1448.pgm deleted file mode 100644 index 4c20b31bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/145.pgm b/examples/autotiler/Mnist/test_img/1/145.pgm deleted file mode 100644 index e78242598..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1483.pgm b/examples/autotiler/Mnist/test_img/1/1483.pgm deleted file mode 100644 index e3514df27..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1484.pgm b/examples/autotiler/Mnist/test_img/1/1484.pgm deleted file mode 100644 index 23d4aaee4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1515.pgm b/examples/autotiler/Mnist/test_img/1/1515.pgm deleted file mode 100644 index b576c480f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1527.pgm b/examples/autotiler/Mnist/test_img/1/1527.pgm deleted file mode 100644 index 4adf530c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1528.pgm b/examples/autotiler/Mnist/test_img/1/1528.pgm deleted file mode 100644 index e3b72f4e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/154.pgm b/examples/autotiler/Mnist/test_img/1/154.pgm deleted file mode 100644 index 10d020352..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1548.pgm b/examples/autotiler/Mnist/test_img/1/1548.pgm deleted file mode 100644 index 1c4819278..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1555.pgm b/examples/autotiler/Mnist/test_img/1/1555.pgm deleted file mode 100644 index 13b5fd18c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1582.pgm b/examples/autotiler/Mnist/test_img/1/1582.pgm deleted file mode 100644 index 60d3f845b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1603.pgm b/examples/autotiler/Mnist/test_img/1/1603.pgm deleted file mode 100644 index 587b7dc21..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1630.pgm b/examples/autotiler/Mnist/test_img/1/1630.pgm deleted file mode 100644 index d5f50bc57..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1633.pgm b/examples/autotiler/Mnist/test_img/1/1633.pgm deleted file mode 100644 index a68a46596..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1643.pgm b/examples/autotiler/Mnist/test_img/1/1643.pgm deleted file mode 100644 index 9e5cbb46d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1646.pgm b/examples/autotiler/Mnist/test_img/1/1646.pgm deleted file mode 100644 index 00f545763..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1657.pgm b/examples/autotiler/Mnist/test_img/1/1657.pgm deleted file mode 100644 index a09e822be..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1659.pgm b/examples/autotiler/Mnist/test_img/1/1659.pgm deleted file mode 100644 index 51b0e1982..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1667.pgm b/examples/autotiler/Mnist/test_img/1/1667.pgm deleted file mode 100644 index 50e62bef2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1673.pgm b/examples/autotiler/Mnist/test_img/1/1673.pgm deleted file mode 100644 index 1798aedb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1674.pgm b/examples/autotiler/Mnist/test_img/1/1674.pgm deleted file mode 100644 index db6a7bf88..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/168.pgm b/examples/autotiler/Mnist/test_img/1/168.pgm deleted file mode 100644 index 9207ce244..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1691.pgm b/examples/autotiler/Mnist/test_img/1/1691.pgm deleted file mode 100644 index 84fd90deb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1704.pgm b/examples/autotiler/Mnist/test_img/1/1704.pgm deleted file mode 100644 index b6ba690b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1707.pgm b/examples/autotiler/Mnist/test_img/1/1707.pgm deleted file mode 100644 index 48b5a5f66..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1715.pgm b/examples/autotiler/Mnist/test_img/1/1715.pgm deleted file mode 100644 index 0f445161c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1728.pgm b/examples/autotiler/Mnist/test_img/1/1728.pgm deleted file mode 100644 index 59746755a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1729.pgm b/examples/autotiler/Mnist/test_img/1/1729.pgm deleted file mode 100644 index fc5f9a9fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1736.pgm b/examples/autotiler/Mnist/test_img/1/1736.pgm deleted file mode 100644 index b43a199b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1753.pgm b/examples/autotiler/Mnist/test_img/1/1753.pgm deleted file mode 100644 index b34c58243..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/176.pgm b/examples/autotiler/Mnist/test_img/1/176.pgm deleted file mode 100644 index d7880b180..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1760.pgm b/examples/autotiler/Mnist/test_img/1/1760.pgm deleted file mode 100644 index fd131bbb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1766.pgm b/examples/autotiler/Mnist/test_img/1/1766.pgm deleted file mode 100644 index de132b895..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1773.pgm b/examples/autotiler/Mnist/test_img/1/1773.pgm deleted file mode 100644 index 4d78fa2cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/178.pgm b/examples/autotiler/Mnist/test_img/1/178.pgm deleted file mode 100644 index 13c8d6f54..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1780.pgm b/examples/autotiler/Mnist/test_img/1/1780.pgm deleted file mode 100644 index 32599da2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1785.pgm b/examples/autotiler/Mnist/test_img/1/1785.pgm deleted file mode 100644 index 123e0c0fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1791.pgm b/examples/autotiler/Mnist/test_img/1/1791.pgm deleted file mode 100644 index e4f7b726b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/180.pgm b/examples/autotiler/Mnist/test_img/1/180.pgm deleted file mode 100644 index acac611ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1820.pgm b/examples/autotiler/Mnist/test_img/1/1820.pgm deleted file mode 100644 index 8c5a37542..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1829.pgm b/examples/autotiler/Mnist/test_img/1/1829.pgm deleted file mode 100644 index 3d5fc3e38..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1830.pgm b/examples/autotiler/Mnist/test_img/1/1830.pgm deleted file mode 100644 index b286944f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1834.pgm b/examples/autotiler/Mnist/test_img/1/1834.pgm deleted file mode 100644 index 7fe746427..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1835.pgm b/examples/autotiler/Mnist/test_img/1/1835.pgm deleted file mode 100644 index d17ce1331..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1836.pgm b/examples/autotiler/Mnist/test_img/1/1836.pgm deleted file mode 100644 index a5d76d847..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1838.pgm b/examples/autotiler/Mnist/test_img/1/1838.pgm deleted file mode 100644 index f8bd3a32d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1844.pgm b/examples/autotiler/Mnist/test_img/1/1844.pgm deleted file mode 100644 index 8ce272edd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1861.pgm b/examples/autotiler/Mnist/test_img/1/1861.pgm deleted file mode 100644 index 226303df7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1867.pgm b/examples/autotiler/Mnist/test_img/1/1867.pgm deleted file mode 100644 index 37fb4fe46..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1868.pgm b/examples/autotiler/Mnist/test_img/1/1868.pgm deleted file mode 100644 index b30d873fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1876.pgm b/examples/autotiler/Mnist/test_img/1/1876.pgm deleted file mode 100644 index faf94e3df..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1884.pgm b/examples/autotiler/Mnist/test_img/1/1884.pgm deleted file mode 100644 index c63f0ada0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1885.pgm b/examples/autotiler/Mnist/test_img/1/1885.pgm deleted file mode 100644 index b7dca2cae..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/189.pgm b/examples/autotiler/Mnist/test_img/1/189.pgm deleted file mode 100644 index 116fa6bc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1897.pgm b/examples/autotiler/Mnist/test_img/1/1897.pgm deleted file mode 100644 index 13c0c8da7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/190.pgm b/examples/autotiler/Mnist/test_img/1/190.pgm deleted file mode 100644 index 874f42d42..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1900.pgm b/examples/autotiler/Mnist/test_img/1/1900.pgm deleted file mode 100644 index 9af04b9ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1909.pgm b/examples/autotiler/Mnist/test_img/1/1909.pgm deleted file mode 100644 index 502658458..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/191.pgm b/examples/autotiler/Mnist/test_img/1/191.pgm deleted file mode 100644 index 5621f90e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1922.pgm b/examples/autotiler/Mnist/test_img/1/1922.pgm deleted file mode 100644 index 5caa281fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1934.pgm b/examples/autotiler/Mnist/test_img/1/1934.pgm deleted file mode 100644 index 60b8eaa7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1939.pgm b/examples/autotiler/Mnist/test_img/1/1939.pgm deleted file mode 100644 index ddcf076a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1945.pgm b/examples/autotiler/Mnist/test_img/1/1945.pgm deleted file mode 100644 index 5bf76f531..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/196.pgm b/examples/autotiler/Mnist/test_img/1/196.pgm deleted file mode 100644 index de875e3f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1986.pgm b/examples/autotiler/Mnist/test_img/1/1986.pgm deleted file mode 100644 index 997b5f197..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1988.pgm b/examples/autotiler/Mnist/test_img/1/1988.pgm deleted file mode 100644 index 54eae49cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1993.pgm b/examples/autotiler/Mnist/test_img/1/1993.pgm deleted file mode 100644 index 91ca139ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/1994.pgm b/examples/autotiler/Mnist/test_img/1/1994.pgm deleted file mode 100644 index 8a6fb364a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/1994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2.pgm b/examples/autotiler/Mnist/test_img/1/2.pgm deleted file mode 100644 index be43226f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2010.pgm b/examples/autotiler/Mnist/test_img/1/2010.pgm deleted file mode 100644 index 5d9134a3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2013.pgm b/examples/autotiler/Mnist/test_img/1/2013.pgm deleted file mode 100644 index ce9203200..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2015.pgm b/examples/autotiler/Mnist/test_img/1/2015.pgm deleted file mode 100644 index 5ed08727f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2017.pgm b/examples/autotiler/Mnist/test_img/1/2017.pgm deleted file mode 100644 index 3e9d48321..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2018.pgm b/examples/autotiler/Mnist/test_img/1/2018.pgm deleted file mode 100644 index c0ab1e240..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/202.pgm b/examples/autotiler/Mnist/test_img/1/202.pgm deleted file mode 100644 index 98ed8fd66..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2027.pgm b/examples/autotiler/Mnist/test_img/1/2027.pgm deleted file mode 100644 index bb510a335..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/203.pgm b/examples/autotiler/Mnist/test_img/1/203.pgm deleted file mode 100644 index cf004cb2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2034.pgm b/examples/autotiler/Mnist/test_img/1/2034.pgm deleted file mode 100644 index dba85aa36..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/204.pgm b/examples/autotiler/Mnist/test_img/1/204.pgm deleted file mode 100644 index 5d2f29e9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2041.pgm b/examples/autotiler/Mnist/test_img/1/2041.pgm deleted file mode 100644 index aae81b164..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2051.pgm b/examples/autotiler/Mnist/test_img/1/2051.pgm deleted file mode 100644 index 608424122..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2071.pgm b/examples/autotiler/Mnist/test_img/1/2071.pgm deleted file mode 100644 index b4981f071..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2136.pgm b/examples/autotiler/Mnist/test_img/1/2136.pgm deleted file mode 100644 index fd31bb063..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2137.pgm b/examples/autotiler/Mnist/test_img/1/2137.pgm deleted file mode 100644 index 0502859f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2154.pgm b/examples/autotiler/Mnist/test_img/1/2154.pgm deleted file mode 100644 index 3d61da8d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2164.pgm b/examples/autotiler/Mnist/test_img/1/2164.pgm deleted file mode 100644 index bc483796f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2166.pgm b/examples/autotiler/Mnist/test_img/1/2166.pgm deleted file mode 100644 index eac3a455b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2171.pgm b/examples/autotiler/Mnist/test_img/1/2171.pgm deleted file mode 100644 index daca9c85b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2175.pgm b/examples/autotiler/Mnist/test_img/1/2175.pgm deleted file mode 100644 index 9c0180d2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2182.pgm b/examples/autotiler/Mnist/test_img/1/2182.pgm deleted file mode 100644 index 42637de33..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2221.pgm b/examples/autotiler/Mnist/test_img/1/2221.pgm deleted file mode 100644 index a582637af..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2228.pgm b/examples/autotiler/Mnist/test_img/1/2228.pgm deleted file mode 100644 index 80c7d2ca8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2235.pgm b/examples/autotiler/Mnist/test_img/1/2235.pgm deleted file mode 100644 index e98dc61a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2239.pgm b/examples/autotiler/Mnist/test_img/1/2239.pgm deleted file mode 100644 index 9cc96a561..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/224.pgm b/examples/autotiler/Mnist/test_img/1/224.pgm deleted file mode 100644 index ddb1114b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2245.pgm b/examples/autotiler/Mnist/test_img/1/2245.pgm deleted file mode 100644 index 90cdc9705..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2258.pgm b/examples/autotiler/Mnist/test_img/1/2258.pgm deleted file mode 100644 index c12377f21..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2261.pgm b/examples/autotiler/Mnist/test_img/1/2261.pgm deleted file mode 100644 index 420fd3795..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2266.pgm b/examples/autotiler/Mnist/test_img/1/2266.pgm deleted file mode 100644 index b1ebfb937..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2273.pgm b/examples/autotiler/Mnist/test_img/1/2273.pgm deleted file mode 100644 index 6228b0b04..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2276.pgm b/examples/autotiler/Mnist/test_img/1/2276.pgm deleted file mode 100644 index 2ecb2b7ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2277.pgm b/examples/autotiler/Mnist/test_img/1/2277.pgm deleted file mode 100644 index 330b9334e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/228.pgm b/examples/autotiler/Mnist/test_img/1/228.pgm deleted file mode 100644 index 591ed7c8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2283.pgm b/examples/autotiler/Mnist/test_img/1/2283.pgm deleted file mode 100644 index e66bba8c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2287.pgm b/examples/autotiler/Mnist/test_img/1/2287.pgm deleted file mode 100644 index 1bd155e5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2302.pgm b/examples/autotiler/Mnist/test_img/1/2302.pgm deleted file mode 100644 index 7b6f94a3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2315.pgm b/examples/autotiler/Mnist/test_img/1/2315.pgm deleted file mode 100644 index 4ff67e825..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2316.pgm b/examples/autotiler/Mnist/test_img/1/2316.pgm deleted file mode 100644 index b0a2a5006..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2324.pgm b/examples/autotiler/Mnist/test_img/1/2324.pgm deleted file mode 100644 index 07e88d8a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2335.pgm b/examples/autotiler/Mnist/test_img/1/2335.pgm deleted file mode 100644 index 35d4105fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2343.pgm b/examples/autotiler/Mnist/test_img/1/2343.pgm deleted file mode 100644 index ed1caedb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2355.pgm b/examples/autotiler/Mnist/test_img/1/2355.pgm deleted file mode 100644 index 6f55ee617..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2356.pgm b/examples/autotiler/Mnist/test_img/1/2356.pgm deleted file mode 100644 index 41dd07e52..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2357.pgm b/examples/autotiler/Mnist/test_img/1/2357.pgm deleted file mode 100644 index 5bec21407..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2358.pgm b/examples/autotiler/Mnist/test_img/1/2358.pgm deleted file mode 100644 index 17f127d95..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2359.pgm b/examples/autotiler/Mnist/test_img/1/2359.pgm deleted file mode 100644 index 95eb3ed94..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2366.pgm b/examples/autotiler/Mnist/test_img/1/2366.pgm deleted file mode 100644 index 127b2c067..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2379.pgm b/examples/autotiler/Mnist/test_img/1/2379.pgm deleted file mode 100644 index 5587229a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/239.pgm b/examples/autotiler/Mnist/test_img/1/239.pgm deleted file mode 100644 index 05bca0d7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2398.pgm b/examples/autotiler/Mnist/test_img/1/2398.pgm deleted file mode 100644 index 677137783..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2409.pgm b/examples/autotiler/Mnist/test_img/1/2409.pgm deleted file mode 100644 index 92c344015..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2411.pgm b/examples/autotiler/Mnist/test_img/1/2411.pgm deleted file mode 100644 index d320a2b93..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2416.pgm b/examples/autotiler/Mnist/test_img/1/2416.pgm deleted file mode 100644 index 3b082a5de..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2418.pgm b/examples/autotiler/Mnist/test_img/1/2418.pgm deleted file mode 100644 index ada9a5c73..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2421.pgm b/examples/autotiler/Mnist/test_img/1/2421.pgm deleted file mode 100644 index eec2d088d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2434.pgm b/examples/autotiler/Mnist/test_img/1/2434.pgm deleted file mode 100644 index 299bb59bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2444.pgm b/examples/autotiler/Mnist/test_img/1/2444.pgm deleted file mode 100644 index 7c6030773..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2473.pgm b/examples/autotiler/Mnist/test_img/1/2473.pgm deleted file mode 100644 index f1c2bbe76..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2504.pgm b/examples/autotiler/Mnist/test_img/1/2504.pgm deleted file mode 100644 index 7d107ea1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/251.pgm b/examples/autotiler/Mnist/test_img/1/251.pgm deleted file mode 100644 index 4dea0c5b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2510.pgm b/examples/autotiler/Mnist/test_img/1/2510.pgm deleted file mode 100644 index 9ad136f99..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2519.pgm b/examples/autotiler/Mnist/test_img/1/2519.pgm deleted file mode 100644 index 4823f36fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2524.pgm b/examples/autotiler/Mnist/test_img/1/2524.pgm deleted file mode 100644 index 6f8d4ee07..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2529.pgm b/examples/autotiler/Mnist/test_img/1/2529.pgm deleted file mode 100644 index e86d88772..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2541.pgm b/examples/autotiler/Mnist/test_img/1/2541.pgm deleted file mode 100644 index f1f75717e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2553.pgm b/examples/autotiler/Mnist/test_img/1/2553.pgm deleted file mode 100644 index 45dc05369..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2576.pgm b/examples/autotiler/Mnist/test_img/1/2576.pgm deleted file mode 100644 index 324f185ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2590.pgm b/examples/autotiler/Mnist/test_img/1/2590.pgm deleted file mode 100644 index 03f9bcbd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2599.pgm b/examples/autotiler/Mnist/test_img/1/2599.pgm deleted file mode 100644 index 0e7540cec..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2612.pgm b/examples/autotiler/Mnist/test_img/1/2612.pgm deleted file mode 100644 index 26fd3cf59..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2626.pgm b/examples/autotiler/Mnist/test_img/1/2626.pgm deleted file mode 100644 index 21bbfccf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/265.pgm b/examples/autotiler/Mnist/test_img/1/265.pgm deleted file mode 100644 index 8eeac8fd3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2655.pgm b/examples/autotiler/Mnist/test_img/1/2655.pgm deleted file mode 100644 index 10389aa5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2661.pgm b/examples/autotiler/Mnist/test_img/1/2661.pgm deleted file mode 100644 index 289fb9b87..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/267.pgm b/examples/autotiler/Mnist/test_img/1/267.pgm deleted file mode 100644 index 7c2d2cbea..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2674.pgm b/examples/autotiler/Mnist/test_img/1/2674.pgm deleted file mode 100644 index 78af6822d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2676.pgm b/examples/autotiler/Mnist/test_img/1/2676.pgm deleted file mode 100644 index 4ec27ef84..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2688.pgm b/examples/autotiler/Mnist/test_img/1/2688.pgm deleted file mode 100644 index 1cb7f1732..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2693.pgm b/examples/autotiler/Mnist/test_img/1/2693.pgm deleted file mode 100644 index f7815eb86..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2704.pgm b/examples/autotiler/Mnist/test_img/1/2704.pgm deleted file mode 100644 index 2356aa852..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2705.pgm b/examples/autotiler/Mnist/test_img/1/2705.pgm deleted file mode 100644 index 19dca48f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2706.pgm b/examples/autotiler/Mnist/test_img/1/2706.pgm deleted file mode 100644 index 9e0fc3c55..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2719.pgm b/examples/autotiler/Mnist/test_img/1/2719.pgm deleted file mode 100644 index a6a403805..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/272.pgm b/examples/autotiler/Mnist/test_img/1/272.pgm deleted file mode 100644 index aec7df727..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2722.pgm b/examples/autotiler/Mnist/test_img/1/2722.pgm deleted file mode 100644 index 3f572d487..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2725.pgm b/examples/autotiler/Mnist/test_img/1/2725.pgm deleted file mode 100644 index fcfb84b54..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2734.pgm b/examples/autotiler/Mnist/test_img/1/2734.pgm deleted file mode 100644 index 4c38ba842..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2746.pgm b/examples/autotiler/Mnist/test_img/1/2746.pgm deleted file mode 100644 index ba54c17ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2753.pgm b/examples/autotiler/Mnist/test_img/1/2753.pgm deleted file mode 100644 index fb9faec57..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2757.pgm b/examples/autotiler/Mnist/test_img/1/2757.pgm deleted file mode 100644 index b1205f0e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/276.pgm b/examples/autotiler/Mnist/test_img/1/276.pgm deleted file mode 100644 index 2d86fd3e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2786.pgm b/examples/autotiler/Mnist/test_img/1/2786.pgm deleted file mode 100644 index 18e521ac1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2788.pgm b/examples/autotiler/Mnist/test_img/1/2788.pgm deleted file mode 100644 index ec209f83c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2789.pgm b/examples/autotiler/Mnist/test_img/1/2789.pgm deleted file mode 100644 index dfbb2113d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/279.pgm b/examples/autotiler/Mnist/test_img/1/279.pgm deleted file mode 100644 index a92373d95..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2803.pgm b/examples/autotiler/Mnist/test_img/1/2803.pgm deleted file mode 100644 index 877065406..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2815.pgm b/examples/autotiler/Mnist/test_img/1/2815.pgm deleted file mode 100644 index 80d6951e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2816.pgm b/examples/autotiler/Mnist/test_img/1/2816.pgm deleted file mode 100644 index c38543e6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2822.pgm b/examples/autotiler/Mnist/test_img/1/2822.pgm deleted file mode 100644 index 1a3a7ce65..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2825.pgm b/examples/autotiler/Mnist/test_img/1/2825.pgm deleted file mode 100644 index 37eb70ff3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2827.pgm b/examples/autotiler/Mnist/test_img/1/2827.pgm deleted file mode 100644 index ebde89b73..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2867.pgm b/examples/autotiler/Mnist/test_img/1/2867.pgm deleted file mode 100644 index 5ac10875c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2868.pgm b/examples/autotiler/Mnist/test_img/1/2868.pgm deleted file mode 100644 index 8d7fe0af9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2878.pgm b/examples/autotiler/Mnist/test_img/1/2878.pgm deleted file mode 100644 index 04af2d804..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/288.pgm b/examples/autotiler/Mnist/test_img/1/288.pgm deleted file mode 100644 index 6522b3608..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2880.pgm b/examples/autotiler/Mnist/test_img/1/2880.pgm deleted file mode 100644 index a75125054..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2885.pgm b/examples/autotiler/Mnist/test_img/1/2885.pgm deleted file mode 100644 index 571b19ead..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/29.pgm b/examples/autotiler/Mnist/test_img/1/29.pgm deleted file mode 100644 index 29c2cc75b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/29.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2902.pgm b/examples/autotiler/Mnist/test_img/1/2902.pgm deleted file mode 100644 index 93c728b31..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2912.pgm b/examples/autotiler/Mnist/test_img/1/2912.pgm deleted file mode 100644 index b21762193..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2928.pgm b/examples/autotiler/Mnist/test_img/1/2928.pgm deleted file mode 100644 index 6a3e352ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2943.pgm b/examples/autotiler/Mnist/test_img/1/2943.pgm deleted file mode 100644 index a231d1e25..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2946.pgm b/examples/autotiler/Mnist/test_img/1/2946.pgm deleted file mode 100644 index 5885db581..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2950.pgm b/examples/autotiler/Mnist/test_img/1/2950.pgm deleted file mode 100644 index aca344de4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2965.pgm b/examples/autotiler/Mnist/test_img/1/2965.pgm deleted file mode 100644 index 8afbb4607..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2974.pgm b/examples/autotiler/Mnist/test_img/1/2974.pgm deleted file mode 100644 index 267fb6128..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2982.pgm b/examples/autotiler/Mnist/test_img/1/2982.pgm deleted file mode 100644 index 9a7448348..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2984.pgm b/examples/autotiler/Mnist/test_img/1/2984.pgm deleted file mode 100644 index efa5a80c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/2997.pgm b/examples/autotiler/Mnist/test_img/1/2997.pgm deleted file mode 100644 index 57849b577..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/2997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3003.pgm b/examples/autotiler/Mnist/test_img/1/3003.pgm deleted file mode 100644 index 5b07bd487..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3014.pgm b/examples/autotiler/Mnist/test_img/1/3014.pgm deleted file mode 100644 index 1a3eacc11..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3019.pgm b/examples/autotiler/Mnist/test_img/1/3019.pgm deleted file mode 100644 index 797ad52d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/302.pgm b/examples/autotiler/Mnist/test_img/1/302.pgm deleted file mode 100644 index a5e5fb7ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3026.pgm b/examples/autotiler/Mnist/test_img/1/3026.pgm deleted file mode 100644 index 217988f17..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3027.pgm b/examples/autotiler/Mnist/test_img/1/3027.pgm deleted file mode 100644 index 8f32c3438..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3039.pgm b/examples/autotiler/Mnist/test_img/1/3039.pgm deleted file mode 100644 index 7bc29e53a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3050.pgm b/examples/autotiler/Mnist/test_img/1/3050.pgm deleted file mode 100644 index 294f08e2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3070.pgm b/examples/autotiler/Mnist/test_img/1/3070.pgm deleted file mode 100644 index 15449f097..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3073.pgm b/examples/autotiler/Mnist/test_img/1/3073.pgm deleted file mode 100644 index a782606bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3092.pgm b/examples/autotiler/Mnist/test_img/1/3092.pgm deleted file mode 100644 index 3f358ba6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3097.pgm b/examples/autotiler/Mnist/test_img/1/3097.pgm deleted file mode 100644 index 2569a6010..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3099.pgm b/examples/autotiler/Mnist/test_img/1/3099.pgm deleted file mode 100644 index 2179859c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/31.pgm b/examples/autotiler/Mnist/test_img/1/31.pgm deleted file mode 100644 index 78f06f07f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/31.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3124.pgm b/examples/autotiler/Mnist/test_img/1/3124.pgm deleted file mode 100644 index f1b2b8793..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3126.pgm b/examples/autotiler/Mnist/test_img/1/3126.pgm deleted file mode 100644 index c887c8ab7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3132.pgm b/examples/autotiler/Mnist/test_img/1/3132.pgm deleted file mode 100644 index b8cb99258..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/314.pgm b/examples/autotiler/Mnist/test_img/1/314.pgm deleted file mode 100644 index d10d1dc65..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3143.pgm b/examples/autotiler/Mnist/test_img/1/3143.pgm deleted file mode 100644 index 14c4e7b42..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3148.pgm b/examples/autotiler/Mnist/test_img/1/3148.pgm deleted file mode 100644 index 4cd14e3f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3152.pgm b/examples/autotiler/Mnist/test_img/1/3152.pgm deleted file mode 100644 index ddc57d108..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3175.pgm b/examples/autotiler/Mnist/test_img/1/3175.pgm deleted file mode 100644 index 07efdcbff..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3196.pgm b/examples/autotiler/Mnist/test_img/1/3196.pgm deleted file mode 100644 index 9cca05970..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3203.pgm b/examples/autotiler/Mnist/test_img/1/3203.pgm deleted file mode 100644 index f78834714..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3211.pgm b/examples/autotiler/Mnist/test_img/1/3211.pgm deleted file mode 100644 index 4e9745542..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3214.pgm b/examples/autotiler/Mnist/test_img/1/3214.pgm deleted file mode 100644 index 5aa834927..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3227.pgm b/examples/autotiler/Mnist/test_img/1/3227.pgm deleted file mode 100644 index 85f4e286e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3230.pgm b/examples/autotiler/Mnist/test_img/1/3230.pgm deleted file mode 100644 index 5771ed35d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3231.pgm b/examples/autotiler/Mnist/test_img/1/3231.pgm deleted file mode 100644 index 3f7072eb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3237.pgm b/examples/autotiler/Mnist/test_img/1/3237.pgm deleted file mode 100644 index c23748e9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3244.pgm b/examples/autotiler/Mnist/test_img/1/3244.pgm deleted file mode 100644 index 3fd9bf9c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3253.pgm b/examples/autotiler/Mnist/test_img/1/3253.pgm deleted file mode 100644 index 73a45ccda..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3255.pgm b/examples/autotiler/Mnist/test_img/1/3255.pgm deleted file mode 100644 index 3b78dd37d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3259.pgm b/examples/autotiler/Mnist/test_img/1/3259.pgm deleted file mode 100644 index 735720d69..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3264.pgm b/examples/autotiler/Mnist/test_img/1/3264.pgm deleted file mode 100644 index 113c52ecb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3268.pgm b/examples/autotiler/Mnist/test_img/1/3268.pgm deleted file mode 100644 index 6de018b33..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3272.pgm b/examples/autotiler/Mnist/test_img/1/3272.pgm deleted file mode 100644 index dcd72d35a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3276.pgm b/examples/autotiler/Mnist/test_img/1/3276.pgm deleted file mode 100644 index 645d81763..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3281.pgm b/examples/autotiler/Mnist/test_img/1/3281.pgm deleted file mode 100644 index 4c7c3f209..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/329.pgm b/examples/autotiler/Mnist/test_img/1/329.pgm deleted file mode 100644 index 16b0a352b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/330.pgm b/examples/autotiler/Mnist/test_img/1/330.pgm deleted file mode 100644 index 1508a00f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3314.pgm b/examples/autotiler/Mnist/test_img/1/3314.pgm deleted file mode 100644 index 0ed4c9082..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/332.pgm b/examples/autotiler/Mnist/test_img/1/332.pgm deleted file mode 100644 index 35973925a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3320.pgm b/examples/autotiler/Mnist/test_img/1/3320.pgm deleted file mode 100644 index 8609ca4e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3351.pgm b/examples/autotiler/Mnist/test_img/1/3351.pgm deleted file mode 100644 index be75efe81..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3353.pgm b/examples/autotiler/Mnist/test_img/1/3353.pgm deleted file mode 100644 index a41dacf58..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3354.pgm b/examples/autotiler/Mnist/test_img/1/3354.pgm deleted file mode 100644 index 8e0f29e9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3379.pgm b/examples/autotiler/Mnist/test_img/1/3379.pgm deleted file mode 100644 index 1fedb7270..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3380.pgm b/examples/autotiler/Mnist/test_img/1/3380.pgm deleted file mode 100644 index 83d76b73b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3386.pgm b/examples/autotiler/Mnist/test_img/1/3386.pgm deleted file mode 100644 index e4b28c7a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3419.pgm b/examples/autotiler/Mnist/test_img/1/3419.pgm deleted file mode 100644 index 72a333eb2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/342.pgm b/examples/autotiler/Mnist/test_img/1/342.pgm deleted file mode 100644 index 00bad0a24..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3420.pgm b/examples/autotiler/Mnist/test_img/1/3420.pgm deleted file mode 100644 index 6a25fdaed..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3421.pgm b/examples/autotiler/Mnist/test_img/1/3421.pgm deleted file mode 100644 index 065c3d503..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3430.pgm b/examples/autotiler/Mnist/test_img/1/3430.pgm deleted file mode 100644 index 9838762b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3433.pgm b/examples/autotiler/Mnist/test_img/1/3433.pgm deleted file mode 100644 index e8c490589..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3434.pgm b/examples/autotiler/Mnist/test_img/1/3434.pgm deleted file mode 100644 index 1d6873be4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3438.pgm b/examples/autotiler/Mnist/test_img/1/3438.pgm deleted file mode 100644 index 5ffc326eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/345.pgm b/examples/autotiler/Mnist/test_img/1/345.pgm deleted file mode 100644 index 6d8d48c03..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3452.pgm b/examples/autotiler/Mnist/test_img/1/3452.pgm deleted file mode 100644 index 946c68cf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3454.pgm b/examples/autotiler/Mnist/test_img/1/3454.pgm deleted file mode 100644 index ffa0dd1ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3455.pgm b/examples/autotiler/Mnist/test_img/1/3455.pgm deleted file mode 100644 index 6c86fa8c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3457.pgm b/examples/autotiler/Mnist/test_img/1/3457.pgm deleted file mode 100644 index 7727d26b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3464.pgm b/examples/autotiler/Mnist/test_img/1/3464.pgm deleted file mode 100644 index b53f55c46..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3471.pgm b/examples/autotiler/Mnist/test_img/1/3471.pgm deleted file mode 100644 index 37283e581..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/348.pgm b/examples/autotiler/Mnist/test_img/1/348.pgm deleted file mode 100644 index 5b50d3bd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3480.pgm b/examples/autotiler/Mnist/test_img/1/3480.pgm deleted file mode 100644 index 782c5acee..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/350.pgm b/examples/autotiler/Mnist/test_img/1/350.pgm deleted file mode 100644 index fef76a632..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3532.pgm b/examples/autotiler/Mnist/test_img/1/3532.pgm deleted file mode 100644 index 44778973c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/354.pgm b/examples/autotiler/Mnist/test_img/1/354.pgm deleted file mode 100644 index 914707412..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3546.pgm b/examples/autotiler/Mnist/test_img/1/3546.pgm deleted file mode 100644 index 3dfda6671..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3562.pgm b/examples/autotiler/Mnist/test_img/1/3562.pgm deleted file mode 100644 index e724ad65b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/357.pgm b/examples/autotiler/Mnist/test_img/1/357.pgm deleted file mode 100644 index e35ae15af..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3582.pgm b/examples/autotiler/Mnist/test_img/1/3582.pgm deleted file mode 100644 index b39f844d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3586.pgm b/examples/autotiler/Mnist/test_img/1/3586.pgm deleted file mode 100644 index 04e9ab7d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3593.pgm b/examples/autotiler/Mnist/test_img/1/3593.pgm deleted file mode 100644 index 094e1c1f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3598.pgm b/examples/autotiler/Mnist/test_img/1/3598.pgm deleted file mode 100644 index 39ff854c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3601.pgm b/examples/autotiler/Mnist/test_img/1/3601.pgm deleted file mode 100644 index 1826f8e20..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3605.pgm b/examples/autotiler/Mnist/test_img/1/3605.pgm deleted file mode 100644 index 418650612..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3606.pgm b/examples/autotiler/Mnist/test_img/1/3606.pgm deleted file mode 100644 index 2d46f46e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3625.pgm b/examples/autotiler/Mnist/test_img/1/3625.pgm deleted file mode 100644 index 501390325..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3638.pgm b/examples/autotiler/Mnist/test_img/1/3638.pgm deleted file mode 100644 index 254bd071c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3639.pgm b/examples/autotiler/Mnist/test_img/1/3639.pgm deleted file mode 100644 index 50017f110..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3641.pgm b/examples/autotiler/Mnist/test_img/1/3641.pgm deleted file mode 100644 index 6a2cdf90f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3648.pgm b/examples/autotiler/Mnist/test_img/1/3648.pgm deleted file mode 100644 index af1bf0ba6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3649.pgm b/examples/autotiler/Mnist/test_img/1/3649.pgm deleted file mode 100644 index 1fc5d12e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3651.pgm b/examples/autotiler/Mnist/test_img/1/3651.pgm deleted file mode 100644 index ac37fc6f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3652.pgm b/examples/autotiler/Mnist/test_img/1/3652.pgm deleted file mode 100644 index 4a9bbe8a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3669.pgm b/examples/autotiler/Mnist/test_img/1/3669.pgm deleted file mode 100644 index 22c6f2a61..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3673.pgm b/examples/autotiler/Mnist/test_img/1/3673.pgm deleted file mode 100644 index 387968dc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3679.pgm b/examples/autotiler/Mnist/test_img/1/3679.pgm deleted file mode 100644 index b141cb768..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3689.pgm b/examples/autotiler/Mnist/test_img/1/3689.pgm deleted file mode 100644 index 0eabd18ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3699.pgm b/examples/autotiler/Mnist/test_img/1/3699.pgm deleted file mode 100644 index b960c7787..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/37.pgm b/examples/autotiler/Mnist/test_img/1/37.pgm deleted file mode 100644 index cc8b99c13..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/37.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3733.pgm b/examples/autotiler/Mnist/test_img/1/3733.pgm deleted file mode 100644 index 17b818d13..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3741.pgm b/examples/autotiler/Mnist/test_img/1/3741.pgm deleted file mode 100644 index ccab1ba9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3745.pgm b/examples/autotiler/Mnist/test_img/1/3745.pgm deleted file mode 100644 index 4d27bf344..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3747.pgm b/examples/autotiler/Mnist/test_img/1/3747.pgm deleted file mode 100644 index c2ddb31fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3761.pgm b/examples/autotiler/Mnist/test_img/1/3761.pgm deleted file mode 100644 index 1d5589e6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3765.pgm b/examples/autotiler/Mnist/test_img/1/3765.pgm deleted file mode 100644 index 0541fc252..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/377.pgm b/examples/autotiler/Mnist/test_img/1/377.pgm deleted file mode 100644 index 75b523486..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3777.pgm b/examples/autotiler/Mnist/test_img/1/3777.pgm deleted file mode 100644 index ef1b354fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3779.pgm b/examples/autotiler/Mnist/test_img/1/3779.pgm deleted file mode 100644 index b0e30f720..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/378.pgm b/examples/autotiler/Mnist/test_img/1/378.pgm deleted file mode 100644 index 57d04daa6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3784.pgm b/examples/autotiler/Mnist/test_img/1/3784.pgm deleted file mode 100644 index d0bbfdb00..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3786.pgm b/examples/autotiler/Mnist/test_img/1/3786.pgm deleted file mode 100644 index 81e3717ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3789.pgm b/examples/autotiler/Mnist/test_img/1/3789.pgm deleted file mode 100644 index 38ff76967..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3809.pgm b/examples/autotiler/Mnist/test_img/1/3809.pgm deleted file mode 100644 index c7e42265c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3815.pgm b/examples/autotiler/Mnist/test_img/1/3815.pgm deleted file mode 100644 index f106a841c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3843.pgm b/examples/autotiler/Mnist/test_img/1/3843.pgm deleted file mode 100644 index 2743e1c6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/385.pgm b/examples/autotiler/Mnist/test_img/1/385.pgm deleted file mode 100644 index dd117037f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3851.pgm b/examples/autotiler/Mnist/test_img/1/3851.pgm deleted file mode 100644 index 3b1f678a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3852.pgm b/examples/autotiler/Mnist/test_img/1/3852.pgm deleted file mode 100644 index 8f4994c8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3858.pgm b/examples/autotiler/Mnist/test_img/1/3858.pgm deleted file mode 100644 index c054d02f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3866.pgm b/examples/autotiler/Mnist/test_img/1/3866.pgm deleted file mode 100644 index fe038df1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/388.pgm b/examples/autotiler/Mnist/test_img/1/388.pgm deleted file mode 100644 index 23d4ab26f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3894.pgm b/examples/autotiler/Mnist/test_img/1/3894.pgm deleted file mode 100644 index 0572adb81..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/39.pgm b/examples/autotiler/Mnist/test_img/1/39.pgm deleted file mode 100644 index d5386ba42..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/39.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3900.pgm b/examples/autotiler/Mnist/test_img/1/3900.pgm deleted file mode 100644 index d12c9700e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3906.pgm b/examples/autotiler/Mnist/test_img/1/3906.pgm deleted file mode 100644 index 032eaed6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3919.pgm b/examples/autotiler/Mnist/test_img/1/3919.pgm deleted file mode 100644 index d57288548..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3922.pgm b/examples/autotiler/Mnist/test_img/1/3922.pgm deleted file mode 100644 index d6fb0da9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3925.pgm b/examples/autotiler/Mnist/test_img/1/3925.pgm deleted file mode 100644 index 22f41e964..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/393.pgm b/examples/autotiler/Mnist/test_img/1/393.pgm deleted file mode 100644 index 5372055cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3930.pgm b/examples/autotiler/Mnist/test_img/1/3930.pgm deleted file mode 100644 index dad3d603f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3937.pgm b/examples/autotiler/Mnist/test_img/1/3937.pgm deleted file mode 100644 index 796fb89d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3974.pgm b/examples/autotiler/Mnist/test_img/1/3974.pgm deleted file mode 100644 index f485e8e04..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3983.pgm b/examples/autotiler/Mnist/test_img/1/3983.pgm deleted file mode 100644 index d8a8e3da8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/3990.pgm b/examples/autotiler/Mnist/test_img/1/3990.pgm deleted file mode 100644 index 58537a10e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/3990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/40.pgm b/examples/autotiler/Mnist/test_img/1/40.pgm deleted file mode 100644 index 035129875..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/40.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4005.pgm b/examples/autotiler/Mnist/test_img/1/4005.pgm deleted file mode 100644 index b07b7117c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4006.pgm b/examples/autotiler/Mnist/test_img/1/4006.pgm deleted file mode 100644 index 85fb33046..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4010.pgm b/examples/autotiler/Mnist/test_img/1/4010.pgm deleted file mode 100644 index fb27838a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4013.pgm b/examples/autotiler/Mnist/test_img/1/4013.pgm deleted file mode 100644 index de1793de3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4014.pgm b/examples/autotiler/Mnist/test_img/1/4014.pgm deleted file mode 100644 index c7307f1b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4021.pgm b/examples/autotiler/Mnist/test_img/1/4021.pgm deleted file mode 100644 index a35993809..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4025.pgm b/examples/autotiler/Mnist/test_img/1/4025.pgm deleted file mode 100644 index f99fc764f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4032.pgm b/examples/autotiler/Mnist/test_img/1/4032.pgm deleted file mode 100644 index 92ec3a0df..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4035.pgm b/examples/autotiler/Mnist/test_img/1/4035.pgm deleted file mode 100644 index 0684f0223..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4036.pgm b/examples/autotiler/Mnist/test_img/1/4036.pgm deleted file mode 100644 index 90703b1e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4039.pgm b/examples/autotiler/Mnist/test_img/1/4039.pgm deleted file mode 100644 index 9caf83c4e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4050.pgm b/examples/autotiler/Mnist/test_img/1/4050.pgm deleted file mode 100644 index a6d855bb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4057.pgm b/examples/autotiler/Mnist/test_img/1/4057.pgm deleted file mode 100644 index 9dbf08878..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4069.pgm b/examples/autotiler/Mnist/test_img/1/4069.pgm deleted file mode 100644 index 75fd46ef1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4074.pgm b/examples/autotiler/Mnist/test_img/1/4074.pgm deleted file mode 100644 index 73440edce..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4077.pgm b/examples/autotiler/Mnist/test_img/1/4077.pgm deleted file mode 100644 index b6f3db301..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4085.pgm b/examples/autotiler/Mnist/test_img/1/4085.pgm deleted file mode 100644 index 227fd8411..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/409.pgm b/examples/autotiler/Mnist/test_img/1/409.pgm deleted file mode 100644 index 412513111..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4104.pgm b/examples/autotiler/Mnist/test_img/1/4104.pgm deleted file mode 100644 index 261b1ca4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4105.pgm b/examples/autotiler/Mnist/test_img/1/4105.pgm deleted file mode 100644 index 5e052bdf0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4110.pgm b/examples/autotiler/Mnist/test_img/1/4110.pgm deleted file mode 100644 index b9668cf0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4138.pgm b/examples/autotiler/Mnist/test_img/1/4138.pgm deleted file mode 100644 index 305aac46e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4144.pgm b/examples/autotiler/Mnist/test_img/1/4144.pgm deleted file mode 100644 index 896b504f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4147.pgm b/examples/autotiler/Mnist/test_img/1/4147.pgm deleted file mode 100644 index 04487c1bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4153.pgm b/examples/autotiler/Mnist/test_img/1/4153.pgm deleted file mode 100644 index 67559c29a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/416.pgm b/examples/autotiler/Mnist/test_img/1/416.pgm deleted file mode 100644 index 42a005a57..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4168.pgm b/examples/autotiler/Mnist/test_img/1/4168.pgm deleted file mode 100644 index 8550af715..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4169.pgm b/examples/autotiler/Mnist/test_img/1/4169.pgm deleted file mode 100644 index f6c64a350..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4170.pgm b/examples/autotiler/Mnist/test_img/1/4170.pgm deleted file mode 100644 index 4f4716cd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4171.pgm b/examples/autotiler/Mnist/test_img/1/4171.pgm deleted file mode 100644 index 05a04b34d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4178.pgm b/examples/autotiler/Mnist/test_img/1/4178.pgm deleted file mode 100644 index b44a3ff5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4179.pgm b/examples/autotiler/Mnist/test_img/1/4179.pgm deleted file mode 100644 index 47ff0b63d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4181.pgm b/examples/autotiler/Mnist/test_img/1/4181.pgm deleted file mode 100644 index d46ea07f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4185.pgm b/examples/autotiler/Mnist/test_img/1/4185.pgm deleted file mode 100644 index 5fbda48f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/419.pgm b/examples/autotiler/Mnist/test_img/1/419.pgm deleted file mode 100644 index 68072b794..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4190.pgm b/examples/autotiler/Mnist/test_img/1/4190.pgm deleted file mode 100644 index 88eecc0c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4191.pgm b/examples/autotiler/Mnist/test_img/1/4191.pgm deleted file mode 100644 index 0e7184717..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4195.pgm b/examples/autotiler/Mnist/test_img/1/4195.pgm deleted file mode 100644 index 2f6b4897a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4201.pgm b/examples/autotiler/Mnist/test_img/1/4201.pgm deleted file mode 100644 index d06ace44d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4212.pgm b/examples/autotiler/Mnist/test_img/1/4212.pgm deleted file mode 100644 index 2cf04fb72..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4216.pgm b/examples/autotiler/Mnist/test_img/1/4216.pgm deleted file mode 100644 index 864ecd46b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4232.pgm b/examples/autotiler/Mnist/test_img/1/4232.pgm deleted file mode 100644 index e9e1fd1cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4249.pgm b/examples/autotiler/Mnist/test_img/1/4249.pgm deleted file mode 100644 index af59f36d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4262.pgm b/examples/autotiler/Mnist/test_img/1/4262.pgm deleted file mode 100644 index f50eb1bf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4264.pgm b/examples/autotiler/Mnist/test_img/1/4264.pgm deleted file mode 100644 index 20923386c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4267.pgm b/examples/autotiler/Mnist/test_img/1/4267.pgm deleted file mode 100644 index 4349f1b9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/427.pgm b/examples/autotiler/Mnist/test_img/1/427.pgm deleted file mode 100644 index 7ee06ec5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4273.pgm b/examples/autotiler/Mnist/test_img/1/4273.pgm deleted file mode 100644 index c7a29cdb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4292.pgm b/examples/autotiler/Mnist/test_img/1/4292.pgm deleted file mode 100644 index 42d29f736..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/430.pgm b/examples/autotiler/Mnist/test_img/1/430.pgm deleted file mode 100644 index 81c4266a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4303.pgm b/examples/autotiler/Mnist/test_img/1/4303.pgm deleted file mode 100644 index a626d9767..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4304.pgm b/examples/autotiler/Mnist/test_img/1/4304.pgm deleted file mode 100644 index 352a6d05c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4308.pgm b/examples/autotiler/Mnist/test_img/1/4308.pgm deleted file mode 100644 index c23852503..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4318.pgm b/examples/autotiler/Mnist/test_img/1/4318.pgm deleted file mode 100644 index 5242fa87a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4328.pgm b/examples/autotiler/Mnist/test_img/1/4328.pgm deleted file mode 100644 index 65435565e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4331.pgm b/examples/autotiler/Mnist/test_img/1/4331.pgm deleted file mode 100644 index 9cfcffced..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4337.pgm b/examples/autotiler/Mnist/test_img/1/4337.pgm deleted file mode 100644 index 1a3e8ab31..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4349.pgm b/examples/autotiler/Mnist/test_img/1/4349.pgm deleted file mode 100644 index dbe0bd814..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4386.pgm b/examples/autotiler/Mnist/test_img/1/4386.pgm deleted file mode 100644 index a38c36b42..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4409.pgm b/examples/autotiler/Mnist/test_img/1/4409.pgm deleted file mode 100644 index 352c11842..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4428.pgm b/examples/autotiler/Mnist/test_img/1/4428.pgm deleted file mode 100644 index 6aa11c6c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4450.pgm b/examples/autotiler/Mnist/test_img/1/4450.pgm deleted file mode 100644 index 3cfff8026..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4491.pgm b/examples/autotiler/Mnist/test_img/1/4491.pgm deleted file mode 100644 index adc6bbcc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4507.pgm b/examples/autotiler/Mnist/test_img/1/4507.pgm deleted file mode 100644 index 98033e9ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4516.pgm b/examples/autotiler/Mnist/test_img/1/4516.pgm deleted file mode 100644 index 2587a7f56..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4524.pgm b/examples/autotiler/Mnist/test_img/1/4524.pgm deleted file mode 100644 index 965ea11d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4525.pgm b/examples/autotiler/Mnist/test_img/1/4525.pgm deleted file mode 100644 index 3b13824be..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4533.pgm b/examples/autotiler/Mnist/test_img/1/4533.pgm deleted file mode 100644 index ba0dd08af..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4538.pgm b/examples/autotiler/Mnist/test_img/1/4538.pgm deleted file mode 100644 index fa15a83c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/455.pgm b/examples/autotiler/Mnist/test_img/1/455.pgm deleted file mode 100644 index 3798d4656..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4563.pgm b/examples/autotiler/Mnist/test_img/1/4563.pgm deleted file mode 100644 index 3028c3640..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4564.pgm b/examples/autotiler/Mnist/test_img/1/4564.pgm deleted file mode 100644 index a87250cf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4574.pgm b/examples/autotiler/Mnist/test_img/1/4574.pgm deleted file mode 100644 index d8f7fed04..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4580.pgm b/examples/autotiler/Mnist/test_img/1/4580.pgm deleted file mode 100644 index 4b735df09..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4588.pgm b/examples/autotiler/Mnist/test_img/1/4588.pgm deleted file mode 100644 index 3bdbc01cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4589.pgm b/examples/autotiler/Mnist/test_img/1/4589.pgm deleted file mode 100644 index 53e7a897b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4595.pgm b/examples/autotiler/Mnist/test_img/1/4595.pgm deleted file mode 100644 index 2eb80d4fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4597.pgm b/examples/autotiler/Mnist/test_img/1/4597.pgm deleted file mode 100644 index c9e2ad1b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/46.pgm b/examples/autotiler/Mnist/test_img/1/46.pgm deleted file mode 100644 index a86004815..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/46.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4602.pgm b/examples/autotiler/Mnist/test_img/1/4602.pgm deleted file mode 100644 index c15aae544..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4603.pgm b/examples/autotiler/Mnist/test_img/1/4603.pgm deleted file mode 100644 index 3c1e7b205..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4606.pgm b/examples/autotiler/Mnist/test_img/1/4606.pgm deleted file mode 100644 index ad08325f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4643.pgm b/examples/autotiler/Mnist/test_img/1/4643.pgm deleted file mode 100644 index eee07b424..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4646.pgm b/examples/autotiler/Mnist/test_img/1/4646.pgm deleted file mode 100644 index 860b4b730..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4651.pgm b/examples/autotiler/Mnist/test_img/1/4651.pgm deleted file mode 100644 index c3205618d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4653.pgm b/examples/autotiler/Mnist/test_img/1/4653.pgm deleted file mode 100644 index f0a1996ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4655.pgm b/examples/autotiler/Mnist/test_img/1/4655.pgm deleted file mode 100644 index 51103e702..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4670.pgm b/examples/autotiler/Mnist/test_img/1/4670.pgm deleted file mode 100644 index 8f7777faf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4674.pgm b/examples/autotiler/Mnist/test_img/1/4674.pgm deleted file mode 100644 index 401eef4a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4676.pgm b/examples/autotiler/Mnist/test_img/1/4676.pgm deleted file mode 100644 index 3394eb833..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4685.pgm b/examples/autotiler/Mnist/test_img/1/4685.pgm deleted file mode 100644 index 211d7f0ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4687.pgm b/examples/autotiler/Mnist/test_img/1/4687.pgm deleted file mode 100644 index 4eb176cc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4691.pgm b/examples/autotiler/Mnist/test_img/1/4691.pgm deleted file mode 100644 index 8d31d856c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4708.pgm b/examples/autotiler/Mnist/test_img/1/4708.pgm deleted file mode 100644 index 1287ac19c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4717.pgm b/examples/autotiler/Mnist/test_img/1/4717.pgm deleted file mode 100644 index 71069ae55..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4719.pgm b/examples/autotiler/Mnist/test_img/1/4719.pgm deleted file mode 100644 index ac892ad41..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4729.pgm b/examples/autotiler/Mnist/test_img/1/4729.pgm deleted file mode 100644 index aaa169c10..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/473.pgm b/examples/autotiler/Mnist/test_img/1/473.pgm deleted file mode 100644 index e40caa298..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4732.pgm b/examples/autotiler/Mnist/test_img/1/4732.pgm deleted file mode 100644 index 908afe3db..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4733.pgm b/examples/autotiler/Mnist/test_img/1/4733.pgm deleted file mode 100644 index 5ac156ce2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4754.pgm b/examples/autotiler/Mnist/test_img/1/4754.pgm deleted file mode 100644 index 83904f703..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4759.pgm b/examples/autotiler/Mnist/test_img/1/4759.pgm deleted file mode 100644 index 4b04111a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/476.pgm b/examples/autotiler/Mnist/test_img/1/476.pgm deleted file mode 100644 index 9eebf7c19..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4764.pgm b/examples/autotiler/Mnist/test_img/1/4764.pgm deleted file mode 100644 index c6cf9b272..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4774.pgm b/examples/autotiler/Mnist/test_img/1/4774.pgm deleted file mode 100644 index 2087754c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4778.pgm b/examples/autotiler/Mnist/test_img/1/4778.pgm deleted file mode 100644 index 1cc230a4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/480.pgm b/examples/autotiler/Mnist/test_img/1/480.pgm deleted file mode 100644 index e026ef6d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4806.pgm b/examples/autotiler/Mnist/test_img/1/4806.pgm deleted file mode 100644 index f2d6db3f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4847.pgm b/examples/autotiler/Mnist/test_img/1/4847.pgm deleted file mode 100644 index ca517d423..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4853.pgm b/examples/autotiler/Mnist/test_img/1/4853.pgm deleted file mode 100644 index ca0e0dcb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4858.pgm b/examples/autotiler/Mnist/test_img/1/4858.pgm deleted file mode 100644 index 46fc79dc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4859.pgm b/examples/autotiler/Mnist/test_img/1/4859.pgm deleted file mode 100644 index f7bcb2f22..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4864.pgm b/examples/autotiler/Mnist/test_img/1/4864.pgm deleted file mode 100644 index a1706ae1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4869.pgm b/examples/autotiler/Mnist/test_img/1/4869.pgm deleted file mode 100644 index 6b818ea0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4871.pgm b/examples/autotiler/Mnist/test_img/1/4871.pgm deleted file mode 100644 index 136182fe9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4872.pgm b/examples/autotiler/Mnist/test_img/1/4872.pgm deleted file mode 100644 index cbf7aa9d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4877.pgm b/examples/autotiler/Mnist/test_img/1/4877.pgm deleted file mode 100644 index 39cec2e9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/489.pgm b/examples/autotiler/Mnist/test_img/1/489.pgm deleted file mode 100644 index 074c5911c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4903.pgm b/examples/autotiler/Mnist/test_img/1/4903.pgm deleted file mode 100644 index 5107c412a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4909.pgm b/examples/autotiler/Mnist/test_img/1/4909.pgm deleted file mode 100644 index cd1ef6223..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4917.pgm b/examples/autotiler/Mnist/test_img/1/4917.pgm deleted file mode 100644 index ac14bdd87..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4924.pgm b/examples/autotiler/Mnist/test_img/1/4924.pgm deleted file mode 100644 index e9e8bc699..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4927.pgm b/examples/autotiler/Mnist/test_img/1/4927.pgm deleted file mode 100644 index 0be22b3c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4930.pgm b/examples/autotiler/Mnist/test_img/1/4930.pgm deleted file mode 100644 index 4924d0479..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4931.pgm b/examples/autotiler/Mnist/test_img/1/4931.pgm deleted file mode 100644 index aea7dbea0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4932.pgm b/examples/autotiler/Mnist/test_img/1/4932.pgm deleted file mode 100644 index 4e749c111..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4949.pgm b/examples/autotiler/Mnist/test_img/1/4949.pgm deleted file mode 100644 index ebabf01bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4951.pgm b/examples/autotiler/Mnist/test_img/1/4951.pgm deleted file mode 100644 index 03e6829a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4953.pgm b/examples/autotiler/Mnist/test_img/1/4953.pgm deleted file mode 100644 index e444bcac2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4972.pgm b/examples/autotiler/Mnist/test_img/1/4972.pgm deleted file mode 100644 index ee5796fe5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4977.pgm b/examples/autotiler/Mnist/test_img/1/4977.pgm deleted file mode 100644 index 3b078d985..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/4984.pgm b/examples/autotiler/Mnist/test_img/1/4984.pgm deleted file mode 100644 index 2449c2bf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/4984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5.pgm b/examples/autotiler/Mnist/test_img/1/5.pgm deleted file mode 100644 index f154c7044..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5005.pgm b/examples/autotiler/Mnist/test_img/1/5005.pgm deleted file mode 100644 index 7e4fdccb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5013.pgm b/examples/autotiler/Mnist/test_img/1/5013.pgm deleted file mode 100644 index 990cc6e2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5014.pgm b/examples/autotiler/Mnist/test_img/1/5014.pgm deleted file mode 100644 index 54523abc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5025.pgm b/examples/autotiler/Mnist/test_img/1/5025.pgm deleted file mode 100644 index f5d6cce4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5036.pgm b/examples/autotiler/Mnist/test_img/1/5036.pgm deleted file mode 100644 index 6e740486d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/504.pgm b/examples/autotiler/Mnist/test_img/1/504.pgm deleted file mode 100644 index 2f98c4fec..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5044.pgm b/examples/autotiler/Mnist/test_img/1/5044.pgm deleted file mode 100644 index bfa12a864..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5052.pgm b/examples/autotiler/Mnist/test_img/1/5052.pgm deleted file mode 100644 index 6d44663fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/506.pgm b/examples/autotiler/Mnist/test_img/1/506.pgm deleted file mode 100644 index 2677baabc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5072.pgm b/examples/autotiler/Mnist/test_img/1/5072.pgm deleted file mode 100644 index e9495e7b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5081.pgm b/examples/autotiler/Mnist/test_img/1/5081.pgm deleted file mode 100644 index 5936381f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5090.pgm b/examples/autotiler/Mnist/test_img/1/5090.pgm deleted file mode 100644 index 880a158a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5091.pgm b/examples/autotiler/Mnist/test_img/1/5091.pgm deleted file mode 100644 index 9e010489d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5092.pgm b/examples/autotiler/Mnist/test_img/1/5092.pgm deleted file mode 100644 index 3968f25c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5093.pgm b/examples/autotiler/Mnist/test_img/1/5093.pgm deleted file mode 100644 index 7e97af4c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5112.pgm b/examples/autotiler/Mnist/test_img/1/5112.pgm deleted file mode 100644 index 343efe0a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5113.pgm b/examples/autotiler/Mnist/test_img/1/5113.pgm deleted file mode 100644 index 42f64dd1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5128.pgm b/examples/autotiler/Mnist/test_img/1/5128.pgm deleted file mode 100644 index 599a8ab47..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5132.pgm b/examples/autotiler/Mnist/test_img/1/5132.pgm deleted file mode 100644 index b87665aab..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5148.pgm b/examples/autotiler/Mnist/test_img/1/5148.pgm deleted file mode 100644 index 48ee5657a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5156.pgm b/examples/autotiler/Mnist/test_img/1/5156.pgm deleted file mode 100644 index d4c039202..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5166.pgm b/examples/autotiler/Mnist/test_img/1/5166.pgm deleted file mode 100644 index 5a5a1a01d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5186.pgm b/examples/autotiler/Mnist/test_img/1/5186.pgm deleted file mode 100644 index 49e93434f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5193.pgm b/examples/autotiler/Mnist/test_img/1/5193.pgm deleted file mode 100644 index 38be7aabb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5203.pgm b/examples/autotiler/Mnist/test_img/1/5203.pgm deleted file mode 100644 index f1fe45733..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5208.pgm b/examples/autotiler/Mnist/test_img/1/5208.pgm deleted file mode 100644 index 2302b55d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5211.pgm b/examples/autotiler/Mnist/test_img/1/5211.pgm deleted file mode 100644 index 59799e47e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5227.pgm b/examples/autotiler/Mnist/test_img/1/5227.pgm deleted file mode 100644 index bfff0e256..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/523.pgm b/examples/autotiler/Mnist/test_img/1/523.pgm deleted file mode 100644 index 9b8c30487..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5232.pgm b/examples/autotiler/Mnist/test_img/1/5232.pgm deleted file mode 100644 index 7570a241e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5252.pgm b/examples/autotiler/Mnist/test_img/1/5252.pgm deleted file mode 100644 index b97399be7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5254.pgm b/examples/autotiler/Mnist/test_img/1/5254.pgm deleted file mode 100644 index 6e9f00729..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5258.pgm b/examples/autotiler/Mnist/test_img/1/5258.pgm deleted file mode 100644 index e08850587..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5271.pgm b/examples/autotiler/Mnist/test_img/1/5271.pgm deleted file mode 100644 index 6e2f5d912..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5281.pgm b/examples/autotiler/Mnist/test_img/1/5281.pgm deleted file mode 100644 index 2eb09c260..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/529.pgm b/examples/autotiler/Mnist/test_img/1/529.pgm deleted file mode 100644 index 60e49ca09..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5291.pgm b/examples/autotiler/Mnist/test_img/1/5291.pgm deleted file mode 100644 index bc5845112..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5314.pgm b/examples/autotiler/Mnist/test_img/1/5314.pgm deleted file mode 100644 index a568f6e92..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5316.pgm b/examples/autotiler/Mnist/test_img/1/5316.pgm deleted file mode 100644 index b8013be7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5318.pgm b/examples/autotiler/Mnist/test_img/1/5318.pgm deleted file mode 100644 index b60d69bc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5323.pgm b/examples/autotiler/Mnist/test_img/1/5323.pgm deleted file mode 100644 index 53c64fa67..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5327.pgm b/examples/autotiler/Mnist/test_img/1/5327.pgm deleted file mode 100644 index e21a34e6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5331.pgm b/examples/autotiler/Mnist/test_img/1/5331.pgm deleted file mode 100644 index 9ef511287..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5350.pgm b/examples/autotiler/Mnist/test_img/1/5350.pgm deleted file mode 100644 index b38e92995..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5361.pgm b/examples/autotiler/Mnist/test_img/1/5361.pgm deleted file mode 100644 index 9d57a4d65..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/537.pgm b/examples/autotiler/Mnist/test_img/1/537.pgm deleted file mode 100644 index f90683f5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5370.pgm b/examples/autotiler/Mnist/test_img/1/5370.pgm deleted file mode 100644 index 33e99cd2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5384.pgm b/examples/autotiler/Mnist/test_img/1/5384.pgm deleted file mode 100644 index 2c04583a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5399.pgm b/examples/autotiler/Mnist/test_img/1/5399.pgm deleted file mode 100644 index f2ccce822..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5406.pgm b/examples/autotiler/Mnist/test_img/1/5406.pgm deleted file mode 100644 index e7afe49a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5416.pgm b/examples/autotiler/Mnist/test_img/1/5416.pgm deleted file mode 100644 index dd00cabb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5431.pgm b/examples/autotiler/Mnist/test_img/1/5431.pgm deleted file mode 100644 index 431b80197..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5442.pgm b/examples/autotiler/Mnist/test_img/1/5442.pgm deleted file mode 100644 index 2a90d3b3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5453.pgm b/examples/autotiler/Mnist/test_img/1/5453.pgm deleted file mode 100644 index d1d79a86f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5457.pgm b/examples/autotiler/Mnist/test_img/1/5457.pgm deleted file mode 100644 index 30f0c46ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5460.pgm b/examples/autotiler/Mnist/test_img/1/5460.pgm deleted file mode 100644 index 10cace6fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5461.pgm b/examples/autotiler/Mnist/test_img/1/5461.pgm deleted file mode 100644 index 0be1612e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5477.pgm b/examples/autotiler/Mnist/test_img/1/5477.pgm deleted file mode 100644 index e7263f290..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5486.pgm b/examples/autotiler/Mnist/test_img/1/5486.pgm deleted file mode 100644 index 92da929a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5490.pgm b/examples/autotiler/Mnist/test_img/1/5490.pgm deleted file mode 100644 index b3b289fb0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5499.pgm b/examples/autotiler/Mnist/test_img/1/5499.pgm deleted file mode 100644 index 7e582b510..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5506.pgm b/examples/autotiler/Mnist/test_img/1/5506.pgm deleted file mode 100644 index d44d1aa14..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5514.pgm b/examples/autotiler/Mnist/test_img/1/5514.pgm deleted file mode 100644 index 78dde1dc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5520.pgm b/examples/autotiler/Mnist/test_img/1/5520.pgm deleted file mode 100644 index 3ee329bac..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5524.pgm b/examples/autotiler/Mnist/test_img/1/5524.pgm deleted file mode 100644 index eb11f283d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5534.pgm b/examples/autotiler/Mnist/test_img/1/5534.pgm deleted file mode 100644 index b9ff6d69c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5535.pgm b/examples/autotiler/Mnist/test_img/1/5535.pgm deleted file mode 100644 index a130e9763..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5544.pgm b/examples/autotiler/Mnist/test_img/1/5544.pgm deleted file mode 100644 index c75a283d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5550.pgm b/examples/autotiler/Mnist/test_img/1/5550.pgm deleted file mode 100644 index d842f28f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5552.pgm b/examples/autotiler/Mnist/test_img/1/5552.pgm deleted file mode 100644 index c08c82490..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5553.pgm b/examples/autotiler/Mnist/test_img/1/5553.pgm deleted file mode 100644 index c11ea3976..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5566.pgm b/examples/autotiler/Mnist/test_img/1/5566.pgm deleted file mode 100644 index 44ec50b91..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5588.pgm b/examples/autotiler/Mnist/test_img/1/5588.pgm deleted file mode 100644 index 1826395cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5590.pgm b/examples/autotiler/Mnist/test_img/1/5590.pgm deleted file mode 100644 index 042ea1a88..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5594.pgm b/examples/autotiler/Mnist/test_img/1/5594.pgm deleted file mode 100644 index 94dde6ce0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5604.pgm b/examples/autotiler/Mnist/test_img/1/5604.pgm deleted file mode 100644 index 095bd9c73..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5614.pgm b/examples/autotiler/Mnist/test_img/1/5614.pgm deleted file mode 100644 index 91b5ea039..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5630.pgm b/examples/autotiler/Mnist/test_img/1/5630.pgm deleted file mode 100644 index 710e5ea49..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5637.pgm b/examples/autotiler/Mnist/test_img/1/5637.pgm deleted file mode 100644 index 7f4d95155..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5642.pgm b/examples/autotiler/Mnist/test_img/1/5642.pgm deleted file mode 100644 index f0ee30616..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5646.pgm b/examples/autotiler/Mnist/test_img/1/5646.pgm deleted file mode 100644 index d9bb6feaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5651.pgm b/examples/autotiler/Mnist/test_img/1/5651.pgm deleted file mode 100644 index 877a7cc33..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5661.pgm b/examples/autotiler/Mnist/test_img/1/5661.pgm deleted file mode 100644 index 89af48df1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5666.pgm b/examples/autotiler/Mnist/test_img/1/5666.pgm deleted file mode 100644 index 79957b92f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5679.pgm b/examples/autotiler/Mnist/test_img/1/5679.pgm deleted file mode 100644 index 60171dd9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5689.pgm b/examples/autotiler/Mnist/test_img/1/5689.pgm deleted file mode 100644 index 0d9d5c730..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5699.pgm b/examples/autotiler/Mnist/test_img/1/5699.pgm deleted file mode 100644 index e4b62acae..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/57.pgm b/examples/autotiler/Mnist/test_img/1/57.pgm deleted file mode 100644 index 6449b0828..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/57.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5722.pgm b/examples/autotiler/Mnist/test_img/1/5722.pgm deleted file mode 100644 index 7e8aa47ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5732.pgm b/examples/autotiler/Mnist/test_img/1/5732.pgm deleted file mode 100644 index 255fc922f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5738.pgm b/examples/autotiler/Mnist/test_img/1/5738.pgm deleted file mode 100644 index 18ea6374c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5746.pgm b/examples/autotiler/Mnist/test_img/1/5746.pgm deleted file mode 100644 index ee127e41f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5759.pgm b/examples/autotiler/Mnist/test_img/1/5759.pgm deleted file mode 100644 index fa0356b54..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5762.pgm b/examples/autotiler/Mnist/test_img/1/5762.pgm deleted file mode 100644 index f73befe35..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5776.pgm b/examples/autotiler/Mnist/test_img/1/5776.pgm deleted file mode 100644 index 2d7a811d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5783.pgm b/examples/autotiler/Mnist/test_img/1/5783.pgm deleted file mode 100644 index d75774468..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5786.pgm b/examples/autotiler/Mnist/test_img/1/5786.pgm deleted file mode 100644 index 14cb78f55..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5794.pgm b/examples/autotiler/Mnist/test_img/1/5794.pgm deleted file mode 100644 index 4a9d3b371..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5809.pgm b/examples/autotiler/Mnist/test_img/1/5809.pgm deleted file mode 100644 index 29ebdfdf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5811.pgm b/examples/autotiler/Mnist/test_img/1/5811.pgm deleted file mode 100644 index f58aea8b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5831.pgm b/examples/autotiler/Mnist/test_img/1/5831.pgm deleted file mode 100644 index 7d793a8fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5839.pgm b/examples/autotiler/Mnist/test_img/1/5839.pgm deleted file mode 100644 index 9a140d3b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/584.pgm b/examples/autotiler/Mnist/test_img/1/584.pgm deleted file mode 100644 index ae5e3fcd2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5848.pgm b/examples/autotiler/Mnist/test_img/1/5848.pgm deleted file mode 100644 index 4518390bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5859.pgm b/examples/autotiler/Mnist/test_img/1/5859.pgm deleted file mode 100644 index 5009dc291..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5872.pgm b/examples/autotiler/Mnist/test_img/1/5872.pgm deleted file mode 100644 index 128aab10b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5873.pgm b/examples/autotiler/Mnist/test_img/1/5873.pgm deleted file mode 100644 index 611c287ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5880.pgm b/examples/autotiler/Mnist/test_img/1/5880.pgm deleted file mode 100644 index 0892f89bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5889.pgm b/examples/autotiler/Mnist/test_img/1/5889.pgm deleted file mode 100644 index 84223473d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5893.pgm b/examples/autotiler/Mnist/test_img/1/5893.pgm deleted file mode 100644 index b92726b65..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5896.pgm b/examples/autotiler/Mnist/test_img/1/5896.pgm deleted file mode 100644 index 31a412d39..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5902.pgm b/examples/autotiler/Mnist/test_img/1/5902.pgm deleted file mode 100644 index e41964ef6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5915.pgm b/examples/autotiler/Mnist/test_img/1/5915.pgm deleted file mode 100644 index 7bc922f13..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5917.pgm b/examples/autotiler/Mnist/test_img/1/5917.pgm deleted file mode 100644 index 8b31082e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5933.pgm b/examples/autotiler/Mnist/test_img/1/5933.pgm deleted file mode 100644 index cc367c1ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5943.pgm b/examples/autotiler/Mnist/test_img/1/5943.pgm deleted file mode 100644 index 54ea6b7d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5953.pgm b/examples/autotiler/Mnist/test_img/1/5953.pgm deleted file mode 100644 index 71de59d42..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5970.pgm b/examples/autotiler/Mnist/test_img/1/5970.pgm deleted file mode 100644 index e98d29ec1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5978.pgm b/examples/autotiler/Mnist/test_img/1/5978.pgm deleted file mode 100644 index 39cd6f7d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5984.pgm b/examples/autotiler/Mnist/test_img/1/5984.pgm deleted file mode 100644 index 5b586c5af..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5991.pgm b/examples/autotiler/Mnist/test_img/1/5991.pgm deleted file mode 100644 index 542a9370d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/5998.pgm b/examples/autotiler/Mnist/test_img/1/5998.pgm deleted file mode 100644 index 5feaf2e9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/5998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6005.pgm b/examples/autotiler/Mnist/test_img/1/6005.pgm deleted file mode 100644 index 88a73ddae..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6008.pgm b/examples/autotiler/Mnist/test_img/1/6008.pgm deleted file mode 100644 index 4710651ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6012.pgm b/examples/autotiler/Mnist/test_img/1/6012.pgm deleted file mode 100644 index 063308880..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6044.pgm b/examples/autotiler/Mnist/test_img/1/6044.pgm deleted file mode 100644 index 39cc5f077..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6058.pgm b/examples/autotiler/Mnist/test_img/1/6058.pgm deleted file mode 100644 index 4208ee5be..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6060.pgm b/examples/autotiler/Mnist/test_img/1/6060.pgm deleted file mode 100644 index 7b02f6153..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6063.pgm b/examples/autotiler/Mnist/test_img/1/6063.pgm deleted file mode 100644 index b587816e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6073.pgm b/examples/autotiler/Mnist/test_img/1/6073.pgm deleted file mode 100644 index 93a06030d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6083.pgm b/examples/autotiler/Mnist/test_img/1/6083.pgm deleted file mode 100644 index 0ca5d9857..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6092.pgm b/examples/autotiler/Mnist/test_img/1/6092.pgm deleted file mode 100644 index cb8a897f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6101.pgm b/examples/autotiler/Mnist/test_img/1/6101.pgm deleted file mode 100644 index 3d62fa361..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6108.pgm b/examples/autotiler/Mnist/test_img/1/6108.pgm deleted file mode 100644 index 4383ef74c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6110.pgm b/examples/autotiler/Mnist/test_img/1/6110.pgm deleted file mode 100644 index a689ec6e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6115.pgm b/examples/autotiler/Mnist/test_img/1/6115.pgm deleted file mode 100644 index 490d78390..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6125.pgm b/examples/autotiler/Mnist/test_img/1/6125.pgm deleted file mode 100644 index c22ca6bd7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6135.pgm b/examples/autotiler/Mnist/test_img/1/6135.pgm deleted file mode 100644 index ea382423e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6141.pgm b/examples/autotiler/Mnist/test_img/1/6141.pgm deleted file mode 100644 index b4a0209e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/615.pgm b/examples/autotiler/Mnist/test_img/1/615.pgm deleted file mode 100644 index d71269189..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6159.pgm b/examples/autotiler/Mnist/test_img/1/6159.pgm deleted file mode 100644 index d23af1c0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6162.pgm b/examples/autotiler/Mnist/test_img/1/6162.pgm deleted file mode 100644 index a3317e7fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6182.pgm b/examples/autotiler/Mnist/test_img/1/6182.pgm deleted file mode 100644 index ed325bcbf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/619.pgm b/examples/autotiler/Mnist/test_img/1/619.pgm deleted file mode 100644 index 756267f22..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6192.pgm b/examples/autotiler/Mnist/test_img/1/6192.pgm deleted file mode 100644 index 12782c1b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6202.pgm b/examples/autotiler/Mnist/test_img/1/6202.pgm deleted file mode 100644 index 4b4505642..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6222.pgm b/examples/autotiler/Mnist/test_img/1/6222.pgm deleted file mode 100644 index e8030a761..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6224.pgm b/examples/autotiler/Mnist/test_img/1/6224.pgm deleted file mode 100644 index 899eed7d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6231.pgm b/examples/autotiler/Mnist/test_img/1/6231.pgm deleted file mode 100644 index 37ddecd7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6232.pgm b/examples/autotiler/Mnist/test_img/1/6232.pgm deleted file mode 100644 index 0ed863c0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6233.pgm b/examples/autotiler/Mnist/test_img/1/6233.pgm deleted file mode 100644 index 63c8d52f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6239.pgm b/examples/autotiler/Mnist/test_img/1/6239.pgm deleted file mode 100644 index 68c66fe37..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6254.pgm b/examples/autotiler/Mnist/test_img/1/6254.pgm deleted file mode 100644 index 897641670..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6276.pgm b/examples/autotiler/Mnist/test_img/1/6276.pgm deleted file mode 100644 index ab00fea8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6278.pgm b/examples/autotiler/Mnist/test_img/1/6278.pgm deleted file mode 100644 index b66446b94..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6308.pgm b/examples/autotiler/Mnist/test_img/1/6308.pgm deleted file mode 100644 index a7a2a47cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6310.pgm b/examples/autotiler/Mnist/test_img/1/6310.pgm deleted file mode 100644 index 79149eca4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6320.pgm b/examples/autotiler/Mnist/test_img/1/6320.pgm deleted file mode 100644 index 864f75cb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6329.pgm b/examples/autotiler/Mnist/test_img/1/6329.pgm deleted file mode 100644 index 951826871..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6338.pgm b/examples/autotiler/Mnist/test_img/1/6338.pgm deleted file mode 100644 index dc91bf83b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6356.pgm b/examples/autotiler/Mnist/test_img/1/6356.pgm deleted file mode 100644 index dc6ebc066..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6374.pgm b/examples/autotiler/Mnist/test_img/1/6374.pgm deleted file mode 100644 index 90b85084b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6375.pgm b/examples/autotiler/Mnist/test_img/1/6375.pgm deleted file mode 100644 index 30034a9f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6397.pgm b/examples/autotiler/Mnist/test_img/1/6397.pgm deleted file mode 100644 index 73bb728c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/640.pgm b/examples/autotiler/Mnist/test_img/1/640.pgm deleted file mode 100644 index f4c0041ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6407.pgm b/examples/autotiler/Mnist/test_img/1/6407.pgm deleted file mode 100644 index 5bbcc648f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6408.pgm b/examples/autotiler/Mnist/test_img/1/6408.pgm deleted file mode 100644 index 9351ab431..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6419.pgm b/examples/autotiler/Mnist/test_img/1/6419.pgm deleted file mode 100644 index 4fccc1f7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6430.pgm b/examples/autotiler/Mnist/test_img/1/6430.pgm deleted file mode 100644 index 4d142233a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6438.pgm b/examples/autotiler/Mnist/test_img/1/6438.pgm deleted file mode 100644 index e9910af3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6445.pgm b/examples/autotiler/Mnist/test_img/1/6445.pgm deleted file mode 100644 index a67467d3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6456.pgm b/examples/autotiler/Mnist/test_img/1/6456.pgm deleted file mode 100644 index 848e78049..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6468.pgm b/examples/autotiler/Mnist/test_img/1/6468.pgm deleted file mode 100644 index 5278324d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/647.pgm b/examples/autotiler/Mnist/test_img/1/647.pgm deleted file mode 100644 index a48ac1058..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6472.pgm b/examples/autotiler/Mnist/test_img/1/6472.pgm deleted file mode 100644 index 6ac5a842a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6482.pgm b/examples/autotiler/Mnist/test_img/1/6482.pgm deleted file mode 100644 index ee66f08d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6484.pgm b/examples/autotiler/Mnist/test_img/1/6484.pgm deleted file mode 100644 index 632fdcc60..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6502.pgm b/examples/autotiler/Mnist/test_img/1/6502.pgm deleted file mode 100644 index 2c0c91eed..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6506.pgm b/examples/autotiler/Mnist/test_img/1/6506.pgm deleted file mode 100644 index 7056bb38e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6515.pgm b/examples/autotiler/Mnist/test_img/1/6515.pgm deleted file mode 100644 index 66c1c9083..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/652.pgm b/examples/autotiler/Mnist/test_img/1/652.pgm deleted file mode 100644 index e6cedf78f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6527.pgm b/examples/autotiler/Mnist/test_img/1/6527.pgm deleted file mode 100644 index 6a8096785..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6533.pgm b/examples/autotiler/Mnist/test_img/1/6533.pgm deleted file mode 100644 index 6ca201392..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6540.pgm b/examples/autotiler/Mnist/test_img/1/6540.pgm deleted file mode 100644 index bdf250ef3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6545.pgm b/examples/autotiler/Mnist/test_img/1/6545.pgm deleted file mode 100644 index 60badd383..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6556.pgm b/examples/autotiler/Mnist/test_img/1/6556.pgm deleted file mode 100644 index 8fcb71301..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6572.pgm b/examples/autotiler/Mnist/test_img/1/6572.pgm deleted file mode 100644 index aa7846ca7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6601.pgm b/examples/autotiler/Mnist/test_img/1/6601.pgm deleted file mode 100644 index a1d4c1d4e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6604.pgm b/examples/autotiler/Mnist/test_img/1/6604.pgm deleted file mode 100644 index 6af96ba1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6618.pgm b/examples/autotiler/Mnist/test_img/1/6618.pgm deleted file mode 100644 index c83d034ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6622.pgm b/examples/autotiler/Mnist/test_img/1/6622.pgm deleted file mode 100644 index b28f6058c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6623.pgm b/examples/autotiler/Mnist/test_img/1/6623.pgm deleted file mode 100644 index 574946b70..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6628.pgm b/examples/autotiler/Mnist/test_img/1/6628.pgm deleted file mode 100644 index 4a79690a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/663.pgm b/examples/autotiler/Mnist/test_img/1/663.pgm deleted file mode 100644 index 2e1baaaba..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6634.pgm b/examples/autotiler/Mnist/test_img/1/6634.pgm deleted file mode 100644 index 32d77ea47..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6644.pgm b/examples/autotiler/Mnist/test_img/1/6644.pgm deleted file mode 100644 index a6b26d44a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6652.pgm b/examples/autotiler/Mnist/test_img/1/6652.pgm deleted file mode 100644 index cb1b63ee4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6661.pgm b/examples/autotiler/Mnist/test_img/1/6661.pgm deleted file mode 100644 index 3ed542c0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6670.pgm b/examples/autotiler/Mnist/test_img/1/6670.pgm deleted file mode 100644 index 17ffabfb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6673.pgm b/examples/autotiler/Mnist/test_img/1/6673.pgm deleted file mode 100644 index 98efb2c9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6678.pgm b/examples/autotiler/Mnist/test_img/1/6678.pgm deleted file mode 100644 index 3621efe8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6680.pgm b/examples/autotiler/Mnist/test_img/1/6680.pgm deleted file mode 100644 index 7d579e719..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6683.pgm b/examples/autotiler/Mnist/test_img/1/6683.pgm deleted file mode 100644 index 2f0f76b23..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6688.pgm b/examples/autotiler/Mnist/test_img/1/6688.pgm deleted file mode 100644 index 71ac20a17..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6694.pgm b/examples/autotiler/Mnist/test_img/1/6694.pgm deleted file mode 100644 index 6b2387861..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6702.pgm b/examples/autotiler/Mnist/test_img/1/6702.pgm deleted file mode 100644 index 96514d67b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6712.pgm b/examples/autotiler/Mnist/test_img/1/6712.pgm deleted file mode 100644 index 4a003910a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/672.pgm b/examples/autotiler/Mnist/test_img/1/672.pgm deleted file mode 100644 index 0d25eb56a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6720.pgm b/examples/autotiler/Mnist/test_img/1/6720.pgm deleted file mode 100644 index 1e5781b1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6726.pgm b/examples/autotiler/Mnist/test_img/1/6726.pgm deleted file mode 100644 index 6d6f327eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6729.pgm b/examples/autotiler/Mnist/test_img/1/6729.pgm deleted file mode 100644 index 6204c0eb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6733.pgm b/examples/autotiler/Mnist/test_img/1/6733.pgm deleted file mode 100644 index e69b8d39c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6743.pgm b/examples/autotiler/Mnist/test_img/1/6743.pgm deleted file mode 100644 index c641c3656..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6748.pgm b/examples/autotiler/Mnist/test_img/1/6748.pgm deleted file mode 100644 index dd95530d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/675.pgm b/examples/autotiler/Mnist/test_img/1/675.pgm deleted file mode 100644 index b45981f84..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6751.pgm b/examples/autotiler/Mnist/test_img/1/6751.pgm deleted file mode 100644 index ee1da4db8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6757.pgm b/examples/autotiler/Mnist/test_img/1/6757.pgm deleted file mode 100644 index f3ee143ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6758.pgm b/examples/autotiler/Mnist/test_img/1/6758.pgm deleted file mode 100644 index 3e7b145bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6783.pgm b/examples/autotiler/Mnist/test_img/1/6783.pgm deleted file mode 100644 index a4fc63ca1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6789.pgm b/examples/autotiler/Mnist/test_img/1/6789.pgm deleted file mode 100644 index 4a7136caa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6799.pgm b/examples/autotiler/Mnist/test_img/1/6799.pgm deleted file mode 100644 index 28b3d432e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6809.pgm b/examples/autotiler/Mnist/test_img/1/6809.pgm deleted file mode 100644 index e4f110f22..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6819.pgm b/examples/autotiler/Mnist/test_img/1/6819.pgm deleted file mode 100644 index 78fed2b09..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/682.pgm b/examples/autotiler/Mnist/test_img/1/682.pgm deleted file mode 100644 index db069b718..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6829.pgm b/examples/autotiler/Mnist/test_img/1/6829.pgm deleted file mode 100644 index 353d9dc81..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6848.pgm b/examples/autotiler/Mnist/test_img/1/6848.pgm deleted file mode 100644 index 03db39ad3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6868.pgm b/examples/autotiler/Mnist/test_img/1/6868.pgm deleted file mode 100644 index d04819017..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6869.pgm b/examples/autotiler/Mnist/test_img/1/6869.pgm deleted file mode 100644 index 01b5566a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6883.pgm b/examples/autotiler/Mnist/test_img/1/6883.pgm deleted file mode 100644 index c09264599..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6891.pgm b/examples/autotiler/Mnist/test_img/1/6891.pgm deleted file mode 100644 index e22725e1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6901.pgm b/examples/autotiler/Mnist/test_img/1/6901.pgm deleted file mode 100644 index 0d08be50a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6902.pgm b/examples/autotiler/Mnist/test_img/1/6902.pgm deleted file mode 100644 index 8f96284f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6913.pgm b/examples/autotiler/Mnist/test_img/1/6913.pgm deleted file mode 100644 index 95b57b56a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6917.pgm b/examples/autotiler/Mnist/test_img/1/6917.pgm deleted file mode 100644 index f2bc735fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6928.pgm b/examples/autotiler/Mnist/test_img/1/6928.pgm deleted file mode 100644 index 23d5eae54..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6938.pgm b/examples/autotiler/Mnist/test_img/1/6938.pgm deleted file mode 100644 index 9641db4df..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6948.pgm b/examples/autotiler/Mnist/test_img/1/6948.pgm deleted file mode 100644 index 3ac8afdbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/695.pgm b/examples/autotiler/Mnist/test_img/1/695.pgm deleted file mode 100644 index e2dfab611..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/696.pgm b/examples/autotiler/Mnist/test_img/1/696.pgm deleted file mode 100644 index 87206a625..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6961.pgm b/examples/autotiler/Mnist/test_img/1/6961.pgm deleted file mode 100644 index e9fb8a094..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6969.pgm b/examples/autotiler/Mnist/test_img/1/6969.pgm deleted file mode 100644 index dff511e3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/6976.pgm b/examples/autotiler/Mnist/test_img/1/6976.pgm deleted file mode 100644 index 256efba76..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/6976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/700.pgm b/examples/autotiler/Mnist/test_img/1/700.pgm deleted file mode 100644 index 35c69d8fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7000.pgm b/examples/autotiler/Mnist/test_img/1/7000.pgm deleted file mode 100644 index bcdb3e116..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7005.pgm b/examples/autotiler/Mnist/test_img/1/7005.pgm deleted file mode 100644 index 85c1ee4c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7014.pgm b/examples/autotiler/Mnist/test_img/1/7014.pgm deleted file mode 100644 index 70c2fc7cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7019.pgm b/examples/autotiler/Mnist/test_img/1/7019.pgm deleted file mode 100644 index 473c237bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7023.pgm b/examples/autotiler/Mnist/test_img/1/7023.pgm deleted file mode 100644 index 36e160532..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7048.pgm b/examples/autotiler/Mnist/test_img/1/7048.pgm deleted file mode 100644 index a0ec73384..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7053.pgm b/examples/autotiler/Mnist/test_img/1/7053.pgm deleted file mode 100644 index 810aa87b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7063.pgm b/examples/autotiler/Mnist/test_img/1/7063.pgm deleted file mode 100644 index 9d06f2a71..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7073.pgm b/examples/autotiler/Mnist/test_img/1/7073.pgm deleted file mode 100644 index e0c48a76d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7087.pgm b/examples/autotiler/Mnist/test_img/1/7087.pgm deleted file mode 100644 index 5cdcc62c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7091.pgm b/examples/autotiler/Mnist/test_img/1/7091.pgm deleted file mode 100644 index 5db923c6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7123.pgm b/examples/autotiler/Mnist/test_img/1/7123.pgm deleted file mode 100644 index 6eea735d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7138.pgm b/examples/autotiler/Mnist/test_img/1/7138.pgm deleted file mode 100644 index 9c688baf4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7150.pgm b/examples/autotiler/Mnist/test_img/1/7150.pgm deleted file mode 100644 index 60322cbaa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/716.pgm b/examples/autotiler/Mnist/test_img/1/716.pgm deleted file mode 100644 index a0d661456..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7165.pgm b/examples/autotiler/Mnist/test_img/1/7165.pgm deleted file mode 100644 index dbcd39f79..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7167.pgm b/examples/autotiler/Mnist/test_img/1/7167.pgm deleted file mode 100644 index cf2501cd7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7171.pgm b/examples/autotiler/Mnist/test_img/1/7171.pgm deleted file mode 100644 index 217c269d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7173.pgm b/examples/autotiler/Mnist/test_img/1/7173.pgm deleted file mode 100644 index 407b1b75f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7176.pgm b/examples/autotiler/Mnist/test_img/1/7176.pgm deleted file mode 100644 index 2e71e5ef8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7183.pgm b/examples/autotiler/Mnist/test_img/1/7183.pgm deleted file mode 100644 index 183897169..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7191.pgm b/examples/autotiler/Mnist/test_img/1/7191.pgm deleted file mode 100644 index 7af28ace2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7217.pgm b/examples/autotiler/Mnist/test_img/1/7217.pgm deleted file mode 100644 index 159f37fbb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7223.pgm b/examples/autotiler/Mnist/test_img/1/7223.pgm deleted file mode 100644 index de3f62b88..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7226.pgm b/examples/autotiler/Mnist/test_img/1/7226.pgm deleted file mode 100644 index e7a34b424..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7228.pgm b/examples/autotiler/Mnist/test_img/1/7228.pgm deleted file mode 100644 index 61baf9c63..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7232.pgm b/examples/autotiler/Mnist/test_img/1/7232.pgm deleted file mode 100644 index dc7417e08..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7247.pgm b/examples/autotiler/Mnist/test_img/1/7247.pgm deleted file mode 100644 index 2611e3cc4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/725.pgm b/examples/autotiler/Mnist/test_img/1/725.pgm deleted file mode 100644 index 2e838a8a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7253.pgm b/examples/autotiler/Mnist/test_img/1/7253.pgm deleted file mode 100644 index 4ed1fb559..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7262.pgm b/examples/autotiler/Mnist/test_img/1/7262.pgm deleted file mode 100644 index 150d37cd3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7270.pgm b/examples/autotiler/Mnist/test_img/1/7270.pgm deleted file mode 100644 index b91268026..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7280.pgm b/examples/autotiler/Mnist/test_img/1/7280.pgm deleted file mode 100644 index 0baf0f975..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7290.pgm b/examples/autotiler/Mnist/test_img/1/7290.pgm deleted file mode 100644 index fdef283b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7299.pgm b/examples/autotiler/Mnist/test_img/1/7299.pgm deleted file mode 100644 index 8f1174d35..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7303.pgm b/examples/autotiler/Mnist/test_img/1/7303.pgm deleted file mode 100644 index 171e81a9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7319.pgm b/examples/autotiler/Mnist/test_img/1/7319.pgm deleted file mode 100644 index 904e019ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7323.pgm b/examples/autotiler/Mnist/test_img/1/7323.pgm deleted file mode 100644 index 50c35926e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7325.pgm b/examples/autotiler/Mnist/test_img/1/7325.pgm deleted file mode 100644 index c8dbd8ce0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7340.pgm b/examples/autotiler/Mnist/test_img/1/7340.pgm deleted file mode 100644 index b84ee3e20..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7344.pgm b/examples/autotiler/Mnist/test_img/1/7344.pgm deleted file mode 100644 index ed101d0ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/735.pgm b/examples/autotiler/Mnist/test_img/1/735.pgm deleted file mode 100644 index f7bab96e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7353.pgm b/examples/autotiler/Mnist/test_img/1/7353.pgm deleted file mode 100644 index 1930ad9b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7373.pgm b/examples/autotiler/Mnist/test_img/1/7373.pgm deleted file mode 100644 index 7ece8ca95..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7395.pgm b/examples/autotiler/Mnist/test_img/1/7395.pgm deleted file mode 100644 index 8839f9bf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7399.pgm b/examples/autotiler/Mnist/test_img/1/7399.pgm deleted file mode 100644 index 8b3b02135..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/74.pgm b/examples/autotiler/Mnist/test_img/1/74.pgm deleted file mode 100644 index 056603f4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/74.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7405.pgm b/examples/autotiler/Mnist/test_img/1/7405.pgm deleted file mode 100644 index 48ab47696..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7411.pgm b/examples/autotiler/Mnist/test_img/1/7411.pgm deleted file mode 100644 index 1697c8fe7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7418.pgm b/examples/autotiler/Mnist/test_img/1/7418.pgm deleted file mode 100644 index 55aace615..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7422.pgm b/examples/autotiler/Mnist/test_img/1/7422.pgm deleted file mode 100644 index 5534d38ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7424.pgm b/examples/autotiler/Mnist/test_img/1/7424.pgm deleted file mode 100644 index 7b5fad975..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7442.pgm b/examples/autotiler/Mnist/test_img/1/7442.pgm deleted file mode 100644 index 1b9c60a3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7447.pgm b/examples/autotiler/Mnist/test_img/1/7447.pgm deleted file mode 100644 index fab02480a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/745.pgm b/examples/autotiler/Mnist/test_img/1/745.pgm deleted file mode 100644 index 82981f2fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7453.pgm b/examples/autotiler/Mnist/test_img/1/7453.pgm deleted file mode 100644 index d2e49525f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7463.pgm b/examples/autotiler/Mnist/test_img/1/7463.pgm deleted file mode 100644 index d1dec5c66..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7468.pgm b/examples/autotiler/Mnist/test_img/1/7468.pgm deleted file mode 100644 index e43722dba..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7480.pgm b/examples/autotiler/Mnist/test_img/1/7480.pgm deleted file mode 100644 index aa45869cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/749.pgm b/examples/autotiler/Mnist/test_img/1/749.pgm deleted file mode 100644 index 58bc56975..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7507.pgm b/examples/autotiler/Mnist/test_img/1/7507.pgm deleted file mode 100644 index b493fb8c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7517.pgm b/examples/autotiler/Mnist/test_img/1/7517.pgm deleted file mode 100644 index a9b3570c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7527.pgm b/examples/autotiler/Mnist/test_img/1/7527.pgm deleted file mode 100644 index a1de9b76b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/754.pgm b/examples/autotiler/Mnist/test_img/1/754.pgm deleted file mode 100644 index 32fe7899b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/755.pgm b/examples/autotiler/Mnist/test_img/1/755.pgm deleted file mode 100644 index 750d09753..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7556.pgm b/examples/autotiler/Mnist/test_img/1/7556.pgm deleted file mode 100644 index 73ee7bc53..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7561.pgm b/examples/autotiler/Mnist/test_img/1/7561.pgm deleted file mode 100644 index e74988b04..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7563.pgm b/examples/autotiler/Mnist/test_img/1/7563.pgm deleted file mode 100644 index e94c9d8f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7567.pgm b/examples/autotiler/Mnist/test_img/1/7567.pgm deleted file mode 100644 index 2891b1d52..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7581.pgm b/examples/autotiler/Mnist/test_img/1/7581.pgm deleted file mode 100644 index 82f571dae..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7582.pgm b/examples/autotiler/Mnist/test_img/1/7582.pgm deleted file mode 100644 index ddf6bf08c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7591.pgm b/examples/autotiler/Mnist/test_img/1/7591.pgm deleted file mode 100644 index 8c52dcb1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7600.pgm b/examples/autotiler/Mnist/test_img/1/7600.pgm deleted file mode 100644 index 2583fd340..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7608.pgm b/examples/autotiler/Mnist/test_img/1/7608.pgm deleted file mode 100644 index 1125275e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7618.pgm b/examples/autotiler/Mnist/test_img/1/7618.pgm deleted file mode 100644 index 14b40f306..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7626.pgm b/examples/autotiler/Mnist/test_img/1/7626.pgm deleted file mode 100644 index e6de5b66f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7636.pgm b/examples/autotiler/Mnist/test_img/1/7636.pgm deleted file mode 100644 index 2c4931b67..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7638.pgm b/examples/autotiler/Mnist/test_img/1/7638.pgm deleted file mode 100644 index d515c5965..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7658.pgm b/examples/autotiler/Mnist/test_img/1/7658.pgm deleted file mode 100644 index 1bf59f7fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7661.pgm b/examples/autotiler/Mnist/test_img/1/7661.pgm deleted file mode 100644 index cb083809d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7665.pgm b/examples/autotiler/Mnist/test_img/1/7665.pgm deleted file mode 100644 index dbfcea28c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/767.pgm b/examples/autotiler/Mnist/test_img/1/767.pgm deleted file mode 100644 index 525a0f3bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/768.pgm b/examples/autotiler/Mnist/test_img/1/768.pgm deleted file mode 100644 index a483b4969..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7686.pgm b/examples/autotiler/Mnist/test_img/1/7686.pgm deleted file mode 100644 index c928ac927..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7708.pgm b/examples/autotiler/Mnist/test_img/1/7708.pgm deleted file mode 100644 index 8166a3f4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7717.pgm b/examples/autotiler/Mnist/test_img/1/7717.pgm deleted file mode 100644 index 820610d71..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/772.pgm b/examples/autotiler/Mnist/test_img/1/772.pgm deleted file mode 100644 index 4da881035..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7722.pgm b/examples/autotiler/Mnist/test_img/1/7722.pgm deleted file mode 100644 index eee1c139d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7725.pgm b/examples/autotiler/Mnist/test_img/1/7725.pgm deleted file mode 100644 index 4e5e032ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7728.pgm b/examples/autotiler/Mnist/test_img/1/7728.pgm deleted file mode 100644 index 70e18e8ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7738.pgm b/examples/autotiler/Mnist/test_img/1/7738.pgm deleted file mode 100644 index 5ed54718a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7748.pgm b/examples/autotiler/Mnist/test_img/1/7748.pgm deleted file mode 100644 index 4a89cb028..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/777.pgm b/examples/autotiler/Mnist/test_img/1/777.pgm deleted file mode 100644 index b37a19109..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7783.pgm b/examples/autotiler/Mnist/test_img/1/7783.pgm deleted file mode 100644 index 53311c4bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7784.pgm b/examples/autotiler/Mnist/test_img/1/7784.pgm deleted file mode 100644 index 984ccf0d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7790.pgm b/examples/autotiler/Mnist/test_img/1/7790.pgm deleted file mode 100644 index bf702f9e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7802.pgm b/examples/autotiler/Mnist/test_img/1/7802.pgm deleted file mode 100644 index 75ce034f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7806.pgm b/examples/autotiler/Mnist/test_img/1/7806.pgm deleted file mode 100644 index 74fc38c78..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7811.pgm b/examples/autotiler/Mnist/test_img/1/7811.pgm deleted file mode 100644 index 6021368df..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7812.pgm b/examples/autotiler/Mnist/test_img/1/7812.pgm deleted file mode 100644 index e4207c8db..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7822.pgm b/examples/autotiler/Mnist/test_img/1/7822.pgm deleted file mode 100644 index 7103f4529..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/783.pgm b/examples/autotiler/Mnist/test_img/1/783.pgm deleted file mode 100644 index 4f7bc3a1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7832.pgm b/examples/autotiler/Mnist/test_img/1/7832.pgm deleted file mode 100644 index 09b4e8a6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7839.pgm b/examples/autotiler/Mnist/test_img/1/7839.pgm deleted file mode 100644 index 52aca0dcf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7847.pgm b/examples/autotiler/Mnist/test_img/1/7847.pgm deleted file mode 100644 index 1398cae6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7856.pgm b/examples/autotiler/Mnist/test_img/1/7856.pgm deleted file mode 100644 index 42e6b7af6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7869.pgm b/examples/autotiler/Mnist/test_img/1/7869.pgm deleted file mode 100644 index c6cee9e70..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7881.pgm b/examples/autotiler/Mnist/test_img/1/7881.pgm deleted file mode 100644 index f205f27b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7890.pgm b/examples/autotiler/Mnist/test_img/1/7890.pgm deleted file mode 100644 index d3f074cbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7896.pgm b/examples/autotiler/Mnist/test_img/1/7896.pgm deleted file mode 100644 index f4f0ff066..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7899.pgm b/examples/autotiler/Mnist/test_img/1/7899.pgm deleted file mode 100644 index d715b43e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/790.pgm b/examples/autotiler/Mnist/test_img/1/790.pgm deleted file mode 100644 index 7eecc24de..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7900.pgm b/examples/autotiler/Mnist/test_img/1/7900.pgm deleted file mode 100644 index 5aec6999f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7911.pgm b/examples/autotiler/Mnist/test_img/1/7911.pgm deleted file mode 100644 index 7d75260c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7916.pgm b/examples/autotiler/Mnist/test_img/1/7916.pgm deleted file mode 100644 index d46eead92..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7920.pgm b/examples/autotiler/Mnist/test_img/1/7920.pgm deleted file mode 100644 index 43a1c37ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7928.pgm b/examples/autotiler/Mnist/test_img/1/7928.pgm deleted file mode 100644 index 8509f73c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7934.pgm b/examples/autotiler/Mnist/test_img/1/7934.pgm deleted file mode 100644 index 5d27fca9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7944.pgm b/examples/autotiler/Mnist/test_img/1/7944.pgm deleted file mode 100644 index 83ca5a126..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7954.pgm b/examples/autotiler/Mnist/test_img/1/7954.pgm deleted file mode 100644 index c04e1b0f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7969.pgm b/examples/autotiler/Mnist/test_img/1/7969.pgm deleted file mode 100644 index f5c427c89..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7973.pgm b/examples/autotiler/Mnist/test_img/1/7973.pgm deleted file mode 100644 index f248ccfb4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/798.pgm b/examples/autotiler/Mnist/test_img/1/798.pgm deleted file mode 100644 index 80fbbd843..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7980.pgm b/examples/autotiler/Mnist/test_img/1/7980.pgm deleted file mode 100644 index 0bdc0872c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/7990.pgm b/examples/autotiler/Mnist/test_img/1/7990.pgm deleted file mode 100644 index a6ee3fd7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/7990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8004.pgm b/examples/autotiler/Mnist/test_img/1/8004.pgm deleted file mode 100644 index e0cc2270e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8005.pgm b/examples/autotiler/Mnist/test_img/1/8005.pgm deleted file mode 100644 index 4a4794df9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8020.pgm b/examples/autotiler/Mnist/test_img/1/8020.pgm deleted file mode 100644 index 8a48cc3de..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8022.pgm b/examples/autotiler/Mnist/test_img/1/8022.pgm deleted file mode 100644 index be9377ce5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8045.pgm b/examples/autotiler/Mnist/test_img/1/8045.pgm deleted file mode 100644 index d342e33fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8048.pgm b/examples/autotiler/Mnist/test_img/1/8048.pgm deleted file mode 100644 index 04bd9cf9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8058.pgm b/examples/autotiler/Mnist/test_img/1/8058.pgm deleted file mode 100644 index d4a99dbef..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8068.pgm b/examples/autotiler/Mnist/test_img/1/8068.pgm deleted file mode 100644 index 57c755745..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8078.pgm b/examples/autotiler/Mnist/test_img/1/8078.pgm deleted file mode 100644 index 1b45452ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8086.pgm b/examples/autotiler/Mnist/test_img/1/8086.pgm deleted file mode 100644 index 571be0d64..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8088.pgm b/examples/autotiler/Mnist/test_img/1/8088.pgm deleted file mode 100644 index 348cd362e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/809.pgm b/examples/autotiler/Mnist/test_img/1/809.pgm deleted file mode 100644 index 950480b65..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8090.pgm b/examples/autotiler/Mnist/test_img/1/8090.pgm deleted file mode 100644 index 0695f63a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8099.pgm b/examples/autotiler/Mnist/test_img/1/8099.pgm deleted file mode 100644 index c1433425d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8100.pgm b/examples/autotiler/Mnist/test_img/1/8100.pgm deleted file mode 100644 index 9eda8ca19..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8113.pgm b/examples/autotiler/Mnist/test_img/1/8113.pgm deleted file mode 100644 index accf447f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8118.pgm b/examples/autotiler/Mnist/test_img/1/8118.pgm deleted file mode 100644 index 719b2c9c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8128.pgm b/examples/autotiler/Mnist/test_img/1/8128.pgm deleted file mode 100644 index 19e820a8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8138.pgm b/examples/autotiler/Mnist/test_img/1/8138.pgm deleted file mode 100644 index 358ddf12b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8159.pgm b/examples/autotiler/Mnist/test_img/1/8159.pgm deleted file mode 100644 index 5ba125db1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8164.pgm b/examples/autotiler/Mnist/test_img/1/8164.pgm deleted file mode 100644 index da33fb0b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8166.pgm b/examples/autotiler/Mnist/test_img/1/8166.pgm deleted file mode 100644 index 9f27bf798..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/818.pgm b/examples/autotiler/Mnist/test_img/1/818.pgm deleted file mode 100644 index 6b6f2d4c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8187.pgm b/examples/autotiler/Mnist/test_img/1/8187.pgm deleted file mode 100644 index 61c0e57dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8219.pgm b/examples/autotiler/Mnist/test_img/1/8219.pgm deleted file mode 100644 index d86b35a8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8229.pgm b/examples/autotiler/Mnist/test_img/1/8229.pgm deleted file mode 100644 index 4e6198a5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8231.pgm b/examples/autotiler/Mnist/test_img/1/8231.pgm deleted file mode 100644 index 01623c32c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8233.pgm b/examples/autotiler/Mnist/test_img/1/8233.pgm deleted file mode 100644 index ace9b388c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8239.pgm b/examples/autotiler/Mnist/test_img/1/8239.pgm deleted file mode 100644 index e3269a972..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/824.pgm b/examples/autotiler/Mnist/test_img/1/824.pgm deleted file mode 100644 index 0a7979043..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8244.pgm b/examples/autotiler/Mnist/test_img/1/8244.pgm deleted file mode 100644 index d42d557cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8252.pgm b/examples/autotiler/Mnist/test_img/1/8252.pgm deleted file mode 100644 index 324b5b36a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/826.pgm b/examples/autotiler/Mnist/test_img/1/826.pgm deleted file mode 100644 index fb2f2650d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8261.pgm b/examples/autotiler/Mnist/test_img/1/8261.pgm deleted file mode 100644 index d3e33afdf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8268.pgm b/examples/autotiler/Mnist/test_img/1/8268.pgm deleted file mode 100644 index 7ee7a3ead..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8286.pgm b/examples/autotiler/Mnist/test_img/1/8286.pgm deleted file mode 100644 index 42cdfd4b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8289.pgm b/examples/autotiler/Mnist/test_img/1/8289.pgm deleted file mode 100644 index 0afaf5672..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8303.pgm b/examples/autotiler/Mnist/test_img/1/8303.pgm deleted file mode 100644 index 191016d72..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8305.pgm b/examples/autotiler/Mnist/test_img/1/8305.pgm deleted file mode 100644 index c4fc52d6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8306.pgm b/examples/autotiler/Mnist/test_img/1/8306.pgm deleted file mode 100644 index 2e028ffb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/831.pgm b/examples/autotiler/Mnist/test_img/1/831.pgm deleted file mode 100644 index b143eceed..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8324.pgm b/examples/autotiler/Mnist/test_img/1/8324.pgm deleted file mode 100644 index 444fa6b9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8340.pgm b/examples/autotiler/Mnist/test_img/1/8340.pgm deleted file mode 100644 index c224f8c91..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8344.pgm b/examples/autotiler/Mnist/test_img/1/8344.pgm deleted file mode 100644 index de0f26a24..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/835.pgm b/examples/autotiler/Mnist/test_img/1/835.pgm deleted file mode 100644 index 0e7b955f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8352.pgm b/examples/autotiler/Mnist/test_img/1/8352.pgm deleted file mode 100644 index 9d10aa94d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/836.pgm b/examples/autotiler/Mnist/test_img/1/836.pgm deleted file mode 100644 index ea39cc7ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8360.pgm b/examples/autotiler/Mnist/test_img/1/8360.pgm deleted file mode 100644 index 0e15a15e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8367.pgm b/examples/autotiler/Mnist/test_img/1/8367.pgm deleted file mode 100644 index 848705a7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8376.pgm b/examples/autotiler/Mnist/test_img/1/8376.pgm deleted file mode 100644 index 87d80a4f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8390.pgm b/examples/autotiler/Mnist/test_img/1/8390.pgm deleted file mode 100644 index 0786de50f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8396.pgm b/examples/autotiler/Mnist/test_img/1/8396.pgm deleted file mode 100644 index c0d9fc84f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/840.pgm b/examples/autotiler/Mnist/test_img/1/840.pgm deleted file mode 100644 index 577624eec..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8418.pgm b/examples/autotiler/Mnist/test_img/1/8418.pgm deleted file mode 100644 index e93a52950..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8420.pgm b/examples/autotiler/Mnist/test_img/1/8420.pgm deleted file mode 100644 index ad680f8ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8427.pgm b/examples/autotiler/Mnist/test_img/1/8427.pgm deleted file mode 100644 index 342086757..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8432.pgm b/examples/autotiler/Mnist/test_img/1/8432.pgm deleted file mode 100644 index f3cd85e7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8439.pgm b/examples/autotiler/Mnist/test_img/1/8439.pgm deleted file mode 100644 index 9c6112723..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8443.pgm b/examples/autotiler/Mnist/test_img/1/8443.pgm deleted file mode 100644 index e87561e82..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8449.pgm b/examples/autotiler/Mnist/test_img/1/8449.pgm deleted file mode 100644 index 9326b86ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8459.pgm b/examples/autotiler/Mnist/test_img/1/8459.pgm deleted file mode 100644 index 9b4c72026..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8469.pgm b/examples/autotiler/Mnist/test_img/1/8469.pgm deleted file mode 100644 index 347fd7b15..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/848.pgm b/examples/autotiler/Mnist/test_img/1/848.pgm deleted file mode 100644 index bed6fc55f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8488.pgm b/examples/autotiler/Mnist/test_img/1/8488.pgm deleted file mode 100644 index 02d89f20c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8491.pgm b/examples/autotiler/Mnist/test_img/1/8491.pgm deleted file mode 100644 index 52f8a2146..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8493.pgm b/examples/autotiler/Mnist/test_img/1/8493.pgm deleted file mode 100644 index 9d817d304..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/850.pgm b/examples/autotiler/Mnist/test_img/1/850.pgm deleted file mode 100644 index 473efbdfb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8509.pgm b/examples/autotiler/Mnist/test_img/1/8509.pgm deleted file mode 100644 index 29ac47ec6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8526.pgm b/examples/autotiler/Mnist/test_img/1/8526.pgm deleted file mode 100644 index 48e0b8c94..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8536.pgm b/examples/autotiler/Mnist/test_img/1/8536.pgm deleted file mode 100644 index 3251d2a11..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8538.pgm b/examples/autotiler/Mnist/test_img/1/8538.pgm deleted file mode 100644 index 41529725a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8540.pgm b/examples/autotiler/Mnist/test_img/1/8540.pgm deleted file mode 100644 index 11d0811a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8543.pgm b/examples/autotiler/Mnist/test_img/1/8543.pgm deleted file mode 100644 index d697d9772..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8545.pgm b/examples/autotiler/Mnist/test_img/1/8545.pgm deleted file mode 100644 index 1c1f6eabb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8549.pgm b/examples/autotiler/Mnist/test_img/1/8549.pgm deleted file mode 100644 index 77ae715b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8559.pgm b/examples/autotiler/Mnist/test_img/1/8559.pgm deleted file mode 100644 index 08d5534d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8568.pgm b/examples/autotiler/Mnist/test_img/1/8568.pgm deleted file mode 100644 index 5d46994f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8575.pgm b/examples/autotiler/Mnist/test_img/1/8575.pgm deleted file mode 100644 index 3b2cc6dcc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8586.pgm b/examples/autotiler/Mnist/test_img/1/8586.pgm deleted file mode 100644 index 4947fd4f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8600.pgm b/examples/autotiler/Mnist/test_img/1/8600.pgm deleted file mode 100644 index b5da7e135..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8604.pgm b/examples/autotiler/Mnist/test_img/1/8604.pgm deleted file mode 100644 index f55aa8387..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8633.pgm b/examples/autotiler/Mnist/test_img/1/8633.pgm deleted file mode 100644 index 3dbb82945..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8636.pgm b/examples/autotiler/Mnist/test_img/1/8636.pgm deleted file mode 100644 index 202e31823..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8650.pgm b/examples/autotiler/Mnist/test_img/1/8650.pgm deleted file mode 100644 index d5e347452..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8658.pgm b/examples/autotiler/Mnist/test_img/1/8658.pgm deleted file mode 100644 index d5d00d2a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8659.pgm b/examples/autotiler/Mnist/test_img/1/8659.pgm deleted file mode 100644 index 5fe8fc733..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8666.pgm b/examples/autotiler/Mnist/test_img/1/8666.pgm deleted file mode 100644 index f8111e826..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8672.pgm b/examples/autotiler/Mnist/test_img/1/8672.pgm deleted file mode 100644 index ab450cd91..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8682.pgm b/examples/autotiler/Mnist/test_img/1/8682.pgm deleted file mode 100644 index 8b59952d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8692.pgm b/examples/autotiler/Mnist/test_img/1/8692.pgm deleted file mode 100644 index b99cd7030..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8708.pgm b/examples/autotiler/Mnist/test_img/1/8708.pgm deleted file mode 100644 index 3b398812c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8715.pgm b/examples/autotiler/Mnist/test_img/1/8715.pgm deleted file mode 100644 index 653999f7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8720.pgm b/examples/autotiler/Mnist/test_img/1/8720.pgm deleted file mode 100644 index 94ef6cbdf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8724.pgm b/examples/autotiler/Mnist/test_img/1/8724.pgm deleted file mode 100644 index 86b1e5a63..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8729.pgm b/examples/autotiler/Mnist/test_img/1/8729.pgm deleted file mode 100644 index 892f99e17..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8740.pgm b/examples/autotiler/Mnist/test_img/1/8740.pgm deleted file mode 100644 index 258c1182d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8745.pgm b/examples/autotiler/Mnist/test_img/1/8745.pgm deleted file mode 100644 index 5cc0c53c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8758.pgm b/examples/autotiler/Mnist/test_img/1/8758.pgm deleted file mode 100644 index b542d415a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8768.pgm b/examples/autotiler/Mnist/test_img/1/8768.pgm deleted file mode 100644 index a35aa7a5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8776.pgm b/examples/autotiler/Mnist/test_img/1/8776.pgm deleted file mode 100644 index 63ab57cf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8799.pgm b/examples/autotiler/Mnist/test_img/1/8799.pgm deleted file mode 100644 index b653b6b2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8809.pgm b/examples/autotiler/Mnist/test_img/1/8809.pgm deleted file mode 100644 index 183b37ffd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8819.pgm b/examples/autotiler/Mnist/test_img/1/8819.pgm deleted file mode 100644 index a70a3249f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8850.pgm b/examples/autotiler/Mnist/test_img/1/8850.pgm deleted file mode 100644 index ec3db1cf3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8862.pgm b/examples/autotiler/Mnist/test_img/1/8862.pgm deleted file mode 100644 index 0bf04e196..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8873.pgm b/examples/autotiler/Mnist/test_img/1/8873.pgm deleted file mode 100644 index d4878726d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8875.pgm b/examples/autotiler/Mnist/test_img/1/8875.pgm deleted file mode 100644 index f167ab27b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8887.pgm b/examples/autotiler/Mnist/test_img/1/8887.pgm deleted file mode 100644 index 116f41f14..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/889.pgm b/examples/autotiler/Mnist/test_img/1/889.pgm deleted file mode 100644 index 8cabc6d64..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8892.pgm b/examples/autotiler/Mnist/test_img/1/8892.pgm deleted file mode 100644 index 543d78808..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/89.pgm b/examples/autotiler/Mnist/test_img/1/89.pgm deleted file mode 100644 index 87e444416..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/89.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8905.pgm b/examples/autotiler/Mnist/test_img/1/8905.pgm deleted file mode 100644 index 62f9cbe9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8914.pgm b/examples/autotiler/Mnist/test_img/1/8914.pgm deleted file mode 100644 index c1198b791..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8922.pgm b/examples/autotiler/Mnist/test_img/1/8922.pgm deleted file mode 100644 index a4ae961b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8930.pgm b/examples/autotiler/Mnist/test_img/1/8930.pgm deleted file mode 100644 index 8dcd64726..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8938.pgm b/examples/autotiler/Mnist/test_img/1/8938.pgm deleted file mode 100644 index 11acf76e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8971.pgm b/examples/autotiler/Mnist/test_img/1/8971.pgm deleted file mode 100644 index 38e0a49ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8976.pgm b/examples/autotiler/Mnist/test_img/1/8976.pgm deleted file mode 100644 index 4c6e78f4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8979.pgm b/examples/autotiler/Mnist/test_img/1/8979.pgm deleted file mode 100644 index a149affa1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8980.pgm b/examples/autotiler/Mnist/test_img/1/8980.pgm deleted file mode 100644 index 8b903dc62..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8986.pgm b/examples/autotiler/Mnist/test_img/1/8986.pgm deleted file mode 100644 index 8687d7021..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8988.pgm b/examples/autotiler/Mnist/test_img/1/8988.pgm deleted file mode 100644 index 535eb6a7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/8995.pgm b/examples/autotiler/Mnist/test_img/1/8995.pgm deleted file mode 100644 index ad87ef10e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/8995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/900.pgm b/examples/autotiler/Mnist/test_img/1/900.pgm deleted file mode 100644 index adca3a7d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9002.pgm b/examples/autotiler/Mnist/test_img/1/9002.pgm deleted file mode 100644 index f10ff5ca9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9003.pgm b/examples/autotiler/Mnist/test_img/1/9003.pgm deleted file mode 100644 index ca76cc959..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9005.pgm b/examples/autotiler/Mnist/test_img/1/9005.pgm deleted file mode 100644 index 6d3b8785e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9017.pgm b/examples/autotiler/Mnist/test_img/1/9017.pgm deleted file mode 100644 index 59412d655..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9025.pgm b/examples/autotiler/Mnist/test_img/1/9025.pgm deleted file mode 100644 index 8c2489ebc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9030.pgm b/examples/autotiler/Mnist/test_img/1/9030.pgm deleted file mode 100644 index c3102cffe..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9039.pgm b/examples/autotiler/Mnist/test_img/1/9039.pgm deleted file mode 100644 index fadd79e36..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9049.pgm b/examples/autotiler/Mnist/test_img/1/9049.pgm deleted file mode 100644 index 5760a3055..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9051.pgm b/examples/autotiler/Mnist/test_img/1/9051.pgm deleted file mode 100644 index d7e2107f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9061.pgm b/examples/autotiler/Mnist/test_img/1/9061.pgm deleted file mode 100644 index 47aa1ba37..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/907.pgm b/examples/autotiler/Mnist/test_img/1/907.pgm deleted file mode 100644 index 94b6b1072..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9071.pgm b/examples/autotiler/Mnist/test_img/1/9071.pgm deleted file mode 100644 index 0a8f19fa1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9081.pgm b/examples/autotiler/Mnist/test_img/1/9081.pgm deleted file mode 100644 index 5a05f972a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9090.pgm b/examples/autotiler/Mnist/test_img/1/9090.pgm deleted file mode 100644 index 6e3743210..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9096.pgm b/examples/autotiler/Mnist/test_img/1/9096.pgm deleted file mode 100644 index de611c3a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9112.pgm b/examples/autotiler/Mnist/test_img/1/9112.pgm deleted file mode 100644 index 0171eaec3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9120.pgm b/examples/autotiler/Mnist/test_img/1/9120.pgm deleted file mode 100644 index 90f7f88d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9121.pgm b/examples/autotiler/Mnist/test_img/1/9121.pgm deleted file mode 100644 index 540150991..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9124.pgm b/examples/autotiler/Mnist/test_img/1/9124.pgm deleted file mode 100644 index d484f776c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9140.pgm b/examples/autotiler/Mnist/test_img/1/9140.pgm deleted file mode 100644 index 7d30e7ad0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9143.pgm b/examples/autotiler/Mnist/test_img/1/9143.pgm deleted file mode 100644 index ea52aa1f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9155.pgm b/examples/autotiler/Mnist/test_img/1/9155.pgm deleted file mode 100644 index cffa64141..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9171.pgm b/examples/autotiler/Mnist/test_img/1/9171.pgm deleted file mode 100644 index ccc531234..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/918.pgm b/examples/autotiler/Mnist/test_img/1/918.pgm deleted file mode 100644 index 2c0d8d46a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9180.pgm b/examples/autotiler/Mnist/test_img/1/9180.pgm deleted file mode 100644 index f775b75cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9190.pgm b/examples/autotiler/Mnist/test_img/1/9190.pgm deleted file mode 100644 index 20e7fd61b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/920.pgm b/examples/autotiler/Mnist/test_img/1/920.pgm deleted file mode 100644 index 8cf5db6fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9200.pgm b/examples/autotiler/Mnist/test_img/1/9200.pgm deleted file mode 100644 index 7b757e25f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9222.pgm b/examples/autotiler/Mnist/test_img/1/9222.pgm deleted file mode 100644 index 8db78cd33..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9233.pgm b/examples/autotiler/Mnist/test_img/1/9233.pgm deleted file mode 100644 index e850bae2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9241.pgm b/examples/autotiler/Mnist/test_img/1/9241.pgm deleted file mode 100644 index 89457c8db..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9249.pgm b/examples/autotiler/Mnist/test_img/1/9249.pgm deleted file mode 100644 index fddec5e20..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9258.pgm b/examples/autotiler/Mnist/test_img/1/9258.pgm deleted file mode 100644 index 04dce39f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9265.pgm b/examples/autotiler/Mnist/test_img/1/9265.pgm deleted file mode 100644 index 892b3fa97..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9274.pgm b/examples/autotiler/Mnist/test_img/1/9274.pgm deleted file mode 100644 index 354d74be5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9282.pgm b/examples/autotiler/Mnist/test_img/1/9282.pgm deleted file mode 100644 index 0b8d27703..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/929.pgm b/examples/autotiler/Mnist/test_img/1/929.pgm deleted file mode 100644 index 423039aef..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9291.pgm b/examples/autotiler/Mnist/test_img/1/9291.pgm deleted file mode 100644 index f11bece89..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9295.pgm b/examples/autotiler/Mnist/test_img/1/9295.pgm deleted file mode 100644 index dbea95517..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9301.pgm b/examples/autotiler/Mnist/test_img/1/9301.pgm deleted file mode 100644 index cf3940368..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9313.pgm b/examples/autotiler/Mnist/test_img/1/9313.pgm deleted file mode 100644 index 45a4e7b4a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9324.pgm b/examples/autotiler/Mnist/test_img/1/9324.pgm deleted file mode 100644 index ac28b5fdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9335.pgm b/examples/autotiler/Mnist/test_img/1/9335.pgm deleted file mode 100644 index c4ec0fc3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9336.pgm b/examples/autotiler/Mnist/test_img/1/9336.pgm deleted file mode 100644 index aad17bdbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9345.pgm b/examples/autotiler/Mnist/test_img/1/9345.pgm deleted file mode 100644 index f7162f801..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9348.pgm b/examples/autotiler/Mnist/test_img/1/9348.pgm deleted file mode 100644 index c52106bb8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9356.pgm b/examples/autotiler/Mnist/test_img/1/9356.pgm deleted file mode 100644 index 5f731b99e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9368.pgm b/examples/autotiler/Mnist/test_img/1/9368.pgm deleted file mode 100644 index 9cf410885..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9378.pgm b/examples/autotiler/Mnist/test_img/1/9378.pgm deleted file mode 100644 index 4f26a3ab6..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9388.pgm b/examples/autotiler/Mnist/test_img/1/9388.pgm deleted file mode 100644 index 906bcac4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9395.pgm b/examples/autotiler/Mnist/test_img/1/9395.pgm deleted file mode 100644 index 6789a65d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/94.pgm b/examples/autotiler/Mnist/test_img/1/94.pgm deleted file mode 100644 index 4c4dd7563..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/94.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9401.pgm b/examples/autotiler/Mnist/test_img/1/9401.pgm deleted file mode 100644 index 93bd087fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9407.pgm b/examples/autotiler/Mnist/test_img/1/9407.pgm deleted file mode 100644 index 1b8e6022f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9415.pgm b/examples/autotiler/Mnist/test_img/1/9415.pgm deleted file mode 100644 index e12caffff..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9434.pgm b/examples/autotiler/Mnist/test_img/1/9434.pgm deleted file mode 100644 index f08c15946..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9435.pgm b/examples/autotiler/Mnist/test_img/1/9435.pgm deleted file mode 100644 index d68eb7ce8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9438.pgm b/examples/autotiler/Mnist/test_img/1/9438.pgm deleted file mode 100644 index 8f25a06c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9443.pgm b/examples/autotiler/Mnist/test_img/1/9443.pgm deleted file mode 100644 index 27586f14d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9444.pgm b/examples/autotiler/Mnist/test_img/1/9444.pgm deleted file mode 100644 index 948cbc588..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9464.pgm b/examples/autotiler/Mnist/test_img/1/9464.pgm deleted file mode 100644 index a6c045e07..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/948.pgm b/examples/autotiler/Mnist/test_img/1/948.pgm deleted file mode 100644 index ab418054a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9485.pgm b/examples/autotiler/Mnist/test_img/1/9485.pgm deleted file mode 100644 index c5a0dec09..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9489.pgm b/examples/autotiler/Mnist/test_img/1/9489.pgm deleted file mode 100644 index 7ba4fceb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/949.pgm b/examples/autotiler/Mnist/test_img/1/949.pgm deleted file mode 100644 index ca4052b24..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9499.pgm b/examples/autotiler/Mnist/test_img/1/9499.pgm deleted file mode 100644 index b6eaa4f54..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9509.pgm b/examples/autotiler/Mnist/test_img/1/9509.pgm deleted file mode 100644 index 261ec26be..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9518.pgm b/examples/autotiler/Mnist/test_img/1/9518.pgm deleted file mode 100644 index aca4cf034..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9520.pgm b/examples/autotiler/Mnist/test_img/1/9520.pgm deleted file mode 100644 index 82b94da83..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9540.pgm b/examples/autotiler/Mnist/test_img/1/9540.pgm deleted file mode 100644 index e530c4ae0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9549.pgm b/examples/autotiler/Mnist/test_img/1/9549.pgm deleted file mode 100644 index da50f750b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9556.pgm b/examples/autotiler/Mnist/test_img/1/9556.pgm deleted file mode 100644 index 5fff0e395..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/956.pgm b/examples/autotiler/Mnist/test_img/1/956.pgm deleted file mode 100644 index cac8659aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9570.pgm b/examples/autotiler/Mnist/test_img/1/9570.pgm deleted file mode 100644 index af1863259..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9591.pgm b/examples/autotiler/Mnist/test_img/1/9591.pgm deleted file mode 100644 index ddf25427c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9593.pgm b/examples/autotiler/Mnist/test_img/1/9593.pgm deleted file mode 100644 index 7dc6b2306..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9594.pgm b/examples/autotiler/Mnist/test_img/1/9594.pgm deleted file mode 100644 index ca81a1a28..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9599.pgm b/examples/autotiler/Mnist/test_img/1/9599.pgm deleted file mode 100644 index 8910f5bfc..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/96.pgm b/examples/autotiler/Mnist/test_img/1/96.pgm deleted file mode 100644 index 7c8b08726..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/96.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9602.pgm b/examples/autotiler/Mnist/test_img/1/9602.pgm deleted file mode 100644 index 654e3c502..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9612.pgm b/examples/autotiler/Mnist/test_img/1/9612.pgm deleted file mode 100644 index 89baea0f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9622.pgm b/examples/autotiler/Mnist/test_img/1/9622.pgm deleted file mode 100644 index 051472eaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/963.pgm b/examples/autotiler/Mnist/test_img/1/963.pgm deleted file mode 100644 index 7ce39ee5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/964.pgm b/examples/autotiler/Mnist/test_img/1/964.pgm deleted file mode 100644 index b55a8f31e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9641.pgm b/examples/autotiler/Mnist/test_img/1/9641.pgm deleted file mode 100644 index fd5f63374..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9643.pgm b/examples/autotiler/Mnist/test_img/1/9643.pgm deleted file mode 100644 index 03033af33..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9645.pgm b/examples/autotiler/Mnist/test_img/1/9645.pgm deleted file mode 100644 index 3354f0ade..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9649.pgm b/examples/autotiler/Mnist/test_img/1/9649.pgm deleted file mode 100644 index 1448299b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9653.pgm b/examples/autotiler/Mnist/test_img/1/9653.pgm deleted file mode 100644 index 2f5ea7ff3..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9657.pgm b/examples/autotiler/Mnist/test_img/1/9657.pgm deleted file mode 100644 index 4aecd378a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9661.pgm b/examples/autotiler/Mnist/test_img/1/9661.pgm deleted file mode 100644 index ea074b255..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/967.pgm b/examples/autotiler/Mnist/test_img/1/967.pgm deleted file mode 100644 index 04ad81ad0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9674.pgm b/examples/autotiler/Mnist/test_img/1/9674.pgm deleted file mode 100644 index b7354334a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9682.pgm b/examples/autotiler/Mnist/test_img/1/9682.pgm deleted file mode 100644 index 021dc00cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9689.pgm b/examples/autotiler/Mnist/test_img/1/9689.pgm deleted file mode 100644 index 2bf96d50a..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9699.pgm b/examples/autotiler/Mnist/test_img/1/9699.pgm deleted file mode 100644 index 4d07f2714..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9705.pgm b/examples/autotiler/Mnist/test_img/1/9705.pgm deleted file mode 100644 index fced3084f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9715.pgm b/examples/autotiler/Mnist/test_img/1/9715.pgm deleted file mode 100644 index 48ef7043f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9725.pgm b/examples/autotiler/Mnist/test_img/1/9725.pgm deleted file mode 100644 index 2e159a085..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9737.pgm b/examples/autotiler/Mnist/test_img/1/9737.pgm deleted file mode 100644 index 685e91609..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9760.pgm b/examples/autotiler/Mnist/test_img/1/9760.pgm deleted file mode 100644 index 228dce6de..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/977.pgm b/examples/autotiler/Mnist/test_img/1/977.pgm deleted file mode 100644 index 49f197581..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9772.pgm b/examples/autotiler/Mnist/test_img/1/9772.pgm deleted file mode 100644 index 9f9a7c97d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9774.pgm b/examples/autotiler/Mnist/test_img/1/9774.pgm deleted file mode 100644 index 0c47a6a5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/979.pgm b/examples/autotiler/Mnist/test_img/1/979.pgm deleted file mode 100644 index 1b89c467b..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9795.pgm b/examples/autotiler/Mnist/test_img/1/9795.pgm deleted file mode 100644 index 33e561c0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9796.pgm b/examples/autotiler/Mnist/test_img/1/9796.pgm deleted file mode 100644 index c35fb550f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9799.pgm b/examples/autotiler/Mnist/test_img/1/9799.pgm deleted file mode 100644 index b932e2848..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9802.pgm b/examples/autotiler/Mnist/test_img/1/9802.pgm deleted file mode 100644 index 73e50514f..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9810.pgm b/examples/autotiler/Mnist/test_img/1/9810.pgm deleted file mode 100644 index eaed9e483..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9819.pgm b/examples/autotiler/Mnist/test_img/1/9819.pgm deleted file mode 100644 index 7e14a6f72..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9836.pgm b/examples/autotiler/Mnist/test_img/1/9836.pgm deleted file mode 100644 index ff570e741..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9838.pgm b/examples/autotiler/Mnist/test_img/1/9838.pgm deleted file mode 100644 index 776342463..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/984.pgm b/examples/autotiler/Mnist/test_img/1/984.pgm deleted file mode 100644 index 898ea30b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9844.pgm b/examples/autotiler/Mnist/test_img/1/9844.pgm deleted file mode 100644 index 5c2c85860..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9845.pgm b/examples/autotiler/Mnist/test_img/1/9845.pgm deleted file mode 100644 index 697a7a0e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9846.pgm b/examples/autotiler/Mnist/test_img/1/9846.pgm deleted file mode 100644 index c0d8d4cfa..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9848.pgm b/examples/autotiler/Mnist/test_img/1/9848.pgm deleted file mode 100644 index ab92e11ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9876.pgm b/examples/autotiler/Mnist/test_img/1/9876.pgm deleted file mode 100644 index 099c7f4cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9878.pgm b/examples/autotiler/Mnist/test_img/1/9878.pgm deleted file mode 100644 index 89f895f12..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/988.pgm b/examples/autotiler/Mnist/test_img/1/988.pgm deleted file mode 100644 index 5e01c166c..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9896.pgm b/examples/autotiler/Mnist/test_img/1/9896.pgm deleted file mode 100644 index e7117428e..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9898.pgm b/examples/autotiler/Mnist/test_img/1/9898.pgm deleted file mode 100644 index 1a1f51a5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9903.pgm b/examples/autotiler/Mnist/test_img/1/9903.pgm deleted file mode 100644 index f14457fe5..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9912.pgm b/examples/autotiler/Mnist/test_img/1/9912.pgm deleted file mode 100644 index ecdd9cfe0..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9923.pgm b/examples/autotiler/Mnist/test_img/1/9923.pgm deleted file mode 100644 index 77554dbd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9931.pgm b/examples/autotiler/Mnist/test_img/1/9931.pgm deleted file mode 100644 index d52117470..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/994.pgm b/examples/autotiler/Mnist/test_img/1/994.pgm deleted file mode 100644 index c925d4a33..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9946.pgm b/examples/autotiler/Mnist/test_img/1/9946.pgm deleted file mode 100644 index b4575d1e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9950.pgm b/examples/autotiler/Mnist/test_img/1/9950.pgm deleted file mode 100644 index e741bbba7..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9955.pgm b/examples/autotiler/Mnist/test_img/1/9955.pgm deleted file mode 100644 index 4b3eade35..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9956.pgm b/examples/autotiler/Mnist/test_img/1/9956.pgm deleted file mode 100644 index 72e0148f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9969.pgm b/examples/autotiler/Mnist/test_img/1/9969.pgm deleted file mode 100644 index b8eef9629..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9978.pgm b/examples/autotiler/Mnist/test_img/1/9978.pgm deleted file mode 100644 index 2e200d4e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9984.pgm b/examples/autotiler/Mnist/test_img/1/9984.pgm deleted file mode 100644 index 2b6266355..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/1/9994.pgm b/examples/autotiler/Mnist/test_img/1/9994.pgm deleted file mode 100644 index c78af8a31..000000000 Binary files a/examples/autotiler/Mnist/test_img/1/9994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1.pgm b/examples/autotiler/Mnist/test_img/2/1.pgm deleted file mode 100644 index b411101b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1002.pgm b/examples/autotiler/Mnist/test_img/2/1002.pgm deleted file mode 100644 index 27ef8f179..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1016.pgm b/examples/autotiler/Mnist/test_img/2/1016.pgm deleted file mode 100644 index 1bc2d9d58..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1031.pgm b/examples/autotiler/Mnist/test_img/2/1031.pgm deleted file mode 100644 index dc2a5612a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1036.pgm b/examples/autotiler/Mnist/test_img/2/1036.pgm deleted file mode 100644 index 2191c1088..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1049.pgm b/examples/autotiler/Mnist/test_img/2/1049.pgm deleted file mode 100644 index e7af43dd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1050.pgm b/examples/autotiler/Mnist/test_img/2/1050.pgm deleted file mode 100644 index a2566483d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1053.pgm b/examples/autotiler/Mnist/test_img/2/1053.pgm deleted file mode 100644 index 880dfb3d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1056.pgm b/examples/autotiler/Mnist/test_img/2/1056.pgm deleted file mode 100644 index e153795e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/106.pgm b/examples/autotiler/Mnist/test_img/2/106.pgm deleted file mode 100644 index 5b52901bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1064.pgm b/examples/autotiler/Mnist/test_img/2/1064.pgm deleted file mode 100644 index 94de785b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1065.pgm b/examples/autotiler/Mnist/test_img/2/1065.pgm deleted file mode 100644 index 7cb0badc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1076.pgm b/examples/autotiler/Mnist/test_img/2/1076.pgm deleted file mode 100644 index 7d0123456..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1132.pgm b/examples/autotiler/Mnist/test_img/2/1132.pgm deleted file mode 100644 index a0baab4a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1138.pgm b/examples/autotiler/Mnist/test_img/2/1138.pgm deleted file mode 100644 index d7e16ed8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1155.pgm b/examples/autotiler/Mnist/test_img/2/1155.pgm deleted file mode 100644 index a0c2a3d83..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1174.pgm b/examples/autotiler/Mnist/test_img/2/1174.pgm deleted file mode 100644 index 59713f18b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1177.pgm b/examples/autotiler/Mnist/test_img/2/1177.pgm deleted file mode 100644 index 6fda00ae2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1184.pgm b/examples/autotiler/Mnist/test_img/2/1184.pgm deleted file mode 100644 index 8905ef04a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1187.pgm b/examples/autotiler/Mnist/test_img/2/1187.pgm deleted file mode 100644 index 9133aa31c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/119.pgm b/examples/autotiler/Mnist/test_img/2/119.pgm deleted file mode 100644 index 932c80040..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1207.pgm b/examples/autotiler/Mnist/test_img/2/1207.pgm deleted file mode 100644 index d98323a10..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1210.pgm b/examples/autotiler/Mnist/test_img/2/1210.pgm deleted file mode 100644 index c199534cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1224.pgm b/examples/autotiler/Mnist/test_img/2/1224.pgm deleted file mode 100644 index b158311ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1227.pgm b/examples/autotiler/Mnist/test_img/2/1227.pgm deleted file mode 100644 index 1053c9da4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1237.pgm b/examples/autotiler/Mnist/test_img/2/1237.pgm deleted file mode 100644 index 9f060e6df..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1245.pgm b/examples/autotiler/Mnist/test_img/2/1245.pgm deleted file mode 100644 index 97447f70f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1251.pgm b/examples/autotiler/Mnist/test_img/2/1251.pgm deleted file mode 100644 index bddee47c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1256.pgm b/examples/autotiler/Mnist/test_img/2/1256.pgm deleted file mode 100644 index 6f4205f71..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1262.pgm b/examples/autotiler/Mnist/test_img/2/1262.pgm deleted file mode 100644 index fbf7e7c0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1269.pgm b/examples/autotiler/Mnist/test_img/2/1269.pgm deleted file mode 100644 index d6fe99f5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1303.pgm b/examples/autotiler/Mnist/test_img/2/1303.pgm deleted file mode 100644 index 77ec55dcd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1335.pgm b/examples/autotiler/Mnist/test_img/2/1335.pgm deleted file mode 100644 index 0010e5566..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1336.pgm b/examples/autotiler/Mnist/test_img/2/1336.pgm deleted file mode 100644 index 0611636c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1337.pgm b/examples/autotiler/Mnist/test_img/2/1337.pgm deleted file mode 100644 index c6579a1f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1341.pgm b/examples/autotiler/Mnist/test_img/2/1341.pgm deleted file mode 100644 index 4033ac00e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1345.pgm b/examples/autotiler/Mnist/test_img/2/1345.pgm deleted file mode 100644 index 823c0d447..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1348.pgm b/examples/autotiler/Mnist/test_img/2/1348.pgm deleted file mode 100644 index 79d15724a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1349.pgm b/examples/autotiler/Mnist/test_img/2/1349.pgm deleted file mode 100644 index a8d258259..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1352.pgm b/examples/autotiler/Mnist/test_img/2/1352.pgm deleted file mode 100644 index 7acea5f83..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1356.pgm b/examples/autotiler/Mnist/test_img/2/1356.pgm deleted file mode 100644 index ace8e6d15..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1365.pgm b/examples/autotiler/Mnist/test_img/2/1365.pgm deleted file mode 100644 index 57ff19c8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1372.pgm b/examples/autotiler/Mnist/test_img/2/1372.pgm deleted file mode 100644 index 5f4b1abc2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1374.pgm b/examples/autotiler/Mnist/test_img/2/1374.pgm deleted file mode 100644 index 4d64fd948..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1375.pgm b/examples/autotiler/Mnist/test_img/2/1375.pgm deleted file mode 100644 index 59ece2f91..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1381.pgm b/examples/autotiler/Mnist/test_img/2/1381.pgm deleted file mode 100644 index bacd0638f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1395.pgm b/examples/autotiler/Mnist/test_img/2/1395.pgm deleted file mode 100644 index 16f12a2d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1402.pgm b/examples/autotiler/Mnist/test_img/2/1402.pgm deleted file mode 100644 index a9089e15d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1407.pgm b/examples/autotiler/Mnist/test_img/2/1407.pgm deleted file mode 100644 index 685cec3d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1409.pgm b/examples/autotiler/Mnist/test_img/2/1409.pgm deleted file mode 100644 index 6c62d4764..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1410.pgm b/examples/autotiler/Mnist/test_img/2/1410.pgm deleted file mode 100644 index 5a93589f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1412.pgm b/examples/autotiler/Mnist/test_img/2/1412.pgm deleted file mode 100644 index 6dcc28948..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1431.pgm b/examples/autotiler/Mnist/test_img/2/1431.pgm deleted file mode 100644 index 864d0d411..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1432.pgm b/examples/autotiler/Mnist/test_img/2/1432.pgm deleted file mode 100644 index 7e44ec233..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1446.pgm b/examples/autotiler/Mnist/test_img/2/1446.pgm deleted file mode 100644 index 879751e3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1451.pgm b/examples/autotiler/Mnist/test_img/2/1451.pgm deleted file mode 100644 index 885f5a98e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1459.pgm b/examples/autotiler/Mnist/test_img/2/1459.pgm deleted file mode 100644 index 02e564fd3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1462.pgm b/examples/autotiler/Mnist/test_img/2/1462.pgm deleted file mode 100644 index 2b0b28a91..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/147.pgm b/examples/autotiler/Mnist/test_img/2/147.pgm deleted file mode 100644 index 1be8f728b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1485.pgm b/examples/autotiler/Mnist/test_img/2/1485.pgm deleted file mode 100644 index 58daf7e58..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/149.pgm b/examples/autotiler/Mnist/test_img/2/149.pgm deleted file mode 100644 index 5cf778fae..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1506.pgm b/examples/autotiler/Mnist/test_img/2/1506.pgm deleted file mode 100644 index 678b4656c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1514.pgm b/examples/autotiler/Mnist/test_img/2/1514.pgm deleted file mode 100644 index 09a97ae06..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1518.pgm b/examples/autotiler/Mnist/test_img/2/1518.pgm deleted file mode 100644 index 7ba613172..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1538.pgm b/examples/autotiler/Mnist/test_img/2/1538.pgm deleted file mode 100644 index 92d20e13a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1546.pgm b/examples/autotiler/Mnist/test_img/2/1546.pgm deleted file mode 100644 index 8e1a496fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1551.pgm b/examples/autotiler/Mnist/test_img/2/1551.pgm deleted file mode 100644 index 01cb12771..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1574.pgm b/examples/autotiler/Mnist/test_img/2/1574.pgm deleted file mode 100644 index f065a095d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1585.pgm b/examples/autotiler/Mnist/test_img/2/1585.pgm deleted file mode 100644 index 427baa077..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1604.pgm b/examples/autotiler/Mnist/test_img/2/1604.pgm deleted file mode 100644 index ee29c7e64..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1609.pgm b/examples/autotiler/Mnist/test_img/2/1609.pgm deleted file mode 100644 index d403e6a76..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1620.pgm b/examples/autotiler/Mnist/test_img/2/1620.pgm deleted file mode 100644 index c50a884be..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1642.pgm b/examples/autotiler/Mnist/test_img/2/1642.pgm deleted file mode 100644 index c9e726738..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1644.pgm b/examples/autotiler/Mnist/test_img/2/1644.pgm deleted file mode 100644 index 79c43c8b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1654.pgm b/examples/autotiler/Mnist/test_img/2/1654.pgm deleted file mode 100644 index d0130bc7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1656.pgm b/examples/autotiler/Mnist/test_img/2/1656.pgm deleted file mode 100644 index 31724beab..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1658.pgm b/examples/autotiler/Mnist/test_img/2/1658.pgm deleted file mode 100644 index e36312748..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1678.pgm b/examples/autotiler/Mnist/test_img/2/1678.pgm deleted file mode 100644 index 1037f7133..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1682.pgm b/examples/autotiler/Mnist/test_img/2/1682.pgm deleted file mode 100644 index 4805b85fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1689.pgm b/examples/autotiler/Mnist/test_img/2/1689.pgm deleted file mode 100644 index 799d3bc30..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1696.pgm b/examples/autotiler/Mnist/test_img/2/1696.pgm deleted file mode 100644 index 55786f0d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1711.pgm b/examples/autotiler/Mnist/test_img/2/1711.pgm deleted file mode 100644 index 74791a094..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/172.pgm b/examples/autotiler/Mnist/test_img/2/172.pgm deleted file mode 100644 index db4d12264..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1722.pgm b/examples/autotiler/Mnist/test_img/2/1722.pgm deleted file mode 100644 index 17b9c6b6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/174.pgm b/examples/autotiler/Mnist/test_img/2/174.pgm deleted file mode 100644 index 1a06e826d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1749.pgm b/examples/autotiler/Mnist/test_img/2/1749.pgm deleted file mode 100644 index 5f520685b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1771.pgm b/examples/autotiler/Mnist/test_img/2/1771.pgm deleted file mode 100644 index f091842b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1790.pgm b/examples/autotiler/Mnist/test_img/2/1790.pgm deleted file mode 100644 index 2d1a39df8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1795.pgm b/examples/autotiler/Mnist/test_img/2/1795.pgm deleted file mode 100644 index c4520b897..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1802.pgm b/examples/autotiler/Mnist/test_img/2/1802.pgm deleted file mode 100644 index 16d2fa0c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1811.pgm b/examples/autotiler/Mnist/test_img/2/1811.pgm deleted file mode 100644 index 144c8faaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1817.pgm b/examples/autotiler/Mnist/test_img/2/1817.pgm deleted file mode 100644 index 9db01fe02..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1824.pgm b/examples/autotiler/Mnist/test_img/2/1824.pgm deleted file mode 100644 index fc5725027..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1839.pgm b/examples/autotiler/Mnist/test_img/2/1839.pgm deleted file mode 100644 index 8a0c1493b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1842.pgm b/examples/autotiler/Mnist/test_img/2/1842.pgm deleted file mode 100644 index c1f24e48c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/186.pgm b/examples/autotiler/Mnist/test_img/2/186.pgm deleted file mode 100644 index 34611522a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1863.pgm b/examples/autotiler/Mnist/test_img/2/1863.pgm deleted file mode 100644 index 8307e5ca0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1871.pgm b/examples/autotiler/Mnist/test_img/2/1871.pgm deleted file mode 100644 index 7e9646ee9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1890.pgm b/examples/autotiler/Mnist/test_img/2/1890.pgm deleted file mode 100644 index b6df8af8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1891.pgm b/examples/autotiler/Mnist/test_img/2/1891.pgm deleted file mode 100644 index fae7251e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1895.pgm b/examples/autotiler/Mnist/test_img/2/1895.pgm deleted file mode 100644 index d2d0cde3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1915.pgm b/examples/autotiler/Mnist/test_img/2/1915.pgm deleted file mode 100644 index e479eb89a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1927.pgm b/examples/autotiler/Mnist/test_img/2/1927.pgm deleted file mode 100644 index b5750325f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1930.pgm b/examples/autotiler/Mnist/test_img/2/1930.pgm deleted file mode 100644 index 430003182..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1932.pgm b/examples/autotiler/Mnist/test_img/2/1932.pgm deleted file mode 100644 index 30eff8665..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1936.pgm b/examples/autotiler/Mnist/test_img/2/1936.pgm deleted file mode 100644 index 9c0fa8f3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1947.pgm b/examples/autotiler/Mnist/test_img/2/1947.pgm deleted file mode 100644 index af7d5a7b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1957.pgm b/examples/autotiler/Mnist/test_img/2/1957.pgm deleted file mode 100644 index 79557852b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1965.pgm b/examples/autotiler/Mnist/test_img/2/1965.pgm deleted file mode 100644 index bb5aaa016..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1984.pgm b/examples/autotiler/Mnist/test_img/2/1984.pgm deleted file mode 100644 index a81a66108..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/199.pgm b/examples/autotiler/Mnist/test_img/2/199.pgm deleted file mode 100644 index c3eb8fec5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/1991.pgm b/examples/autotiler/Mnist/test_img/2/1991.pgm deleted file mode 100644 index ee0e426d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/1991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2044.pgm b/examples/autotiler/Mnist/test_img/2/2044.pgm deleted file mode 100644 index 666aabe45..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2055.pgm b/examples/autotiler/Mnist/test_img/2/2055.pgm deleted file mode 100644 index 1244bff6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2058.pgm b/examples/autotiler/Mnist/test_img/2/2058.pgm deleted file mode 100644 index 0be2050fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/208.pgm b/examples/autotiler/Mnist/test_img/2/208.pgm deleted file mode 100644 index a01e0cba7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2082.pgm b/examples/autotiler/Mnist/test_img/2/2082.pgm deleted file mode 100644 index 123844125..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2085.pgm b/examples/autotiler/Mnist/test_img/2/2085.pgm deleted file mode 100644 index 9739c3849..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2092.pgm b/examples/autotiler/Mnist/test_img/2/2092.pgm deleted file mode 100644 index 8d501df84..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2098.pgm b/examples/autotiler/Mnist/test_img/2/2098.pgm deleted file mode 100644 index 4cd11090b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2101.pgm b/examples/autotiler/Mnist/test_img/2/2101.pgm deleted file mode 100644 index dbfa834c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2108.pgm b/examples/autotiler/Mnist/test_img/2/2108.pgm deleted file mode 100644 index b17ebeb92..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2110.pgm b/examples/autotiler/Mnist/test_img/2/2110.pgm deleted file mode 100644 index a6eeb73a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2112.pgm b/examples/autotiler/Mnist/test_img/2/2112.pgm deleted file mode 100644 index ced4721f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2122.pgm b/examples/autotiler/Mnist/test_img/2/2122.pgm deleted file mode 100644 index b8902e112..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2126.pgm b/examples/autotiler/Mnist/test_img/2/2126.pgm deleted file mode 100644 index 776bce24b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2133.pgm b/examples/autotiler/Mnist/test_img/2/2133.pgm deleted file mode 100644 index 7ffa852d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2138.pgm b/examples/autotiler/Mnist/test_img/2/2138.pgm deleted file mode 100644 index 2629e6ef4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2157.pgm b/examples/autotiler/Mnist/test_img/2/2157.pgm deleted file mode 100644 index 624ef02a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2158.pgm b/examples/autotiler/Mnist/test_img/2/2158.pgm deleted file mode 100644 index c03eb27ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2176.pgm b/examples/autotiler/Mnist/test_img/2/2176.pgm deleted file mode 100644 index 3cb891d58..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2184.pgm b/examples/autotiler/Mnist/test_img/2/2184.pgm deleted file mode 100644 index 8f44f0c68..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2186.pgm b/examples/autotiler/Mnist/test_img/2/2186.pgm deleted file mode 100644 index 4a5554f46..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2191.pgm b/examples/autotiler/Mnist/test_img/2/2191.pgm deleted file mode 100644 index 061d21fb4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2198.pgm b/examples/autotiler/Mnist/test_img/2/2198.pgm deleted file mode 100644 index 822694271..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2200.pgm b/examples/autotiler/Mnist/test_img/2/2200.pgm deleted file mode 100644 index ab67fffe3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/221.pgm b/examples/autotiler/Mnist/test_img/2/221.pgm deleted file mode 100644 index 105251224..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/222.pgm b/examples/autotiler/Mnist/test_img/2/222.pgm deleted file mode 100644 index e5c1f5ddf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2242.pgm b/examples/autotiler/Mnist/test_img/2/2242.pgm deleted file mode 100644 index 9c5f9fc2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2248.pgm b/examples/autotiler/Mnist/test_img/2/2248.pgm deleted file mode 100644 index 0e453b870..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/225.pgm b/examples/autotiler/Mnist/test_img/2/225.pgm deleted file mode 100644 index f08d8ee0a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2253.pgm b/examples/autotiler/Mnist/test_img/2/2253.pgm deleted file mode 100644 index 8c8c998f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2254.pgm b/examples/autotiler/Mnist/test_img/2/2254.pgm deleted file mode 100644 index ed953c250..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2260.pgm b/examples/autotiler/Mnist/test_img/2/2260.pgm deleted file mode 100644 index 29e126f28..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2269.pgm b/examples/autotiler/Mnist/test_img/2/2269.pgm deleted file mode 100644 index 384bc2e9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2296.pgm b/examples/autotiler/Mnist/test_img/2/2296.pgm deleted file mode 100644 index 67eb35d85..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2299.pgm b/examples/autotiler/Mnist/test_img/2/2299.pgm deleted file mode 100644 index 392f5bf88..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2311.pgm b/examples/autotiler/Mnist/test_img/2/2311.pgm deleted file mode 100644 index 4eebff842..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2327.pgm b/examples/autotiler/Mnist/test_img/2/2327.pgm deleted file mode 100644 index 8bd0214fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2350.pgm b/examples/autotiler/Mnist/test_img/2/2350.pgm deleted file mode 100644 index 32263e085..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2353.pgm b/examples/autotiler/Mnist/test_img/2/2353.pgm deleted file mode 100644 index 9125b651f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2354.pgm b/examples/autotiler/Mnist/test_img/2/2354.pgm deleted file mode 100644 index f43ee0295..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/236.pgm b/examples/autotiler/Mnist/test_img/2/236.pgm deleted file mode 100644 index 811e4d544..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/237.pgm b/examples/autotiler/Mnist/test_img/2/237.pgm deleted file mode 100644 index b0b1875b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2374.pgm b/examples/autotiler/Mnist/test_img/2/2374.pgm deleted file mode 100644 index b3e43a4e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2390.pgm b/examples/autotiler/Mnist/test_img/2/2390.pgm deleted file mode 100644 index 47935ae51..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2391.pgm b/examples/autotiler/Mnist/test_img/2/2391.pgm deleted file mode 100644 index e611c5117..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2396.pgm b/examples/autotiler/Mnist/test_img/2/2396.pgm deleted file mode 100644 index 376f9ae02..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2397.pgm b/examples/autotiler/Mnist/test_img/2/2397.pgm deleted file mode 100644 index 150f3901a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2412.pgm b/examples/autotiler/Mnist/test_img/2/2412.pgm deleted file mode 100644 index 8be1cb235..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2415.pgm b/examples/autotiler/Mnist/test_img/2/2415.pgm deleted file mode 100644 index 16c7cd184..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2429.pgm b/examples/autotiler/Mnist/test_img/2/2429.pgm deleted file mode 100644 index d7453d1ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2432.pgm b/examples/autotiler/Mnist/test_img/2/2432.pgm deleted file mode 100644 index 3736f8fa5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2433.pgm b/examples/autotiler/Mnist/test_img/2/2433.pgm deleted file mode 100644 index 02e1b90eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2437.pgm b/examples/autotiler/Mnist/test_img/2/2437.pgm deleted file mode 100644 index e3e35cb9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2439.pgm b/examples/autotiler/Mnist/test_img/2/2439.pgm deleted file mode 100644 index 544d311ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/244.pgm b/examples/autotiler/Mnist/test_img/2/244.pgm deleted file mode 100644 index bbfdb4f2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2446.pgm b/examples/autotiler/Mnist/test_img/2/2446.pgm deleted file mode 100644 index b46daecf0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2459.pgm b/examples/autotiler/Mnist/test_img/2/2459.pgm deleted file mode 100644 index c67a4c48d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2462.pgm b/examples/autotiler/Mnist/test_img/2/2462.pgm deleted file mode 100644 index d89b1636f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2475.pgm b/examples/autotiler/Mnist/test_img/2/2475.pgm deleted file mode 100644 index 1f33f3e07..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2481.pgm b/examples/autotiler/Mnist/test_img/2/2481.pgm deleted file mode 100644 index f22cb05cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2488.pgm b/examples/autotiler/Mnist/test_img/2/2488.pgm deleted file mode 100644 index 139bfd37d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/249.pgm b/examples/autotiler/Mnist/test_img/2/249.pgm deleted file mode 100644 index b9a60abe2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2491.pgm b/examples/autotiler/Mnist/test_img/2/2491.pgm deleted file mode 100644 index 5716d421c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2495.pgm b/examples/autotiler/Mnist/test_img/2/2495.pgm deleted file mode 100644 index 24f6decb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2496.pgm b/examples/autotiler/Mnist/test_img/2/2496.pgm deleted file mode 100644 index bbbeab648..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2500.pgm b/examples/autotiler/Mnist/test_img/2/2500.pgm deleted file mode 100644 index 189cf1fad..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2503.pgm b/examples/autotiler/Mnist/test_img/2/2503.pgm deleted file mode 100644 index 2d47138a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2517.pgm b/examples/autotiler/Mnist/test_img/2/2517.pgm deleted file mode 100644 index 0cbca3c9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/256.pgm b/examples/autotiler/Mnist/test_img/2/256.pgm deleted file mode 100644 index 66548c44a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2572.pgm b/examples/autotiler/Mnist/test_img/2/2572.pgm deleted file mode 100644 index 92beb9934..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/258.pgm b/examples/autotiler/Mnist/test_img/2/258.pgm deleted file mode 100644 index b011568c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2596.pgm b/examples/autotiler/Mnist/test_img/2/2596.pgm deleted file mode 100644 index 1d48054a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2602.pgm b/examples/autotiler/Mnist/test_img/2/2602.pgm deleted file mode 100644 index 7d1b6260b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2610.pgm b/examples/autotiler/Mnist/test_img/2/2610.pgm deleted file mode 100644 index 08d2f5847..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2621.pgm b/examples/autotiler/Mnist/test_img/2/2621.pgm deleted file mode 100644 index 2fe9cbacd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2625.pgm b/examples/autotiler/Mnist/test_img/2/2625.pgm deleted file mode 100644 index c65649651..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2635.pgm b/examples/autotiler/Mnist/test_img/2/2635.pgm deleted file mode 100644 index 8d5384acd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2652.pgm b/examples/autotiler/Mnist/test_img/2/2652.pgm deleted file mode 100644 index 7af030a6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2662.pgm b/examples/autotiler/Mnist/test_img/2/2662.pgm deleted file mode 100644 index 105e54d6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2664.pgm b/examples/autotiler/Mnist/test_img/2/2664.pgm deleted file mode 100644 index 061fe3e2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2669.pgm b/examples/autotiler/Mnist/test_img/2/2669.pgm deleted file mode 100644 index 955c974ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2679.pgm b/examples/autotiler/Mnist/test_img/2/2679.pgm deleted file mode 100644 index 76d457580..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2699.pgm b/examples/autotiler/Mnist/test_img/2/2699.pgm deleted file mode 100644 index 0cd0a9b73..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2726.pgm b/examples/autotiler/Mnist/test_img/2/2726.pgm deleted file mode 100644 index a28b3290c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2729.pgm b/examples/autotiler/Mnist/test_img/2/2729.pgm deleted file mode 100644 index 163009ba3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2741.pgm b/examples/autotiler/Mnist/test_img/2/2741.pgm deleted file mode 100644 index eb4ab5dec..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2752.pgm b/examples/autotiler/Mnist/test_img/2/2752.pgm deleted file mode 100644 index 3bb1f2fb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/278.pgm b/examples/autotiler/Mnist/test_img/2/278.pgm deleted file mode 100644 index bb1baa8f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2780.pgm b/examples/autotiler/Mnist/test_img/2/2780.pgm deleted file mode 100644 index b96d8e4cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2784.pgm b/examples/autotiler/Mnist/test_img/2/2784.pgm deleted file mode 100644 index 452bbd3b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2787.pgm b/examples/autotiler/Mnist/test_img/2/2787.pgm deleted file mode 100644 index 5cac35ba5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/280.pgm b/examples/autotiler/Mnist/test_img/2/280.pgm deleted file mode 100644 index 64b573562..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2802.pgm b/examples/autotiler/Mnist/test_img/2/2802.pgm deleted file mode 100644 index 74a04eafa..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2838.pgm b/examples/autotiler/Mnist/test_img/2/2838.pgm deleted file mode 100644 index 1e63b6bc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2848.pgm b/examples/autotiler/Mnist/test_img/2/2848.pgm deleted file mode 100644 index 2d32ab1c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/285.pgm b/examples/autotiler/Mnist/test_img/2/285.pgm deleted file mode 100644 index d9a071206..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2861.pgm b/examples/autotiler/Mnist/test_img/2/2861.pgm deleted file mode 100644 index 59a89fd97..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2864.pgm b/examples/autotiler/Mnist/test_img/2/2864.pgm deleted file mode 100644 index 64195e258..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2891.pgm b/examples/autotiler/Mnist/test_img/2/2891.pgm deleted file mode 100644 index b6ac087aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2904.pgm b/examples/autotiler/Mnist/test_img/2/2904.pgm deleted file mode 100644 index e83a2ea12..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/291.pgm b/examples/autotiler/Mnist/test_img/2/291.pgm deleted file mode 100644 index b7339df18..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2910.pgm b/examples/autotiler/Mnist/test_img/2/2910.pgm deleted file mode 100644 index 9845d8e7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2918.pgm b/examples/autotiler/Mnist/test_img/2/2918.pgm deleted file mode 100644 index 32dbf0935..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/293.pgm b/examples/autotiler/Mnist/test_img/2/293.pgm deleted file mode 100644 index b446e68d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2940.pgm b/examples/autotiler/Mnist/test_img/2/2940.pgm deleted file mode 100644 index 1eb47dc07..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2959.pgm b/examples/autotiler/Mnist/test_img/2/2959.pgm deleted file mode 100644 index dcfbbaecd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2971.pgm b/examples/autotiler/Mnist/test_img/2/2971.pgm deleted file mode 100644 index f5b62d610..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2977.pgm b/examples/autotiler/Mnist/test_img/2/2977.pgm deleted file mode 100644 index 7abe5e8d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/298.pgm b/examples/autotiler/Mnist/test_img/2/298.pgm deleted file mode 100644 index 1ed8e319d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/2981.pgm b/examples/autotiler/Mnist/test_img/2/2981.pgm deleted file mode 100644 index 83c1cd973..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/2981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3004.pgm b/examples/autotiler/Mnist/test_img/2/3004.pgm deleted file mode 100644 index f16a7f2dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3021.pgm b/examples/autotiler/Mnist/test_img/2/3021.pgm deleted file mode 100644 index 38342296e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/303.pgm b/examples/autotiler/Mnist/test_img/2/303.pgm deleted file mode 100644 index 5911c3048..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3035.pgm b/examples/autotiler/Mnist/test_img/2/3035.pgm deleted file mode 100644 index d14c062da..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3037.pgm b/examples/autotiler/Mnist/test_img/2/3037.pgm deleted file mode 100644 index d452de42c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3047.pgm b/examples/autotiler/Mnist/test_img/2/3047.pgm deleted file mode 100644 index f8dd922f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3048.pgm b/examples/autotiler/Mnist/test_img/2/3048.pgm deleted file mode 100644 index 07c1035e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3057.pgm b/examples/autotiler/Mnist/test_img/2/3057.pgm deleted file mode 100644 index 59facd4f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/306.pgm b/examples/autotiler/Mnist/test_img/2/306.pgm deleted file mode 100644 index e4d11f7ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3071.pgm b/examples/autotiler/Mnist/test_img/2/3071.pgm deleted file mode 100644 index 0041dbd33..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3081.pgm b/examples/autotiler/Mnist/test_img/2/3081.pgm deleted file mode 100644 index 21f4b3040..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3089.pgm b/examples/autotiler/Mnist/test_img/2/3089.pgm deleted file mode 100644 index 8488d5e29..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3105.pgm b/examples/autotiler/Mnist/test_img/2/3105.pgm deleted file mode 100644 index fc02a29e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3106.pgm b/examples/autotiler/Mnist/test_img/2/3106.pgm deleted file mode 100644 index a5c841725..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3116.pgm b/examples/autotiler/Mnist/test_img/2/3116.pgm deleted file mode 100644 index 9484c651c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3128.pgm b/examples/autotiler/Mnist/test_img/2/3128.pgm deleted file mode 100644 index b72dc3196..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3134.pgm b/examples/autotiler/Mnist/test_img/2/3134.pgm deleted file mode 100644 index 89007c83b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3142.pgm b/examples/autotiler/Mnist/test_img/2/3142.pgm deleted file mode 100644 index bba335876..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3151.pgm b/examples/autotiler/Mnist/test_img/2/3151.pgm deleted file mode 100644 index ec15c35be..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3176.pgm b/examples/autotiler/Mnist/test_img/2/3176.pgm deleted file mode 100644 index 503d7ae58..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/318.pgm b/examples/autotiler/Mnist/test_img/2/318.pgm deleted file mode 100644 index 3723d3ff4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3180.pgm b/examples/autotiler/Mnist/test_img/2/3180.pgm deleted file mode 100644 index ca49ed8f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3195.pgm b/examples/autotiler/Mnist/test_img/2/3195.pgm deleted file mode 100644 index deba1cb04..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3201.pgm b/examples/autotiler/Mnist/test_img/2/3201.pgm deleted file mode 100644 index ce1ba9645..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3207.pgm b/examples/autotiler/Mnist/test_img/2/3207.pgm deleted file mode 100644 index a6dd2b4cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/321.pgm b/examples/autotiler/Mnist/test_img/2/321.pgm deleted file mode 100644 index 1610aa97b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3212.pgm b/examples/autotiler/Mnist/test_img/2/3212.pgm deleted file mode 100644 index 042c614fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3223.pgm b/examples/autotiler/Mnist/test_img/2/3223.pgm deleted file mode 100644 index 3804e9cef..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3229.pgm b/examples/autotiler/Mnist/test_img/2/3229.pgm deleted file mode 100644 index 28b0213d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3239.pgm b/examples/autotiler/Mnist/test_img/2/3239.pgm deleted file mode 100644 index 53ab40414..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3250.pgm b/examples/autotiler/Mnist/test_img/2/3250.pgm deleted file mode 100644 index 978bc387f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3256.pgm b/examples/autotiler/Mnist/test_img/2/3256.pgm deleted file mode 100644 index f4aeea9c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3257.pgm b/examples/autotiler/Mnist/test_img/2/3257.pgm deleted file mode 100644 index 6b9c54465..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3258.pgm b/examples/autotiler/Mnist/test_img/2/3258.pgm deleted file mode 100644 index 04a31673e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/326.pgm b/examples/autotiler/Mnist/test_img/2/326.pgm deleted file mode 100644 index 21401a9e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3260.pgm b/examples/autotiler/Mnist/test_img/2/3260.pgm deleted file mode 100644 index b2d3812a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3267.pgm b/examples/autotiler/Mnist/test_img/2/3267.pgm deleted file mode 100644 index eb0ac21ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3274.pgm b/examples/autotiler/Mnist/test_img/2/3274.pgm deleted file mode 100644 index 84f58be03..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3280.pgm b/examples/autotiler/Mnist/test_img/2/3280.pgm deleted file mode 100644 index b8f196a0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3293.pgm b/examples/autotiler/Mnist/test_img/2/3293.pgm deleted file mode 100644 index 07bf1b07f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3301.pgm b/examples/autotiler/Mnist/test_img/2/3301.pgm deleted file mode 100644 index e6e4d4695..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/331.pgm b/examples/autotiler/Mnist/test_img/2/331.pgm deleted file mode 100644 index 112653aea..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3318.pgm b/examples/autotiler/Mnist/test_img/2/3318.pgm deleted file mode 100644 index ec2636ca6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3327.pgm b/examples/autotiler/Mnist/test_img/2/3327.pgm deleted file mode 100644 index 930cf4d06..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3330.pgm b/examples/autotiler/Mnist/test_img/2/3330.pgm deleted file mode 100644 index 1d300b95c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3337.pgm b/examples/autotiler/Mnist/test_img/2/3337.pgm deleted file mode 100644 index dcdd96dde..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3339.pgm b/examples/autotiler/Mnist/test_img/2/3339.pgm deleted file mode 100644 index c47e8bc76..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3355.pgm b/examples/autotiler/Mnist/test_img/2/3355.pgm deleted file mode 100644 index ab722fce8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3367.pgm b/examples/autotiler/Mnist/test_img/2/3367.pgm deleted file mode 100644 index 9a2e32b2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3375.pgm b/examples/autotiler/Mnist/test_img/2/3375.pgm deleted file mode 100644 index e4ce59d91..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3384.pgm b/examples/autotiler/Mnist/test_img/2/3384.pgm deleted file mode 100644 index 88f81bd7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3396.pgm b/examples/autotiler/Mnist/test_img/2/3396.pgm deleted file mode 100644 index fa4b7c363..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3415.pgm b/examples/autotiler/Mnist/test_img/2/3415.pgm deleted file mode 100644 index 860ce8516..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3435.pgm b/examples/autotiler/Mnist/test_img/2/3435.pgm deleted file mode 100644 index 4b4caf0aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3436.pgm b/examples/autotiler/Mnist/test_img/2/3436.pgm deleted file mode 100644 index 71d8869e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3474.pgm b/examples/autotiler/Mnist/test_img/2/3474.pgm deleted file mode 100644 index e1c2c59c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3482.pgm b/examples/autotiler/Mnist/test_img/2/3482.pgm deleted file mode 100644 index c4cac961b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3489.pgm b/examples/autotiler/Mnist/test_img/2/3489.pgm deleted file mode 100644 index 263a74c13..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/35.pgm b/examples/autotiler/Mnist/test_img/2/35.pgm deleted file mode 100644 index 958601da2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/35.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3508.pgm b/examples/autotiler/Mnist/test_img/2/3508.pgm deleted file mode 100644 index 5137cd887..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3510.pgm b/examples/autotiler/Mnist/test_img/2/3510.pgm deleted file mode 100644 index ca2ab6bfc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3511.pgm b/examples/autotiler/Mnist/test_img/2/3511.pgm deleted file mode 100644 index f5fe1092d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3513.pgm b/examples/autotiler/Mnist/test_img/2/3513.pgm deleted file mode 100644 index 8dc8ffb67..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3514.pgm b/examples/autotiler/Mnist/test_img/2/3514.pgm deleted file mode 100644 index bc7d90296..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3522.pgm b/examples/autotiler/Mnist/test_img/2/3522.pgm deleted file mode 100644 index ee225c80c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3547.pgm b/examples/autotiler/Mnist/test_img/2/3547.pgm deleted file mode 100644 index 396ed4a0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3566.pgm b/examples/autotiler/Mnist/test_img/2/3566.pgm deleted file mode 100644 index d17465d46..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3577.pgm b/examples/autotiler/Mnist/test_img/2/3577.pgm deleted file mode 100644 index 8fc1cdbf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3578.pgm b/examples/autotiler/Mnist/test_img/2/3578.pgm deleted file mode 100644 index 44d0b5c33..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3599.pgm b/examples/autotiler/Mnist/test_img/2/3599.pgm deleted file mode 100644 index 57c0c3454..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3600.pgm b/examples/autotiler/Mnist/test_img/2/3600.pgm deleted file mode 100644 index 3f3fc1697..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3611.pgm b/examples/autotiler/Mnist/test_img/2/3611.pgm deleted file mode 100644 index 97c41c552..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/362.pgm b/examples/autotiler/Mnist/test_img/2/362.pgm deleted file mode 100644 index 8d2fb59d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3628.pgm b/examples/autotiler/Mnist/test_img/2/3628.pgm deleted file mode 100644 index 319c47c8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/363.pgm b/examples/autotiler/Mnist/test_img/2/363.pgm deleted file mode 100644 index a1ed63554..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3655.pgm b/examples/autotiler/Mnist/test_img/2/3655.pgm deleted file mode 100644 index 085386fbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3658.pgm b/examples/autotiler/Mnist/test_img/2/3658.pgm deleted file mode 100644 index 274e9ab14..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3661.pgm b/examples/autotiler/Mnist/test_img/2/3661.pgm deleted file mode 100644 index dbd335396..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3668.pgm b/examples/autotiler/Mnist/test_img/2/3668.pgm deleted file mode 100644 index 2caf747f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3675.pgm b/examples/autotiler/Mnist/test_img/2/3675.pgm deleted file mode 100644 index da181c6e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3681.pgm b/examples/autotiler/Mnist/test_img/2/3681.pgm deleted file mode 100644 index 973aea060..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3682.pgm b/examples/autotiler/Mnist/test_img/2/3682.pgm deleted file mode 100644 index 028981f8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3694.pgm b/examples/autotiler/Mnist/test_img/2/3694.pgm deleted file mode 100644 index 82739f120..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3696.pgm b/examples/autotiler/Mnist/test_img/2/3696.pgm deleted file mode 100644 index 2ec76a558..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3703.pgm b/examples/autotiler/Mnist/test_img/2/3703.pgm deleted file mode 100644 index 44a983fcd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/371.pgm b/examples/autotiler/Mnist/test_img/2/371.pgm deleted file mode 100644 index a097301b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3729.pgm b/examples/autotiler/Mnist/test_img/2/3729.pgm deleted file mode 100644 index 20d13927a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3731.pgm b/examples/autotiler/Mnist/test_img/2/3731.pgm deleted file mode 100644 index 092255f5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3772.pgm b/examples/autotiler/Mnist/test_img/2/3772.pgm deleted file mode 100644 index 683247d57..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3773.pgm b/examples/autotiler/Mnist/test_img/2/3773.pgm deleted file mode 100644 index 8128d0f3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3775.pgm b/examples/autotiler/Mnist/test_img/2/3775.pgm deleted file mode 100644 index 28b4be5f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3785.pgm b/examples/autotiler/Mnist/test_img/2/3785.pgm deleted file mode 100644 index 09d7a99f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3796.pgm b/examples/autotiler/Mnist/test_img/2/3796.pgm deleted file mode 100644 index 448a5169b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/38.pgm b/examples/autotiler/Mnist/test_img/2/38.pgm deleted file mode 100644 index a16e4c33a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/38.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3802.pgm b/examples/autotiler/Mnist/test_img/2/3802.pgm deleted file mode 100644 index 3fc262d18..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3811.pgm b/examples/autotiler/Mnist/test_img/2/3811.pgm deleted file mode 100644 index e7d992d39..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3817.pgm b/examples/autotiler/Mnist/test_img/2/3817.pgm deleted file mode 100644 index cd083dc80..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3823.pgm b/examples/autotiler/Mnist/test_img/2/3823.pgm deleted file mode 100644 index 76fe43d1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3832.pgm b/examples/autotiler/Mnist/test_img/2/3832.pgm deleted file mode 100644 index b25e7bd5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3839.pgm b/examples/autotiler/Mnist/test_img/2/3839.pgm deleted file mode 100644 index b283e4dc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3844.pgm b/examples/autotiler/Mnist/test_img/2/3844.pgm deleted file mode 100644 index aa230fdbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3862.pgm b/examples/autotiler/Mnist/test_img/2/3862.pgm deleted file mode 100644 index edb160424..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/387.pgm b/examples/autotiler/Mnist/test_img/2/387.pgm deleted file mode 100644 index 4d8ddd1e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3876.pgm b/examples/autotiler/Mnist/test_img/2/3876.pgm deleted file mode 100644 index d9844e62f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3899.pgm b/examples/autotiler/Mnist/test_img/2/3899.pgm deleted file mode 100644 index 1fe0b97ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/390.pgm b/examples/autotiler/Mnist/test_img/2/390.pgm deleted file mode 100644 index c4eabb768..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3904.pgm b/examples/autotiler/Mnist/test_img/2/3904.pgm deleted file mode 100644 index d35e166da..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3909.pgm b/examples/autotiler/Mnist/test_img/2/3909.pgm deleted file mode 100644 index d47a436f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3912.pgm b/examples/autotiler/Mnist/test_img/2/3912.pgm deleted file mode 100644 index 0e553e0d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3913.pgm b/examples/autotiler/Mnist/test_img/2/3913.pgm deleted file mode 100644 index 15f18fbf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3921.pgm b/examples/autotiler/Mnist/test_img/2/3921.pgm deleted file mode 100644 index 2a1ee62f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3932.pgm b/examples/autotiler/Mnist/test_img/2/3932.pgm deleted file mode 100644 index 580a676d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3933.pgm b/examples/autotiler/Mnist/test_img/2/3933.pgm deleted file mode 100644 index 4ec32779c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3945.pgm b/examples/autotiler/Mnist/test_img/2/3945.pgm deleted file mode 100644 index 856ffa3e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3946.pgm b/examples/autotiler/Mnist/test_img/2/3946.pgm deleted file mode 100644 index b84b05eab..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3958.pgm b/examples/autotiler/Mnist/test_img/2/3958.pgm deleted file mode 100644 index a0e826399..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/396.pgm b/examples/autotiler/Mnist/test_img/2/396.pgm deleted file mode 100644 index 29475e87c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3963.pgm b/examples/autotiler/Mnist/test_img/2/3963.pgm deleted file mode 100644 index ab743d8d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/3986.pgm b/examples/autotiler/Mnist/test_img/2/3986.pgm deleted file mode 100644 index 112b53645..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/3986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/400.pgm b/examples/autotiler/Mnist/test_img/2/400.pgm deleted file mode 100644 index 63fc0df56..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4038.pgm b/examples/autotiler/Mnist/test_img/2/4038.pgm deleted file mode 100644 index 66a48e36a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/404.pgm b/examples/autotiler/Mnist/test_img/2/404.pgm deleted file mode 100644 index 4f9a80bd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4055.pgm b/examples/autotiler/Mnist/test_img/2/4055.pgm deleted file mode 100644 index ec823f2b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4066.pgm b/examples/autotiler/Mnist/test_img/2/4066.pgm deleted file mode 100644 index d50970c6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4098.pgm b/examples/autotiler/Mnist/test_img/2/4098.pgm deleted file mode 100644 index 0964d489d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4100.pgm b/examples/autotiler/Mnist/test_img/2/4100.pgm deleted file mode 100644 index e8de5a14a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4103.pgm b/examples/autotiler/Mnist/test_img/2/4103.pgm deleted file mode 100644 index 4dd7913f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4113.pgm b/examples/autotiler/Mnist/test_img/2/4113.pgm deleted file mode 100644 index 9f3365084..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4114.pgm b/examples/autotiler/Mnist/test_img/2/4114.pgm deleted file mode 100644 index 108291652..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4115.pgm b/examples/autotiler/Mnist/test_img/2/4115.pgm deleted file mode 100644 index 78f06b206..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4127.pgm b/examples/autotiler/Mnist/test_img/2/4127.pgm deleted file mode 100644 index 05a5bb36e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4133.pgm b/examples/autotiler/Mnist/test_img/2/4133.pgm deleted file mode 100644 index b86367b56..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4135.pgm b/examples/autotiler/Mnist/test_img/2/4135.pgm deleted file mode 100644 index 47071221d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4149.pgm b/examples/autotiler/Mnist/test_img/2/4149.pgm deleted file mode 100644 index 6efa48a4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4156.pgm b/examples/autotiler/Mnist/test_img/2/4156.pgm deleted file mode 100644 index 914ae543d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4161.pgm b/examples/autotiler/Mnist/test_img/2/4161.pgm deleted file mode 100644 index 00debb435..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4167.pgm b/examples/autotiler/Mnist/test_img/2/4167.pgm deleted file mode 100644 index d02cb765e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4173.pgm b/examples/autotiler/Mnist/test_img/2/4173.pgm deleted file mode 100644 index 1bff969ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4176.pgm b/examples/autotiler/Mnist/test_img/2/4176.pgm deleted file mode 100644 index 89b44bf5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/418.pgm b/examples/autotiler/Mnist/test_img/2/418.pgm deleted file mode 100644 index 8fb39d4a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4180.pgm b/examples/autotiler/Mnist/test_img/2/4180.pgm deleted file mode 100644 index 400463c68..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4187.pgm b/examples/autotiler/Mnist/test_img/2/4187.pgm deleted file mode 100644 index d704b370b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4189.pgm b/examples/autotiler/Mnist/test_img/2/4189.pgm deleted file mode 100644 index 6bb0b16ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4204.pgm b/examples/autotiler/Mnist/test_img/2/4204.pgm deleted file mode 100644 index d10cd4b61..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4205.pgm b/examples/autotiler/Mnist/test_img/2/4205.pgm deleted file mode 100644 index af761efec..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4206.pgm b/examples/autotiler/Mnist/test_img/2/4206.pgm deleted file mode 100644 index 9d211e443..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/421.pgm b/examples/autotiler/Mnist/test_img/2/421.pgm deleted file mode 100644 index c85ef724a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/423.pgm b/examples/autotiler/Mnist/test_img/2/423.pgm deleted file mode 100644 index b36892f54..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4247.pgm b/examples/autotiler/Mnist/test_img/2/4247.pgm deleted file mode 100644 index 6c0fabd41..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4248.pgm b/examples/autotiler/Mnist/test_img/2/4248.pgm deleted file mode 100644 index 6f4fc38f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4250.pgm b/examples/autotiler/Mnist/test_img/2/4250.pgm deleted file mode 100644 index 7ef2ec034..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4260.pgm b/examples/autotiler/Mnist/test_img/2/4260.pgm deleted file mode 100644 index 12a06f305..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4274.pgm b/examples/autotiler/Mnist/test_img/2/4274.pgm deleted file mode 100644 index c49e38e7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4275.pgm b/examples/autotiler/Mnist/test_img/2/4275.pgm deleted file mode 100644 index 3db3f6ab2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4279.pgm b/examples/autotiler/Mnist/test_img/2/4279.pgm deleted file mode 100644 index 36d79da0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4289.pgm b/examples/autotiler/Mnist/test_img/2/4289.pgm deleted file mode 100644 index 2c32b92db..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4296.pgm b/examples/autotiler/Mnist/test_img/2/4296.pgm deleted file mode 100644 index d13607f11..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/43.pgm b/examples/autotiler/Mnist/test_img/2/43.pgm deleted file mode 100644 index 64a63e090..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/43.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4326.pgm b/examples/autotiler/Mnist/test_img/2/4326.pgm deleted file mode 100644 index 8748dfc89..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4339.pgm b/examples/autotiler/Mnist/test_img/2/4339.pgm deleted file mode 100644 index 153548421..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4341.pgm b/examples/autotiler/Mnist/test_img/2/4341.pgm deleted file mode 100644 index 640ae0409..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4342.pgm b/examples/autotiler/Mnist/test_img/2/4342.pgm deleted file mode 100644 index 39f53e612..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4345.pgm b/examples/autotiler/Mnist/test_img/2/4345.pgm deleted file mode 100644 index 15213c4c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4350.pgm b/examples/autotiler/Mnist/test_img/2/4350.pgm deleted file mode 100644 index a5fc59a17..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4354.pgm b/examples/autotiler/Mnist/test_img/2/4354.pgm deleted file mode 100644 index 708468884..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4367.pgm b/examples/autotiler/Mnist/test_img/2/4367.pgm deleted file mode 100644 index 2bdf62d48..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4384.pgm b/examples/autotiler/Mnist/test_img/2/4384.pgm deleted file mode 100644 index d86bd3186..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4385.pgm b/examples/autotiler/Mnist/test_img/2/4385.pgm deleted file mode 100644 index 569af48ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4387.pgm b/examples/autotiler/Mnist/test_img/2/4387.pgm deleted file mode 100644 index 06c80356c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4401.pgm b/examples/autotiler/Mnist/test_img/2/4401.pgm deleted file mode 100644 index 0e0db45bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4402.pgm b/examples/autotiler/Mnist/test_img/2/4402.pgm deleted file mode 100644 index cf9d122b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4415.pgm b/examples/autotiler/Mnist/test_img/2/4415.pgm deleted file mode 100644 index 6829b99dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4418.pgm b/examples/autotiler/Mnist/test_img/2/4418.pgm deleted file mode 100644 index d6901a1f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4427.pgm b/examples/autotiler/Mnist/test_img/2/4427.pgm deleted file mode 100644 index 5921877cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/444.pgm b/examples/autotiler/Mnist/test_img/2/444.pgm deleted file mode 100644 index b33de9a8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4442.pgm b/examples/autotiler/Mnist/test_img/2/4442.pgm deleted file mode 100644 index d78aa687b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4445.pgm b/examples/autotiler/Mnist/test_img/2/4445.pgm deleted file mode 100644 index 4477b0dae..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4451.pgm b/examples/autotiler/Mnist/test_img/2/4451.pgm deleted file mode 100644 index 3853caca8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4456.pgm b/examples/autotiler/Mnist/test_img/2/4456.pgm deleted file mode 100644 index 637efe3ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4476.pgm b/examples/autotiler/Mnist/test_img/2/4476.pgm deleted file mode 100644 index 4bbb00340..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4482.pgm b/examples/autotiler/Mnist/test_img/2/4482.pgm deleted file mode 100644 index 704dca893..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4503.pgm b/examples/autotiler/Mnist/test_img/2/4503.pgm deleted file mode 100644 index ff2d21c47..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4504.pgm b/examples/autotiler/Mnist/test_img/2/4504.pgm deleted file mode 100644 index 65b635316..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4506.pgm b/examples/autotiler/Mnist/test_img/2/4506.pgm deleted file mode 100644 index e1e662e29..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4510.pgm b/examples/autotiler/Mnist/test_img/2/4510.pgm deleted file mode 100644 index 853f50491..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4517.pgm b/examples/autotiler/Mnist/test_img/2/4517.pgm deleted file mode 100644 index eedbabcfc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/452.pgm b/examples/autotiler/Mnist/test_img/2/452.pgm deleted file mode 100644 index b289dea3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4521.pgm b/examples/autotiler/Mnist/test_img/2/4521.pgm deleted file mode 100644 index df4a30a91..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4546.pgm b/examples/autotiler/Mnist/test_img/2/4546.pgm deleted file mode 100644 index 3719ed7de..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4549.pgm b/examples/autotiler/Mnist/test_img/2/4549.pgm deleted file mode 100644 index 5c9b968f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4559.pgm b/examples/autotiler/Mnist/test_img/2/4559.pgm deleted file mode 100644 index d55f10a97..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/456.pgm b/examples/autotiler/Mnist/test_img/2/456.pgm deleted file mode 100644 index 7287b53c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4562.pgm b/examples/autotiler/Mnist/test_img/2/4562.pgm deleted file mode 100644 index 93d0a50ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4573.pgm b/examples/autotiler/Mnist/test_img/2/4573.pgm deleted file mode 100644 index 6a44b1358..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4582.pgm b/examples/autotiler/Mnist/test_img/2/4582.pgm deleted file mode 100644 index 72c8fa2f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4594.pgm b/examples/autotiler/Mnist/test_img/2/4594.pgm deleted file mode 100644 index 8d8881d1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4615.pgm b/examples/autotiler/Mnist/test_img/2/4615.pgm deleted file mode 100644 index d5394fd9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4625.pgm b/examples/autotiler/Mnist/test_img/2/4625.pgm deleted file mode 100644 index a237034f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4632.pgm b/examples/autotiler/Mnist/test_img/2/4632.pgm deleted file mode 100644 index ef5b3aacb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4636.pgm b/examples/autotiler/Mnist/test_img/2/4636.pgm deleted file mode 100644 index c47bd140e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4656.pgm b/examples/autotiler/Mnist/test_img/2/4656.pgm deleted file mode 100644 index 02f4e3659..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4666.pgm b/examples/autotiler/Mnist/test_img/2/4666.pgm deleted file mode 100644 index 09fbfbfe2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4668.pgm b/examples/autotiler/Mnist/test_img/2/4668.pgm deleted file mode 100644 index f686c6773..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/467.pgm b/examples/autotiler/Mnist/test_img/2/467.pgm deleted file mode 100644 index 6170f2732..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4684.pgm b/examples/autotiler/Mnist/test_img/2/4684.pgm deleted file mode 100644 index 8712efcd6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/47.pgm b/examples/autotiler/Mnist/test_img/2/47.pgm deleted file mode 100644 index d9ea2825a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/47.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4705.pgm b/examples/autotiler/Mnist/test_img/2/4705.pgm deleted file mode 100644 index 996e8879a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4709.pgm b/examples/autotiler/Mnist/test_img/2/4709.pgm deleted file mode 100644 index 2f920f4f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4710.pgm b/examples/autotiler/Mnist/test_img/2/4710.pgm deleted file mode 100644 index 5ac9fa9f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4713.pgm b/examples/autotiler/Mnist/test_img/2/4713.pgm deleted file mode 100644 index 42c1aca36..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4716.pgm b/examples/autotiler/Mnist/test_img/2/4716.pgm deleted file mode 100644 index 2ed4462ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4723.pgm b/examples/autotiler/Mnist/test_img/2/4723.pgm deleted file mode 100644 index 975cb93fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4725.pgm b/examples/autotiler/Mnist/test_img/2/4725.pgm deleted file mode 100644 index 994f4ef87..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4734.pgm b/examples/autotiler/Mnist/test_img/2/4734.pgm deleted file mode 100644 index 0a73c67dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/477.pgm b/examples/autotiler/Mnist/test_img/2/477.pgm deleted file mode 100644 index 19f4d5823..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4775.pgm b/examples/autotiler/Mnist/test_img/2/4775.pgm deleted file mode 100644 index 502c18258..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4801.pgm b/examples/autotiler/Mnist/test_img/2/4801.pgm deleted file mode 100644 index f0c27bbdc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4805.pgm b/examples/autotiler/Mnist/test_img/2/4805.pgm deleted file mode 100644 index 47c0ba917..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4812.pgm b/examples/autotiler/Mnist/test_img/2/4812.pgm deleted file mode 100644 index 93d39c49f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4816.pgm b/examples/autotiler/Mnist/test_img/2/4816.pgm deleted file mode 100644 index 53f267aa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4848.pgm b/examples/autotiler/Mnist/test_img/2/4848.pgm deleted file mode 100644 index f9358527c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4870.pgm b/examples/autotiler/Mnist/test_img/2/4870.pgm deleted file mode 100644 index dec744b77..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4876.pgm b/examples/autotiler/Mnist/test_img/2/4876.pgm deleted file mode 100644 index 51c6867dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4878.pgm b/examples/autotiler/Mnist/test_img/2/4878.pgm deleted file mode 100644 index 63170cc38..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4889.pgm b/examples/autotiler/Mnist/test_img/2/4889.pgm deleted file mode 100644 index cb53e7736..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4899.pgm b/examples/autotiler/Mnist/test_img/2/4899.pgm deleted file mode 100644 index c7fd256d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4905.pgm b/examples/autotiler/Mnist/test_img/2/4905.pgm deleted file mode 100644 index db9ed1e9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/492.pgm b/examples/autotiler/Mnist/test_img/2/492.pgm deleted file mode 100644 index ff870800a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4920.pgm b/examples/autotiler/Mnist/test_img/2/4920.pgm deleted file mode 100644 index dd7b870ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4939.pgm b/examples/autotiler/Mnist/test_img/2/4939.pgm deleted file mode 100644 index 0d481a040..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4941.pgm b/examples/autotiler/Mnist/test_img/2/4941.pgm deleted file mode 100644 index 5d2c1fae8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4943.pgm b/examples/autotiler/Mnist/test_img/2/4943.pgm deleted file mode 100644 index 6fc7e7a21..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4944.pgm b/examples/autotiler/Mnist/test_img/2/4944.pgm deleted file mode 100644 index 807223949..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4950.pgm b/examples/autotiler/Mnist/test_img/2/4950.pgm deleted file mode 100644 index 4512d2bba..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4954.pgm b/examples/autotiler/Mnist/test_img/2/4954.pgm deleted file mode 100644 index 79fbff8eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4961.pgm b/examples/autotiler/Mnist/test_img/2/4961.pgm deleted file mode 100644 index 1030f7878..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4962.pgm b/examples/autotiler/Mnist/test_img/2/4962.pgm deleted file mode 100644 index 6c04a8fca..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4964.pgm b/examples/autotiler/Mnist/test_img/2/4964.pgm deleted file mode 100644 index 6ca5b7555..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4965.pgm b/examples/autotiler/Mnist/test_img/2/4965.pgm deleted file mode 100644 index 189a9c946..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4969.pgm b/examples/autotiler/Mnist/test_img/2/4969.pgm deleted file mode 100644 index 8304b22a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4981.pgm b/examples/autotiler/Mnist/test_img/2/4981.pgm deleted file mode 100644 index ae7ed4567..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4985.pgm b/examples/autotiler/Mnist/test_img/2/4985.pgm deleted file mode 100644 index 2d455bff8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4995.pgm b/examples/autotiler/Mnist/test_img/2/4995.pgm deleted file mode 100644 index 4163d2fe5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/4997.pgm b/examples/autotiler/Mnist/test_img/2/4997.pgm deleted file mode 100644 index b4625f195..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/4997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5018.pgm b/examples/autotiler/Mnist/test_img/2/5018.pgm deleted file mode 100644 index c7cd0d1ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5024.pgm b/examples/autotiler/Mnist/test_img/2/5024.pgm deleted file mode 100644 index f29cbc4bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/503.pgm b/examples/autotiler/Mnist/test_img/2/503.pgm deleted file mode 100644 index 3e7e16235..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5037.pgm b/examples/autotiler/Mnist/test_img/2/5037.pgm deleted file mode 100644 index a4676edb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5045.pgm b/examples/autotiler/Mnist/test_img/2/5045.pgm deleted file mode 100644 index 4edd0eee3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5053.pgm b/examples/autotiler/Mnist/test_img/2/5053.pgm deleted file mode 100644 index 1b2d694fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5086.pgm b/examples/autotiler/Mnist/test_img/2/5086.pgm deleted file mode 100644 index f6d9d2e61..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5089.pgm b/examples/autotiler/Mnist/test_img/2/5089.pgm deleted file mode 100644 index 06ba7e0f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5095.pgm b/examples/autotiler/Mnist/test_img/2/5095.pgm deleted file mode 100644 index 267914b1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5099.pgm b/examples/autotiler/Mnist/test_img/2/5099.pgm deleted file mode 100644 index beb6cb080..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5105.pgm b/examples/autotiler/Mnist/test_img/2/5105.pgm deleted file mode 100644 index e49b8d6c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5119.pgm b/examples/autotiler/Mnist/test_img/2/5119.pgm deleted file mode 100644 index 65e62ecbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/512.pgm b/examples/autotiler/Mnist/test_img/2/512.pgm deleted file mode 100644 index 81b8295a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5120.pgm b/examples/autotiler/Mnist/test_img/2/5120.pgm deleted file mode 100644 index d6e4b0f1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5125.pgm b/examples/autotiler/Mnist/test_img/2/5125.pgm deleted file mode 100644 index 556407edf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5127.pgm b/examples/autotiler/Mnist/test_img/2/5127.pgm deleted file mode 100644 index 6c9001fac..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/513.pgm b/examples/autotiler/Mnist/test_img/2/513.pgm deleted file mode 100644 index 13e039d9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5149.pgm b/examples/autotiler/Mnist/test_img/2/5149.pgm deleted file mode 100644 index 01b78968e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5157.pgm b/examples/autotiler/Mnist/test_img/2/5157.pgm deleted file mode 100644 index 1425977b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/516.pgm b/examples/autotiler/Mnist/test_img/2/516.pgm deleted file mode 100644 index b3d9c094d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5167.pgm b/examples/autotiler/Mnist/test_img/2/5167.pgm deleted file mode 100644 index dbfbebc6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5189.pgm b/examples/autotiler/Mnist/test_img/2/5189.pgm deleted file mode 100644 index d7343d262..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5192.pgm b/examples/autotiler/Mnist/test_img/2/5192.pgm deleted file mode 100644 index f0bbf2a61..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5216.pgm b/examples/autotiler/Mnist/test_img/2/5216.pgm deleted file mode 100644 index a511cd219..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5217.pgm b/examples/autotiler/Mnist/test_img/2/5217.pgm deleted file mode 100644 index 556ee4c13..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5250.pgm b/examples/autotiler/Mnist/test_img/2/5250.pgm deleted file mode 100644 index 9edf5af12..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5264.pgm b/examples/autotiler/Mnist/test_img/2/5264.pgm deleted file mode 100644 index 133fed16c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5266.pgm b/examples/autotiler/Mnist/test_img/2/5266.pgm deleted file mode 100644 index cf3fb60f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5267.pgm b/examples/autotiler/Mnist/test_img/2/5267.pgm deleted file mode 100644 index 8138ba359..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5272.pgm b/examples/autotiler/Mnist/test_img/2/5272.pgm deleted file mode 100644 index a6b4c6fd6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5282.pgm b/examples/autotiler/Mnist/test_img/2/5282.pgm deleted file mode 100644 index 8d3237edc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5292.pgm b/examples/autotiler/Mnist/test_img/2/5292.pgm deleted file mode 100644 index 8aede0203..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5308.pgm b/examples/autotiler/Mnist/test_img/2/5308.pgm deleted file mode 100644 index 85f6a7e98..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5338.pgm b/examples/autotiler/Mnist/test_img/2/5338.pgm deleted file mode 100644 index 7223e79ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5340.pgm b/examples/autotiler/Mnist/test_img/2/5340.pgm deleted file mode 100644 index 045886479..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/536.pgm b/examples/autotiler/Mnist/test_img/2/536.pgm deleted file mode 100644 index 4c686a522..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5366.pgm b/examples/autotiler/Mnist/test_img/2/5366.pgm deleted file mode 100644 index a7d3d48f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5367.pgm b/examples/autotiler/Mnist/test_img/2/5367.pgm deleted file mode 100644 index e67a4b7b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5381.pgm b/examples/autotiler/Mnist/test_img/2/5381.pgm deleted file mode 100644 index 3c6de231d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5385.pgm b/examples/autotiler/Mnist/test_img/2/5385.pgm deleted file mode 100644 index f4dad4f52..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/539.pgm b/examples/autotiler/Mnist/test_img/2/539.pgm deleted file mode 100644 index b8b5c9aef..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5390.pgm b/examples/autotiler/Mnist/test_img/2/5390.pgm deleted file mode 100644 index 166e835df..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5392.pgm b/examples/autotiler/Mnist/test_img/2/5392.pgm deleted file mode 100644 index 94d569f7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5407.pgm b/examples/autotiler/Mnist/test_img/2/5407.pgm deleted file mode 100644 index cf3293933..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5417.pgm b/examples/autotiler/Mnist/test_img/2/5417.pgm deleted file mode 100644 index b59e815b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5427.pgm b/examples/autotiler/Mnist/test_img/2/5427.pgm deleted file mode 100644 index 1f39a03be..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5436.pgm b/examples/autotiler/Mnist/test_img/2/5436.pgm deleted file mode 100644 index 2da5bc039..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5449.pgm b/examples/autotiler/Mnist/test_img/2/5449.pgm deleted file mode 100644 index 186c2a833..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5455.pgm b/examples/autotiler/Mnist/test_img/2/5455.pgm deleted file mode 100644 index e6ac1bf07..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/547.pgm b/examples/autotiler/Mnist/test_img/2/547.pgm deleted file mode 100644 index db5125fc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5475.pgm b/examples/autotiler/Mnist/test_img/2/5475.pgm deleted file mode 100644 index b58ba16fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5487.pgm b/examples/autotiler/Mnist/test_img/2/5487.pgm deleted file mode 100644 index 96bbed03e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/549.pgm b/examples/autotiler/Mnist/test_img/2/549.pgm deleted file mode 100644 index a8a06de94..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5494.pgm b/examples/autotiler/Mnist/test_img/2/5494.pgm deleted file mode 100644 index 99b49342a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5502.pgm b/examples/autotiler/Mnist/test_img/2/5502.pgm deleted file mode 100644 index 20b1aeb96..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5507.pgm b/examples/autotiler/Mnist/test_img/2/5507.pgm deleted file mode 100644 index cc399dee3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5515.pgm b/examples/autotiler/Mnist/test_img/2/5515.pgm deleted file mode 100644 index 862b2d9b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5521.pgm b/examples/autotiler/Mnist/test_img/2/5521.pgm deleted file mode 100644 index 09ef39a09..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5536.pgm b/examples/autotiler/Mnist/test_img/2/5536.pgm deleted file mode 100644 index db2775bc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5541.pgm b/examples/autotiler/Mnist/test_img/2/5541.pgm deleted file mode 100644 index 08f4ecf6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5545.pgm b/examples/autotiler/Mnist/test_img/2/5545.pgm deleted file mode 100644 index 87a7afd84..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5557.pgm b/examples/autotiler/Mnist/test_img/2/5557.pgm deleted file mode 100644 index 7c29634bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5562.pgm b/examples/autotiler/Mnist/test_img/2/5562.pgm deleted file mode 100644 index c5aa75f5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5595.pgm b/examples/autotiler/Mnist/test_img/2/5595.pgm deleted file mode 100644 index b701e829e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5605.pgm b/examples/autotiler/Mnist/test_img/2/5605.pgm deleted file mode 100644 index af70cdb4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5615.pgm b/examples/autotiler/Mnist/test_img/2/5615.pgm deleted file mode 100644 index 67a6784f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5626.pgm b/examples/autotiler/Mnist/test_img/2/5626.pgm deleted file mode 100644 index 4ff449f69..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5629.pgm b/examples/autotiler/Mnist/test_img/2/5629.pgm deleted file mode 100644 index b11439173..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5634.pgm b/examples/autotiler/Mnist/test_img/2/5634.pgm deleted file mode 100644 index 126d5acbf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5636.pgm b/examples/autotiler/Mnist/test_img/2/5636.pgm deleted file mode 100644 index 4bfec6338..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5641.pgm b/examples/autotiler/Mnist/test_img/2/5641.pgm deleted file mode 100644 index 233429ec7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5643.pgm b/examples/autotiler/Mnist/test_img/2/5643.pgm deleted file mode 100644 index 5019fe4ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5667.pgm b/examples/autotiler/Mnist/test_img/2/5667.pgm deleted file mode 100644 index f74c2cec1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5692.pgm b/examples/autotiler/Mnist/test_img/2/5692.pgm deleted file mode 100644 index e3d7f0bb4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5716.pgm b/examples/autotiler/Mnist/test_img/2/5716.pgm deleted file mode 100644 index 0fb552375..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5717.pgm b/examples/autotiler/Mnist/test_img/2/5717.pgm deleted file mode 100644 index 0b1eb3848..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5723.pgm b/examples/autotiler/Mnist/test_img/2/5723.pgm deleted file mode 100644 index 01e950877..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5733.pgm b/examples/autotiler/Mnist/test_img/2/5733.pgm deleted file mode 100644 index cad49bdab..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5739.pgm b/examples/autotiler/Mnist/test_img/2/5739.pgm deleted file mode 100644 index 8a973f61e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5748.pgm b/examples/autotiler/Mnist/test_img/2/5748.pgm deleted file mode 100644 index 476b66a32..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5761.pgm b/examples/autotiler/Mnist/test_img/2/5761.pgm deleted file mode 100644 index 54ad2aede..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5763.pgm b/examples/autotiler/Mnist/test_img/2/5763.pgm deleted file mode 100644 index 686be6f90..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5767.pgm b/examples/autotiler/Mnist/test_img/2/5767.pgm deleted file mode 100644 index ae88386cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5772.pgm b/examples/autotiler/Mnist/test_img/2/5772.pgm deleted file mode 100644 index f1f342428..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5785.pgm b/examples/autotiler/Mnist/test_img/2/5785.pgm deleted file mode 100644 index e2b140ede..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5799.pgm b/examples/autotiler/Mnist/test_img/2/5799.pgm deleted file mode 100644 index 287ea982b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5820.pgm b/examples/autotiler/Mnist/test_img/2/5820.pgm deleted file mode 100644 index c9c8c7166..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5823.pgm b/examples/autotiler/Mnist/test_img/2/5823.pgm deleted file mode 100644 index fe8cc9a9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5829.pgm b/examples/autotiler/Mnist/test_img/2/5829.pgm deleted file mode 100644 index 6f7163366..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/583.pgm b/examples/autotiler/Mnist/test_img/2/583.pgm deleted file mode 100644 index e380361bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5840.pgm b/examples/autotiler/Mnist/test_img/2/5840.pgm deleted file mode 100644 index 87e2bc740..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5849.pgm b/examples/autotiler/Mnist/test_img/2/5849.pgm deleted file mode 100644 index 657649350..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5863.pgm b/examples/autotiler/Mnist/test_img/2/5863.pgm deleted file mode 100644 index f647ecf86..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5879.pgm b/examples/autotiler/Mnist/test_img/2/5879.pgm deleted file mode 100644 index 7e37d5ae1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5883.pgm b/examples/autotiler/Mnist/test_img/2/5883.pgm deleted file mode 100644 index 37028d8cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5895.pgm b/examples/autotiler/Mnist/test_img/2/5895.pgm deleted file mode 100644 index 472864786..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5907.pgm b/examples/autotiler/Mnist/test_img/2/5907.pgm deleted file mode 100644 index a154a4863..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5921.pgm b/examples/autotiler/Mnist/test_img/2/5921.pgm deleted file mode 100644 index b1c934b8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5924.pgm b/examples/autotiler/Mnist/test_img/2/5924.pgm deleted file mode 100644 index 8f2674966..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5931.pgm b/examples/autotiler/Mnist/test_img/2/5931.pgm deleted file mode 100644 index ed8253b19..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5934.pgm b/examples/autotiler/Mnist/test_img/2/5934.pgm deleted file mode 100644 index a28bc800e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5944.pgm b/examples/autotiler/Mnist/test_img/2/5944.pgm deleted file mode 100644 index 94dacac52..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5954.pgm b/examples/autotiler/Mnist/test_img/2/5954.pgm deleted file mode 100644 index 482fad4e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/5983.pgm b/examples/autotiler/Mnist/test_img/2/5983.pgm deleted file mode 100644 index adf8326f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/5983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6010.pgm b/examples/autotiler/Mnist/test_img/2/6010.pgm deleted file mode 100644 index c9ac7b60e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6014.pgm b/examples/autotiler/Mnist/test_img/2/6014.pgm deleted file mode 100644 index 24434df9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6027.pgm b/examples/autotiler/Mnist/test_img/2/6027.pgm deleted file mode 100644 index 49e3d8a85..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6035.pgm b/examples/autotiler/Mnist/test_img/2/6035.pgm deleted file mode 100644 index 0b5445d28..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6036.pgm b/examples/autotiler/Mnist/test_img/2/6036.pgm deleted file mode 100644 index 7d9dbaa3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6041.pgm b/examples/autotiler/Mnist/test_img/2/6041.pgm deleted file mode 100644 index a5382569f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6051.pgm b/examples/autotiler/Mnist/test_img/2/6051.pgm deleted file mode 100644 index 0be366b82..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6052.pgm b/examples/autotiler/Mnist/test_img/2/6052.pgm deleted file mode 100644 index 13c2d5ffa..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6057.pgm b/examples/autotiler/Mnist/test_img/2/6057.pgm deleted file mode 100644 index 7f48453e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6064.pgm b/examples/autotiler/Mnist/test_img/2/6064.pgm deleted file mode 100644 index dfc853ae7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6074.pgm b/examples/autotiler/Mnist/test_img/2/6074.pgm deleted file mode 100644 index 4f56fb3d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6084.pgm b/examples/autotiler/Mnist/test_img/2/6084.pgm deleted file mode 100644 index a97ffec0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/609.pgm b/examples/autotiler/Mnist/test_img/2/609.pgm deleted file mode 100644 index c0dda0cc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6093.pgm b/examples/autotiler/Mnist/test_img/2/6093.pgm deleted file mode 100644 index b1a57efed..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6106.pgm b/examples/autotiler/Mnist/test_img/2/6106.pgm deleted file mode 100644 index e267db700..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6109.pgm b/examples/autotiler/Mnist/test_img/2/6109.pgm deleted file mode 100644 index ae6b3a11b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6111.pgm b/examples/autotiler/Mnist/test_img/2/6111.pgm deleted file mode 100644 index dff5624df..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6118.pgm b/examples/autotiler/Mnist/test_img/2/6118.pgm deleted file mode 100644 index f23317258..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/612.pgm b/examples/autotiler/Mnist/test_img/2/612.pgm deleted file mode 100644 index c222ce7a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6123.pgm b/examples/autotiler/Mnist/test_img/2/6123.pgm deleted file mode 100644 index da87d0fc5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/613.pgm b/examples/autotiler/Mnist/test_img/2/613.pgm deleted file mode 100644 index 27b434044..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6132.pgm b/examples/autotiler/Mnist/test_img/2/6132.pgm deleted file mode 100644 index 2723832f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6156.pgm b/examples/autotiler/Mnist/test_img/2/6156.pgm deleted file mode 100644 index 4e9a071f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6180.pgm b/examples/autotiler/Mnist/test_img/2/6180.pgm deleted file mode 100644 index e81360e05..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6183.pgm b/examples/autotiler/Mnist/test_img/2/6183.pgm deleted file mode 100644 index 67f105f19..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6193.pgm b/examples/autotiler/Mnist/test_img/2/6193.pgm deleted file mode 100644 index 864586b4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6203.pgm b/examples/autotiler/Mnist/test_img/2/6203.pgm deleted file mode 100644 index 2c93481b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6217.pgm b/examples/autotiler/Mnist/test_img/2/6217.pgm deleted file mode 100644 index a7016c297..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6225.pgm b/examples/autotiler/Mnist/test_img/2/6225.pgm deleted file mode 100644 index d4efc877e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6234.pgm b/examples/autotiler/Mnist/test_img/2/6234.pgm deleted file mode 100644 index 6de1eb863..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/624.pgm b/examples/autotiler/Mnist/test_img/2/624.pgm deleted file mode 100644 index 79a3d39c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6240.pgm b/examples/autotiler/Mnist/test_img/2/6240.pgm deleted file mode 100644 index 1b9f01683..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6246.pgm b/examples/autotiler/Mnist/test_img/2/6246.pgm deleted file mode 100644 index 45e98afff..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6266.pgm b/examples/autotiler/Mnist/test_img/2/6266.pgm deleted file mode 100644 index 6ca3e44c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6274.pgm b/examples/autotiler/Mnist/test_img/2/6274.pgm deleted file mode 100644 index 604ba6039..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6279.pgm b/examples/autotiler/Mnist/test_img/2/6279.pgm deleted file mode 100644 index f83f2a2ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6281.pgm b/examples/autotiler/Mnist/test_img/2/6281.pgm deleted file mode 100644 index 0bfd3199d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/629.pgm b/examples/autotiler/Mnist/test_img/2/629.pgm deleted file mode 100644 index 891929d56..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6305.pgm b/examples/autotiler/Mnist/test_img/2/6305.pgm deleted file mode 100644 index 111545630..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6311.pgm b/examples/autotiler/Mnist/test_img/2/6311.pgm deleted file mode 100644 index c4d903ce2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/632.pgm b/examples/autotiler/Mnist/test_img/2/632.pgm deleted file mode 100644 index e32910d54..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6321.pgm b/examples/autotiler/Mnist/test_img/2/6321.pgm deleted file mode 100644 index 79af38eff..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/633.pgm b/examples/autotiler/Mnist/test_img/2/633.pgm deleted file mode 100644 index bf0b55b7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6330.pgm b/examples/autotiler/Mnist/test_img/2/6330.pgm deleted file mode 100644 index 2ac33fe12..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6337.pgm b/examples/autotiler/Mnist/test_img/2/6337.pgm deleted file mode 100644 index 464b775f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6340.pgm b/examples/autotiler/Mnist/test_img/2/6340.pgm deleted file mode 100644 index 12d236691..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6345.pgm b/examples/autotiler/Mnist/test_img/2/6345.pgm deleted file mode 100644 index bd88ed499..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/635.pgm b/examples/autotiler/Mnist/test_img/2/635.pgm deleted file mode 100644 index 6cedcdc07..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6352.pgm b/examples/autotiler/Mnist/test_img/2/6352.pgm deleted file mode 100644 index ccfcfeaba..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6357.pgm b/examples/autotiler/Mnist/test_img/2/6357.pgm deleted file mode 100644 index 848010ba6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6384.pgm b/examples/autotiler/Mnist/test_img/2/6384.pgm deleted file mode 100644 index fe6b7bc09..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6391.pgm b/examples/autotiler/Mnist/test_img/2/6391.pgm deleted file mode 100644 index a17a583ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6412.pgm b/examples/autotiler/Mnist/test_img/2/6412.pgm deleted file mode 100644 index 097dbc7a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6418.pgm b/examples/autotiler/Mnist/test_img/2/6418.pgm deleted file mode 100644 index 2a340d896..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6423.pgm b/examples/autotiler/Mnist/test_img/2/6423.pgm deleted file mode 100644 index e71f8f75d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/643.pgm b/examples/autotiler/Mnist/test_img/2/643.pgm deleted file mode 100644 index 97d64c7c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6431.pgm b/examples/autotiler/Mnist/test_img/2/6431.pgm deleted file mode 100644 index 18a888398..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6439.pgm b/examples/autotiler/Mnist/test_img/2/6439.pgm deleted file mode 100644 index 18a1a9269..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6446.pgm b/examples/autotiler/Mnist/test_img/2/6446.pgm deleted file mode 100644 index fc0e0b32d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/646.pgm b/examples/autotiler/Mnist/test_img/2/646.pgm deleted file mode 100644 index 0c700f704..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6462.pgm b/examples/autotiler/Mnist/test_img/2/6462.pgm deleted file mode 100644 index 283d361a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6466.pgm b/examples/autotiler/Mnist/test_img/2/6466.pgm deleted file mode 100644 index e19087b91..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6469.pgm b/examples/autotiler/Mnist/test_img/2/6469.pgm deleted file mode 100644 index 68e5274fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6480.pgm b/examples/autotiler/Mnist/test_img/2/6480.pgm deleted file mode 100644 index 437f28317..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6497.pgm b/examples/autotiler/Mnist/test_img/2/6497.pgm deleted file mode 100644 index 29359bdcb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6499.pgm b/examples/autotiler/Mnist/test_img/2/6499.pgm deleted file mode 100644 index 2b93e8112..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6513.pgm b/examples/autotiler/Mnist/test_img/2/6513.pgm deleted file mode 100644 index 46966e253..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6519.pgm b/examples/autotiler/Mnist/test_img/2/6519.pgm deleted file mode 100644 index 4faa4c5ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6521.pgm b/examples/autotiler/Mnist/test_img/2/6521.pgm deleted file mode 100644 index 5c34a93ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6528.pgm b/examples/autotiler/Mnist/test_img/2/6528.pgm deleted file mode 100644 index b65c2ac92..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/653.pgm b/examples/autotiler/Mnist/test_img/2/653.pgm deleted file mode 100644 index f6d0553b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6534.pgm b/examples/autotiler/Mnist/test_img/2/6534.pgm deleted file mode 100644 index f20b029b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6541.pgm b/examples/autotiler/Mnist/test_img/2/6541.pgm deleted file mode 100644 index 6f68d8969..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6554.pgm b/examples/autotiler/Mnist/test_img/2/6554.pgm deleted file mode 100644 index a910f3ff2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6562.pgm b/examples/autotiler/Mnist/test_img/2/6562.pgm deleted file mode 100644 index 28615fe29..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6566.pgm b/examples/autotiler/Mnist/test_img/2/6566.pgm deleted file mode 100644 index 023ca7deb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6574.pgm b/examples/autotiler/Mnist/test_img/2/6574.pgm deleted file mode 100644 index e47f08039..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6581.pgm b/examples/autotiler/Mnist/test_img/2/6581.pgm deleted file mode 100644 index 700a3cde0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6584.pgm b/examples/autotiler/Mnist/test_img/2/6584.pgm deleted file mode 100644 index ea56d8123..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/659.pgm b/examples/autotiler/Mnist/test_img/2/659.pgm deleted file mode 100644 index 7371044b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6594.pgm b/examples/autotiler/Mnist/test_img/2/6594.pgm deleted file mode 100644 index 1d2fc4483..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6607.pgm b/examples/autotiler/Mnist/test_img/2/6607.pgm deleted file mode 100644 index 463f77d02..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6614.pgm b/examples/autotiler/Mnist/test_img/2/6614.pgm deleted file mode 100644 index ca50dbd54..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6616.pgm b/examples/autotiler/Mnist/test_img/2/6616.pgm deleted file mode 100644 index e50dfa3cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6635.pgm b/examples/autotiler/Mnist/test_img/2/6635.pgm deleted file mode 100644 index bd42da726..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6645.pgm b/examples/autotiler/Mnist/test_img/2/6645.pgm deleted file mode 100644 index 25eeb910f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6677.pgm b/examples/autotiler/Mnist/test_img/2/6677.pgm deleted file mode 100644 index 4bd24fab8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6698.pgm b/examples/autotiler/Mnist/test_img/2/6698.pgm deleted file mode 100644 index 6590a2c9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6703.pgm b/examples/autotiler/Mnist/test_img/2/6703.pgm deleted file mode 100644 index 614a5acee..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6713.pgm b/examples/autotiler/Mnist/test_img/2/6713.pgm deleted file mode 100644 index da04d4acc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6721.pgm b/examples/autotiler/Mnist/test_img/2/6721.pgm deleted file mode 100644 index 223504631..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6732.pgm b/examples/autotiler/Mnist/test_img/2/6732.pgm deleted file mode 100644 index 703614ab4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6744.pgm b/examples/autotiler/Mnist/test_img/2/6744.pgm deleted file mode 100644 index 43a926af3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6754.pgm b/examples/autotiler/Mnist/test_img/2/6754.pgm deleted file mode 100644 index 3e09abdec..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6773.pgm b/examples/autotiler/Mnist/test_img/2/6773.pgm deleted file mode 100644 index f85fc77c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6785.pgm b/examples/autotiler/Mnist/test_img/2/6785.pgm deleted file mode 100644 index 1f79cb461..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6796.pgm b/examples/autotiler/Mnist/test_img/2/6796.pgm deleted file mode 100644 index 3f2ba8980..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6797.pgm b/examples/autotiler/Mnist/test_img/2/6797.pgm deleted file mode 100644 index 342635ae3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6800.pgm b/examples/autotiler/Mnist/test_img/2/6800.pgm deleted file mode 100644 index 61ac7b9c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6810.pgm b/examples/autotiler/Mnist/test_img/2/6810.pgm deleted file mode 100644 index 51dd2d378..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6820.pgm b/examples/autotiler/Mnist/test_img/2/6820.pgm deleted file mode 100644 index 2f223cbee..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6828.pgm b/examples/autotiler/Mnist/test_img/2/6828.pgm deleted file mode 100644 index bc025f96d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6831.pgm b/examples/autotiler/Mnist/test_img/2/6831.pgm deleted file mode 100644 index 275844dda..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6836.pgm b/examples/autotiler/Mnist/test_img/2/6836.pgm deleted file mode 100644 index d5d3241df..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6844.pgm b/examples/autotiler/Mnist/test_img/2/6844.pgm deleted file mode 100644 index 0a1ac5519..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6849.pgm b/examples/autotiler/Mnist/test_img/2/6849.pgm deleted file mode 100644 index 3c466a834..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6878.pgm b/examples/autotiler/Mnist/test_img/2/6878.pgm deleted file mode 100644 index a245a4304..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6885.pgm b/examples/autotiler/Mnist/test_img/2/6885.pgm deleted file mode 100644 index 97841aeff..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/690.pgm b/examples/autotiler/Mnist/test_img/2/690.pgm deleted file mode 100644 index 6f598d777..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6906.pgm b/examples/autotiler/Mnist/test_img/2/6906.pgm deleted file mode 100644 index 204b904fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6912.pgm b/examples/autotiler/Mnist/test_img/2/6912.pgm deleted file mode 100644 index 97e213d52..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6920.pgm b/examples/autotiler/Mnist/test_img/2/6920.pgm deleted file mode 100644 index ccc563bdf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6929.pgm b/examples/autotiler/Mnist/test_img/2/6929.pgm deleted file mode 100644 index be251ce96..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6939.pgm b/examples/autotiler/Mnist/test_img/2/6939.pgm deleted file mode 100644 index 8ded7ae2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6949.pgm b/examples/autotiler/Mnist/test_img/2/6949.pgm deleted file mode 100644 index 17badcf93..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6989.pgm b/examples/autotiler/Mnist/test_img/2/6989.pgm deleted file mode 100644 index ab7f7797c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/6993.pgm b/examples/autotiler/Mnist/test_img/2/6993.pgm deleted file mode 100644 index fdab16426..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/6993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7001.pgm b/examples/autotiler/Mnist/test_img/2/7001.pgm deleted file mode 100644 index a33415c82..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7002.pgm b/examples/autotiler/Mnist/test_img/2/7002.pgm deleted file mode 100644 index 865dc64bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7007.pgm b/examples/autotiler/Mnist/test_img/2/7007.pgm deleted file mode 100644 index db2f8d72d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7012.pgm b/examples/autotiler/Mnist/test_img/2/7012.pgm deleted file mode 100644 index 99b3bdc92..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7013.pgm b/examples/autotiler/Mnist/test_img/2/7013.pgm deleted file mode 100644 index 59b37f91a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7015.pgm b/examples/autotiler/Mnist/test_img/2/7015.pgm deleted file mode 100644 index e2b383404..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7022.pgm b/examples/autotiler/Mnist/test_img/2/7022.pgm deleted file mode 100644 index b020bb089..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7054.pgm b/examples/autotiler/Mnist/test_img/2/7054.pgm deleted file mode 100644 index 5f0e377e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7064.pgm b/examples/autotiler/Mnist/test_img/2/7064.pgm deleted file mode 100644 index 131461f89..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7074.pgm b/examples/autotiler/Mnist/test_img/2/7074.pgm deleted file mode 100644 index fc45b93df..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7093.pgm b/examples/autotiler/Mnist/test_img/2/7093.pgm deleted file mode 100644 index 0697201d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7100.pgm b/examples/autotiler/Mnist/test_img/2/7100.pgm deleted file mode 100644 index 4ee1bfe07..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7115.pgm b/examples/autotiler/Mnist/test_img/2/7115.pgm deleted file mode 100644 index 007a1efc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7120.pgm b/examples/autotiler/Mnist/test_img/2/7120.pgm deleted file mode 100644 index b97611988..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7135.pgm b/examples/autotiler/Mnist/test_img/2/7135.pgm deleted file mode 100644 index 848d37c04..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7147.pgm b/examples/autotiler/Mnist/test_img/2/7147.pgm deleted file mode 100644 index 3caafedc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/715.pgm b/examples/autotiler/Mnist/test_img/2/715.pgm deleted file mode 100644 index 10705a985..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7151.pgm b/examples/autotiler/Mnist/test_img/2/7151.pgm deleted file mode 100644 index f89b038d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7154.pgm b/examples/autotiler/Mnist/test_img/2/7154.pgm deleted file mode 100644 index 73b978e26..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7156.pgm b/examples/autotiler/Mnist/test_img/2/7156.pgm deleted file mode 100644 index db06566cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7163.pgm b/examples/autotiler/Mnist/test_img/2/7163.pgm deleted file mode 100644 index 3e237aa1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7184.pgm b/examples/autotiler/Mnist/test_img/2/7184.pgm deleted file mode 100644 index 6bb28e0e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7192.pgm b/examples/autotiler/Mnist/test_img/2/7192.pgm deleted file mode 100644 index 0ec5a40fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/72.pgm b/examples/autotiler/Mnist/test_img/2/72.pgm deleted file mode 100644 index 1e2cfe684..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/72.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7205.pgm b/examples/autotiler/Mnist/test_img/2/7205.pgm deleted file mode 100644 index 4a784d17a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7212.pgm b/examples/autotiler/Mnist/test_img/2/7212.pgm deleted file mode 100644 index f7e5857db..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7229.pgm b/examples/autotiler/Mnist/test_img/2/7229.pgm deleted file mode 100644 index e4fd110f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7235.pgm b/examples/autotiler/Mnist/test_img/2/7235.pgm deleted file mode 100644 index 570effedf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7237.pgm b/examples/autotiler/Mnist/test_img/2/7237.pgm deleted file mode 100644 index 3b6ee757e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7245.pgm b/examples/autotiler/Mnist/test_img/2/7245.pgm deleted file mode 100644 index c013b3ae3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7249.pgm b/examples/autotiler/Mnist/test_img/2/7249.pgm deleted file mode 100644 index c2f824354..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7266.pgm b/examples/autotiler/Mnist/test_img/2/7266.pgm deleted file mode 100644 index d5f455bcb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7271.pgm b/examples/autotiler/Mnist/test_img/2/7271.pgm deleted file mode 100644 index c5fdef00f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/728.pgm b/examples/autotiler/Mnist/test_img/2/728.pgm deleted file mode 100644 index 1806c3c34..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7281.pgm b/examples/autotiler/Mnist/test_img/2/7281.pgm deleted file mode 100644 index 7b5cbd7aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7291.pgm b/examples/autotiler/Mnist/test_img/2/7291.pgm deleted file mode 100644 index e35bdcb24..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7308.pgm b/examples/autotiler/Mnist/test_img/2/7308.pgm deleted file mode 100644 index 4ceeb610e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/731.pgm b/examples/autotiler/Mnist/test_img/2/731.pgm deleted file mode 100644 index deefcd011..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7321.pgm b/examples/autotiler/Mnist/test_img/2/7321.pgm deleted file mode 100644 index 8201442c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7327.pgm b/examples/autotiler/Mnist/test_img/2/7327.pgm deleted file mode 100644 index 5d726193a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7328.pgm b/examples/autotiler/Mnist/test_img/2/7328.pgm deleted file mode 100644 index 391bde22e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7345.pgm b/examples/autotiler/Mnist/test_img/2/7345.pgm deleted file mode 100644 index 6c7c94398..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7348.pgm b/examples/autotiler/Mnist/test_img/2/7348.pgm deleted file mode 100644 index b213aaf53..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7349.pgm b/examples/autotiler/Mnist/test_img/2/7349.pgm deleted file mode 100644 index 56ef9ba34..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7359.pgm b/examples/autotiler/Mnist/test_img/2/7359.pgm deleted file mode 100644 index 3368f1a99..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7364.pgm b/examples/autotiler/Mnist/test_img/2/7364.pgm deleted file mode 100644 index ba826caf0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/738.pgm b/examples/autotiler/Mnist/test_img/2/738.pgm deleted file mode 100644 index ec5afc8c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7386.pgm b/examples/autotiler/Mnist/test_img/2/7386.pgm deleted file mode 100644 index 6ab628de3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7400.pgm b/examples/autotiler/Mnist/test_img/2/7400.pgm deleted file mode 100644 index 6af8f6051..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7406.pgm b/examples/autotiler/Mnist/test_img/2/7406.pgm deleted file mode 100644 index b6d64327d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/741.pgm b/examples/autotiler/Mnist/test_img/2/741.pgm deleted file mode 100644 index 84e00f730..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7412.pgm b/examples/autotiler/Mnist/test_img/2/7412.pgm deleted file mode 100644 index af8eeed00..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7420.pgm b/examples/autotiler/Mnist/test_img/2/7420.pgm deleted file mode 100644 index 2bb5cd547..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/744.pgm b/examples/autotiler/Mnist/test_img/2/744.pgm deleted file mode 100644 index eb4236bfc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7457.pgm b/examples/autotiler/Mnist/test_img/2/7457.pgm deleted file mode 100644 index 7a217591a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7469.pgm b/examples/autotiler/Mnist/test_img/2/7469.pgm deleted file mode 100644 index 7b5027dd2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7472.pgm b/examples/autotiler/Mnist/test_img/2/7472.pgm deleted file mode 100644 index 031165860..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7482.pgm b/examples/autotiler/Mnist/test_img/2/7482.pgm deleted file mode 100644 index 8c29055dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7483.pgm b/examples/autotiler/Mnist/test_img/2/7483.pgm deleted file mode 100644 index 0b0c82f92..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7486.pgm b/examples/autotiler/Mnist/test_img/2/7486.pgm deleted file mode 100644 index e787bcf84..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7492.pgm b/examples/autotiler/Mnist/test_img/2/7492.pgm deleted file mode 100644 index 8c7d73bc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7497.pgm b/examples/autotiler/Mnist/test_img/2/7497.pgm deleted file mode 100644 index 4fde05614..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7508.pgm b/examples/autotiler/Mnist/test_img/2/7508.pgm deleted file mode 100644 index 1174f4e98..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7518.pgm b/examples/autotiler/Mnist/test_img/2/7518.pgm deleted file mode 100644 index 7d08d508a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7528.pgm b/examples/autotiler/Mnist/test_img/2/7528.pgm deleted file mode 100644 index 278878c11..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7539.pgm b/examples/autotiler/Mnist/test_img/2/7539.pgm deleted file mode 100644 index eb98b67ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7564.pgm b/examples/autotiler/Mnist/test_img/2/7564.pgm deleted file mode 100644 index c0c067a30..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7570.pgm b/examples/autotiler/Mnist/test_img/2/7570.pgm deleted file mode 100644 index 3bca6a7df..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7572.pgm b/examples/autotiler/Mnist/test_img/2/7572.pgm deleted file mode 100644 index 11b2a315c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7575.pgm b/examples/autotiler/Mnist/test_img/2/7575.pgm deleted file mode 100644 index 6721519fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7587.pgm b/examples/autotiler/Mnist/test_img/2/7587.pgm deleted file mode 100644 index 7635889d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7604.pgm b/examples/autotiler/Mnist/test_img/2/7604.pgm deleted file mode 100644 index ecb3732b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7609.pgm b/examples/autotiler/Mnist/test_img/2/7609.pgm deleted file mode 100644 index 6400950c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7619.pgm b/examples/autotiler/Mnist/test_img/2/7619.pgm deleted file mode 100644 index 3b50bc6e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7627.pgm b/examples/autotiler/Mnist/test_img/2/7627.pgm deleted file mode 100644 index e818b9247..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7635.pgm b/examples/autotiler/Mnist/test_img/2/7635.pgm deleted file mode 100644 index 7ba08563d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7637.pgm b/examples/autotiler/Mnist/test_img/2/7637.pgm deleted file mode 100644 index 9ada49b29..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/764.pgm b/examples/autotiler/Mnist/test_img/2/764.pgm deleted file mode 100644 index 5db3501e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7678.pgm b/examples/autotiler/Mnist/test_img/2/7678.pgm deleted file mode 100644 index da48d03b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7683.pgm b/examples/autotiler/Mnist/test_img/2/7683.pgm deleted file mode 100644 index aa6deded1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7685.pgm b/examples/autotiler/Mnist/test_img/2/7685.pgm deleted file mode 100644 index ecd269b52..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7687.pgm b/examples/autotiler/Mnist/test_img/2/7687.pgm deleted file mode 100644 index 1421c3f53..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/77.pgm b/examples/autotiler/Mnist/test_img/2/77.pgm deleted file mode 100644 index 9126a91e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/77.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7710.pgm b/examples/autotiler/Mnist/test_img/2/7710.pgm deleted file mode 100644 index 3798726e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7716.pgm b/examples/autotiler/Mnist/test_img/2/7716.pgm deleted file mode 100644 index 4107fcd88..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7724.pgm b/examples/autotiler/Mnist/test_img/2/7724.pgm deleted file mode 100644 index bc99e252e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7729.pgm b/examples/autotiler/Mnist/test_img/2/7729.pgm deleted file mode 100644 index 91b58a6f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7739.pgm b/examples/autotiler/Mnist/test_img/2/7739.pgm deleted file mode 100644 index 3d8bb0a5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7749.pgm b/examples/autotiler/Mnist/test_img/2/7749.pgm deleted file mode 100644 index c79058104..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/775.pgm b/examples/autotiler/Mnist/test_img/2/775.pgm deleted file mode 100644 index 7f22dc098..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7762.pgm b/examples/autotiler/Mnist/test_img/2/7762.pgm deleted file mode 100644 index 362013e8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7772.pgm b/examples/autotiler/Mnist/test_img/2/7772.pgm deleted file mode 100644 index 2d672cd33..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7773.pgm b/examples/autotiler/Mnist/test_img/2/7773.pgm deleted file mode 100644 index d9bc68ae3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7781.pgm b/examples/autotiler/Mnist/test_img/2/7781.pgm deleted file mode 100644 index 40415965b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7785.pgm b/examples/autotiler/Mnist/test_img/2/7785.pgm deleted file mode 100644 index f45eeb14e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7789.pgm b/examples/autotiler/Mnist/test_img/2/7789.pgm deleted file mode 100644 index 199f46d58..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7794.pgm b/examples/autotiler/Mnist/test_img/2/7794.pgm deleted file mode 100644 index 04ed76134..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7815.pgm b/examples/autotiler/Mnist/test_img/2/7815.pgm deleted file mode 100644 index 499dcbd15..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7840.pgm b/examples/autotiler/Mnist/test_img/2/7840.pgm deleted file mode 100644 index deab5ebed..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7848.pgm b/examples/autotiler/Mnist/test_img/2/7848.pgm deleted file mode 100644 index 608f9715f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7857.pgm b/examples/autotiler/Mnist/test_img/2/7857.pgm deleted file mode 100644 index 064294f91..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7876.pgm b/examples/autotiler/Mnist/test_img/2/7876.pgm deleted file mode 100644 index a8cd08b70..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7886.pgm b/examples/autotiler/Mnist/test_img/2/7886.pgm deleted file mode 100644 index 207c6ec2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7894.pgm b/examples/autotiler/Mnist/test_img/2/7894.pgm deleted file mode 100644 index 7b5560cbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7909.pgm b/examples/autotiler/Mnist/test_img/2/7909.pgm deleted file mode 100644 index 4ae6c606a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7917.pgm b/examples/autotiler/Mnist/test_img/2/7917.pgm deleted file mode 100644 index ff1d29fd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7922.pgm b/examples/autotiler/Mnist/test_img/2/7922.pgm deleted file mode 100644 index b257dbea5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7930.pgm b/examples/autotiler/Mnist/test_img/2/7930.pgm deleted file mode 100644 index a1c48f110..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7935.pgm b/examples/autotiler/Mnist/test_img/2/7935.pgm deleted file mode 100644 index f7131cbe7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7945.pgm b/examples/autotiler/Mnist/test_img/2/7945.pgm deleted file mode 100644 index ed10eea2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7955.pgm b/examples/autotiler/Mnist/test_img/2/7955.pgm deleted file mode 100644 index 471f24a53..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/796.pgm b/examples/autotiler/Mnist/test_img/2/796.pgm deleted file mode 100644 index 7f0c9978a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7977.pgm b/examples/autotiler/Mnist/test_img/2/7977.pgm deleted file mode 100644 index e28e22155..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7986.pgm b/examples/autotiler/Mnist/test_img/2/7986.pgm deleted file mode 100644 index 37d88b1a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/799.pgm b/examples/autotiler/Mnist/test_img/2/799.pgm deleted file mode 100644 index 90ca2844b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7992.pgm b/examples/autotiler/Mnist/test_img/2/7992.pgm deleted file mode 100644 index 1735e48fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/7994.pgm b/examples/autotiler/Mnist/test_img/2/7994.pgm deleted file mode 100644 index 85675d069..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/7994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8019.pgm b/examples/autotiler/Mnist/test_img/2/8019.pgm deleted file mode 100644 index f097e456c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8025.pgm b/examples/autotiler/Mnist/test_img/2/8025.pgm deleted file mode 100644 index 4fb850c26..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8031.pgm b/examples/autotiler/Mnist/test_img/2/8031.pgm deleted file mode 100644 index 3fa22a9a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8036.pgm b/examples/autotiler/Mnist/test_img/2/8036.pgm deleted file mode 100644 index 4169ec9dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8047.pgm b/examples/autotiler/Mnist/test_img/2/8047.pgm deleted file mode 100644 index 5e7ef5de5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8059.pgm b/examples/autotiler/Mnist/test_img/2/8059.pgm deleted file mode 100644 index b79659165..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8069.pgm b/examples/autotiler/Mnist/test_img/2/8069.pgm deleted file mode 100644 index 998fed527..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8079.pgm b/examples/autotiler/Mnist/test_img/2/8079.pgm deleted file mode 100644 index 5a6bc9de3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8091.pgm b/examples/autotiler/Mnist/test_img/2/8091.pgm deleted file mode 100644 index b2239e0d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8094.pgm b/examples/autotiler/Mnist/test_img/2/8094.pgm deleted file mode 100644 index 636813f64..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8102.pgm b/examples/autotiler/Mnist/test_img/2/8102.pgm deleted file mode 100644 index e23ee06ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8108.pgm b/examples/autotiler/Mnist/test_img/2/8108.pgm deleted file mode 100644 index 2b4b5d7b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8112.pgm b/examples/autotiler/Mnist/test_img/2/8112.pgm deleted file mode 100644 index 108a86ec4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8119.pgm b/examples/autotiler/Mnist/test_img/2/8119.pgm deleted file mode 100644 index ed42603d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8129.pgm b/examples/autotiler/Mnist/test_img/2/8129.pgm deleted file mode 100644 index 6b393b5c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8139.pgm b/examples/autotiler/Mnist/test_img/2/8139.pgm deleted file mode 100644 index 1a5bddcf6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8153.pgm b/examples/autotiler/Mnist/test_img/2/8153.pgm deleted file mode 100644 index 7bff50eb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/816.pgm b/examples/autotiler/Mnist/test_img/2/816.pgm deleted file mode 100644 index 7a69a9d96..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8161.pgm b/examples/autotiler/Mnist/test_img/2/8161.pgm deleted file mode 100644 index c11aed8bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8165.pgm b/examples/autotiler/Mnist/test_img/2/8165.pgm deleted file mode 100644 index 8c480de66..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8168.pgm b/examples/autotiler/Mnist/test_img/2/8168.pgm deleted file mode 100644 index 1e3e2f907..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8174.pgm b/examples/autotiler/Mnist/test_img/2/8174.pgm deleted file mode 100644 index c13ec8d04..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8198.pgm b/examples/autotiler/Mnist/test_img/2/8198.pgm deleted file mode 100644 index 1ad36c6f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/82.pgm b/examples/autotiler/Mnist/test_img/2/82.pgm deleted file mode 100644 index 076371568..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/82.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8208.pgm b/examples/autotiler/Mnist/test_img/2/8208.pgm deleted file mode 100644 index b866c2d94..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8225.pgm b/examples/autotiler/Mnist/test_img/2/8225.pgm deleted file mode 100644 index 435878084..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/823.pgm b/examples/autotiler/Mnist/test_img/2/823.pgm deleted file mode 100644 index e90c695a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8238.pgm b/examples/autotiler/Mnist/test_img/2/8238.pgm deleted file mode 100644 index baefc477f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8245.pgm b/examples/autotiler/Mnist/test_img/2/8245.pgm deleted file mode 100644 index 7027671f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8253.pgm b/examples/autotiler/Mnist/test_img/2/8253.pgm deleted file mode 100644 index 5b5900a44..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8262.pgm b/examples/autotiler/Mnist/test_img/2/8262.pgm deleted file mode 100644 index e0451746f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/828.pgm b/examples/autotiler/Mnist/test_img/2/828.pgm deleted file mode 100644 index 5aede85c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8292.pgm b/examples/autotiler/Mnist/test_img/2/8292.pgm deleted file mode 100644 index ed681099c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8295.pgm b/examples/autotiler/Mnist/test_img/2/8295.pgm deleted file mode 100644 index 3cd77360e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/830.pgm b/examples/autotiler/Mnist/test_img/2/830.pgm deleted file mode 100644 index c695b2672..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8310.pgm b/examples/autotiler/Mnist/test_img/2/8310.pgm deleted file mode 100644 index db1952e22..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8315.pgm b/examples/autotiler/Mnist/test_img/2/8315.pgm deleted file mode 100644 index 502d79ab3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8318.pgm b/examples/autotiler/Mnist/test_img/2/8318.pgm deleted file mode 100644 index de98c511e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8320.pgm b/examples/autotiler/Mnist/test_img/2/8320.pgm deleted file mode 100644 index 9ac3e249b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8323.pgm b/examples/autotiler/Mnist/test_img/2/8323.pgm deleted file mode 100644 index 9f3d1475f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8345.pgm b/examples/autotiler/Mnist/test_img/2/8345.pgm deleted file mode 100644 index 51f36a673..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8353.pgm b/examples/autotiler/Mnist/test_img/2/8353.pgm deleted file mode 100644 index 804f188af..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8361.pgm b/examples/autotiler/Mnist/test_img/2/8361.pgm deleted file mode 100644 index e7e6d8b62..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8365.pgm b/examples/autotiler/Mnist/test_img/2/8365.pgm deleted file mode 100644 index 09eaa18d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/837.pgm b/examples/autotiler/Mnist/test_img/2/837.pgm deleted file mode 100644 index d036a1d2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8381.pgm b/examples/autotiler/Mnist/test_img/2/8381.pgm deleted file mode 100644 index b00dfc782..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8394.pgm b/examples/autotiler/Mnist/test_img/2/8394.pgm deleted file mode 100644 index 495cf3769..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8409.pgm b/examples/autotiler/Mnist/test_img/2/8409.pgm deleted file mode 100644 index e32f490f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8424.pgm b/examples/autotiler/Mnist/test_img/2/8424.pgm deleted file mode 100644 index d92633c22..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8438.pgm b/examples/autotiler/Mnist/test_img/2/8438.pgm deleted file mode 100644 index 9d4a6bb7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8450.pgm b/examples/autotiler/Mnist/test_img/2/8450.pgm deleted file mode 100644 index 3041e1ba8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8460.pgm b/examples/autotiler/Mnist/test_img/2/8460.pgm deleted file mode 100644 index 9dc523c33..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8470.pgm b/examples/autotiler/Mnist/test_img/2/8470.pgm deleted file mode 100644 index b06eaed2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8482.pgm b/examples/autotiler/Mnist/test_img/2/8482.pgm deleted file mode 100644 index 5252110fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8492.pgm b/examples/autotiler/Mnist/test_img/2/8492.pgm deleted file mode 100644 index 4dcb9b748..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8495.pgm b/examples/autotiler/Mnist/test_img/2/8495.pgm deleted file mode 100644 index 025b43091..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8498.pgm b/examples/autotiler/Mnist/test_img/2/8498.pgm deleted file mode 100644 index 5af9d95d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8521.pgm b/examples/autotiler/Mnist/test_img/2/8521.pgm deleted file mode 100644 index 81dec15a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8532.pgm b/examples/autotiler/Mnist/test_img/2/8532.pgm deleted file mode 100644 index 07ab1e421..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8544.pgm b/examples/autotiler/Mnist/test_img/2/8544.pgm deleted file mode 100644 index 2e3380a5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8550.pgm b/examples/autotiler/Mnist/test_img/2/8550.pgm deleted file mode 100644 index 32471316a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8560.pgm b/examples/autotiler/Mnist/test_img/2/8560.pgm deleted file mode 100644 index 5a71e2a58..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8569.pgm b/examples/autotiler/Mnist/test_img/2/8569.pgm deleted file mode 100644 index 52d280b66..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/858.pgm b/examples/autotiler/Mnist/test_img/2/858.pgm deleted file mode 100644 index c3eb5d983..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8584.pgm b/examples/autotiler/Mnist/test_img/2/8584.pgm deleted file mode 100644 index eb2fbd371..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8592.pgm b/examples/autotiler/Mnist/test_img/2/8592.pgm deleted file mode 100644 index 47726ba8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8594.pgm b/examples/autotiler/Mnist/test_img/2/8594.pgm deleted file mode 100644 index 67dcc5b9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8602.pgm b/examples/autotiler/Mnist/test_img/2/8602.pgm deleted file mode 100644 index 5994ed986..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8612.pgm b/examples/autotiler/Mnist/test_img/2/8612.pgm deleted file mode 100644 index 2dc221ec2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8615.pgm b/examples/autotiler/Mnist/test_img/2/8615.pgm deleted file mode 100644 index d85186e1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8625.pgm b/examples/autotiler/Mnist/test_img/2/8625.pgm deleted file mode 100644 index 52641b26c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/863.pgm b/examples/autotiler/Mnist/test_img/2/863.pgm deleted file mode 100644 index 5b781cddf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8639.pgm b/examples/autotiler/Mnist/test_img/2/8639.pgm deleted file mode 100644 index a463d695c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8646.pgm b/examples/autotiler/Mnist/test_img/2/8646.pgm deleted file mode 100644 index 409274346..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8648.pgm b/examples/autotiler/Mnist/test_img/2/8648.pgm deleted file mode 100644 index 48eee40dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/867.pgm b/examples/autotiler/Mnist/test_img/2/867.pgm deleted file mode 100644 index 2b257f2db..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8673.pgm b/examples/autotiler/Mnist/test_img/2/8673.pgm deleted file mode 100644 index 07ade0f84..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/868.pgm b/examples/autotiler/Mnist/test_img/2/868.pgm deleted file mode 100644 index fe9515ff5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8683.pgm b/examples/autotiler/Mnist/test_img/2/8683.pgm deleted file mode 100644 index 98cc9ab25..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8693.pgm b/examples/autotiler/Mnist/test_img/2/8693.pgm deleted file mode 100644 index af71077c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8704.pgm b/examples/autotiler/Mnist/test_img/2/8704.pgm deleted file mode 100644 index 1c17490d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8707.pgm b/examples/autotiler/Mnist/test_img/2/8707.pgm deleted file mode 100644 index 05784d130..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8712.pgm b/examples/autotiler/Mnist/test_img/2/8712.pgm deleted file mode 100644 index 7210b9db0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8714.pgm b/examples/autotiler/Mnist/test_img/2/8714.pgm deleted file mode 100644 index b6057ab20..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8719.pgm b/examples/autotiler/Mnist/test_img/2/8719.pgm deleted file mode 100644 index 00d154fad..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8721.pgm b/examples/autotiler/Mnist/test_img/2/8721.pgm deleted file mode 100644 index 2f86bcab4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/873.pgm b/examples/autotiler/Mnist/test_img/2/873.pgm deleted file mode 100644 index 31b1c0a99..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8746.pgm b/examples/autotiler/Mnist/test_img/2/8746.pgm deleted file mode 100644 index 75534a895..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/875.pgm b/examples/autotiler/Mnist/test_img/2/875.pgm deleted file mode 100644 index ed96a730f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8793.pgm b/examples/autotiler/Mnist/test_img/2/8793.pgm deleted file mode 100644 index f72fbad94..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8794.pgm b/examples/autotiler/Mnist/test_img/2/8794.pgm deleted file mode 100644 index c495bb8c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8800.pgm b/examples/autotiler/Mnist/test_img/2/8800.pgm deleted file mode 100644 index 54ab428cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8810.pgm b/examples/autotiler/Mnist/test_img/2/8810.pgm deleted file mode 100644 index 244a995bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8820.pgm b/examples/autotiler/Mnist/test_img/2/8820.pgm deleted file mode 100644 index 582e7157a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8830.pgm b/examples/autotiler/Mnist/test_img/2/8830.pgm deleted file mode 100644 index 034aa42f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8838.pgm b/examples/autotiler/Mnist/test_img/2/8838.pgm deleted file mode 100644 index 3147ed662..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8844.pgm b/examples/autotiler/Mnist/test_img/2/8844.pgm deleted file mode 100644 index 9573396d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8870.pgm b/examples/autotiler/Mnist/test_img/2/8870.pgm deleted file mode 100644 index ed5ecc98e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/888.pgm b/examples/autotiler/Mnist/test_img/2/888.pgm deleted file mode 100644 index 49257dd79..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8880.pgm b/examples/autotiler/Mnist/test_img/2/8880.pgm deleted file mode 100644 index 2563b9ba9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8889.pgm b/examples/autotiler/Mnist/test_img/2/8889.pgm deleted file mode 100644 index ca01b4d63..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8902.pgm b/examples/autotiler/Mnist/test_img/2/8902.pgm deleted file mode 100644 index dcfaa6e7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8907.pgm b/examples/autotiler/Mnist/test_img/2/8907.pgm deleted file mode 100644 index f012433f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8908.pgm b/examples/autotiler/Mnist/test_img/2/8908.pgm deleted file mode 100644 index 035a965e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/891.pgm b/examples/autotiler/Mnist/test_img/2/891.pgm deleted file mode 100644 index 48023d3a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8915.pgm b/examples/autotiler/Mnist/test_img/2/8915.pgm deleted file mode 100644 index bcb3d4086..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/892.pgm b/examples/autotiler/Mnist/test_img/2/892.pgm deleted file mode 100644 index 4ea7c6282..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8923.pgm b/examples/autotiler/Mnist/test_img/2/8923.pgm deleted file mode 100644 index 103a72e60..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8936.pgm b/examples/autotiler/Mnist/test_img/2/8936.pgm deleted file mode 100644 index e6483eb13..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8943.pgm b/examples/autotiler/Mnist/test_img/2/8943.pgm deleted file mode 100644 index 4417efbe3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8950.pgm b/examples/autotiler/Mnist/test_img/2/8950.pgm deleted file mode 100644 index 5f8137e4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8966.pgm b/examples/autotiler/Mnist/test_img/2/8966.pgm deleted file mode 100644 index 89d585fb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8969.pgm b/examples/autotiler/Mnist/test_img/2/8969.pgm deleted file mode 100644 index 3533cf3ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/8973.pgm b/examples/autotiler/Mnist/test_img/2/8973.pgm deleted file mode 100644 index fd9003198..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/8973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9006.pgm b/examples/autotiler/Mnist/test_img/2/9006.pgm deleted file mode 100644 index 5cf3edc44..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9010.pgm b/examples/autotiler/Mnist/test_img/2/9010.pgm deleted file mode 100644 index b85da33cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9018.pgm b/examples/autotiler/Mnist/test_img/2/9018.pgm deleted file mode 100644 index 661876b93..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9032.pgm b/examples/autotiler/Mnist/test_img/2/9032.pgm deleted file mode 100644 index 6654c634c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9043.pgm b/examples/autotiler/Mnist/test_img/2/9043.pgm deleted file mode 100644 index d277c43f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9046.pgm b/examples/autotiler/Mnist/test_img/2/9046.pgm deleted file mode 100644 index ceb43c2a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9048.pgm b/examples/autotiler/Mnist/test_img/2/9048.pgm deleted file mode 100644 index eb8006e89..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/905.pgm b/examples/autotiler/Mnist/test_img/2/905.pgm deleted file mode 100644 index 12537e8df..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9062.pgm b/examples/autotiler/Mnist/test_img/2/9062.pgm deleted file mode 100644 index e81890da0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9072.pgm b/examples/autotiler/Mnist/test_img/2/9072.pgm deleted file mode 100644 index a76be8ba6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9082.pgm b/examples/autotiler/Mnist/test_img/2/9082.pgm deleted file mode 100644 index 59b9c54b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9097.pgm b/examples/autotiler/Mnist/test_img/2/9097.pgm deleted file mode 100644 index ba5537302..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9111.pgm b/examples/autotiler/Mnist/test_img/2/9111.pgm deleted file mode 100644 index 3723ace7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9118.pgm b/examples/autotiler/Mnist/test_img/2/9118.pgm deleted file mode 100644 index db0d59f4e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9123.pgm b/examples/autotiler/Mnist/test_img/2/9123.pgm deleted file mode 100644 index c4c795585..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9129.pgm b/examples/autotiler/Mnist/test_img/2/9129.pgm deleted file mode 100644 index 2bd7df4c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9131.pgm b/examples/autotiler/Mnist/test_img/2/9131.pgm deleted file mode 100644 index 019d425de..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9135.pgm b/examples/autotiler/Mnist/test_img/2/9135.pgm deleted file mode 100644 index 515f26f3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9145.pgm b/examples/autotiler/Mnist/test_img/2/9145.pgm deleted file mode 100644 index 89b4e90f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9154.pgm b/examples/autotiler/Mnist/test_img/2/9154.pgm deleted file mode 100644 index 9384b8e12..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9168.pgm b/examples/autotiler/Mnist/test_img/2/9168.pgm deleted file mode 100644 index 5a5a9034a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9181.pgm b/examples/autotiler/Mnist/test_img/2/9181.pgm deleted file mode 100644 index a70130150..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/919.pgm b/examples/autotiler/Mnist/test_img/2/919.pgm deleted file mode 100644 index f86f32d2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9191.pgm b/examples/autotiler/Mnist/test_img/2/9191.pgm deleted file mode 100644 index f55488874..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9201.pgm b/examples/autotiler/Mnist/test_img/2/9201.pgm deleted file mode 100644 index 70cceb33d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9209.pgm b/examples/autotiler/Mnist/test_img/2/9209.pgm deleted file mode 100644 index 48b0298e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/921.pgm b/examples/autotiler/Mnist/test_img/2/921.pgm deleted file mode 100644 index 9f82dfe13..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9215.pgm b/examples/autotiler/Mnist/test_img/2/9215.pgm deleted file mode 100644 index 5c7c792b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/922.pgm b/examples/autotiler/Mnist/test_img/2/922.pgm deleted file mode 100644 index fd6a7cf2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9225.pgm b/examples/autotiler/Mnist/test_img/2/9225.pgm deleted file mode 100644 index 4df87deb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/924.pgm b/examples/autotiler/Mnist/test_img/2/924.pgm deleted file mode 100644 index 550d86e2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9246.pgm b/examples/autotiler/Mnist/test_img/2/9246.pgm deleted file mode 100644 index 993b4c33d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9259.pgm b/examples/autotiler/Mnist/test_img/2/9259.pgm deleted file mode 100644 index 89927a83f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/926.pgm b/examples/autotiler/Mnist/test_img/2/926.pgm deleted file mode 100644 index 57cd38dc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9266.pgm b/examples/autotiler/Mnist/test_img/2/9266.pgm deleted file mode 100644 index 2b349a0d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9303.pgm b/examples/autotiler/Mnist/test_img/2/9303.pgm deleted file mode 100644 index 46b8c75d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9304.pgm b/examples/autotiler/Mnist/test_img/2/9304.pgm deleted file mode 100644 index c17f1d6ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9309.pgm b/examples/autotiler/Mnist/test_img/2/9309.pgm deleted file mode 100644 index 5295d3610..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9318.pgm b/examples/autotiler/Mnist/test_img/2/9318.pgm deleted file mode 100644 index 4ebb98bad..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9341.pgm b/examples/autotiler/Mnist/test_img/2/9341.pgm deleted file mode 100644 index 61623219f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9346.pgm b/examples/autotiler/Mnist/test_img/2/9346.pgm deleted file mode 100644 index 5fdeff8bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9351.pgm b/examples/autotiler/Mnist/test_img/2/9351.pgm deleted file mode 100644 index 678b38c97..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9359.pgm b/examples/autotiler/Mnist/test_img/2/9359.pgm deleted file mode 100644 index 9ca6c0a2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9369.pgm b/examples/autotiler/Mnist/test_img/2/9369.pgm deleted file mode 100644 index fbe572cc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9379.pgm b/examples/autotiler/Mnist/test_img/2/9379.pgm deleted file mode 100644 index 9b5999057..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9389.pgm b/examples/autotiler/Mnist/test_img/2/9389.pgm deleted file mode 100644 index 6d433ca7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/939.pgm b/examples/autotiler/Mnist/test_img/2/939.pgm deleted file mode 100644 index 676f96b2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9417.pgm b/examples/autotiler/Mnist/test_img/2/9417.pgm deleted file mode 100644 index 5031802f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9421.pgm b/examples/autotiler/Mnist/test_img/2/9421.pgm deleted file mode 100644 index 35f7133ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9442.pgm b/examples/autotiler/Mnist/test_img/2/9442.pgm deleted file mode 100644 index c71a11c93..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9446.pgm b/examples/autotiler/Mnist/test_img/2/9446.pgm deleted file mode 100644 index b14df9a7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/945.pgm b/examples/autotiler/Mnist/test_img/2/945.pgm deleted file mode 100644 index 8fd52b89b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9456.pgm b/examples/autotiler/Mnist/test_img/2/9456.pgm deleted file mode 100644 index 171801db1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9470.pgm b/examples/autotiler/Mnist/test_img/2/9470.pgm deleted file mode 100644 index cfda029ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9476.pgm b/examples/autotiler/Mnist/test_img/2/9476.pgm deleted file mode 100644 index 5e46f46de..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9477.pgm b/examples/autotiler/Mnist/test_img/2/9477.pgm deleted file mode 100644 index 26f6591b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9480.pgm b/examples/autotiler/Mnist/test_img/2/9480.pgm deleted file mode 100644 index 4632d950a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9487.pgm b/examples/autotiler/Mnist/test_img/2/9487.pgm deleted file mode 100644 index 9e039c459..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9490.pgm b/examples/autotiler/Mnist/test_img/2/9490.pgm deleted file mode 100644 index 9c2c86a17..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9500.pgm b/examples/autotiler/Mnist/test_img/2/9500.pgm deleted file mode 100644 index 4860ba142..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9510.pgm b/examples/autotiler/Mnist/test_img/2/9510.pgm deleted file mode 100644 index 7e050cd12..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9521.pgm b/examples/autotiler/Mnist/test_img/2/9521.pgm deleted file mode 100644 index 63d4b6fcb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9535.pgm b/examples/autotiler/Mnist/test_img/2/9535.pgm deleted file mode 100644 index cb9da8066..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9547.pgm b/examples/autotiler/Mnist/test_img/2/9547.pgm deleted file mode 100644 index 9e2a8b873..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9569.pgm b/examples/autotiler/Mnist/test_img/2/9569.pgm deleted file mode 100644 index 1757e73b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9577.pgm b/examples/autotiler/Mnist/test_img/2/9577.pgm deleted file mode 100644 index 9efbb0d88..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9578.pgm b/examples/autotiler/Mnist/test_img/2/9578.pgm deleted file mode 100644 index 22710027d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9595.pgm b/examples/autotiler/Mnist/test_img/2/9595.pgm deleted file mode 100644 index 8e27ce073..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9597.pgm b/examples/autotiler/Mnist/test_img/2/9597.pgm deleted file mode 100644 index 619d2b7fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9603.pgm b/examples/autotiler/Mnist/test_img/2/9603.pgm deleted file mode 100644 index 67a565d82..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9613.pgm b/examples/autotiler/Mnist/test_img/2/9613.pgm deleted file mode 100644 index a5b6cf8a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9623.pgm b/examples/autotiler/Mnist/test_img/2/9623.pgm deleted file mode 100644 index dd5b313d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9635.pgm b/examples/autotiler/Mnist/test_img/2/9635.pgm deleted file mode 100644 index 0f725bbdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9664.pgm b/examples/autotiler/Mnist/test_img/2/9664.pgm deleted file mode 100644 index 3c0f5f11c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9686.pgm b/examples/autotiler/Mnist/test_img/2/9686.pgm deleted file mode 100644 index 3f872393a..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9696.pgm b/examples/autotiler/Mnist/test_img/2/9696.pgm deleted file mode 100644 index 41c7ffa93..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9700.pgm b/examples/autotiler/Mnist/test_img/2/9700.pgm deleted file mode 100644 index 11c1f41a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9703.pgm b/examples/autotiler/Mnist/test_img/2/9703.pgm deleted file mode 100644 index b9c23a735..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9706.pgm b/examples/autotiler/Mnist/test_img/2/9706.pgm deleted file mode 100644 index ffe78d3ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9716.pgm b/examples/autotiler/Mnist/test_img/2/9716.pgm deleted file mode 100644 index b820a3a81..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9726.pgm b/examples/autotiler/Mnist/test_img/2/9726.pgm deleted file mode 100644 index b263b4fa5..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/974.pgm b/examples/autotiler/Mnist/test_img/2/974.pgm deleted file mode 100644 index 5492a38f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/975.pgm b/examples/autotiler/Mnist/test_img/2/975.pgm deleted file mode 100644 index a5cc5923f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9751.pgm b/examples/autotiler/Mnist/test_img/2/9751.pgm deleted file mode 100644 index d5c17c8db..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9752.pgm b/examples/autotiler/Mnist/test_img/2/9752.pgm deleted file mode 100644 index a1207f50f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9768.pgm b/examples/autotiler/Mnist/test_img/2/9768.pgm deleted file mode 100644 index 86842a4ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9779.pgm b/examples/autotiler/Mnist/test_img/2/9779.pgm deleted file mode 100644 index 9137d9b6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9798.pgm b/examples/autotiler/Mnist/test_img/2/9798.pgm deleted file mode 100644 index d1546a59c..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/980.pgm b/examples/autotiler/Mnist/test_img/2/980.pgm deleted file mode 100644 index 3dc7ae891..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9803.pgm b/examples/autotiler/Mnist/test_img/2/9803.pgm deleted file mode 100644 index 7be9dd014..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9811.pgm b/examples/autotiler/Mnist/test_img/2/9811.pgm deleted file mode 100644 index cc5b666a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9820.pgm b/examples/autotiler/Mnist/test_img/2/9820.pgm deleted file mode 100644 index 630c24811..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9832.pgm b/examples/autotiler/Mnist/test_img/2/9832.pgm deleted file mode 100644 index 80c22557e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9839.pgm b/examples/autotiler/Mnist/test_img/2/9839.pgm deleted file mode 100644 index d2c6c0e29..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9847.pgm b/examples/autotiler/Mnist/test_img/2/9847.pgm deleted file mode 100644 index e17b2c527..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9849.pgm b/examples/autotiler/Mnist/test_img/2/9849.pgm deleted file mode 100644 index c6ef4a886..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/985.pgm b/examples/autotiler/Mnist/test_img/2/985.pgm deleted file mode 100644 index 3c79ffeaa..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9855.pgm b/examples/autotiler/Mnist/test_img/2/9855.pgm deleted file mode 100644 index b5d7e57b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9867.pgm b/examples/autotiler/Mnist/test_img/2/9867.pgm deleted file mode 100644 index 064d42cca..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9874.pgm b/examples/autotiler/Mnist/test_img/2/9874.pgm deleted file mode 100644 index 58fa7dac1..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9880.pgm b/examples/autotiler/Mnist/test_img/2/9880.pgm deleted file mode 100644 index c9a0bdaf3..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9893.pgm b/examples/autotiler/Mnist/test_img/2/9893.pgm deleted file mode 100644 index 51fef186d..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/990.pgm b/examples/autotiler/Mnist/test_img/2/990.pgm deleted file mode 100644 index 4fce0b43e..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9904.pgm b/examples/autotiler/Mnist/test_img/2/9904.pgm deleted file mode 100644 index 45a05a8dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9913.pgm b/examples/autotiler/Mnist/test_img/2/9913.pgm deleted file mode 100644 index 23e8bc7b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9933.pgm b/examples/autotiler/Mnist/test_img/2/9933.pgm deleted file mode 100644 index 3ae96bf98..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9937.pgm b/examples/autotiler/Mnist/test_img/2/9937.pgm deleted file mode 100644 index 071f43258..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/995.pgm b/examples/autotiler/Mnist/test_img/2/995.pgm deleted file mode 100644 index 898c5c6c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9954.pgm b/examples/autotiler/Mnist/test_img/2/9954.pgm deleted file mode 100644 index b8df74c44..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/996.pgm b/examples/autotiler/Mnist/test_img/2/996.pgm deleted file mode 100644 index eafa2c8ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9971.pgm b/examples/autotiler/Mnist/test_img/2/9971.pgm deleted file mode 100644 index 40605b2e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9980.pgm b/examples/autotiler/Mnist/test_img/2/9980.pgm deleted file mode 100644 index b7ee638bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9985.pgm b/examples/autotiler/Mnist/test_img/2/9985.pgm deleted file mode 100644 index 793e632c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/2/9995.pgm b/examples/autotiler/Mnist/test_img/2/9995.pgm deleted file mode 100644 index 79438943f..000000000 Binary files a/examples/autotiler/Mnist/test_img/2/9995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1020.pgm b/examples/autotiler/Mnist/test_img/3/1020.pgm deleted file mode 100644 index 3f74f7b8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1028.pgm b/examples/autotiler/Mnist/test_img/3/1028.pgm deleted file mode 100644 index 0ecec398c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1042.pgm b/examples/autotiler/Mnist/test_img/3/1042.pgm deleted file mode 100644 index 1f2b288aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1062.pgm b/examples/autotiler/Mnist/test_img/3/1062.pgm deleted file mode 100644 index 3f45da994..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1066.pgm b/examples/autotiler/Mnist/test_img/3/1066.pgm deleted file mode 100644 index 7f5526606..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1067.pgm b/examples/autotiler/Mnist/test_img/3/1067.pgm deleted file mode 100644 index 042c3e385..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1069.pgm b/examples/autotiler/Mnist/test_img/3/1069.pgm deleted file mode 100644 index 9839dfeec..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1072.pgm b/examples/autotiler/Mnist/test_img/3/1072.pgm deleted file mode 100644 index ac43ba4c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1092.pgm b/examples/autotiler/Mnist/test_img/3/1092.pgm deleted file mode 100644 index 301d10174..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1095.pgm b/examples/autotiler/Mnist/test_img/3/1095.pgm deleted file mode 100644 index 35f1d15a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1098.pgm b/examples/autotiler/Mnist/test_img/3/1098.pgm deleted file mode 100644 index 17a5a7318..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1109.pgm b/examples/autotiler/Mnist/test_img/3/1109.pgm deleted file mode 100644 index 5c93b3f51..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1114.pgm b/examples/autotiler/Mnist/test_img/3/1114.pgm deleted file mode 100644 index 429a030a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/112.pgm b/examples/autotiler/Mnist/test_img/3/112.pgm deleted file mode 100644 index 4e4697a62..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1127.pgm b/examples/autotiler/Mnist/test_img/3/1127.pgm deleted file mode 100644 index ea2466ea4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1128.pgm b/examples/autotiler/Mnist/test_img/3/1128.pgm deleted file mode 100644 index 9dd67ced6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1134.pgm b/examples/autotiler/Mnist/test_img/3/1134.pgm deleted file mode 100644 index 4c7cd8808..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1150.pgm b/examples/autotiler/Mnist/test_img/3/1150.pgm deleted file mode 100644 index c88736fdd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1166.pgm b/examples/autotiler/Mnist/test_img/3/1166.pgm deleted file mode 100644 index 3945cbb05..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1172.pgm b/examples/autotiler/Mnist/test_img/3/1172.pgm deleted file mode 100644 index 6b5370ea7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1204.pgm b/examples/autotiler/Mnist/test_img/3/1204.pgm deleted file mode 100644 index f6612b0f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1205.pgm b/examples/autotiler/Mnist/test_img/3/1205.pgm deleted file mode 100644 index 6f54cb166..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1208.pgm b/examples/autotiler/Mnist/test_img/3/1208.pgm deleted file mode 100644 index 340266d7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1215.pgm b/examples/autotiler/Mnist/test_img/3/1215.pgm deleted file mode 100644 index a37009aad..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1239.pgm b/examples/autotiler/Mnist/test_img/3/1239.pgm deleted file mode 100644 index 916810492..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1265.pgm b/examples/autotiler/Mnist/test_img/3/1265.pgm deleted file mode 100644 index 151855adf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1278.pgm b/examples/autotiler/Mnist/test_img/3/1278.pgm deleted file mode 100644 index f00763435..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1284.pgm b/examples/autotiler/Mnist/test_img/3/1284.pgm deleted file mode 100644 index 31986590a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1290.pgm b/examples/autotiler/Mnist/test_img/3/1290.pgm deleted file mode 100644 index d41dd0d53..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1291.pgm b/examples/autotiler/Mnist/test_img/3/1291.pgm deleted file mode 100644 index 24cce0451..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1298.pgm b/examples/autotiler/Mnist/test_img/3/1298.pgm deleted file mode 100644 index 48f5d0867..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1310.pgm b/examples/autotiler/Mnist/test_img/3/1310.pgm deleted file mode 100644 index 27ce953e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1315.pgm b/examples/autotiler/Mnist/test_img/3/1315.pgm deleted file mode 100644 index 71c40b013..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1317.pgm b/examples/autotiler/Mnist/test_img/3/1317.pgm deleted file mode 100644 index f8c7747be..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1354.pgm b/examples/autotiler/Mnist/test_img/3/1354.pgm deleted file mode 100644 index 6b3769ff0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1367.pgm b/examples/autotiler/Mnist/test_img/3/1367.pgm deleted file mode 100644 index f3879f388..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1383.pgm b/examples/autotiler/Mnist/test_img/3/1383.pgm deleted file mode 100644 index f61993472..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1384.pgm b/examples/autotiler/Mnist/test_img/3/1384.pgm deleted file mode 100644 index 3fb0a6621..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/142.pgm b/examples/autotiler/Mnist/test_img/3/142.pgm deleted file mode 100644 index 248d7c543..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1426.pgm b/examples/autotiler/Mnist/test_img/3/1426.pgm deleted file mode 100644 index 33ccf7077..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1442.pgm b/examples/autotiler/Mnist/test_img/3/1442.pgm deleted file mode 100644 index 7b3d5faab..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1463.pgm b/examples/autotiler/Mnist/test_img/3/1463.pgm deleted file mode 100644 index 0f8290197..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1469.pgm b/examples/autotiler/Mnist/test_img/3/1469.pgm deleted file mode 100644 index 93f6033c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1472.pgm b/examples/autotiler/Mnist/test_img/3/1472.pgm deleted file mode 100644 index caa5ead89..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1479.pgm b/examples/autotiler/Mnist/test_img/3/1479.pgm deleted file mode 100644 index 6595846bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1480.pgm b/examples/autotiler/Mnist/test_img/3/1480.pgm deleted file mode 100644 index f5022df09..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1489.pgm b/examples/autotiler/Mnist/test_img/3/1489.pgm deleted file mode 100644 index 2b4561b79..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1490.pgm b/examples/autotiler/Mnist/test_img/3/1490.pgm deleted file mode 100644 index 15b6be752..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1495.pgm b/examples/autotiler/Mnist/test_img/3/1495.pgm deleted file mode 100644 index 8fd59dadf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1503.pgm b/examples/autotiler/Mnist/test_img/3/1503.pgm deleted file mode 100644 index 083901c89..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1513.pgm b/examples/autotiler/Mnist/test_img/3/1513.pgm deleted file mode 100644 index 17c740267..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1519.pgm b/examples/autotiler/Mnist/test_img/3/1519.pgm deleted file mode 100644 index 025ca9243..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1531.pgm b/examples/autotiler/Mnist/test_img/3/1531.pgm deleted file mode 100644 index a625e687f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1539.pgm b/examples/autotiler/Mnist/test_img/3/1539.pgm deleted file mode 100644 index 63ce2e59d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/158.pgm b/examples/autotiler/Mnist/test_img/3/158.pgm deleted file mode 100644 index fc458a3f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1586.pgm b/examples/autotiler/Mnist/test_img/3/1586.pgm deleted file mode 100644 index c6930c316..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1588.pgm b/examples/autotiler/Mnist/test_img/3/1588.pgm deleted file mode 100644 index 5721a3088..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1591.pgm b/examples/autotiler/Mnist/test_img/3/1591.pgm deleted file mode 100644 index 3a4254b43..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1600.pgm b/examples/autotiler/Mnist/test_img/3/1600.pgm deleted file mode 100644 index 441767773..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1601.pgm b/examples/autotiler/Mnist/test_img/3/1601.pgm deleted file mode 100644 index dc14f09b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1605.pgm b/examples/autotiler/Mnist/test_img/3/1605.pgm deleted file mode 100644 index 400cac61a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1607.pgm b/examples/autotiler/Mnist/test_img/3/1607.pgm deleted file mode 100644 index 6afef12f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1608.pgm b/examples/autotiler/Mnist/test_img/3/1608.pgm deleted file mode 100644 index a05190f21..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1611.pgm b/examples/autotiler/Mnist/test_img/3/1611.pgm deleted file mode 100644 index 923d86161..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1612.pgm b/examples/autotiler/Mnist/test_img/3/1612.pgm deleted file mode 100644 index 5ed3edc05..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1615.pgm b/examples/autotiler/Mnist/test_img/3/1615.pgm deleted file mode 100644 index c59af56ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1617.pgm b/examples/autotiler/Mnist/test_img/3/1617.pgm deleted file mode 100644 index 27f38db36..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1628.pgm b/examples/autotiler/Mnist/test_img/3/1628.pgm deleted file mode 100644 index 1bd743975..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1661.pgm b/examples/autotiler/Mnist/test_img/3/1661.pgm deleted file mode 100644 index cf2d823f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1681.pgm b/examples/autotiler/Mnist/test_img/3/1681.pgm deleted file mode 100644 index a4d6a3592..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1683.pgm b/examples/autotiler/Mnist/test_img/3/1683.pgm deleted file mode 100644 index 8efb1ba18..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1690.pgm b/examples/autotiler/Mnist/test_img/3/1690.pgm deleted file mode 100644 index b67da7fba..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1727.pgm b/examples/autotiler/Mnist/test_img/3/1727.pgm deleted file mode 100644 index d03a2d326..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/173.pgm b/examples/autotiler/Mnist/test_img/3/173.pgm deleted file mode 100644 index 9a625c74d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1730.pgm b/examples/autotiler/Mnist/test_img/3/1730.pgm deleted file mode 100644 index 8e38b280d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1731.pgm b/examples/autotiler/Mnist/test_img/3/1731.pgm deleted file mode 100644 index 66cbab1bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1738.pgm b/examples/autotiler/Mnist/test_img/3/1738.pgm deleted file mode 100644 index aa6af577f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1742.pgm b/examples/autotiler/Mnist/test_img/3/1742.pgm deleted file mode 100644 index 4761a93c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1746.pgm b/examples/autotiler/Mnist/test_img/3/1746.pgm deleted file mode 100644 index 758a6fa24..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1763.pgm b/examples/autotiler/Mnist/test_img/3/1763.pgm deleted file mode 100644 index b07f86a4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1765.pgm b/examples/autotiler/Mnist/test_img/3/1765.pgm deleted file mode 100644 index 87e31cab3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1769.pgm b/examples/autotiler/Mnist/test_img/3/1769.pgm deleted file mode 100644 index e4aa16373..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1779.pgm b/examples/autotiler/Mnist/test_img/3/1779.pgm deleted file mode 100644 index 62ea68dea..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1789.pgm b/examples/autotiler/Mnist/test_img/3/1789.pgm deleted file mode 100644 index 6a6d67efa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1797.pgm b/examples/autotiler/Mnist/test_img/3/1797.pgm deleted file mode 100644 index 4a89c035a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1798.pgm b/examples/autotiler/Mnist/test_img/3/1798.pgm deleted file mode 100644 index eb0f52ced..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/18.pgm b/examples/autotiler/Mnist/test_img/3/18.pgm deleted file mode 100644 index 781724e35..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/18.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1803.pgm b/examples/autotiler/Mnist/test_img/3/1803.pgm deleted file mode 100644 index 93ee9cb7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1804.pgm b/examples/autotiler/Mnist/test_img/3/1804.pgm deleted file mode 100644 index ae65a5b85..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1828.pgm b/examples/autotiler/Mnist/test_img/3/1828.pgm deleted file mode 100644 index 1ed26ae3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1832.pgm b/examples/autotiler/Mnist/test_img/3/1832.pgm deleted file mode 100644 index 5c652a496..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1837.pgm b/examples/autotiler/Mnist/test_img/3/1837.pgm deleted file mode 100644 index 794b5551d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1840.pgm b/examples/autotiler/Mnist/test_img/3/1840.pgm deleted file mode 100644 index fbd96a7dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1845.pgm b/examples/autotiler/Mnist/test_img/3/1845.pgm deleted file mode 100644 index b07d27ac1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1856.pgm b/examples/autotiler/Mnist/test_img/3/1856.pgm deleted file mode 100644 index b168550c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1889.pgm b/examples/autotiler/Mnist/test_img/3/1889.pgm deleted file mode 100644 index f08b28a10..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1913.pgm b/examples/autotiler/Mnist/test_img/3/1913.pgm deleted file mode 100644 index 9a0966d42..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1923.pgm b/examples/autotiler/Mnist/test_img/3/1923.pgm deleted file mode 100644 index 4b93384b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1926.pgm b/examples/autotiler/Mnist/test_img/3/1926.pgm deleted file mode 100644 index 8def85a6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1928.pgm b/examples/autotiler/Mnist/test_img/3/1928.pgm deleted file mode 100644 index d37b5672c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/195.pgm b/examples/autotiler/Mnist/test_img/3/195.pgm deleted file mode 100644 index 5a78f10d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1953.pgm b/examples/autotiler/Mnist/test_img/3/1953.pgm deleted file mode 100644 index 52486a1f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1962.pgm b/examples/autotiler/Mnist/test_img/3/1962.pgm deleted file mode 100644 index e5836cf21..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1976.pgm b/examples/autotiler/Mnist/test_img/3/1976.pgm deleted file mode 100644 index ea1db0e55..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1983.pgm b/examples/autotiler/Mnist/test_img/3/1983.pgm deleted file mode 100644 index fe02dae84..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/1997.pgm b/examples/autotiler/Mnist/test_img/3/1997.pgm deleted file mode 100644 index 83e458d51..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/1997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/200.pgm b/examples/autotiler/Mnist/test_img/3/200.pgm deleted file mode 100644 index fcc51cc0a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2008.pgm b/examples/autotiler/Mnist/test_img/3/2008.pgm deleted file mode 100644 index af9bcbfee..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2011.pgm b/examples/autotiler/Mnist/test_img/3/2011.pgm deleted file mode 100644 index 2e623de15..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2020.pgm b/examples/autotiler/Mnist/test_img/3/2020.pgm deleted file mode 100644 index 789184473..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2025.pgm b/examples/autotiler/Mnist/test_img/3/2025.pgm deleted file mode 100644 index 907658291..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2031.pgm b/examples/autotiler/Mnist/test_img/3/2031.pgm deleted file mode 100644 index dea1bb0d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2032.pgm b/examples/autotiler/Mnist/test_img/3/2032.pgm deleted file mode 100644 index 99d1e9a02..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2045.pgm b/examples/autotiler/Mnist/test_img/3/2045.pgm deleted file mode 100644 index 80c766ec2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/205.pgm b/examples/autotiler/Mnist/test_img/3/205.pgm deleted file mode 100644 index 4aa902e03..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2069.pgm b/examples/autotiler/Mnist/test_img/3/2069.pgm deleted file mode 100644 index c71f03a2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2072.pgm b/examples/autotiler/Mnist/test_img/3/2072.pgm deleted file mode 100644 index 83a2af944..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2075.pgm b/examples/autotiler/Mnist/test_img/3/2075.pgm deleted file mode 100644 index dc4b61a5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2076.pgm b/examples/autotiler/Mnist/test_img/3/2076.pgm deleted file mode 100644 index 5d5e47085..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2080.pgm b/examples/autotiler/Mnist/test_img/3/2080.pgm deleted file mode 100644 index 3f9563acf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2083.pgm b/examples/autotiler/Mnist/test_img/3/2083.pgm deleted file mode 100644 index e43b92cf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2086.pgm b/examples/autotiler/Mnist/test_img/3/2086.pgm deleted file mode 100644 index 404dbb8a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2105.pgm b/examples/autotiler/Mnist/test_img/3/2105.pgm deleted file mode 100644 index 177bbe7f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2109.pgm b/examples/autotiler/Mnist/test_img/3/2109.pgm deleted file mode 100644 index 7f85b2ffc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2128.pgm b/examples/autotiler/Mnist/test_img/3/2128.pgm deleted file mode 100644 index 7aaed5c0e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/213.pgm b/examples/autotiler/Mnist/test_img/3/213.pgm deleted file mode 100644 index eb1918164..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2139.pgm b/examples/autotiler/Mnist/test_img/3/2139.pgm deleted file mode 100644 index 92c9f6b98..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2151.pgm b/examples/autotiler/Mnist/test_img/3/2151.pgm deleted file mode 100644 index a49034e00..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2153.pgm b/examples/autotiler/Mnist/test_img/3/2153.pgm deleted file mode 100644 index 0eb49ba2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/216.pgm b/examples/autotiler/Mnist/test_img/3/216.pgm deleted file mode 100644 index aa3a7c9ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2174.pgm b/examples/autotiler/Mnist/test_img/3/2174.pgm deleted file mode 100644 index e0618e093..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2222.pgm b/examples/autotiler/Mnist/test_img/3/2222.pgm deleted file mode 100644 index 0defa27fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2229.pgm b/examples/autotiler/Mnist/test_img/3/2229.pgm deleted file mode 100644 index 78dd89fa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2230.pgm b/examples/autotiler/Mnist/test_img/3/2230.pgm deleted file mode 100644 index d2532127a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2255.pgm b/examples/autotiler/Mnist/test_img/3/2255.pgm deleted file mode 100644 index 86e3b0d99..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2280.pgm b/examples/autotiler/Mnist/test_img/3/2280.pgm deleted file mode 100644 index 2c4c7b455..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2281.pgm b/examples/autotiler/Mnist/test_img/3/2281.pgm deleted file mode 100644 index 9a9e67383..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2284.pgm b/examples/autotiler/Mnist/test_img/3/2284.pgm deleted file mode 100644 index a31ba0bdd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2288.pgm b/examples/autotiler/Mnist/test_img/3/2288.pgm deleted file mode 100644 index e268def75..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/230.pgm b/examples/autotiler/Mnist/test_img/3/230.pgm deleted file mode 100644 index 1296aa8ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2300.pgm b/examples/autotiler/Mnist/test_img/3/2300.pgm deleted file mode 100644 index 579597223..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2303.pgm b/examples/autotiler/Mnist/test_img/3/2303.pgm deleted file mode 100644 index 3a68504de..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2305.pgm b/examples/autotiler/Mnist/test_img/3/2305.pgm deleted file mode 100644 index d5f82462b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2308.pgm b/examples/autotiler/Mnist/test_img/3/2308.pgm deleted file mode 100644 index c5ce3eebc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/231.pgm b/examples/autotiler/Mnist/test_img/3/231.pgm deleted file mode 100644 index d7bbc3822..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2312.pgm b/examples/autotiler/Mnist/test_img/3/2312.pgm deleted file mode 100644 index 43e9fab60..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2347.pgm b/examples/autotiler/Mnist/test_img/3/2347.pgm deleted file mode 100644 index 894c63abe..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2348.pgm b/examples/autotiler/Mnist/test_img/3/2348.pgm deleted file mode 100644 index 4e6f9cb4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2351.pgm b/examples/autotiler/Mnist/test_img/3/2351.pgm deleted file mode 100644 index a1604eba1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2364.pgm b/examples/autotiler/Mnist/test_img/3/2364.pgm deleted file mode 100644 index 4fe216ac0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2392.pgm b/examples/autotiler/Mnist/test_img/3/2392.pgm deleted file mode 100644 index 5ac7a64b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2405.pgm b/examples/autotiler/Mnist/test_img/3/2405.pgm deleted file mode 100644 index 5bceb527c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2408.pgm b/examples/autotiler/Mnist/test_img/3/2408.pgm deleted file mode 100644 index a9848ddbc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2424.pgm b/examples/autotiler/Mnist/test_img/3/2424.pgm deleted file mode 100644 index 77785f544..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2427.pgm b/examples/autotiler/Mnist/test_img/3/2427.pgm deleted file mode 100644 index 7fa4228ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2431.pgm b/examples/autotiler/Mnist/test_img/3/2431.pgm deleted file mode 100644 index e6e8ddda2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2441.pgm b/examples/autotiler/Mnist/test_img/3/2441.pgm deleted file mode 100644 index f69709b8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/245.pgm b/examples/autotiler/Mnist/test_img/3/245.pgm deleted file mode 100644 index cf89d7488..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2450.pgm b/examples/autotiler/Mnist/test_img/3/2450.pgm deleted file mode 100644 index b72bfb30e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2453.pgm b/examples/autotiler/Mnist/test_img/3/2453.pgm deleted file mode 100644 index a3b1522ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2501.pgm b/examples/autotiler/Mnist/test_img/3/2501.pgm deleted file mode 100644 index d60c4b268..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2502.pgm b/examples/autotiler/Mnist/test_img/3/2502.pgm deleted file mode 100644 index c96e71bcc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2511.pgm b/examples/autotiler/Mnist/test_img/3/2511.pgm deleted file mode 100644 index aea15eaf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2522.pgm b/examples/autotiler/Mnist/test_img/3/2522.pgm deleted file mode 100644 index 940d67663..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2533.pgm b/examples/autotiler/Mnist/test_img/3/2533.pgm deleted file mode 100644 index 25e775fad..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2534.pgm b/examples/autotiler/Mnist/test_img/3/2534.pgm deleted file mode 100644 index f47e8f298..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2549.pgm b/examples/autotiler/Mnist/test_img/3/2549.pgm deleted file mode 100644 index 8d13e17e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2551.pgm b/examples/autotiler/Mnist/test_img/3/2551.pgm deleted file mode 100644 index fc90bec43..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2555.pgm b/examples/autotiler/Mnist/test_img/3/2555.pgm deleted file mode 100644 index b877aa7c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2560.pgm b/examples/autotiler/Mnist/test_img/3/2560.pgm deleted file mode 100644 index 5e465eb29..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2566.pgm b/examples/autotiler/Mnist/test_img/3/2566.pgm deleted file mode 100644 index eadd607e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2575.pgm b/examples/autotiler/Mnist/test_img/3/2575.pgm deleted file mode 100644 index 3a6578e85..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2583.pgm b/examples/autotiler/Mnist/test_img/3/2583.pgm deleted file mode 100644 index f8c8c169f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2587.pgm b/examples/autotiler/Mnist/test_img/3/2587.pgm deleted file mode 100644 index 5af5ea470..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2594.pgm b/examples/autotiler/Mnist/test_img/3/2594.pgm deleted file mode 100644 index 4e6553aff..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2618.pgm b/examples/autotiler/Mnist/test_img/3/2618.pgm deleted file mode 100644 index 753ffcfdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2623.pgm b/examples/autotiler/Mnist/test_img/3/2623.pgm deleted file mode 100644 index d89659c62..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2624.pgm b/examples/autotiler/Mnist/test_img/3/2624.pgm deleted file mode 100644 index 76b794445..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2629.pgm b/examples/autotiler/Mnist/test_img/3/2629.pgm deleted file mode 100644 index de1cb2aa5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2632.pgm b/examples/autotiler/Mnist/test_img/3/2632.pgm deleted file mode 100644 index 22a859979..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2634.pgm b/examples/autotiler/Mnist/test_img/3/2634.pgm deleted file mode 100644 index 616c95202..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2639.pgm b/examples/autotiler/Mnist/test_img/3/2639.pgm deleted file mode 100644 index 9e628e862..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2647.pgm b/examples/autotiler/Mnist/test_img/3/2647.pgm deleted file mode 100644 index 9d9e9cc37..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2663.pgm b/examples/autotiler/Mnist/test_img/3/2663.pgm deleted file mode 100644 index 9f68f9568..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2681.pgm b/examples/autotiler/Mnist/test_img/3/2681.pgm deleted file mode 100644 index 7a9176ecc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2684.pgm b/examples/autotiler/Mnist/test_img/3/2684.pgm deleted file mode 100644 index be53906fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2690.pgm b/examples/autotiler/Mnist/test_img/3/2690.pgm deleted file mode 100644 index c839176b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/270.pgm b/examples/autotiler/Mnist/test_img/3/270.pgm deleted file mode 100644 index 66c606e3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2712.pgm b/examples/autotiler/Mnist/test_img/3/2712.pgm deleted file mode 100644 index 09056ca34..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2716.pgm b/examples/autotiler/Mnist/test_img/3/2716.pgm deleted file mode 100644 index 021cb3f7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2723.pgm b/examples/autotiler/Mnist/test_img/3/2723.pgm deleted file mode 100644 index e6a4a8941..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2731.pgm b/examples/autotiler/Mnist/test_img/3/2731.pgm deleted file mode 100644 index 393498535..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2745.pgm b/examples/autotiler/Mnist/test_img/3/2745.pgm deleted file mode 100644 index 20c7d6a83..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2756.pgm b/examples/autotiler/Mnist/test_img/3/2756.pgm deleted file mode 100644 index 0cdde6b65..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2767.pgm b/examples/autotiler/Mnist/test_img/3/2767.pgm deleted file mode 100644 index c9a904501..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2770.pgm b/examples/autotiler/Mnist/test_img/3/2770.pgm deleted file mode 100644 index 1996c950b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2776.pgm b/examples/autotiler/Mnist/test_img/3/2776.pgm deleted file mode 100644 index b38e65ad2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2785.pgm b/examples/autotiler/Mnist/test_img/3/2785.pgm deleted file mode 100644 index 4348f60f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2799.pgm b/examples/autotiler/Mnist/test_img/3/2799.pgm deleted file mode 100644 index 32174a36c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2807.pgm b/examples/autotiler/Mnist/test_img/3/2807.pgm deleted file mode 100644 index b9b421ae7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2813.pgm b/examples/autotiler/Mnist/test_img/3/2813.pgm deleted file mode 100644 index ecb788017..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2840.pgm b/examples/autotiler/Mnist/test_img/3/2840.pgm deleted file mode 100644 index 65a860c32..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2853.pgm b/examples/autotiler/Mnist/test_img/3/2853.pgm deleted file mode 100644 index 7b2c7d0ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2865.pgm b/examples/autotiler/Mnist/test_img/3/2865.pgm deleted file mode 100644 index adccbddae..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2871.pgm b/examples/autotiler/Mnist/test_img/3/2871.pgm deleted file mode 100644 index 564f1c01b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2881.pgm b/examples/autotiler/Mnist/test_img/3/2881.pgm deleted file mode 100644 index 8e145dc2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2884.pgm b/examples/autotiler/Mnist/test_img/3/2884.pgm deleted file mode 100644 index 9c47e64cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2893.pgm b/examples/autotiler/Mnist/test_img/3/2893.pgm deleted file mode 100644 index 103e1b44a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2906.pgm b/examples/autotiler/Mnist/test_img/3/2906.pgm deleted file mode 100644 index c26bd4ef5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2914.pgm b/examples/autotiler/Mnist/test_img/3/2914.pgm deleted file mode 100644 index 1b72e9c3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2921.pgm b/examples/autotiler/Mnist/test_img/3/2921.pgm deleted file mode 100644 index 1a49c8cd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2924.pgm b/examples/autotiler/Mnist/test_img/3/2924.pgm deleted file mode 100644 index 028aea963..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2927.pgm b/examples/autotiler/Mnist/test_img/3/2927.pgm deleted file mode 100644 index 191e654ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2931.pgm b/examples/autotiler/Mnist/test_img/3/2931.pgm deleted file mode 100644 index 7fe45fb31..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2945.pgm b/examples/autotiler/Mnist/test_img/3/2945.pgm deleted file mode 100644 index 62cd8b977..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2952.pgm b/examples/autotiler/Mnist/test_img/3/2952.pgm deleted file mode 100644 index a054be33f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2953.pgm b/examples/autotiler/Mnist/test_img/3/2953.pgm deleted file mode 100644 index ac5050588..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2955.pgm b/examples/autotiler/Mnist/test_img/3/2955.pgm deleted file mode 100644 index fd3fa587c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2978.pgm b/examples/autotiler/Mnist/test_img/3/2978.pgm deleted file mode 100644 index 46ca63d52..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2985.pgm b/examples/autotiler/Mnist/test_img/3/2985.pgm deleted file mode 100644 index 7443bdbeb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2989.pgm b/examples/autotiler/Mnist/test_img/3/2989.pgm deleted file mode 100644 index 0f3435674..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2991.pgm b/examples/autotiler/Mnist/test_img/3/2991.pgm deleted file mode 100644 index ad4b0aded..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/2992.pgm b/examples/autotiler/Mnist/test_img/3/2992.pgm deleted file mode 100644 index d6010424a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/2992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/30.pgm b/examples/autotiler/Mnist/test_img/3/30.pgm deleted file mode 100644 index dbf6f3c37..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/30.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3010.pgm b/examples/autotiler/Mnist/test_img/3/3010.pgm deleted file mode 100644 index 229818f4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3015.pgm b/examples/autotiler/Mnist/test_img/3/3015.pgm deleted file mode 100644 index a345f090d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3045.pgm b/examples/autotiler/Mnist/test_img/3/3045.pgm deleted file mode 100644 index fb75a4775..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3049.pgm b/examples/autotiler/Mnist/test_img/3/3049.pgm deleted file mode 100644 index 050b9345b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3074.pgm b/examples/autotiler/Mnist/test_img/3/3074.pgm deleted file mode 100644 index cabb8b6e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3078.pgm b/examples/autotiler/Mnist/test_img/3/3078.pgm deleted file mode 100644 index 5edccb893..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3080.pgm b/examples/autotiler/Mnist/test_img/3/3080.pgm deleted file mode 100644 index 7999853d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3082.pgm b/examples/autotiler/Mnist/test_img/3/3082.pgm deleted file mode 100644 index 09909cde5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3083.pgm b/examples/autotiler/Mnist/test_img/3/3083.pgm deleted file mode 100644 index 8d70edfb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3085.pgm b/examples/autotiler/Mnist/test_img/3/3085.pgm deleted file mode 100644 index eb11f3f9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/309.pgm b/examples/autotiler/Mnist/test_img/3/309.pgm deleted file mode 100644 index 9017ec094..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3094.pgm b/examples/autotiler/Mnist/test_img/3/3094.pgm deleted file mode 100644 index 40d4e1ba3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/310.pgm b/examples/autotiler/Mnist/test_img/3/310.pgm deleted file mode 100644 index 74d90a87c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3104.pgm b/examples/autotiler/Mnist/test_img/3/3104.pgm deleted file mode 100644 index 8fd7198f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3108.pgm b/examples/autotiler/Mnist/test_img/3/3108.pgm deleted file mode 100644 index 87b6f34de..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3110.pgm b/examples/autotiler/Mnist/test_img/3/3110.pgm deleted file mode 100644 index cebbc4694..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3120.pgm b/examples/autotiler/Mnist/test_img/3/3120.pgm deleted file mode 100644 index 2e7e2278d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3129.pgm b/examples/autotiler/Mnist/test_img/3/3129.pgm deleted file mode 100644 index f48721f24..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/313.pgm b/examples/autotiler/Mnist/test_img/3/313.pgm deleted file mode 100644 index 10b6f23df..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3131.pgm b/examples/autotiler/Mnist/test_img/3/3131.pgm deleted file mode 100644 index cd2fcdfe1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3138.pgm b/examples/autotiler/Mnist/test_img/3/3138.pgm deleted file mode 100644 index 9b725b989..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3146.pgm b/examples/autotiler/Mnist/test_img/3/3146.pgm deleted file mode 100644 index 75395b864..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3150.pgm b/examples/autotiler/Mnist/test_img/3/3150.pgm deleted file mode 100644 index e662661df..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3167.pgm b/examples/autotiler/Mnist/test_img/3/3167.pgm deleted file mode 100644 index ae6e5623f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3177.pgm b/examples/autotiler/Mnist/test_img/3/3177.pgm deleted file mode 100644 index 9f6882cdd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3193.pgm b/examples/autotiler/Mnist/test_img/3/3193.pgm deleted file mode 100644 index 341370f70..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/32.pgm b/examples/autotiler/Mnist/test_img/3/32.pgm deleted file mode 100644 index c1b4fa062..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/32.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3217.pgm b/examples/autotiler/Mnist/test_img/3/3217.pgm deleted file mode 100644 index 926fec872..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3221.pgm b/examples/autotiler/Mnist/test_img/3/3221.pgm deleted file mode 100644 index 55fc8f69b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/323.pgm b/examples/autotiler/Mnist/test_img/3/323.pgm deleted file mode 100644 index 53c7f7b1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3248.pgm b/examples/autotiler/Mnist/test_img/3/3248.pgm deleted file mode 100644 index a51202d98..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3261.pgm b/examples/autotiler/Mnist/test_img/3/3261.pgm deleted file mode 100644 index 639b366ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3283.pgm b/examples/autotiler/Mnist/test_img/3/3283.pgm deleted file mode 100644 index ad16d3ecb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3285.pgm b/examples/autotiler/Mnist/test_img/3/3285.pgm deleted file mode 100644 index 7ad15a985..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3290.pgm b/examples/autotiler/Mnist/test_img/3/3290.pgm deleted file mode 100644 index 511f9bb71..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3299.pgm b/examples/autotiler/Mnist/test_img/3/3299.pgm deleted file mode 100644 index 47a458a0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3300.pgm b/examples/autotiler/Mnist/test_img/3/3300.pgm deleted file mode 100644 index 407357f92..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3326.pgm b/examples/autotiler/Mnist/test_img/3/3326.pgm deleted file mode 100644 index 92933d61e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/334.pgm b/examples/autotiler/Mnist/test_img/3/334.pgm deleted file mode 100644 index aeb246ceb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/335.pgm b/examples/autotiler/Mnist/test_img/3/335.pgm deleted file mode 100644 index 4718156b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3363.pgm b/examples/autotiler/Mnist/test_img/3/3363.pgm deleted file mode 100644 index 31052942a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3381.pgm b/examples/autotiler/Mnist/test_img/3/3381.pgm deleted file mode 100644 index a09c7226d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3390.pgm b/examples/autotiler/Mnist/test_img/3/3390.pgm deleted file mode 100644 index edc18d1c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3407.pgm b/examples/autotiler/Mnist/test_img/3/3407.pgm deleted file mode 100644 index 37c631f42..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3409.pgm b/examples/autotiler/Mnist/test_img/3/3409.pgm deleted file mode 100644 index b326b39a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/343.pgm b/examples/autotiler/Mnist/test_img/3/343.pgm deleted file mode 100644 index 3df4b88c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3432.pgm b/examples/autotiler/Mnist/test_img/3/3432.pgm deleted file mode 100644 index 33bf10df1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3443.pgm b/examples/autotiler/Mnist/test_img/3/3443.pgm deleted file mode 100644 index 4d0d6e979..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3448.pgm b/examples/autotiler/Mnist/test_img/3/3448.pgm deleted file mode 100644 index db957bccd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3449.pgm b/examples/autotiler/Mnist/test_img/3/3449.pgm deleted file mode 100644 index 69942c802..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3456.pgm b/examples/autotiler/Mnist/test_img/3/3456.pgm deleted file mode 100644 index b0796656d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3469.pgm b/examples/autotiler/Mnist/test_img/3/3469.pgm deleted file mode 100644 index 5e99a582e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3475.pgm b/examples/autotiler/Mnist/test_img/3/3475.pgm deleted file mode 100644 index 41d598cac..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3476.pgm b/examples/autotiler/Mnist/test_img/3/3476.pgm deleted file mode 100644 index 35b60bea8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3484.pgm b/examples/autotiler/Mnist/test_img/3/3484.pgm deleted file mode 100644 index 5b7a1988b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3486.pgm b/examples/autotiler/Mnist/test_img/3/3486.pgm deleted file mode 100644 index c1c0987b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3487.pgm b/examples/autotiler/Mnist/test_img/3/3487.pgm deleted file mode 100644 index 96bd296e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/349.pgm b/examples/autotiler/Mnist/test_img/3/349.pgm deleted file mode 100644 index db6a34d10..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3493.pgm b/examples/autotiler/Mnist/test_img/3/3493.pgm deleted file mode 100644 index 90d6bbdbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3515.pgm b/examples/autotiler/Mnist/test_img/3/3515.pgm deleted file mode 100644 index 63082981e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3527.pgm b/examples/autotiler/Mnist/test_img/3/3527.pgm deleted file mode 100644 index 6e3c50eb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3528.pgm b/examples/autotiler/Mnist/test_img/3/3528.pgm deleted file mode 100644 index 29438877d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3531.pgm b/examples/autotiler/Mnist/test_img/3/3531.pgm deleted file mode 100644 index fd837f549..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3548.pgm b/examples/autotiler/Mnist/test_img/3/3548.pgm deleted file mode 100644 index 01b6b87d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3549.pgm b/examples/autotiler/Mnist/test_img/3/3549.pgm deleted file mode 100644 index 69b29b4d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3579.pgm b/examples/autotiler/Mnist/test_img/3/3579.pgm deleted file mode 100644 index ac603d999..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3620.pgm b/examples/autotiler/Mnist/test_img/3/3620.pgm deleted file mode 100644 index 20364a866..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3630.pgm b/examples/autotiler/Mnist/test_img/3/3630.pgm deleted file mode 100644 index a8401cc56..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3642.pgm b/examples/autotiler/Mnist/test_img/3/3642.pgm deleted file mode 100644 index 4bce0833a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3659.pgm b/examples/autotiler/Mnist/test_img/3/3659.pgm deleted file mode 100644 index c260da4b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3670.pgm b/examples/autotiler/Mnist/test_img/3/3670.pgm deleted file mode 100644 index e9b1e99cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3686.pgm b/examples/autotiler/Mnist/test_img/3/3686.pgm deleted file mode 100644 index fd8dcfbd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/369.pgm b/examples/autotiler/Mnist/test_img/3/369.pgm deleted file mode 100644 index f5f8c6893..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3701.pgm b/examples/autotiler/Mnist/test_img/3/3701.pgm deleted file mode 100644 index bd1b4186d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3715.pgm b/examples/autotiler/Mnist/test_img/3/3715.pgm deleted file mode 100644 index 65ba3bb29..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3717.pgm b/examples/autotiler/Mnist/test_img/3/3717.pgm deleted file mode 100644 index 99c0466a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3738.pgm b/examples/autotiler/Mnist/test_img/3/3738.pgm deleted file mode 100644 index b450de1c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3739.pgm b/examples/autotiler/Mnist/test_img/3/3739.pgm deleted file mode 100644 index 018dea748..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3740.pgm b/examples/autotiler/Mnist/test_img/3/3740.pgm deleted file mode 100644 index f4299ff9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3742.pgm b/examples/autotiler/Mnist/test_img/3/3742.pgm deleted file mode 100644 index 52ab1e4a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3746.pgm b/examples/autotiler/Mnist/test_img/3/3746.pgm deleted file mode 100644 index 55fafb57f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3766.pgm b/examples/autotiler/Mnist/test_img/3/3766.pgm deleted file mode 100644 index 52ebee161..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3769.pgm b/examples/autotiler/Mnist/test_img/3/3769.pgm deleted file mode 100644 index b52ae35df..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3787.pgm b/examples/autotiler/Mnist/test_img/3/3787.pgm deleted file mode 100644 index 12dacb8d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3795.pgm b/examples/autotiler/Mnist/test_img/3/3795.pgm deleted file mode 100644 index 3c7febadd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/381.pgm b/examples/autotiler/Mnist/test_img/3/381.pgm deleted file mode 100644 index 76d43ea09..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3812.pgm b/examples/autotiler/Mnist/test_img/3/3812.pgm deleted file mode 100644 index ff5dbebd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/382.pgm b/examples/autotiler/Mnist/test_img/3/382.pgm deleted file mode 100644 index 9bf94c6c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3824.pgm b/examples/autotiler/Mnist/test_img/3/3824.pgm deleted file mode 100644 index aaec61496..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3825.pgm b/examples/autotiler/Mnist/test_img/3/3825.pgm deleted file mode 100644 index 532938221..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3834.pgm b/examples/autotiler/Mnist/test_img/3/3834.pgm deleted file mode 100644 index cc2724b5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3896.pgm b/examples/autotiler/Mnist/test_img/3/3896.pgm deleted file mode 100644 index 369db8a2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3897.pgm b/examples/autotiler/Mnist/test_img/3/3897.pgm deleted file mode 100644 index cf4ee81ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3910.pgm b/examples/autotiler/Mnist/test_img/3/3910.pgm deleted file mode 100644 index 5f04ad2c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3916.pgm b/examples/autotiler/Mnist/test_img/3/3916.pgm deleted file mode 100644 index 64d7e6e9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3943.pgm b/examples/autotiler/Mnist/test_img/3/3943.pgm deleted file mode 100644 index d56021a38..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3944.pgm b/examples/autotiler/Mnist/test_img/3/3944.pgm deleted file mode 100644 index a69d5ea8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3947.pgm b/examples/autotiler/Mnist/test_img/3/3947.pgm deleted file mode 100644 index 4b4fb90e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3953.pgm b/examples/autotiler/Mnist/test_img/3/3953.pgm deleted file mode 100644 index 6d3ee0d77..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3962.pgm b/examples/autotiler/Mnist/test_img/3/3962.pgm deleted file mode 100644 index 1885c2903..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3965.pgm b/examples/autotiler/Mnist/test_img/3/3965.pgm deleted file mode 100644 index c334fd915..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3975.pgm b/examples/autotiler/Mnist/test_img/3/3975.pgm deleted file mode 100644 index 24deb967e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3977.pgm b/examples/autotiler/Mnist/test_img/3/3977.pgm deleted file mode 100644 index 333461e10..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/3995.pgm b/examples/autotiler/Mnist/test_img/3/3995.pgm deleted file mode 100644 index 67d0d3a38..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/3995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4002.pgm b/examples/autotiler/Mnist/test_img/3/4002.pgm deleted file mode 100644 index 3e88746ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4004.pgm b/examples/autotiler/Mnist/test_img/3/4004.pgm deleted file mode 100644 index 90862e0a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4018.pgm b/examples/autotiler/Mnist/test_img/3/4018.pgm deleted file mode 100644 index c896032b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/402.pgm b/examples/autotiler/Mnist/test_img/3/402.pgm deleted file mode 100644 index 4999403e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4026.pgm b/examples/autotiler/Mnist/test_img/3/4026.pgm deleted file mode 100644 index aed22dd61..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4044.pgm b/examples/autotiler/Mnist/test_img/3/4044.pgm deleted file mode 100644 index 43c50e934..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/408.pgm b/examples/autotiler/Mnist/test_img/3/408.pgm deleted file mode 100644 index 97dca9ea4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4084.pgm b/examples/autotiler/Mnist/test_img/3/4084.pgm deleted file mode 100644 index 5cd746ff4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4087.pgm b/examples/autotiler/Mnist/test_img/3/4087.pgm deleted file mode 100644 index 139c44d5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4097.pgm b/examples/autotiler/Mnist/test_img/3/4097.pgm deleted file mode 100644 index f36f7a8fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4106.pgm b/examples/autotiler/Mnist/test_img/3/4106.pgm deleted file mode 100644 index 001266b04..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4109.pgm b/examples/autotiler/Mnist/test_img/3/4109.pgm deleted file mode 100644 index fcfa25115..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4120.pgm b/examples/autotiler/Mnist/test_img/3/4120.pgm deleted file mode 100644 index de2e870ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4128.pgm b/examples/autotiler/Mnist/test_img/3/4128.pgm deleted file mode 100644 index baf3080cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4162.pgm b/examples/autotiler/Mnist/test_img/3/4162.pgm deleted file mode 100644 index d72de6959..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4164.pgm b/examples/autotiler/Mnist/test_img/3/4164.pgm deleted file mode 100644 index 9e56a10f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4220.pgm b/examples/autotiler/Mnist/test_img/3/4220.pgm deleted file mode 100644 index b567a6425..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4222.pgm b/examples/autotiler/Mnist/test_img/3/4222.pgm deleted file mode 100644 index 1bce46ca0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4234.pgm b/examples/autotiler/Mnist/test_img/3/4234.pgm deleted file mode 100644 index 70290975c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4242.pgm b/examples/autotiler/Mnist/test_img/3/4242.pgm deleted file mode 100644 index 849347e9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4244.pgm b/examples/autotiler/Mnist/test_img/3/4244.pgm deleted file mode 100644 index 0c2c665ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4256.pgm b/examples/autotiler/Mnist/test_img/3/4256.pgm deleted file mode 100644 index 781bd8d4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4270.pgm b/examples/autotiler/Mnist/test_img/3/4270.pgm deleted file mode 100644 index 1335cd9f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4276.pgm b/examples/autotiler/Mnist/test_img/3/4276.pgm deleted file mode 100644 index 8343661cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4277.pgm b/examples/autotiler/Mnist/test_img/3/4277.pgm deleted file mode 100644 index 724cf9d88..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4288.pgm b/examples/autotiler/Mnist/test_img/3/4288.pgm deleted file mode 100644 index 1df95bc76..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4306.pgm b/examples/autotiler/Mnist/test_img/3/4306.pgm deleted file mode 100644 index ac0a2b1ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4311.pgm b/examples/autotiler/Mnist/test_img/3/4311.pgm deleted file mode 100644 index 2ef91218d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4317.pgm b/examples/autotiler/Mnist/test_img/3/4317.pgm deleted file mode 100644 index 3a295aca1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4334.pgm b/examples/autotiler/Mnist/test_img/3/4334.pgm deleted file mode 100644 index fc2ad1b76..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4335.pgm b/examples/autotiler/Mnist/test_img/3/4335.pgm deleted file mode 100644 index 22929df6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4352.pgm b/examples/autotiler/Mnist/test_img/3/4352.pgm deleted file mode 100644 index 24a1a5c3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4366.pgm b/examples/autotiler/Mnist/test_img/3/4366.pgm deleted file mode 100644 index 75fa3390d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/437.pgm b/examples/autotiler/Mnist/test_img/3/437.pgm deleted file mode 100644 index 7ed86fc61..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4393.pgm b/examples/autotiler/Mnist/test_img/3/4393.pgm deleted file mode 100644 index defa1cab6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4397.pgm b/examples/autotiler/Mnist/test_img/3/4397.pgm deleted file mode 100644 index fc9e5c761..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/44.pgm b/examples/autotiler/Mnist/test_img/3/44.pgm deleted file mode 100644 index bacd063b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/44.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4406.pgm b/examples/autotiler/Mnist/test_img/3/4406.pgm deleted file mode 100644 index ca5e00830..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/442.pgm b/examples/autotiler/Mnist/test_img/3/442.pgm deleted file mode 100644 index dc51117d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4430.pgm b/examples/autotiler/Mnist/test_img/3/4430.pgm deleted file mode 100644 index f246b1fce..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4435.pgm b/examples/autotiler/Mnist/test_img/3/4435.pgm deleted file mode 100644 index 635b566fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4437.pgm b/examples/autotiler/Mnist/test_img/3/4437.pgm deleted file mode 100644 index b7f3bce02..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4443.pgm b/examples/autotiler/Mnist/test_img/3/4443.pgm deleted file mode 100644 index bc509444b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4469.pgm b/examples/autotiler/Mnist/test_img/3/4469.pgm deleted file mode 100644 index ff7f11b7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/449.pgm b/examples/autotiler/Mnist/test_img/3/449.pgm deleted file mode 100644 index 2a311623b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4492.pgm b/examples/autotiler/Mnist/test_img/3/4492.pgm deleted file mode 100644 index d8dee658f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4494.pgm b/examples/autotiler/Mnist/test_img/3/4494.pgm deleted file mode 100644 index cc1b8d192..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/450.pgm b/examples/autotiler/Mnist/test_img/3/450.pgm deleted file mode 100644 index 41a245f1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4501.pgm b/examples/autotiler/Mnist/test_img/3/4501.pgm deleted file mode 100644 index 11d346c54..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4509.pgm b/examples/autotiler/Mnist/test_img/3/4509.pgm deleted file mode 100644 index 6902b13d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/451.pgm b/examples/autotiler/Mnist/test_img/3/451.pgm deleted file mode 100644 index 0bfa82f48..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4526.pgm b/examples/autotiler/Mnist/test_img/3/4526.pgm deleted file mode 100644 index 7ce90a1e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4528.pgm b/examples/autotiler/Mnist/test_img/3/4528.pgm deleted file mode 100644 index 1498efcc5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/453.pgm b/examples/autotiler/Mnist/test_img/3/453.pgm deleted file mode 100644 index b71391275..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4532.pgm b/examples/autotiler/Mnist/test_img/3/4532.pgm deleted file mode 100644 index 2e069bf10..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4535.pgm b/examples/autotiler/Mnist/test_img/3/4535.pgm deleted file mode 100644 index 125b3273c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4537.pgm b/examples/autotiler/Mnist/test_img/3/4537.pgm deleted file mode 100644 index 6a5538f48..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4541.pgm b/examples/autotiler/Mnist/test_img/3/4541.pgm deleted file mode 100644 index cf81ff3cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4552.pgm b/examples/autotiler/Mnist/test_img/3/4552.pgm deleted file mode 100644 index 90d094fab..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4581.pgm b/examples/autotiler/Mnist/test_img/3/4581.pgm deleted file mode 100644 index 149dcd83b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4586.pgm b/examples/autotiler/Mnist/test_img/3/4586.pgm deleted file mode 100644 index 68109f51d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4600.pgm b/examples/autotiler/Mnist/test_img/3/4600.pgm deleted file mode 100644 index 03a9153a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4605.pgm b/examples/autotiler/Mnist/test_img/3/4605.pgm deleted file mode 100644 index 6e5c4eccd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4613.pgm b/examples/autotiler/Mnist/test_img/3/4613.pgm deleted file mode 100644 index 2e3c88f06..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4621.pgm b/examples/autotiler/Mnist/test_img/3/4621.pgm deleted file mode 100644 index cdf735329..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4630.pgm b/examples/autotiler/Mnist/test_img/3/4630.pgm deleted file mode 100644 index 59109c253..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4635.pgm b/examples/autotiler/Mnist/test_img/3/4635.pgm deleted file mode 100644 index dc6bee16e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4638.pgm b/examples/autotiler/Mnist/test_img/3/4638.pgm deleted file mode 100644 index e97ab33ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/464.pgm b/examples/autotiler/Mnist/test_img/3/464.pgm deleted file mode 100644 index b983dd7fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4647.pgm b/examples/autotiler/Mnist/test_img/3/4647.pgm deleted file mode 100644 index 06dd571c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4657.pgm b/examples/autotiler/Mnist/test_img/3/4657.pgm deleted file mode 100644 index b0fd3ac36..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4664.pgm b/examples/autotiler/Mnist/test_img/3/4664.pgm deleted file mode 100644 index 8acf14a67..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4688.pgm b/examples/autotiler/Mnist/test_img/3/4688.pgm deleted file mode 100644 index 79704cb81..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4703.pgm b/examples/autotiler/Mnist/test_img/3/4703.pgm deleted file mode 100644 index 512d1d912..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4714.pgm b/examples/autotiler/Mnist/test_img/3/4714.pgm deleted file mode 100644 index 5e7ee038d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4727.pgm b/examples/autotiler/Mnist/test_img/3/4727.pgm deleted file mode 100644 index 82aad50ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4740.pgm b/examples/autotiler/Mnist/test_img/3/4740.pgm deleted file mode 100644 index d5d142734..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4755.pgm b/examples/autotiler/Mnist/test_img/3/4755.pgm deleted file mode 100644 index 29d324fef..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4758.pgm b/examples/autotiler/Mnist/test_img/3/4758.pgm deleted file mode 100644 index 7a80e8f76..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4770.pgm b/examples/autotiler/Mnist/test_img/3/4770.pgm deleted file mode 100644 index 1be2a2ec5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4782.pgm b/examples/autotiler/Mnist/test_img/3/4782.pgm deleted file mode 100644 index f99bc5932..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4785.pgm b/examples/autotiler/Mnist/test_img/3/4785.pgm deleted file mode 100644 index c07e823c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4796.pgm b/examples/autotiler/Mnist/test_img/3/4796.pgm deleted file mode 100644 index 845bc5e59..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4802.pgm b/examples/autotiler/Mnist/test_img/3/4802.pgm deleted file mode 100644 index fcc63c5db..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4808.pgm b/examples/autotiler/Mnist/test_img/3/4808.pgm deleted file mode 100644 index 1e27fb0d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4818.pgm b/examples/autotiler/Mnist/test_img/3/4818.pgm deleted file mode 100644 index fd9104bcb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4833.pgm b/examples/autotiler/Mnist/test_img/3/4833.pgm deleted file mode 100644 index 493769443..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4836.pgm b/examples/autotiler/Mnist/test_img/3/4836.pgm deleted file mode 100644 index 81a288d47..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4841.pgm b/examples/autotiler/Mnist/test_img/3/4841.pgm deleted file mode 100644 index 2bafb5bb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4854.pgm b/examples/autotiler/Mnist/test_img/3/4854.pgm deleted file mode 100644 index 752a9db84..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4873.pgm b/examples/autotiler/Mnist/test_img/3/4873.pgm deleted file mode 100644 index 00ff9fc1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4885.pgm b/examples/autotiler/Mnist/test_img/3/4885.pgm deleted file mode 100644 index ff9b60e75..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4894.pgm b/examples/autotiler/Mnist/test_img/3/4894.pgm deleted file mode 100644 index c6f8fbd3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4904.pgm b/examples/autotiler/Mnist/test_img/3/4904.pgm deleted file mode 100644 index 2b1d2bd18..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4907.pgm b/examples/autotiler/Mnist/test_img/3/4907.pgm deleted file mode 100644 index 67c30b131..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4925.pgm b/examples/autotiler/Mnist/test_img/3/4925.pgm deleted file mode 100644 index 85160fca7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4928.pgm b/examples/autotiler/Mnist/test_img/3/4928.pgm deleted file mode 100644 index 2bfd53f84..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/493.pgm b/examples/autotiler/Mnist/test_img/3/493.pgm deleted file mode 100644 index 71ed979ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4940.pgm b/examples/autotiler/Mnist/test_img/3/4940.pgm deleted file mode 100644 index a6f9fdf18..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4973.pgm b/examples/autotiler/Mnist/test_img/3/4973.pgm deleted file mode 100644 index 76c9d639f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4983.pgm b/examples/autotiler/Mnist/test_img/3/4983.pgm deleted file mode 100644 index b10a17548..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4990.pgm b/examples/autotiler/Mnist/test_img/3/4990.pgm deleted file mode 100644 index 92c35fa52..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/4996.pgm b/examples/autotiler/Mnist/test_img/3/4996.pgm deleted file mode 100644 index 4e9b03ca1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/4996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/500.pgm b/examples/autotiler/Mnist/test_img/3/500.pgm deleted file mode 100644 index 1f5db0458..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5000.pgm b/examples/autotiler/Mnist/test_img/3/5000.pgm deleted file mode 100644 index cb18a55fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5019.pgm b/examples/autotiler/Mnist/test_img/3/5019.pgm deleted file mode 100644 index c54ffd91e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5028.pgm b/examples/autotiler/Mnist/test_img/3/5028.pgm deleted file mode 100644 index 87c2e7cc2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5038.pgm b/examples/autotiler/Mnist/test_img/3/5038.pgm deleted file mode 100644 index c04c6ba35..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5046.pgm b/examples/autotiler/Mnist/test_img/3/5046.pgm deleted file mode 100644 index 1e04e51aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/505.pgm b/examples/autotiler/Mnist/test_img/3/505.pgm deleted file mode 100644 index bd898158a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5054.pgm b/examples/autotiler/Mnist/test_img/3/5054.pgm deleted file mode 100644 index 91bb840a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5062.pgm b/examples/autotiler/Mnist/test_img/3/5062.pgm deleted file mode 100644 index d65becec8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5067.pgm b/examples/autotiler/Mnist/test_img/3/5067.pgm deleted file mode 100644 index 48fbbd7ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/507.pgm b/examples/autotiler/Mnist/test_img/3/507.pgm deleted file mode 100644 index a746184e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5074.pgm b/examples/autotiler/Mnist/test_img/3/5074.pgm deleted file mode 100644 index 0255b1b09..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5078.pgm b/examples/autotiler/Mnist/test_img/3/5078.pgm deleted file mode 100644 index 6ebde1b21..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/51.pgm b/examples/autotiler/Mnist/test_img/3/51.pgm deleted file mode 100644 index 4ed129b23..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/51.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5140.pgm b/examples/autotiler/Mnist/test_img/3/5140.pgm deleted file mode 100644 index 10db37f0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5143.pgm b/examples/autotiler/Mnist/test_img/3/5143.pgm deleted file mode 100644 index 5132119ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5146.pgm b/examples/autotiler/Mnist/test_img/3/5146.pgm deleted file mode 100644 index b76b8efca..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/515.pgm b/examples/autotiler/Mnist/test_img/3/515.pgm deleted file mode 100644 index bd9b30810..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5150.pgm b/examples/autotiler/Mnist/test_img/3/5150.pgm deleted file mode 100644 index 18dcae251..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5158.pgm b/examples/autotiler/Mnist/test_img/3/5158.pgm deleted file mode 100644 index f14515fec..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5168.pgm b/examples/autotiler/Mnist/test_img/3/5168.pgm deleted file mode 100644 index ee03735fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5181.pgm b/examples/autotiler/Mnist/test_img/3/5181.pgm deleted file mode 100644 index 39cf4a8bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5185.pgm b/examples/autotiler/Mnist/test_img/3/5185.pgm deleted file mode 100644 index b3c55993b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5212.pgm b/examples/autotiler/Mnist/test_img/3/5212.pgm deleted file mode 100644 index acaf1b78d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5214.pgm b/examples/autotiler/Mnist/test_img/3/5214.pgm deleted file mode 100644 index 06ae41ba8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5215.pgm b/examples/autotiler/Mnist/test_img/3/5215.pgm deleted file mode 100644 index 2c0161c19..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5224.pgm b/examples/autotiler/Mnist/test_img/3/5224.pgm deleted file mode 100644 index 8334102dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5225.pgm b/examples/autotiler/Mnist/test_img/3/5225.pgm deleted file mode 100644 index c9e891040..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5237.pgm b/examples/autotiler/Mnist/test_img/3/5237.pgm deleted file mode 100644 index 0727200f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/524.pgm b/examples/autotiler/Mnist/test_img/3/524.pgm deleted file mode 100644 index 158e434e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5245.pgm b/examples/autotiler/Mnist/test_img/3/5245.pgm deleted file mode 100644 index 9a5c3130e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5248.pgm b/examples/autotiler/Mnist/test_img/3/5248.pgm deleted file mode 100644 index b1bebf06e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/526.pgm b/examples/autotiler/Mnist/test_img/3/526.pgm deleted file mode 100644 index 9e89848e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5273.pgm b/examples/autotiler/Mnist/test_img/3/5273.pgm deleted file mode 100644 index 407ac5953..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/528.pgm b/examples/autotiler/Mnist/test_img/3/528.pgm deleted file mode 100644 index e6d35d782..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5283.pgm b/examples/autotiler/Mnist/test_img/3/5283.pgm deleted file mode 100644 index 8d588b608..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5293.pgm b/examples/autotiler/Mnist/test_img/3/5293.pgm deleted file mode 100644 index a12fe33ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5309.pgm b/examples/autotiler/Mnist/test_img/3/5309.pgm deleted file mode 100644 index e2d102ab1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/531.pgm b/examples/autotiler/Mnist/test_img/3/531.pgm deleted file mode 100644 index 8f6e0762a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5328.pgm b/examples/autotiler/Mnist/test_img/3/5328.pgm deleted file mode 100644 index f433247ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5329.pgm b/examples/autotiler/Mnist/test_img/3/5329.pgm deleted file mode 100644 index 5986d7b04..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5330.pgm b/examples/autotiler/Mnist/test_img/3/5330.pgm deleted file mode 100644 index 389416e8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5336.pgm b/examples/autotiler/Mnist/test_img/3/5336.pgm deleted file mode 100644 index 8998b1864..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5346.pgm b/examples/autotiler/Mnist/test_img/3/5346.pgm deleted file mode 100644 index 8ad8dbe95..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5356.pgm b/examples/autotiler/Mnist/test_img/3/5356.pgm deleted file mode 100644 index 2a0c6f291..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5358.pgm b/examples/autotiler/Mnist/test_img/3/5358.pgm deleted file mode 100644 index dbe76fec0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5359.pgm b/examples/autotiler/Mnist/test_img/3/5359.pgm deleted file mode 100644 index 34ed44cce..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5382.pgm b/examples/autotiler/Mnist/test_img/3/5382.pgm deleted file mode 100644 index 651e5c42b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5408.pgm b/examples/autotiler/Mnist/test_img/3/5408.pgm deleted file mode 100644 index cac2febc4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5418.pgm b/examples/autotiler/Mnist/test_img/3/5418.pgm deleted file mode 100644 index ce591b058..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5446.pgm b/examples/autotiler/Mnist/test_img/3/5446.pgm deleted file mode 100644 index 8b1cc2baa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5454.pgm b/examples/autotiler/Mnist/test_img/3/5454.pgm deleted file mode 100644 index 2f565618a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5468.pgm b/examples/autotiler/Mnist/test_img/3/5468.pgm deleted file mode 100644 index 7c46b0bd7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5472.pgm b/examples/autotiler/Mnist/test_img/3/5472.pgm deleted file mode 100644 index 9cb6e8c97..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5479.pgm b/examples/autotiler/Mnist/test_img/3/5479.pgm deleted file mode 100644 index d62e6d2ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/548.pgm b/examples/autotiler/Mnist/test_img/3/548.pgm deleted file mode 100644 index dff2e06c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5492.pgm b/examples/autotiler/Mnist/test_img/3/5492.pgm deleted file mode 100644 index cca816f86..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5504.pgm b/examples/autotiler/Mnist/test_img/3/5504.pgm deleted file mode 100644 index d7fda09c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5508.pgm b/examples/autotiler/Mnist/test_img/3/5508.pgm deleted file mode 100644 index 917106c88..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5516.pgm b/examples/autotiler/Mnist/test_img/3/5516.pgm deleted file mode 100644 index b29acc1de..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5538.pgm b/examples/autotiler/Mnist/test_img/3/5538.pgm deleted file mode 100644 index df6bd0239..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5542.pgm b/examples/autotiler/Mnist/test_img/3/5542.pgm deleted file mode 100644 index 59b5de41f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5555.pgm b/examples/autotiler/Mnist/test_img/3/5555.pgm deleted file mode 100644 index 0061c2e60..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5573.pgm b/examples/autotiler/Mnist/test_img/3/5573.pgm deleted file mode 100644 index a4fae6aa1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5583.pgm b/examples/autotiler/Mnist/test_img/3/5583.pgm deleted file mode 100644 index e771b148f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5585.pgm b/examples/autotiler/Mnist/test_img/3/5585.pgm deleted file mode 100644 index d8bd8c486..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5596.pgm b/examples/autotiler/Mnist/test_img/3/5596.pgm deleted file mode 100644 index 68b5b1ac1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5606.pgm b/examples/autotiler/Mnist/test_img/3/5606.pgm deleted file mode 100644 index a7d19e2cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5616.pgm b/examples/autotiler/Mnist/test_img/3/5616.pgm deleted file mode 100644 index 987c5f5ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5623.pgm b/examples/autotiler/Mnist/test_img/3/5623.pgm deleted file mode 100644 index bbc47b719..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5625.pgm b/examples/autotiler/Mnist/test_img/3/5625.pgm deleted file mode 100644 index ef59a4762..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5628.pgm b/examples/autotiler/Mnist/test_img/3/5628.pgm deleted file mode 100644 index 8947306eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5635.pgm b/examples/autotiler/Mnist/test_img/3/5635.pgm deleted file mode 100644 index 84b33007b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5638.pgm b/examples/autotiler/Mnist/test_img/3/5638.pgm deleted file mode 100644 index 3f80c2d60..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5674.pgm b/examples/autotiler/Mnist/test_img/3/5674.pgm deleted file mode 100644 index 01c5158b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5687.pgm b/examples/autotiler/Mnist/test_img/3/5687.pgm deleted file mode 100644 index 143a1a62f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/569.pgm b/examples/autotiler/Mnist/test_img/3/569.pgm deleted file mode 100644 index eb6e394f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5700.pgm b/examples/autotiler/Mnist/test_img/3/5700.pgm deleted file mode 100644 index 2e4cbc603..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5703.pgm b/examples/autotiler/Mnist/test_img/3/5703.pgm deleted file mode 100644 index 1e3bf44e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5708.pgm b/examples/autotiler/Mnist/test_img/3/5708.pgm deleted file mode 100644 index 82dd51352..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5724.pgm b/examples/autotiler/Mnist/test_img/3/5724.pgm deleted file mode 100644 index 65c2410b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/573.pgm b/examples/autotiler/Mnist/test_img/3/573.pgm deleted file mode 100644 index 4b9124577..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5734.pgm b/examples/autotiler/Mnist/test_img/3/5734.pgm deleted file mode 100644 index 97ddd2357..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/574.pgm b/examples/autotiler/Mnist/test_img/3/574.pgm deleted file mode 100644 index 2dd77eade..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5740.pgm b/examples/autotiler/Mnist/test_img/3/5740.pgm deleted file mode 100644 index 4dc8696af..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5747.pgm b/examples/autotiler/Mnist/test_img/3/5747.pgm deleted file mode 100644 index 674988316..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/576.pgm b/examples/autotiler/Mnist/test_img/3/576.pgm deleted file mode 100644 index d60865a4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5760.pgm b/examples/autotiler/Mnist/test_img/3/5760.pgm deleted file mode 100644 index 196e42563..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5764.pgm b/examples/autotiler/Mnist/test_img/3/5764.pgm deleted file mode 100644 index 60edf534f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5766.pgm b/examples/autotiler/Mnist/test_img/3/5766.pgm deleted file mode 100644 index 16a62ad31..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/577.pgm b/examples/autotiler/Mnist/test_img/3/577.pgm deleted file mode 100644 index 5cd2f32eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/578.pgm b/examples/autotiler/Mnist/test_img/3/578.pgm deleted file mode 100644 index 323aefa6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5780.pgm b/examples/autotiler/Mnist/test_img/3/5780.pgm deleted file mode 100644 index fceb8446c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5796.pgm b/examples/autotiler/Mnist/test_img/3/5796.pgm deleted file mode 100644 index 3a1ea4c0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5804.pgm b/examples/autotiler/Mnist/test_img/3/5804.pgm deleted file mode 100644 index dd9947ef8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5814.pgm b/examples/autotiler/Mnist/test_img/3/5814.pgm deleted file mode 100644 index 85ba54d7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5815.pgm b/examples/autotiler/Mnist/test_img/3/5815.pgm deleted file mode 100644 index ac9c2afeb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5824.pgm b/examples/autotiler/Mnist/test_img/3/5824.pgm deleted file mode 100644 index 9c1f9f9e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5841.pgm b/examples/autotiler/Mnist/test_img/3/5841.pgm deleted file mode 100644 index cf62f2179..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5850.pgm b/examples/autotiler/Mnist/test_img/3/5850.pgm deleted file mode 100644 index dba85aaba..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5860.pgm b/examples/autotiler/Mnist/test_img/3/5860.pgm deleted file mode 100644 index 90970a820..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5878.pgm b/examples/autotiler/Mnist/test_img/3/5878.pgm deleted file mode 100644 index 53a8abb7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5882.pgm b/examples/autotiler/Mnist/test_img/3/5882.pgm deleted file mode 100644 index a7d61d608..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5892.pgm b/examples/autotiler/Mnist/test_img/3/5892.pgm deleted file mode 100644 index 9d717fcbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/590.pgm b/examples/autotiler/Mnist/test_img/3/590.pgm deleted file mode 100644 index a5c51746d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5904.pgm b/examples/autotiler/Mnist/test_img/3/5904.pgm deleted file mode 100644 index a819e8fa9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5912.pgm b/examples/autotiler/Mnist/test_img/3/5912.pgm deleted file mode 100644 index b88ccaaa5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5925.pgm b/examples/autotiler/Mnist/test_img/3/5925.pgm deleted file mode 100644 index d602fe098..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5935.pgm b/examples/autotiler/Mnist/test_img/3/5935.pgm deleted file mode 100644 index df29cc7ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5945.pgm b/examples/autotiler/Mnist/test_img/3/5945.pgm deleted file mode 100644 index f99977185..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/595.pgm b/examples/autotiler/Mnist/test_img/3/595.pgm deleted file mode 100644 index a39b29c24..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5955.pgm b/examples/autotiler/Mnist/test_img/3/5955.pgm deleted file mode 100644 index f58fac38b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/5973.pgm b/examples/autotiler/Mnist/test_img/3/5973.pgm deleted file mode 100644 index 4ae6df6a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/5973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6009.pgm b/examples/autotiler/Mnist/test_img/3/6009.pgm deleted file mode 100644 index 11c3692a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6011.pgm b/examples/autotiler/Mnist/test_img/3/6011.pgm deleted file mode 100644 index 278c970fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6023.pgm b/examples/autotiler/Mnist/test_img/3/6023.pgm deleted file mode 100644 index 8cce6ca5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6030.pgm b/examples/autotiler/Mnist/test_img/3/6030.pgm deleted file mode 100644 index 1f83ce060..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6034.pgm b/examples/autotiler/Mnist/test_img/3/6034.pgm deleted file mode 100644 index 269dd278c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6045.pgm b/examples/autotiler/Mnist/test_img/3/6045.pgm deleted file mode 100644 index 5c203e14d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6046.pgm b/examples/autotiler/Mnist/test_img/3/6046.pgm deleted file mode 100644 index 931b4cf7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6059.pgm b/examples/autotiler/Mnist/test_img/3/6059.pgm deleted file mode 100644 index 7b1b581bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6061.pgm b/examples/autotiler/Mnist/test_img/3/6061.pgm deleted file mode 100644 index e07b6ea51..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6065.pgm b/examples/autotiler/Mnist/test_img/3/6065.pgm deleted file mode 100644 index 143cc8731..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6075.pgm b/examples/autotiler/Mnist/test_img/3/6075.pgm deleted file mode 100644 index 6a696b509..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6085.pgm b/examples/autotiler/Mnist/test_img/3/6085.pgm deleted file mode 100644 index 1e336d47b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6096.pgm b/examples/autotiler/Mnist/test_img/3/6096.pgm deleted file mode 100644 index aead23738..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6103.pgm b/examples/autotiler/Mnist/test_img/3/6103.pgm deleted file mode 100644 index 9e3478b13..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6107.pgm b/examples/autotiler/Mnist/test_img/3/6107.pgm deleted file mode 100644 index b407b17ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6116.pgm b/examples/autotiler/Mnist/test_img/3/6116.pgm deleted file mode 100644 index 02aee7b8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6139.pgm b/examples/autotiler/Mnist/test_img/3/6139.pgm deleted file mode 100644 index e2f5c60fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/614.pgm b/examples/autotiler/Mnist/test_img/3/614.pgm deleted file mode 100644 index 3545e0d53..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6151.pgm b/examples/autotiler/Mnist/test_img/3/6151.pgm deleted file mode 100644 index 46dbd28a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6160.pgm b/examples/autotiler/Mnist/test_img/3/6160.pgm deleted file mode 100644 index d5846514c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6174.pgm b/examples/autotiler/Mnist/test_img/3/6174.pgm deleted file mode 100644 index 0cc705b2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6177.pgm b/examples/autotiler/Mnist/test_img/3/6177.pgm deleted file mode 100644 index a69ea8ba8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6184.pgm b/examples/autotiler/Mnist/test_img/3/6184.pgm deleted file mode 100644 index 2dedd3746..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6194.pgm b/examples/autotiler/Mnist/test_img/3/6194.pgm deleted file mode 100644 index 865f43cb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6204.pgm b/examples/autotiler/Mnist/test_img/3/6204.pgm deleted file mode 100644 index 2dd1adb2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6213.pgm b/examples/autotiler/Mnist/test_img/3/6213.pgm deleted file mode 100644 index e368cda21..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6226.pgm b/examples/autotiler/Mnist/test_img/3/6226.pgm deleted file mode 100644 index 402776062..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6255.pgm b/examples/autotiler/Mnist/test_img/3/6255.pgm deleted file mode 100644 index 465c4e7d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6260.pgm b/examples/autotiler/Mnist/test_img/3/6260.pgm deleted file mode 100644 index 43a6c115b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6272.pgm b/examples/autotiler/Mnist/test_img/3/6272.pgm deleted file mode 100644 index 6b8671175..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/628.pgm b/examples/autotiler/Mnist/test_img/3/628.pgm deleted file mode 100644 index bbe11d726..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6285.pgm b/examples/autotiler/Mnist/test_img/3/6285.pgm deleted file mode 100644 index ffde47b5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6289.pgm b/examples/autotiler/Mnist/test_img/3/6289.pgm deleted file mode 100644 index db2cff691..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6290.pgm b/examples/autotiler/Mnist/test_img/3/6290.pgm deleted file mode 100644 index 8c9cfa76f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6299.pgm b/examples/autotiler/Mnist/test_img/3/6299.pgm deleted file mode 100644 index 822447d9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/63.pgm b/examples/autotiler/Mnist/test_img/3/63.pgm deleted file mode 100644 index bab95c20f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/63.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6312.pgm b/examples/autotiler/Mnist/test_img/3/6312.pgm deleted file mode 100644 index bac0cf917..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6322.pgm b/examples/autotiler/Mnist/test_img/3/6322.pgm deleted file mode 100644 index 0283693b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6331.pgm b/examples/autotiler/Mnist/test_img/3/6331.pgm deleted file mode 100644 index f27169d36..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6349.pgm b/examples/autotiler/Mnist/test_img/3/6349.pgm deleted file mode 100644 index fe3f35434..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6365.pgm b/examples/autotiler/Mnist/test_img/3/6365.pgm deleted file mode 100644 index c4848213e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/637.pgm b/examples/autotiler/Mnist/test_img/3/637.pgm deleted file mode 100644 index b1648e9de..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6370.pgm b/examples/autotiler/Mnist/test_img/3/6370.pgm deleted file mode 100644 index 2585e423e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6371.pgm b/examples/autotiler/Mnist/test_img/3/6371.pgm deleted file mode 100644 index b2e9b9a7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6379.pgm b/examples/autotiler/Mnist/test_img/3/6379.pgm deleted file mode 100644 index 35bf0098a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6381.pgm b/examples/autotiler/Mnist/test_img/3/6381.pgm deleted file mode 100644 index 485f8c346..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6382.pgm b/examples/autotiler/Mnist/test_img/3/6382.pgm deleted file mode 100644 index fe742daa2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6389.pgm b/examples/autotiler/Mnist/test_img/3/6389.pgm deleted file mode 100644 index b409d519e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6413.pgm b/examples/autotiler/Mnist/test_img/3/6413.pgm deleted file mode 100644 index 64fe93820..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6421.pgm b/examples/autotiler/Mnist/test_img/3/6421.pgm deleted file mode 100644 index 76ba618b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6432.pgm b/examples/autotiler/Mnist/test_img/3/6432.pgm deleted file mode 100644 index 3e6ae0186..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6440.pgm b/examples/autotiler/Mnist/test_img/3/6440.pgm deleted file mode 100644 index 6be2a90bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6447.pgm b/examples/autotiler/Mnist/test_img/3/6447.pgm deleted file mode 100644 index ca1251534..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6453.pgm b/examples/autotiler/Mnist/test_img/3/6453.pgm deleted file mode 100644 index 20646b413..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6455.pgm b/examples/autotiler/Mnist/test_img/3/6455.pgm deleted file mode 100644 index 11b7aae71..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6465.pgm b/examples/autotiler/Mnist/test_img/3/6465.pgm deleted file mode 100644 index 64a1acebf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/648.pgm b/examples/autotiler/Mnist/test_img/3/648.pgm deleted file mode 100644 index 7ac93c1f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6481.pgm b/examples/autotiler/Mnist/test_img/3/6481.pgm deleted file mode 100644 index 5fd34794e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6494.pgm b/examples/autotiler/Mnist/test_img/3/6494.pgm deleted file mode 100644 index b7aab279b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6501.pgm b/examples/autotiler/Mnist/test_img/3/6501.pgm deleted file mode 100644 index c9300c4fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6504.pgm b/examples/autotiler/Mnist/test_img/3/6504.pgm deleted file mode 100644 index d55fbcc21..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6511.pgm b/examples/autotiler/Mnist/test_img/3/6511.pgm deleted file mode 100644 index c23257313..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6517.pgm b/examples/autotiler/Mnist/test_img/3/6517.pgm deleted file mode 100644 index 624b5bcc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6535.pgm b/examples/autotiler/Mnist/test_img/3/6535.pgm deleted file mode 100644 index ab5d35b93..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6542.pgm b/examples/autotiler/Mnist/test_img/3/6542.pgm deleted file mode 100644 index 188d85bc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6551.pgm b/examples/autotiler/Mnist/test_img/3/6551.pgm deleted file mode 100644 index 8b50b6283..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6563.pgm b/examples/autotiler/Mnist/test_img/3/6563.pgm deleted file mode 100644 index c9815a229..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6564.pgm b/examples/autotiler/Mnist/test_img/3/6564.pgm deleted file mode 100644 index 0b2036cae..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6569.pgm b/examples/autotiler/Mnist/test_img/3/6569.pgm deleted file mode 100644 index 8d4bfd0da..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/657.pgm b/examples/autotiler/Mnist/test_img/3/657.pgm deleted file mode 100644 index e5f0140fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6570.pgm b/examples/autotiler/Mnist/test_img/3/6570.pgm deleted file mode 100644 index a451be5f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6575.pgm b/examples/autotiler/Mnist/test_img/3/6575.pgm deleted file mode 100644 index f50fcb2ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6593.pgm b/examples/autotiler/Mnist/test_img/3/6593.pgm deleted file mode 100644 index b2161d958..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6624.pgm b/examples/autotiler/Mnist/test_img/3/6624.pgm deleted file mode 100644 index c9b158c6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6636.pgm b/examples/autotiler/Mnist/test_img/3/6636.pgm deleted file mode 100644 index 3250cc7e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6646.pgm b/examples/autotiler/Mnist/test_img/3/6646.pgm deleted file mode 100644 index 9f565cf51..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6664.pgm b/examples/autotiler/Mnist/test_img/3/6664.pgm deleted file mode 100644 index d391d9b27..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6665.pgm b/examples/autotiler/Mnist/test_img/3/6665.pgm deleted file mode 100644 index 864a76ea6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6676.pgm b/examples/autotiler/Mnist/test_img/3/6676.pgm deleted file mode 100644 index 2c6612bf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6681.pgm b/examples/autotiler/Mnist/test_img/3/6681.pgm deleted file mode 100644 index ed0781973..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/669.pgm b/examples/autotiler/Mnist/test_img/3/669.pgm deleted file mode 100644 index 5cef82c84..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6690.pgm b/examples/autotiler/Mnist/test_img/3/6690.pgm deleted file mode 100644 index bbf126eec..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6704.pgm b/examples/autotiler/Mnist/test_img/3/6704.pgm deleted file mode 100644 index 8e49efaf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6714.pgm b/examples/autotiler/Mnist/test_img/3/6714.pgm deleted file mode 100644 index 2fa25c2ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6722.pgm b/examples/autotiler/Mnist/test_img/3/6722.pgm deleted file mode 100644 index e047198a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6727.pgm b/examples/autotiler/Mnist/test_img/3/6727.pgm deleted file mode 100644 index 783f45d0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6736.pgm b/examples/autotiler/Mnist/test_img/3/6736.pgm deleted file mode 100644 index 843d265d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6739.pgm b/examples/autotiler/Mnist/test_img/3/6739.pgm deleted file mode 100644 index 978e1a0c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6745.pgm b/examples/autotiler/Mnist/test_img/3/6745.pgm deleted file mode 100644 index c4a078203..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6763.pgm b/examples/autotiler/Mnist/test_img/3/6763.pgm deleted file mode 100644 index 967893132..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6767.pgm b/examples/autotiler/Mnist/test_img/3/6767.pgm deleted file mode 100644 index 6aa1b4c8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/677.pgm b/examples/autotiler/Mnist/test_img/3/677.pgm deleted file mode 100644 index 92aa0ee9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6790.pgm b/examples/autotiler/Mnist/test_img/3/6790.pgm deleted file mode 100644 index c33fa4bf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6794.pgm b/examples/autotiler/Mnist/test_img/3/6794.pgm deleted file mode 100644 index 86f984d48..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/68.pgm b/examples/autotiler/Mnist/test_img/3/68.pgm deleted file mode 100644 index c9caa85fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/68.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6801.pgm b/examples/autotiler/Mnist/test_img/3/6801.pgm deleted file mode 100644 index f1da3f643..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6811.pgm b/examples/autotiler/Mnist/test_img/3/6811.pgm deleted file mode 100644 index a4f1bb5d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6821.pgm b/examples/autotiler/Mnist/test_img/3/6821.pgm deleted file mode 100644 index 19e89cf21..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/683.pgm b/examples/autotiler/Mnist/test_img/3/683.pgm deleted file mode 100644 index 5f796f54d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6840.pgm b/examples/autotiler/Mnist/test_img/3/6840.pgm deleted file mode 100644 index c21e7ecc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6857.pgm b/examples/autotiler/Mnist/test_img/3/6857.pgm deleted file mode 100644 index 4775112e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/686.pgm b/examples/autotiler/Mnist/test_img/3/686.pgm deleted file mode 100644 index 6f87e605a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6862.pgm b/examples/autotiler/Mnist/test_img/3/6862.pgm deleted file mode 100644 index 3c16c4eeb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6863.pgm b/examples/autotiler/Mnist/test_img/3/6863.pgm deleted file mode 100644 index 31e56969d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/687.pgm b/examples/autotiler/Mnist/test_img/3/687.pgm deleted file mode 100644 index 399e14986..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6873.pgm b/examples/autotiler/Mnist/test_img/3/6873.pgm deleted file mode 100644 index bdf84544d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6875.pgm b/examples/autotiler/Mnist/test_img/3/6875.pgm deleted file mode 100644 index e648decb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6876.pgm b/examples/autotiler/Mnist/test_img/3/6876.pgm deleted file mode 100644 index eba1f5102..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6882.pgm b/examples/autotiler/Mnist/test_img/3/6882.pgm deleted file mode 100644 index bcc5667c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6907.pgm b/examples/autotiler/Mnist/test_img/3/6907.pgm deleted file mode 100644 index 37f82c78c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6918.pgm b/examples/autotiler/Mnist/test_img/3/6918.pgm deleted file mode 100644 index e38716eae..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6930.pgm b/examples/autotiler/Mnist/test_img/3/6930.pgm deleted file mode 100644 index 99ad329c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6940.pgm b/examples/autotiler/Mnist/test_img/3/6940.pgm deleted file mode 100644 index 8f98e248f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6950.pgm b/examples/autotiler/Mnist/test_img/3/6950.pgm deleted file mode 100644 index e4bbc5857..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6957.pgm b/examples/autotiler/Mnist/test_img/3/6957.pgm deleted file mode 100644 index 07957baba..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6973.pgm b/examples/autotiler/Mnist/test_img/3/6973.pgm deleted file mode 100644 index ec42fc8b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6975.pgm b/examples/autotiler/Mnist/test_img/3/6975.pgm deleted file mode 100644 index 20a84bfca..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6982.pgm b/examples/autotiler/Mnist/test_img/3/6982.pgm deleted file mode 100644 index a3f256813..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/6985.pgm b/examples/autotiler/Mnist/test_img/3/6985.pgm deleted file mode 100644 index 28a7a0615..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/6985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/699.pgm b/examples/autotiler/Mnist/test_img/3/699.pgm deleted file mode 100644 index e90f33ca0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7006.pgm b/examples/autotiler/Mnist/test_img/3/7006.pgm deleted file mode 100644 index 2585e0503..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7010.pgm b/examples/autotiler/Mnist/test_img/3/7010.pgm deleted file mode 100644 index a91b636f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7024.pgm b/examples/autotiler/Mnist/test_img/3/7024.pgm deleted file mode 100644 index 0b224fbe2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7026.pgm b/examples/autotiler/Mnist/test_img/3/7026.pgm deleted file mode 100644 index ce2d8524a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7040.pgm b/examples/autotiler/Mnist/test_img/3/7040.pgm deleted file mode 100644 index b588a481e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7055.pgm b/examples/autotiler/Mnist/test_img/3/7055.pgm deleted file mode 100644 index 7e29838fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7065.pgm b/examples/autotiler/Mnist/test_img/3/7065.pgm deleted file mode 100644 index b2f50e8aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7075.pgm b/examples/autotiler/Mnist/test_img/3/7075.pgm deleted file mode 100644 index f2d85a4dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7097.pgm b/examples/autotiler/Mnist/test_img/3/7097.pgm deleted file mode 100644 index 7e2145fb4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7103.pgm b/examples/autotiler/Mnist/test_img/3/7103.pgm deleted file mode 100644 index db8ac86d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7104.pgm b/examples/autotiler/Mnist/test_img/3/7104.pgm deleted file mode 100644 index ef5c74848..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7117.pgm b/examples/autotiler/Mnist/test_img/3/7117.pgm deleted file mode 100644 index 30a696aa2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7119.pgm b/examples/autotiler/Mnist/test_img/3/7119.pgm deleted file mode 100644 index 19db8cc9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7130.pgm b/examples/autotiler/Mnist/test_img/3/7130.pgm deleted file mode 100644 index f5a8bac70..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7131.pgm b/examples/autotiler/Mnist/test_img/3/7131.pgm deleted file mode 100644 index 38d3f0b2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7140.pgm b/examples/autotiler/Mnist/test_img/3/7140.pgm deleted file mode 100644 index af98ac7af..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7157.pgm b/examples/autotiler/Mnist/test_img/3/7157.pgm deleted file mode 100644 index 587be8bf8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7170.pgm b/examples/autotiler/Mnist/test_img/3/7170.pgm deleted file mode 100644 index be3fe6cab..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7185.pgm b/examples/autotiler/Mnist/test_img/3/7185.pgm deleted file mode 100644 index b9b41d19b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7193.pgm b/examples/autotiler/Mnist/test_img/3/7193.pgm deleted file mode 100644 index 73e61da6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7207.pgm b/examples/autotiler/Mnist/test_img/3/7207.pgm deleted file mode 100644 index b9814dce1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7211.pgm b/examples/autotiler/Mnist/test_img/3/7211.pgm deleted file mode 100644 index 1879380ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7214.pgm b/examples/autotiler/Mnist/test_img/3/7214.pgm deleted file mode 100644 index cbb42c929..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7215.pgm b/examples/autotiler/Mnist/test_img/3/7215.pgm deleted file mode 100644 index 9ea8b266e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7222.pgm b/examples/autotiler/Mnist/test_img/3/7222.pgm deleted file mode 100644 index 487560bd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7233.pgm b/examples/autotiler/Mnist/test_img/3/7233.pgm deleted file mode 100644 index f48484007..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7248.pgm b/examples/autotiler/Mnist/test_img/3/7248.pgm deleted file mode 100644 index 17e841061..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7250.pgm b/examples/autotiler/Mnist/test_img/3/7250.pgm deleted file mode 100644 index 0cf5729fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7252.pgm b/examples/autotiler/Mnist/test_img/3/7252.pgm deleted file mode 100644 index 8a670d393..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7257.pgm b/examples/autotiler/Mnist/test_img/3/7257.pgm deleted file mode 100644 index 1691875e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/727.pgm b/examples/autotiler/Mnist/test_img/3/727.pgm deleted file mode 100644 index 06e5ca0d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7272.pgm b/examples/autotiler/Mnist/test_img/3/7272.pgm deleted file mode 100644 index 663e7744b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7282.pgm b/examples/autotiler/Mnist/test_img/3/7282.pgm deleted file mode 100644 index 8fe6ddc30..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7292.pgm b/examples/autotiler/Mnist/test_img/3/7292.pgm deleted file mode 100644 index 91ad16f8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7311.pgm b/examples/autotiler/Mnist/test_img/3/7311.pgm deleted file mode 100644 index b8bcecdc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7312.pgm b/examples/autotiler/Mnist/test_img/3/7312.pgm deleted file mode 100644 index 80b4588b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7326.pgm b/examples/autotiler/Mnist/test_img/3/7326.pgm deleted file mode 100644 index 300ba7967..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7329.pgm b/examples/autotiler/Mnist/test_img/3/7329.pgm deleted file mode 100644 index 2594d801d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7333.pgm b/examples/autotiler/Mnist/test_img/3/7333.pgm deleted file mode 100644 index 12a1aad47..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/734.pgm b/examples/autotiler/Mnist/test_img/3/734.pgm deleted file mode 100644 index c8278b1d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7350.pgm b/examples/autotiler/Mnist/test_img/3/7350.pgm deleted file mode 100644 index b4c227d00..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7365.pgm b/examples/autotiler/Mnist/test_img/3/7365.pgm deleted file mode 100644 index df5cb1c99..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7374.pgm b/examples/autotiler/Mnist/test_img/3/7374.pgm deleted file mode 100644 index fde12c39e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7396.pgm b/examples/autotiler/Mnist/test_img/3/7396.pgm deleted file mode 100644 index 4c07b2d27..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7398.pgm b/examples/autotiler/Mnist/test_img/3/7398.pgm deleted file mode 100644 index f02c8765b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7401.pgm b/examples/autotiler/Mnist/test_img/3/7401.pgm deleted file mode 100644 index d660f813f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7407.pgm b/examples/autotiler/Mnist/test_img/3/7407.pgm deleted file mode 100644 index 59495e3f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7431.pgm b/examples/autotiler/Mnist/test_img/3/7431.pgm deleted file mode 100644 index 216797f85..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7435.pgm b/examples/autotiler/Mnist/test_img/3/7435.pgm deleted file mode 100644 index 7b4606d70..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7436.pgm b/examples/autotiler/Mnist/test_img/3/7436.pgm deleted file mode 100644 index ea119e428..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7458.pgm b/examples/autotiler/Mnist/test_img/3/7458.pgm deleted file mode 100644 index 8e65e12b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/747.pgm b/examples/autotiler/Mnist/test_img/3/747.pgm deleted file mode 100644 index 2cbdf989f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7470.pgm b/examples/autotiler/Mnist/test_img/3/7470.pgm deleted file mode 100644 index 83e352cae..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7476.pgm b/examples/autotiler/Mnist/test_img/3/7476.pgm deleted file mode 100644 index b3d7deae1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7479.pgm b/examples/autotiler/Mnist/test_img/3/7479.pgm deleted file mode 100644 index 83bdc9b08..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7484.pgm b/examples/autotiler/Mnist/test_img/3/7484.pgm deleted file mode 100644 index de8c6ab8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7501.pgm b/examples/autotiler/Mnist/test_img/3/7501.pgm deleted file mode 100644 index c116d1ecf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7509.pgm b/examples/autotiler/Mnist/test_img/3/7509.pgm deleted file mode 100644 index c396011c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7519.pgm b/examples/autotiler/Mnist/test_img/3/7519.pgm deleted file mode 100644 index 90c31fe30..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7529.pgm b/examples/autotiler/Mnist/test_img/3/7529.pgm deleted file mode 100644 index daefa2ac6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/753.pgm b/examples/autotiler/Mnist/test_img/3/753.pgm deleted file mode 100644 index e6945029d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7543.pgm b/examples/autotiler/Mnist/test_img/3/7543.pgm deleted file mode 100644 index 4149b275b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7551.pgm b/examples/autotiler/Mnist/test_img/3/7551.pgm deleted file mode 100644 index eebb84f84..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7554.pgm b/examples/autotiler/Mnist/test_img/3/7554.pgm deleted file mode 100644 index 758733d18..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7568.pgm b/examples/autotiler/Mnist/test_img/3/7568.pgm deleted file mode 100644 index bd46008f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7590.pgm b/examples/autotiler/Mnist/test_img/3/7590.pgm deleted file mode 100644 index 17ca2bce9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7595.pgm b/examples/autotiler/Mnist/test_img/3/7595.pgm deleted file mode 100644 index 276b686ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/76.pgm b/examples/autotiler/Mnist/test_img/3/76.pgm deleted file mode 100644 index b1f4e1490..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/76.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7610.pgm b/examples/autotiler/Mnist/test_img/3/7610.pgm deleted file mode 100644 index 2498fd10b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7620.pgm b/examples/autotiler/Mnist/test_img/3/7620.pgm deleted file mode 100644 index c7127fe3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7628.pgm b/examples/autotiler/Mnist/test_img/3/7628.pgm deleted file mode 100644 index 34cfd370c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7639.pgm b/examples/autotiler/Mnist/test_img/3/7639.pgm deleted file mode 100644 index 20f220ad5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7644.pgm b/examples/autotiler/Mnist/test_img/3/7644.pgm deleted file mode 100644 index 710bb6d26..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7656.pgm b/examples/autotiler/Mnist/test_img/3/7656.pgm deleted file mode 100644 index de34ccc69..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7674.pgm b/examples/autotiler/Mnist/test_img/3/7674.pgm deleted file mode 100644 index 83db7d6c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7675.pgm b/examples/autotiler/Mnist/test_img/3/7675.pgm deleted file mode 100644 index e967ec375..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7690.pgm b/examples/autotiler/Mnist/test_img/3/7690.pgm deleted file mode 100644 index 87c881561..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7692.pgm b/examples/autotiler/Mnist/test_img/3/7692.pgm deleted file mode 100644 index 666295a28..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7714.pgm b/examples/autotiler/Mnist/test_img/3/7714.pgm deleted file mode 100644 index 2bd60d67b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7719.pgm b/examples/autotiler/Mnist/test_img/3/7719.pgm deleted file mode 100644 index c78cad251..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7730.pgm b/examples/autotiler/Mnist/test_img/3/7730.pgm deleted file mode 100644 index ca88d04eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7740.pgm b/examples/autotiler/Mnist/test_img/3/7740.pgm deleted file mode 100644 index 37a78228f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7750.pgm b/examples/autotiler/Mnist/test_img/3/7750.pgm deleted file mode 100644 index d43c9ed55..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7763.pgm b/examples/autotiler/Mnist/test_img/3/7763.pgm deleted file mode 100644 index afbcae679..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7771.pgm b/examples/autotiler/Mnist/test_img/3/7771.pgm deleted file mode 100644 index 524bec6af..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7798.pgm b/examples/autotiler/Mnist/test_img/3/7798.pgm deleted file mode 100644 index b78677dc2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/780.pgm b/examples/autotiler/Mnist/test_img/3/780.pgm deleted file mode 100644 index 745c905d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7800.pgm b/examples/autotiler/Mnist/test_img/3/7800.pgm deleted file mode 100644 index 66f76cce2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7804.pgm b/examples/autotiler/Mnist/test_img/3/7804.pgm deleted file mode 100644 index 47fa52af9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/782.pgm b/examples/autotiler/Mnist/test_img/3/782.pgm deleted file mode 100644 index 320c724f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7821.pgm b/examples/autotiler/Mnist/test_img/3/7821.pgm deleted file mode 100644 index fe8cd2c6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7829.pgm b/examples/autotiler/Mnist/test_img/3/7829.pgm deleted file mode 100644 index b40d83498..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7831.pgm b/examples/autotiler/Mnist/test_img/3/7831.pgm deleted file mode 100644 index 06b09c3c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7841.pgm b/examples/autotiler/Mnist/test_img/3/7841.pgm deleted file mode 100644 index 35bfee0e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7849.pgm b/examples/autotiler/Mnist/test_img/3/7849.pgm deleted file mode 100644 index 1628a0ecc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7858.pgm b/examples/autotiler/Mnist/test_img/3/7858.pgm deleted file mode 100644 index 5dadf552d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7875.pgm b/examples/autotiler/Mnist/test_img/3/7875.pgm deleted file mode 100644 index f3cca26d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7893.pgm b/examples/autotiler/Mnist/test_img/3/7893.pgm deleted file mode 100644 index 5cadef563..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7905.pgm b/examples/autotiler/Mnist/test_img/3/7905.pgm deleted file mode 100644 index 4248f0374..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/792.pgm b/examples/autotiler/Mnist/test_img/3/792.pgm deleted file mode 100644 index 0fa739dac..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7932.pgm b/examples/autotiler/Mnist/test_img/3/7932.pgm deleted file mode 100644 index 93b268616..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7936.pgm b/examples/autotiler/Mnist/test_img/3/7936.pgm deleted file mode 100644 index e693a15a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7946.pgm b/examples/autotiler/Mnist/test_img/3/7946.pgm deleted file mode 100644 index bd3ad23d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/795.pgm b/examples/autotiler/Mnist/test_img/3/795.pgm deleted file mode 100644 index 4c4feef6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7956.pgm b/examples/autotiler/Mnist/test_img/3/7956.pgm deleted file mode 100644 index 9a47b43d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7968.pgm b/examples/autotiler/Mnist/test_img/3/7968.pgm deleted file mode 100644 index f047cdad7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7981.pgm b/examples/autotiler/Mnist/test_img/3/7981.pgm deleted file mode 100644 index 97403bc10..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7983.pgm b/examples/autotiler/Mnist/test_img/3/7983.pgm deleted file mode 100644 index 88b730a61..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7993.pgm b/examples/autotiler/Mnist/test_img/3/7993.pgm deleted file mode 100644 index 0e79e05a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/7995.pgm b/examples/autotiler/Mnist/test_img/3/7995.pgm deleted file mode 100644 index befb32902..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/7995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/801.pgm b/examples/autotiler/Mnist/test_img/3/801.pgm deleted file mode 100644 index b58af1e03..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8010.pgm b/examples/autotiler/Mnist/test_img/3/8010.pgm deleted file mode 100644 index 88ff2c741..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8014.pgm b/examples/autotiler/Mnist/test_img/3/8014.pgm deleted file mode 100644 index 891c8dcaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8026.pgm b/examples/autotiler/Mnist/test_img/3/8026.pgm deleted file mode 100644 index 2f8e85fab..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8032.pgm b/examples/autotiler/Mnist/test_img/3/8032.pgm deleted file mode 100644 index 7db62d9c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8050.pgm b/examples/autotiler/Mnist/test_img/3/8050.pgm deleted file mode 100644 index 870e98a60..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8060.pgm b/examples/autotiler/Mnist/test_img/3/8060.pgm deleted file mode 100644 index 34c6328b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/807.pgm b/examples/autotiler/Mnist/test_img/3/807.pgm deleted file mode 100644 index bc4083c25..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8070.pgm b/examples/autotiler/Mnist/test_img/3/8070.pgm deleted file mode 100644 index ef412af2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/808.pgm b/examples/autotiler/Mnist/test_img/3/808.pgm deleted file mode 100644 index ab93001f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8080.pgm b/examples/autotiler/Mnist/test_img/3/8080.pgm deleted file mode 100644 index 879e1440e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8087.pgm b/examples/autotiler/Mnist/test_img/3/8087.pgm deleted file mode 100644 index 969be9cb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/811.pgm b/examples/autotiler/Mnist/test_img/3/811.pgm deleted file mode 100644 index d318a5661..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8115.pgm b/examples/autotiler/Mnist/test_img/3/8115.pgm deleted file mode 100644 index 5dfd9e72e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8120.pgm b/examples/autotiler/Mnist/test_img/3/8120.pgm deleted file mode 100644 index 9615b4d1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8130.pgm b/examples/autotiler/Mnist/test_img/3/8130.pgm deleted file mode 100644 index 577be9a8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8140.pgm b/examples/autotiler/Mnist/test_img/3/8140.pgm deleted file mode 100644 index 0c85ff165..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/815.pgm b/examples/autotiler/Mnist/test_img/3/815.pgm deleted file mode 100644 index f5185f6d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8154.pgm b/examples/autotiler/Mnist/test_img/3/8154.pgm deleted file mode 100644 index d8873f9d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8156.pgm b/examples/autotiler/Mnist/test_img/3/8156.pgm deleted file mode 100644 index 42aa8d073..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8162.pgm b/examples/autotiler/Mnist/test_img/3/8162.pgm deleted file mode 100644 index 1b4f6bac3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8167.pgm b/examples/autotiler/Mnist/test_img/3/8167.pgm deleted file mode 100644 index 39a08b15b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8171.pgm b/examples/autotiler/Mnist/test_img/3/8171.pgm deleted file mode 100644 index 1a343574d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8186.pgm b/examples/autotiler/Mnist/test_img/3/8186.pgm deleted file mode 100644 index 001da9bc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/819.pgm b/examples/autotiler/Mnist/test_img/3/819.pgm deleted file mode 100644 index d7a5aae9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8201.pgm b/examples/autotiler/Mnist/test_img/3/8201.pgm deleted file mode 100644 index a624ada41..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8206.pgm b/examples/autotiler/Mnist/test_img/3/8206.pgm deleted file mode 100644 index 2628cbcd6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8215.pgm b/examples/autotiler/Mnist/test_img/3/8215.pgm deleted file mode 100644 index 56cc8bd32..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8226.pgm b/examples/autotiler/Mnist/test_img/3/8226.pgm deleted file mode 100644 index abaa2d337..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8246.pgm b/examples/autotiler/Mnist/test_img/3/8246.pgm deleted file mode 100644 index 32c8786ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8254.pgm b/examples/autotiler/Mnist/test_img/3/8254.pgm deleted file mode 100644 index d7be15198..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8263.pgm b/examples/autotiler/Mnist/test_img/3/8263.pgm deleted file mode 100644 index b177806f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8271.pgm b/examples/autotiler/Mnist/test_img/3/8271.pgm deleted file mode 100644 index db73cd230..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8272.pgm b/examples/autotiler/Mnist/test_img/3/8272.pgm deleted file mode 100644 index cdcf9d7c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8277.pgm b/examples/autotiler/Mnist/test_img/3/8277.pgm deleted file mode 100644 index d8678d686..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8290.pgm b/examples/autotiler/Mnist/test_img/3/8290.pgm deleted file mode 100644 index 2b7424de6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8293.pgm b/examples/autotiler/Mnist/test_img/3/8293.pgm deleted file mode 100644 index 65325f6ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8296.pgm b/examples/autotiler/Mnist/test_img/3/8296.pgm deleted file mode 100644 index 5fdb9ea51..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8308.pgm b/examples/autotiler/Mnist/test_img/3/8308.pgm deleted file mode 100644 index eae4db99f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8328.pgm b/examples/autotiler/Mnist/test_img/3/8328.pgm deleted file mode 100644 index 277d2a64c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8337.pgm b/examples/autotiler/Mnist/test_img/3/8337.pgm deleted file mode 100644 index 426f464a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8346.pgm b/examples/autotiler/Mnist/test_img/3/8346.pgm deleted file mode 100644 index 2982fc0fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8354.pgm b/examples/autotiler/Mnist/test_img/3/8354.pgm deleted file mode 100644 index 421082941..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8362.pgm b/examples/autotiler/Mnist/test_img/3/8362.pgm deleted file mode 100644 index 00ce9c4e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8370.pgm b/examples/autotiler/Mnist/test_img/3/8370.pgm deleted file mode 100644 index 032b11034..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8379.pgm b/examples/autotiler/Mnist/test_img/3/8379.pgm deleted file mode 100644 index 70ef39e78..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8393.pgm b/examples/autotiler/Mnist/test_img/3/8393.pgm deleted file mode 100644 index 23eeeecf0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8397.pgm b/examples/autotiler/Mnist/test_img/3/8397.pgm deleted file mode 100644 index 776d4355e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8407.pgm b/examples/autotiler/Mnist/test_img/3/8407.pgm deleted file mode 100644 index cf344dafb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8411.pgm b/examples/autotiler/Mnist/test_img/3/8411.pgm deleted file mode 100644 index afe42072f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8419.pgm b/examples/autotiler/Mnist/test_img/3/8419.pgm deleted file mode 100644 index 222acb442..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8429.pgm b/examples/autotiler/Mnist/test_img/3/8429.pgm deleted file mode 100644 index ccc19e616..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8430.pgm b/examples/autotiler/Mnist/test_img/3/8430.pgm deleted file mode 100644 index cadf955bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8435.pgm b/examples/autotiler/Mnist/test_img/3/8435.pgm deleted file mode 100644 index 1327a5cd5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8451.pgm b/examples/autotiler/Mnist/test_img/3/8451.pgm deleted file mode 100644 index 8e78dd29f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8461.pgm b/examples/autotiler/Mnist/test_img/3/8461.pgm deleted file mode 100644 index 78600bb81..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/847.pgm b/examples/autotiler/Mnist/test_img/3/847.pgm deleted file mode 100644 index 9e65ce989..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8471.pgm b/examples/autotiler/Mnist/test_img/3/8471.pgm deleted file mode 100644 index 83f5369ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8483.pgm b/examples/autotiler/Mnist/test_img/3/8483.pgm deleted file mode 100644 index f261c89d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8485.pgm b/examples/autotiler/Mnist/test_img/3/8485.pgm deleted file mode 100644 index ee097dcad..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8489.pgm b/examples/autotiler/Mnist/test_img/3/8489.pgm deleted file mode 100644 index a9d86b8f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/849.pgm b/examples/autotiler/Mnist/test_img/3/849.pgm deleted file mode 100644 index 73eb2d264..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8494.pgm b/examples/autotiler/Mnist/test_img/3/8494.pgm deleted file mode 100644 index 029f69ced..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8508.pgm b/examples/autotiler/Mnist/test_img/3/8508.pgm deleted file mode 100644 index 17f6fd9a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8518.pgm b/examples/autotiler/Mnist/test_img/3/8518.pgm deleted file mode 100644 index 513687fbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8533.pgm b/examples/autotiler/Mnist/test_img/3/8533.pgm deleted file mode 100644 index 1bc13b9e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/855.pgm b/examples/autotiler/Mnist/test_img/3/855.pgm deleted file mode 100644 index e3143aa36..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8551.pgm b/examples/autotiler/Mnist/test_img/3/8551.pgm deleted file mode 100644 index bbc17522b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8561.pgm b/examples/autotiler/Mnist/test_img/3/8561.pgm deleted file mode 100644 index a865f57b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8570.pgm b/examples/autotiler/Mnist/test_img/3/8570.pgm deleted file mode 100644 index f64bb57b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8581.pgm b/examples/autotiler/Mnist/test_img/3/8581.pgm deleted file mode 100644 index 9000ff2fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8597.pgm b/examples/autotiler/Mnist/test_img/3/8597.pgm deleted file mode 100644 index 3f19a4bd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8598.pgm b/examples/autotiler/Mnist/test_img/3/8598.pgm deleted file mode 100644 index b004dc616..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8603.pgm b/examples/autotiler/Mnist/test_img/3/8603.pgm deleted file mode 100644 index 61277544f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8607.pgm b/examples/autotiler/Mnist/test_img/3/8607.pgm deleted file mode 100644 index 057ba13e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8624.pgm b/examples/autotiler/Mnist/test_img/3/8624.pgm deleted file mode 100644 index db84e9ab5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/865.pgm b/examples/autotiler/Mnist/test_img/3/865.pgm deleted file mode 100644 index 8fa8cf675..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8655.pgm b/examples/autotiler/Mnist/test_img/3/8655.pgm deleted file mode 100644 index d7f67e9f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8660.pgm b/examples/autotiler/Mnist/test_img/3/8660.pgm deleted file mode 100644 index 3f383f6d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8674.pgm b/examples/autotiler/Mnist/test_img/3/8674.pgm deleted file mode 100644 index b344dc514..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8684.pgm b/examples/autotiler/Mnist/test_img/3/8684.pgm deleted file mode 100644 index 8e28f7a1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8694.pgm b/examples/autotiler/Mnist/test_img/3/8694.pgm deleted file mode 100644 index 524c50164..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/87.pgm b/examples/autotiler/Mnist/test_img/3/87.pgm deleted file mode 100644 index 79ca5fafc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/87.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8701.pgm b/examples/autotiler/Mnist/test_img/3/8701.pgm deleted file mode 100644 index 31ee02728..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8703.pgm b/examples/autotiler/Mnist/test_img/3/8703.pgm deleted file mode 100644 index 6cc6ebd18..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8706.pgm b/examples/autotiler/Mnist/test_img/3/8706.pgm deleted file mode 100644 index 461e456f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8713.pgm b/examples/autotiler/Mnist/test_img/3/8713.pgm deleted file mode 100644 index 24d6987c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8716.pgm b/examples/autotiler/Mnist/test_img/3/8716.pgm deleted file mode 100644 index d209d57af..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8753.pgm b/examples/autotiler/Mnist/test_img/3/8753.pgm deleted file mode 100644 index b33033ccb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8766.pgm b/examples/autotiler/Mnist/test_img/3/8766.pgm deleted file mode 100644 index e182903ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8777.pgm b/examples/autotiler/Mnist/test_img/3/8777.pgm deleted file mode 100644 index e5c773bae..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8780.pgm b/examples/autotiler/Mnist/test_img/3/8780.pgm deleted file mode 100644 index 3cfb7f4b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8785.pgm b/examples/autotiler/Mnist/test_img/3/8785.pgm deleted file mode 100644 index f4332871c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8801.pgm b/examples/autotiler/Mnist/test_img/3/8801.pgm deleted file mode 100644 index eef9d8581..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8811.pgm b/examples/autotiler/Mnist/test_img/3/8811.pgm deleted file mode 100644 index f81257cc5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8821.pgm b/examples/autotiler/Mnist/test_img/3/8821.pgm deleted file mode 100644 index 48108f37a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/883.pgm b/examples/autotiler/Mnist/test_img/3/883.pgm deleted file mode 100644 index 79f004db9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8840.pgm b/examples/autotiler/Mnist/test_img/3/8840.pgm deleted file mode 100644 index c207668d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8842.pgm b/examples/autotiler/Mnist/test_img/3/8842.pgm deleted file mode 100644 index ee3e4f912..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8854.pgm b/examples/autotiler/Mnist/test_img/3/8854.pgm deleted file mode 100644 index 6a1bd8125..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8856.pgm b/examples/autotiler/Mnist/test_img/3/8856.pgm deleted file mode 100644 index ae9211df3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8860.pgm b/examples/autotiler/Mnist/test_img/3/8860.pgm deleted file mode 100644 index d88fb8fd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8864.pgm b/examples/autotiler/Mnist/test_img/3/8864.pgm deleted file mode 100644 index d55367aee..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8867.pgm b/examples/autotiler/Mnist/test_img/3/8867.pgm deleted file mode 100644 index 2e0d45622..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/887.pgm b/examples/autotiler/Mnist/test_img/3/887.pgm deleted file mode 100644 index f707e9de1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8876.pgm b/examples/autotiler/Mnist/test_img/3/8876.pgm deleted file mode 100644 index e5bf994f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/890.pgm b/examples/autotiler/Mnist/test_img/3/890.pgm deleted file mode 100644 index 112abf308..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8903.pgm b/examples/autotiler/Mnist/test_img/3/8903.pgm deleted file mode 100644 index 09cd28139..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8910.pgm b/examples/autotiler/Mnist/test_img/3/8910.pgm deleted file mode 100644 index 900c5eaa5..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8916.pgm b/examples/autotiler/Mnist/test_img/3/8916.pgm deleted file mode 100644 index 4e66e211f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8924.pgm b/examples/autotiler/Mnist/test_img/3/8924.pgm deleted file mode 100644 index bd99e2b53..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8939.pgm b/examples/autotiler/Mnist/test_img/3/8939.pgm deleted file mode 100644 index 4dbd0f6cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/894.pgm b/examples/autotiler/Mnist/test_img/3/894.pgm deleted file mode 100644 index b6111eb5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8946.pgm b/examples/autotiler/Mnist/test_img/3/8946.pgm deleted file mode 100644 index 72e612ae7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8952.pgm b/examples/autotiler/Mnist/test_img/3/8952.pgm deleted file mode 100644 index 1d3bca4fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8957.pgm b/examples/autotiler/Mnist/test_img/3/8957.pgm deleted file mode 100644 index f4d34f67c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8970.pgm b/examples/autotiler/Mnist/test_img/3/8970.pgm deleted file mode 100644 index 5e7662c55..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8972.pgm b/examples/autotiler/Mnist/test_img/3/8972.pgm deleted file mode 100644 index 73ff05f16..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8975.pgm b/examples/autotiler/Mnist/test_img/3/8975.pgm deleted file mode 100644 index b2f6bcea2..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/8981.pgm b/examples/autotiler/Mnist/test_img/3/8981.pgm deleted file mode 100644 index eb9bbfb83..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/8981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/90.pgm b/examples/autotiler/Mnist/test_img/3/90.pgm deleted file mode 100644 index 2f9bd10b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/90.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9007.pgm b/examples/autotiler/Mnist/test_img/3/9007.pgm deleted file mode 100644 index bb175d232..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9011.pgm b/examples/autotiler/Mnist/test_img/3/9011.pgm deleted file mode 100644 index 5185a68aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9022.pgm b/examples/autotiler/Mnist/test_img/3/9022.pgm deleted file mode 100644 index 212e7956e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9027.pgm b/examples/autotiler/Mnist/test_img/3/9027.pgm deleted file mode 100644 index a6aceeb8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9056.pgm b/examples/autotiler/Mnist/test_img/3/9056.pgm deleted file mode 100644 index 6eb807c84..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9059.pgm b/examples/autotiler/Mnist/test_img/3/9059.pgm deleted file mode 100644 index 7e2e04b18..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9063.pgm b/examples/autotiler/Mnist/test_img/3/9063.pgm deleted file mode 100644 index fd3166696..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9073.pgm b/examples/autotiler/Mnist/test_img/3/9073.pgm deleted file mode 100644 index 79609a1d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9083.pgm b/examples/autotiler/Mnist/test_img/3/9083.pgm deleted file mode 100644 index 08cb48efa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9100.pgm b/examples/autotiler/Mnist/test_img/3/9100.pgm deleted file mode 100644 index 43cd09742..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9106.pgm b/examples/autotiler/Mnist/test_img/3/9106.pgm deleted file mode 100644 index e394120af..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9115.pgm b/examples/autotiler/Mnist/test_img/3/9115.pgm deleted file mode 100644 index ea5e1afda..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/912.pgm b/examples/autotiler/Mnist/test_img/3/912.pgm deleted file mode 100644 index ad833ada4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9125.pgm b/examples/autotiler/Mnist/test_img/3/9125.pgm deleted file mode 100644 index 487975f5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9156.pgm b/examples/autotiler/Mnist/test_img/3/9156.pgm deleted file mode 100644 index 539f3608e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9157.pgm b/examples/autotiler/Mnist/test_img/3/9157.pgm deleted file mode 100644 index d7aabfac0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9163.pgm b/examples/autotiler/Mnist/test_img/3/9163.pgm deleted file mode 100644 index ee15fc008..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9175.pgm b/examples/autotiler/Mnist/test_img/3/9175.pgm deleted file mode 100644 index 9ece65ff9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9177.pgm b/examples/autotiler/Mnist/test_img/3/9177.pgm deleted file mode 100644 index dc6f84e26..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9182.pgm b/examples/autotiler/Mnist/test_img/3/9182.pgm deleted file mode 100644 index f71bb74ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9192.pgm b/examples/autotiler/Mnist/test_img/3/9192.pgm deleted file mode 100644 index 816b4a9aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9202.pgm b/examples/autotiler/Mnist/test_img/3/9202.pgm deleted file mode 100644 index 53dc594bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9217.pgm b/examples/autotiler/Mnist/test_img/3/9217.pgm deleted file mode 100644 index 9a323af3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9219.pgm b/examples/autotiler/Mnist/test_img/3/9219.pgm deleted file mode 100644 index 9fd2d6f2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9227.pgm b/examples/autotiler/Mnist/test_img/3/9227.pgm deleted file mode 100644 index f70b0a054..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9229.pgm b/examples/autotiler/Mnist/test_img/3/9229.pgm deleted file mode 100644 index 14f409964..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/923.pgm b/examples/autotiler/Mnist/test_img/3/923.pgm deleted file mode 100644 index 17d9cb43b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9231.pgm b/examples/autotiler/Mnist/test_img/3/9231.pgm deleted file mode 100644 index 402879228..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9235.pgm b/examples/autotiler/Mnist/test_img/3/9235.pgm deleted file mode 100644 index 327457cc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9238.pgm b/examples/autotiler/Mnist/test_img/3/9238.pgm deleted file mode 100644 index 67ecac341..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/925.pgm b/examples/autotiler/Mnist/test_img/3/925.pgm deleted file mode 100644 index 89d29be1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9261.pgm b/examples/autotiler/Mnist/test_img/3/9261.pgm deleted file mode 100644 index 6a806fc8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/927.pgm b/examples/autotiler/Mnist/test_img/3/927.pgm deleted file mode 100644 index 2650e161d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9275.pgm b/examples/autotiler/Mnist/test_img/3/9275.pgm deleted file mode 100644 index f7b51b6ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9283.pgm b/examples/autotiler/Mnist/test_img/3/9283.pgm deleted file mode 100644 index 85f7c499e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/93.pgm b/examples/autotiler/Mnist/test_img/3/93.pgm deleted file mode 100644 index 7c34739b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/93.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9305.pgm b/examples/autotiler/Mnist/test_img/3/9305.pgm deleted file mode 100644 index 0072bf619..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9308.pgm b/examples/autotiler/Mnist/test_img/3/9308.pgm deleted file mode 100644 index 89a24d90f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/933.pgm b/examples/autotiler/Mnist/test_img/3/933.pgm deleted file mode 100644 index afb3facea..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9332.pgm b/examples/autotiler/Mnist/test_img/3/9332.pgm deleted file mode 100644 index 6a5f8df40..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9342.pgm b/examples/autotiler/Mnist/test_img/3/9342.pgm deleted file mode 100644 index 732460e30..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9363.pgm b/examples/autotiler/Mnist/test_img/3/9363.pgm deleted file mode 100644 index 02a677e61..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9365.pgm b/examples/autotiler/Mnist/test_img/3/9365.pgm deleted file mode 100644 index bb9d11ccc..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9370.pgm b/examples/autotiler/Mnist/test_img/3/9370.pgm deleted file mode 100644 index b4b9de8a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/938.pgm b/examples/autotiler/Mnist/test_img/3/938.pgm deleted file mode 100644 index d5db1b71d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9380.pgm b/examples/autotiler/Mnist/test_img/3/9380.pgm deleted file mode 100644 index 51ab239da..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9390.pgm b/examples/autotiler/Mnist/test_img/3/9390.pgm deleted file mode 100644 index bc118a08b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9409.pgm b/examples/autotiler/Mnist/test_img/3/9409.pgm deleted file mode 100644 index a3c59d2c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9429.pgm b/examples/autotiler/Mnist/test_img/3/9429.pgm deleted file mode 100644 index 9032aae2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9430.pgm b/examples/autotiler/Mnist/test_img/3/9430.pgm deleted file mode 100644 index a9f820d79..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9431.pgm b/examples/autotiler/Mnist/test_img/3/9431.pgm deleted file mode 100644 index e8effd2ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/944.pgm b/examples/autotiler/Mnist/test_img/3/944.pgm deleted file mode 100644 index a841665cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9445.pgm b/examples/autotiler/Mnist/test_img/3/9445.pgm deleted file mode 100644 index 6bdfc2a71..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9460.pgm b/examples/autotiler/Mnist/test_img/3/9460.pgm deleted file mode 100644 index f85f250e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9468.pgm b/examples/autotiler/Mnist/test_img/3/9468.pgm deleted file mode 100644 index 13b3dfa87..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9474.pgm b/examples/autotiler/Mnist/test_img/3/9474.pgm deleted file mode 100644 index adc23d561..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9479.pgm b/examples/autotiler/Mnist/test_img/3/9479.pgm deleted file mode 100644 index d855a199b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9491.pgm b/examples/autotiler/Mnist/test_img/3/9491.pgm deleted file mode 100644 index 1b652bb8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9501.pgm b/examples/autotiler/Mnist/test_img/3/9501.pgm deleted file mode 100644 index 204afc803..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9511.pgm b/examples/autotiler/Mnist/test_img/3/9511.pgm deleted file mode 100644 index c1a34855d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9524.pgm b/examples/autotiler/Mnist/test_img/3/9524.pgm deleted file mode 100644 index 71c0fd790..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9536.pgm b/examples/autotiler/Mnist/test_img/3/9536.pgm deleted file mode 100644 index e88ec0277..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9548.pgm b/examples/autotiler/Mnist/test_img/3/9548.pgm deleted file mode 100644 index 11e0f2f2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9558.pgm b/examples/autotiler/Mnist/test_img/3/9558.pgm deleted file mode 100644 index cd3346e3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9559.pgm b/examples/autotiler/Mnist/test_img/3/9559.pgm deleted file mode 100644 index 496b05b8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9561.pgm b/examples/autotiler/Mnist/test_img/3/9561.pgm deleted file mode 100644 index 38f8c3ed3..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/957.pgm b/examples/autotiler/Mnist/test_img/3/957.pgm deleted file mode 100644 index 279744d57..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9579.pgm b/examples/autotiler/Mnist/test_img/3/9579.pgm deleted file mode 100644 index 6c0ec7900..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/958.pgm b/examples/autotiler/Mnist/test_img/3/958.pgm deleted file mode 100644 index 5001c1b29..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9581.pgm b/examples/autotiler/Mnist/test_img/3/9581.pgm deleted file mode 100644 index 3dd7259fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9582.pgm b/examples/autotiler/Mnist/test_img/3/9582.pgm deleted file mode 100644 index c90d0acf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9604.pgm b/examples/autotiler/Mnist/test_img/3/9604.pgm deleted file mode 100644 index 79631e19c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9614.pgm b/examples/autotiler/Mnist/test_img/3/9614.pgm deleted file mode 100644 index 82aa61d0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9624.pgm b/examples/autotiler/Mnist/test_img/3/9624.pgm deleted file mode 100644 index de7d2866b..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9636.pgm b/examples/autotiler/Mnist/test_img/3/9636.pgm deleted file mode 100644 index a0ed54959..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9654.pgm b/examples/autotiler/Mnist/test_img/3/9654.pgm deleted file mode 100644 index e9647e4e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9655.pgm b/examples/autotiler/Mnist/test_img/3/9655.pgm deleted file mode 100644 index 90007ea05..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9656.pgm b/examples/autotiler/Mnist/test_img/3/9656.pgm deleted file mode 100644 index 2f8786d14..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9662.pgm b/examples/autotiler/Mnist/test_img/3/9662.pgm deleted file mode 100644 index 35fe2ef54..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9670.pgm b/examples/autotiler/Mnist/test_img/3/9670.pgm deleted file mode 100644 index 426355631..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9680.pgm b/examples/autotiler/Mnist/test_img/3/9680.pgm deleted file mode 100644 index 774f49a12..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9697.pgm b/examples/autotiler/Mnist/test_img/3/9697.pgm deleted file mode 100644 index 8ce43756c..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9707.pgm b/examples/autotiler/Mnist/test_img/3/9707.pgm deleted file mode 100644 index 638b2c6ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9717.pgm b/examples/autotiler/Mnist/test_img/3/9717.pgm deleted file mode 100644 index d0f7374f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9727.pgm b/examples/autotiler/Mnist/test_img/3/9727.pgm deleted file mode 100644 index eb34c9395..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9742.pgm b/examples/autotiler/Mnist/test_img/3/9742.pgm deleted file mode 100644 index a88fdc5fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9750.pgm b/examples/autotiler/Mnist/test_img/3/9750.pgm deleted file mode 100644 index 8c56c6d5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9758.pgm b/examples/autotiler/Mnist/test_img/3/9758.pgm deleted file mode 100644 index 8fe59e1a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/976.pgm b/examples/autotiler/Mnist/test_img/3/976.pgm deleted file mode 100644 index e81ba249f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9762.pgm b/examples/autotiler/Mnist/test_img/3/9762.pgm deleted file mode 100644 index 2ab58b314..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9787.pgm b/examples/autotiler/Mnist/test_img/3/9787.pgm deleted file mode 100644 index 835a4c476..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9790.pgm b/examples/autotiler/Mnist/test_img/3/9790.pgm deleted file mode 100644 index 7427ecf4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9797.pgm b/examples/autotiler/Mnist/test_img/3/9797.pgm deleted file mode 100644 index cede23c3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9804.pgm b/examples/autotiler/Mnist/test_img/3/9804.pgm deleted file mode 100644 index 6d23f61ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9812.pgm b/examples/autotiler/Mnist/test_img/3/9812.pgm deleted file mode 100644 index 8f2d139ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/982.pgm b/examples/autotiler/Mnist/test_img/3/982.pgm deleted file mode 100644 index 7e832dd76..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9821.pgm b/examples/autotiler/Mnist/test_img/3/9821.pgm deleted file mode 100644 index 408f38a44..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9828.pgm b/examples/autotiler/Mnist/test_img/3/9828.pgm deleted file mode 100644 index 654fa71a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9840.pgm b/examples/autotiler/Mnist/test_img/3/9840.pgm deleted file mode 100644 index 42ecc19cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9860.pgm b/examples/autotiler/Mnist/test_img/3/9860.pgm deleted file mode 100644 index 7cb1eb450..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9872.pgm b/examples/autotiler/Mnist/test_img/3/9872.pgm deleted file mode 100644 index 6df35304f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9881.pgm b/examples/autotiler/Mnist/test_img/3/9881.pgm deleted file mode 100644 index 11d35db49..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9882.pgm b/examples/autotiler/Mnist/test_img/3/9882.pgm deleted file mode 100644 index d51de7d1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9889.pgm b/examples/autotiler/Mnist/test_img/3/9889.pgm deleted file mode 100644 index 2bf8e3988..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9905.pgm b/examples/autotiler/Mnist/test_img/3/9905.pgm deleted file mode 100644 index 92d6c9081..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/991.pgm b/examples/autotiler/Mnist/test_img/3/991.pgm deleted file mode 100644 index e82b8d8b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9914.pgm b/examples/autotiler/Mnist/test_img/3/9914.pgm deleted file mode 100644 index cb345ae2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9925.pgm b/examples/autotiler/Mnist/test_img/3/9925.pgm deleted file mode 100644 index 862c610c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9942.pgm b/examples/autotiler/Mnist/test_img/3/9942.pgm deleted file mode 100644 index 303f642e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9943.pgm b/examples/autotiler/Mnist/test_img/3/9943.pgm deleted file mode 100644 index 46d691bed..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9944.pgm b/examples/autotiler/Mnist/test_img/3/9944.pgm deleted file mode 100644 index c3048cc2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9965.pgm b/examples/autotiler/Mnist/test_img/3/9965.pgm deleted file mode 100644 index 3a64bcc17..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9975.pgm b/examples/autotiler/Mnist/test_img/3/9975.pgm deleted file mode 100644 index 86d00a397..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9986.pgm b/examples/autotiler/Mnist/test_img/3/9986.pgm deleted file mode 100644 index 91e0d5bc4..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/3/9996.pgm b/examples/autotiler/Mnist/test_img/3/9996.pgm deleted file mode 100644 index 9fd208a1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/3/9996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1010.pgm b/examples/autotiler/Mnist/test_img/4/1010.pgm deleted file mode 100644 index 382db8ae0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1015.pgm b/examples/autotiler/Mnist/test_img/4/1015.pgm deleted file mode 100644 index 55d9876fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1023.pgm b/examples/autotiler/Mnist/test_img/4/1023.pgm deleted file mode 100644 index e1ebea01f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1024.pgm b/examples/autotiler/Mnist/test_img/4/1024.pgm deleted file mode 100644 index c69fcdbea..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/103.pgm b/examples/autotiler/Mnist/test_img/4/103.pgm deleted file mode 100644 index c8f2df085..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1043.pgm b/examples/autotiler/Mnist/test_img/4/1043.pgm deleted file mode 100644 index 163c9ad85..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1051.pgm b/examples/autotiler/Mnist/test_img/4/1051.pgm deleted file mode 100644 index ca5d3bd85..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1057.pgm b/examples/autotiler/Mnist/test_img/4/1057.pgm deleted file mode 100644 index 58c15de83..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1059.pgm b/examples/autotiler/Mnist/test_img/4/1059.pgm deleted file mode 100644 index ce043cfe2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1060.pgm b/examples/autotiler/Mnist/test_img/4/1060.pgm deleted file mode 100644 index bff6cc714..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1077.pgm b/examples/autotiler/Mnist/test_img/4/1077.pgm deleted file mode 100644 index cabd54da9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1078.pgm b/examples/autotiler/Mnist/test_img/4/1078.pgm deleted file mode 100644 index ccb5f8d8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1080.pgm b/examples/autotiler/Mnist/test_img/4/1080.pgm deleted file mode 100644 index c47501b2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/109.pgm b/examples/autotiler/Mnist/test_img/4/109.pgm deleted file mode 100644 index a1a33cd29..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1111.pgm b/examples/autotiler/Mnist/test_img/4/1111.pgm deleted file mode 100644 index 704ebf8da..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1112.pgm b/examples/autotiler/Mnist/test_img/4/1112.pgm deleted file mode 100644 index a236bdb27..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1116.pgm b/examples/autotiler/Mnist/test_img/4/1116.pgm deleted file mode 100644 index 687a8e3db..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1140.pgm b/examples/autotiler/Mnist/test_img/4/1140.pgm deleted file mode 100644 index 8376f56de..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1142.pgm b/examples/autotiler/Mnist/test_img/4/1142.pgm deleted file mode 100644 index 892796581..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1145.pgm b/examples/autotiler/Mnist/test_img/4/1145.pgm deleted file mode 100644 index b07f3a03a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1147.pgm b/examples/autotiler/Mnist/test_img/4/1147.pgm deleted file mode 100644 index ce61cff8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/115.pgm b/examples/autotiler/Mnist/test_img/4/115.pgm deleted file mode 100644 index a9ec48ece..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1157.pgm b/examples/autotiler/Mnist/test_img/4/1157.pgm deleted file mode 100644 index 5ef3c4fab..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1158.pgm b/examples/autotiler/Mnist/test_img/4/1158.pgm deleted file mode 100644 index 2ca573fdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1159.pgm b/examples/autotiler/Mnist/test_img/4/1159.pgm deleted file mode 100644 index deeec83a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/116.pgm b/examples/autotiler/Mnist/test_img/4/116.pgm deleted file mode 100644 index 3543575b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1160.pgm b/examples/autotiler/Mnist/test_img/4/1160.pgm deleted file mode 100644 index 3b7e6018e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1163.pgm b/examples/autotiler/Mnist/test_img/4/1163.pgm deleted file mode 100644 index 36244dffe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1167.pgm b/examples/autotiler/Mnist/test_img/4/1167.pgm deleted file mode 100644 index 26ca5c85d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/117.pgm b/examples/autotiler/Mnist/test_img/4/117.pgm deleted file mode 100644 index 2262bc418..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1178.pgm b/examples/autotiler/Mnist/test_img/4/1178.pgm deleted file mode 100644 index 9b2e7cfa4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/121.pgm b/examples/autotiler/Mnist/test_img/4/121.pgm deleted file mode 100644 index 1c334b06c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1222.pgm b/examples/autotiler/Mnist/test_img/4/1222.pgm deleted file mode 100644 index ca3c92bbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1230.pgm b/examples/autotiler/Mnist/test_img/4/1230.pgm deleted file mode 100644 index d48a1fa65..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1242.pgm b/examples/autotiler/Mnist/test_img/4/1242.pgm deleted file mode 100644 index 6926d45ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1253.pgm b/examples/autotiler/Mnist/test_img/4/1253.pgm deleted file mode 100644 index bf80f6cff..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1263.pgm b/examples/autotiler/Mnist/test_img/4/1263.pgm deleted file mode 100644 index f547f05b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1264.pgm b/examples/autotiler/Mnist/test_img/4/1264.pgm deleted file mode 100644 index b74bbd267..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1270.pgm b/examples/autotiler/Mnist/test_img/4/1270.pgm deleted file mode 100644 index b238edd23..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1274.pgm b/examples/autotiler/Mnist/test_img/4/1274.pgm deleted file mode 100644 index db7e5ab8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1275.pgm b/examples/autotiler/Mnist/test_img/4/1275.pgm deleted file mode 100644 index b5f634060..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1279.pgm b/examples/autotiler/Mnist/test_img/4/1279.pgm deleted file mode 100644 index 988e7aa59..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1300.pgm b/examples/autotiler/Mnist/test_img/4/1300.pgm deleted file mode 100644 index 43f8cbafb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1301.pgm b/examples/autotiler/Mnist/test_img/4/1301.pgm deleted file mode 100644 index e1256e173..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1306.pgm b/examples/autotiler/Mnist/test_img/4/1306.pgm deleted file mode 100644 index 84edda9c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1313.pgm b/examples/autotiler/Mnist/test_img/4/1313.pgm deleted file mode 100644 index 286bc3b4a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1314.pgm b/examples/autotiler/Mnist/test_img/4/1314.pgm deleted file mode 100644 index 22217b8d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1323.pgm b/examples/autotiler/Mnist/test_img/4/1323.pgm deleted file mode 100644 index 40e5f62d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1330.pgm b/examples/autotiler/Mnist/test_img/4/1330.pgm deleted file mode 100644 index c2421213e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1342.pgm b/examples/autotiler/Mnist/test_img/4/1342.pgm deleted file mode 100644 index 4f3492944..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1357.pgm b/examples/autotiler/Mnist/test_img/4/1357.pgm deleted file mode 100644 index d8d673c0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1382.pgm b/examples/autotiler/Mnist/test_img/4/1382.pgm deleted file mode 100644 index a41af7b6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/139.pgm b/examples/autotiler/Mnist/test_img/4/139.pgm deleted file mode 100644 index b163601b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1391.pgm b/examples/autotiler/Mnist/test_img/4/1391.pgm deleted file mode 100644 index 895e59c51..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1413.pgm b/examples/autotiler/Mnist/test_img/4/1413.pgm deleted file mode 100644 index 5ed431413..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1419.pgm b/examples/autotiler/Mnist/test_img/4/1419.pgm deleted file mode 100644 index 8c096c5c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1422.pgm b/examples/autotiler/Mnist/test_img/4/1422.pgm deleted file mode 100644 index b462cc74f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1427.pgm b/examples/autotiler/Mnist/test_img/4/1427.pgm deleted file mode 100644 index 38d85f0ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1437.pgm b/examples/autotiler/Mnist/test_img/4/1437.pgm deleted file mode 100644 index 779d14f88..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1440.pgm b/examples/autotiler/Mnist/test_img/4/1440.pgm deleted file mode 100644 index 7c8c399f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1453.pgm b/examples/autotiler/Mnist/test_img/4/1453.pgm deleted file mode 100644 index dc90ff8d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1461.pgm b/examples/autotiler/Mnist/test_img/4/1461.pgm deleted file mode 100644 index 4a7f99450..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1465.pgm b/examples/autotiler/Mnist/test_img/4/1465.pgm deleted file mode 100644 index 6301b8ef3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1488.pgm b/examples/autotiler/Mnist/test_img/4/1488.pgm deleted file mode 100644 index 5c008cf06..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1509.pgm b/examples/autotiler/Mnist/test_img/4/1509.pgm deleted file mode 100644 index 0c22e4e16..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1511.pgm b/examples/autotiler/Mnist/test_img/4/1511.pgm deleted file mode 100644 index 99d743a44..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1516.pgm b/examples/autotiler/Mnist/test_img/4/1516.pgm deleted file mode 100644 index 08f098ae4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1529.pgm b/examples/autotiler/Mnist/test_img/4/1529.pgm deleted file mode 100644 index 8f2280e53..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1542.pgm b/examples/autotiler/Mnist/test_img/4/1542.pgm deleted file mode 100644 index e118e62d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1547.pgm b/examples/autotiler/Mnist/test_img/4/1547.pgm deleted file mode 100644 index bc7543124..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1549.pgm b/examples/autotiler/Mnist/test_img/4/1549.pgm deleted file mode 100644 index ef9e941ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1552.pgm b/examples/autotiler/Mnist/test_img/4/1552.pgm deleted file mode 100644 index 8c8b251bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1557.pgm b/examples/autotiler/Mnist/test_img/4/1557.pgm deleted file mode 100644 index 04b0c80b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1561.pgm b/examples/autotiler/Mnist/test_img/4/1561.pgm deleted file mode 100644 index ead06bd37..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1571.pgm b/examples/autotiler/Mnist/test_img/4/1571.pgm deleted file mode 100644 index 51a2e7096..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1575.pgm b/examples/autotiler/Mnist/test_img/4/1575.pgm deleted file mode 100644 index 5bcf341c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1580.pgm b/examples/autotiler/Mnist/test_img/4/1580.pgm deleted file mode 100644 index 7f6dcfcdd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/159.pgm b/examples/autotiler/Mnist/test_img/4/159.pgm deleted file mode 100644 index c3a778ff4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1599.pgm b/examples/autotiler/Mnist/test_img/4/1599.pgm deleted file mode 100644 index 525836eee..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/160.pgm b/examples/autotiler/Mnist/test_img/4/160.pgm deleted file mode 100644 index b20114360..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1614.pgm b/examples/autotiler/Mnist/test_img/4/1614.pgm deleted file mode 100644 index e40ef5db0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1625.pgm b/examples/autotiler/Mnist/test_img/4/1625.pgm deleted file mode 100644 index 5b5b82813..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/163.pgm b/examples/autotiler/Mnist/test_img/4/163.pgm deleted file mode 100644 index 9ce3a2232..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1634.pgm b/examples/autotiler/Mnist/test_img/4/1634.pgm deleted file mode 100644 index 15795de7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1636.pgm b/examples/autotiler/Mnist/test_img/4/1636.pgm deleted file mode 100644 index d7a0dbe4a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1649.pgm b/examples/autotiler/Mnist/test_img/4/1649.pgm deleted file mode 100644 index e408a83d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1652.pgm b/examples/autotiler/Mnist/test_img/4/1652.pgm deleted file mode 100644 index ab5ddae15..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/166.pgm b/examples/autotiler/Mnist/test_img/4/166.pgm deleted file mode 100644 index a5f08269b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1665.pgm b/examples/autotiler/Mnist/test_img/4/1665.pgm deleted file mode 100644 index 01088dc1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1679.pgm b/examples/autotiler/Mnist/test_img/4/1679.pgm deleted file mode 100644 index 1390afc5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1680.pgm b/examples/autotiler/Mnist/test_img/4/1680.pgm deleted file mode 100644 index a8cf465b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/169.pgm b/examples/autotiler/Mnist/test_img/4/169.pgm deleted file mode 100644 index 189cf81a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/170.pgm b/examples/autotiler/Mnist/test_img/4/170.pgm deleted file mode 100644 index def48fb7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1701.pgm b/examples/autotiler/Mnist/test_img/4/1701.pgm deleted file mode 100644 index 7b3438c3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1706.pgm b/examples/autotiler/Mnist/test_img/4/1706.pgm deleted file mode 100644 index 90da02594..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1720.pgm b/examples/autotiler/Mnist/test_img/4/1720.pgm deleted file mode 100644 index 1089978f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1724.pgm b/examples/autotiler/Mnist/test_img/4/1724.pgm deleted file mode 100644 index 96e9822cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1735.pgm b/examples/autotiler/Mnist/test_img/4/1735.pgm deleted file mode 100644 index 143fb63eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1751.pgm b/examples/autotiler/Mnist/test_img/4/1751.pgm deleted file mode 100644 index fd6b08f1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1767.pgm b/examples/autotiler/Mnist/test_img/4/1767.pgm deleted file mode 100644 index aaaf2567c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1778.pgm b/examples/autotiler/Mnist/test_img/4/1778.pgm deleted file mode 100644 index 4a358a9b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1786.pgm b/examples/autotiler/Mnist/test_img/4/1786.pgm deleted file mode 100644 index ce2e03842..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1815.pgm b/examples/autotiler/Mnist/test_img/4/1815.pgm deleted file mode 100644 index 344cfe6a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1816.pgm b/examples/autotiler/Mnist/test_img/4/1816.pgm deleted file mode 100644 index 920e1a15e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1849.pgm b/examples/autotiler/Mnist/test_img/4/1849.pgm deleted file mode 100644 index 04ce7af8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1862.pgm b/examples/autotiler/Mnist/test_img/4/1862.pgm deleted file mode 100644 index 39ea8e926..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1864.pgm b/examples/autotiler/Mnist/test_img/4/1864.pgm deleted file mode 100644 index 1c1a1b996..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1865.pgm b/examples/autotiler/Mnist/test_img/4/1865.pgm deleted file mode 100644 index 0c9d450be..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1872.pgm b/examples/autotiler/Mnist/test_img/4/1872.pgm deleted file mode 100644 index a19056a4e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/19.pgm b/examples/autotiler/Mnist/test_img/4/19.pgm deleted file mode 100644 index 66dd26a32..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/19.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1920.pgm b/examples/autotiler/Mnist/test_img/4/1920.pgm deleted file mode 100644 index a4de40c90..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1924.pgm b/examples/autotiler/Mnist/test_img/4/1924.pgm deleted file mode 100644 index 058031d65..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1929.pgm b/examples/autotiler/Mnist/test_img/4/1929.pgm deleted file mode 100644 index 5b74b04a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1938.pgm b/examples/autotiler/Mnist/test_img/4/1938.pgm deleted file mode 100644 index 153672b44..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1956.pgm b/examples/autotiler/Mnist/test_img/4/1956.pgm deleted file mode 100644 index 01f7ffb77..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1958.pgm b/examples/autotiler/Mnist/test_img/4/1958.pgm deleted file mode 100644 index 5c280dedf..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1963.pgm b/examples/autotiler/Mnist/test_img/4/1963.pgm deleted file mode 100644 index 605449fc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1978.pgm b/examples/autotiler/Mnist/test_img/4/1978.pgm deleted file mode 100644 index d5b8a7759..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/198.pgm b/examples/autotiler/Mnist/test_img/4/198.pgm deleted file mode 100644 index ecdf47ff1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1980.pgm b/examples/autotiler/Mnist/test_img/4/1980.pgm deleted file mode 100644 index d87bbc667..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1985.pgm b/examples/autotiler/Mnist/test_img/4/1985.pgm deleted file mode 100644 index a1c58f7c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/1989.pgm b/examples/autotiler/Mnist/test_img/4/1989.pgm deleted file mode 100644 index e149a3e9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/1989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2005.pgm b/examples/autotiler/Mnist/test_img/4/2005.pgm deleted file mode 100644 index e16db52c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2007.pgm b/examples/autotiler/Mnist/test_img/4/2007.pgm deleted file mode 100644 index 45af9061c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2012.pgm b/examples/autotiler/Mnist/test_img/4/2012.pgm deleted file mode 100644 index a8b18aed8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2022.pgm b/examples/autotiler/Mnist/test_img/4/2022.pgm deleted file mode 100644 index da8455e2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2043.pgm b/examples/autotiler/Mnist/test_img/4/2043.pgm deleted file mode 100644 index 4722b44dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2046.pgm b/examples/autotiler/Mnist/test_img/4/2046.pgm deleted file mode 100644 index 47f3200a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2053.pgm b/examples/autotiler/Mnist/test_img/4/2053.pgm deleted file mode 100644 index aed864897..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2074.pgm b/examples/autotiler/Mnist/test_img/4/2074.pgm deleted file mode 100644 index c0525c660..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2084.pgm b/examples/autotiler/Mnist/test_img/4/2084.pgm deleted file mode 100644 index 490877b89..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2090.pgm b/examples/autotiler/Mnist/test_img/4/2090.pgm deleted file mode 100644 index d3239ef93..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2094.pgm b/examples/autotiler/Mnist/test_img/4/2094.pgm deleted file mode 100644 index 059676215..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/210.pgm b/examples/autotiler/Mnist/test_img/4/210.pgm deleted file mode 100644 index a916b760f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2117.pgm b/examples/autotiler/Mnist/test_img/4/2117.pgm deleted file mode 100644 index 4c15b94da..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2120.pgm b/examples/autotiler/Mnist/test_img/4/2120.pgm deleted file mode 100644 index 37d4dc1d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2124.pgm b/examples/autotiler/Mnist/test_img/4/2124.pgm deleted file mode 100644 index ef5161695..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2130.pgm b/examples/autotiler/Mnist/test_img/4/2130.pgm deleted file mode 100644 index bff1633e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2145.pgm b/examples/autotiler/Mnist/test_img/4/2145.pgm deleted file mode 100644 index fd23f07c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2148.pgm b/examples/autotiler/Mnist/test_img/4/2148.pgm deleted file mode 100644 index 5c0c1dac8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2165.pgm b/examples/autotiler/Mnist/test_img/4/2165.pgm deleted file mode 100644 index 5a072468b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2169.pgm b/examples/autotiler/Mnist/test_img/4/2169.pgm deleted file mode 100644 index 684edd3f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2173.pgm b/examples/autotiler/Mnist/test_img/4/2173.pgm deleted file mode 100644 index 9753ec270..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2183.pgm b/examples/autotiler/Mnist/test_img/4/2183.pgm deleted file mode 100644 index f90c0ba05..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2197.pgm b/examples/autotiler/Mnist/test_img/4/2197.pgm deleted file mode 100644 index 2febc4d41..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2201.pgm b/examples/autotiler/Mnist/test_img/4/2201.pgm deleted file mode 100644 index 4a87b8138..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2202.pgm b/examples/autotiler/Mnist/test_img/4/2202.pgm deleted file mode 100644 index 59daf271f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2205.pgm b/examples/autotiler/Mnist/test_img/4/2205.pgm deleted file mode 100644 index 391f59125..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2206.pgm b/examples/autotiler/Mnist/test_img/4/2206.pgm deleted file mode 100644 index 7fe135312..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2218.pgm b/examples/autotiler/Mnist/test_img/4/2218.pgm deleted file mode 100644 index 42cb597ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2223.pgm b/examples/autotiler/Mnist/test_img/4/2223.pgm deleted file mode 100644 index fa78c667b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2249.pgm b/examples/autotiler/Mnist/test_img/4/2249.pgm deleted file mode 100644 index 6a67bfc92..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2251.pgm b/examples/autotiler/Mnist/test_img/4/2251.pgm deleted file mode 100644 index 703649ecb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2256.pgm b/examples/autotiler/Mnist/test_img/4/2256.pgm deleted file mode 100644 index a26b67e80..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2264.pgm b/examples/autotiler/Mnist/test_img/4/2264.pgm deleted file mode 100644 index 7f34dd22b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2265.pgm b/examples/autotiler/Mnist/test_img/4/2265.pgm deleted file mode 100644 index 1fab20d3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/227.pgm b/examples/autotiler/Mnist/test_img/4/227.pgm deleted file mode 100644 index 702dc7ffe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2306.pgm b/examples/autotiler/Mnist/test_img/4/2306.pgm deleted file mode 100644 index ed95e287b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2307.pgm b/examples/autotiler/Mnist/test_img/4/2307.pgm deleted file mode 100644 index bf42d7a73..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2319.pgm b/examples/autotiler/Mnist/test_img/4/2319.pgm deleted file mode 100644 index cd5c2d07d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2330.pgm b/examples/autotiler/Mnist/test_img/4/2330.pgm deleted file mode 100644 index a90d8679c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2336.pgm b/examples/autotiler/Mnist/test_img/4/2336.pgm deleted file mode 100644 index 278e6b374..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2338.pgm b/examples/autotiler/Mnist/test_img/4/2338.pgm deleted file mode 100644 index 0c771be9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2340.pgm b/examples/autotiler/Mnist/test_img/4/2340.pgm deleted file mode 100644 index e1d59f36c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2363.pgm b/examples/autotiler/Mnist/test_img/4/2363.pgm deleted file mode 100644 index 71281cc5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2368.pgm b/examples/autotiler/Mnist/test_img/4/2368.pgm deleted file mode 100644 index eecfbdf90..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2371.pgm b/examples/autotiler/Mnist/test_img/4/2371.pgm deleted file mode 100644 index 303ed3926..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2373.pgm b/examples/autotiler/Mnist/test_img/4/2373.pgm deleted file mode 100644 index 176efbc6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2375.pgm b/examples/autotiler/Mnist/test_img/4/2375.pgm deleted file mode 100644 index 158003dbc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/238.pgm b/examples/autotiler/Mnist/test_img/4/238.pgm deleted file mode 100644 index 9e831d59b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2386.pgm b/examples/autotiler/Mnist/test_img/4/2386.pgm deleted file mode 100644 index 0d658982c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2394.pgm b/examples/autotiler/Mnist/test_img/4/2394.pgm deleted file mode 100644 index d278f2cbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/24.pgm b/examples/autotiler/Mnist/test_img/4/24.pgm deleted file mode 100644 index d5f5fd77f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/24.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2401.pgm b/examples/autotiler/Mnist/test_img/4/2401.pgm deleted file mode 100644 index 0c22cfa3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2402.pgm b/examples/autotiler/Mnist/test_img/4/2402.pgm deleted file mode 100644 index 09292495c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2404.pgm b/examples/autotiler/Mnist/test_img/4/2404.pgm deleted file mode 100644 index 1d5a2417f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2436.pgm b/examples/autotiler/Mnist/test_img/4/2436.pgm deleted file mode 100644 index 44a918f95..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2440.pgm b/examples/autotiler/Mnist/test_img/4/2440.pgm deleted file mode 100644 index aff32c4dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2447.pgm b/examples/autotiler/Mnist/test_img/4/2447.pgm deleted file mode 100644 index 0cb62ef76..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2457.pgm b/examples/autotiler/Mnist/test_img/4/2457.pgm deleted file mode 100644 index cc0217672..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2464.pgm b/examples/autotiler/Mnist/test_img/4/2464.pgm deleted file mode 100644 index 2e69106e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/247.pgm b/examples/autotiler/Mnist/test_img/4/247.pgm deleted file mode 100644 index c200a5fba..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/248.pgm b/examples/autotiler/Mnist/test_img/4/248.pgm deleted file mode 100644 index d29489117..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2489.pgm b/examples/autotiler/Mnist/test_img/4/2489.pgm deleted file mode 100644 index 10cf18090..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2498.pgm b/examples/autotiler/Mnist/test_img/4/2498.pgm deleted file mode 100644 index af5ca26f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2499.pgm b/examples/autotiler/Mnist/test_img/4/2499.pgm deleted file mode 100644 index d4df96a3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/250.pgm b/examples/autotiler/Mnist/test_img/4/250.pgm deleted file mode 100644 index b2245aafe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2509.pgm b/examples/autotiler/Mnist/test_img/4/2509.pgm deleted file mode 100644 index fdd4c38f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2514.pgm b/examples/autotiler/Mnist/test_img/4/2514.pgm deleted file mode 100644 index eb2e0cc35..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2530.pgm b/examples/autotiler/Mnist/test_img/4/2530.pgm deleted file mode 100644 index b546b93c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2537.pgm b/examples/autotiler/Mnist/test_img/4/2537.pgm deleted file mode 100644 index 60ca6b4bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2613.pgm b/examples/autotiler/Mnist/test_img/4/2613.pgm deleted file mode 100644 index ccba6ad2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2615.pgm b/examples/autotiler/Mnist/test_img/4/2615.pgm deleted file mode 100644 index 0e7c37069..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2630.pgm b/examples/autotiler/Mnist/test_img/4/2630.pgm deleted file mode 100644 index 0ad0adea9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2645.pgm b/examples/autotiler/Mnist/test_img/4/2645.pgm deleted file mode 100644 index 93bceedc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2658.pgm b/examples/autotiler/Mnist/test_img/4/2658.pgm deleted file mode 100644 index d13ee7c91..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2659.pgm b/examples/autotiler/Mnist/test_img/4/2659.pgm deleted file mode 100644 index 3b1abe59d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2675.pgm b/examples/autotiler/Mnist/test_img/4/2675.pgm deleted file mode 100644 index 157b03742..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2678.pgm b/examples/autotiler/Mnist/test_img/4/2678.pgm deleted file mode 100644 index bca2197cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2680.pgm b/examples/autotiler/Mnist/test_img/4/2680.pgm deleted file mode 100644 index 95f67bad1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2683.pgm b/examples/autotiler/Mnist/test_img/4/2683.pgm deleted file mode 100644 index 5bde48c36..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/27.pgm b/examples/autotiler/Mnist/test_img/4/27.pgm deleted file mode 100644 index f019e7f6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/27.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2701.pgm b/examples/autotiler/Mnist/test_img/4/2701.pgm deleted file mode 100644 index 6d0be9b0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2708.pgm b/examples/autotiler/Mnist/test_img/4/2708.pgm deleted file mode 100644 index 6281e8d98..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2709.pgm b/examples/autotiler/Mnist/test_img/4/2709.pgm deleted file mode 100644 index 91df86496..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2715.pgm b/examples/autotiler/Mnist/test_img/4/2715.pgm deleted file mode 100644 index 333713d71..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/275.pgm b/examples/autotiler/Mnist/test_img/4/275.pgm deleted file mode 100644 index b71f00af5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2771.pgm b/examples/autotiler/Mnist/test_img/4/2771.pgm deleted file mode 100644 index 1bc78ba19..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2778.pgm b/examples/autotiler/Mnist/test_img/4/2778.pgm deleted file mode 100644 index b9a0f3571..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2804.pgm b/examples/autotiler/Mnist/test_img/4/2804.pgm deleted file mode 100644 index 3446c544a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2806.pgm b/examples/autotiler/Mnist/test_img/4/2806.pgm deleted file mode 100644 index 99c49a91a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2818.pgm b/examples/autotiler/Mnist/test_img/4/2818.pgm deleted file mode 100644 index 61e179b26..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2819.pgm b/examples/autotiler/Mnist/test_img/4/2819.pgm deleted file mode 100644 index 6f30d76b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2828.pgm b/examples/autotiler/Mnist/test_img/4/2828.pgm deleted file mode 100644 index a927ad31e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2835.pgm b/examples/autotiler/Mnist/test_img/4/2835.pgm deleted file mode 100644 index 8735189a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2836.pgm b/examples/autotiler/Mnist/test_img/4/2836.pgm deleted file mode 100644 index 1195a2fca..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2847.pgm b/examples/autotiler/Mnist/test_img/4/2847.pgm deleted file mode 100644 index 026c22808..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/287.pgm b/examples/autotiler/Mnist/test_img/4/287.pgm deleted file mode 100644 index f4e60d115..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2872.pgm b/examples/autotiler/Mnist/test_img/4/2872.pgm deleted file mode 100644 index 4d0460204..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2877.pgm b/examples/autotiler/Mnist/test_img/4/2877.pgm deleted file mode 100644 index edfee03bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2879.pgm b/examples/autotiler/Mnist/test_img/4/2879.pgm deleted file mode 100644 index 1fe5b86f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2882.pgm b/examples/autotiler/Mnist/test_img/4/2882.pgm deleted file mode 100644 index bec3a8fea..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2886.pgm b/examples/autotiler/Mnist/test_img/4/2886.pgm deleted file mode 100644 index 4a40ea569..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2889.pgm b/examples/autotiler/Mnist/test_img/4/2889.pgm deleted file mode 100644 index fbcff6913..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2898.pgm b/examples/autotiler/Mnist/test_img/4/2898.pgm deleted file mode 100644 index eb841f53a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2900.pgm b/examples/autotiler/Mnist/test_img/4/2900.pgm deleted file mode 100644 index 0c7783836..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2901.pgm b/examples/autotiler/Mnist/test_img/4/2901.pgm deleted file mode 100644 index b50af01d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2907.pgm b/examples/autotiler/Mnist/test_img/4/2907.pgm deleted file mode 100644 index cfc70576c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2917.pgm b/examples/autotiler/Mnist/test_img/4/2917.pgm deleted file mode 100644 index 6a41ed764..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2936.pgm b/examples/autotiler/Mnist/test_img/4/2936.pgm deleted file mode 100644 index c2202af26..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2938.pgm b/examples/autotiler/Mnist/test_img/4/2938.pgm deleted file mode 100644 index 88e05fead..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/295.pgm b/examples/autotiler/Mnist/test_img/4/295.pgm deleted file mode 100644 index 1a080b27e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2963.pgm b/examples/autotiler/Mnist/test_img/4/2963.pgm deleted file mode 100644 index 38acb276e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/2998.pgm b/examples/autotiler/Mnist/test_img/4/2998.pgm deleted file mode 100644 index 7cd7ce6ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/2998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/300.pgm b/examples/autotiler/Mnist/test_img/4/300.pgm deleted file mode 100644 index da6265276..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3017.pgm b/examples/autotiler/Mnist/test_img/4/3017.pgm deleted file mode 100644 index f8b5a9ffc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3024.pgm b/examples/autotiler/Mnist/test_img/4/3024.pgm deleted file mode 100644 index ce998f704..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3025.pgm b/examples/autotiler/Mnist/test_img/4/3025.pgm deleted file mode 100644 index fffe2006e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3029.pgm b/examples/autotiler/Mnist/test_img/4/3029.pgm deleted file mode 100644 index 2f2835653..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/304.pgm b/examples/autotiler/Mnist/test_img/4/304.pgm deleted file mode 100644 index 016ce0fb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3042.pgm b/examples/autotiler/Mnist/test_img/4/3042.pgm deleted file mode 100644 index 1b3b41696..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3066.pgm b/examples/autotiler/Mnist/test_img/4/3066.pgm deleted file mode 100644 index 70cd72da0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3069.pgm b/examples/autotiler/Mnist/test_img/4/3069.pgm deleted file mode 100644 index 54b9c3060..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3076.pgm b/examples/autotiler/Mnist/test_img/4/3076.pgm deleted file mode 100644 index 9a3451ed5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/308.pgm b/examples/autotiler/Mnist/test_img/4/308.pgm deleted file mode 100644 index b114100dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3086.pgm b/examples/autotiler/Mnist/test_img/4/3086.pgm deleted file mode 100644 index b050ec70b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3096.pgm b/examples/autotiler/Mnist/test_img/4/3096.pgm deleted file mode 100644 index 45203e191..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3114.pgm b/examples/autotiler/Mnist/test_img/4/3114.pgm deleted file mode 100644 index 76b7fde44..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3123.pgm b/examples/autotiler/Mnist/test_img/4/3123.pgm deleted file mode 100644 index 04c8d1674..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3133.pgm b/examples/autotiler/Mnist/test_img/4/3133.pgm deleted file mode 100644 index 8a8ec66e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3137.pgm b/examples/autotiler/Mnist/test_img/4/3137.pgm deleted file mode 100644 index bb0ff18d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3154.pgm b/examples/autotiler/Mnist/test_img/4/3154.pgm deleted file mode 100644 index c90ac3c26..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3155.pgm b/examples/autotiler/Mnist/test_img/4/3155.pgm deleted file mode 100644 index b5b6b8793..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3169.pgm b/examples/autotiler/Mnist/test_img/4/3169.pgm deleted file mode 100644 index a683391ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3172.pgm b/examples/autotiler/Mnist/test_img/4/3172.pgm deleted file mode 100644 index 79bfd271e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3174.pgm b/examples/autotiler/Mnist/test_img/4/3174.pgm deleted file mode 100644 index 3d1df281d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3188.pgm b/examples/autotiler/Mnist/test_img/4/3188.pgm deleted file mode 100644 index cf6d347be..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3194.pgm b/examples/autotiler/Mnist/test_img/4/3194.pgm deleted file mode 100644 index 4e7d69b3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3228.pgm b/examples/autotiler/Mnist/test_img/4/3228.pgm deleted file mode 100644 index 30ac430e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3232.pgm b/examples/autotiler/Mnist/test_img/4/3232.pgm deleted file mode 100644 index b6cbb2285..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3233.pgm b/examples/autotiler/Mnist/test_img/4/3233.pgm deleted file mode 100644 index 3925e4295..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3234.pgm b/examples/autotiler/Mnist/test_img/4/3234.pgm deleted file mode 100644 index 5a18acbe4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3235.pgm b/examples/autotiler/Mnist/test_img/4/3235.pgm deleted file mode 100644 index 57fde6e59..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3247.pgm b/examples/autotiler/Mnist/test_img/4/3247.pgm deleted file mode 100644 index d638bd0ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3249.pgm b/examples/autotiler/Mnist/test_img/4/3249.pgm deleted file mode 100644 index f52f7a3d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/325.pgm b/examples/autotiler/Mnist/test_img/4/325.pgm deleted file mode 100644 index c6f88bcad..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3278.pgm b/examples/autotiler/Mnist/test_img/4/3278.pgm deleted file mode 100644 index 839dd8d11..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3282.pgm b/examples/autotiler/Mnist/test_img/4/3282.pgm deleted file mode 100644 index 763f88a54..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3288.pgm b/examples/autotiler/Mnist/test_img/4/3288.pgm deleted file mode 100644 index c574df4b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3291.pgm b/examples/autotiler/Mnist/test_img/4/3291.pgm deleted file mode 100644 index 07b000d8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3298.pgm b/examples/autotiler/Mnist/test_img/4/3298.pgm deleted file mode 100644 index 2263d7c46..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/33.pgm b/examples/autotiler/Mnist/test_img/4/33.pgm deleted file mode 100644 index c37023c81..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/33.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3332.pgm b/examples/autotiler/Mnist/test_img/4/3332.pgm deleted file mode 100644 index 462eb63c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3341.pgm b/examples/autotiler/Mnist/test_img/4/3341.pgm deleted file mode 100644 index 52b37c58b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3357.pgm b/examples/autotiler/Mnist/test_img/4/3357.pgm deleted file mode 100644 index 34436de6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3366.pgm b/examples/autotiler/Mnist/test_img/4/3366.pgm deleted file mode 100644 index bcf66dccc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3370.pgm b/examples/autotiler/Mnist/test_img/4/3370.pgm deleted file mode 100644 index 5156d9629..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3377.pgm b/examples/autotiler/Mnist/test_img/4/3377.pgm deleted file mode 100644 index 5b1a2690d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3388.pgm b/examples/autotiler/Mnist/test_img/4/3388.pgm deleted file mode 100644 index e014209d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3397.pgm b/examples/autotiler/Mnist/test_img/4/3397.pgm deleted file mode 100644 index f2354d0d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3405.pgm b/examples/autotiler/Mnist/test_img/4/3405.pgm deleted file mode 100644 index c3588a4db..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3410.pgm b/examples/autotiler/Mnist/test_img/4/3410.pgm deleted file mode 100644 index 164014f07..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3429.pgm b/examples/autotiler/Mnist/test_img/4/3429.pgm deleted file mode 100644 index e673a072a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3431.pgm b/examples/autotiler/Mnist/test_img/4/3431.pgm deleted file mode 100644 index df3a2eb9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3437.pgm b/examples/autotiler/Mnist/test_img/4/3437.pgm deleted file mode 100644 index 7d7778aed..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3444.pgm b/examples/autotiler/Mnist/test_img/4/3444.pgm deleted file mode 100644 index c1736d4fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3463.pgm b/examples/autotiler/Mnist/test_img/4/3463.pgm deleted file mode 100644 index c7b8f46c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3465.pgm b/examples/autotiler/Mnist/test_img/4/3465.pgm deleted file mode 100644 index 3e7e4d3c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3490.pgm b/examples/autotiler/Mnist/test_img/4/3490.pgm deleted file mode 100644 index be1b46bfb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3495.pgm b/examples/autotiler/Mnist/test_img/4/3495.pgm deleted file mode 100644 index 5199d99eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3497.pgm b/examples/autotiler/Mnist/test_img/4/3497.pgm deleted file mode 100644 index 9e8756f13..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3500.pgm b/examples/autotiler/Mnist/test_img/4/3500.pgm deleted file mode 100644 index 0a2c66909..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3517.pgm b/examples/autotiler/Mnist/test_img/4/3517.pgm deleted file mode 100644 index 2428b3013..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3523.pgm b/examples/autotiler/Mnist/test_img/4/3523.pgm deleted file mode 100644 index 863fbf64e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3530.pgm b/examples/autotiler/Mnist/test_img/4/3530.pgm deleted file mode 100644 index c8cd83d76..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3533.pgm b/examples/autotiler/Mnist/test_img/4/3533.pgm deleted file mode 100644 index 4dcd6dfc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3534.pgm b/examples/autotiler/Mnist/test_img/4/3534.pgm deleted file mode 100644 index 244154d89..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3541.pgm b/examples/autotiler/Mnist/test_img/4/3541.pgm deleted file mode 100644 index e9054616a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3542.pgm b/examples/autotiler/Mnist/test_img/4/3542.pgm deleted file mode 100644 index 3df52fc32..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3543.pgm b/examples/autotiler/Mnist/test_img/4/3543.pgm deleted file mode 100644 index 69bba2b8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3544.pgm b/examples/autotiler/Mnist/test_img/4/3544.pgm deleted file mode 100644 index 2f49e6f88..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3551.pgm b/examples/autotiler/Mnist/test_img/4/3551.pgm deleted file mode 100644 index e097c476f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3561.pgm b/examples/autotiler/Mnist/test_img/4/3561.pgm deleted file mode 100644 index bf59e423d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3568.pgm b/examples/autotiler/Mnist/test_img/4/3568.pgm deleted file mode 100644 index 72f12b05d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3571.pgm b/examples/autotiler/Mnist/test_img/4/3571.pgm deleted file mode 100644 index fb79da940..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3596.pgm b/examples/autotiler/Mnist/test_img/4/3596.pgm deleted file mode 100644 index a380d7f73..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/360.pgm b/examples/autotiler/Mnist/test_img/4/360.pgm deleted file mode 100644 index c20b3fb30..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3607.pgm b/examples/autotiler/Mnist/test_img/4/3607.pgm deleted file mode 100644 index c9703f208..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3610.pgm b/examples/autotiler/Mnist/test_img/4/3610.pgm deleted file mode 100644 index 6897d9b9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3612.pgm b/examples/autotiler/Mnist/test_img/4/3612.pgm deleted file mode 100644 index 9cb08fcb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3615.pgm b/examples/autotiler/Mnist/test_img/4/3615.pgm deleted file mode 100644 index 64b59451a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3621.pgm b/examples/autotiler/Mnist/test_img/4/3621.pgm deleted file mode 100644 index 210db812b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3653.pgm b/examples/autotiler/Mnist/test_img/4/3653.pgm deleted file mode 100644 index 8b64539c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3672.pgm b/examples/autotiler/Mnist/test_img/4/3672.pgm deleted file mode 100644 index 0cade0f2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3676.pgm b/examples/autotiler/Mnist/test_img/4/3676.pgm deleted file mode 100644 index 1c8832e04..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3684.pgm b/examples/autotiler/Mnist/test_img/4/3684.pgm deleted file mode 100644 index 4baebf4ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3685.pgm b/examples/autotiler/Mnist/test_img/4/3685.pgm deleted file mode 100644 index 11627356f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3700.pgm b/examples/autotiler/Mnist/test_img/4/3700.pgm deleted file mode 100644 index 67cebb15f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3718.pgm b/examples/autotiler/Mnist/test_img/4/3718.pgm deleted file mode 100644 index 3bce1bb22..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3722.pgm b/examples/autotiler/Mnist/test_img/4/3722.pgm deleted file mode 100644 index d8c97b066..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3726.pgm b/examples/autotiler/Mnist/test_img/4/3726.pgm deleted file mode 100644 index 33ec4a30f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3728.pgm b/examples/autotiler/Mnist/test_img/4/3728.pgm deleted file mode 100644 index d505332ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3752.pgm b/examples/autotiler/Mnist/test_img/4/3752.pgm deleted file mode 100644 index beecd9a32..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3758.pgm b/examples/autotiler/Mnist/test_img/4/3758.pgm deleted file mode 100644 index 522b1032b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/376.pgm b/examples/autotiler/Mnist/test_img/4/376.pgm deleted file mode 100644 index 1d2bef599..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3770.pgm b/examples/autotiler/Mnist/test_img/4/3770.pgm deleted file mode 100644 index 3dc6a0a14..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3780.pgm b/examples/autotiler/Mnist/test_img/4/3780.pgm deleted file mode 100644 index a54675114..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/379.pgm b/examples/autotiler/Mnist/test_img/4/379.pgm deleted file mode 100644 index 889505715..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3792.pgm b/examples/autotiler/Mnist/test_img/4/3792.pgm deleted file mode 100644 index 3e19e3092..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3793.pgm b/examples/autotiler/Mnist/test_img/4/3793.pgm deleted file mode 100644 index a78336fe3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3819.pgm b/examples/autotiler/Mnist/test_img/4/3819.pgm deleted file mode 100644 index f062a9aae..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3828.pgm b/examples/autotiler/Mnist/test_img/4/3828.pgm deleted file mode 100644 index 118abe5cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3841.pgm b/examples/autotiler/Mnist/test_img/4/3841.pgm deleted file mode 100644 index 0537ed552..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3865.pgm b/examples/autotiler/Mnist/test_img/4/3865.pgm deleted file mode 100644 index bbbf10bbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3875.pgm b/examples/autotiler/Mnist/test_img/4/3875.pgm deleted file mode 100644 index dd7c72b81..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3915.pgm b/examples/autotiler/Mnist/test_img/4/3915.pgm deleted file mode 100644 index 822aa6f09..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3938.pgm b/examples/autotiler/Mnist/test_img/4/3938.pgm deleted file mode 100644 index 398d77b2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3941.pgm b/examples/autotiler/Mnist/test_img/4/3941.pgm deleted file mode 100644 index 1ef70d84d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3956.pgm b/examples/autotiler/Mnist/test_img/4/3956.pgm deleted file mode 100644 index de3335661..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3971.pgm b/examples/autotiler/Mnist/test_img/4/3971.pgm deleted file mode 100644 index ec56c1bd7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/398.pgm b/examples/autotiler/Mnist/test_img/4/398.pgm deleted file mode 100644 index 0e8c5f428..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/399.pgm b/examples/autotiler/Mnist/test_img/4/399.pgm deleted file mode 100644 index 0e96c4a75..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3996.pgm b/examples/autotiler/Mnist/test_img/4/3996.pgm deleted file mode 100644 index 3a04fdddc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/3998.pgm b/examples/autotiler/Mnist/test_img/4/3998.pgm deleted file mode 100644 index b1ca8258c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/3998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4.pgm b/examples/autotiler/Mnist/test_img/4/4.pgm deleted file mode 100644 index af247945c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4001.pgm b/examples/autotiler/Mnist/test_img/4/4001.pgm deleted file mode 100644 index ed2d6d491..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4012.pgm b/examples/autotiler/Mnist/test_img/4/4012.pgm deleted file mode 100644 index fb5550dcf..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4017.pgm b/examples/autotiler/Mnist/test_img/4/4017.pgm deleted file mode 100644 index ea5dba561..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4024.pgm b/examples/autotiler/Mnist/test_img/4/4024.pgm deleted file mode 100644 index fadf68d43..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4029.pgm b/examples/autotiler/Mnist/test_img/4/4029.pgm deleted file mode 100644 index b037659eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4042.pgm b/examples/autotiler/Mnist/test_img/4/4042.pgm deleted file mode 100644 index 37819e618..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4046.pgm b/examples/autotiler/Mnist/test_img/4/4046.pgm deleted file mode 100644 index 965fade34..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/405.pgm b/examples/autotiler/Mnist/test_img/4/405.pgm deleted file mode 100644 index 43048ab8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4060.pgm b/examples/autotiler/Mnist/test_img/4/4060.pgm deleted file mode 100644 index 4b761e565..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4071.pgm b/examples/autotiler/Mnist/test_img/4/4071.pgm deleted file mode 100644 index d46983664..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4172.pgm b/examples/autotiler/Mnist/test_img/4/4172.pgm deleted file mode 100644 index 546807811..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4192.pgm b/examples/autotiler/Mnist/test_img/4/4192.pgm deleted file mode 100644 index cc5f84f67..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4194.pgm b/examples/autotiler/Mnist/test_img/4/4194.pgm deleted file mode 100644 index 5fbb904c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4197.pgm b/examples/autotiler/Mnist/test_img/4/4197.pgm deleted file mode 100644 index f04cc49b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/42.pgm b/examples/autotiler/Mnist/test_img/4/42.pgm deleted file mode 100644 index 987a22297..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/42.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/420.pgm b/examples/autotiler/Mnist/test_img/4/420.pgm deleted file mode 100644 index 3d80015f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4217.pgm b/examples/autotiler/Mnist/test_img/4/4217.pgm deleted file mode 100644 index 465726d19..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4221.pgm b/examples/autotiler/Mnist/test_img/4/4221.pgm deleted file mode 100644 index bc85becf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4223.pgm b/examples/autotiler/Mnist/test_img/4/4223.pgm deleted file mode 100644 index 6361f0a25..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4229.pgm b/examples/autotiler/Mnist/test_img/4/4229.pgm deleted file mode 100644 index 437f1c810..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/425.pgm b/examples/autotiler/Mnist/test_img/4/425.pgm deleted file mode 100644 index 8cfcdd657..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4258.pgm b/examples/autotiler/Mnist/test_img/4/4258.pgm deleted file mode 100644 index 205912c5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4265.pgm b/examples/autotiler/Mnist/test_img/4/4265.pgm deleted file mode 100644 index c5f324031..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4266.pgm b/examples/autotiler/Mnist/test_img/4/4266.pgm deleted file mode 100644 index c93575567..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4268.pgm b/examples/autotiler/Mnist/test_img/4/4268.pgm deleted file mode 100644 index c16285585..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4269.pgm b/examples/autotiler/Mnist/test_img/4/4269.pgm deleted file mode 100644 index 053ae0fc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/428.pgm b/examples/autotiler/Mnist/test_img/4/428.pgm deleted file mode 100644 index ed046750f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4291.pgm b/examples/autotiler/Mnist/test_img/4/4291.pgm deleted file mode 100644 index e1e605e05..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4313.pgm b/examples/autotiler/Mnist/test_img/4/4313.pgm deleted file mode 100644 index 0fe63737f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/432.pgm b/examples/autotiler/Mnist/test_img/4/432.pgm deleted file mode 100644 index 3eb8b88c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4324.pgm b/examples/autotiler/Mnist/test_img/4/4324.pgm deleted file mode 100644 index 90189bc12..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4332.pgm b/examples/autotiler/Mnist/test_img/4/4332.pgm deleted file mode 100644 index 7dc6c87b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4373.pgm b/examples/autotiler/Mnist/test_img/4/4373.pgm deleted file mode 100644 index b99c3a1ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4377.pgm b/examples/autotiler/Mnist/test_img/4/4377.pgm deleted file mode 100644 index b214fe525..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4379.pgm b/examples/autotiler/Mnist/test_img/4/4379.pgm deleted file mode 100644 index 49ac84488..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4382.pgm b/examples/autotiler/Mnist/test_img/4/4382.pgm deleted file mode 100644 index 19bbdf722..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4396.pgm b/examples/autotiler/Mnist/test_img/4/4396.pgm deleted file mode 100644 index b342ae822..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4414.pgm b/examples/autotiler/Mnist/test_img/4/4414.pgm deleted file mode 100644 index 9353ab084..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4421.pgm b/examples/autotiler/Mnist/test_img/4/4421.pgm deleted file mode 100644 index 76ba72641..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4431.pgm b/examples/autotiler/Mnist/test_img/4/4431.pgm deleted file mode 100644 index 849c95483..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4438.pgm b/examples/autotiler/Mnist/test_img/4/4438.pgm deleted file mode 100644 index 6ad9db3f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4458.pgm b/examples/autotiler/Mnist/test_img/4/4458.pgm deleted file mode 100644 index 29af7e9c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4465.pgm b/examples/autotiler/Mnist/test_img/4/4465.pgm deleted file mode 100644 index 5f9503a2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4468.pgm b/examples/autotiler/Mnist/test_img/4/4468.pgm deleted file mode 100644 index 806d0668e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/447.pgm b/examples/autotiler/Mnist/test_img/4/447.pgm deleted file mode 100644 index 961e4802a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4475.pgm b/examples/autotiler/Mnist/test_img/4/4475.pgm deleted file mode 100644 index 13b276bf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4481.pgm b/examples/autotiler/Mnist/test_img/4/4481.pgm deleted file mode 100644 index f3fb17118..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4483.pgm b/examples/autotiler/Mnist/test_img/4/4483.pgm deleted file mode 100644 index e860e2a31..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4490.pgm b/examples/autotiler/Mnist/test_img/4/4490.pgm deleted file mode 100644 index 627828ddc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4514.pgm b/examples/autotiler/Mnist/test_img/4/4514.pgm deleted file mode 100644 index 7f7475c7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4519.pgm b/examples/autotiler/Mnist/test_img/4/4519.pgm deleted file mode 100644 index 2cdfd8f99..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4544.pgm b/examples/autotiler/Mnist/test_img/4/4544.pgm deleted file mode 100644 index 9bca97fd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4558.pgm b/examples/autotiler/Mnist/test_img/4/4558.pgm deleted file mode 100644 index 1c3a0493c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4567.pgm b/examples/autotiler/Mnist/test_img/4/4567.pgm deleted file mode 100644 index 897d777b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4575.pgm b/examples/autotiler/Mnist/test_img/4/4575.pgm deleted file mode 100644 index ffdf1c81b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4576.pgm b/examples/autotiler/Mnist/test_img/4/4576.pgm deleted file mode 100644 index 5af423a32..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4590.pgm b/examples/autotiler/Mnist/test_img/4/4590.pgm deleted file mode 100644 index 0c0e1f8d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4598.pgm b/examples/autotiler/Mnist/test_img/4/4598.pgm deleted file mode 100644 index 3eded1685..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4609.pgm b/examples/autotiler/Mnist/test_img/4/4609.pgm deleted file mode 100644 index 79385e44d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4652.pgm b/examples/autotiler/Mnist/test_img/4/4652.pgm deleted file mode 100644 index d9f07d092..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4661.pgm b/examples/autotiler/Mnist/test_img/4/4661.pgm deleted file mode 100644 index 02afe042e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4695.pgm b/examples/autotiler/Mnist/test_img/4/4695.pgm deleted file mode 100644 index 7c6b91bc2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4721.pgm b/examples/autotiler/Mnist/test_img/4/4721.pgm deleted file mode 100644 index f8f1bb04e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4738.pgm b/examples/autotiler/Mnist/test_img/4/4738.pgm deleted file mode 100644 index b2939108c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4745.pgm b/examples/autotiler/Mnist/test_img/4/4745.pgm deleted file mode 100644 index c195e5a51..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/475.pgm b/examples/autotiler/Mnist/test_img/4/475.pgm deleted file mode 100644 index a2ac755b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4751.pgm b/examples/autotiler/Mnist/test_img/4/4751.pgm deleted file mode 100644 index 435ce37d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4768.pgm b/examples/autotiler/Mnist/test_img/4/4768.pgm deleted file mode 100644 index c84d7fb13..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4772.pgm b/examples/autotiler/Mnist/test_img/4/4772.pgm deleted file mode 100644 index 2aceec9b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4783.pgm b/examples/autotiler/Mnist/test_img/4/4783.pgm deleted file mode 100644 index eedbf508f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4791.pgm b/examples/autotiler/Mnist/test_img/4/4791.pgm deleted file mode 100644 index 94aaa05ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/48.pgm b/examples/autotiler/Mnist/test_img/4/48.pgm deleted file mode 100644 index 425f9faa2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/48.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4803.pgm b/examples/autotiler/Mnist/test_img/4/4803.pgm deleted file mode 100644 index e9562fc64..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4813.pgm b/examples/autotiler/Mnist/test_img/4/4813.pgm deleted file mode 100644 index 81df7435b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4826.pgm b/examples/autotiler/Mnist/test_img/4/4826.pgm deleted file mode 100644 index f97f53b1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4827.pgm b/examples/autotiler/Mnist/test_img/4/4827.pgm deleted file mode 100644 index ecbf5c4d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/484.pgm b/examples/autotiler/Mnist/test_img/4/484.pgm deleted file mode 100644 index 2c7305b61..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4842.pgm b/examples/autotiler/Mnist/test_img/4/4842.pgm deleted file mode 100644 index 8626ac23d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4860.pgm b/examples/autotiler/Mnist/test_img/4/4860.pgm deleted file mode 100644 index d61664394..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4866.pgm b/examples/autotiler/Mnist/test_img/4/4866.pgm deleted file mode 100644 index 8b90363ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4893.pgm b/examples/autotiler/Mnist/test_img/4/4893.pgm deleted file mode 100644 index ba8a3935a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4896.pgm b/examples/autotiler/Mnist/test_img/4/4896.pgm deleted file mode 100644 index 9de85368f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/49.pgm b/examples/autotiler/Mnist/test_img/4/49.pgm deleted file mode 100644 index 43af885da..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/49.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4906.pgm b/examples/autotiler/Mnist/test_img/4/4906.pgm deleted file mode 100644 index 9f0bf2e03..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4911.pgm b/examples/autotiler/Mnist/test_img/4/4911.pgm deleted file mode 100644 index 1ce07ef6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4912.pgm b/examples/autotiler/Mnist/test_img/4/4912.pgm deleted file mode 100644 index ab7d0e646..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4916.pgm b/examples/autotiler/Mnist/test_img/4/4916.pgm deleted file mode 100644 index 3c25ea828..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4929.pgm b/examples/autotiler/Mnist/test_img/4/4929.pgm deleted file mode 100644 index ff6be6bff..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4946.pgm b/examples/autotiler/Mnist/test_img/4/4946.pgm deleted file mode 100644 index 079c4dd30..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/497.pgm b/examples/autotiler/Mnist/test_img/4/497.pgm deleted file mode 100644 index c911396d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4974.pgm b/examples/autotiler/Mnist/test_img/4/4974.pgm deleted file mode 100644 index 913bf195d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4976.pgm b/examples/autotiler/Mnist/test_img/4/4976.pgm deleted file mode 100644 index 1b0a63ffb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4987.pgm b/examples/autotiler/Mnist/test_img/4/4987.pgm deleted file mode 100644 index 8825f7fe6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/4998.pgm b/examples/autotiler/Mnist/test_img/4/4998.pgm deleted file mode 100644 index 411ff3fa6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/4998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5004.pgm b/examples/autotiler/Mnist/test_img/4/5004.pgm deleted file mode 100644 index 9240fa7f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5023.pgm b/examples/autotiler/Mnist/test_img/4/5023.pgm deleted file mode 100644 index 8fa5179fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5027.pgm b/examples/autotiler/Mnist/test_img/4/5027.pgm deleted file mode 100644 index db349f15c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5032.pgm b/examples/autotiler/Mnist/test_img/4/5032.pgm deleted file mode 100644 index d36e0443f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5039.pgm b/examples/autotiler/Mnist/test_img/4/5039.pgm deleted file mode 100644 index 9b2345c1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5047.pgm b/examples/autotiler/Mnist/test_img/4/5047.pgm deleted file mode 100644 index 0ace9e402..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5055.pgm b/examples/autotiler/Mnist/test_img/4/5055.pgm deleted file mode 100644 index 5bce38045..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5063.pgm b/examples/autotiler/Mnist/test_img/4/5063.pgm deleted file mode 100644 index 8dc86abe9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5068.pgm b/examples/autotiler/Mnist/test_img/4/5068.pgm deleted file mode 100644 index 9d3f07d53..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5076.pgm b/examples/autotiler/Mnist/test_img/4/5076.pgm deleted file mode 100644 index b0aa2df52..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5082.pgm b/examples/autotiler/Mnist/test_img/4/5082.pgm deleted file mode 100644 index 275f31699..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5084.pgm b/examples/autotiler/Mnist/test_img/4/5084.pgm deleted file mode 100644 index f26c2f41c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5096.pgm b/examples/autotiler/Mnist/test_img/4/5096.pgm deleted file mode 100644 index 75138bd2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5101.pgm b/examples/autotiler/Mnist/test_img/4/5101.pgm deleted file mode 100644 index fd38cec36..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5104.pgm b/examples/autotiler/Mnist/test_img/4/5104.pgm deleted file mode 100644 index b20a982f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/511.pgm b/examples/autotiler/Mnist/test_img/4/511.pgm deleted file mode 100644 index 8c9625e65..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5123.pgm b/examples/autotiler/Mnist/test_img/4/5123.pgm deleted file mode 100644 index 66fea3a65..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5126.pgm b/examples/autotiler/Mnist/test_img/4/5126.pgm deleted file mode 100644 index 8745a72b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5151.pgm b/examples/autotiler/Mnist/test_img/4/5151.pgm deleted file mode 100644 index 5d3cdf453..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5159.pgm b/examples/autotiler/Mnist/test_img/4/5159.pgm deleted file mode 100644 index 0d5562a58..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5169.pgm b/examples/autotiler/Mnist/test_img/4/5169.pgm deleted file mode 100644 index 9ac103b02..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5175.pgm b/examples/autotiler/Mnist/test_img/4/5175.pgm deleted file mode 100644 index 5c189cf83..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5178.pgm b/examples/autotiler/Mnist/test_img/4/5178.pgm deleted file mode 100644 index b50347305..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/519.pgm b/examples/autotiler/Mnist/test_img/4/519.pgm deleted file mode 100644 index a3bd32a5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5191.pgm b/examples/autotiler/Mnist/test_img/4/5191.pgm deleted file mode 100644 index a0320a998..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5195.pgm b/examples/autotiler/Mnist/test_img/4/5195.pgm deleted file mode 100644 index d85526105..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5200.pgm b/examples/autotiler/Mnist/test_img/4/5200.pgm deleted file mode 100644 index 12dc08be6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5201.pgm b/examples/autotiler/Mnist/test_img/4/5201.pgm deleted file mode 100644 index 4460f6c06..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5202.pgm b/examples/autotiler/Mnist/test_img/4/5202.pgm deleted file mode 100644 index e1fa07845..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5239.pgm b/examples/autotiler/Mnist/test_img/4/5239.pgm deleted file mode 100644 index 8e8949fa8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5256.pgm b/examples/autotiler/Mnist/test_img/4/5256.pgm deleted file mode 100644 index c2a3468af..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5260.pgm b/examples/autotiler/Mnist/test_img/4/5260.pgm deleted file mode 100644 index 9f3d28c07..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5274.pgm b/examples/autotiler/Mnist/test_img/4/5274.pgm deleted file mode 100644 index 2568ccf6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5284.pgm b/examples/autotiler/Mnist/test_img/4/5284.pgm deleted file mode 100644 index 60e36583b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5294.pgm b/examples/autotiler/Mnist/test_img/4/5294.pgm deleted file mode 100644 index 12b158306..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5312.pgm b/examples/autotiler/Mnist/test_img/4/5312.pgm deleted file mode 100644 index 65bf6a28c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5319.pgm b/examples/autotiler/Mnist/test_img/4/5319.pgm deleted file mode 100644 index f04047609..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/532.pgm b/examples/autotiler/Mnist/test_img/4/532.pgm deleted file mode 100644 index 1be924927..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5322.pgm b/examples/autotiler/Mnist/test_img/4/5322.pgm deleted file mode 100644 index d534abf4a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/533.pgm b/examples/autotiler/Mnist/test_img/4/533.pgm deleted file mode 100644 index 13dea1f78..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5335.pgm b/examples/autotiler/Mnist/test_img/4/5335.pgm deleted file mode 100644 index 18ab7ebcb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5345.pgm b/examples/autotiler/Mnist/test_img/4/5345.pgm deleted file mode 100644 index b1aa02364..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5348.pgm b/examples/autotiler/Mnist/test_img/4/5348.pgm deleted file mode 100644 index 3869bf067..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/535.pgm b/examples/autotiler/Mnist/test_img/4/535.pgm deleted file mode 100644 index c8f99b732..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5355.pgm b/examples/autotiler/Mnist/test_img/4/5355.pgm deleted file mode 100644 index d00e5b846..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5362.pgm b/examples/autotiler/Mnist/test_img/4/5362.pgm deleted file mode 100644 index fb0e1c2b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5393.pgm b/examples/autotiler/Mnist/test_img/4/5393.pgm deleted file mode 100644 index 096602371..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5395.pgm b/examples/autotiler/Mnist/test_img/4/5395.pgm deleted file mode 100644 index f1461c9dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5409.pgm b/examples/autotiler/Mnist/test_img/4/5409.pgm deleted file mode 100644 index a880d9cb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/541.pgm b/examples/autotiler/Mnist/test_img/4/541.pgm deleted file mode 100644 index 13387f24a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5419.pgm b/examples/autotiler/Mnist/test_img/4/5419.pgm deleted file mode 100644 index 6f98e77a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5426.pgm b/examples/autotiler/Mnist/test_img/4/5426.pgm deleted file mode 100644 index 2e5d3109b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5439.pgm b/examples/autotiler/Mnist/test_img/4/5439.pgm deleted file mode 100644 index 7f212c0ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/544.pgm b/examples/autotiler/Mnist/test_img/4/544.pgm deleted file mode 100644 index 40cef08d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5440.pgm b/examples/autotiler/Mnist/test_img/4/5440.pgm deleted file mode 100644 index 78f20eb83..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5444.pgm b/examples/autotiler/Mnist/test_img/4/5444.pgm deleted file mode 100644 index 239199779..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5448.pgm b/examples/autotiler/Mnist/test_img/4/5448.pgm deleted file mode 100644 index a933dd95c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5464.pgm b/examples/autotiler/Mnist/test_img/4/5464.pgm deleted file mode 100644 index b9bf53c3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5474.pgm b/examples/autotiler/Mnist/test_img/4/5474.pgm deleted file mode 100644 index 30772d0b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5476.pgm b/examples/autotiler/Mnist/test_img/4/5476.pgm deleted file mode 100644 index 87fed1a36..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5500.pgm b/examples/autotiler/Mnist/test_img/4/5500.pgm deleted file mode 100644 index 04842d2a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5509.pgm b/examples/autotiler/Mnist/test_img/4/5509.pgm deleted file mode 100644 index f9318004c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5517.pgm b/examples/autotiler/Mnist/test_img/4/5517.pgm deleted file mode 100644 index 0c0884b41..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5525.pgm b/examples/autotiler/Mnist/test_img/4/5525.pgm deleted file mode 100644 index 3b035a629..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/555.pgm b/examples/autotiler/Mnist/test_img/4/555.pgm deleted file mode 100644 index 42ae11205..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5556.pgm b/examples/autotiler/Mnist/test_img/4/5556.pgm deleted file mode 100644 index d1f8ae38c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5559.pgm b/examples/autotiler/Mnist/test_img/4/5559.pgm deleted file mode 100644 index d6dd79eac..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/556.pgm b/examples/autotiler/Mnist/test_img/4/556.pgm deleted file mode 100644 index b0b46fd0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5561.pgm b/examples/autotiler/Mnist/test_img/4/5561.pgm deleted file mode 100644 index 8a4ac1065..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5564.pgm b/examples/autotiler/Mnist/test_img/4/5564.pgm deleted file mode 100644 index 1863c513c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5577.pgm b/examples/autotiler/Mnist/test_img/4/5577.pgm deleted file mode 100644 index 226683258..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5597.pgm b/examples/autotiler/Mnist/test_img/4/5597.pgm deleted file mode 100644 index f674a33a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/56.pgm b/examples/autotiler/Mnist/test_img/4/56.pgm deleted file mode 100644 index 2a890e79f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/56.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5607.pgm b/examples/autotiler/Mnist/test_img/4/5607.pgm deleted file mode 100644 index 622f45f03..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5617.pgm b/examples/autotiler/Mnist/test_img/4/5617.pgm deleted file mode 100644 index a9a198e88..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5631.pgm b/examples/autotiler/Mnist/test_img/4/5631.pgm deleted file mode 100644 index d771b64c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/565.pgm b/examples/autotiler/Mnist/test_img/4/565.pgm deleted file mode 100644 index 4741c3941..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5664.pgm b/examples/autotiler/Mnist/test_img/4/5664.pgm deleted file mode 100644 index 70c0b01a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5676.pgm b/examples/autotiler/Mnist/test_img/4/5676.pgm deleted file mode 100644 index 6d6f1e228..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5677.pgm b/examples/autotiler/Mnist/test_img/4/5677.pgm deleted file mode 100644 index a7dd73e27..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5691.pgm b/examples/autotiler/Mnist/test_img/4/5691.pgm deleted file mode 100644 index cd23aed2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5696.pgm b/examples/autotiler/Mnist/test_img/4/5696.pgm deleted file mode 100644 index f50afab08..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5698.pgm b/examples/autotiler/Mnist/test_img/4/5698.pgm deleted file mode 100644 index 08faadc30..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/571.pgm b/examples/autotiler/Mnist/test_img/4/571.pgm deleted file mode 100644 index e1056afaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5713.pgm b/examples/autotiler/Mnist/test_img/4/5713.pgm deleted file mode 100644 index d68ae4be1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5720.pgm b/examples/autotiler/Mnist/test_img/4/5720.pgm deleted file mode 100644 index e7e14cda1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5725.pgm b/examples/autotiler/Mnist/test_img/4/5725.pgm deleted file mode 100644 index ebcf48234..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5741.pgm b/examples/autotiler/Mnist/test_img/4/5741.pgm deleted file mode 100644 index 74c67e196..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5758.pgm b/examples/autotiler/Mnist/test_img/4/5758.pgm deleted file mode 100644 index de350e5ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5774.pgm b/examples/autotiler/Mnist/test_img/4/5774.pgm deleted file mode 100644 index db408a0e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5782.pgm b/examples/autotiler/Mnist/test_img/4/5782.pgm deleted file mode 100644 index 41abbdf22..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5792.pgm b/examples/autotiler/Mnist/test_img/4/5792.pgm deleted file mode 100644 index 9b2df1d86..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5816.pgm b/examples/autotiler/Mnist/test_img/4/5816.pgm deleted file mode 100644 index 86f2a33b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5817.pgm b/examples/autotiler/Mnist/test_img/4/5817.pgm deleted file mode 100644 index 9aea26795..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5822.pgm b/examples/autotiler/Mnist/test_img/4/5822.pgm deleted file mode 100644 index 83440a029..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5825.pgm b/examples/autotiler/Mnist/test_img/4/5825.pgm deleted file mode 100644 index 1038c9c49..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5832.pgm b/examples/autotiler/Mnist/test_img/4/5832.pgm deleted file mode 100644 index 2c48a0c2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5842.pgm b/examples/autotiler/Mnist/test_img/4/5842.pgm deleted file mode 100644 index 38caa0ea5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5851.pgm b/examples/autotiler/Mnist/test_img/4/5851.pgm deleted file mode 100644 index 7af75a52b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5888.pgm b/examples/autotiler/Mnist/test_img/4/5888.pgm deleted file mode 100644 index bb296aca7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/589.pgm b/examples/autotiler/Mnist/test_img/4/589.pgm deleted file mode 100644 index 52434bb2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5900.pgm b/examples/autotiler/Mnist/test_img/4/5900.pgm deleted file mode 100644 index cd3ecb1e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5923.pgm b/examples/autotiler/Mnist/test_img/4/5923.pgm deleted file mode 100644 index ee9c5626b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5926.pgm b/examples/autotiler/Mnist/test_img/4/5926.pgm deleted file mode 100644 index c78811045..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5927.pgm b/examples/autotiler/Mnist/test_img/4/5927.pgm deleted file mode 100644 index efb6950e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5936.pgm b/examples/autotiler/Mnist/test_img/4/5936.pgm deleted file mode 100644 index 06fca0943..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5946.pgm b/examples/autotiler/Mnist/test_img/4/5946.pgm deleted file mode 100644 index c529a6abb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5956.pgm b/examples/autotiler/Mnist/test_img/4/5956.pgm deleted file mode 100644 index 28f349e85..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5969.pgm b/examples/autotiler/Mnist/test_img/4/5969.pgm deleted file mode 100644 index 2d8e6450e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5975.pgm b/examples/autotiler/Mnist/test_img/4/5975.pgm deleted file mode 100644 index cbb51ce98..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5979.pgm b/examples/autotiler/Mnist/test_img/4/5979.pgm deleted file mode 100644 index 43a8021d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/5986.pgm b/examples/autotiler/Mnist/test_img/4/5986.pgm deleted file mode 100644 index 3aecfb7fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/5986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6.pgm b/examples/autotiler/Mnist/test_img/4/6.pgm deleted file mode 100644 index d0b54b08b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6013.pgm b/examples/autotiler/Mnist/test_img/4/6013.pgm deleted file mode 100644 index f57991cf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6019.pgm b/examples/autotiler/Mnist/test_img/4/6019.pgm deleted file mode 100644 index 495ed17df..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6021.pgm b/examples/autotiler/Mnist/test_img/4/6021.pgm deleted file mode 100644 index 05a436c42..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6025.pgm b/examples/autotiler/Mnist/test_img/4/6025.pgm deleted file mode 100644 index f86442121..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6037.pgm b/examples/autotiler/Mnist/test_img/4/6037.pgm deleted file mode 100644 index aa338da3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6066.pgm b/examples/autotiler/Mnist/test_img/4/6066.pgm deleted file mode 100644 index bbcac8c64..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6076.pgm b/examples/autotiler/Mnist/test_img/4/6076.pgm deleted file mode 100644 index 5607c9e09..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6086.pgm b/examples/autotiler/Mnist/test_img/4/6086.pgm deleted file mode 100644 index 1a704784c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/610.pgm b/examples/autotiler/Mnist/test_img/4/610.pgm deleted file mode 100644 index 4efc6fc69..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6100.pgm b/examples/autotiler/Mnist/test_img/4/6100.pgm deleted file mode 100644 index 0eca5ea79..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6102.pgm b/examples/autotiler/Mnist/test_img/4/6102.pgm deleted file mode 100644 index 3b8a3fc19..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6138.pgm b/examples/autotiler/Mnist/test_img/4/6138.pgm deleted file mode 100644 index db4f1648b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6143.pgm b/examples/autotiler/Mnist/test_img/4/6143.pgm deleted file mode 100644 index fbfd4b016..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6144.pgm b/examples/autotiler/Mnist/test_img/4/6144.pgm deleted file mode 100644 index b7ddf79f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6152.pgm b/examples/autotiler/Mnist/test_img/4/6152.pgm deleted file mode 100644 index 385e0c753..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6169.pgm b/examples/autotiler/Mnist/test_img/4/6169.pgm deleted file mode 100644 index 9514f0b39..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6175.pgm b/examples/autotiler/Mnist/test_img/4/6175.pgm deleted file mode 100644 index a8e22e613..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6176.pgm b/examples/autotiler/Mnist/test_img/4/6176.pgm deleted file mode 100644 index 6d2349833..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6185.pgm b/examples/autotiler/Mnist/test_img/4/6185.pgm deleted file mode 100644 index 65796edc2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6195.pgm b/examples/autotiler/Mnist/test_img/4/6195.pgm deleted file mode 100644 index 7d7ee7064..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6205.pgm b/examples/autotiler/Mnist/test_img/4/6205.pgm deleted file mode 100644 index 0ae0bbbed..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/622.pgm b/examples/autotiler/Mnist/test_img/4/622.pgm deleted file mode 100644 index 5e6ab8a3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6220.pgm b/examples/autotiler/Mnist/test_img/4/6220.pgm deleted file mode 100644 index 41043c759..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6251.pgm b/examples/autotiler/Mnist/test_img/4/6251.pgm deleted file mode 100644 index bb043e040..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6256.pgm b/examples/autotiler/Mnist/test_img/4/6256.pgm deleted file mode 100644 index 765e04e7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6265.pgm b/examples/autotiler/Mnist/test_img/4/6265.pgm deleted file mode 100644 index 11eb9e251..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6268.pgm b/examples/autotiler/Mnist/test_img/4/6268.pgm deleted file mode 100644 index 8eff179fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6271.pgm b/examples/autotiler/Mnist/test_img/4/6271.pgm deleted file mode 100644 index 2551baa72..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6273.pgm b/examples/autotiler/Mnist/test_img/4/6273.pgm deleted file mode 100644 index 6167a15c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6284.pgm b/examples/autotiler/Mnist/test_img/4/6284.pgm deleted file mode 100644 index e7caf394b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6295.pgm b/examples/autotiler/Mnist/test_img/4/6295.pgm deleted file mode 100644 index 570336a22..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6300.pgm b/examples/autotiler/Mnist/test_img/4/6300.pgm deleted file mode 100644 index 4f8564dbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6313.pgm b/examples/autotiler/Mnist/test_img/4/6313.pgm deleted file mode 100644 index 2d8ae4d83..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6323.pgm b/examples/autotiler/Mnist/test_img/4/6323.pgm deleted file mode 100644 index fee2834df..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6332.pgm b/examples/autotiler/Mnist/test_img/4/6332.pgm deleted file mode 100644 index 8b21c26e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6362.pgm b/examples/autotiler/Mnist/test_img/4/6362.pgm deleted file mode 100644 index 668dbcfef..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6367.pgm b/examples/autotiler/Mnist/test_img/4/6367.pgm deleted file mode 100644 index 45d0b1d59..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6369.pgm b/examples/autotiler/Mnist/test_img/4/6369.pgm deleted file mode 100644 index 253eeac62..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6373.pgm b/examples/autotiler/Mnist/test_img/4/6373.pgm deleted file mode 100644 index 96761ff43..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6378.pgm b/examples/autotiler/Mnist/test_img/4/6378.pgm deleted file mode 100644 index 8fcd7df94..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6396.pgm b/examples/autotiler/Mnist/test_img/4/6396.pgm deleted file mode 100644 index e011e48b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6417.pgm b/examples/autotiler/Mnist/test_img/4/6417.pgm deleted file mode 100644 index 824c048b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6427.pgm b/examples/autotiler/Mnist/test_img/4/6427.pgm deleted file mode 100644 index 5e97853a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6433.pgm b/examples/autotiler/Mnist/test_img/4/6433.pgm deleted file mode 100644 index 9f3c52a0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6448.pgm b/examples/autotiler/Mnist/test_img/4/6448.pgm deleted file mode 100644 index 17b066517..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6460.pgm b/examples/autotiler/Mnist/test_img/4/6460.pgm deleted file mode 100644 index 806428245..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6474.pgm b/examples/autotiler/Mnist/test_img/4/6474.pgm deleted file mode 100644 index b07b13e61..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6475.pgm b/examples/autotiler/Mnist/test_img/4/6475.pgm deleted file mode 100644 index 2e30020cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6488.pgm b/examples/autotiler/Mnist/test_img/4/6488.pgm deleted file mode 100644 index 5f9cfa084..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/65.pgm b/examples/autotiler/Mnist/test_img/4/65.pgm deleted file mode 100644 index 11915bff7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/65.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6516.pgm b/examples/autotiler/Mnist/test_img/4/6516.pgm deleted file mode 100644 index 181defe74..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6529.pgm b/examples/autotiler/Mnist/test_img/4/6529.pgm deleted file mode 100644 index 1959c414a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6536.pgm b/examples/autotiler/Mnist/test_img/4/6536.pgm deleted file mode 100644 index da4be4a9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6543.pgm b/examples/autotiler/Mnist/test_img/4/6543.pgm deleted file mode 100644 index 8124815e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6547.pgm b/examples/autotiler/Mnist/test_img/4/6547.pgm deleted file mode 100644 index fc519c735..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6552.pgm b/examples/autotiler/Mnist/test_img/4/6552.pgm deleted file mode 100644 index 6f5c376e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6553.pgm b/examples/autotiler/Mnist/test_img/4/6553.pgm deleted file mode 100644 index daf2fcaea..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6559.pgm b/examples/autotiler/Mnist/test_img/4/6559.pgm deleted file mode 100644 index 4624caa3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6579.pgm b/examples/autotiler/Mnist/test_img/4/6579.pgm deleted file mode 100644 index bd4fed600..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6582.pgm b/examples/autotiler/Mnist/test_img/4/6582.pgm deleted file mode 100644 index 8266e27e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6585.pgm b/examples/autotiler/Mnist/test_img/4/6585.pgm deleted file mode 100644 index 1636a018a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/660.pgm b/examples/autotiler/Mnist/test_img/4/660.pgm deleted file mode 100644 index 152dc40a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6626.pgm b/examples/autotiler/Mnist/test_img/4/6626.pgm deleted file mode 100644 index 9adec9b16..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6637.pgm b/examples/autotiler/Mnist/test_img/4/6637.pgm deleted file mode 100644 index ff913d1fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6647.pgm b/examples/autotiler/Mnist/test_img/4/6647.pgm deleted file mode 100644 index 8a50b720f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6660.pgm b/examples/autotiler/Mnist/test_img/4/6660.pgm deleted file mode 100644 index cf5f2011e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/668.pgm b/examples/autotiler/Mnist/test_img/4/668.pgm deleted file mode 100644 index 848870ff9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6687.pgm b/examples/autotiler/Mnist/test_img/4/6687.pgm deleted file mode 100644 index d67991012..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6689.pgm b/examples/autotiler/Mnist/test_img/4/6689.pgm deleted file mode 100644 index 1b2ca7a0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6695.pgm b/examples/autotiler/Mnist/test_img/4/6695.pgm deleted file mode 100644 index b5130c483..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6696.pgm b/examples/autotiler/Mnist/test_img/4/6696.pgm deleted file mode 100644 index cc6945355..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6699.pgm b/examples/autotiler/Mnist/test_img/4/6699.pgm deleted file mode 100644 index 91ae2456d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/67.pgm b/examples/autotiler/Mnist/test_img/4/67.pgm deleted file mode 100644 index a6ea49ffe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/67.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/670.pgm b/examples/autotiler/Mnist/test_img/4/670.pgm deleted file mode 100644 index a013e9571..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6700.pgm b/examples/autotiler/Mnist/test_img/4/6700.pgm deleted file mode 100644 index 7508af170..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6705.pgm b/examples/autotiler/Mnist/test_img/4/6705.pgm deleted file mode 100644 index 8bd4639e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6715.pgm b/examples/autotiler/Mnist/test_img/4/6715.pgm deleted file mode 100644 index 7f40e9db3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6723.pgm b/examples/autotiler/Mnist/test_img/4/6723.pgm deleted file mode 100644 index f097ec9ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6734.pgm b/examples/autotiler/Mnist/test_img/4/6734.pgm deleted file mode 100644 index ab84c6e76..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6737.pgm b/examples/autotiler/Mnist/test_img/4/6737.pgm deleted file mode 100644 index ecf4ea465..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6738.pgm b/examples/autotiler/Mnist/test_img/4/6738.pgm deleted file mode 100644 index 06da0bc6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6742.pgm b/examples/autotiler/Mnist/test_img/4/6742.pgm deleted file mode 100644 index 5bc35b780..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6759.pgm b/examples/autotiler/Mnist/test_img/4/6759.pgm deleted file mode 100644 index 06965ae09..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6761.pgm b/examples/autotiler/Mnist/test_img/4/6761.pgm deleted file mode 100644 index bfc764f54..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6769.pgm b/examples/autotiler/Mnist/test_img/4/6769.pgm deleted file mode 100644 index 176a88410..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6780.pgm b/examples/autotiler/Mnist/test_img/4/6780.pgm deleted file mode 100644 index 247333294..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6802.pgm b/examples/autotiler/Mnist/test_img/4/6802.pgm deleted file mode 100644 index 7e3f1b6a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6812.pgm b/examples/autotiler/Mnist/test_img/4/6812.pgm deleted file mode 100644 index 3480565eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6822.pgm b/examples/autotiler/Mnist/test_img/4/6822.pgm deleted file mode 100644 index 05bc9b559..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6854.pgm b/examples/autotiler/Mnist/test_img/4/6854.pgm deleted file mode 100644 index 5a3a587b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6859.pgm b/examples/autotiler/Mnist/test_img/4/6859.pgm deleted file mode 100644 index 72984db7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6861.pgm b/examples/autotiler/Mnist/test_img/4/6861.pgm deleted file mode 100644 index 0444e116f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6865.pgm b/examples/autotiler/Mnist/test_img/4/6865.pgm deleted file mode 100644 index cfec116f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6867.pgm b/examples/autotiler/Mnist/test_img/4/6867.pgm deleted file mode 100644 index be02a3fe0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6872.pgm b/examples/autotiler/Mnist/test_img/4/6872.pgm deleted file mode 100644 index 0c04aa6b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6890.pgm b/examples/autotiler/Mnist/test_img/4/6890.pgm deleted file mode 100644 index ba1c11495..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6911.pgm b/examples/autotiler/Mnist/test_img/4/6911.pgm deleted file mode 100644 index 2328cb419..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6915.pgm b/examples/autotiler/Mnist/test_img/4/6915.pgm deleted file mode 100644 index ab43dea4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6924.pgm b/examples/autotiler/Mnist/test_img/4/6924.pgm deleted file mode 100644 index e3af4ee0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6931.pgm b/examples/autotiler/Mnist/test_img/4/6931.pgm deleted file mode 100644 index fc7807822..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6941.pgm b/examples/autotiler/Mnist/test_img/4/6941.pgm deleted file mode 100644 index 2586fcebb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6951.pgm b/examples/autotiler/Mnist/test_img/4/6951.pgm deleted file mode 100644 index 9c1d6f149..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/697.pgm b/examples/autotiler/Mnist/test_img/4/697.pgm deleted file mode 100644 index 51cc7f3b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6974.pgm b/examples/autotiler/Mnist/test_img/4/6974.pgm deleted file mode 100644 index 2e3c44bcc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/698.pgm b/examples/autotiler/Mnist/test_img/4/698.pgm deleted file mode 100644 index 3a67f10be..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6983.pgm b/examples/autotiler/Mnist/test_img/4/6983.pgm deleted file mode 100644 index 7d2ea4730..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6990.pgm b/examples/autotiler/Mnist/test_img/4/6990.pgm deleted file mode 100644 index 209a9f3b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6995.pgm b/examples/autotiler/Mnist/test_img/4/6995.pgm deleted file mode 100644 index 64e7d32eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6997.pgm b/examples/autotiler/Mnist/test_img/4/6997.pgm deleted file mode 100644 index 61bec227e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/6999.pgm b/examples/autotiler/Mnist/test_img/4/6999.pgm deleted file mode 100644 index 029e35e06..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/6999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7009.pgm b/examples/autotiler/Mnist/test_img/4/7009.pgm deleted file mode 100644 index 4930f859e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7033.pgm b/examples/autotiler/Mnist/test_img/4/7033.pgm deleted file mode 100644 index 634d235c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7045.pgm b/examples/autotiler/Mnist/test_img/4/7045.pgm deleted file mode 100644 index e8e1b1e00..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7047.pgm b/examples/autotiler/Mnist/test_img/4/7047.pgm deleted file mode 100644 index 105ce67f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7056.pgm b/examples/autotiler/Mnist/test_img/4/7056.pgm deleted file mode 100644 index 83cc59736..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7066.pgm b/examples/autotiler/Mnist/test_img/4/7066.pgm deleted file mode 100644 index d70964324..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/707.pgm b/examples/autotiler/Mnist/test_img/4/707.pgm deleted file mode 100644 index 8bc6eae70..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7076.pgm b/examples/autotiler/Mnist/test_img/4/7076.pgm deleted file mode 100644 index 0621442cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/708.pgm b/examples/autotiler/Mnist/test_img/4/708.pgm deleted file mode 100644 index a9ccbca77..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7083.pgm b/examples/autotiler/Mnist/test_img/4/7083.pgm deleted file mode 100644 index b42677009..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7085.pgm b/examples/autotiler/Mnist/test_img/4/7085.pgm deleted file mode 100644 index 5e879e172..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7092.pgm b/examples/autotiler/Mnist/test_img/4/7092.pgm deleted file mode 100644 index bc5b3096b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7096.pgm b/examples/autotiler/Mnist/test_img/4/7096.pgm deleted file mode 100644 index 5ede51ae5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7101.pgm b/examples/autotiler/Mnist/test_img/4/7101.pgm deleted file mode 100644 index 1e7be09ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7102.pgm b/examples/autotiler/Mnist/test_img/4/7102.pgm deleted file mode 100644 index 0a5f83df4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/712.pgm b/examples/autotiler/Mnist/test_img/4/712.pgm deleted file mode 100644 index 518052087..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7125.pgm b/examples/autotiler/Mnist/test_img/4/7125.pgm deleted file mode 100644 index c9b960b88..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7137.pgm b/examples/autotiler/Mnist/test_img/4/7137.pgm deleted file mode 100644 index 1799a265c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7153.pgm b/examples/autotiler/Mnist/test_img/4/7153.pgm deleted file mode 100644 index c296f6af7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7169.pgm b/examples/autotiler/Mnist/test_img/4/7169.pgm deleted file mode 100644 index cebf2a1b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7177.pgm b/examples/autotiler/Mnist/test_img/4/7177.pgm deleted file mode 100644 index edf8897ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7186.pgm b/examples/autotiler/Mnist/test_img/4/7186.pgm deleted file mode 100644 index 55fba42a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/719.pgm b/examples/autotiler/Mnist/test_img/4/719.pgm deleted file mode 100644 index a1111354a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7194.pgm b/examples/autotiler/Mnist/test_img/4/7194.pgm deleted file mode 100644 index 289641476..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7201.pgm b/examples/autotiler/Mnist/test_img/4/7201.pgm deleted file mode 100644 index 8e97f28f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7206.pgm b/examples/autotiler/Mnist/test_img/4/7206.pgm deleted file mode 100644 index 879acc653..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7218.pgm b/examples/autotiler/Mnist/test_img/4/7218.pgm deleted file mode 100644 index 27ae356d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/722.pgm b/examples/autotiler/Mnist/test_img/4/722.pgm deleted file mode 100644 index 1736b8fd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7251.pgm b/examples/autotiler/Mnist/test_img/4/7251.pgm deleted file mode 100644 index 657e161ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7273.pgm b/examples/autotiler/Mnist/test_img/4/7273.pgm deleted file mode 100644 index c20fc373a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7283.pgm b/examples/autotiler/Mnist/test_img/4/7283.pgm deleted file mode 100644 index 520951a83..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7293.pgm b/examples/autotiler/Mnist/test_img/4/7293.pgm deleted file mode 100644 index 3d1a05de9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7301.pgm b/examples/autotiler/Mnist/test_img/4/7301.pgm deleted file mode 100644 index b8538be83..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7316.pgm b/examples/autotiler/Mnist/test_img/4/7316.pgm deleted file mode 100644 index 93c4d41ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7332.pgm b/examples/autotiler/Mnist/test_img/4/7332.pgm deleted file mode 100644 index e87c08e06..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7338.pgm b/examples/autotiler/Mnist/test_img/4/7338.pgm deleted file mode 100644 index cbec3258b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7341.pgm b/examples/autotiler/Mnist/test_img/4/7341.pgm deleted file mode 100644 index 5bfe34e3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/736.pgm b/examples/autotiler/Mnist/test_img/4/736.pgm deleted file mode 100644 index 10deeb3e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7361.pgm b/examples/autotiler/Mnist/test_img/4/7361.pgm deleted file mode 100644 index b9457bbda..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7366.pgm b/examples/autotiler/Mnist/test_img/4/7366.pgm deleted file mode 100644 index 53784897a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7376.pgm b/examples/autotiler/Mnist/test_img/4/7376.pgm deleted file mode 100644 index 0af595bee..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7391.pgm b/examples/autotiler/Mnist/test_img/4/7391.pgm deleted file mode 100644 index afe034174..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7394.pgm b/examples/autotiler/Mnist/test_img/4/7394.pgm deleted file mode 100644 index 20dc508b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/740.pgm b/examples/autotiler/Mnist/test_img/4/740.pgm deleted file mode 100644 index b99426a6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7402.pgm b/examples/autotiler/Mnist/test_img/4/7402.pgm deleted file mode 100644 index a9b1b7594..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7408.pgm b/examples/autotiler/Mnist/test_img/4/7408.pgm deleted file mode 100644 index b6e72a97c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7413.pgm b/examples/autotiler/Mnist/test_img/4/7413.pgm deleted file mode 100644 index 1b8f2ddc5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7421.pgm b/examples/autotiler/Mnist/test_img/4/7421.pgm deleted file mode 100644 index d2c6b092f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7423.pgm b/examples/autotiler/Mnist/test_img/4/7423.pgm deleted file mode 100644 index 16e0df495..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7425.pgm b/examples/autotiler/Mnist/test_img/4/7425.pgm deleted file mode 100644 index d3f1b80ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7429.pgm b/examples/autotiler/Mnist/test_img/4/7429.pgm deleted file mode 100644 index cca54587e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7434.pgm b/examples/autotiler/Mnist/test_img/4/7434.pgm deleted file mode 100644 index 5cb8096ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7456.pgm b/examples/autotiler/Mnist/test_img/4/7456.pgm deleted file mode 100644 index d8d97d1ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7473.pgm b/examples/autotiler/Mnist/test_img/4/7473.pgm deleted file mode 100644 index 6c24d28f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/748.pgm b/examples/autotiler/Mnist/test_img/4/748.pgm deleted file mode 100644 index b9013b8b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7488.pgm b/examples/autotiler/Mnist/test_img/4/7488.pgm deleted file mode 100644 index d48dde738..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7494.pgm b/examples/autotiler/Mnist/test_img/4/7494.pgm deleted file mode 100644 index bbed8ac52..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7510.pgm b/examples/autotiler/Mnist/test_img/4/7510.pgm deleted file mode 100644 index f939ee8e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/752.pgm b/examples/autotiler/Mnist/test_img/4/752.pgm deleted file mode 100644 index d4018772d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7520.pgm b/examples/autotiler/Mnist/test_img/4/7520.pgm deleted file mode 100644 index 516ef59ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7530.pgm b/examples/autotiler/Mnist/test_img/4/7530.pgm deleted file mode 100644 index 813350ace..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7550.pgm b/examples/autotiler/Mnist/test_img/4/7550.pgm deleted file mode 100644 index a53b91804..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7560.pgm b/examples/autotiler/Mnist/test_img/4/7560.pgm deleted file mode 100644 index ebd09383c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/757.pgm b/examples/autotiler/Mnist/test_img/4/757.pgm deleted file mode 100644 index 3ca95f9c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7574.pgm b/examples/autotiler/Mnist/test_img/4/7574.pgm deleted file mode 100644 index 45078febb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7589.pgm b/examples/autotiler/Mnist/test_img/4/7589.pgm deleted file mode 100644 index 22d2ea693..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/760.pgm b/examples/autotiler/Mnist/test_img/4/760.pgm deleted file mode 100644 index 0f141499a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7611.pgm b/examples/autotiler/Mnist/test_img/4/7611.pgm deleted file mode 100644 index 7d71e6049..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/762.pgm b/examples/autotiler/Mnist/test_img/4/762.pgm deleted file mode 100644 index 6d5d8ff09..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7621.pgm b/examples/autotiler/Mnist/test_img/4/7621.pgm deleted file mode 100644 index ae3a910ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7629.pgm b/examples/autotiler/Mnist/test_img/4/7629.pgm deleted file mode 100644 index 545fa4cf6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/765.pgm b/examples/autotiler/Mnist/test_img/4/765.pgm deleted file mode 100644 index b115df906..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7653.pgm b/examples/autotiler/Mnist/test_img/4/7653.pgm deleted file mode 100644 index fcae7a2cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7657.pgm b/examples/autotiler/Mnist/test_img/4/7657.pgm deleted file mode 100644 index 44600f4df..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7662.pgm b/examples/autotiler/Mnist/test_img/4/7662.pgm deleted file mode 100644 index d7b661a8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7664.pgm b/examples/autotiler/Mnist/test_img/4/7664.pgm deleted file mode 100644 index c907fbb56..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7669.pgm b/examples/autotiler/Mnist/test_img/4/7669.pgm deleted file mode 100644 index 3cd3c8a00..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7696.pgm b/examples/autotiler/Mnist/test_img/4/7696.pgm deleted file mode 100644 index b0691d1b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/770.pgm b/examples/autotiler/Mnist/test_img/4/770.pgm deleted file mode 100644 index 3abb9cc2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7704.pgm b/examples/autotiler/Mnist/test_img/4/7704.pgm deleted file mode 100644 index d84c76f25..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7726.pgm b/examples/autotiler/Mnist/test_img/4/7726.pgm deleted file mode 100644 index c19238a7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7731.pgm b/examples/autotiler/Mnist/test_img/4/7731.pgm deleted file mode 100644 index 6870494ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/774.pgm b/examples/autotiler/Mnist/test_img/4/774.pgm deleted file mode 100644 index 0a1123d96..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7741.pgm b/examples/autotiler/Mnist/test_img/4/7741.pgm deleted file mode 100644 index 68091eedd..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7751.pgm b/examples/autotiler/Mnist/test_img/4/7751.pgm deleted file mode 100644 index cb1fa353c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7759.pgm b/examples/autotiler/Mnist/test_img/4/7759.pgm deleted file mode 100644 index 123034ffa..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/776.pgm b/examples/autotiler/Mnist/test_img/4/776.pgm deleted file mode 100644 index d79863df2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7764.pgm b/examples/autotiler/Mnist/test_img/4/7764.pgm deleted file mode 100644 index 65ad9bd95..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7775.pgm b/examples/autotiler/Mnist/test_img/4/7775.pgm deleted file mode 100644 index ce679e0be..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7818.pgm b/examples/autotiler/Mnist/test_img/4/7818.pgm deleted file mode 100644 index 19f7d44a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7833.pgm b/examples/autotiler/Mnist/test_img/4/7833.pgm deleted file mode 100644 index cd3da8d96..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7834.pgm b/examples/autotiler/Mnist/test_img/4/7834.pgm deleted file mode 100644 index 4f7c4b4d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7836.pgm b/examples/autotiler/Mnist/test_img/4/7836.pgm deleted file mode 100644 index 3d78a23d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/784.pgm b/examples/autotiler/Mnist/test_img/4/784.pgm deleted file mode 100644 index f1aba2dcb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7879.pgm b/examples/autotiler/Mnist/test_img/4/7879.pgm deleted file mode 100644 index 1d023547a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7883.pgm b/examples/autotiler/Mnist/test_img/4/7883.pgm deleted file mode 100644 index d6124b7e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7885.pgm b/examples/autotiler/Mnist/test_img/4/7885.pgm deleted file mode 100644 index 2a3408380..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/789.pgm b/examples/autotiler/Mnist/test_img/4/789.pgm deleted file mode 100644 index fe3d82b4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7910.pgm b/examples/autotiler/Mnist/test_img/4/7910.pgm deleted file mode 100644 index 7efba8620..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7937.pgm b/examples/autotiler/Mnist/test_img/4/7937.pgm deleted file mode 100644 index b42509c5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7947.pgm b/examples/autotiler/Mnist/test_img/4/7947.pgm deleted file mode 100644 index 897858fa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7957.pgm b/examples/autotiler/Mnist/test_img/4/7957.pgm deleted file mode 100644 index ff00b9677..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7972.pgm b/examples/autotiler/Mnist/test_img/4/7972.pgm deleted file mode 100644 index 8a242b5d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7976.pgm b/examples/autotiler/Mnist/test_img/4/7976.pgm deleted file mode 100644 index cb7195272..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7982.pgm b/examples/autotiler/Mnist/test_img/4/7982.pgm deleted file mode 100644 index fb1eb58bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/7984.pgm b/examples/autotiler/Mnist/test_img/4/7984.pgm deleted file mode 100644 index f0f22ace6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/7984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8000.pgm b/examples/autotiler/Mnist/test_img/4/8000.pgm deleted file mode 100644 index a03e04387..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8011.pgm b/examples/autotiler/Mnist/test_img/4/8011.pgm deleted file mode 100644 index c3ffae53b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/802.pgm b/examples/autotiler/Mnist/test_img/4/802.pgm deleted file mode 100644 index fb1d291c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/803.pgm b/examples/autotiler/Mnist/test_img/4/803.pgm deleted file mode 100644 index 22fdf7764..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8033.pgm b/examples/autotiler/Mnist/test_img/4/8033.pgm deleted file mode 100644 index 0283b75c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8039.pgm b/examples/autotiler/Mnist/test_img/4/8039.pgm deleted file mode 100644 index 86fb75f1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8051.pgm b/examples/autotiler/Mnist/test_img/4/8051.pgm deleted file mode 100644 index c29e774f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8054.pgm b/examples/autotiler/Mnist/test_img/4/8054.pgm deleted file mode 100644 index 4fe2754a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8061.pgm b/examples/autotiler/Mnist/test_img/4/8061.pgm deleted file mode 100644 index 6efb89121..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8071.pgm b/examples/autotiler/Mnist/test_img/4/8071.pgm deleted file mode 100644 index 9d02d5bfa..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8081.pgm b/examples/autotiler/Mnist/test_img/4/8081.pgm deleted file mode 100644 index f1dc4066a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8092.pgm b/examples/autotiler/Mnist/test_img/4/8092.pgm deleted file mode 100644 index 8fc7aa557..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8095.pgm b/examples/autotiler/Mnist/test_img/4/8095.pgm deleted file mode 100644 index 32591fc85..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8107.pgm b/examples/autotiler/Mnist/test_img/4/8107.pgm deleted file mode 100644 index 7569f749d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8121.pgm b/examples/autotiler/Mnist/test_img/4/8121.pgm deleted file mode 100644 index 9a5caaada..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8131.pgm b/examples/autotiler/Mnist/test_img/4/8131.pgm deleted file mode 100644 index 1e3897d22..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8141.pgm b/examples/autotiler/Mnist/test_img/4/8141.pgm deleted file mode 100644 index 387e966ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8155.pgm b/examples/autotiler/Mnist/test_img/4/8155.pgm deleted file mode 100644 index d2620fbaa..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8176.pgm b/examples/autotiler/Mnist/test_img/4/8176.pgm deleted file mode 100644 index 2aefb8594..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8178.pgm b/examples/autotiler/Mnist/test_img/4/8178.pgm deleted file mode 100644 index e6ac93e00..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8189.pgm b/examples/autotiler/Mnist/test_img/4/8189.pgm deleted file mode 100644 index 352bdaf7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8193.pgm b/examples/autotiler/Mnist/test_img/4/8193.pgm deleted file mode 100644 index b6c4585fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8204.pgm b/examples/autotiler/Mnist/test_img/4/8204.pgm deleted file mode 100644 index 08510f0e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8205.pgm b/examples/autotiler/Mnist/test_img/4/8205.pgm deleted file mode 100644 index ff39d3309..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8220.pgm b/examples/autotiler/Mnist/test_img/4/8220.pgm deleted file mode 100644 index 4d07e2eed..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8222.pgm b/examples/autotiler/Mnist/test_img/4/8222.pgm deleted file mode 100644 index b164b2efc..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8235.pgm b/examples/autotiler/Mnist/test_img/4/8235.pgm deleted file mode 100644 index 8c0e38543..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8247.pgm b/examples/autotiler/Mnist/test_img/4/8247.pgm deleted file mode 100644 index e2c7258b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8255.pgm b/examples/autotiler/Mnist/test_img/4/8255.pgm deleted file mode 100644 index 27f367ce5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8264.pgm b/examples/autotiler/Mnist/test_img/4/8264.pgm deleted file mode 100644 index b71307e65..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8269.pgm b/examples/autotiler/Mnist/test_img/4/8269.pgm deleted file mode 100644 index d84fb8f92..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/827.pgm b/examples/autotiler/Mnist/test_img/4/827.pgm deleted file mode 100644 index 72ec85f2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8276.pgm b/examples/autotiler/Mnist/test_img/4/8276.pgm deleted file mode 100644 index 7e418511f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8280.pgm b/examples/autotiler/Mnist/test_img/4/8280.pgm deleted file mode 100644 index 00964c048..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/829.pgm b/examples/autotiler/Mnist/test_img/4/829.pgm deleted file mode 100644 index 05f6e9114..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8309.pgm b/examples/autotiler/Mnist/test_img/4/8309.pgm deleted file mode 100644 index 7e87a7a3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8312.pgm b/examples/autotiler/Mnist/test_img/4/8312.pgm deleted file mode 100644 index 517ddb704..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8314.pgm b/examples/autotiler/Mnist/test_img/4/8314.pgm deleted file mode 100644 index 2b04c26f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8317.pgm b/examples/autotiler/Mnist/test_img/4/8317.pgm deleted file mode 100644 index 29738342a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8329.pgm b/examples/autotiler/Mnist/test_img/4/8329.pgm deleted file mode 100644 index 38ba4fcf0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8347.pgm b/examples/autotiler/Mnist/test_img/4/8347.pgm deleted file mode 100644 index c25d602ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8355.pgm b/examples/autotiler/Mnist/test_img/4/8355.pgm deleted file mode 100644 index 49105e8ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8363.pgm b/examples/autotiler/Mnist/test_img/4/8363.pgm deleted file mode 100644 index 12d3d0804..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8369.pgm b/examples/autotiler/Mnist/test_img/4/8369.pgm deleted file mode 100644 index 316420c8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8378.pgm b/examples/autotiler/Mnist/test_img/4/8378.pgm deleted file mode 100644 index 04618d8ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/838.pgm b/examples/autotiler/Mnist/test_img/4/838.pgm deleted file mode 100644 index c5e2b9ea8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8392.pgm b/examples/autotiler/Mnist/test_img/4/8392.pgm deleted file mode 100644 index f243a6a42..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8395.pgm b/examples/autotiler/Mnist/test_img/4/8395.pgm deleted file mode 100644 index bfa730975..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8400.pgm b/examples/autotiler/Mnist/test_img/4/8400.pgm deleted file mode 100644 index 635171267..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8406.pgm b/examples/autotiler/Mnist/test_img/4/8406.pgm deleted file mode 100644 index 414ddba8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8416.pgm b/examples/autotiler/Mnist/test_img/4/8416.pgm deleted file mode 100644 index c943e3f6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/843.pgm b/examples/autotiler/Mnist/test_img/4/843.pgm deleted file mode 100644 index 845fa5549..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8434.pgm b/examples/autotiler/Mnist/test_img/4/8434.pgm deleted file mode 100644 index 7abf78ec6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8442.pgm b/examples/autotiler/Mnist/test_img/4/8442.pgm deleted file mode 100644 index 0578542d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8452.pgm b/examples/autotiler/Mnist/test_img/4/8452.pgm deleted file mode 100644 index aa425cf55..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8462.pgm b/examples/autotiler/Mnist/test_img/4/8462.pgm deleted file mode 100644 index 3eacc0906..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8472.pgm b/examples/autotiler/Mnist/test_img/4/8472.pgm deleted file mode 100644 index 2987dcc29..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8484.pgm b/examples/autotiler/Mnist/test_img/4/8484.pgm deleted file mode 100644 index 27fed5eb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/85.pgm b/examples/autotiler/Mnist/test_img/4/85.pgm deleted file mode 100644 index 69c68bb01..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/85.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8500.pgm b/examples/autotiler/Mnist/test_img/4/8500.pgm deleted file mode 100644 index 960c7e8aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8511.pgm b/examples/autotiler/Mnist/test_img/4/8511.pgm deleted file mode 100644 index 4a66e736c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8520.pgm b/examples/autotiler/Mnist/test_img/4/8520.pgm deleted file mode 100644 index 2b9c80de8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8527.pgm b/examples/autotiler/Mnist/test_img/4/8527.pgm deleted file mode 100644 index 49129f4ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8529.pgm b/examples/autotiler/Mnist/test_img/4/8529.pgm deleted file mode 100644 index fedf28899..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8552.pgm b/examples/autotiler/Mnist/test_img/4/8552.pgm deleted file mode 100644 index d425df9d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8562.pgm b/examples/autotiler/Mnist/test_img/4/8562.pgm deleted file mode 100644 index f594854d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8577.pgm b/examples/autotiler/Mnist/test_img/4/8577.pgm deleted file mode 100644 index cc492d57b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8582.pgm b/examples/autotiler/Mnist/test_img/4/8582.pgm deleted file mode 100644 index 39f9d1f04..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8583.pgm b/examples/autotiler/Mnist/test_img/4/8583.pgm deleted file mode 100644 index 3364838c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8589.pgm b/examples/autotiler/Mnist/test_img/4/8589.pgm deleted file mode 100644 index 5faaad54a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8610.pgm b/examples/autotiler/Mnist/test_img/4/8610.pgm deleted file mode 100644 index b26fa6558..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8613.pgm b/examples/autotiler/Mnist/test_img/4/8613.pgm deleted file mode 100644 index 1ccb79013..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8616.pgm b/examples/autotiler/Mnist/test_img/4/8616.pgm deleted file mode 100644 index f8de473c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8626.pgm b/examples/autotiler/Mnist/test_img/4/8626.pgm deleted file mode 100644 index 0c6acda31..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8662.pgm b/examples/autotiler/Mnist/test_img/4/8662.pgm deleted file mode 100644 index 8511b0f8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8664.pgm b/examples/autotiler/Mnist/test_img/4/8664.pgm deleted file mode 100644 index afd69f09e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8675.pgm b/examples/autotiler/Mnist/test_img/4/8675.pgm deleted file mode 100644 index 7814d712e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8685.pgm b/examples/autotiler/Mnist/test_img/4/8685.pgm deleted file mode 100644 index 899eec2d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8695.pgm b/examples/autotiler/Mnist/test_img/4/8695.pgm deleted file mode 100644 index b15ebb64e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8709.pgm b/examples/autotiler/Mnist/test_img/4/8709.pgm deleted file mode 100644 index 0db277504..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8743.pgm b/examples/autotiler/Mnist/test_img/4/8743.pgm deleted file mode 100644 index f809bfe6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8754.pgm b/examples/autotiler/Mnist/test_img/4/8754.pgm deleted file mode 100644 index 76de0916b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8755.pgm b/examples/autotiler/Mnist/test_img/4/8755.pgm deleted file mode 100644 index cfb754eed..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8757.pgm b/examples/autotiler/Mnist/test_img/4/8757.pgm deleted file mode 100644 index 726e39acf..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8770.pgm b/examples/autotiler/Mnist/test_img/4/8770.pgm deleted file mode 100644 index 0849ab009..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8773.pgm b/examples/autotiler/Mnist/test_img/4/8773.pgm deleted file mode 100644 index 702cd225b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8775.pgm b/examples/autotiler/Mnist/test_img/4/8775.pgm deleted file mode 100644 index a2e794d30..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8790.pgm b/examples/autotiler/Mnist/test_img/4/8790.pgm deleted file mode 100644 index 7c6ebab20..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8797.pgm b/examples/autotiler/Mnist/test_img/4/8797.pgm deleted file mode 100644 index c626882af..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8802.pgm b/examples/autotiler/Mnist/test_img/4/8802.pgm deleted file mode 100644 index 4d53a4f2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/881.pgm b/examples/autotiler/Mnist/test_img/4/881.pgm deleted file mode 100644 index 6730161f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8812.pgm b/examples/autotiler/Mnist/test_img/4/8812.pgm deleted file mode 100644 index 7f264faf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8822.pgm b/examples/autotiler/Mnist/test_img/4/8822.pgm deleted file mode 100644 index 3d7f67ef4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8829.pgm b/examples/autotiler/Mnist/test_img/4/8829.pgm deleted file mode 100644 index de80b4b67..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8832.pgm b/examples/autotiler/Mnist/test_img/4/8832.pgm deleted file mode 100644 index a45a96045..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8836.pgm b/examples/autotiler/Mnist/test_img/4/8836.pgm deleted file mode 100644 index 05733363f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8861.pgm b/examples/autotiler/Mnist/test_img/4/8861.pgm deleted file mode 100644 index 07152f0ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8879.pgm b/examples/autotiler/Mnist/test_img/4/8879.pgm deleted file mode 100644 index 34d7a7ed8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8886.pgm b/examples/autotiler/Mnist/test_img/4/8886.pgm deleted file mode 100644 index 06f167631..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8898.pgm b/examples/autotiler/Mnist/test_img/4/8898.pgm deleted file mode 100644 index 035706506..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8917.pgm b/examples/autotiler/Mnist/test_img/4/8917.pgm deleted file mode 100644 index 3abdfd1db..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8925.pgm b/examples/autotiler/Mnist/test_img/4/8925.pgm deleted file mode 100644 index 3d5327d78..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8941.pgm b/examples/autotiler/Mnist/test_img/4/8941.pgm deleted file mode 100644 index 3e2e1454e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8945.pgm b/examples/autotiler/Mnist/test_img/4/8945.pgm deleted file mode 100644 index 5f9f65dd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8947.pgm b/examples/autotiler/Mnist/test_img/4/8947.pgm deleted file mode 100644 index 07e164112..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8954.pgm b/examples/autotiler/Mnist/test_img/4/8954.pgm deleted file mode 100644 index cb9dcef5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8960.pgm b/examples/autotiler/Mnist/test_img/4/8960.pgm deleted file mode 100644 index c17fc00d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8961.pgm b/examples/autotiler/Mnist/test_img/4/8961.pgm deleted file mode 100644 index ce4122960..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8989.pgm b/examples/autotiler/Mnist/test_img/4/8989.pgm deleted file mode 100644 index 43099c498..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/8993.pgm b/examples/autotiler/Mnist/test_img/4/8993.pgm deleted file mode 100644 index 0b228b645..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/8993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9008.pgm b/examples/autotiler/Mnist/test_img/4/9008.pgm deleted file mode 100644 index 6dc3fa0ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/901.pgm b/examples/autotiler/Mnist/test_img/4/901.pgm deleted file mode 100644 index 1f61f52db..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9012.pgm b/examples/autotiler/Mnist/test_img/4/9012.pgm deleted file mode 100644 index 35e0ab356..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/902.pgm b/examples/autotiler/Mnist/test_img/4/902.pgm deleted file mode 100644 index 59ec7b751..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9033.pgm b/examples/autotiler/Mnist/test_img/4/9033.pgm deleted file mode 100644 index 1e68e66f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9034.pgm b/examples/autotiler/Mnist/test_img/4/9034.pgm deleted file mode 100644 index 77c3f4ba6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9047.pgm b/examples/autotiler/Mnist/test_img/4/9047.pgm deleted file mode 100644 index bd1e08e4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9064.pgm b/examples/autotiler/Mnist/test_img/4/9064.pgm deleted file mode 100644 index 962494a19..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9074.pgm b/examples/autotiler/Mnist/test_img/4/9074.pgm deleted file mode 100644 index c34e0603c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/908.pgm b/examples/autotiler/Mnist/test_img/4/908.pgm deleted file mode 100644 index 5c8c0d0b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9084.pgm b/examples/autotiler/Mnist/test_img/4/9084.pgm deleted file mode 100644 index 7e2853a47..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9098.pgm b/examples/autotiler/Mnist/test_img/4/9098.pgm deleted file mode 100644 index 1ac926973..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9099.pgm b/examples/autotiler/Mnist/test_img/4/9099.pgm deleted file mode 100644 index c790fdc53..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/910.pgm b/examples/autotiler/Mnist/test_img/4/910.pgm deleted file mode 100644 index 8d0956678..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9102.pgm b/examples/autotiler/Mnist/test_img/4/9102.pgm deleted file mode 100644 index 59610f911..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9103.pgm b/examples/autotiler/Mnist/test_img/4/9103.pgm deleted file mode 100644 index 6b9b5033b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9104.pgm b/examples/autotiler/Mnist/test_img/4/9104.pgm deleted file mode 100644 index 413929c77..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9128.pgm b/examples/autotiler/Mnist/test_img/4/9128.pgm deleted file mode 100644 index e5e7f61c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9152.pgm b/examples/autotiler/Mnist/test_img/4/9152.pgm deleted file mode 100644 index 6c88586ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/916.pgm b/examples/autotiler/Mnist/test_img/4/916.pgm deleted file mode 100644 index d315ed50c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9183.pgm b/examples/autotiler/Mnist/test_img/4/9183.pgm deleted file mode 100644 index 1139ba383..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9193.pgm b/examples/autotiler/Mnist/test_img/4/9193.pgm deleted file mode 100644 index 63f54787e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9203.pgm b/examples/autotiler/Mnist/test_img/4/9203.pgm deleted file mode 100644 index c34e7a7de..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9208.pgm b/examples/autotiler/Mnist/test_img/4/9208.pgm deleted file mode 100644 index 2a64cedb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9211.pgm b/examples/autotiler/Mnist/test_img/4/9211.pgm deleted file mode 100644 index 4f60352e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9224.pgm b/examples/autotiler/Mnist/test_img/4/9224.pgm deleted file mode 100644 index 05a356777..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9232.pgm b/examples/autotiler/Mnist/test_img/4/9232.pgm deleted file mode 100644 index 6296fdea7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9253.pgm b/examples/autotiler/Mnist/test_img/4/9253.pgm deleted file mode 100644 index 34d30e0b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9267.pgm b/examples/autotiler/Mnist/test_img/4/9267.pgm deleted file mode 100644 index 62f787dd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9276.pgm b/examples/autotiler/Mnist/test_img/4/9276.pgm deleted file mode 100644 index 6fe48775c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9284.pgm b/examples/autotiler/Mnist/test_img/4/9284.pgm deleted file mode 100644 index 0a0dd8712..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/931.pgm b/examples/autotiler/Mnist/test_img/4/931.pgm deleted file mode 100644 index c2223e5b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9320.pgm b/examples/autotiler/Mnist/test_img/4/9320.pgm deleted file mode 100644 index c6f473e11..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9333.pgm b/examples/autotiler/Mnist/test_img/4/9333.pgm deleted file mode 100644 index 01815603d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9344.pgm b/examples/autotiler/Mnist/test_img/4/9344.pgm deleted file mode 100644 index 9f2961237..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9347.pgm b/examples/autotiler/Mnist/test_img/4/9347.pgm deleted file mode 100644 index ad254cc11..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9350.pgm b/examples/autotiler/Mnist/test_img/4/9350.pgm deleted file mode 100644 index cd559bc6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9353.pgm b/examples/autotiler/Mnist/test_img/4/9353.pgm deleted file mode 100644 index d210653e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9371.pgm b/examples/autotiler/Mnist/test_img/4/9371.pgm deleted file mode 100644 index c200a4e32..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9381.pgm b/examples/autotiler/Mnist/test_img/4/9381.pgm deleted file mode 100644 index be289b458..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9406.pgm b/examples/autotiler/Mnist/test_img/4/9406.pgm deleted file mode 100644 index 375a3a55c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9411.pgm b/examples/autotiler/Mnist/test_img/4/9411.pgm deleted file mode 100644 index a1a49cdce..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9412.pgm b/examples/autotiler/Mnist/test_img/4/9412.pgm deleted file mode 100644 index 8d89e2110..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9453.pgm b/examples/autotiler/Mnist/test_img/4/9453.pgm deleted file mode 100644 index 579d6537d..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9471.pgm b/examples/autotiler/Mnist/test_img/4/9471.pgm deleted file mode 100644 index a4657e3b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9473.pgm b/examples/autotiler/Mnist/test_img/4/9473.pgm deleted file mode 100644 index 47fcb9029..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9484.pgm b/examples/autotiler/Mnist/test_img/4/9484.pgm deleted file mode 100644 index 9e37bd835..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9492.pgm b/examples/autotiler/Mnist/test_img/4/9492.pgm deleted file mode 100644 index c8cd47c8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/95.pgm b/examples/autotiler/Mnist/test_img/4/95.pgm deleted file mode 100644 index ad998742b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/95.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9502.pgm b/examples/autotiler/Mnist/test_img/4/9502.pgm deleted file mode 100644 index 1dfedfd3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9512.pgm b/examples/autotiler/Mnist/test_img/4/9512.pgm deleted file mode 100644 index 6b88a34ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9525.pgm b/examples/autotiler/Mnist/test_img/4/9525.pgm deleted file mode 100644 index 950657b9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9526.pgm b/examples/autotiler/Mnist/test_img/4/9526.pgm deleted file mode 100644 index a016dd7db..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/953.pgm b/examples/autotiler/Mnist/test_img/4/953.pgm deleted file mode 100644 index 117e0ccf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9537.pgm b/examples/autotiler/Mnist/test_img/4/9537.pgm deleted file mode 100644 index bc56ceac0..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9538.pgm b/examples/autotiler/Mnist/test_img/4/9538.pgm deleted file mode 100644 index b042d0cfa..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9541.pgm b/examples/autotiler/Mnist/test_img/4/9541.pgm deleted file mode 100644 index e7598efa7..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9550.pgm b/examples/autotiler/Mnist/test_img/4/9550.pgm deleted file mode 100644 index bd61575d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9551.pgm b/examples/autotiler/Mnist/test_img/4/9551.pgm deleted file mode 100644 index 8dff1be34..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9565.pgm b/examples/autotiler/Mnist/test_img/4/9565.pgm deleted file mode 100644 index ddd064fe1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/959.pgm b/examples/autotiler/Mnist/test_img/4/959.pgm deleted file mode 100644 index 8b7f12b40..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9592.pgm b/examples/autotiler/Mnist/test_img/4/9592.pgm deleted file mode 100644 index ca2438ce1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9605.pgm b/examples/autotiler/Mnist/test_img/4/9605.pgm deleted file mode 100644 index 54220bf02..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9615.pgm b/examples/autotiler/Mnist/test_img/4/9615.pgm deleted file mode 100644 index 451a7e515..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9625.pgm b/examples/autotiler/Mnist/test_img/4/9625.pgm deleted file mode 100644 index 5bee7430a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9639.pgm b/examples/autotiler/Mnist/test_img/4/9639.pgm deleted file mode 100644 index 7f68bfcb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9646.pgm b/examples/autotiler/Mnist/test_img/4/9646.pgm deleted file mode 100644 index 1bfc4ebae..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9669.pgm b/examples/autotiler/Mnist/test_img/4/9669.pgm deleted file mode 100644 index 09b153f7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9672.pgm b/examples/autotiler/Mnist/test_img/4/9672.pgm deleted file mode 100644 index 382c0f9c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/968.pgm b/examples/autotiler/Mnist/test_img/4/968.pgm deleted file mode 100644 index 0d43b1f85..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9683.pgm b/examples/autotiler/Mnist/test_img/4/9683.pgm deleted file mode 100644 index 8d5805f56..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/969.pgm b/examples/autotiler/Mnist/test_img/4/969.pgm deleted file mode 100644 index 5d4cb5545..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9708.pgm b/examples/autotiler/Mnist/test_img/4/9708.pgm deleted file mode 100644 index 72ba00534..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/971.pgm b/examples/autotiler/Mnist/test_img/4/971.pgm deleted file mode 100644 index 81e2b8140..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9718.pgm b/examples/autotiler/Mnist/test_img/4/9718.pgm deleted file mode 100644 index 29b4cd9bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9728.pgm b/examples/autotiler/Mnist/test_img/4/9728.pgm deleted file mode 100644 index dd8c4198e..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9735.pgm b/examples/autotiler/Mnist/test_img/4/9735.pgm deleted file mode 100644 index 64275fc87..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9738.pgm b/examples/autotiler/Mnist/test_img/4/9738.pgm deleted file mode 100644 index e669c421b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9745.pgm b/examples/autotiler/Mnist/test_img/4/9745.pgm deleted file mode 100644 index f2287979b..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9764.pgm b/examples/autotiler/Mnist/test_img/4/9764.pgm deleted file mode 100644 index c7a184015..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9766.pgm b/examples/autotiler/Mnist/test_img/4/9766.pgm deleted file mode 100644 index b6b519bb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9783.pgm b/examples/autotiler/Mnist/test_img/4/9783.pgm deleted file mode 100644 index c5967708c..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9789.pgm b/examples/autotiler/Mnist/test_img/4/9789.pgm deleted file mode 100644 index 5e6463ba3..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9792.pgm b/examples/autotiler/Mnist/test_img/4/9792.pgm deleted file mode 100644 index f8c583d3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9805.pgm b/examples/autotiler/Mnist/test_img/4/9805.pgm deleted file mode 100644 index 1e0247353..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9813.pgm b/examples/autotiler/Mnist/test_img/4/9813.pgm deleted file mode 100644 index 52ce13baa..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9822.pgm b/examples/autotiler/Mnist/test_img/4/9822.pgm deleted file mode 100644 index f57b69097..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9835.pgm b/examples/autotiler/Mnist/test_img/4/9835.pgm deleted file mode 100644 index c4b25f66a..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9861.pgm b/examples/autotiler/Mnist/test_img/4/9861.pgm deleted file mode 100644 index dac2ecc94..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9866.pgm b/examples/autotiler/Mnist/test_img/4/9866.pgm deleted file mode 100644 index 9aa475c39..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9871.pgm b/examples/autotiler/Mnist/test_img/4/9871.pgm deleted file mode 100644 index df1cbd9fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9873.pgm b/examples/autotiler/Mnist/test_img/4/9873.pgm deleted file mode 100644 index 88a75d851..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9906.pgm b/examples/autotiler/Mnist/test_img/4/9906.pgm deleted file mode 100644 index 31f5c4bb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9915.pgm b/examples/autotiler/Mnist/test_img/4/9915.pgm deleted file mode 100644 index 2f9d03280..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9922.pgm b/examples/autotiler/Mnist/test_img/4/9922.pgm deleted file mode 100644 index a85e29ac9..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9927.pgm b/examples/autotiler/Mnist/test_img/4/9927.pgm deleted file mode 100644 index 7be59dd5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9928.pgm b/examples/autotiler/Mnist/test_img/4/9928.pgm deleted file mode 100644 index 5426ccf98..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9947.pgm b/examples/autotiler/Mnist/test_img/4/9947.pgm deleted file mode 100644 index e32747a48..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9960.pgm b/examples/autotiler/Mnist/test_img/4/9960.pgm deleted file mode 100644 index 58ded57d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9972.pgm b/examples/autotiler/Mnist/test_img/4/9972.pgm deleted file mode 100644 index 89f4559c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9974.pgm b/examples/autotiler/Mnist/test_img/4/9974.pgm deleted file mode 100644 index 440176b52..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9977.pgm b/examples/autotiler/Mnist/test_img/4/9977.pgm deleted file mode 100644 index 7c821edd5..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9987.pgm b/examples/autotiler/Mnist/test_img/4/9987.pgm deleted file mode 100644 index 7ac3f9660..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/4/9997.pgm b/examples/autotiler/Mnist/test_img/4/9997.pgm deleted file mode 100644 index 57d23c031..000000000 Binary files a/examples/autotiler/Mnist/test_img/4/9997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1003.pgm b/examples/autotiler/Mnist/test_img/5/1003.pgm deleted file mode 100644 index 6bdb3e5f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/102.pgm b/examples/autotiler/Mnist/test_img/5/102.pgm deleted file mode 100644 index e45b60e45..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1022.pgm b/examples/autotiler/Mnist/test_img/5/1022.pgm deleted file mode 100644 index 76759da22..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1032.pgm b/examples/autotiler/Mnist/test_img/5/1032.pgm deleted file mode 100644 index 85218a28d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1041.pgm b/examples/autotiler/Mnist/test_img/5/1041.pgm deleted file mode 100644 index e9187847c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1046.pgm b/examples/autotiler/Mnist/test_img/5/1046.pgm deleted file mode 100644 index 43e88e56d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1070.pgm b/examples/autotiler/Mnist/test_img/5/1070.pgm deleted file mode 100644 index 094f57184..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1073.pgm b/examples/autotiler/Mnist/test_img/5/1073.pgm deleted file mode 100644 index f3c07c3cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1082.pgm b/examples/autotiler/Mnist/test_img/5/1082.pgm deleted file mode 100644 index 1ff785f79..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1087.pgm b/examples/autotiler/Mnist/test_img/5/1087.pgm deleted file mode 100644 index bbf777714..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1089.pgm b/examples/autotiler/Mnist/test_img/5/1089.pgm deleted file mode 100644 index 09c0623b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1102.pgm b/examples/autotiler/Mnist/test_img/5/1102.pgm deleted file mode 100644 index 6bc85806c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1113.pgm b/examples/autotiler/Mnist/test_img/5/1113.pgm deleted file mode 100644 index 419c0f378..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1115.pgm b/examples/autotiler/Mnist/test_img/5/1115.pgm deleted file mode 100644 index c7854f161..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1131.pgm b/examples/autotiler/Mnist/test_img/5/1131.pgm deleted file mode 100644 index f304dcd0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1135.pgm b/examples/autotiler/Mnist/test_img/5/1135.pgm deleted file mode 100644 index f81a53039..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1144.pgm b/examples/autotiler/Mnist/test_img/5/1144.pgm deleted file mode 100644 index 0e44c0116..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1146.pgm b/examples/autotiler/Mnist/test_img/5/1146.pgm deleted file mode 100644 index a43868f1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1168.pgm b/examples/autotiler/Mnist/test_img/5/1168.pgm deleted file mode 100644 index fc7b12b8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1169.pgm b/examples/autotiler/Mnist/test_img/5/1169.pgm deleted file mode 100644 index 6f8161277..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1190.pgm b/examples/autotiler/Mnist/test_img/5/1190.pgm deleted file mode 100644 index 89e10ba37..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/120.pgm b/examples/autotiler/Mnist/test_img/5/120.pgm deleted file mode 100644 index 74204cca8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1221.pgm b/examples/autotiler/Mnist/test_img/5/1221.pgm deleted file mode 100644 index 0a703c27f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1233.pgm b/examples/autotiler/Mnist/test_img/5/1233.pgm deleted file mode 100644 index f626338be..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1235.pgm b/examples/autotiler/Mnist/test_img/5/1235.pgm deleted file mode 100644 index 8c5928b5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1243.pgm b/examples/autotiler/Mnist/test_img/5/1243.pgm deleted file mode 100644 index 9ee51407c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1252.pgm b/examples/autotiler/Mnist/test_img/5/1252.pgm deleted file mode 100644 index ce2da6b9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1258.pgm b/examples/autotiler/Mnist/test_img/5/1258.pgm deleted file mode 100644 index 6391e5323..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/127.pgm b/examples/autotiler/Mnist/test_img/5/127.pgm deleted file mode 100644 index 78400ae01..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1272.pgm b/examples/autotiler/Mnist/test_img/5/1272.pgm deleted file mode 100644 index 97381f028..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1281.pgm b/examples/autotiler/Mnist/test_img/5/1281.pgm deleted file mode 100644 index f49733687..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1285.pgm b/examples/autotiler/Mnist/test_img/5/1285.pgm deleted file mode 100644 index 58932c0a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1289.pgm b/examples/autotiler/Mnist/test_img/5/1289.pgm deleted file mode 100644 index f34404e21..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/129.pgm b/examples/autotiler/Mnist/test_img/5/129.pgm deleted file mode 100644 index 07fec7319..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1299.pgm b/examples/autotiler/Mnist/test_img/5/1299.pgm deleted file mode 100644 index 28110bb1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/132.pgm b/examples/autotiler/Mnist/test_img/5/132.pgm deleted file mode 100644 index a16a3da3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1331.pgm b/examples/autotiler/Mnist/test_img/5/1331.pgm deleted file mode 100644 index 525871390..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1334.pgm b/examples/autotiler/Mnist/test_img/5/1334.pgm deleted file mode 100644 index d7d5b4d4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1339.pgm b/examples/autotiler/Mnist/test_img/5/1339.pgm deleted file mode 100644 index cb95a1aba..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1340.pgm b/examples/autotiler/Mnist/test_img/5/1340.pgm deleted file mode 100644 index 4dd4cd40c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1370.pgm b/examples/autotiler/Mnist/test_img/5/1370.pgm deleted file mode 100644 index 9ae19e7d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1376.pgm b/examples/autotiler/Mnist/test_img/5/1376.pgm deleted file mode 100644 index 2dd2fadf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1378.pgm b/examples/autotiler/Mnist/test_img/5/1378.pgm deleted file mode 100644 index 3b93c34df..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1393.pgm b/examples/autotiler/Mnist/test_img/5/1393.pgm deleted file mode 100644 index 21eac4fb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1405.pgm b/examples/autotiler/Mnist/test_img/5/1405.pgm deleted file mode 100644 index ff8d85c4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1406.pgm b/examples/autotiler/Mnist/test_img/5/1406.pgm deleted file mode 100644 index 4dc23b70b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1421.pgm b/examples/autotiler/Mnist/test_img/5/1421.pgm deleted file mode 100644 index a1701c104..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1447.pgm b/examples/autotiler/Mnist/test_img/5/1447.pgm deleted file mode 100644 index fe67f845f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1460.pgm b/examples/autotiler/Mnist/test_img/5/1460.pgm deleted file mode 100644 index 9ede7bd35..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1466.pgm b/examples/autotiler/Mnist/test_img/5/1466.pgm deleted file mode 100644 index 2bf2e9f99..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1467.pgm b/examples/autotiler/Mnist/test_img/5/1467.pgm deleted file mode 100644 index 3cd965ed9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1471.pgm b/examples/autotiler/Mnist/test_img/5/1471.pgm deleted file mode 100644 index bee60d8c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1473.pgm b/examples/autotiler/Mnist/test_img/5/1473.pgm deleted file mode 100644 index 13ba94f65..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1476.pgm b/examples/autotiler/Mnist/test_img/5/1476.pgm deleted file mode 100644 index 747a04398..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1493.pgm b/examples/autotiler/Mnist/test_img/5/1493.pgm deleted file mode 100644 index 973aa7e0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/15.pgm b/examples/autotiler/Mnist/test_img/5/15.pgm deleted file mode 100644 index 0bfe64262..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/15.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1510.pgm b/examples/autotiler/Mnist/test_img/5/1510.pgm deleted file mode 100644 index f32fd9717..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/152.pgm b/examples/autotiler/Mnist/test_img/5/152.pgm deleted file mode 100644 index 2cc36d3c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1521.pgm b/examples/autotiler/Mnist/test_img/5/1521.pgm deleted file mode 100644 index 4886ad902..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1525.pgm b/examples/autotiler/Mnist/test_img/5/1525.pgm deleted file mode 100644 index e89d38b5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/153.pgm b/examples/autotiler/Mnist/test_img/5/153.pgm deleted file mode 100644 index 1869bba38..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/155.pgm b/examples/autotiler/Mnist/test_img/5/155.pgm deleted file mode 100644 index d8b78ac35..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1550.pgm b/examples/autotiler/Mnist/test_img/5/1550.pgm deleted file mode 100644 index d181a484f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1598.pgm b/examples/autotiler/Mnist/test_img/5/1598.pgm deleted file mode 100644 index b4de14103..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1618.pgm b/examples/autotiler/Mnist/test_img/5/1618.pgm deleted file mode 100644 index 49ed886e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/162.pgm b/examples/autotiler/Mnist/test_img/5/162.pgm deleted file mode 100644 index 414064c02..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1629.pgm b/examples/autotiler/Mnist/test_img/5/1629.pgm deleted file mode 100644 index 7bebbe9cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1635.pgm b/examples/autotiler/Mnist/test_img/5/1635.pgm deleted file mode 100644 index d25a13f25..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1637.pgm b/examples/autotiler/Mnist/test_img/5/1637.pgm deleted file mode 100644 index bb74fd6d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1639.pgm b/examples/autotiler/Mnist/test_img/5/1639.pgm deleted file mode 100644 index 074396b54..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1641.pgm b/examples/autotiler/Mnist/test_img/5/1641.pgm deleted file mode 100644 index 4c3ea3d1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/165.pgm b/examples/autotiler/Mnist/test_img/5/165.pgm deleted file mode 100644 index 355fa34c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1653.pgm b/examples/autotiler/Mnist/test_img/5/1653.pgm deleted file mode 100644 index 5991f8f92..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/167.pgm b/examples/autotiler/Mnist/test_img/5/167.pgm deleted file mode 100644 index dc3ede103..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1670.pgm b/examples/autotiler/Mnist/test_img/5/1670.pgm deleted file mode 100644 index e6345d9ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1672.pgm b/examples/autotiler/Mnist/test_img/5/1672.pgm deleted file mode 100644 index 9ecf45fa2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1677.pgm b/examples/autotiler/Mnist/test_img/5/1677.pgm deleted file mode 100644 index a36941b4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1684.pgm b/examples/autotiler/Mnist/test_img/5/1684.pgm deleted file mode 100644 index 0d0ceae03..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1693.pgm b/examples/autotiler/Mnist/test_img/5/1693.pgm deleted file mode 100644 index 59f5b641b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1737.pgm b/examples/autotiler/Mnist/test_img/5/1737.pgm deleted file mode 100644 index 8cab00fae..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1747.pgm b/examples/autotiler/Mnist/test_img/5/1747.pgm deleted file mode 100644 index ed649e41b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1752.pgm b/examples/autotiler/Mnist/test_img/5/1752.pgm deleted file mode 100644 index 624b7fb8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1755.pgm b/examples/autotiler/Mnist/test_img/5/1755.pgm deleted file mode 100644 index 2e26633bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1761.pgm b/examples/autotiler/Mnist/test_img/5/1761.pgm deleted file mode 100644 index c965c8dd2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1810.pgm b/examples/autotiler/Mnist/test_img/5/1810.pgm deleted file mode 100644 index cbadec66d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/182.pgm b/examples/autotiler/Mnist/test_img/5/182.pgm deleted file mode 100644 index 85cca81ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1833.pgm b/examples/autotiler/Mnist/test_img/5/1833.pgm deleted file mode 100644 index 4b00bc21c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1846.pgm b/examples/autotiler/Mnist/test_img/5/1846.pgm deleted file mode 100644 index 4c1e54d46..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1847.pgm b/examples/autotiler/Mnist/test_img/5/1847.pgm deleted file mode 100644 index 8658a0f47..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1860.pgm b/examples/autotiler/Mnist/test_img/5/1860.pgm deleted file mode 100644 index 0ef59a049..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1866.pgm b/examples/autotiler/Mnist/test_img/5/1866.pgm deleted file mode 100644 index a0ade77c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/187.pgm b/examples/autotiler/Mnist/test_img/5/187.pgm deleted file mode 100644 index cd3683aa4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1874.pgm b/examples/autotiler/Mnist/test_img/5/1874.pgm deleted file mode 100644 index d5db288b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1879.pgm b/examples/autotiler/Mnist/test_img/5/1879.pgm deleted file mode 100644 index 29f6eca05..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1896.pgm b/examples/autotiler/Mnist/test_img/5/1896.pgm deleted file mode 100644 index 193bd5d32..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1902.pgm b/examples/autotiler/Mnist/test_img/5/1902.pgm deleted file mode 100644 index 727a8e7ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1910.pgm b/examples/autotiler/Mnist/test_img/5/1910.pgm deleted file mode 100644 index 6b3f788aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1911.pgm b/examples/autotiler/Mnist/test_img/5/1911.pgm deleted file mode 100644 index 9abc07129..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1917.pgm b/examples/autotiler/Mnist/test_img/5/1917.pgm deleted file mode 100644 index 700c56a8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1931.pgm b/examples/autotiler/Mnist/test_img/5/1931.pgm deleted file mode 100644 index 0174c4f46..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1940.pgm b/examples/autotiler/Mnist/test_img/5/1940.pgm deleted file mode 100644 index d19bf689e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1948.pgm b/examples/autotiler/Mnist/test_img/5/1948.pgm deleted file mode 100644 index 60c28cf04..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1954.pgm b/examples/autotiler/Mnist/test_img/5/1954.pgm deleted file mode 100644 index 26cb4306c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1967.pgm b/examples/autotiler/Mnist/test_img/5/1967.pgm deleted file mode 100644 index e255a42cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1970.pgm b/examples/autotiler/Mnist/test_img/5/1970.pgm deleted file mode 100644 index b2c9258b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/1999.pgm b/examples/autotiler/Mnist/test_img/5/1999.pgm deleted file mode 100644 index a7b37c7a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/1999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2001.pgm b/examples/autotiler/Mnist/test_img/5/2001.pgm deleted file mode 100644 index 247ac2df7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2003.pgm b/examples/autotiler/Mnist/test_img/5/2003.pgm deleted file mode 100644 index b82cf9e5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2021.pgm b/examples/autotiler/Mnist/test_img/5/2021.pgm deleted file mode 100644 index fbcfc4d71..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2029.pgm b/examples/autotiler/Mnist/test_img/5/2029.pgm deleted file mode 100644 index 2ff6b2c87..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2030.pgm b/examples/autotiler/Mnist/test_img/5/2030.pgm deleted file mode 100644 index 2106038d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2035.pgm b/examples/autotiler/Mnist/test_img/5/2035.pgm deleted file mode 100644 index f52ed5184..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2037.pgm b/examples/autotiler/Mnist/test_img/5/2037.pgm deleted file mode 100644 index b3d0859d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2040.pgm b/examples/autotiler/Mnist/test_img/5/2040.pgm deleted file mode 100644 index 4bb8535c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2064.pgm b/examples/autotiler/Mnist/test_img/5/2064.pgm deleted file mode 100644 index 3b6c386aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/207.pgm b/examples/autotiler/Mnist/test_img/5/207.pgm deleted file mode 100644 index 410327ca0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2073.pgm b/examples/autotiler/Mnist/test_img/5/2073.pgm deleted file mode 100644 index 754215346..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2077.pgm b/examples/autotiler/Mnist/test_img/5/2077.pgm deleted file mode 100644 index 78b5801fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2078.pgm b/examples/autotiler/Mnist/test_img/5/2078.pgm deleted file mode 100644 index 9dd727105..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2100.pgm b/examples/autotiler/Mnist/test_img/5/2100.pgm deleted file mode 100644 index 6bd89eaed..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2103.pgm b/examples/autotiler/Mnist/test_img/5/2103.pgm deleted file mode 100644 index 84b36cfe6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/211.pgm b/examples/autotiler/Mnist/test_img/5/211.pgm deleted file mode 100644 index 5f05d76c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2113.pgm b/examples/autotiler/Mnist/test_img/5/2113.pgm deleted file mode 100644 index bddd869a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2114.pgm b/examples/autotiler/Mnist/test_img/5/2114.pgm deleted file mode 100644 index 53adaa65c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2125.pgm b/examples/autotiler/Mnist/test_img/5/2125.pgm deleted file mode 100644 index 20c7ba8e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2134.pgm b/examples/autotiler/Mnist/test_img/5/2134.pgm deleted file mode 100644 index 85f327b87..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2159.pgm b/examples/autotiler/Mnist/test_img/5/2159.pgm deleted file mode 100644 index fb9643e52..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2162.pgm b/examples/autotiler/Mnist/test_img/5/2162.pgm deleted file mode 100644 index 04cfbbb35..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/218.pgm b/examples/autotiler/Mnist/test_img/5/218.pgm deleted file mode 100644 index 81c536a4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2180.pgm b/examples/autotiler/Mnist/test_img/5/2180.pgm deleted file mode 100644 index 9c7ae90bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/219.pgm b/examples/autotiler/Mnist/test_img/5/219.pgm deleted file mode 100644 index b14bdc9be..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2192.pgm b/examples/autotiler/Mnist/test_img/5/2192.pgm deleted file mode 100644 index f945b34dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2207.pgm b/examples/autotiler/Mnist/test_img/5/2207.pgm deleted file mode 100644 index cfa96ffdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2214.pgm b/examples/autotiler/Mnist/test_img/5/2214.pgm deleted file mode 100644 index 41017fca3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2224.pgm b/examples/autotiler/Mnist/test_img/5/2224.pgm deleted file mode 100644 index c88097169..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2237.pgm b/examples/autotiler/Mnist/test_img/5/2237.pgm deleted file mode 100644 index a9289b6bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2241.pgm b/examples/autotiler/Mnist/test_img/5/2241.pgm deleted file mode 100644 index 9dfac13fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2247.pgm b/examples/autotiler/Mnist/test_img/5/2247.pgm deleted file mode 100644 index 2d331ec04..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2279.pgm b/examples/autotiler/Mnist/test_img/5/2279.pgm deleted file mode 100644 index 498f823ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2282.pgm b/examples/autotiler/Mnist/test_img/5/2282.pgm deleted file mode 100644 index 8bf9a440f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2291.pgm b/examples/autotiler/Mnist/test_img/5/2291.pgm deleted file mode 100644 index 1e4c637d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/23.pgm b/examples/autotiler/Mnist/test_img/5/23.pgm deleted file mode 100644 index 63bb8208a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/23.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2322.pgm b/examples/autotiler/Mnist/test_img/5/2322.pgm deleted file mode 100644 index eb899d23e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2339.pgm b/examples/autotiler/Mnist/test_img/5/2339.pgm deleted file mode 100644 index 6ad872708..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2346.pgm b/examples/autotiler/Mnist/test_img/5/2346.pgm deleted file mode 100644 index 796575558..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2369.pgm b/examples/autotiler/Mnist/test_img/5/2369.pgm deleted file mode 100644 index bda77bc65..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/240.pgm b/examples/autotiler/Mnist/test_img/5/240.pgm deleted file mode 100644 index 70816ed4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2400.pgm b/examples/autotiler/Mnist/test_img/5/2400.pgm deleted file mode 100644 index 3f54c0b6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2413.pgm b/examples/autotiler/Mnist/test_img/5/2413.pgm deleted file mode 100644 index 1ec57032a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2445.pgm b/examples/autotiler/Mnist/test_img/5/2445.pgm deleted file mode 100644 index 34799c34a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2452.pgm b/examples/autotiler/Mnist/test_img/5/2452.pgm deleted file mode 100644 index c2dc302f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2460.pgm b/examples/autotiler/Mnist/test_img/5/2460.pgm deleted file mode 100644 index 8869d048f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2476.pgm b/examples/autotiler/Mnist/test_img/5/2476.pgm deleted file mode 100644 index f95c6ec8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2487.pgm b/examples/autotiler/Mnist/test_img/5/2487.pgm deleted file mode 100644 index 3ac1e4f3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2515.pgm b/examples/autotiler/Mnist/test_img/5/2515.pgm deleted file mode 100644 index 99dd1bc5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2518.pgm b/examples/autotiler/Mnist/test_img/5/2518.pgm deleted file mode 100644 index 6e30c7071..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2525.pgm b/examples/autotiler/Mnist/test_img/5/2525.pgm deleted file mode 100644 index edc9bd8a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2526.pgm b/examples/autotiler/Mnist/test_img/5/2526.pgm deleted file mode 100644 index 3f3c00143..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/253.pgm b/examples/autotiler/Mnist/test_img/5/253.pgm deleted file mode 100644 index 49c872cce..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2540.pgm b/examples/autotiler/Mnist/test_img/5/2540.pgm deleted file mode 100644 index 7d886d0a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2545.pgm b/examples/autotiler/Mnist/test_img/5/2545.pgm deleted file mode 100644 index 2928341e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2546.pgm b/examples/autotiler/Mnist/test_img/5/2546.pgm deleted file mode 100644 index dd030d742..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2554.pgm b/examples/autotiler/Mnist/test_img/5/2554.pgm deleted file mode 100644 index 82b81985d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2556.pgm b/examples/autotiler/Mnist/test_img/5/2556.pgm deleted file mode 100644 index 394a5e5a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2558.pgm b/examples/autotiler/Mnist/test_img/5/2558.pgm deleted file mode 100644 index 3f0cb8842..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2559.pgm b/examples/autotiler/Mnist/test_img/5/2559.pgm deleted file mode 100644 index 32f6bc0b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2569.pgm b/examples/autotiler/Mnist/test_img/5/2569.pgm deleted file mode 100644 index fa4ec755e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2573.pgm b/examples/autotiler/Mnist/test_img/5/2573.pgm deleted file mode 100644 index 49a98bcbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2574.pgm b/examples/autotiler/Mnist/test_img/5/2574.pgm deleted file mode 100644 index fbbc22c99..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2581.pgm b/examples/autotiler/Mnist/test_img/5/2581.pgm deleted file mode 100644 index 0ed3a420f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2586.pgm b/examples/autotiler/Mnist/test_img/5/2586.pgm deleted file mode 100644 index c7ca92f92..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2597.pgm b/examples/autotiler/Mnist/test_img/5/2597.pgm deleted file mode 100644 index 78713adfe..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2604.pgm b/examples/autotiler/Mnist/test_img/5/2604.pgm deleted file mode 100644 index 6118fc2c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2606.pgm b/examples/autotiler/Mnist/test_img/5/2606.pgm deleted file mode 100644 index 8057affc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/261.pgm b/examples/autotiler/Mnist/test_img/5/261.pgm deleted file mode 100644 index 685b09ba2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2611.pgm b/examples/autotiler/Mnist/test_img/5/2611.pgm deleted file mode 100644 index 099868741..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2616.pgm b/examples/autotiler/Mnist/test_img/5/2616.pgm deleted file mode 100644 index dd5a038e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2644.pgm b/examples/autotiler/Mnist/test_img/5/2644.pgm deleted file mode 100644 index df0498d60..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2653.pgm b/examples/autotiler/Mnist/test_img/5/2653.pgm deleted file mode 100644 index e6658432e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2668.pgm b/examples/autotiler/Mnist/test_img/5/2668.pgm deleted file mode 100644 index bf0f0b636..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2670.pgm b/examples/autotiler/Mnist/test_img/5/2670.pgm deleted file mode 100644 index 0e238fd7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2682.pgm b/examples/autotiler/Mnist/test_img/5/2682.pgm deleted file mode 100644 index ce1d78c02..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2686.pgm b/examples/autotiler/Mnist/test_img/5/2686.pgm deleted file mode 100644 index 45fbd0851..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2689.pgm b/examples/autotiler/Mnist/test_img/5/2689.pgm deleted file mode 100644 index d1cd26034..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2697.pgm b/examples/autotiler/Mnist/test_img/5/2697.pgm deleted file mode 100644 index c639bbe8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2698.pgm b/examples/autotiler/Mnist/test_img/5/2698.pgm deleted file mode 100644 index 30115b999..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2727.pgm b/examples/autotiler/Mnist/test_img/5/2727.pgm deleted file mode 100644 index 7d21238b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2743.pgm b/examples/autotiler/Mnist/test_img/5/2743.pgm deleted file mode 100644 index a7d82d050..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2768.pgm b/examples/autotiler/Mnist/test_img/5/2768.pgm deleted file mode 100644 index f79f4aeb0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2772.pgm b/examples/autotiler/Mnist/test_img/5/2772.pgm deleted file mode 100644 index 1efe023da..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2773.pgm b/examples/autotiler/Mnist/test_img/5/2773.pgm deleted file mode 100644 index a96f8e18a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2775.pgm b/examples/autotiler/Mnist/test_img/5/2775.pgm deleted file mode 100644 index 665d25ed0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2790.pgm b/examples/autotiler/Mnist/test_img/5/2790.pgm deleted file mode 100644 index b9ab71a3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2797.pgm b/examples/autotiler/Mnist/test_img/5/2797.pgm deleted file mode 100644 index 36f837a58..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2798.pgm b/examples/autotiler/Mnist/test_img/5/2798.pgm deleted file mode 100644 index 6ac5013f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2805.pgm b/examples/autotiler/Mnist/test_img/5/2805.pgm deleted file mode 100644 index 07762886a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2810.pgm b/examples/autotiler/Mnist/test_img/5/2810.pgm deleted file mode 100644 index 213041dac..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2814.pgm b/examples/autotiler/Mnist/test_img/5/2814.pgm deleted file mode 100644 index 3b8876e5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2829.pgm b/examples/autotiler/Mnist/test_img/5/2829.pgm deleted file mode 100644 index 3485a8f80..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/283.pgm b/examples/autotiler/Mnist/test_img/5/283.pgm deleted file mode 100644 index d1c2fc85b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2832.pgm b/examples/autotiler/Mnist/test_img/5/2832.pgm deleted file mode 100644 index 72a91297a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2839.pgm b/examples/autotiler/Mnist/test_img/5/2839.pgm deleted file mode 100644 index 293b62ec5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2850.pgm b/examples/autotiler/Mnist/test_img/5/2850.pgm deleted file mode 100644 index 261780567..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2855.pgm b/examples/autotiler/Mnist/test_img/5/2855.pgm deleted file mode 100644 index 0c33f7120..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/289.pgm b/examples/autotiler/Mnist/test_img/5/289.pgm deleted file mode 100644 index 183463f34..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2903.pgm b/examples/autotiler/Mnist/test_img/5/2903.pgm deleted file mode 100644 index 671221622..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2909.pgm b/examples/autotiler/Mnist/test_img/5/2909.pgm deleted file mode 100644 index b8cf9bef7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2913.pgm b/examples/autotiler/Mnist/test_img/5/2913.pgm deleted file mode 100644 index 83dde615f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2919.pgm b/examples/autotiler/Mnist/test_img/5/2919.pgm deleted file mode 100644 index 5309efd95..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2922.pgm b/examples/autotiler/Mnist/test_img/5/2922.pgm deleted file mode 100644 index f02233239..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2925.pgm b/examples/autotiler/Mnist/test_img/5/2925.pgm deleted file mode 100644 index 7f77edf1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2930.pgm b/examples/autotiler/Mnist/test_img/5/2930.pgm deleted file mode 100644 index 528ee8ee2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2948.pgm b/examples/autotiler/Mnist/test_img/5/2948.pgm deleted file mode 100644 index e064c9d6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2951.pgm b/examples/autotiler/Mnist/test_img/5/2951.pgm deleted file mode 100644 index 033684cc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2956.pgm b/examples/autotiler/Mnist/test_img/5/2956.pgm deleted file mode 100644 index ac76120d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2957.pgm b/examples/autotiler/Mnist/test_img/5/2957.pgm deleted file mode 100644 index f222a6702..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2969.pgm b/examples/autotiler/Mnist/test_img/5/2969.pgm deleted file mode 100644 index f859ebdfb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2970.pgm b/examples/autotiler/Mnist/test_img/5/2970.pgm deleted file mode 100644 index 2abaeeaf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2986.pgm b/examples/autotiler/Mnist/test_img/5/2986.pgm deleted file mode 100644 index f21c3fbaa..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/2987.pgm b/examples/autotiler/Mnist/test_img/5/2987.pgm deleted file mode 100644 index 7e857fddc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/2987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3007.pgm b/examples/autotiler/Mnist/test_img/5/3007.pgm deleted file mode 100644 index 38be8e1eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3022.pgm b/examples/autotiler/Mnist/test_img/5/3022.pgm deleted file mode 100644 index f75862b89..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3028.pgm b/examples/autotiler/Mnist/test_img/5/3028.pgm deleted file mode 100644 index 1b3f48638..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3053.pgm b/examples/autotiler/Mnist/test_img/5/3053.pgm deleted file mode 100644 index a7cee9367..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3093.pgm b/examples/autotiler/Mnist/test_img/5/3093.pgm deleted file mode 100644 index 523da9cbf..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3095.pgm b/examples/autotiler/Mnist/test_img/5/3095.pgm deleted file mode 100644 index 33de0fd9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3100.pgm b/examples/autotiler/Mnist/test_img/5/3100.pgm deleted file mode 100644 index e3a0d8b59..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3102.pgm b/examples/autotiler/Mnist/test_img/5/3102.pgm deleted file mode 100644 index d2960622f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3113.pgm b/examples/autotiler/Mnist/test_img/5/3113.pgm deleted file mode 100644 index 9c88c3a2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3115.pgm b/examples/autotiler/Mnist/test_img/5/3115.pgm deleted file mode 100644 index 6d20a2b0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3117.pgm b/examples/autotiler/Mnist/test_img/5/3117.pgm deleted file mode 100644 index 417611d19..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3119.pgm b/examples/autotiler/Mnist/test_img/5/3119.pgm deleted file mode 100644 index 5d4295ae0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3127.pgm b/examples/autotiler/Mnist/test_img/5/3127.pgm deleted file mode 100644 index 44e0f5650..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3145.pgm b/examples/autotiler/Mnist/test_img/5/3145.pgm deleted file mode 100644 index 820ffcded..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3157.pgm b/examples/autotiler/Mnist/test_img/5/3157.pgm deleted file mode 100644 index 794a57381..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/317.pgm b/examples/autotiler/Mnist/test_img/5/317.pgm deleted file mode 100644 index 5db6a6ea2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3171.pgm b/examples/autotiler/Mnist/test_img/5/3171.pgm deleted file mode 100644 index 1381f917d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3183.pgm b/examples/autotiler/Mnist/test_img/5/3183.pgm deleted file mode 100644 index c41bcacf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/319.pgm b/examples/autotiler/Mnist/test_img/5/319.pgm deleted file mode 100644 index 4bd192aef..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3199.pgm b/examples/autotiler/Mnist/test_img/5/3199.pgm deleted file mode 100644 index 9bf365651..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3220.pgm b/examples/autotiler/Mnist/test_img/5/3220.pgm deleted file mode 100644 index e1977660b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3275.pgm b/examples/autotiler/Mnist/test_img/5/3275.pgm deleted file mode 100644 index bcc96c387..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3295.pgm b/examples/autotiler/Mnist/test_img/5/3295.pgm deleted file mode 100644 index 4e03915af..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3311.pgm b/examples/autotiler/Mnist/test_img/5/3311.pgm deleted file mode 100644 index d6f0b48c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3312.pgm b/examples/autotiler/Mnist/test_img/5/3312.pgm deleted file mode 100644 index efc4fad3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3321.pgm b/examples/autotiler/Mnist/test_img/5/3321.pgm deleted file mode 100644 index 22052cfde..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/333.pgm b/examples/autotiler/Mnist/test_img/5/333.pgm deleted file mode 100644 index 5a2512279..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3334.pgm b/examples/autotiler/Mnist/test_img/5/3334.pgm deleted file mode 100644 index ef7b34e4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3335.pgm b/examples/autotiler/Mnist/test_img/5/3335.pgm deleted file mode 100644 index 8f5f5506c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3336.pgm b/examples/autotiler/Mnist/test_img/5/3336.pgm deleted file mode 100644 index 29735276a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3345.pgm b/examples/autotiler/Mnist/test_img/5/3345.pgm deleted file mode 100644 index 9b87627ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3372.pgm b/examples/autotiler/Mnist/test_img/5/3372.pgm deleted file mode 100644 index ea258b25e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3393.pgm b/examples/autotiler/Mnist/test_img/5/3393.pgm deleted file mode 100644 index a4f4c0108..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/340.pgm b/examples/autotiler/Mnist/test_img/5/340.pgm deleted file mode 100644 index e5fbc5515..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3408.pgm b/examples/autotiler/Mnist/test_img/5/3408.pgm deleted file mode 100644 index 1e913fb20..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3414.pgm b/examples/autotiler/Mnist/test_img/5/3414.pgm deleted file mode 100644 index 02ad2996a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3416.pgm b/examples/autotiler/Mnist/test_img/5/3416.pgm deleted file mode 100644 index 817a7a5eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3462.pgm b/examples/autotiler/Mnist/test_img/5/3462.pgm deleted file mode 100644 index cae5ad4cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3468.pgm b/examples/autotiler/Mnist/test_img/5/3468.pgm deleted file mode 100644 index f069cd2b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/347.pgm b/examples/autotiler/Mnist/test_img/5/347.pgm deleted file mode 100644 index f8890d84a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3470.pgm b/examples/autotiler/Mnist/test_img/5/3470.pgm deleted file mode 100644 index bdcb60982..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3506.pgm b/examples/autotiler/Mnist/test_img/5/3506.pgm deleted file mode 100644 index ed463b946..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/351.pgm b/examples/autotiler/Mnist/test_img/5/351.pgm deleted file mode 100644 index 7a1f1ecb0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/352.pgm b/examples/autotiler/Mnist/test_img/5/352.pgm deleted file mode 100644 index f643c0982..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3537.pgm b/examples/autotiler/Mnist/test_img/5/3537.pgm deleted file mode 100644 index 792527565..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3552.pgm b/examples/autotiler/Mnist/test_img/5/3552.pgm deleted file mode 100644 index 7e12dce67..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3556.pgm b/examples/autotiler/Mnist/test_img/5/3556.pgm deleted file mode 100644 index 11fce45f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3558.pgm b/examples/autotiler/Mnist/test_img/5/3558.pgm deleted file mode 100644 index 9ee00742a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/356.pgm b/examples/autotiler/Mnist/test_img/5/356.pgm deleted file mode 100644 index df15cb2fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3565.pgm b/examples/autotiler/Mnist/test_img/5/3565.pgm deleted file mode 100644 index eecf68eb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3569.pgm b/examples/autotiler/Mnist/test_img/5/3569.pgm deleted file mode 100644 index 1cdf5cc6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3570.pgm b/examples/autotiler/Mnist/test_img/5/3570.pgm deleted file mode 100644 index 241ea1502..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3590.pgm b/examples/autotiler/Mnist/test_img/5/3590.pgm deleted file mode 100644 index 0c9ba37f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3591.pgm b/examples/autotiler/Mnist/test_img/5/3591.pgm deleted file mode 100644 index 1b5a43ac3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3595.pgm b/examples/autotiler/Mnist/test_img/5/3595.pgm deleted file mode 100644 index f485f1568..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3619.pgm b/examples/autotiler/Mnist/test_img/5/3619.pgm deleted file mode 100644 index cb9b842ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3623.pgm b/examples/autotiler/Mnist/test_img/5/3623.pgm deleted file mode 100644 index c1a4d9e61..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3631.pgm b/examples/autotiler/Mnist/test_img/5/3631.pgm deleted file mode 100644 index 10f7bb4d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3636.pgm b/examples/autotiler/Mnist/test_img/5/3636.pgm deleted file mode 100644 index 7c10fc07b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/364.pgm b/examples/autotiler/Mnist/test_img/5/364.pgm deleted file mode 100644 index 274a6c271..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3645.pgm b/examples/autotiler/Mnist/test_img/5/3645.pgm deleted file mode 100644 index ea23ad97f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3654.pgm b/examples/autotiler/Mnist/test_img/5/3654.pgm deleted file mode 100644 index b4b809766..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3663.pgm b/examples/autotiler/Mnist/test_img/5/3663.pgm deleted file mode 100644 index 7648c9926..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/367.pgm b/examples/autotiler/Mnist/test_img/5/367.pgm deleted file mode 100644 index 0e7d3adfc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3678.pgm b/examples/autotiler/Mnist/test_img/5/3678.pgm deleted file mode 100644 index d2d90d93d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3691.pgm b/examples/autotiler/Mnist/test_img/5/3691.pgm deleted file mode 100644 index f9c1cbba5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3702.pgm b/examples/autotiler/Mnist/test_img/5/3702.pgm deleted file mode 100644 index 143212ccf..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/375.pgm b/examples/autotiler/Mnist/test_img/5/375.pgm deleted file mode 100644 index 0d94339ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3750.pgm b/examples/autotiler/Mnist/test_img/5/3750.pgm deleted file mode 100644 index e88d84f58..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3754.pgm b/examples/autotiler/Mnist/test_img/5/3754.pgm deleted file mode 100644 index b17accf2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3756.pgm b/examples/autotiler/Mnist/test_img/5/3756.pgm deleted file mode 100644 index 38889773f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3763.pgm b/examples/autotiler/Mnist/test_img/5/3763.pgm deleted file mode 100644 index 63b7e51f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3776.pgm b/examples/autotiler/Mnist/test_img/5/3776.pgm deleted file mode 100644 index 1ef03eda3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3778.pgm b/examples/autotiler/Mnist/test_img/5/3778.pgm deleted file mode 100644 index 70db070ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3788.pgm b/examples/autotiler/Mnist/test_img/5/3788.pgm deleted file mode 100644 index 01e84a888..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3797.pgm b/examples/autotiler/Mnist/test_img/5/3797.pgm deleted file mode 100644 index c60f7f18d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3806.pgm b/examples/autotiler/Mnist/test_img/5/3806.pgm deleted file mode 100644 index 701c641a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3810.pgm b/examples/autotiler/Mnist/test_img/5/3810.pgm deleted file mode 100644 index b85c567d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3814.pgm b/examples/autotiler/Mnist/test_img/5/3814.pgm deleted file mode 100644 index a153698c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3826.pgm b/examples/autotiler/Mnist/test_img/5/3826.pgm deleted file mode 100644 index c6dee9a0e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3837.pgm b/examples/autotiler/Mnist/test_img/5/3837.pgm deleted file mode 100644 index 03134a1ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3855.pgm b/examples/autotiler/Mnist/test_img/5/3855.pgm deleted file mode 100644 index 70a688af9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3860.pgm b/examples/autotiler/Mnist/test_img/5/3860.pgm deleted file mode 100644 index 88d2e2c72..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3863.pgm b/examples/autotiler/Mnist/test_img/5/3863.pgm deleted file mode 100644 index 31b1739cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3877.pgm b/examples/autotiler/Mnist/test_img/5/3877.pgm deleted file mode 100644 index 42e0fc964..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3890.pgm b/examples/autotiler/Mnist/test_img/5/3890.pgm deleted file mode 100644 index 3f0056f7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3893.pgm b/examples/autotiler/Mnist/test_img/5/3893.pgm deleted file mode 100644 index bf38d0048..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3898.pgm b/examples/autotiler/Mnist/test_img/5/3898.pgm deleted file mode 100644 index d30249ce5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3902.pgm b/examples/autotiler/Mnist/test_img/5/3902.pgm deleted file mode 100644 index 7296bae1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3907.pgm b/examples/autotiler/Mnist/test_img/5/3907.pgm deleted file mode 100644 index 828a26c38..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3917.pgm b/examples/autotiler/Mnist/test_img/5/3917.pgm deleted file mode 100644 index 54fb78726..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3918.pgm b/examples/autotiler/Mnist/test_img/5/3918.pgm deleted file mode 100644 index 6f468fca8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3928.pgm b/examples/autotiler/Mnist/test_img/5/3928.pgm deleted file mode 100644 index 066469db5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3929.pgm b/examples/autotiler/Mnist/test_img/5/3929.pgm deleted file mode 100644 index da996e6c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/395.pgm b/examples/autotiler/Mnist/test_img/5/395.pgm deleted file mode 100644 index 436d48c50..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3952.pgm b/examples/autotiler/Mnist/test_img/5/3952.pgm deleted file mode 100644 index 7b0ee8b30..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3955.pgm b/examples/autotiler/Mnist/test_img/5/3955.pgm deleted file mode 100644 index eb42a4787..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3957.pgm b/examples/autotiler/Mnist/test_img/5/3957.pgm deleted file mode 100644 index 0131a6379..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3960.pgm b/examples/autotiler/Mnist/test_img/5/3960.pgm deleted file mode 100644 index dce882ea7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3968.pgm b/examples/autotiler/Mnist/test_img/5/3968.pgm deleted file mode 100644 index 2429aa314..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/397.pgm b/examples/autotiler/Mnist/test_img/5/397.pgm deleted file mode 100644 index 7c26b85b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/3994.pgm b/examples/autotiler/Mnist/test_img/5/3994.pgm deleted file mode 100644 index 68cd1a049..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/3994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4031.pgm b/examples/autotiler/Mnist/test_img/5/4031.pgm deleted file mode 100644 index 4d960f823..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4052.pgm b/examples/autotiler/Mnist/test_img/5/4052.pgm deleted file mode 100644 index 1a05c3000..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4054.pgm b/examples/autotiler/Mnist/test_img/5/4054.pgm deleted file mode 100644 index 74993ad45..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4056.pgm b/examples/autotiler/Mnist/test_img/5/4056.pgm deleted file mode 100644 index 709738e2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4059.pgm b/examples/autotiler/Mnist/test_img/5/4059.pgm deleted file mode 100644 index 411b82984..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/406.pgm b/examples/autotiler/Mnist/test_img/5/406.pgm deleted file mode 100644 index 0bc8d686d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4067.pgm b/examples/autotiler/Mnist/test_img/5/4067.pgm deleted file mode 100644 index b264c38d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4072.pgm b/examples/autotiler/Mnist/test_img/5/4072.pgm deleted file mode 100644 index c3a5cb8b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4076.pgm b/examples/autotiler/Mnist/test_img/5/4076.pgm deleted file mode 100644 index 71ff9ce5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4094.pgm b/examples/autotiler/Mnist/test_img/5/4094.pgm deleted file mode 100644 index 4347fb3d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4108.pgm b/examples/autotiler/Mnist/test_img/5/4108.pgm deleted file mode 100644 index a5b817ec6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4118.pgm b/examples/autotiler/Mnist/test_img/5/4118.pgm deleted file mode 100644 index 4ea56a697..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/412.pgm b/examples/autotiler/Mnist/test_img/5/412.pgm deleted file mode 100644 index 8186bb87a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4131.pgm b/examples/autotiler/Mnist/test_img/5/4131.pgm deleted file mode 100644 index 81d076b67..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4152.pgm b/examples/autotiler/Mnist/test_img/5/4152.pgm deleted file mode 100644 index c895279a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4177.pgm b/examples/autotiler/Mnist/test_img/5/4177.pgm deleted file mode 100644 index eeb4f1c46..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4196.pgm b/examples/autotiler/Mnist/test_img/5/4196.pgm deleted file mode 100644 index 3875f9576..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4202.pgm b/examples/autotiler/Mnist/test_img/5/4202.pgm deleted file mode 100644 index 287cfc0b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4219.pgm b/examples/autotiler/Mnist/test_img/5/4219.pgm deleted file mode 100644 index db4108141..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4226.pgm b/examples/autotiler/Mnist/test_img/5/4226.pgm deleted file mode 100644 index 2090be313..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4233.pgm b/examples/autotiler/Mnist/test_img/5/4233.pgm deleted file mode 100644 index c25321dc4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4236.pgm b/examples/autotiler/Mnist/test_img/5/4236.pgm deleted file mode 100644 index 3040a59f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4254.pgm b/examples/autotiler/Mnist/test_img/5/4254.pgm deleted file mode 100644 index 6b902304d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4255.pgm b/examples/autotiler/Mnist/test_img/5/4255.pgm deleted file mode 100644 index 7134b182e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4261.pgm b/examples/autotiler/Mnist/test_img/5/4261.pgm deleted file mode 100644 index 7a52706a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4263.pgm b/examples/autotiler/Mnist/test_img/5/4263.pgm deleted file mode 100644 index 00a5d51a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4271.pgm b/examples/autotiler/Mnist/test_img/5/4271.pgm deleted file mode 100644 index 2598d99f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4300.pgm b/examples/autotiler/Mnist/test_img/5/4300.pgm deleted file mode 100644 index f902e77e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4302.pgm b/examples/autotiler/Mnist/test_img/5/4302.pgm deleted file mode 100644 index 33feed9ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4307.pgm b/examples/autotiler/Mnist/test_img/5/4307.pgm deleted file mode 100644 index 9c3209583..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4310.pgm b/examples/autotiler/Mnist/test_img/5/4310.pgm deleted file mode 100644 index d38946b2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4312.pgm b/examples/autotiler/Mnist/test_img/5/4312.pgm deleted file mode 100644 index 91d15305d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4315.pgm b/examples/autotiler/Mnist/test_img/5/4315.pgm deleted file mode 100644 index 20a706d57..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4323.pgm b/examples/autotiler/Mnist/test_img/5/4323.pgm deleted file mode 100644 index f50c67e62..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/433.pgm b/examples/autotiler/Mnist/test_img/5/433.pgm deleted file mode 100644 index 96394661c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4330.pgm b/examples/autotiler/Mnist/test_img/5/4330.pgm deleted file mode 100644 index 02e97e951..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4338.pgm b/examples/autotiler/Mnist/test_img/5/4338.pgm deleted file mode 100644 index 86fddbcd2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4340.pgm b/examples/autotiler/Mnist/test_img/5/4340.pgm deleted file mode 100644 index d2a0a777e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4355.pgm b/examples/autotiler/Mnist/test_img/5/4355.pgm deleted file mode 100644 index 8a705fc9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4356.pgm b/examples/autotiler/Mnist/test_img/5/4356.pgm deleted file mode 100644 index 2021890fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4359.pgm b/examples/autotiler/Mnist/test_img/5/4359.pgm deleted file mode 100644 index 3e1d7e822..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4360.pgm b/examples/autotiler/Mnist/test_img/5/4360.pgm deleted file mode 100644 index 4b664b18b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4364.pgm b/examples/autotiler/Mnist/test_img/5/4364.pgm deleted file mode 100644 index 93a34067a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4368.pgm b/examples/autotiler/Mnist/test_img/5/4368.pgm deleted file mode 100644 index 96e777d6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4374.pgm b/examples/autotiler/Mnist/test_img/5/4374.pgm deleted file mode 100644 index d1e63fe24..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4378.pgm b/examples/autotiler/Mnist/test_img/5/4378.pgm deleted file mode 100644 index f5b47d44a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4381.pgm b/examples/autotiler/Mnist/test_img/5/4381.pgm deleted file mode 100644 index 052b1008c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4420.pgm b/examples/autotiler/Mnist/test_img/5/4420.pgm deleted file mode 100644 index 396045c23..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4422.pgm b/examples/autotiler/Mnist/test_img/5/4422.pgm deleted file mode 100644 index e0b019893..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4440.pgm b/examples/autotiler/Mnist/test_img/5/4440.pgm deleted file mode 100644 index 75b53a005..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4461.pgm b/examples/autotiler/Mnist/test_img/5/4461.pgm deleted file mode 100644 index e5b4dc084..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4463.pgm b/examples/autotiler/Mnist/test_img/5/4463.pgm deleted file mode 100644 index 34c265e7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4472.pgm b/examples/autotiler/Mnist/test_img/5/4472.pgm deleted file mode 100644 index 7e60d39b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/45.pgm b/examples/autotiler/Mnist/test_img/5/45.pgm deleted file mode 100644 index a8ff5d691..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/45.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4520.pgm b/examples/autotiler/Mnist/test_img/5/4520.pgm deleted file mode 100644 index 6c65b50ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4529.pgm b/examples/autotiler/Mnist/test_img/5/4529.pgm deleted file mode 100644 index 33469c5dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4548.pgm b/examples/autotiler/Mnist/test_img/5/4548.pgm deleted file mode 100644 index de8350d5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4569.pgm b/examples/autotiler/Mnist/test_img/5/4569.pgm deleted file mode 100644 index fb81382e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4577.pgm b/examples/autotiler/Mnist/test_img/5/4577.pgm deleted file mode 100644 index 52514537e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4583.pgm b/examples/autotiler/Mnist/test_img/5/4583.pgm deleted file mode 100644 index 92114e6d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4596.pgm b/examples/autotiler/Mnist/test_img/5/4596.pgm deleted file mode 100644 index 0ea9952dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/460.pgm b/examples/autotiler/Mnist/test_img/5/460.pgm deleted file mode 100644 index 1b781736c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4637.pgm b/examples/autotiler/Mnist/test_img/5/4637.pgm deleted file mode 100644 index 68aa84fc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4645.pgm b/examples/autotiler/Mnist/test_img/5/4645.pgm deleted file mode 100644 index 8c226d25e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4689.pgm b/examples/autotiler/Mnist/test_img/5/4689.pgm deleted file mode 100644 index b276e2adf..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/469.pgm b/examples/autotiler/Mnist/test_img/5/469.pgm deleted file mode 100644 index 843d381c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4696.pgm b/examples/autotiler/Mnist/test_img/5/4696.pgm deleted file mode 100644 index 07e1909a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4711.pgm b/examples/autotiler/Mnist/test_img/5/4711.pgm deleted file mode 100644 index a555b65a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4712.pgm b/examples/autotiler/Mnist/test_img/5/4712.pgm deleted file mode 100644 index a46642777..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4722.pgm b/examples/autotiler/Mnist/test_img/5/4722.pgm deleted file mode 100644 index c9654553e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4728.pgm b/examples/autotiler/Mnist/test_img/5/4728.pgm deleted file mode 100644 index 33dd13a11..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4749.pgm b/examples/autotiler/Mnist/test_img/5/4749.pgm deleted file mode 100644 index f268e01b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4762.pgm b/examples/autotiler/Mnist/test_img/5/4762.pgm deleted file mode 100644 index a8df10a1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4763.pgm b/examples/autotiler/Mnist/test_img/5/4763.pgm deleted file mode 100644 index 7e87d9f37..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4763.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4766.pgm b/examples/autotiler/Mnist/test_img/5/4766.pgm deleted file mode 100644 index e0c61c773..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4771.pgm b/examples/autotiler/Mnist/test_img/5/4771.pgm deleted file mode 100644 index 77a3828f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/478.pgm b/examples/autotiler/Mnist/test_img/5/478.pgm deleted file mode 100644 index f9c077e43..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4809.pgm b/examples/autotiler/Mnist/test_img/5/4809.pgm deleted file mode 100644 index 3798f3fea..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4810.pgm b/examples/autotiler/Mnist/test_img/5/4810.pgm deleted file mode 100644 index 2d23ce6ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4828.pgm b/examples/autotiler/Mnist/test_img/5/4828.pgm deleted file mode 100644 index 7389fb851..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/483.pgm b/examples/autotiler/Mnist/test_img/5/483.pgm deleted file mode 100644 index b796d677f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4830.pgm b/examples/autotiler/Mnist/test_img/5/4830.pgm deleted file mode 100644 index eb043262c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4844.pgm b/examples/autotiler/Mnist/test_img/5/4844.pgm deleted file mode 100644 index c155f9784..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4867.pgm b/examples/autotiler/Mnist/test_img/5/4867.pgm deleted file mode 100644 index 2ec7a43e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4888.pgm b/examples/autotiler/Mnist/test_img/5/4888.pgm deleted file mode 100644 index 1c57c9ccc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4892.pgm b/examples/autotiler/Mnist/test_img/5/4892.pgm deleted file mode 100644 index f134ceb33..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4902.pgm b/examples/autotiler/Mnist/test_img/5/4902.pgm deleted file mode 100644 index 41d6e586b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/491.pgm b/examples/autotiler/Mnist/test_img/5/491.pgm deleted file mode 100644 index 5e58e28e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4915.pgm b/examples/autotiler/Mnist/test_img/5/4915.pgm deleted file mode 100644 index 60cb4b71d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4933.pgm b/examples/autotiler/Mnist/test_img/5/4933.pgm deleted file mode 100644 index b484d99e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4942.pgm b/examples/autotiler/Mnist/test_img/5/4942.pgm deleted file mode 100644 index 16822e05b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4971.pgm b/examples/autotiler/Mnist/test_img/5/4971.pgm deleted file mode 100644 index 2102e119d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/4979.pgm b/examples/autotiler/Mnist/test_img/5/4979.pgm deleted file mode 100644 index 8f84b2408..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/4979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/502.pgm b/examples/autotiler/Mnist/test_img/5/502.pgm deleted file mode 100644 index d4dd7df79..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5020.pgm b/examples/autotiler/Mnist/test_img/5/5020.pgm deleted file mode 100644 index 2bae497e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5021.pgm b/examples/autotiler/Mnist/test_img/5/5021.pgm deleted file mode 100644 index c04c95cdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5056.pgm b/examples/autotiler/Mnist/test_img/5/5056.pgm deleted file mode 100644 index 27163abc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5083.pgm b/examples/autotiler/Mnist/test_img/5/5083.pgm deleted file mode 100644 index d59e75a73..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/509.pgm b/examples/autotiler/Mnist/test_img/5/509.pgm deleted file mode 100644 index 361e84f0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5098.pgm b/examples/autotiler/Mnist/test_img/5/5098.pgm deleted file mode 100644 index 72b378f8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5102.pgm b/examples/autotiler/Mnist/test_img/5/5102.pgm deleted file mode 100644 index 32adc0674..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5111.pgm b/examples/autotiler/Mnist/test_img/5/5111.pgm deleted file mode 100644 index b3fa26b59..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5134.pgm b/examples/autotiler/Mnist/test_img/5/5134.pgm deleted file mode 100644 index 17a3f3e22..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5152.pgm b/examples/autotiler/Mnist/test_img/5/5152.pgm deleted file mode 100644 index 322ba29c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5160.pgm b/examples/autotiler/Mnist/test_img/5/5160.pgm deleted file mode 100644 index dc8a59bb0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5170.pgm b/examples/autotiler/Mnist/test_img/5/5170.pgm deleted file mode 100644 index bd23c1e36..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5174.pgm b/examples/autotiler/Mnist/test_img/5/5174.pgm deleted file mode 100644 index 1a869303a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/518.pgm b/examples/autotiler/Mnist/test_img/5/518.pgm deleted file mode 100644 index 51a97195c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5187.pgm b/examples/autotiler/Mnist/test_img/5/5187.pgm deleted file mode 100644 index 9402877d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5194.pgm b/examples/autotiler/Mnist/test_img/5/5194.pgm deleted file mode 100644 index e6769200e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5196.pgm b/examples/autotiler/Mnist/test_img/5/5196.pgm deleted file mode 100644 index 4cf197aee..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5197.pgm b/examples/autotiler/Mnist/test_img/5/5197.pgm deleted file mode 100644 index cd81f7958..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/52.pgm b/examples/autotiler/Mnist/test_img/5/52.pgm deleted file mode 100644 index 18b3b81c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/52.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5206.pgm b/examples/autotiler/Mnist/test_img/5/5206.pgm deleted file mode 100644 index 31346b826..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5207.pgm b/examples/autotiler/Mnist/test_img/5/5207.pgm deleted file mode 100644 index 272e8e494..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5222.pgm b/examples/autotiler/Mnist/test_img/5/5222.pgm deleted file mode 100644 index 0a159e127..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5223.pgm b/examples/autotiler/Mnist/test_img/5/5223.pgm deleted file mode 100644 index bc2b8dc86..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5229.pgm b/examples/autotiler/Mnist/test_img/5/5229.pgm deleted file mode 100644 index aef5051b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5275.pgm b/examples/autotiler/Mnist/test_img/5/5275.pgm deleted file mode 100644 index e55a61da1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5285.pgm b/examples/autotiler/Mnist/test_img/5/5285.pgm deleted file mode 100644 index bda84cbfc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5295.pgm b/examples/autotiler/Mnist/test_img/5/5295.pgm deleted file mode 100644 index 29e6cc715..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/53.pgm b/examples/autotiler/Mnist/test_img/5/53.pgm deleted file mode 100644 index 4d646d65a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/53.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5302.pgm b/examples/autotiler/Mnist/test_img/5/5302.pgm deleted file mode 100644 index 80cf9c926..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5325.pgm b/examples/autotiler/Mnist/test_img/5/5325.pgm deleted file mode 100644 index fd6d96055..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5339.pgm b/examples/autotiler/Mnist/test_img/5/5339.pgm deleted file mode 100644 index e6989c2ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5347.pgm b/examples/autotiler/Mnist/test_img/5/5347.pgm deleted file mode 100644 index 25d3d75cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5351.pgm b/examples/autotiler/Mnist/test_img/5/5351.pgm deleted file mode 100644 index 9f1ca48a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5364.pgm b/examples/autotiler/Mnist/test_img/5/5364.pgm deleted file mode 100644 index 7a0c01cd5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5374.pgm b/examples/autotiler/Mnist/test_img/5/5374.pgm deleted file mode 100644 index 7b9215409..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5389.pgm b/examples/autotiler/Mnist/test_img/5/5389.pgm deleted file mode 100644 index 084874539..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5397.pgm b/examples/autotiler/Mnist/test_img/5/5397.pgm deleted file mode 100644 index a38b52259..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/540.pgm b/examples/autotiler/Mnist/test_img/5/540.pgm deleted file mode 100644 index 1d31f47e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5400.pgm b/examples/autotiler/Mnist/test_img/5/5400.pgm deleted file mode 100644 index 46429a0d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5410.pgm b/examples/autotiler/Mnist/test_img/5/5410.pgm deleted file mode 100644 index 58fe95151..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5420.pgm b/examples/autotiler/Mnist/test_img/5/5420.pgm deleted file mode 100644 index d905ea74c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5432.pgm b/examples/autotiler/Mnist/test_img/5/5432.pgm deleted file mode 100644 index 6ad2bc7d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5445.pgm b/examples/autotiler/Mnist/test_img/5/5445.pgm deleted file mode 100644 index c21401a78..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5451.pgm b/examples/autotiler/Mnist/test_img/5/5451.pgm deleted file mode 100644 index 8fd31eb4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5473.pgm b/examples/autotiler/Mnist/test_img/5/5473.pgm deleted file mode 100644 index 95f2184b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5480.pgm b/examples/autotiler/Mnist/test_img/5/5480.pgm deleted file mode 100644 index 28461c753..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5488.pgm b/examples/autotiler/Mnist/test_img/5/5488.pgm deleted file mode 100644 index 066b7a677..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5510.pgm b/examples/autotiler/Mnist/test_img/5/5510.pgm deleted file mode 100644 index 75f6c62a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5518.pgm b/examples/autotiler/Mnist/test_img/5/5518.pgm deleted file mode 100644 index b915c4f6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5528.pgm b/examples/autotiler/Mnist/test_img/5/5528.pgm deleted file mode 100644 index 41fb0a34a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5570.pgm b/examples/autotiler/Mnist/test_img/5/5570.pgm deleted file mode 100644 index dcc312d7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5571.pgm b/examples/autotiler/Mnist/test_img/5/5571.pgm deleted file mode 100644 index a188d689b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5572.pgm b/examples/autotiler/Mnist/test_img/5/5572.pgm deleted file mode 100644 index 43bd76375..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5574.pgm b/examples/autotiler/Mnist/test_img/5/5574.pgm deleted file mode 100644 index 6a0cebc46..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5579.pgm b/examples/autotiler/Mnist/test_img/5/5579.pgm deleted file mode 100644 index 2d21ffd48..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5598.pgm b/examples/autotiler/Mnist/test_img/5/5598.pgm deleted file mode 100644 index ef2c8975a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5608.pgm b/examples/autotiler/Mnist/test_img/5/5608.pgm deleted file mode 100644 index 1331aba6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5618.pgm b/examples/autotiler/Mnist/test_img/5/5618.pgm deleted file mode 100644 index 7457b4e59..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5624.pgm b/examples/autotiler/Mnist/test_img/5/5624.pgm deleted file mode 100644 index 00ec3e93a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5632.pgm b/examples/autotiler/Mnist/test_img/5/5632.pgm deleted file mode 100644 index 9db638475..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5633.pgm b/examples/autotiler/Mnist/test_img/5/5633.pgm deleted file mode 100644 index f59ce580b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5658.pgm b/examples/autotiler/Mnist/test_img/5/5658.pgm deleted file mode 100644 index 05d5bf920..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5662.pgm b/examples/autotiler/Mnist/test_img/5/5662.pgm deleted file mode 100644 index 478ae90e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5668.pgm b/examples/autotiler/Mnist/test_img/5/5668.pgm deleted file mode 100644 index c147060a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5682.pgm b/examples/autotiler/Mnist/test_img/5/5682.pgm deleted file mode 100644 index 0ddfea363..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5697.pgm b/examples/autotiler/Mnist/test_img/5/5697.pgm deleted file mode 100644 index 897c95311..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/570.pgm b/examples/autotiler/Mnist/test_img/5/570.pgm deleted file mode 100644 index 2aca837c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5706.pgm b/examples/autotiler/Mnist/test_img/5/5706.pgm deleted file mode 100644 index f72fbffc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5711.pgm b/examples/autotiler/Mnist/test_img/5/5711.pgm deleted file mode 100644 index d13f751e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5726.pgm b/examples/autotiler/Mnist/test_img/5/5726.pgm deleted file mode 100644 index 221d6faf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5735.pgm b/examples/autotiler/Mnist/test_img/5/5735.pgm deleted file mode 100644 index dea311c71..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5742.pgm b/examples/autotiler/Mnist/test_img/5/5742.pgm deleted file mode 100644 index db3d9401a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5752.pgm b/examples/autotiler/Mnist/test_img/5/5752.pgm deleted file mode 100644 index f75fb3974..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5769.pgm b/examples/autotiler/Mnist/test_img/5/5769.pgm deleted file mode 100644 index 1de0cd473..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5779.pgm b/examples/autotiler/Mnist/test_img/5/5779.pgm deleted file mode 100644 index 4c0dbd865..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5802.pgm b/examples/autotiler/Mnist/test_img/5/5802.pgm deleted file mode 100644 index 7a4e0b3a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5802.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5807.pgm b/examples/autotiler/Mnist/test_img/5/5807.pgm deleted file mode 100644 index f35cf0350..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5821.pgm b/examples/autotiler/Mnist/test_img/5/5821.pgm deleted file mode 100644 index 730e57189..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5833.pgm b/examples/autotiler/Mnist/test_img/5/5833.pgm deleted file mode 100644 index d1b4e9a59..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5843.pgm b/examples/autotiler/Mnist/test_img/5/5843.pgm deleted file mode 100644 index 8d7ce4d93..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5852.pgm b/examples/autotiler/Mnist/test_img/5/5852.pgm deleted file mode 100644 index 1f4d98e60..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5862.pgm b/examples/autotiler/Mnist/test_img/5/5862.pgm deleted file mode 100644 index 91af5210c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5867.pgm b/examples/autotiler/Mnist/test_img/5/5867.pgm deleted file mode 100644 index c4d664bf8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5874.pgm b/examples/autotiler/Mnist/test_img/5/5874.pgm deleted file mode 100644 index 214f33f29..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/588.pgm b/examples/autotiler/Mnist/test_img/5/588.pgm deleted file mode 100644 index 6840d6fa0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5885.pgm b/examples/autotiler/Mnist/test_img/5/5885.pgm deleted file mode 100644 index aafc8a8a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5891.pgm b/examples/autotiler/Mnist/test_img/5/5891.pgm deleted file mode 100644 index 9b5e4aa19..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/59.pgm b/examples/autotiler/Mnist/test_img/5/59.pgm deleted file mode 100644 index 6338caa54..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/59.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5910.pgm b/examples/autotiler/Mnist/test_img/5/5910.pgm deleted file mode 100644 index c1a9894e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5913.pgm b/examples/autotiler/Mnist/test_img/5/5913.pgm deleted file mode 100644 index 31b84e5a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5922.pgm b/examples/autotiler/Mnist/test_img/5/5922.pgm deleted file mode 100644 index b555078c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5937.pgm b/examples/autotiler/Mnist/test_img/5/5937.pgm deleted file mode 100644 index ec93929b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5947.pgm b/examples/autotiler/Mnist/test_img/5/5947.pgm deleted file mode 100644 index e6838bd5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5957.pgm b/examples/autotiler/Mnist/test_img/5/5957.pgm deleted file mode 100644 index 7ca4ca600..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5964.pgm b/examples/autotiler/Mnist/test_img/5/5964.pgm deleted file mode 100644 index 38f5d912d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5972.pgm b/examples/autotiler/Mnist/test_img/5/5972.pgm deleted file mode 100644 index 6a41afd18..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5981.pgm b/examples/autotiler/Mnist/test_img/5/5981.pgm deleted file mode 100644 index 0446c5d19..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5982.pgm b/examples/autotiler/Mnist/test_img/5/5982.pgm deleted file mode 100644 index 9a39ae6e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5985.pgm b/examples/autotiler/Mnist/test_img/5/5985.pgm deleted file mode 100644 index e1ecb0e91..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/5997.pgm b/examples/autotiler/Mnist/test_img/5/5997.pgm deleted file mode 100644 index f919835a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/5997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6028.pgm b/examples/autotiler/Mnist/test_img/5/6028.pgm deleted file mode 100644 index 49012b29e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/604.pgm b/examples/autotiler/Mnist/test_img/5/604.pgm deleted file mode 100644 index 9b9e70425..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6042.pgm b/examples/autotiler/Mnist/test_img/5/6042.pgm deleted file mode 100644 index a92750bd7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6043.pgm b/examples/autotiler/Mnist/test_img/5/6043.pgm deleted file mode 100644 index bde6808c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6053.pgm b/examples/autotiler/Mnist/test_img/5/6053.pgm deleted file mode 100644 index c7a8d7c7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6067.pgm b/examples/autotiler/Mnist/test_img/5/6067.pgm deleted file mode 100644 index f886e4143..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6077.pgm b/examples/autotiler/Mnist/test_img/5/6077.pgm deleted file mode 100644 index 2d3f2b838..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6087.pgm b/examples/autotiler/Mnist/test_img/5/6087.pgm deleted file mode 100644 index 9330c2107..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6095.pgm b/examples/autotiler/Mnist/test_img/5/6095.pgm deleted file mode 100644 index 4c52b5f4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6120.pgm b/examples/autotiler/Mnist/test_img/5/6120.pgm deleted file mode 100644 index fecbf79ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6136.pgm b/examples/autotiler/Mnist/test_img/5/6136.pgm deleted file mode 100644 index 246c80179..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6142.pgm b/examples/autotiler/Mnist/test_img/5/6142.pgm deleted file mode 100644 index 22f20c124..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6146.pgm b/examples/autotiler/Mnist/test_img/5/6146.pgm deleted file mode 100644 index 8bef1abba..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6148.pgm b/examples/autotiler/Mnist/test_img/5/6148.pgm deleted file mode 100644 index 7ee5d4e9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6155.pgm b/examples/autotiler/Mnist/test_img/5/6155.pgm deleted file mode 100644 index afe48fb02..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6165.pgm b/examples/autotiler/Mnist/test_img/5/6165.pgm deleted file mode 100644 index aa394adb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/618.pgm b/examples/autotiler/Mnist/test_img/5/618.pgm deleted file mode 100644 index 126121649..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6186.pgm b/examples/autotiler/Mnist/test_img/5/6186.pgm deleted file mode 100644 index 65ff47a2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6196.pgm b/examples/autotiler/Mnist/test_img/5/6196.pgm deleted file mode 100644 index 41436a6ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6206.pgm b/examples/autotiler/Mnist/test_img/5/6206.pgm deleted file mode 100644 index 51b09afe6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6215.pgm b/examples/autotiler/Mnist/test_img/5/6215.pgm deleted file mode 100644 index b3d6fff23..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6216.pgm b/examples/autotiler/Mnist/test_img/5/6216.pgm deleted file mode 100644 index 3ac130b4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6227.pgm b/examples/autotiler/Mnist/test_img/5/6227.pgm deleted file mode 100644 index d60698779..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6236.pgm b/examples/autotiler/Mnist/test_img/5/6236.pgm deleted file mode 100644 index febece5bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6244.pgm b/examples/autotiler/Mnist/test_img/5/6244.pgm deleted file mode 100644 index 358f2f0f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6257.pgm b/examples/autotiler/Mnist/test_img/5/6257.pgm deleted file mode 100644 index bd5c78459..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6270.pgm b/examples/autotiler/Mnist/test_img/5/6270.pgm deleted file mode 100644 index dffd145e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6277.pgm b/examples/autotiler/Mnist/test_img/5/6277.pgm deleted file mode 100644 index b18eb2cc5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6282.pgm b/examples/autotiler/Mnist/test_img/5/6282.pgm deleted file mode 100644 index 2d013b71c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6291.pgm b/examples/autotiler/Mnist/test_img/5/6291.pgm deleted file mode 100644 index 54ee32c5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6314.pgm b/examples/autotiler/Mnist/test_img/5/6314.pgm deleted file mode 100644 index 730743eff..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6324.pgm b/examples/autotiler/Mnist/test_img/5/6324.pgm deleted file mode 100644 index e9dda2aa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6333.pgm b/examples/autotiler/Mnist/test_img/5/6333.pgm deleted file mode 100644 index 26d075f1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6341.pgm b/examples/autotiler/Mnist/test_img/5/6341.pgm deleted file mode 100644 index 80dee0c31..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6368.pgm b/examples/autotiler/Mnist/test_img/5/6368.pgm deleted file mode 100644 index 8c07affae..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/638.pgm b/examples/autotiler/Mnist/test_img/5/638.pgm deleted file mode 100644 index f5b04c38c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6385.pgm b/examples/autotiler/Mnist/test_img/5/6385.pgm deleted file mode 100644 index 530e0ce4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6386.pgm b/examples/autotiler/Mnist/test_img/5/6386.pgm deleted file mode 100644 index 5aa69c795..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6390.pgm b/examples/autotiler/Mnist/test_img/5/6390.pgm deleted file mode 100644 index 7f6742d17..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6392.pgm b/examples/autotiler/Mnist/test_img/5/6392.pgm deleted file mode 100644 index 69f0615e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6405.pgm b/examples/autotiler/Mnist/test_img/5/6405.pgm deleted file mode 100644 index 9cb90c9f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6414.pgm b/examples/autotiler/Mnist/test_img/5/6414.pgm deleted file mode 100644 index 8a1ac6b24..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6415.pgm b/examples/autotiler/Mnist/test_img/5/6415.pgm deleted file mode 100644 index 8bc961938..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/645.pgm b/examples/autotiler/Mnist/test_img/5/645.pgm deleted file mode 100644 index 7dc9b5130..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6476.pgm b/examples/autotiler/Mnist/test_img/5/6476.pgm deleted file mode 100644 index e2076b330..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6483.pgm b/examples/autotiler/Mnist/test_img/5/6483.pgm deleted file mode 100644 index 932475d82..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6486.pgm b/examples/autotiler/Mnist/test_img/5/6486.pgm deleted file mode 100644 index 6fc4bad2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6491.pgm b/examples/autotiler/Mnist/test_img/5/6491.pgm deleted file mode 100644 index 3b8bec70f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6500.pgm b/examples/autotiler/Mnist/test_img/5/6500.pgm deleted file mode 100644 index c7f828814..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6518.pgm b/examples/autotiler/Mnist/test_img/5/6518.pgm deleted file mode 100644 index 5fcbd9c9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6522.pgm b/examples/autotiler/Mnist/test_img/5/6522.pgm deleted file mode 100644 index c2c45f8cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6525.pgm b/examples/autotiler/Mnist/test_img/5/6525.pgm deleted file mode 100644 index 996fc31bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6530.pgm b/examples/autotiler/Mnist/test_img/5/6530.pgm deleted file mode 100644 index e045ceb93..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6537.pgm b/examples/autotiler/Mnist/test_img/5/6537.pgm deleted file mode 100644 index 9b24528bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/654.pgm b/examples/autotiler/Mnist/test_img/5/654.pgm deleted file mode 100644 index 7f236c492..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6544.pgm b/examples/autotiler/Mnist/test_img/5/6544.pgm deleted file mode 100644 index 13699016c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6548.pgm b/examples/autotiler/Mnist/test_img/5/6548.pgm deleted file mode 100644 index 50369d659..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6573.pgm b/examples/autotiler/Mnist/test_img/5/6573.pgm deleted file mode 100644 index 0d4bfe725..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6598.pgm b/examples/autotiler/Mnist/test_img/5/6598.pgm deleted file mode 100644 index 10529955e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6600.pgm b/examples/autotiler/Mnist/test_img/5/6600.pgm deleted file mode 100644 index 15c7609c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6611.pgm b/examples/autotiler/Mnist/test_img/5/6611.pgm deleted file mode 100644 index 39b006edd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6620.pgm b/examples/autotiler/Mnist/test_img/5/6620.pgm deleted file mode 100644 index f94f5d1e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6638.pgm b/examples/autotiler/Mnist/test_img/5/6638.pgm deleted file mode 100644 index 3654957e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6706.pgm b/examples/autotiler/Mnist/test_img/5/6706.pgm deleted file mode 100644 index 257129383..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6716.pgm b/examples/autotiler/Mnist/test_img/5/6716.pgm deleted file mode 100644 index 3e5405cb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6728.pgm b/examples/autotiler/Mnist/test_img/5/6728.pgm deleted file mode 100644 index 2df33393c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/674.pgm b/examples/autotiler/Mnist/test_img/5/674.pgm deleted file mode 100644 index 51b1f87ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6746.pgm b/examples/autotiler/Mnist/test_img/5/6746.pgm deleted file mode 100644 index 6f77d2ced..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6775.pgm b/examples/autotiler/Mnist/test_img/5/6775.pgm deleted file mode 100644 index 46b2c65ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6788.pgm b/examples/autotiler/Mnist/test_img/5/6788.pgm deleted file mode 100644 index 902aef638..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6803.pgm b/examples/autotiler/Mnist/test_img/5/6803.pgm deleted file mode 100644 index 9da84ec34..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6813.pgm b/examples/autotiler/Mnist/test_img/5/6813.pgm deleted file mode 100644 index 272617c6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6823.pgm b/examples/autotiler/Mnist/test_img/5/6823.pgm deleted file mode 100644 index 20b4745be..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6832.pgm b/examples/autotiler/Mnist/test_img/5/6832.pgm deleted file mode 100644 index dda11a55f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6860.pgm b/examples/autotiler/Mnist/test_img/5/6860.pgm deleted file mode 100644 index 935b002ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6866.pgm b/examples/autotiler/Mnist/test_img/5/6866.pgm deleted file mode 100644 index a2ba51c33..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6879.pgm b/examples/autotiler/Mnist/test_img/5/6879.pgm deleted file mode 100644 index e0ea1ca45..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6880.pgm b/examples/autotiler/Mnist/test_img/5/6880.pgm deleted file mode 100644 index 6fc1a64b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6884.pgm b/examples/autotiler/Mnist/test_img/5/6884.pgm deleted file mode 100644 index 978d0d136..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6886.pgm b/examples/autotiler/Mnist/test_img/5/6886.pgm deleted file mode 100644 index bf65c52fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6899.pgm b/examples/autotiler/Mnist/test_img/5/6899.pgm deleted file mode 100644 index 4d8a62fb8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6908.pgm b/examples/autotiler/Mnist/test_img/5/6908.pgm deleted file mode 100644 index 4089ab1b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6909.pgm b/examples/autotiler/Mnist/test_img/5/6909.pgm deleted file mode 100644 index 6582bc3b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/692.pgm b/examples/autotiler/Mnist/test_img/5/692.pgm deleted file mode 100644 index e7c9490de..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6932.pgm b/examples/autotiler/Mnist/test_img/5/6932.pgm deleted file mode 100644 index 3ae1e026f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/694.pgm b/examples/autotiler/Mnist/test_img/5/694.pgm deleted file mode 100644 index e724b5d59..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6942.pgm b/examples/autotiler/Mnist/test_img/5/6942.pgm deleted file mode 100644 index 18de08fd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6952.pgm b/examples/autotiler/Mnist/test_img/5/6952.pgm deleted file mode 100644 index d58ccf58c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6964.pgm b/examples/autotiler/Mnist/test_img/5/6964.pgm deleted file mode 100644 index 423ef2eb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6965.pgm b/examples/autotiler/Mnist/test_img/5/6965.pgm deleted file mode 100644 index c968d4e0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6977.pgm b/examples/autotiler/Mnist/test_img/5/6977.pgm deleted file mode 100644 index 147ee4e70..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6981.pgm b/examples/autotiler/Mnist/test_img/5/6981.pgm deleted file mode 100644 index fb9d546dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/6991.pgm b/examples/autotiler/Mnist/test_img/5/6991.pgm deleted file mode 100644 index 54d2579da..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/6991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7003.pgm b/examples/autotiler/Mnist/test_img/5/7003.pgm deleted file mode 100644 index dbe45230b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7018.pgm b/examples/autotiler/Mnist/test_img/5/7018.pgm deleted file mode 100644 index efec59081..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7029.pgm b/examples/autotiler/Mnist/test_img/5/7029.pgm deleted file mode 100644 index 7a3241e09..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7036.pgm b/examples/autotiler/Mnist/test_img/5/7036.pgm deleted file mode 100644 index 838cb4e4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7057.pgm b/examples/autotiler/Mnist/test_img/5/7057.pgm deleted file mode 100644 index c74df3afc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7067.pgm b/examples/autotiler/Mnist/test_img/5/7067.pgm deleted file mode 100644 index 01410e58f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7077.pgm b/examples/autotiler/Mnist/test_img/5/7077.pgm deleted file mode 100644 index 9d7948810..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7090.pgm b/examples/autotiler/Mnist/test_img/5/7090.pgm deleted file mode 100644 index 93a87795d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/710.pgm b/examples/autotiler/Mnist/test_img/5/710.pgm deleted file mode 100644 index 63b6ed27c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7108.pgm b/examples/autotiler/Mnist/test_img/5/7108.pgm deleted file mode 100644 index e5cd88bcc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/711.pgm b/examples/autotiler/Mnist/test_img/5/711.pgm deleted file mode 100644 index 429906089..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7134.pgm b/examples/autotiler/Mnist/test_img/5/7134.pgm deleted file mode 100644 index 40ad80b9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7142.pgm b/examples/autotiler/Mnist/test_img/5/7142.pgm deleted file mode 100644 index d6197334f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7155.pgm b/examples/autotiler/Mnist/test_img/5/7155.pgm deleted file mode 100644 index f44664680..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7155.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7160.pgm b/examples/autotiler/Mnist/test_img/5/7160.pgm deleted file mode 100644 index e4ab8b567..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7178.pgm b/examples/autotiler/Mnist/test_img/5/7178.pgm deleted file mode 100644 index 52839b319..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7187.pgm b/examples/autotiler/Mnist/test_img/5/7187.pgm deleted file mode 100644 index 8719e78a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7195.pgm b/examples/autotiler/Mnist/test_img/5/7195.pgm deleted file mode 100644 index 16810dcc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/720.pgm b/examples/autotiler/Mnist/test_img/5/720.pgm deleted file mode 100644 index 7e1c4a73c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7240.pgm b/examples/autotiler/Mnist/test_img/5/7240.pgm deleted file mode 100644 index f19d7632a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7241.pgm b/examples/autotiler/Mnist/test_img/5/7241.pgm deleted file mode 100644 index 09f045622..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7264.pgm b/examples/autotiler/Mnist/test_img/5/7264.pgm deleted file mode 100644 index 2385c6620..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7274.pgm b/examples/autotiler/Mnist/test_img/5/7274.pgm deleted file mode 100644 index 33a2087c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7284.pgm b/examples/autotiler/Mnist/test_img/5/7284.pgm deleted file mode 100644 index d63d346dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7294.pgm b/examples/autotiler/Mnist/test_img/5/7294.pgm deleted file mode 100644 index 22cac98ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7304.pgm b/examples/autotiler/Mnist/test_img/5/7304.pgm deleted file mode 100644 index 1692c9cf4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7306.pgm b/examples/autotiler/Mnist/test_img/5/7306.pgm deleted file mode 100644 index 84fe561b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7315.pgm b/examples/autotiler/Mnist/test_img/5/7315.pgm deleted file mode 100644 index 75d5c0d4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7324.pgm b/examples/autotiler/Mnist/test_img/5/7324.pgm deleted file mode 100644 index e69f86a02..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7351.pgm b/examples/autotiler/Mnist/test_img/5/7351.pgm deleted file mode 100644 index c9175905c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7351.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7352.pgm b/examples/autotiler/Mnist/test_img/5/7352.pgm deleted file mode 100644 index c0ce14156..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7372.pgm b/examples/autotiler/Mnist/test_img/5/7372.pgm deleted file mode 100644 index 2e4d26571..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7388.pgm b/examples/autotiler/Mnist/test_img/5/7388.pgm deleted file mode 100644 index a5f65861b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/739.pgm b/examples/autotiler/Mnist/test_img/5/739.pgm deleted file mode 100644 index ef66fe85e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7393.pgm b/examples/autotiler/Mnist/test_img/5/7393.pgm deleted file mode 100644 index 1d2491bfc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7397.pgm b/examples/autotiler/Mnist/test_img/5/7397.pgm deleted file mode 100644 index b0586f084..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7403.pgm b/examples/autotiler/Mnist/test_img/5/7403.pgm deleted file mode 100644 index 8e0df6129..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7414.pgm b/examples/autotiler/Mnist/test_img/5/7414.pgm deleted file mode 100644 index 2e403fe71..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7430.pgm b/examples/autotiler/Mnist/test_img/5/7430.pgm deleted file mode 100644 index 3e7ace255..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7437.pgm b/examples/autotiler/Mnist/test_img/5/7437.pgm deleted file mode 100644 index e62596830..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7448.pgm b/examples/autotiler/Mnist/test_img/5/7448.pgm deleted file mode 100644 index 641bec697..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7451.pgm b/examples/autotiler/Mnist/test_img/5/7451.pgm deleted file mode 100644 index 4000fc62d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7454.pgm b/examples/autotiler/Mnist/test_img/5/7454.pgm deleted file mode 100644 index 6b5176628..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7474.pgm b/examples/autotiler/Mnist/test_img/5/7474.pgm deleted file mode 100644 index 345e6955f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7475.pgm b/examples/autotiler/Mnist/test_img/5/7475.pgm deleted file mode 100644 index 4d0bcc67b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7478.pgm b/examples/autotiler/Mnist/test_img/5/7478.pgm deleted file mode 100644 index cbdcdca03..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7498.pgm b/examples/autotiler/Mnist/test_img/5/7498.pgm deleted file mode 100644 index c7c5546b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/751.pgm b/examples/autotiler/Mnist/test_img/5/751.pgm deleted file mode 100644 index 3722e3022..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7511.pgm b/examples/autotiler/Mnist/test_img/5/7511.pgm deleted file mode 100644 index d8421f9f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7521.pgm b/examples/autotiler/Mnist/test_img/5/7521.pgm deleted file mode 100644 index 094a17402..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7531.pgm b/examples/autotiler/Mnist/test_img/5/7531.pgm deleted file mode 100644 index d785d94d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7541.pgm b/examples/autotiler/Mnist/test_img/5/7541.pgm deleted file mode 100644 index 235c9a97f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7542.pgm b/examples/autotiler/Mnist/test_img/5/7542.pgm deleted file mode 100644 index 022aee26f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7559.pgm b/examples/autotiler/Mnist/test_img/5/7559.pgm deleted file mode 100644 index fed6d81bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7577.pgm b/examples/autotiler/Mnist/test_img/5/7577.pgm deleted file mode 100644 index 34bfcfe7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7578.pgm b/examples/autotiler/Mnist/test_img/5/7578.pgm deleted file mode 100644 index c6e13459b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7583.pgm b/examples/autotiler/Mnist/test_img/5/7583.pgm deleted file mode 100644 index 08ed8e6ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7602.pgm b/examples/autotiler/Mnist/test_img/5/7602.pgm deleted file mode 100644 index a7676338c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7612.pgm b/examples/autotiler/Mnist/test_img/5/7612.pgm deleted file mode 100644 index ca7c0a018..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7622.pgm b/examples/autotiler/Mnist/test_img/5/7622.pgm deleted file mode 100644 index 7b141ecb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7630.pgm b/examples/autotiler/Mnist/test_img/5/7630.pgm deleted file mode 100644 index 2862e6f8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7643.pgm b/examples/autotiler/Mnist/test_img/5/7643.pgm deleted file mode 100644 index bbef29c02..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7649.pgm b/examples/autotiler/Mnist/test_img/5/7649.pgm deleted file mode 100644 index 1f557a467..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7659.pgm b/examples/autotiler/Mnist/test_img/5/7659.pgm deleted file mode 100644 index c132594a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/766.pgm b/examples/autotiler/Mnist/test_img/5/766.pgm deleted file mode 100644 index d64350226..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7672.pgm b/examples/autotiler/Mnist/test_img/5/7672.pgm deleted file mode 100644 index 27f6cec2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7673.pgm b/examples/autotiler/Mnist/test_img/5/7673.pgm deleted file mode 100644 index 68913d2b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7676.pgm b/examples/autotiler/Mnist/test_img/5/7676.pgm deleted file mode 100644 index 85b352f41..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7679.pgm b/examples/autotiler/Mnist/test_img/5/7679.pgm deleted file mode 100644 index 339c18717..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7698.pgm b/examples/autotiler/Mnist/test_img/5/7698.pgm deleted file mode 100644 index d98feb9d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7715.pgm b/examples/autotiler/Mnist/test_img/5/7715.pgm deleted file mode 100644 index 805d62bf0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7732.pgm b/examples/autotiler/Mnist/test_img/5/7732.pgm deleted file mode 100644 index d79371032..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7742.pgm b/examples/autotiler/Mnist/test_img/5/7742.pgm deleted file mode 100644 index 5489e6c7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7752.pgm b/examples/autotiler/Mnist/test_img/5/7752.pgm deleted file mode 100644 index ad85f2a43..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7777.pgm b/examples/autotiler/Mnist/test_img/5/7777.pgm deleted file mode 100644 index 5254a9294..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7779.pgm b/examples/autotiler/Mnist/test_img/5/7779.pgm deleted file mode 100644 index 7ddf8c557..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/778.pgm b/examples/autotiler/Mnist/test_img/5/778.pgm deleted file mode 100644 index 7ee97ff0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/779.pgm b/examples/autotiler/Mnist/test_img/5/779.pgm deleted file mode 100644 index 6731e41b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7793.pgm b/examples/autotiler/Mnist/test_img/5/7793.pgm deleted file mode 100644 index 5e212969a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7797.pgm b/examples/autotiler/Mnist/test_img/5/7797.pgm deleted file mode 100644 index 68ad0a8d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7808.pgm b/examples/autotiler/Mnist/test_img/5/7808.pgm deleted file mode 100644 index a8a556561..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7809.pgm b/examples/autotiler/Mnist/test_img/5/7809.pgm deleted file mode 100644 index b34f2723c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7819.pgm b/examples/autotiler/Mnist/test_img/5/7819.pgm deleted file mode 100644 index 3024758f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7826.pgm b/examples/autotiler/Mnist/test_img/5/7826.pgm deleted file mode 100644 index 58a8301c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7842.pgm b/examples/autotiler/Mnist/test_img/5/7842.pgm deleted file mode 100644 index 7cf98dd36..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/785.pgm b/examples/autotiler/Mnist/test_img/5/785.pgm deleted file mode 100644 index 94919ec37..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7850.pgm b/examples/autotiler/Mnist/test_img/5/7850.pgm deleted file mode 100644 index d69c8bf41..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7859.pgm b/examples/autotiler/Mnist/test_img/5/7859.pgm deleted file mode 100644 index b7142af0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7870.pgm b/examples/autotiler/Mnist/test_img/5/7870.pgm deleted file mode 100644 index 2830222b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7888.pgm b/examples/autotiler/Mnist/test_img/5/7888.pgm deleted file mode 100644 index 9146eab0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/791.pgm b/examples/autotiler/Mnist/test_img/5/791.pgm deleted file mode 100644 index 62f99f690..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7918.pgm b/examples/autotiler/Mnist/test_img/5/7918.pgm deleted file mode 100644 index e9c180be7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7938.pgm b/examples/autotiler/Mnist/test_img/5/7938.pgm deleted file mode 100644 index f8b667ae0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7948.pgm b/examples/autotiler/Mnist/test_img/5/7948.pgm deleted file mode 100644 index 79f9ae706..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7958.pgm b/examples/autotiler/Mnist/test_img/5/7958.pgm deleted file mode 100644 index bcfbdd873..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7965.pgm b/examples/autotiler/Mnist/test_img/5/7965.pgm deleted file mode 100644 index 1640eda4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/797.pgm b/examples/autotiler/Mnist/test_img/5/797.pgm deleted file mode 100644 index e998f2aa6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7974.pgm b/examples/autotiler/Mnist/test_img/5/7974.pgm deleted file mode 100644 index 07e51796b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7988.pgm b/examples/autotiler/Mnist/test_img/5/7988.pgm deleted file mode 100644 index f0ed7e2ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7996.pgm b/examples/autotiler/Mnist/test_img/5/7996.pgm deleted file mode 100644 index b69b6eaa4..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/7997.pgm b/examples/autotiler/Mnist/test_img/5/7997.pgm deleted file mode 100644 index 87ce0b9a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/7997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8.pgm b/examples/autotiler/Mnist/test_img/5/8.pgm deleted file mode 100644 index d9b5a5f67..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8034.pgm b/examples/autotiler/Mnist/test_img/5/8034.pgm deleted file mode 100644 index c0e8f1849..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8035.pgm b/examples/autotiler/Mnist/test_img/5/8035.pgm deleted file mode 100644 index 6dce5eaa8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8038.pgm b/examples/autotiler/Mnist/test_img/5/8038.pgm deleted file mode 100644 index b93e30838..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8049.pgm b/examples/autotiler/Mnist/test_img/5/8049.pgm deleted file mode 100644 index eff84b0ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8062.pgm b/examples/autotiler/Mnist/test_img/5/8062.pgm deleted file mode 100644 index f892b23a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8072.pgm b/examples/autotiler/Mnist/test_img/5/8072.pgm deleted file mode 100644 index 50de839eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8082.pgm b/examples/autotiler/Mnist/test_img/5/8082.pgm deleted file mode 100644 index 672831a61..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8089.pgm b/examples/autotiler/Mnist/test_img/5/8089.pgm deleted file mode 100644 index 5f4f9716a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/812.pgm b/examples/autotiler/Mnist/test_img/5/812.pgm deleted file mode 100644 index a30f3646a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8122.pgm b/examples/autotiler/Mnist/test_img/5/8122.pgm deleted file mode 100644 index 973f2fe1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8132.pgm b/examples/autotiler/Mnist/test_img/5/8132.pgm deleted file mode 100644 index e88e01ee1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8142.pgm b/examples/autotiler/Mnist/test_img/5/8142.pgm deleted file mode 100644 index 92e315869..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8149.pgm b/examples/autotiler/Mnist/test_img/5/8149.pgm deleted file mode 100644 index 02662631d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8158.pgm b/examples/autotiler/Mnist/test_img/5/8158.pgm deleted file mode 100644 index e2202ef09..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8160.pgm b/examples/autotiler/Mnist/test_img/5/8160.pgm deleted file mode 100644 index 244c4e915..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8170.pgm b/examples/autotiler/Mnist/test_img/5/8170.pgm deleted file mode 100644 index 7d87ecbd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8180.pgm b/examples/autotiler/Mnist/test_img/5/8180.pgm deleted file mode 100644 index 64abc09ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8185.pgm b/examples/autotiler/Mnist/test_img/5/8185.pgm deleted file mode 100644 index 3e2881547..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8192.pgm b/examples/autotiler/Mnist/test_img/5/8192.pgm deleted file mode 100644 index 17249bfb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8214.pgm b/examples/autotiler/Mnist/test_img/5/8214.pgm deleted file mode 100644 index 3ad65caf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8224.pgm b/examples/autotiler/Mnist/test_img/5/8224.pgm deleted file mode 100644 index 811b0821b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8232.pgm b/examples/autotiler/Mnist/test_img/5/8232.pgm deleted file mode 100644 index 88a3a9a71..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8270.pgm b/examples/autotiler/Mnist/test_img/5/8270.pgm deleted file mode 100644 index 56e562dea..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8275.pgm b/examples/autotiler/Mnist/test_img/5/8275.pgm deleted file mode 100644 index 637115840..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8299.pgm b/examples/autotiler/Mnist/test_img/5/8299.pgm deleted file mode 100644 index e89d6eb47..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8327.pgm b/examples/autotiler/Mnist/test_img/5/8327.pgm deleted file mode 100644 index efc087a11..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8331.pgm b/examples/autotiler/Mnist/test_img/5/8331.pgm deleted file mode 100644 index 6cb80ed2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8348.pgm b/examples/autotiler/Mnist/test_img/5/8348.pgm deleted file mode 100644 index dcd0dac60..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8366.pgm b/examples/autotiler/Mnist/test_img/5/8366.pgm deleted file mode 100644 index 98fcf1f73..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8386.pgm b/examples/autotiler/Mnist/test_img/5/8386.pgm deleted file mode 100644 index c23ff4940..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8412.pgm b/examples/autotiler/Mnist/test_img/5/8412.pgm deleted file mode 100644 index 3bf46ee96..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8415.pgm b/examples/autotiler/Mnist/test_img/5/8415.pgm deleted file mode 100644 index 7527ad759..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8444.pgm b/examples/autotiler/Mnist/test_img/5/8444.pgm deleted file mode 100644 index cd0859aed..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8445.pgm b/examples/autotiler/Mnist/test_img/5/8445.pgm deleted file mode 100644 index a0b71f727..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8447.pgm b/examples/autotiler/Mnist/test_img/5/8447.pgm deleted file mode 100644 index 773d769f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8453.pgm b/examples/autotiler/Mnist/test_img/5/8453.pgm deleted file mode 100644 index 1d24efcf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8463.pgm b/examples/autotiler/Mnist/test_img/5/8463.pgm deleted file mode 100644 index a3d310974..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8473.pgm b/examples/autotiler/Mnist/test_img/5/8473.pgm deleted file mode 100644 index f83842660..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8487.pgm b/examples/autotiler/Mnist/test_img/5/8487.pgm deleted file mode 100644 index 6b0c8e0c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8502.pgm b/examples/autotiler/Mnist/test_img/5/8502.pgm deleted file mode 100644 index e71f0877d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8507.pgm b/examples/autotiler/Mnist/test_img/5/8507.pgm deleted file mode 100644 index 19d866c5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8531.pgm b/examples/autotiler/Mnist/test_img/5/8531.pgm deleted file mode 100644 index faf19fb35..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8539.pgm b/examples/autotiler/Mnist/test_img/5/8539.pgm deleted file mode 100644 index ae27358aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8553.pgm b/examples/autotiler/Mnist/test_img/5/8553.pgm deleted file mode 100644 index c8dbcc82d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/856.pgm b/examples/autotiler/Mnist/test_img/5/856.pgm deleted file mode 100644 index bb5c828b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8563.pgm b/examples/autotiler/Mnist/test_img/5/8563.pgm deleted file mode 100644 index 035f3cf3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/857.pgm b/examples/autotiler/Mnist/test_img/5/857.pgm deleted file mode 100644 index 5de7a2172..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8571.pgm b/examples/autotiler/Mnist/test_img/5/8571.pgm deleted file mode 100644 index bbc219b2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8578.pgm b/examples/autotiler/Mnist/test_img/5/8578.pgm deleted file mode 100644 index 4e66f57d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8601.pgm b/examples/autotiler/Mnist/test_img/5/8601.pgm deleted file mode 100644 index 0d91cfc8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8630.pgm b/examples/autotiler/Mnist/test_img/5/8630.pgm deleted file mode 100644 index 3857c24a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8632.pgm b/examples/autotiler/Mnist/test_img/5/8632.pgm deleted file mode 100644 index 8ad71426f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8643.pgm b/examples/autotiler/Mnist/test_img/5/8643.pgm deleted file mode 100644 index 62189b6e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8645.pgm b/examples/autotiler/Mnist/test_img/5/8645.pgm deleted file mode 100644 index db2437e5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8652.pgm b/examples/autotiler/Mnist/test_img/5/8652.pgm deleted file mode 100644 index fa6479628..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8653.pgm b/examples/autotiler/Mnist/test_img/5/8653.pgm deleted file mode 100644 index d9e97cf68..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8656.pgm b/examples/autotiler/Mnist/test_img/5/8656.pgm deleted file mode 100644 index b6d9cb16a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/866.pgm b/examples/autotiler/Mnist/test_img/5/866.pgm deleted file mode 100644 index 1b9565e68..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8665.pgm b/examples/autotiler/Mnist/test_img/5/8665.pgm deleted file mode 100644 index d2dae6843..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8676.pgm b/examples/autotiler/Mnist/test_img/5/8676.pgm deleted file mode 100644 index cce69e0b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8686.pgm b/examples/autotiler/Mnist/test_img/5/8686.pgm deleted file mode 100644 index 0020fe1a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/869.pgm b/examples/autotiler/Mnist/test_img/5/869.pgm deleted file mode 100644 index 3ee9f36c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8696.pgm b/examples/autotiler/Mnist/test_img/5/8696.pgm deleted file mode 100644 index d63e75a5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8702.pgm b/examples/autotiler/Mnist/test_img/5/8702.pgm deleted file mode 100644 index 1d8d6997e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8710.pgm b/examples/autotiler/Mnist/test_img/5/8710.pgm deleted file mode 100644 index 47c311096..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8711.pgm b/examples/autotiler/Mnist/test_img/5/8711.pgm deleted file mode 100644 index e1d863d4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8737.pgm b/examples/autotiler/Mnist/test_img/5/8737.pgm deleted file mode 100644 index dbd0ad475..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8741.pgm b/examples/autotiler/Mnist/test_img/5/8741.pgm deleted file mode 100644 index 122bbaf1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8747.pgm b/examples/autotiler/Mnist/test_img/5/8747.pgm deleted file mode 100644 index 9e4a5e1c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8761.pgm b/examples/autotiler/Mnist/test_img/5/8761.pgm deleted file mode 100644 index 97125d7c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8774.pgm b/examples/autotiler/Mnist/test_img/5/8774.pgm deleted file mode 100644 index f444e076d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8783.pgm b/examples/autotiler/Mnist/test_img/5/8783.pgm deleted file mode 100644 index 403e70439..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8788.pgm b/examples/autotiler/Mnist/test_img/5/8788.pgm deleted file mode 100644 index b24e5309b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8803.pgm b/examples/autotiler/Mnist/test_img/5/8803.pgm deleted file mode 100644 index 88131f98d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8813.pgm b/examples/autotiler/Mnist/test_img/5/8813.pgm deleted file mode 100644 index ec351eb99..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8823.pgm b/examples/autotiler/Mnist/test_img/5/8823.pgm deleted file mode 100644 index 1b5d0004d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8834.pgm b/examples/autotiler/Mnist/test_img/5/8834.pgm deleted file mode 100644 index 2a3e3afa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8835.pgm b/examples/autotiler/Mnist/test_img/5/8835.pgm deleted file mode 100644 index 6001079a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8847.pgm b/examples/autotiler/Mnist/test_img/5/8847.pgm deleted file mode 100644 index ab6d7fc7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8853.pgm b/examples/autotiler/Mnist/test_img/5/8853.pgm deleted file mode 100644 index c11325186..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8855.pgm b/examples/autotiler/Mnist/test_img/5/8855.pgm deleted file mode 100644 index d9ab05d53..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8863.pgm b/examples/autotiler/Mnist/test_img/5/8863.pgm deleted file mode 100644 index 25e917173..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8878.pgm b/examples/autotiler/Mnist/test_img/5/8878.pgm deleted file mode 100644 index edd4c40ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8909.pgm b/examples/autotiler/Mnist/test_img/5/8909.pgm deleted file mode 100644 index 99299f3b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8940.pgm b/examples/autotiler/Mnist/test_img/5/8940.pgm deleted file mode 100644 index 7f2e2eec2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8948.pgm b/examples/autotiler/Mnist/test_img/5/8948.pgm deleted file mode 100644 index fb01f495f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8964.pgm b/examples/autotiler/Mnist/test_img/5/8964.pgm deleted file mode 100644 index 8dfb5187b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/897.pgm b/examples/autotiler/Mnist/test_img/5/897.pgm deleted file mode 100644 index d2f9f3eef..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8982.pgm b/examples/autotiler/Mnist/test_img/5/8982.pgm deleted file mode 100644 index d0e4e4773..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/8987.pgm b/examples/autotiler/Mnist/test_img/5/8987.pgm deleted file mode 100644 index 129e26d06..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/8987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9013.pgm b/examples/autotiler/Mnist/test_img/5/9013.pgm deleted file mode 100644 index d75833b31..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9035.pgm b/examples/autotiler/Mnist/test_img/5/9035.pgm deleted file mode 100644 index 4d67fd3da..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9065.pgm b/examples/autotiler/Mnist/test_img/5/9065.pgm deleted file mode 100644 index d65dd74e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9075.pgm b/examples/autotiler/Mnist/test_img/5/9075.pgm deleted file mode 100644 index 6671b3284..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9085.pgm b/examples/autotiler/Mnist/test_img/5/9085.pgm deleted file mode 100644 index 0eb7da3b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9109.pgm b/examples/autotiler/Mnist/test_img/5/9109.pgm deleted file mode 100644 index 6fe426e4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9114.pgm b/examples/autotiler/Mnist/test_img/5/9114.pgm deleted file mode 100644 index 2739b120f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9117.pgm b/examples/autotiler/Mnist/test_img/5/9117.pgm deleted file mode 100644 index 33fb18190..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9119.pgm b/examples/autotiler/Mnist/test_img/5/9119.pgm deleted file mode 100644 index 27f2db08a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9132.pgm b/examples/autotiler/Mnist/test_img/5/9132.pgm deleted file mode 100644 index c08a6da47..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9133.pgm b/examples/autotiler/Mnist/test_img/5/9133.pgm deleted file mode 100644 index 097e6bce3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9159.pgm b/examples/autotiler/Mnist/test_img/5/9159.pgm deleted file mode 100644 index d2629051a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9160.pgm b/examples/autotiler/Mnist/test_img/5/9160.pgm deleted file mode 100644 index ae454517f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9176.pgm b/examples/autotiler/Mnist/test_img/5/9176.pgm deleted file mode 100644 index 2e331b943..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9184.pgm b/examples/autotiler/Mnist/test_img/5/9184.pgm deleted file mode 100644 index d3c77c9ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9194.pgm b/examples/autotiler/Mnist/test_img/5/9194.pgm deleted file mode 100644 index d10ad4474..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9228.pgm b/examples/autotiler/Mnist/test_img/5/9228.pgm deleted file mode 100644 index 41ba9bb5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9234.pgm b/examples/autotiler/Mnist/test_img/5/9234.pgm deleted file mode 100644 index 5f2bfe0b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9260.pgm b/examples/autotiler/Mnist/test_img/5/9260.pgm deleted file mode 100644 index 5273a3593..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9268.pgm b/examples/autotiler/Mnist/test_img/5/9268.pgm deleted file mode 100644 index d747244e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9277.pgm b/examples/autotiler/Mnist/test_img/5/9277.pgm deleted file mode 100644 index b0a4d92bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9289.pgm b/examples/autotiler/Mnist/test_img/5/9289.pgm deleted file mode 100644 index e236314c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9290.pgm b/examples/autotiler/Mnist/test_img/5/9290.pgm deleted file mode 100644 index 38318b175..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9298.pgm b/examples/autotiler/Mnist/test_img/5/9298.pgm deleted file mode 100644 index 6aa00c44a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9315.pgm b/examples/autotiler/Mnist/test_img/5/9315.pgm deleted file mode 100644 index 04861582a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9329.pgm b/examples/autotiler/Mnist/test_img/5/9329.pgm deleted file mode 100644 index 1c4804445..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9331.pgm b/examples/autotiler/Mnist/test_img/5/9331.pgm deleted file mode 100644 index bdc14f41b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9337.pgm b/examples/autotiler/Mnist/test_img/5/9337.pgm deleted file mode 100644 index 268a89bae..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9338.pgm b/examples/autotiler/Mnist/test_img/5/9338.pgm deleted file mode 100644 index 9c0aa0a67..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/934.pgm b/examples/autotiler/Mnist/test_img/5/934.pgm deleted file mode 100644 index d4c7cbe8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9349.pgm b/examples/autotiler/Mnist/test_img/5/9349.pgm deleted file mode 100644 index abbe90a6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/935.pgm b/examples/autotiler/Mnist/test_img/5/935.pgm deleted file mode 100644 index 04dac124b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9360.pgm b/examples/autotiler/Mnist/test_img/5/9360.pgm deleted file mode 100644 index 508a65a62..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9372.pgm b/examples/autotiler/Mnist/test_img/5/9372.pgm deleted file mode 100644 index 139eecb58..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9382.pgm b/examples/autotiler/Mnist/test_img/5/9382.pgm deleted file mode 100644 index 9ebe14d78..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9391.pgm b/examples/autotiler/Mnist/test_img/5/9391.pgm deleted file mode 100644 index 2cb3763e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9398.pgm b/examples/autotiler/Mnist/test_img/5/9398.pgm deleted file mode 100644 index aa2778efb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9400.pgm b/examples/autotiler/Mnist/test_img/5/9400.pgm deleted file mode 100644 index c9789bd49..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9422.pgm b/examples/autotiler/Mnist/test_img/5/9422.pgm deleted file mode 100644 index 175fcf34f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9427.pgm b/examples/autotiler/Mnist/test_img/5/9427.pgm deleted file mode 100644 index 3844867a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9428.pgm b/examples/autotiler/Mnist/test_img/5/9428.pgm deleted file mode 100644 index b422843f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9465.pgm b/examples/autotiler/Mnist/test_img/5/9465.pgm deleted file mode 100644 index fc4800f5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9478.pgm b/examples/autotiler/Mnist/test_img/5/9478.pgm deleted file mode 100644 index 2bc52bcb2..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9481.pgm b/examples/autotiler/Mnist/test_img/5/9481.pgm deleted file mode 100644 index fdbe09094..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9482.pgm b/examples/autotiler/Mnist/test_img/5/9482.pgm deleted file mode 100644 index 0326ed00e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9493.pgm b/examples/autotiler/Mnist/test_img/5/9493.pgm deleted file mode 100644 index fe96d3337..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9503.pgm b/examples/autotiler/Mnist/test_img/5/9503.pgm deleted file mode 100644 index cd221067b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/951.pgm b/examples/autotiler/Mnist/test_img/5/951.pgm deleted file mode 100644 index 807ed97a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9513.pgm b/examples/autotiler/Mnist/test_img/5/9513.pgm deleted file mode 100644 index cf757c713..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9523.pgm b/examples/autotiler/Mnist/test_img/5/9523.pgm deleted file mode 100644 index c78567b4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9533.pgm b/examples/autotiler/Mnist/test_img/5/9533.pgm deleted file mode 100644 index 443a03c99..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9545.pgm b/examples/autotiler/Mnist/test_img/5/9545.pgm deleted file mode 100644 index e625ae6bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/955.pgm b/examples/autotiler/Mnist/test_img/5/955.pgm deleted file mode 100644 index c97d14273..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9583.pgm b/examples/autotiler/Mnist/test_img/5/9583.pgm deleted file mode 100644 index b84f017c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9584.pgm b/examples/autotiler/Mnist/test_img/5/9584.pgm deleted file mode 100644 index a4bc7c223..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9588.pgm b/examples/autotiler/Mnist/test_img/5/9588.pgm deleted file mode 100644 index 400a36d1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9590.pgm b/examples/autotiler/Mnist/test_img/5/9590.pgm deleted file mode 100644 index 426b98c5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9600.pgm b/examples/autotiler/Mnist/test_img/5/9600.pgm deleted file mode 100644 index f4d2f8b13..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9606.pgm b/examples/autotiler/Mnist/test_img/5/9606.pgm deleted file mode 100644 index 678cfaba9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9616.pgm b/examples/autotiler/Mnist/test_img/5/9616.pgm deleted file mode 100644 index be08737f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9626.pgm b/examples/autotiler/Mnist/test_img/5/9626.pgm deleted file mode 100644 index 492757736..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9651.pgm b/examples/autotiler/Mnist/test_img/5/9651.pgm deleted file mode 100644 index e870d2d8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9671.pgm b/examples/autotiler/Mnist/test_img/5/9671.pgm deleted file mode 100644 index 87190b6ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9675.pgm b/examples/autotiler/Mnist/test_img/5/9675.pgm deleted file mode 100644 index d59dd7211..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9685.pgm b/examples/autotiler/Mnist/test_img/5/9685.pgm deleted file mode 100644 index 54bbbf13b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/970.pgm b/examples/autotiler/Mnist/test_img/5/970.pgm deleted file mode 100644 index cf547bbaa..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9702.pgm b/examples/autotiler/Mnist/test_img/5/9702.pgm deleted file mode 100644 index 69b1487be..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9709.pgm b/examples/autotiler/Mnist/test_img/5/9709.pgm deleted file mode 100644 index 67d58e84e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9719.pgm b/examples/autotiler/Mnist/test_img/5/9719.pgm deleted file mode 100644 index 1f31f6240..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9729.pgm b/examples/autotiler/Mnist/test_img/5/9729.pgm deleted file mode 100644 index b7e79bcc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9747.pgm b/examples/autotiler/Mnist/test_img/5/9747.pgm deleted file mode 100644 index 5d9dc01cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9749.pgm b/examples/autotiler/Mnist/test_img/5/9749.pgm deleted file mode 100644 index 82ba4162a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9754.pgm b/examples/autotiler/Mnist/test_img/5/9754.pgm deleted file mode 100644 index 60988bb34..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9770.pgm b/examples/autotiler/Mnist/test_img/5/9770.pgm deleted file mode 100644 index 41fc1487e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9777.pgm b/examples/autotiler/Mnist/test_img/5/9777.pgm deleted file mode 100644 index 4e0822b3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/978.pgm b/examples/autotiler/Mnist/test_img/5/978.pgm deleted file mode 100644 index 63f3c736b..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9786.pgm b/examples/autotiler/Mnist/test_img/5/9786.pgm deleted file mode 100644 index 924f270bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9814.pgm b/examples/autotiler/Mnist/test_img/5/9814.pgm deleted file mode 100644 index 588ba1a92..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9830.pgm b/examples/autotiler/Mnist/test_img/5/9830.pgm deleted file mode 100644 index 6d615add5..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9831.pgm b/examples/autotiler/Mnist/test_img/5/9831.pgm deleted file mode 100644 index 127726190..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9841.pgm b/examples/autotiler/Mnist/test_img/5/9841.pgm deleted file mode 100644 index 84c14585a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9853.pgm b/examples/autotiler/Mnist/test_img/5/9853.pgm deleted file mode 100644 index 30b9c7548..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9870.pgm b/examples/autotiler/Mnist/test_img/5/9870.pgm deleted file mode 100644 index 05522b536..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9877.pgm b/examples/autotiler/Mnist/test_img/5/9877.pgm deleted file mode 100644 index 00ce09d8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9883.pgm b/examples/autotiler/Mnist/test_img/5/9883.pgm deleted file mode 100644 index f350e699d..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9907.pgm b/examples/autotiler/Mnist/test_img/5/9907.pgm deleted file mode 100644 index ddca11d0e..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9907.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9941.pgm b/examples/autotiler/Mnist/test_img/5/9941.pgm deleted file mode 100644 index d8ab75b95..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9970.pgm b/examples/autotiler/Mnist/test_img/5/9970.pgm deleted file mode 100644 index 6509e8506..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9982.pgm b/examples/autotiler/Mnist/test_img/5/9982.pgm deleted file mode 100644 index 107d4d13a..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9988.pgm b/examples/autotiler/Mnist/test_img/5/9988.pgm deleted file mode 100644 index 8abb695d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/5/9998.pgm b/examples/autotiler/Mnist/test_img/5/9998.pgm deleted file mode 100644 index 491b52875..000000000 Binary files a/examples/autotiler/Mnist/test_img/5/9998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/100.pgm b/examples/autotiler/Mnist/test_img/6/100.pgm deleted file mode 100644 index 9b285fb7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1014.pgm b/examples/autotiler/Mnist/test_img/6/1014.pgm deleted file mode 100644 index 19f7d9782..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1017.pgm b/examples/autotiler/Mnist/test_img/6/1017.pgm deleted file mode 100644 index 072816131..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1035.pgm b/examples/autotiler/Mnist/test_img/6/1035.pgm deleted file mode 100644 index aab861d70..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1044.pgm b/examples/autotiler/Mnist/test_img/6/1044.pgm deleted file mode 100644 index 9c3b88ede..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1079.pgm b/examples/autotiler/Mnist/test_img/6/1079.pgm deleted file mode 100644 index 7aa2bf0ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1085.pgm b/examples/autotiler/Mnist/test_img/6/1085.pgm deleted file mode 100644 index 5697ef537..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1099.pgm b/examples/autotiler/Mnist/test_img/6/1099.pgm deleted file mode 100644 index 03f6b4af3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/11.pgm b/examples/autotiler/Mnist/test_img/6/11.pgm deleted file mode 100644 index 1bef90a1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/11.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1106.pgm b/examples/autotiler/Mnist/test_img/6/1106.pgm deleted file mode 100644 index bfd273fe7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1108.pgm b/examples/autotiler/Mnist/test_img/6/1108.pgm deleted file mode 100644 index 8f22e64d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1123.pgm b/examples/autotiler/Mnist/test_img/6/1123.pgm deleted file mode 100644 index bd707392a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1151.pgm b/examples/autotiler/Mnist/test_img/6/1151.pgm deleted file mode 100644 index d7a68e944..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1153.pgm b/examples/autotiler/Mnist/test_img/6/1153.pgm deleted file mode 100644 index af4dc9213..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1161.pgm b/examples/autotiler/Mnist/test_img/6/1161.pgm deleted file mode 100644 index 52a8fd932..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1162.pgm b/examples/autotiler/Mnist/test_img/6/1162.pgm deleted file mode 100644 index 6fab3f7c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1181.pgm b/examples/autotiler/Mnist/test_img/6/1181.pgm deleted file mode 100644 index 9af02fde9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1182.pgm b/examples/autotiler/Mnist/test_img/6/1182.pgm deleted file mode 100644 index bc5be5b2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1196.pgm b/examples/autotiler/Mnist/test_img/6/1196.pgm deleted file mode 100644 index b93c5f0d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1199.pgm b/examples/autotiler/Mnist/test_img/6/1199.pgm deleted file mode 100644 index 604169c26..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1209.pgm b/examples/autotiler/Mnist/test_img/6/1209.pgm deleted file mode 100644 index bc646ee61..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1212.pgm b/examples/autotiler/Mnist/test_img/6/1212.pgm deleted file mode 100644 index cbfcb25d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/123.pgm b/examples/autotiler/Mnist/test_img/6/123.pgm deleted file mode 100644 index 8c3375480..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1250.pgm b/examples/autotiler/Mnist/test_img/6/1250.pgm deleted file mode 100644 index ad76330f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1266.pgm b/examples/autotiler/Mnist/test_img/6/1266.pgm deleted file mode 100644 index 41e725f07..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1292.pgm b/examples/autotiler/Mnist/test_img/6/1292.pgm deleted file mode 100644 index 4070eacf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1293.pgm b/examples/autotiler/Mnist/test_img/6/1293.pgm deleted file mode 100644 index 63d7c49bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1296.pgm b/examples/autotiler/Mnist/test_img/6/1296.pgm deleted file mode 100644 index fba80146a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/130.pgm b/examples/autotiler/Mnist/test_img/6/130.pgm deleted file mode 100644 index 695268765..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1307.pgm b/examples/autotiler/Mnist/test_img/6/1307.pgm deleted file mode 100644 index 6f99eb77e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/131.pgm b/examples/autotiler/Mnist/test_img/6/131.pgm deleted file mode 100644 index ca75c2624..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1332.pgm b/examples/autotiler/Mnist/test_img/6/1332.pgm deleted file mode 100644 index 1ea815146..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1344.pgm b/examples/autotiler/Mnist/test_img/6/1344.pgm deleted file mode 100644 index 3c1fafbae..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1362.pgm b/examples/autotiler/Mnist/test_img/6/1362.pgm deleted file mode 100644 index 0cd69f42d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1373.pgm b/examples/autotiler/Mnist/test_img/6/1373.pgm deleted file mode 100644 index 421e9d5d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1377.pgm b/examples/autotiler/Mnist/test_img/6/1377.pgm deleted file mode 100644 index f9e3b545e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/138.pgm b/examples/autotiler/Mnist/test_img/6/138.pgm deleted file mode 100644 index 9fe6a66ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1387.pgm b/examples/autotiler/Mnist/test_img/6/1387.pgm deleted file mode 100644 index de4bc0523..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1388.pgm b/examples/autotiler/Mnist/test_img/6/1388.pgm deleted file mode 100644 index d984a9df4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/140.pgm b/examples/autotiler/Mnist/test_img/6/140.pgm deleted file mode 100644 index e195ef083..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1400.pgm b/examples/autotiler/Mnist/test_img/6/1400.pgm deleted file mode 100644 index 5d874b8c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1420.pgm b/examples/autotiler/Mnist/test_img/6/1420.pgm deleted file mode 100644 index 13709697a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1436.pgm b/examples/autotiler/Mnist/test_img/6/1436.pgm deleted file mode 100644 index 043e3bdc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1444.pgm b/examples/autotiler/Mnist/test_img/6/1444.pgm deleted file mode 100644 index c8dd86145..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1450.pgm b/examples/autotiler/Mnist/test_img/6/1450.pgm deleted file mode 100644 index 970887cbb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1456.pgm b/examples/autotiler/Mnist/test_img/6/1456.pgm deleted file mode 100644 index 7806d1a25..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1458.pgm b/examples/autotiler/Mnist/test_img/6/1458.pgm deleted file mode 100644 index ac2eaa179..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1475.pgm b/examples/autotiler/Mnist/test_img/6/1475.pgm deleted file mode 100644 index 88ea34b0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1478.pgm b/examples/autotiler/Mnist/test_img/6/1478.pgm deleted file mode 100644 index 9c2f20484..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1482.pgm b/examples/autotiler/Mnist/test_img/6/1482.pgm deleted file mode 100644 index 03a5defca..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1491.pgm b/examples/autotiler/Mnist/test_img/6/1491.pgm deleted file mode 100644 index cce379132..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1536.pgm b/examples/autotiler/Mnist/test_img/6/1536.pgm deleted file mode 100644 index 52db13961..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1537.pgm b/examples/autotiler/Mnist/test_img/6/1537.pgm deleted file mode 100644 index f8c846111..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/156.pgm b/examples/autotiler/Mnist/test_img/6/156.pgm deleted file mode 100644 index b4a9fde62..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1569.pgm b/examples/autotiler/Mnist/test_img/6/1569.pgm deleted file mode 100644 index 8c6c34018..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1577.pgm b/examples/autotiler/Mnist/test_img/6/1577.pgm deleted file mode 100644 index 2f61acde6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1579.pgm b/examples/autotiler/Mnist/test_img/6/1579.pgm deleted file mode 100644 index 59fd74efe..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1587.pgm b/examples/autotiler/Mnist/test_img/6/1587.pgm deleted file mode 100644 index d4a700ec4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1593.pgm b/examples/autotiler/Mnist/test_img/6/1593.pgm deleted file mode 100644 index 6e96943a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1602.pgm b/examples/autotiler/Mnist/test_img/6/1602.pgm deleted file mode 100644 index dd1ce5ff4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/161.pgm b/examples/autotiler/Mnist/test_img/6/161.pgm deleted file mode 100644 index 2e186f4ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1616.pgm b/examples/autotiler/Mnist/test_img/6/1616.pgm deleted file mode 100644 index 01b510a35..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1626.pgm b/examples/autotiler/Mnist/test_img/6/1626.pgm deleted file mode 100644 index 1659b0768..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1632.pgm b/examples/autotiler/Mnist/test_img/6/1632.pgm deleted file mode 100644 index ed2c80581..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/164.pgm b/examples/autotiler/Mnist/test_img/6/164.pgm deleted file mode 100644 index ba608e759..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1662.pgm b/examples/autotiler/Mnist/test_img/6/1662.pgm deleted file mode 100644 index f641aba89..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1676.pgm b/examples/autotiler/Mnist/test_img/6/1676.pgm deleted file mode 100644 index e9f1eda62..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1685.pgm b/examples/autotiler/Mnist/test_img/6/1685.pgm deleted file mode 100644 index 63f5209f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1688.pgm b/examples/autotiler/Mnist/test_img/6/1688.pgm deleted file mode 100644 index a7d5639e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1698.pgm b/examples/autotiler/Mnist/test_img/6/1698.pgm deleted file mode 100644 index cb138faff..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1725.pgm b/examples/autotiler/Mnist/test_img/6/1725.pgm deleted file mode 100644 index 86a08754c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1733.pgm b/examples/autotiler/Mnist/test_img/6/1733.pgm deleted file mode 100644 index 0af501c0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1744.pgm b/examples/autotiler/Mnist/test_img/6/1744.pgm deleted file mode 100644 index a66f59317..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1800.pgm b/examples/autotiler/Mnist/test_img/6/1800.pgm deleted file mode 100644 index 70c363145..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1818.pgm b/examples/autotiler/Mnist/test_img/6/1818.pgm deleted file mode 100644 index 9e104ba13..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1818.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1819.pgm b/examples/autotiler/Mnist/test_img/6/1819.pgm deleted file mode 100644 index c334da9ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1822.pgm b/examples/autotiler/Mnist/test_img/6/1822.pgm deleted file mode 100644 index 6f03bcef4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1831.pgm b/examples/autotiler/Mnist/test_img/6/1831.pgm deleted file mode 100644 index 08ef084d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1852.pgm b/examples/autotiler/Mnist/test_img/6/1852.pgm deleted file mode 100644 index 972950666..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1854.pgm b/examples/autotiler/Mnist/test_img/6/1854.pgm deleted file mode 100644 index 219fd99e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1857.pgm b/examples/autotiler/Mnist/test_img/6/1857.pgm deleted file mode 100644 index 109a4a555..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1858.pgm b/examples/autotiler/Mnist/test_img/6/1858.pgm deleted file mode 100644 index ceeb8ed0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1880.pgm b/examples/autotiler/Mnist/test_img/6/1880.pgm deleted file mode 100644 index 083b5bf62..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1886.pgm b/examples/autotiler/Mnist/test_img/6/1886.pgm deleted file mode 100644 index 0359c0bd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1888.pgm b/examples/autotiler/Mnist/test_img/6/1888.pgm deleted file mode 100644 index 8236a8f32..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1905.pgm b/examples/autotiler/Mnist/test_img/6/1905.pgm deleted file mode 100644 index 7f716201e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1908.pgm b/examples/autotiler/Mnist/test_img/6/1908.pgm deleted file mode 100644 index e3927bb49..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1916.pgm b/examples/autotiler/Mnist/test_img/6/1916.pgm deleted file mode 100644 index 7b1642ffc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1921.pgm b/examples/autotiler/Mnist/test_img/6/1921.pgm deleted file mode 100644 index 96b21beec..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1937.pgm b/examples/autotiler/Mnist/test_img/6/1937.pgm deleted file mode 100644 index 8aade599d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1943.pgm b/examples/autotiler/Mnist/test_img/6/1943.pgm deleted file mode 100644 index 268918083..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1951.pgm b/examples/autotiler/Mnist/test_img/6/1951.pgm deleted file mode 100644 index f4266bb76..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1969.pgm b/examples/autotiler/Mnist/test_img/6/1969.pgm deleted file mode 100644 index 0a992ae0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/197.pgm b/examples/autotiler/Mnist/test_img/6/197.pgm deleted file mode 100644 index 2dd36bf70..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1971.pgm b/examples/autotiler/Mnist/test_img/6/1971.pgm deleted file mode 100644 index 7ca807620..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1974.pgm b/examples/autotiler/Mnist/test_img/6/1974.pgm deleted file mode 100644 index 1950b707d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1977.pgm b/examples/autotiler/Mnist/test_img/6/1977.pgm deleted file mode 100644 index 3f424e861..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1981.pgm b/examples/autotiler/Mnist/test_img/6/1981.pgm deleted file mode 100644 index 3bcfd19cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1982.pgm b/examples/autotiler/Mnist/test_img/6/1982.pgm deleted file mode 100644 index 9399546d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1990.pgm b/examples/autotiler/Mnist/test_img/6/1990.pgm deleted file mode 100644 index 84a0fe928..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/1996.pgm b/examples/autotiler/Mnist/test_img/6/1996.pgm deleted file mode 100644 index 18e4ec731..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/1996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2000.pgm b/examples/autotiler/Mnist/test_img/6/2000.pgm deleted file mode 100644 index 1375f855d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2002.pgm b/examples/autotiler/Mnist/test_img/6/2002.pgm deleted file mode 100644 index 0ddcbf6e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2006.pgm b/examples/autotiler/Mnist/test_img/6/2006.pgm deleted file mode 100644 index 5b1e3192f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/201.pgm b/examples/autotiler/Mnist/test_img/6/201.pgm deleted file mode 100644 index 1a4feb3c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/201.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2026.pgm b/examples/autotiler/Mnist/test_img/6/2026.pgm deleted file mode 100644 index 7e5f679eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2039.pgm b/examples/autotiler/Mnist/test_img/6/2039.pgm deleted file mode 100644 index 625ea88e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2047.pgm b/examples/autotiler/Mnist/test_img/6/2047.pgm deleted file mode 100644 index 5fa9bcb88..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2057.pgm b/examples/autotiler/Mnist/test_img/6/2057.pgm deleted file mode 100644 index d780b885e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2062.pgm b/examples/autotiler/Mnist/test_img/6/2062.pgm deleted file mode 100644 index 81e0b029f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2066.pgm b/examples/autotiler/Mnist/test_img/6/2066.pgm deleted file mode 100644 index bd22143b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2079.pgm b/examples/autotiler/Mnist/test_img/6/2079.pgm deleted file mode 100644 index 6abd7be51..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2097.pgm b/examples/autotiler/Mnist/test_img/6/2097.pgm deleted file mode 100644 index c17818e14..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/21.pgm b/examples/autotiler/Mnist/test_img/6/21.pgm deleted file mode 100644 index 6eaf01b72..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/21.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2116.pgm b/examples/autotiler/Mnist/test_img/6/2116.pgm deleted file mode 100644 index 1e6275315..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2118.pgm b/examples/autotiler/Mnist/test_img/6/2118.pgm deleted file mode 100644 index 70085e101..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2131.pgm b/examples/autotiler/Mnist/test_img/6/2131.pgm deleted file mode 100644 index d263b7f36..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2135.pgm b/examples/autotiler/Mnist/test_img/6/2135.pgm deleted file mode 100644 index 23d84abce..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2140.pgm b/examples/autotiler/Mnist/test_img/6/2140.pgm deleted file mode 100644 index c557fdf73..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2144.pgm b/examples/autotiler/Mnist/test_img/6/2144.pgm deleted file mode 100644 index e71d5acaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2150.pgm b/examples/autotiler/Mnist/test_img/6/2150.pgm deleted file mode 100644 index 8c862b812..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2156.pgm b/examples/autotiler/Mnist/test_img/6/2156.pgm deleted file mode 100644 index 0be036d80..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2160.pgm b/examples/autotiler/Mnist/test_img/6/2160.pgm deleted file mode 100644 index e00ab5574..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/217.pgm b/examples/autotiler/Mnist/test_img/6/217.pgm deleted file mode 100644 index bfa467a52..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2170.pgm b/examples/autotiler/Mnist/test_img/6/2170.pgm deleted file mode 100644 index bbe7aa8e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2194.pgm b/examples/autotiler/Mnist/test_img/6/2194.pgm deleted file mode 100644 index 739cd79da..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2199.pgm b/examples/autotiler/Mnist/test_img/6/2199.pgm deleted file mode 100644 index ec9ffc6fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/22.pgm b/examples/autotiler/Mnist/test_img/6/22.pgm deleted file mode 100644 index 97e0023c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/22.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2210.pgm b/examples/autotiler/Mnist/test_img/6/2210.pgm deleted file mode 100644 index 8accac86b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2215.pgm b/examples/autotiler/Mnist/test_img/6/2215.pgm deleted file mode 100644 index c99b25df9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2231.pgm b/examples/autotiler/Mnist/test_img/6/2231.pgm deleted file mode 100644 index 7770c047c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2267.pgm b/examples/autotiler/Mnist/test_img/6/2267.pgm deleted file mode 100644 index 2af7af8e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2286.pgm b/examples/autotiler/Mnist/test_img/6/2286.pgm deleted file mode 100644 index f4cadf85d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2321.pgm b/examples/autotiler/Mnist/test_img/6/2321.pgm deleted file mode 100644 index 3f07ed20e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2331.pgm b/examples/autotiler/Mnist/test_img/6/2331.pgm deleted file mode 100644 index ecc76e5b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2337.pgm b/examples/autotiler/Mnist/test_img/6/2337.pgm deleted file mode 100644 index 8ba373ad3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2352.pgm b/examples/autotiler/Mnist/test_img/6/2352.pgm deleted file mode 100644 index 03ba411b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2360.pgm b/examples/autotiler/Mnist/test_img/6/2360.pgm deleted file mode 100644 index f3abb45db..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2367.pgm b/examples/autotiler/Mnist/test_img/6/2367.pgm deleted file mode 100644 index 35f5f009d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2367.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2383.pgm b/examples/autotiler/Mnist/test_img/6/2383.pgm deleted file mode 100644 index 64f180767..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2388.pgm b/examples/autotiler/Mnist/test_img/6/2388.pgm deleted file mode 100644 index 0aa5cc807..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2422.pgm b/examples/autotiler/Mnist/test_img/6/2422.pgm deleted file mode 100644 index e11942f96..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2428.pgm b/examples/autotiler/Mnist/test_img/6/2428.pgm deleted file mode 100644 index d68ecd486..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2454.pgm b/examples/autotiler/Mnist/test_img/6/2454.pgm deleted file mode 100644 index ac4f6863d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2458.pgm b/examples/autotiler/Mnist/test_img/6/2458.pgm deleted file mode 100644 index c3fc325ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2465.pgm b/examples/autotiler/Mnist/test_img/6/2465.pgm deleted file mode 100644 index 6ebc03832..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2466.pgm b/examples/autotiler/Mnist/test_img/6/2466.pgm deleted file mode 100644 index 4e6b84551..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2468.pgm b/examples/autotiler/Mnist/test_img/6/2468.pgm deleted file mode 100644 index bb1751c2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2469.pgm b/examples/autotiler/Mnist/test_img/6/2469.pgm deleted file mode 100644 index a3c791595..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2471.pgm b/examples/autotiler/Mnist/test_img/6/2471.pgm deleted file mode 100644 index a158f7f2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2483.pgm b/examples/autotiler/Mnist/test_img/6/2483.pgm deleted file mode 100644 index 5444ae812..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2486.pgm b/examples/autotiler/Mnist/test_img/6/2486.pgm deleted file mode 100644 index 39daeb8fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2508.pgm b/examples/autotiler/Mnist/test_img/6/2508.pgm deleted file mode 100644 index 1dfd3bc64..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2532.pgm b/examples/autotiler/Mnist/test_img/6/2532.pgm deleted file mode 100644 index d2d1095da..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2535.pgm b/examples/autotiler/Mnist/test_img/6/2535.pgm deleted file mode 100644 index e17f5d3f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2542.pgm b/examples/autotiler/Mnist/test_img/6/2542.pgm deleted file mode 100644 index 0d97695fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2562.pgm b/examples/autotiler/Mnist/test_img/6/2562.pgm deleted file mode 100644 index ad833732a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2580.pgm b/examples/autotiler/Mnist/test_img/6/2580.pgm deleted file mode 100644 index b31d0bee9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/259.pgm b/examples/autotiler/Mnist/test_img/6/259.pgm deleted file mode 100644 index 1b8f67b74..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2601.pgm b/examples/autotiler/Mnist/test_img/6/2601.pgm deleted file mode 100644 index 7f3791c22..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2609.pgm b/examples/autotiler/Mnist/test_img/6/2609.pgm deleted file mode 100644 index d99925b6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2620.pgm b/examples/autotiler/Mnist/test_img/6/2620.pgm deleted file mode 100644 index 5a44e36a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2643.pgm b/examples/autotiler/Mnist/test_img/6/2643.pgm deleted file mode 100644 index 307ea39a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2651.pgm b/examples/autotiler/Mnist/test_img/6/2651.pgm deleted file mode 100644 index 3efb85e31..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2654.pgm b/examples/autotiler/Mnist/test_img/6/2654.pgm deleted file mode 100644 index fa804494f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2672.pgm b/examples/autotiler/Mnist/test_img/6/2672.pgm deleted file mode 100644 index d396c6451..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2677.pgm b/examples/autotiler/Mnist/test_img/6/2677.pgm deleted file mode 100644 index f2de94ca0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2702.pgm b/examples/autotiler/Mnist/test_img/6/2702.pgm deleted file mode 100644 index 65c58aff7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2711.pgm b/examples/autotiler/Mnist/test_img/6/2711.pgm deleted file mode 100644 index b0a35c419..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2718.pgm b/examples/autotiler/Mnist/test_img/6/2718.pgm deleted file mode 100644 index 89a255f82..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2721.pgm b/examples/autotiler/Mnist/test_img/6/2721.pgm deleted file mode 100644 index d2c044489..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2728.pgm b/examples/autotiler/Mnist/test_img/6/2728.pgm deleted file mode 100644 index d6d5758b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2732.pgm b/examples/autotiler/Mnist/test_img/6/2732.pgm deleted file mode 100644 index 7be767979..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2737.pgm b/examples/autotiler/Mnist/test_img/6/2737.pgm deleted file mode 100644 index 5690b3f8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2738.pgm b/examples/autotiler/Mnist/test_img/6/2738.pgm deleted file mode 100644 index 04c684ebd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2738.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2750.pgm b/examples/autotiler/Mnist/test_img/6/2750.pgm deleted file mode 100644 index 2931625cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2751.pgm b/examples/autotiler/Mnist/test_img/6/2751.pgm deleted file mode 100644 index d9402233f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2754.pgm b/examples/autotiler/Mnist/test_img/6/2754.pgm deleted file mode 100644 index 8a630b206..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2759.pgm b/examples/autotiler/Mnist/test_img/6/2759.pgm deleted file mode 100644 index 95f9d902e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2762.pgm b/examples/autotiler/Mnist/test_img/6/2762.pgm deleted file mode 100644 index 9e9210f97..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2766.pgm b/examples/autotiler/Mnist/test_img/6/2766.pgm deleted file mode 100644 index dcde2eda6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2782.pgm b/examples/autotiler/Mnist/test_img/6/2782.pgm deleted file mode 100644 index 77c89f25b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2791.pgm b/examples/autotiler/Mnist/test_img/6/2791.pgm deleted file mode 100644 index 85994cca7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2795.pgm b/examples/autotiler/Mnist/test_img/6/2795.pgm deleted file mode 100644 index 64ed3f18f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2796.pgm b/examples/autotiler/Mnist/test_img/6/2796.pgm deleted file mode 100644 index 2eb959c7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2801.pgm b/examples/autotiler/Mnist/test_img/6/2801.pgm deleted file mode 100644 index a8e3f0c4a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2826.pgm b/examples/autotiler/Mnist/test_img/6/2826.pgm deleted file mode 100644 index 539ebca0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2830.pgm b/examples/autotiler/Mnist/test_img/6/2830.pgm deleted file mode 100644 index 2af98c6b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2831.pgm b/examples/autotiler/Mnist/test_img/6/2831.pgm deleted file mode 100644 index 26c425f63..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2846.pgm b/examples/autotiler/Mnist/test_img/6/2846.pgm deleted file mode 100644 index a3f644798..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/286.pgm b/examples/autotiler/Mnist/test_img/6/286.pgm deleted file mode 100644 index 654da3e9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2860.pgm b/examples/autotiler/Mnist/test_img/6/2860.pgm deleted file mode 100644 index b7acd0988..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2866.pgm b/examples/autotiler/Mnist/test_img/6/2866.pgm deleted file mode 100644 index 96349ba2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2876.pgm b/examples/autotiler/Mnist/test_img/6/2876.pgm deleted file mode 100644 index e0cd12d8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2920.pgm b/examples/autotiler/Mnist/test_img/6/2920.pgm deleted file mode 100644 index a6ce181fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2933.pgm b/examples/autotiler/Mnist/test_img/6/2933.pgm deleted file mode 100644 index 2be107844..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2947.pgm b/examples/autotiler/Mnist/test_img/6/2947.pgm deleted file mode 100644 index ba0d3a545..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2976.pgm b/examples/autotiler/Mnist/test_img/6/2976.pgm deleted file mode 100644 index fe8f868f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2980.pgm b/examples/autotiler/Mnist/test_img/6/2980.pgm deleted file mode 100644 index 9b96374b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2994.pgm b/examples/autotiler/Mnist/test_img/6/2994.pgm deleted file mode 100644 index 8a601b34d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/2995.pgm b/examples/autotiler/Mnist/test_img/6/2995.pgm deleted file mode 100644 index 9e022bc41..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/2995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3000.pgm b/examples/autotiler/Mnist/test_img/6/3000.pgm deleted file mode 100644 index dcbbd01ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3018.pgm b/examples/autotiler/Mnist/test_img/6/3018.pgm deleted file mode 100644 index 92eb9fac6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3030.pgm b/examples/autotiler/Mnist/test_img/6/3030.pgm deleted file mode 100644 index 153c1f902..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3031.pgm b/examples/autotiler/Mnist/test_img/6/3031.pgm deleted file mode 100644 index 6b7b7cf62..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3033.pgm b/examples/autotiler/Mnist/test_img/6/3033.pgm deleted file mode 100644 index bae3db884..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3036.pgm b/examples/autotiler/Mnist/test_img/6/3036.pgm deleted file mode 100644 index 496b691b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3051.pgm b/examples/autotiler/Mnist/test_img/6/3051.pgm deleted file mode 100644 index ff4037e92..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3058.pgm b/examples/autotiler/Mnist/test_img/6/3058.pgm deleted file mode 100644 index edce527f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3063.pgm b/examples/autotiler/Mnist/test_img/6/3063.pgm deleted file mode 100644 index 86b55fb64..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3067.pgm b/examples/autotiler/Mnist/test_img/6/3067.pgm deleted file mode 100644 index 2460c1e84..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3088.pgm b/examples/autotiler/Mnist/test_img/6/3088.pgm deleted file mode 100644 index e7e843d28..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3118.pgm b/examples/autotiler/Mnist/test_img/6/3118.pgm deleted file mode 100644 index 408be2831..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3121.pgm b/examples/autotiler/Mnist/test_img/6/3121.pgm deleted file mode 100644 index 2ae81bb71..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3130.pgm b/examples/autotiler/Mnist/test_img/6/3130.pgm deleted file mode 100644 index 133ffe9f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3135.pgm b/examples/autotiler/Mnist/test_img/6/3135.pgm deleted file mode 100644 index 25143ba30..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3141.pgm b/examples/autotiler/Mnist/test_img/6/3141.pgm deleted file mode 100644 index eb148eb47..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3144.pgm b/examples/autotiler/Mnist/test_img/6/3144.pgm deleted file mode 100644 index b15fc108d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3156.pgm b/examples/autotiler/Mnist/test_img/6/3156.pgm deleted file mode 100644 index 30197416e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3159.pgm b/examples/autotiler/Mnist/test_img/6/3159.pgm deleted file mode 100644 index 290e6e458..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/316.pgm b/examples/autotiler/Mnist/test_img/6/316.pgm deleted file mode 100644 index 1a8950f2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3164.pgm b/examples/autotiler/Mnist/test_img/6/3164.pgm deleted file mode 100644 index 1f0fb9783..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3173.pgm b/examples/autotiler/Mnist/test_img/6/3173.pgm deleted file mode 100644 index 0b3fd8548..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3181.pgm b/examples/autotiler/Mnist/test_img/6/3181.pgm deleted file mode 100644 index b8b88773f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3182.pgm b/examples/autotiler/Mnist/test_img/6/3182.pgm deleted file mode 100644 index 1174213ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3187.pgm b/examples/autotiler/Mnist/test_img/6/3187.pgm deleted file mode 100644 index d6f3a96eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3209.pgm b/examples/autotiler/Mnist/test_img/6/3209.pgm deleted file mode 100644 index 4c8eeb889..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3218.pgm b/examples/autotiler/Mnist/test_img/6/3218.pgm deleted file mode 100644 index 5dcb90f48..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3222.pgm b/examples/autotiler/Mnist/test_img/6/3222.pgm deleted file mode 100644 index 1cacb88d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3222.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3238.pgm b/examples/autotiler/Mnist/test_img/6/3238.pgm deleted file mode 100644 index 8e93b0b18..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3252.pgm b/examples/autotiler/Mnist/test_img/6/3252.pgm deleted file mode 100644 index c2ea7db32..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3254.pgm b/examples/autotiler/Mnist/test_img/6/3254.pgm deleted file mode 100644 index 665ff0a50..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3269.pgm b/examples/autotiler/Mnist/test_img/6/3269.pgm deleted file mode 100644 index 39ef6287c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3270.pgm b/examples/autotiler/Mnist/test_img/6/3270.pgm deleted file mode 100644 index b421e7922..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3273.pgm b/examples/autotiler/Mnist/test_img/6/3273.pgm deleted file mode 100644 index e3ed353c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3302.pgm b/examples/autotiler/Mnist/test_img/6/3302.pgm deleted file mode 100644 index e5d386629..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3304.pgm b/examples/autotiler/Mnist/test_img/6/3304.pgm deleted file mode 100644 index dc44a7636..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3307.pgm b/examples/autotiler/Mnist/test_img/6/3307.pgm deleted file mode 100644 index 820210d11..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3331.pgm b/examples/autotiler/Mnist/test_img/6/3331.pgm deleted file mode 100644 index 307b5263d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3342.pgm b/examples/autotiler/Mnist/test_img/6/3342.pgm deleted file mode 100644 index cbd10ab84..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3344.pgm b/examples/autotiler/Mnist/test_img/6/3344.pgm deleted file mode 100644 index 28125f896..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3350.pgm b/examples/autotiler/Mnist/test_img/6/3350.pgm deleted file mode 100644 index 47996c29d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3362.pgm b/examples/autotiler/Mnist/test_img/6/3362.pgm deleted file mode 100644 index b89acd6db..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3365.pgm b/examples/autotiler/Mnist/test_img/6/3365.pgm deleted file mode 100644 index 283de55b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3382.pgm b/examples/autotiler/Mnist/test_img/6/3382.pgm deleted file mode 100644 index be90b30f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3383.pgm b/examples/autotiler/Mnist/test_img/6/3383.pgm deleted file mode 100644 index 9d6bfb5b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/339.pgm b/examples/autotiler/Mnist/test_img/6/339.pgm deleted file mode 100644 index cb45ab16b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3391.pgm b/examples/autotiler/Mnist/test_img/6/3391.pgm deleted file mode 100644 index 96600ca46..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3395.pgm b/examples/autotiler/Mnist/test_img/6/3395.pgm deleted file mode 100644 index f87095775..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3398.pgm b/examples/autotiler/Mnist/test_img/6/3398.pgm deleted file mode 100644 index dc7ba9665..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3402.pgm b/examples/autotiler/Mnist/test_img/6/3402.pgm deleted file mode 100644 index 68240e4e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3403.pgm b/examples/autotiler/Mnist/test_img/6/3403.pgm deleted file mode 100644 index 23f3cd427..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/341.pgm b/examples/autotiler/Mnist/test_img/6/341.pgm deleted file mode 100644 index d6cf883d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3422.pgm b/examples/autotiler/Mnist/test_img/6/3422.pgm deleted file mode 100644 index 58d197566..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3424.pgm b/examples/autotiler/Mnist/test_img/6/3424.pgm deleted file mode 100644 index 8587e477d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3427.pgm b/examples/autotiler/Mnist/test_img/6/3427.pgm deleted file mode 100644 index 52ca18ad4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3428.pgm b/examples/autotiler/Mnist/test_img/6/3428.pgm deleted file mode 100644 index ac5c12577..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3442.pgm b/examples/autotiler/Mnist/test_img/6/3442.pgm deleted file mode 100644 index 45f3ed61c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3447.pgm b/examples/autotiler/Mnist/test_img/6/3447.pgm deleted file mode 100644 index 83762981d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3488.pgm b/examples/autotiler/Mnist/test_img/6/3488.pgm deleted file mode 100644 index 7aea2e61c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3518.pgm b/examples/autotiler/Mnist/test_img/6/3518.pgm deleted file mode 100644 index 5cc1ceabf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3520.pgm b/examples/autotiler/Mnist/test_img/6/3520.pgm deleted file mode 100644 index 1cceca624..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3524.pgm b/examples/autotiler/Mnist/test_img/6/3524.pgm deleted file mode 100644 index ce75ece0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/353.pgm b/examples/autotiler/Mnist/test_img/6/353.pgm deleted file mode 100644 index 3bbe3fbd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3539.pgm b/examples/autotiler/Mnist/test_img/6/3539.pgm deleted file mode 100644 index 98f8ac254..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3545.pgm b/examples/autotiler/Mnist/test_img/6/3545.pgm deleted file mode 100644 index 83a71df5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3550.pgm b/examples/autotiler/Mnist/test_img/6/3550.pgm deleted file mode 100644 index c36504884..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3554.pgm b/examples/autotiler/Mnist/test_img/6/3554.pgm deleted file mode 100644 index 8fe2f8275..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3557.pgm b/examples/autotiler/Mnist/test_img/6/3557.pgm deleted file mode 100644 index ab06bed12..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3560.pgm b/examples/autotiler/Mnist/test_img/6/3560.pgm deleted file mode 100644 index de8b0bc90..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3564.pgm b/examples/autotiler/Mnist/test_img/6/3564.pgm deleted file mode 100644 index 6e9814dc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3602.pgm b/examples/autotiler/Mnist/test_img/6/3602.pgm deleted file mode 100644 index 38c3dd32f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3603.pgm b/examples/autotiler/Mnist/test_img/6/3603.pgm deleted file mode 100644 index 80138d055..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/361.pgm b/examples/autotiler/Mnist/test_img/6/361.pgm deleted file mode 100644 index dbe64fc01..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3614.pgm b/examples/autotiler/Mnist/test_img/6/3614.pgm deleted file mode 100644 index dc4583a08..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3617.pgm b/examples/autotiler/Mnist/test_img/6/3617.pgm deleted file mode 100644 index 350676ed7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3622.pgm b/examples/autotiler/Mnist/test_img/6/3622.pgm deleted file mode 100644 index ff833e8ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3657.pgm b/examples/autotiler/Mnist/test_img/6/3657.pgm deleted file mode 100644 index c436426bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/366.pgm b/examples/autotiler/Mnist/test_img/6/366.pgm deleted file mode 100644 index 976a464cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3665.pgm b/examples/autotiler/Mnist/test_img/6/3665.pgm deleted file mode 100644 index 310051ba5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3671.pgm b/examples/autotiler/Mnist/test_img/6/3671.pgm deleted file mode 100644 index 3a1802354..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/368.pgm b/examples/autotiler/Mnist/test_img/6/368.pgm deleted file mode 100644 index 3d92b2c0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3683.pgm b/examples/autotiler/Mnist/test_img/6/3683.pgm deleted file mode 100644 index 2aced0de3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3688.pgm b/examples/autotiler/Mnist/test_img/6/3688.pgm deleted file mode 100644 index 5b21143ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3690.pgm b/examples/autotiler/Mnist/test_img/6/3690.pgm deleted file mode 100644 index 9e0dc9e39..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3697.pgm b/examples/autotiler/Mnist/test_img/6/3697.pgm deleted file mode 100644 index 017f8c32c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3712.pgm b/examples/autotiler/Mnist/test_img/6/3712.pgm deleted file mode 100644 index 12c15c0b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3714.pgm b/examples/autotiler/Mnist/test_img/6/3714.pgm deleted file mode 100644 index d80d9affc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3725.pgm b/examples/autotiler/Mnist/test_img/6/3725.pgm deleted file mode 100644 index a09732ba8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3744.pgm b/examples/autotiler/Mnist/test_img/6/3744.pgm deleted file mode 100644 index c50fd1ee7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3748.pgm b/examples/autotiler/Mnist/test_img/6/3748.pgm deleted file mode 100644 index 818952bdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3749.pgm b/examples/autotiler/Mnist/test_img/6/3749.pgm deleted file mode 100644 index cb0dcda0a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3762.pgm b/examples/autotiler/Mnist/test_img/6/3762.pgm deleted file mode 100644 index 5885d4c26..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3800.pgm b/examples/autotiler/Mnist/test_img/6/3800.pgm deleted file mode 100644 index 4d3c05867..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3801.pgm b/examples/autotiler/Mnist/test_img/6/3801.pgm deleted file mode 100644 index f2f10a901..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3822.pgm b/examples/autotiler/Mnist/test_img/6/3822.pgm deleted file mode 100644 index ba0fffe93..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3827.pgm b/examples/autotiler/Mnist/test_img/6/3827.pgm deleted file mode 100644 index 56d093f88..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3835.pgm b/examples/autotiler/Mnist/test_img/6/3835.pgm deleted file mode 100644 index c60f9edcc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/384.pgm b/examples/autotiler/Mnist/test_img/6/384.pgm deleted file mode 100644 index f8d51e61f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3846.pgm b/examples/autotiler/Mnist/test_img/6/3846.pgm deleted file mode 100644 index 6f1f5e285..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3853.pgm b/examples/autotiler/Mnist/test_img/6/3853.pgm deleted file mode 100644 index 1bd93009f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/386.pgm b/examples/autotiler/Mnist/test_img/6/386.pgm deleted file mode 100644 index ed180cdb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3886.pgm b/examples/autotiler/Mnist/test_img/6/3886.pgm deleted file mode 100644 index 42d7d7f8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3901.pgm b/examples/autotiler/Mnist/test_img/6/3901.pgm deleted file mode 100644 index 529b71762..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3908.pgm b/examples/autotiler/Mnist/test_img/6/3908.pgm deleted file mode 100644 index 54c50c129..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3914.pgm b/examples/autotiler/Mnist/test_img/6/3914.pgm deleted file mode 100644 index d2c3c4024..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/392.pgm b/examples/autotiler/Mnist/test_img/6/392.pgm deleted file mode 100644 index 1045c16ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3923.pgm b/examples/autotiler/Mnist/test_img/6/3923.pgm deleted file mode 100644 index a84c9b410..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3931.pgm b/examples/autotiler/Mnist/test_img/6/3931.pgm deleted file mode 100644 index 850890557..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3935.pgm b/examples/autotiler/Mnist/test_img/6/3935.pgm deleted file mode 100644 index 70d88ac75..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3939.pgm b/examples/autotiler/Mnist/test_img/6/3939.pgm deleted file mode 100644 index 8be8edb09..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3948.pgm b/examples/autotiler/Mnist/test_img/6/3948.pgm deleted file mode 100644 index f215f83b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3961.pgm b/examples/autotiler/Mnist/test_img/6/3961.pgm deleted file mode 100644 index 190700569..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3972.pgm b/examples/autotiler/Mnist/test_img/6/3972.pgm deleted file mode 100644 index 537487902..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3978.pgm b/examples/autotiler/Mnist/test_img/6/3978.pgm deleted file mode 100644 index b270b949b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3979.pgm b/examples/autotiler/Mnist/test_img/6/3979.pgm deleted file mode 100644 index 91fb4f61e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/3991.pgm b/examples/autotiler/Mnist/test_img/6/3991.pgm deleted file mode 100644 index 0b28ff9e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/3991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4003.pgm b/examples/autotiler/Mnist/test_img/6/4003.pgm deleted file mode 100644 index 104462c35..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4008.pgm b/examples/autotiler/Mnist/test_img/6/4008.pgm deleted file mode 100644 index f312a6ef6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4019.pgm b/examples/autotiler/Mnist/test_img/6/4019.pgm deleted file mode 100644 index 0b13a3232..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4022.pgm b/examples/autotiler/Mnist/test_img/6/4022.pgm deleted file mode 100644 index 15b88f723..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4037.pgm b/examples/autotiler/Mnist/test_img/6/4037.pgm deleted file mode 100644 index a56dea442..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4045.pgm b/examples/autotiler/Mnist/test_img/6/4045.pgm deleted file mode 100644 index a635704d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4051.pgm b/examples/autotiler/Mnist/test_img/6/4051.pgm deleted file mode 100644 index 1d9cd70b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4063.pgm b/examples/autotiler/Mnist/test_img/6/4063.pgm deleted file mode 100644 index e748de0d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4081.pgm b/examples/autotiler/Mnist/test_img/6/4081.pgm deleted file mode 100644 index fc80a7003..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4125.pgm b/examples/autotiler/Mnist/test_img/6/4125.pgm deleted file mode 100644 index c9ae9410a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4132.pgm b/examples/autotiler/Mnist/test_img/6/4132.pgm deleted file mode 100644 index 916881576..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4139.pgm b/examples/autotiler/Mnist/test_img/6/4139.pgm deleted file mode 100644 index 1ba26a64b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4160.pgm b/examples/autotiler/Mnist/test_img/6/4160.pgm deleted file mode 100644 index 645eba444..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4193.pgm b/examples/autotiler/Mnist/test_img/6/4193.pgm deleted file mode 100644 index ffa7ccd3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4203.pgm b/examples/autotiler/Mnist/test_img/6/4203.pgm deleted file mode 100644 index 339d0f462..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4209.pgm b/examples/autotiler/Mnist/test_img/6/4209.pgm deleted file mode 100644 index 0cfce9b3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4211.pgm b/examples/autotiler/Mnist/test_img/6/4211.pgm deleted file mode 100644 index 792d99305..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4239.pgm b/examples/autotiler/Mnist/test_img/6/4239.pgm deleted file mode 100644 index c448b5eab..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4243.pgm b/examples/autotiler/Mnist/test_img/6/4243.pgm deleted file mode 100644 index f97ebafe3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4252.pgm b/examples/autotiler/Mnist/test_img/6/4252.pgm deleted file mode 100644 index 5ad709b39..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4285.pgm b/examples/autotiler/Mnist/test_img/6/4285.pgm deleted file mode 100644 index 30ba1c9dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4336.pgm b/examples/autotiler/Mnist/test_img/6/4336.pgm deleted file mode 100644 index 695c712f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4346.pgm b/examples/autotiler/Mnist/test_img/6/4346.pgm deleted file mode 100644 index d1b4f6145..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4347.pgm b/examples/autotiler/Mnist/test_img/6/4347.pgm deleted file mode 100644 index 3215cc987..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4388.pgm b/examples/autotiler/Mnist/test_img/6/4388.pgm deleted file mode 100644 index cb283c756..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/439.pgm b/examples/autotiler/Mnist/test_img/6/439.pgm deleted file mode 100644 index 2a390f790..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4394.pgm b/examples/autotiler/Mnist/test_img/6/4394.pgm deleted file mode 100644 index 2c7bc2a56..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4395.pgm b/examples/autotiler/Mnist/test_img/6/4395.pgm deleted file mode 100644 index f51698f27..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4412.pgm b/examples/autotiler/Mnist/test_img/6/4412.pgm deleted file mode 100644 index c5750a575..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4413.pgm b/examples/autotiler/Mnist/test_img/6/4413.pgm deleted file mode 100644 index 15594f11c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4416.pgm b/examples/autotiler/Mnist/test_img/6/4416.pgm deleted file mode 100644 index a6889e1a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4439.pgm b/examples/autotiler/Mnist/test_img/6/4439.pgm deleted file mode 100644 index 9daaf4047..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4441.pgm b/examples/autotiler/Mnist/test_img/6/4441.pgm deleted file mode 100644 index 5e16a18a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4446.pgm b/examples/autotiler/Mnist/test_img/6/4446.pgm deleted file mode 100644 index dc535f4f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4449.pgm b/examples/autotiler/Mnist/test_img/6/4449.pgm deleted file mode 100644 index b24083a7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/445.pgm b/examples/autotiler/Mnist/test_img/6/445.pgm deleted file mode 100644 index 8ea164fca..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/446.pgm b/examples/autotiler/Mnist/test_img/6/446.pgm deleted file mode 100644 index 6abc15b74..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4464.pgm b/examples/autotiler/Mnist/test_img/6/4464.pgm deleted file mode 100644 index 2c9139bf3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4466.pgm b/examples/autotiler/Mnist/test_img/6/4466.pgm deleted file mode 100644 index 9ead90c92..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4484.pgm b/examples/autotiler/Mnist/test_img/6/4484.pgm deleted file mode 100644 index 4d06b6a07..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4488.pgm b/examples/autotiler/Mnist/test_img/6/4488.pgm deleted file mode 100644 index a38be07dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4499.pgm b/examples/autotiler/Mnist/test_img/6/4499.pgm deleted file mode 100644 index 2f2c3173c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4512.pgm b/examples/autotiler/Mnist/test_img/6/4512.pgm deleted file mode 100644 index 644d903fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4536.pgm b/examples/autotiler/Mnist/test_img/6/4536.pgm deleted file mode 100644 index 651f6d5d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4536.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4547.pgm b/examples/autotiler/Mnist/test_img/6/4547.pgm deleted file mode 100644 index 4ffc7d44c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4557.pgm b/examples/autotiler/Mnist/test_img/6/4557.pgm deleted file mode 100644 index 730e12714..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4565.pgm b/examples/autotiler/Mnist/test_img/6/4565.pgm deleted file mode 100644 index 35c8ef59c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/457.pgm b/examples/autotiler/Mnist/test_img/6/457.pgm deleted file mode 100644 index c6f50c158..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4571.pgm b/examples/autotiler/Mnist/test_img/6/4571.pgm deleted file mode 100644 index 28321865d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4579.pgm b/examples/autotiler/Mnist/test_img/6/4579.pgm deleted file mode 100644 index 5ec7de21a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4587.pgm b/examples/autotiler/Mnist/test_img/6/4587.pgm deleted file mode 100644 index a01d948ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4591.pgm b/examples/autotiler/Mnist/test_img/6/4591.pgm deleted file mode 100644 index 0c2224cb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4599.pgm b/examples/autotiler/Mnist/test_img/6/4599.pgm deleted file mode 100644 index 8d46045a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4607.pgm b/examples/autotiler/Mnist/test_img/6/4607.pgm deleted file mode 100644 index 12dd3bcd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/461.pgm b/examples/autotiler/Mnist/test_img/6/461.pgm deleted file mode 100644 index 5fc1158e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4618.pgm b/examples/autotiler/Mnist/test_img/6/4618.pgm deleted file mode 100644 index 7e6b8d3b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4619.pgm b/examples/autotiler/Mnist/test_img/6/4619.pgm deleted file mode 100644 index 4a9b9f0cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/462.pgm b/examples/autotiler/Mnist/test_img/6/462.pgm deleted file mode 100644 index 70e728ca4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4620.pgm b/examples/autotiler/Mnist/test_img/6/4620.pgm deleted file mode 100644 index 1ca15651c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4622.pgm b/examples/autotiler/Mnist/test_img/6/4622.pgm deleted file mode 100644 index d688da1e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4627.pgm b/examples/autotiler/Mnist/test_img/6/4627.pgm deleted file mode 100644 index f6b868ae9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/463.pgm b/examples/autotiler/Mnist/test_img/6/463.pgm deleted file mode 100644 index 4487787e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4649.pgm b/examples/autotiler/Mnist/test_img/6/4649.pgm deleted file mode 100644 index 9bac39ec3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4680.pgm b/examples/autotiler/Mnist/test_img/6/4680.pgm deleted file mode 100644 index 3a1c29b97..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4686.pgm b/examples/autotiler/Mnist/test_img/6/4686.pgm deleted file mode 100644 index c3164ecc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4694.pgm b/examples/autotiler/Mnist/test_img/6/4694.pgm deleted file mode 100644 index 1c6a3bc42..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4698.pgm b/examples/autotiler/Mnist/test_img/6/4698.pgm deleted file mode 100644 index bb5f85665..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4699.pgm b/examples/autotiler/Mnist/test_img/6/4699.pgm deleted file mode 100644 index 1f2f96844..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4702.pgm b/examples/autotiler/Mnist/test_img/6/4702.pgm deleted file mode 100644 index 374893809..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4704.pgm b/examples/autotiler/Mnist/test_img/6/4704.pgm deleted file mode 100644 index 13d103dfd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/472.pgm b/examples/autotiler/Mnist/test_img/6/472.pgm deleted file mode 100644 index a646f38b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4765.pgm b/examples/autotiler/Mnist/test_img/6/4765.pgm deleted file mode 100644 index 90018a9dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4779.pgm b/examples/autotiler/Mnist/test_img/6/4779.pgm deleted file mode 100644 index bb5549bcb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4787.pgm b/examples/autotiler/Mnist/test_img/6/4787.pgm deleted file mode 100644 index 5fed15191..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4790.pgm b/examples/autotiler/Mnist/test_img/6/4790.pgm deleted file mode 100644 index 4de606313..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4798.pgm b/examples/autotiler/Mnist/test_img/6/4798.pgm deleted file mode 100644 index 0a9b2fbdc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4814.pgm b/examples/autotiler/Mnist/test_img/6/4814.pgm deleted file mode 100644 index 1c630f3e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4831.pgm b/examples/autotiler/Mnist/test_img/6/4831.pgm deleted file mode 100644 index fe20c3649..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4832.pgm b/examples/autotiler/Mnist/test_img/6/4832.pgm deleted file mode 100644 index 188207063..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4838.pgm b/examples/autotiler/Mnist/test_img/6/4838.pgm deleted file mode 100644 index 8331d9e21..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4851.pgm b/examples/autotiler/Mnist/test_img/6/4851.pgm deleted file mode 100644 index 84be98264..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4875.pgm b/examples/autotiler/Mnist/test_img/6/4875.pgm deleted file mode 100644 index 42082992b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4882.pgm b/examples/autotiler/Mnist/test_img/6/4882.pgm deleted file mode 100644 index ff0fde172..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4883.pgm b/examples/autotiler/Mnist/test_img/6/4883.pgm deleted file mode 100644 index 16092165a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4897.pgm b/examples/autotiler/Mnist/test_img/6/4897.pgm deleted file mode 100644 index 32f2775a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4898.pgm b/examples/autotiler/Mnist/test_img/6/4898.pgm deleted file mode 100644 index e8b2fcc03..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4908.pgm b/examples/autotiler/Mnist/test_img/6/4908.pgm deleted file mode 100644 index 1f64237c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4914.pgm b/examples/autotiler/Mnist/test_img/6/4914.pgm deleted file mode 100644 index 8c85e59e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4926.pgm b/examples/autotiler/Mnist/test_img/6/4926.pgm deleted file mode 100644 index 01aec419d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4934.pgm b/examples/autotiler/Mnist/test_img/6/4934.pgm deleted file mode 100644 index 38b804234..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4952.pgm b/examples/autotiler/Mnist/test_img/6/4952.pgm deleted file mode 100644 index 735dc82a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/4980.pgm b/examples/autotiler/Mnist/test_img/6/4980.pgm deleted file mode 100644 index 5783ee177..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/4980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/499.pgm b/examples/autotiler/Mnist/test_img/6/499.pgm deleted file mode 100644 index ab32e233f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/50.pgm b/examples/autotiler/Mnist/test_img/6/50.pgm deleted file mode 100644 index 6938346a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/50.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5007.pgm b/examples/autotiler/Mnist/test_img/6/5007.pgm deleted file mode 100644 index 4c413a325..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5010.pgm b/examples/autotiler/Mnist/test_img/6/5010.pgm deleted file mode 100644 index ba13660b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5010.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5012.pgm b/examples/autotiler/Mnist/test_img/6/5012.pgm deleted file mode 100644 index 35d562743..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5030.pgm b/examples/autotiler/Mnist/test_img/6/5030.pgm deleted file mode 100644 index 407c7a988..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5034.pgm b/examples/autotiler/Mnist/test_img/6/5034.pgm deleted file mode 100644 index c59d29dd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5057.pgm b/examples/autotiler/Mnist/test_img/6/5057.pgm deleted file mode 100644 index 3027df859..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5066.pgm b/examples/autotiler/Mnist/test_img/6/5066.pgm deleted file mode 100644 index 7e235da8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/508.pgm b/examples/autotiler/Mnist/test_img/6/508.pgm deleted file mode 100644 index 71235f98a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5085.pgm b/examples/autotiler/Mnist/test_img/6/5085.pgm deleted file mode 100644 index 7d71d35a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5085.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5088.pgm b/examples/autotiler/Mnist/test_img/6/5088.pgm deleted file mode 100644 index 52b73dfa0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5115.pgm b/examples/autotiler/Mnist/test_img/6/5115.pgm deleted file mode 100644 index eb1f107d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5116.pgm b/examples/autotiler/Mnist/test_img/6/5116.pgm deleted file mode 100644 index 80da5008e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5117.pgm b/examples/autotiler/Mnist/test_img/6/5117.pgm deleted file mode 100644 index bd1ef1bac..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5131.pgm b/examples/autotiler/Mnist/test_img/6/5131.pgm deleted file mode 100644 index 22b22d878..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5131.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5136.pgm b/examples/autotiler/Mnist/test_img/6/5136.pgm deleted file mode 100644 index ee2e78886..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/514.pgm b/examples/autotiler/Mnist/test_img/6/514.pgm deleted file mode 100644 index fe18b2846..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5145.pgm b/examples/autotiler/Mnist/test_img/6/5145.pgm deleted file mode 100644 index e4a559669..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5153.pgm b/examples/autotiler/Mnist/test_img/6/5153.pgm deleted file mode 100644 index 2e8700421..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5161.pgm b/examples/autotiler/Mnist/test_img/6/5161.pgm deleted file mode 100644 index c0870965c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/517.pgm b/examples/autotiler/Mnist/test_img/6/517.pgm deleted file mode 100644 index ac28c1a38..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5171.pgm b/examples/autotiler/Mnist/test_img/6/5171.pgm deleted file mode 100644 index 3025a1db1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5199.pgm b/examples/autotiler/Mnist/test_img/6/5199.pgm deleted file mode 100644 index b9f526485..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5213.pgm b/examples/autotiler/Mnist/test_img/6/5213.pgm deleted file mode 100644 index 1130663f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5218.pgm b/examples/autotiler/Mnist/test_img/6/5218.pgm deleted file mode 100644 index 0f80a7a6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5221.pgm b/examples/autotiler/Mnist/test_img/6/5221.pgm deleted file mode 100644 index 9600ea210..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5228.pgm b/examples/autotiler/Mnist/test_img/6/5228.pgm deleted file mode 100644 index 9274c5636..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5230.pgm b/examples/autotiler/Mnist/test_img/6/5230.pgm deleted file mode 100644 index 98ccf9af0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5235.pgm b/examples/autotiler/Mnist/test_img/6/5235.pgm deleted file mode 100644 index ef8e9e461..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5263.pgm b/examples/autotiler/Mnist/test_img/6/5263.pgm deleted file mode 100644 index 6744bd476..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5265.pgm b/examples/autotiler/Mnist/test_img/6/5265.pgm deleted file mode 100644 index af81ca9b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5276.pgm b/examples/autotiler/Mnist/test_img/6/5276.pgm deleted file mode 100644 index e87c0f59f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5286.pgm b/examples/autotiler/Mnist/test_img/6/5286.pgm deleted file mode 100644 index c9c70da0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5296.pgm b/examples/autotiler/Mnist/test_img/6/5296.pgm deleted file mode 100644 index cb2f1dedb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5303.pgm b/examples/autotiler/Mnist/test_img/6/5303.pgm deleted file mode 100644 index 21be57bce..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5304.pgm b/examples/autotiler/Mnist/test_img/6/5304.pgm deleted file mode 100644 index c87c170cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5332.pgm b/examples/autotiler/Mnist/test_img/6/5332.pgm deleted file mode 100644 index 2f0dd8ace..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/534.pgm b/examples/autotiler/Mnist/test_img/6/534.pgm deleted file mode 100644 index 79dc1de43..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5341.pgm b/examples/autotiler/Mnist/test_img/6/5341.pgm deleted file mode 100644 index 90f0a669d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5354.pgm b/examples/autotiler/Mnist/test_img/6/5354.pgm deleted file mode 100644 index a9b03067f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5357.pgm b/examples/autotiler/Mnist/test_img/6/5357.pgm deleted file mode 100644 index 0ae6b20c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5378.pgm b/examples/autotiler/Mnist/test_img/6/5378.pgm deleted file mode 100644 index 6bc850e51..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5383.pgm b/examples/autotiler/Mnist/test_img/6/5383.pgm deleted file mode 100644 index 48a397976..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5391.pgm b/examples/autotiler/Mnist/test_img/6/5391.pgm deleted file mode 100644 index c22c6217b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5396.pgm b/examples/autotiler/Mnist/test_img/6/5396.pgm deleted file mode 100644 index f9add42a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/54.pgm b/examples/autotiler/Mnist/test_img/6/54.pgm deleted file mode 100644 index 65dce7fb8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/54.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5401.pgm b/examples/autotiler/Mnist/test_img/6/5401.pgm deleted file mode 100644 index 42ab12ba5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5411.pgm b/examples/autotiler/Mnist/test_img/6/5411.pgm deleted file mode 100644 index 16d597bd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5421.pgm b/examples/autotiler/Mnist/test_img/6/5421.pgm deleted file mode 100644 index a3f94f51b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5441.pgm b/examples/autotiler/Mnist/test_img/6/5441.pgm deleted file mode 100644 index e7ceeeddb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5458.pgm b/examples/autotiler/Mnist/test_img/6/5458.pgm deleted file mode 100644 index d08c79f6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5467.pgm b/examples/autotiler/Mnist/test_img/6/5467.pgm deleted file mode 100644 index 394785d0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5469.pgm b/examples/autotiler/Mnist/test_img/6/5469.pgm deleted file mode 100644 index 34cb33654..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5481.pgm b/examples/autotiler/Mnist/test_img/6/5481.pgm deleted file mode 100644 index 990bd49fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5484.pgm b/examples/autotiler/Mnist/test_img/6/5484.pgm deleted file mode 100644 index 841ab9a99..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5497.pgm b/examples/autotiler/Mnist/test_img/6/5497.pgm deleted file mode 100644 index 08cc057d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5501.pgm b/examples/autotiler/Mnist/test_img/6/5501.pgm deleted file mode 100644 index 034291d26..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5511.pgm b/examples/autotiler/Mnist/test_img/6/5511.pgm deleted file mode 100644 index 100b8daca..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5539.pgm b/examples/autotiler/Mnist/test_img/6/5539.pgm deleted file mode 100644 index 2a7748c1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5558.pgm b/examples/autotiler/Mnist/test_img/6/5558.pgm deleted file mode 100644 index c389b93bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5568.pgm b/examples/autotiler/Mnist/test_img/6/5568.pgm deleted file mode 100644 index 439e64cbf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5581.pgm b/examples/autotiler/Mnist/test_img/6/5581.pgm deleted file mode 100644 index eee82f9ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/559.pgm b/examples/autotiler/Mnist/test_img/6/559.pgm deleted file mode 100644 index aa0bc8107..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5591.pgm b/examples/autotiler/Mnist/test_img/6/5591.pgm deleted file mode 100644 index c60042421..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5599.pgm b/examples/autotiler/Mnist/test_img/6/5599.pgm deleted file mode 100644 index 891b5824c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5609.pgm b/examples/autotiler/Mnist/test_img/6/5609.pgm deleted file mode 100644 index c537a613a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5619.pgm b/examples/autotiler/Mnist/test_img/6/5619.pgm deleted file mode 100644 index 9043bfd1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/566.pgm b/examples/autotiler/Mnist/test_img/6/566.pgm deleted file mode 100644 index 241666350..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5660.pgm b/examples/autotiler/Mnist/test_img/6/5660.pgm deleted file mode 100644 index b0d080f00..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5665.pgm b/examples/autotiler/Mnist/test_img/6/5665.pgm deleted file mode 100644 index 079aa0258..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/568.pgm b/examples/autotiler/Mnist/test_img/6/568.pgm deleted file mode 100644 index c757728b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5681.pgm b/examples/autotiler/Mnist/test_img/6/5681.pgm deleted file mode 100644 index 74c9067d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5690.pgm b/examples/autotiler/Mnist/test_img/6/5690.pgm deleted file mode 100644 index a634b24a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5693.pgm b/examples/autotiler/Mnist/test_img/6/5693.pgm deleted file mode 100644 index 3c788f65f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5694.pgm b/examples/autotiler/Mnist/test_img/6/5694.pgm deleted file mode 100644 index f990be4b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5702.pgm b/examples/autotiler/Mnist/test_img/6/5702.pgm deleted file mode 100644 index aa45df002..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5712.pgm b/examples/autotiler/Mnist/test_img/6/5712.pgm deleted file mode 100644 index 55acc4e0a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5715.pgm b/examples/autotiler/Mnist/test_img/6/5715.pgm deleted file mode 100644 index 7e33f1e15..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5727.pgm b/examples/autotiler/Mnist/test_img/6/5727.pgm deleted file mode 100644 index 3d6ac1b03..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5736.pgm b/examples/autotiler/Mnist/test_img/6/5736.pgm deleted file mode 100644 index 717d19661..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5743.pgm b/examples/autotiler/Mnist/test_img/6/5743.pgm deleted file mode 100644 index ce16da2a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5755.pgm b/examples/autotiler/Mnist/test_img/6/5755.pgm deleted file mode 100644 index efd68ff7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5768.pgm b/examples/autotiler/Mnist/test_img/6/5768.pgm deleted file mode 100644 index 232b467e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5770.pgm b/examples/autotiler/Mnist/test_img/6/5770.pgm deleted file mode 100644 index 718282bf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5788.pgm b/examples/autotiler/Mnist/test_img/6/5788.pgm deleted file mode 100644 index 849f991a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5793.pgm b/examples/autotiler/Mnist/test_img/6/5793.pgm deleted file mode 100644 index 6f68900dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5801.pgm b/examples/autotiler/Mnist/test_img/6/5801.pgm deleted file mode 100644 index e75fc178b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5810.pgm b/examples/autotiler/Mnist/test_img/6/5810.pgm deleted file mode 100644 index f41feaad3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5819.pgm b/examples/autotiler/Mnist/test_img/6/5819.pgm deleted file mode 100644 index c0c9bc704..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5819.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5826.pgm b/examples/autotiler/Mnist/test_img/6/5826.pgm deleted file mode 100644 index ffc0d2410..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5834.pgm b/examples/autotiler/Mnist/test_img/6/5834.pgm deleted file mode 100644 index d31d46d9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5844.pgm b/examples/autotiler/Mnist/test_img/6/5844.pgm deleted file mode 100644 index fe8d9058b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5853.pgm b/examples/autotiler/Mnist/test_img/6/5853.pgm deleted file mode 100644 index 33e3605cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/587.pgm b/examples/autotiler/Mnist/test_img/6/587.pgm deleted file mode 100644 index 8bdde2201..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5877.pgm b/examples/autotiler/Mnist/test_img/6/5877.pgm deleted file mode 100644 index 03b9f6eef..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5884.pgm b/examples/autotiler/Mnist/test_img/6/5884.pgm deleted file mode 100644 index 3eb4e13d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5886.pgm b/examples/autotiler/Mnist/test_img/6/5886.pgm deleted file mode 100644 index 8088fb172..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5898.pgm b/examples/autotiler/Mnist/test_img/6/5898.pgm deleted file mode 100644 index 49436529e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5901.pgm b/examples/autotiler/Mnist/test_img/6/5901.pgm deleted file mode 100644 index eedb1ac25..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5909.pgm b/examples/autotiler/Mnist/test_img/6/5909.pgm deleted file mode 100644 index 87a9414d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5916.pgm b/examples/autotiler/Mnist/test_img/6/5916.pgm deleted file mode 100644 index c63f317bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5920.pgm b/examples/autotiler/Mnist/test_img/6/5920.pgm deleted file mode 100644 index a6f3e5849..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5928.pgm b/examples/autotiler/Mnist/test_img/6/5928.pgm deleted file mode 100644 index 454d96efb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5938.pgm b/examples/autotiler/Mnist/test_img/6/5938.pgm deleted file mode 100644 index d333fe857..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/594.pgm b/examples/autotiler/Mnist/test_img/6/594.pgm deleted file mode 100644 index 6bd425c19..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5948.pgm b/examples/autotiler/Mnist/test_img/6/5948.pgm deleted file mode 100644 index cd8988540..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5958.pgm b/examples/autotiler/Mnist/test_img/6/5958.pgm deleted file mode 100644 index 7e90db0bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5963.pgm b/examples/autotiler/Mnist/test_img/6/5963.pgm deleted file mode 100644 index 11fbaf1d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5966.pgm b/examples/autotiler/Mnist/test_img/6/5966.pgm deleted file mode 100644 index 62f8fa28f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5989.pgm b/examples/autotiler/Mnist/test_img/6/5989.pgm deleted file mode 100644 index a7663511e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/5994.pgm b/examples/autotiler/Mnist/test_img/6/5994.pgm deleted file mode 100644 index c61dfc1e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/5994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/600.pgm b/examples/autotiler/Mnist/test_img/6/600.pgm deleted file mode 100644 index a8c98660c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6002.pgm b/examples/autotiler/Mnist/test_img/6/6002.pgm deleted file mode 100644 index eb0eda739..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/602.pgm b/examples/autotiler/Mnist/test_img/6/602.pgm deleted file mode 100644 index 1606b2967..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6020.pgm b/examples/autotiler/Mnist/test_img/6/6020.pgm deleted file mode 100644 index 67f7167e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6029.pgm b/examples/autotiler/Mnist/test_img/6/6029.pgm deleted file mode 100644 index 58d653249..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6031.pgm b/examples/autotiler/Mnist/test_img/6/6031.pgm deleted file mode 100644 index 02164bc8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6033.pgm b/examples/autotiler/Mnist/test_img/6/6033.pgm deleted file mode 100644 index b5e92b79e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6038.pgm b/examples/autotiler/Mnist/test_img/6/6038.pgm deleted file mode 100644 index 6be252a71..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6068.pgm b/examples/autotiler/Mnist/test_img/6/6068.pgm deleted file mode 100644 index 33d47ae34..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/607.pgm b/examples/autotiler/Mnist/test_img/6/607.pgm deleted file mode 100644 index efc3395ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6078.pgm b/examples/autotiler/Mnist/test_img/6/6078.pgm deleted file mode 100644 index 54c4107fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6088.pgm b/examples/autotiler/Mnist/test_img/6/6088.pgm deleted file mode 100644 index c029867a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6094.pgm b/examples/autotiler/Mnist/test_img/6/6094.pgm deleted file mode 100644 index db4334bea..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6104.pgm b/examples/autotiler/Mnist/test_img/6/6104.pgm deleted file mode 100644 index 3e5276ae4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6113.pgm b/examples/autotiler/Mnist/test_img/6/6113.pgm deleted file mode 100644 index 545dcffe1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6122.pgm b/examples/autotiler/Mnist/test_img/6/6122.pgm deleted file mode 100644 index 8ea027e88..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6128.pgm b/examples/autotiler/Mnist/test_img/6/6128.pgm deleted file mode 100644 index ae46e9099..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6130.pgm b/examples/autotiler/Mnist/test_img/6/6130.pgm deleted file mode 100644 index f774b2aa5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6134.pgm b/examples/autotiler/Mnist/test_img/6/6134.pgm deleted file mode 100644 index 3ecbf5ea4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6167.pgm b/examples/autotiler/Mnist/test_img/6/6167.pgm deleted file mode 100644 index 046c23cbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6179.pgm b/examples/autotiler/Mnist/test_img/6/6179.pgm deleted file mode 100644 index 62715ebc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6187.pgm b/examples/autotiler/Mnist/test_img/6/6187.pgm deleted file mode 100644 index 28ff3f853..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6197.pgm b/examples/autotiler/Mnist/test_img/6/6197.pgm deleted file mode 100644 index 05a4d762d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6207.pgm b/examples/autotiler/Mnist/test_img/6/6207.pgm deleted file mode 100644 index ba083a4fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6218.pgm b/examples/autotiler/Mnist/test_img/6/6218.pgm deleted file mode 100644 index a5fb7cc5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6229.pgm b/examples/autotiler/Mnist/test_img/6/6229.pgm deleted file mode 100644 index cbf51176e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/623.pgm b/examples/autotiler/Mnist/test_img/6/623.pgm deleted file mode 100644 index b19ab4aa7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6237.pgm b/examples/autotiler/Mnist/test_img/6/6237.pgm deleted file mode 100644 index 757fc0c57..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/625.pgm b/examples/autotiler/Mnist/test_img/6/625.pgm deleted file mode 100644 index 91466b1ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6252.pgm b/examples/autotiler/Mnist/test_img/6/6252.pgm deleted file mode 100644 index 5a7e512bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6258.pgm b/examples/autotiler/Mnist/test_img/6/6258.pgm deleted file mode 100644 index 8e8e5160b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6261.pgm b/examples/autotiler/Mnist/test_img/6/6261.pgm deleted file mode 100644 index 91b5ef98d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6283.pgm b/examples/autotiler/Mnist/test_img/6/6283.pgm deleted file mode 100644 index 43b8ddcfd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6294.pgm b/examples/autotiler/Mnist/test_img/6/6294.pgm deleted file mode 100644 index c360dfccc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6298.pgm b/examples/autotiler/Mnist/test_img/6/6298.pgm deleted file mode 100644 index e57f3ae25..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6301.pgm b/examples/autotiler/Mnist/test_img/6/6301.pgm deleted file mode 100644 index b90a7ba79..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6315.pgm b/examples/autotiler/Mnist/test_img/6/6315.pgm deleted file mode 100644 index c69f7e995..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6325.pgm b/examples/autotiler/Mnist/test_img/6/6325.pgm deleted file mode 100644 index b526d2326..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6334.pgm b/examples/autotiler/Mnist/test_img/6/6334.pgm deleted file mode 100644 index 78a9a7135..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6350.pgm b/examples/autotiler/Mnist/test_img/6/6350.pgm deleted file mode 100644 index 2a7d8fa45..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6354.pgm b/examples/autotiler/Mnist/test_img/6/6354.pgm deleted file mode 100644 index 07124cad8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6355.pgm b/examples/autotiler/Mnist/test_img/6/6355.pgm deleted file mode 100644 index d2e8b5155..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6387.pgm b/examples/autotiler/Mnist/test_img/6/6387.pgm deleted file mode 100644 index b7db74e11..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6388.pgm b/examples/autotiler/Mnist/test_img/6/6388.pgm deleted file mode 100644 index fecbebd1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6399.pgm b/examples/autotiler/Mnist/test_img/6/6399.pgm deleted file mode 100644 index c2acc8b24..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6402.pgm b/examples/autotiler/Mnist/test_img/6/6402.pgm deleted file mode 100644 index 761ae7ce9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6406.pgm b/examples/autotiler/Mnist/test_img/6/6406.pgm deleted file mode 100644 index a817d5be4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6425.pgm b/examples/autotiler/Mnist/test_img/6/6425.pgm deleted file mode 100644 index d0acbd308..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6459.pgm b/examples/autotiler/Mnist/test_img/6/6459.pgm deleted file mode 100644 index ebf45c301..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6463.pgm b/examples/autotiler/Mnist/test_img/6/6463.pgm deleted file mode 100644 index aa0ce3b93..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6479.pgm b/examples/autotiler/Mnist/test_img/6/6479.pgm deleted file mode 100644 index 96b5c8385..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6498.pgm b/examples/autotiler/Mnist/test_img/6/6498.pgm deleted file mode 100644 index ddab6ebfd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/650.pgm b/examples/autotiler/Mnist/test_img/6/650.pgm deleted file mode 100644 index 3b43adae8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6509.pgm b/examples/autotiler/Mnist/test_img/6/6509.pgm deleted file mode 100644 index b464b4cc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6531.pgm b/examples/autotiler/Mnist/test_img/6/6531.pgm deleted file mode 100644 index 18c16e6af..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6538.pgm b/examples/autotiler/Mnist/test_img/6/6538.pgm deleted file mode 100644 index 169363c5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6549.pgm b/examples/autotiler/Mnist/test_img/6/6549.pgm deleted file mode 100644 index 0235fd2a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6550.pgm b/examples/autotiler/Mnist/test_img/6/6550.pgm deleted file mode 100644 index 9f1bf1d40..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6558.pgm b/examples/autotiler/Mnist/test_img/6/6558.pgm deleted file mode 100644 index 8af1e0496..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6591.pgm b/examples/autotiler/Mnist/test_img/6/6591.pgm deleted file mode 100644 index 26bed6261..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6596.pgm b/examples/autotiler/Mnist/test_img/6/6596.pgm deleted file mode 100644 index bce89d3cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/66.pgm b/examples/autotiler/Mnist/test_img/6/66.pgm deleted file mode 100644 index 0a80ef860..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/66.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6605.pgm b/examples/autotiler/Mnist/test_img/6/6605.pgm deleted file mode 100644 index eb43c2776..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6613.pgm b/examples/autotiler/Mnist/test_img/6/6613.pgm deleted file mode 100644 index 6438b0080..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6615.pgm b/examples/autotiler/Mnist/test_img/6/6615.pgm deleted file mode 100644 index d184c1e2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6630.pgm b/examples/autotiler/Mnist/test_img/6/6630.pgm deleted file mode 100644 index 58b302e31..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6639.pgm b/examples/autotiler/Mnist/test_img/6/6639.pgm deleted file mode 100644 index e5a373b59..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/665.pgm b/examples/autotiler/Mnist/test_img/6/665.pgm deleted file mode 100644 index 1b74f3554..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6667.pgm b/examples/autotiler/Mnist/test_img/6/6667.pgm deleted file mode 100644 index 4574575ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6668.pgm b/examples/autotiler/Mnist/test_img/6/6668.pgm deleted file mode 100644 index 851d99470..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6669.pgm b/examples/autotiler/Mnist/test_img/6/6669.pgm deleted file mode 100644 index 853b85993..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6675.pgm b/examples/autotiler/Mnist/test_img/6/6675.pgm deleted file mode 100644 index 5f3cdf505..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6685.pgm b/examples/autotiler/Mnist/test_img/6/6685.pgm deleted file mode 100644 index 9e9e245c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6691.pgm b/examples/autotiler/Mnist/test_img/6/6691.pgm deleted file mode 100644 index 910a46b50..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6693.pgm b/examples/autotiler/Mnist/test_img/6/6693.pgm deleted file mode 100644 index 2497f45fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6707.pgm b/examples/autotiler/Mnist/test_img/6/6707.pgm deleted file mode 100644 index 035585418..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6717.pgm b/examples/autotiler/Mnist/test_img/6/6717.pgm deleted file mode 100644 index c12da7d7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6749.pgm b/examples/autotiler/Mnist/test_img/6/6749.pgm deleted file mode 100644 index bd9ed3acd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6764.pgm b/examples/autotiler/Mnist/test_img/6/6764.pgm deleted file mode 100644 index f15561606..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6764.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6771.pgm b/examples/autotiler/Mnist/test_img/6/6771.pgm deleted file mode 100644 index 3fccc879a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6774.pgm b/examples/autotiler/Mnist/test_img/6/6774.pgm deleted file mode 100644 index 0d6e44f3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6777.pgm b/examples/autotiler/Mnist/test_img/6/6777.pgm deleted file mode 100644 index 6300eec5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6782.pgm b/examples/autotiler/Mnist/test_img/6/6782.pgm deleted file mode 100644 index eea2589ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6792.pgm b/examples/autotiler/Mnist/test_img/6/6792.pgm deleted file mode 100644 index 285c7181d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/680.pgm b/examples/autotiler/Mnist/test_img/6/680.pgm deleted file mode 100644 index bdd56030a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6804.pgm b/examples/autotiler/Mnist/test_img/6/6804.pgm deleted file mode 100644 index 91c94bb29..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6814.pgm b/examples/autotiler/Mnist/test_img/6/6814.pgm deleted file mode 100644 index eb2ed9e84..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6824.pgm b/examples/autotiler/Mnist/test_img/6/6824.pgm deleted file mode 100644 index 27285d939..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6842.pgm b/examples/autotiler/Mnist/test_img/6/6842.pgm deleted file mode 100644 index 537454eec..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6846.pgm b/examples/autotiler/Mnist/test_img/6/6846.pgm deleted file mode 100644 index 44551be5b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6847.pgm b/examples/autotiler/Mnist/test_img/6/6847.pgm deleted file mode 100644 index 3f9a0a27b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6847.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/688.pgm b/examples/autotiler/Mnist/test_img/6/688.pgm deleted file mode 100644 index c34e88d52..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6881.pgm b/examples/autotiler/Mnist/test_img/6/6881.pgm deleted file mode 100644 index 99808e3b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6893.pgm b/examples/autotiler/Mnist/test_img/6/6893.pgm deleted file mode 100644 index 062fa3624..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6896.pgm b/examples/autotiler/Mnist/test_img/6/6896.pgm deleted file mode 100644 index 786b6fa44..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6900.pgm b/examples/autotiler/Mnist/test_img/6/6900.pgm deleted file mode 100644 index b78f9c120..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6922.pgm b/examples/autotiler/Mnist/test_img/6/6922.pgm deleted file mode 100644 index b60e80abd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6926.pgm b/examples/autotiler/Mnist/test_img/6/6926.pgm deleted file mode 100644 index 8d04825a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6933.pgm b/examples/autotiler/Mnist/test_img/6/6933.pgm deleted file mode 100644 index e83d258f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6943.pgm b/examples/autotiler/Mnist/test_img/6/6943.pgm deleted file mode 100644 index c4429a630..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6953.pgm b/examples/autotiler/Mnist/test_img/6/6953.pgm deleted file mode 100644 index 3743d2fce..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6966.pgm b/examples/autotiler/Mnist/test_img/6/6966.pgm deleted file mode 100644 index c51ace229..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6987.pgm b/examples/autotiler/Mnist/test_img/6/6987.pgm deleted file mode 100644 index 33ced6669..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/6994.pgm b/examples/autotiler/Mnist/test_img/6/6994.pgm deleted file mode 100644 index 076531ce0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/6994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7017.pgm b/examples/autotiler/Mnist/test_img/6/7017.pgm deleted file mode 100644 index 2642c5a2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7020.pgm b/examples/autotiler/Mnist/test_img/6/7020.pgm deleted file mode 100644 index c646ad081..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7038.pgm b/examples/autotiler/Mnist/test_img/6/7038.pgm deleted file mode 100644 index b6ef703e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7039.pgm b/examples/autotiler/Mnist/test_img/6/7039.pgm deleted file mode 100644 index 3748dc449..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7042.pgm b/examples/autotiler/Mnist/test_img/6/7042.pgm deleted file mode 100644 index 5175f6d63..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7050.pgm b/examples/autotiler/Mnist/test_img/6/7050.pgm deleted file mode 100644 index 8255e5aa0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7051.pgm b/examples/autotiler/Mnist/test_img/6/7051.pgm deleted file mode 100644 index 8180da447..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7051.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7058.pgm b/examples/autotiler/Mnist/test_img/6/7058.pgm deleted file mode 100644 index 6aa858cc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7068.pgm b/examples/autotiler/Mnist/test_img/6/7068.pgm deleted file mode 100644 index 79f4cf5cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7078.pgm b/examples/autotiler/Mnist/test_img/6/7078.pgm deleted file mode 100644 index 6c078c066..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7105.pgm b/examples/autotiler/Mnist/test_img/6/7105.pgm deleted file mode 100644 index 4e5ff1fcc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7110.pgm b/examples/autotiler/Mnist/test_img/6/7110.pgm deleted file mode 100644 index 6fab46dea..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7113.pgm b/examples/autotiler/Mnist/test_img/6/7113.pgm deleted file mode 100644 index 7abeaacfa..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7116.pgm b/examples/autotiler/Mnist/test_img/6/7116.pgm deleted file mode 100644 index e83ef55d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7122.pgm b/examples/autotiler/Mnist/test_img/6/7122.pgm deleted file mode 100644 index 43ee8d804..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7152.pgm b/examples/autotiler/Mnist/test_img/6/7152.pgm deleted file mode 100644 index 7fca5e6c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7158.pgm b/examples/autotiler/Mnist/test_img/6/7158.pgm deleted file mode 100644 index 962d19c8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7159.pgm b/examples/autotiler/Mnist/test_img/6/7159.pgm deleted file mode 100644 index 1b51c9c90..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7166.pgm b/examples/autotiler/Mnist/test_img/6/7166.pgm deleted file mode 100644 index aa7893b6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7172.pgm b/examples/autotiler/Mnist/test_img/6/7172.pgm deleted file mode 100644 index 59f6f907a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7179.pgm b/examples/autotiler/Mnist/test_img/6/7179.pgm deleted file mode 100644 index f3cf6f128..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7188.pgm b/examples/autotiler/Mnist/test_img/6/7188.pgm deleted file mode 100644 index 8db32159a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7196.pgm b/examples/autotiler/Mnist/test_img/6/7196.pgm deleted file mode 100644 index 131f0155e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7209.pgm b/examples/autotiler/Mnist/test_img/6/7209.pgm deleted file mode 100644 index 8fe88c6e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7210.pgm b/examples/autotiler/Mnist/test_img/6/7210.pgm deleted file mode 100644 index 519b1eecb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7213.pgm b/examples/autotiler/Mnist/test_img/6/7213.pgm deleted file mode 100644 index 4762d8c1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7239.pgm b/examples/autotiler/Mnist/test_img/6/7239.pgm deleted file mode 100644 index 54709bb11..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7239.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/724.pgm b/examples/autotiler/Mnist/test_img/6/724.pgm deleted file mode 100644 index b25830423..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7258.pgm b/examples/autotiler/Mnist/test_img/6/7258.pgm deleted file mode 100644 index 6826a8c82..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7275.pgm b/examples/autotiler/Mnist/test_img/6/7275.pgm deleted file mode 100644 index f7b8a21af..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7285.pgm b/examples/autotiler/Mnist/test_img/6/7285.pgm deleted file mode 100644 index d50e98c85..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/729.pgm b/examples/autotiler/Mnist/test_img/6/729.pgm deleted file mode 100644 index 0b5af0430..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7295.pgm b/examples/autotiler/Mnist/test_img/6/7295.pgm deleted file mode 100644 index 0a7abe655..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7305.pgm b/examples/autotiler/Mnist/test_img/6/7305.pgm deleted file mode 100644 index 6761c7d53..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7310.pgm b/examples/autotiler/Mnist/test_img/6/7310.pgm deleted file mode 100644 index 0db569747..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7314.pgm b/examples/autotiler/Mnist/test_img/6/7314.pgm deleted file mode 100644 index c0347b7d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/732.pgm b/examples/autotiler/Mnist/test_img/6/732.pgm deleted file mode 100644 index c5bb0975f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7331.pgm b/examples/autotiler/Mnist/test_img/6/7331.pgm deleted file mode 100644 index f270031bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7331.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7335.pgm b/examples/autotiler/Mnist/test_img/6/7335.pgm deleted file mode 100644 index 7f98581a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7343.pgm b/examples/autotiler/Mnist/test_img/6/7343.pgm deleted file mode 100644 index 687a3a4e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7346.pgm b/examples/autotiler/Mnist/test_img/6/7346.pgm deleted file mode 100644 index a9c0d99bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7358.pgm b/examples/autotiler/Mnist/test_img/6/7358.pgm deleted file mode 100644 index 9a9991f30..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/737.pgm b/examples/autotiler/Mnist/test_img/6/737.pgm deleted file mode 100644 index 133996304..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7387.pgm b/examples/autotiler/Mnist/test_img/6/7387.pgm deleted file mode 100644 index 6bfda19d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7389.pgm b/examples/autotiler/Mnist/test_img/6/7389.pgm deleted file mode 100644 index 132dde97b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7404.pgm b/examples/autotiler/Mnist/test_img/6/7404.pgm deleted file mode 100644 index 5fae6daf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7409.pgm b/examples/autotiler/Mnist/test_img/6/7409.pgm deleted file mode 100644 index f69ccb844..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7415.pgm b/examples/autotiler/Mnist/test_img/6/7415.pgm deleted file mode 100644 index 63e2002bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7427.pgm b/examples/autotiler/Mnist/test_img/6/7427.pgm deleted file mode 100644 index 1d1176c3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7427.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/743.pgm b/examples/autotiler/Mnist/test_img/6/743.pgm deleted file mode 100644 index f1943f327..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7438.pgm b/examples/autotiler/Mnist/test_img/6/7438.pgm deleted file mode 100644 index 0599e0b0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7441.pgm b/examples/autotiler/Mnist/test_img/6/7441.pgm deleted file mode 100644 index c93053dd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7443.pgm b/examples/autotiler/Mnist/test_img/6/7443.pgm deleted file mode 100644 index b5169c709..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7461.pgm b/examples/autotiler/Mnist/test_img/6/7461.pgm deleted file mode 100644 index 3084b9e7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7466.pgm b/examples/autotiler/Mnist/test_img/6/7466.pgm deleted file mode 100644 index b90d8c56b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7503.pgm b/examples/autotiler/Mnist/test_img/6/7503.pgm deleted file mode 100644 index 0002aec59..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7512.pgm b/examples/autotiler/Mnist/test_img/6/7512.pgm deleted file mode 100644 index 56cf5f556..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7522.pgm b/examples/autotiler/Mnist/test_img/6/7522.pgm deleted file mode 100644 index fbbc4fb0a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7532.pgm b/examples/autotiler/Mnist/test_img/6/7532.pgm deleted file mode 100644 index 937afd10e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7540.pgm b/examples/autotiler/Mnist/test_img/6/7540.pgm deleted file mode 100644 index 8818cd5eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7546.pgm b/examples/autotiler/Mnist/test_img/6/7546.pgm deleted file mode 100644 index db76d606b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7547.pgm b/examples/autotiler/Mnist/test_img/6/7547.pgm deleted file mode 100644 index b6d174568..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7548.pgm b/examples/autotiler/Mnist/test_img/6/7548.pgm deleted file mode 100644 index f8f8ebe3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7549.pgm b/examples/autotiler/Mnist/test_img/6/7549.pgm deleted file mode 100644 index 0ae4b6946..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7576.pgm b/examples/autotiler/Mnist/test_img/6/7576.pgm deleted file mode 100644 index af9b51559..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7585.pgm b/examples/autotiler/Mnist/test_img/6/7585.pgm deleted file mode 100644 index 0e287c528..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7596.pgm b/examples/autotiler/Mnist/test_img/6/7596.pgm deleted file mode 100644 index f3762a1fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7613.pgm b/examples/autotiler/Mnist/test_img/6/7613.pgm deleted file mode 100644 index e4be05527..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7631.pgm b/examples/autotiler/Mnist/test_img/6/7631.pgm deleted file mode 100644 index 56b46bf1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7667.pgm b/examples/autotiler/Mnist/test_img/6/7667.pgm deleted file mode 100644 index 7905cc789..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7668.pgm b/examples/autotiler/Mnist/test_img/6/7668.pgm deleted file mode 100644 index 792f111ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7670.pgm b/examples/autotiler/Mnist/test_img/6/7670.pgm deleted file mode 100644 index 25243b71f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7681.pgm b/examples/autotiler/Mnist/test_img/6/7681.pgm deleted file mode 100644 index 78975ee9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7684.pgm b/examples/autotiler/Mnist/test_img/6/7684.pgm deleted file mode 100644 index 460639462..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/769.pgm b/examples/autotiler/Mnist/test_img/6/769.pgm deleted file mode 100644 index d8fbabeb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7705.pgm b/examples/autotiler/Mnist/test_img/6/7705.pgm deleted file mode 100644 index 43fdbee7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7709.pgm b/examples/autotiler/Mnist/test_img/6/7709.pgm deleted file mode 100644 index 6ba699307..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7712.pgm b/examples/autotiler/Mnist/test_img/6/7712.pgm deleted file mode 100644 index 0e2e26376..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7721.pgm b/examples/autotiler/Mnist/test_img/6/7721.pgm deleted file mode 100644 index a24d99e40..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7733.pgm b/examples/autotiler/Mnist/test_img/6/7733.pgm deleted file mode 100644 index 961134345..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7743.pgm b/examples/autotiler/Mnist/test_img/6/7743.pgm deleted file mode 100644 index e7299baa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7753.pgm b/examples/autotiler/Mnist/test_img/6/7753.pgm deleted file mode 100644 index f513a94ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7758.pgm b/examples/autotiler/Mnist/test_img/6/7758.pgm deleted file mode 100644 index 0d226027e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7761.pgm b/examples/autotiler/Mnist/test_img/6/7761.pgm deleted file mode 100644 index 56900f64a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7768.pgm b/examples/autotiler/Mnist/test_img/6/7768.pgm deleted file mode 100644 index 75b6bd67b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7778.pgm b/examples/autotiler/Mnist/test_img/6/7778.pgm deleted file mode 100644 index 366eb3f97..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7787.pgm b/examples/autotiler/Mnist/test_img/6/7787.pgm deleted file mode 100644 index f9b6812d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7792.pgm b/examples/autotiler/Mnist/test_img/6/7792.pgm deleted file mode 100644 index 7ac872de7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7816.pgm b/examples/autotiler/Mnist/test_img/6/7816.pgm deleted file mode 100644 index e992b1184..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7824.pgm b/examples/autotiler/Mnist/test_img/6/7824.pgm deleted file mode 100644 index 283149db6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7843.pgm b/examples/autotiler/Mnist/test_img/6/7843.pgm deleted file mode 100644 index 8eeca1235..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7851.pgm b/examples/autotiler/Mnist/test_img/6/7851.pgm deleted file mode 100644 index 7a1f82d61..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/786.pgm b/examples/autotiler/Mnist/test_img/6/786.pgm deleted file mode 100644 index bf0e67de0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7860.pgm b/examples/autotiler/Mnist/test_img/6/7860.pgm deleted file mode 100644 index c9b5862e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7880.pgm b/examples/autotiler/Mnist/test_img/6/7880.pgm deleted file mode 100644 index ed7912e02..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7891.pgm b/examples/autotiler/Mnist/test_img/6/7891.pgm deleted file mode 100644 index 1b6a43ef7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7897.pgm b/examples/autotiler/Mnist/test_img/6/7897.pgm deleted file mode 100644 index ce27cc5ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7904.pgm b/examples/autotiler/Mnist/test_img/6/7904.pgm deleted file mode 100644 index aa735462a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7906.pgm b/examples/autotiler/Mnist/test_img/6/7906.pgm deleted file mode 100644 index 4d64c7025..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7914.pgm b/examples/autotiler/Mnist/test_img/6/7914.pgm deleted file mode 100644 index 89f31969b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7925.pgm b/examples/autotiler/Mnist/test_img/6/7925.pgm deleted file mode 100644 index 767ca0c6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7929.pgm b/examples/autotiler/Mnist/test_img/6/7929.pgm deleted file mode 100644 index 0b6fffe55..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7939.pgm b/examples/autotiler/Mnist/test_img/6/7939.pgm deleted file mode 100644 index 0727591c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7949.pgm b/examples/autotiler/Mnist/test_img/6/7949.pgm deleted file mode 100644 index b397e5577..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7959.pgm b/examples/autotiler/Mnist/test_img/6/7959.pgm deleted file mode 100644 index 0e7591687..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7970.pgm b/examples/autotiler/Mnist/test_img/6/7970.pgm deleted file mode 100644 index fbf829be4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/7975.pgm b/examples/autotiler/Mnist/test_img/6/7975.pgm deleted file mode 100644 index b20eee2dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/7975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8013.pgm b/examples/autotiler/Mnist/test_img/6/8013.pgm deleted file mode 100644 index 56c1f8546..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8018.pgm b/examples/autotiler/Mnist/test_img/6/8018.pgm deleted file mode 100644 index 7fbca529b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8024.pgm b/examples/autotiler/Mnist/test_img/6/8024.pgm deleted file mode 100644 index 19f5486b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8040.pgm b/examples/autotiler/Mnist/test_img/6/8040.pgm deleted file mode 100644 index 675088d4e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8041.pgm b/examples/autotiler/Mnist/test_img/6/8041.pgm deleted file mode 100644 index 2ae8b3f7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8042.pgm b/examples/autotiler/Mnist/test_img/6/8042.pgm deleted file mode 100644 index 0bbf0acb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8063.pgm b/examples/autotiler/Mnist/test_img/6/8063.pgm deleted file mode 100644 index 000e4c519..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8073.pgm b/examples/autotiler/Mnist/test_img/6/8073.pgm deleted file mode 100644 index 5961c1212..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8083.pgm b/examples/autotiler/Mnist/test_img/6/8083.pgm deleted file mode 100644 index 09f34945f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8096.pgm b/examples/autotiler/Mnist/test_img/6/8096.pgm deleted file mode 100644 index c025e318d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/81.pgm b/examples/autotiler/Mnist/test_img/6/81.pgm deleted file mode 100644 index 52d982992..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/81.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8103.pgm b/examples/autotiler/Mnist/test_img/6/8103.pgm deleted file mode 100644 index 80b6c1c5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8104.pgm b/examples/autotiler/Mnist/test_img/6/8104.pgm deleted file mode 100644 index 455bb91ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8116.pgm b/examples/autotiler/Mnist/test_img/6/8116.pgm deleted file mode 100644 index 10ea433a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8123.pgm b/examples/autotiler/Mnist/test_img/6/8123.pgm deleted file mode 100644 index 895ad677d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8133.pgm b/examples/autotiler/Mnist/test_img/6/8133.pgm deleted file mode 100644 index 4d466eea0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/814.pgm b/examples/autotiler/Mnist/test_img/6/814.pgm deleted file mode 100644 index 0f091da58..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8143.pgm b/examples/autotiler/Mnist/test_img/6/8143.pgm deleted file mode 100644 index 3d4359f5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8148.pgm b/examples/autotiler/Mnist/test_img/6/8148.pgm deleted file mode 100644 index 60b6aae73..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8169.pgm b/examples/autotiler/Mnist/test_img/6/8169.pgm deleted file mode 100644 index 4dd690302..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/817.pgm b/examples/autotiler/Mnist/test_img/6/817.pgm deleted file mode 100644 index a821b3b65..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8177.pgm b/examples/autotiler/Mnist/test_img/6/8177.pgm deleted file mode 100644 index 5c33c6ec6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8191.pgm b/examples/autotiler/Mnist/test_img/6/8191.pgm deleted file mode 100644 index 39e663629..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8191.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8196.pgm b/examples/autotiler/Mnist/test_img/6/8196.pgm deleted file mode 100644 index b4abc67db..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8197.pgm b/examples/autotiler/Mnist/test_img/6/8197.pgm deleted file mode 100644 index 16fd7ab02..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/820.pgm b/examples/autotiler/Mnist/test_img/6/820.pgm deleted file mode 100644 index 8275e1518..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8200.pgm b/examples/autotiler/Mnist/test_img/6/8200.pgm deleted file mode 100644 index bf6c59c16..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8211.pgm b/examples/autotiler/Mnist/test_img/6/8211.pgm deleted file mode 100644 index 8e13e9e83..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8237.pgm b/examples/autotiler/Mnist/test_img/6/8237.pgm deleted file mode 100644 index 00e90c991..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8240.pgm b/examples/autotiler/Mnist/test_img/6/8240.pgm deleted file mode 100644 index 21b38d34a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8256.pgm b/examples/autotiler/Mnist/test_img/6/8256.pgm deleted file mode 100644 index 3a0195303..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8281.pgm b/examples/autotiler/Mnist/test_img/6/8281.pgm deleted file mode 100644 index 9565ffee3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8287.pgm b/examples/autotiler/Mnist/test_img/6/8287.pgm deleted file mode 100644 index 4373b20d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8291.pgm b/examples/autotiler/Mnist/test_img/6/8291.pgm deleted file mode 100644 index 898c59ff4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8291.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8311.pgm b/examples/autotiler/Mnist/test_img/6/8311.pgm deleted file mode 100644 index 109b95be2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8326.pgm b/examples/autotiler/Mnist/test_img/6/8326.pgm deleted file mode 100644 index f2c94f2b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8333.pgm b/examples/autotiler/Mnist/test_img/6/8333.pgm deleted file mode 100644 index adf6ea64b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8336.pgm b/examples/autotiler/Mnist/test_img/6/8336.pgm deleted file mode 100644 index a043d29c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/834.pgm b/examples/autotiler/Mnist/test_img/6/834.pgm deleted file mode 100644 index 253f30feb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8341.pgm b/examples/autotiler/Mnist/test_img/6/8341.pgm deleted file mode 100644 index 74fb218eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8349.pgm b/examples/autotiler/Mnist/test_img/6/8349.pgm deleted file mode 100644 index 52684a6e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8368.pgm b/examples/autotiler/Mnist/test_img/6/8368.pgm deleted file mode 100644 index c708e8c83..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8368.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8377.pgm b/examples/autotiler/Mnist/test_img/6/8377.pgm deleted file mode 100644 index 3bb324c1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8380.pgm b/examples/autotiler/Mnist/test_img/6/8380.pgm deleted file mode 100644 index 3ca9288a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8385.pgm b/examples/autotiler/Mnist/test_img/6/8385.pgm deleted file mode 100644 index 9dff6531b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8399.pgm b/examples/autotiler/Mnist/test_img/6/8399.pgm deleted file mode 100644 index 88fa69a9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8423.pgm b/examples/autotiler/Mnist/test_img/6/8423.pgm deleted file mode 100644 index d4a66d2e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8433.pgm b/examples/autotiler/Mnist/test_img/6/8433.pgm deleted file mode 100644 index a0ba4b922..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8441.pgm b/examples/autotiler/Mnist/test_img/6/8441.pgm deleted file mode 100644 index bb7d92174..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8446.pgm b/examples/autotiler/Mnist/test_img/6/8446.pgm deleted file mode 100644 index 49e440586..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8446.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8454.pgm b/examples/autotiler/Mnist/test_img/6/8454.pgm deleted file mode 100644 index f3043848a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8464.pgm b/examples/autotiler/Mnist/test_img/6/8464.pgm deleted file mode 100644 index 0d54ed468..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8474.pgm b/examples/autotiler/Mnist/test_img/6/8474.pgm deleted file mode 100644 index 20f8d87b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8478.pgm b/examples/autotiler/Mnist/test_img/6/8478.pgm deleted file mode 100644 index 233d25996..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8499.pgm b/examples/autotiler/Mnist/test_img/6/8499.pgm deleted file mode 100644 index 49390282a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8515.pgm b/examples/autotiler/Mnist/test_img/6/8515.pgm deleted file mode 100644 index 945f2b958..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8516.pgm b/examples/autotiler/Mnist/test_img/6/8516.pgm deleted file mode 100644 index bf59505d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8517.pgm b/examples/autotiler/Mnist/test_img/6/8517.pgm deleted file mode 100644 index eb20c4e11..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8542.pgm b/examples/autotiler/Mnist/test_img/6/8542.pgm deleted file mode 100644 index 267a6729e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8546.pgm b/examples/autotiler/Mnist/test_img/6/8546.pgm deleted file mode 100644 index c103ef5a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8554.pgm b/examples/autotiler/Mnist/test_img/6/8554.pgm deleted file mode 100644 index 7ecd7f628..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8564.pgm b/examples/autotiler/Mnist/test_img/6/8564.pgm deleted file mode 100644 index c48337d90..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8572.pgm b/examples/autotiler/Mnist/test_img/6/8572.pgm deleted file mode 100644 index 936556aba..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8579.pgm b/examples/autotiler/Mnist/test_img/6/8579.pgm deleted file mode 100644 index 9c17ccb36..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8580.pgm b/examples/autotiler/Mnist/test_img/6/8580.pgm deleted file mode 100644 index c1ecf0290..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8588.pgm b/examples/autotiler/Mnist/test_img/6/8588.pgm deleted file mode 100644 index 38f208e88..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/860.pgm b/examples/autotiler/Mnist/test_img/6/860.pgm deleted file mode 100644 index 7b6499102..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/860.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8605.pgm b/examples/autotiler/Mnist/test_img/6/8605.pgm deleted file mode 100644 index 34a7d6fa6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/861.pgm b/examples/autotiler/Mnist/test_img/6/861.pgm deleted file mode 100644 index 700047ff0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8622.pgm b/examples/autotiler/Mnist/test_img/6/8622.pgm deleted file mode 100644 index 74c3f0ccd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8628.pgm b/examples/autotiler/Mnist/test_img/6/8628.pgm deleted file mode 100644 index a94028b1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8637.pgm b/examples/autotiler/Mnist/test_img/6/8637.pgm deleted file mode 100644 index bf124951d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8644.pgm b/examples/autotiler/Mnist/test_img/6/8644.pgm deleted file mode 100644 index e4219bfa1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8647.pgm b/examples/autotiler/Mnist/test_img/6/8647.pgm deleted file mode 100644 index cd7fbd836..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8668.pgm b/examples/autotiler/Mnist/test_img/6/8668.pgm deleted file mode 100644 index b32223782..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8677.pgm b/examples/autotiler/Mnist/test_img/6/8677.pgm deleted file mode 100644 index 1e192dd15..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8687.pgm b/examples/autotiler/Mnist/test_img/6/8687.pgm deleted file mode 100644 index 2d953fbe9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8697.pgm b/examples/autotiler/Mnist/test_img/6/8697.pgm deleted file mode 100644 index d391a2363..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/870.pgm b/examples/autotiler/Mnist/test_img/6/870.pgm deleted file mode 100644 index 5a9b6ce44..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8732.pgm b/examples/autotiler/Mnist/test_img/6/8732.pgm deleted file mode 100644 index 33d85c13b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8739.pgm b/examples/autotiler/Mnist/test_img/6/8739.pgm deleted file mode 100644 index bb8007a79..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8744.pgm b/examples/autotiler/Mnist/test_img/6/8744.pgm deleted file mode 100644 index 2b76808db..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8760.pgm b/examples/autotiler/Mnist/test_img/6/8760.pgm deleted file mode 100644 index ac032bb60..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8769.pgm b/examples/autotiler/Mnist/test_img/6/8769.pgm deleted file mode 100644 index 18008776f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8771.pgm b/examples/autotiler/Mnist/test_img/6/8771.pgm deleted file mode 100644 index 023b2f36f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8779.pgm b/examples/autotiler/Mnist/test_img/6/8779.pgm deleted file mode 100644 index 79ba35c34..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8779.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8789.pgm b/examples/autotiler/Mnist/test_img/6/8789.pgm deleted file mode 100644 index 252eea726..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8792.pgm b/examples/autotiler/Mnist/test_img/6/8792.pgm deleted file mode 100644 index c78b1e369..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/88.pgm b/examples/autotiler/Mnist/test_img/6/88.pgm deleted file mode 100644 index 7b4aa29c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/88.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8804.pgm b/examples/autotiler/Mnist/test_img/6/8804.pgm deleted file mode 100644 index 7bd714588..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8804.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8814.pgm b/examples/autotiler/Mnist/test_img/6/8814.pgm deleted file mode 100644 index 112271310..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8824.pgm b/examples/autotiler/Mnist/test_img/6/8824.pgm deleted file mode 100644 index 3ae3c2ad5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8828.pgm b/examples/autotiler/Mnist/test_img/6/8828.pgm deleted file mode 100644 index 8cad316f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8831.pgm b/examples/autotiler/Mnist/test_img/6/8831.pgm deleted file mode 100644 index 1c4a6d80e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8848.pgm b/examples/autotiler/Mnist/test_img/6/8848.pgm deleted file mode 100644 index e84db43d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/885.pgm b/examples/autotiler/Mnist/test_img/6/885.pgm deleted file mode 100644 index 96bf87f1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8852.pgm b/examples/autotiler/Mnist/test_img/6/8852.pgm deleted file mode 100644 index 065af8533..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/886.pgm b/examples/autotiler/Mnist/test_img/6/886.pgm deleted file mode 100644 index e010c7ef7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8869.pgm b/examples/autotiler/Mnist/test_img/6/8869.pgm deleted file mode 100644 index 28727eb56..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8884.pgm b/examples/autotiler/Mnist/test_img/6/8884.pgm deleted file mode 100644 index 118974524..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8888.pgm b/examples/autotiler/Mnist/test_img/6/8888.pgm deleted file mode 100644 index 8dcfc9cbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8890.pgm b/examples/autotiler/Mnist/test_img/6/8890.pgm deleted file mode 100644 index f48b0a06b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8896.pgm b/examples/autotiler/Mnist/test_img/6/8896.pgm deleted file mode 100644 index e9c17b839..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8901.pgm b/examples/autotiler/Mnist/test_img/6/8901.pgm deleted file mode 100644 index 02995f0d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8937.pgm b/examples/autotiler/Mnist/test_img/6/8937.pgm deleted file mode 100644 index 414eac3d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8944.pgm b/examples/autotiler/Mnist/test_img/6/8944.pgm deleted file mode 100644 index be62c5b57..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8967.pgm b/examples/autotiler/Mnist/test_img/6/8967.pgm deleted file mode 100644 index 5d2ee62ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8968.pgm b/examples/autotiler/Mnist/test_img/6/8968.pgm deleted file mode 100644 index 20e15b60d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8990.pgm b/examples/autotiler/Mnist/test_img/6/8990.pgm deleted file mode 100644 index 230393b5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8996.pgm b/examples/autotiler/Mnist/test_img/6/8996.pgm deleted file mode 100644 index a4d418fff..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/8997.pgm b/examples/autotiler/Mnist/test_img/6/8997.pgm deleted file mode 100644 index 9ff676065..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/8997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9001.pgm b/examples/autotiler/Mnist/test_img/6/9001.pgm deleted file mode 100644 index e84e50787..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9014.pgm b/examples/autotiler/Mnist/test_img/6/9014.pgm deleted file mode 100644 index e3d03e984..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9021.pgm b/examples/autotiler/Mnist/test_img/6/9021.pgm deleted file mode 100644 index db095262c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9029.pgm b/examples/autotiler/Mnist/test_img/6/9029.pgm deleted file mode 100644 index 6a681d30c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/903.pgm b/examples/autotiler/Mnist/test_img/6/903.pgm deleted file mode 100644 index 94164b7f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9040.pgm b/examples/autotiler/Mnist/test_img/6/9040.pgm deleted file mode 100644 index 16eb332ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9041.pgm b/examples/autotiler/Mnist/test_img/6/9041.pgm deleted file mode 100644 index 16a824b75..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9050.pgm b/examples/autotiler/Mnist/test_img/6/9050.pgm deleted file mode 100644 index b2abab863..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9053.pgm b/examples/autotiler/Mnist/test_img/6/9053.pgm deleted file mode 100644 index 1e17a8f1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9058.pgm b/examples/autotiler/Mnist/test_img/6/9058.pgm deleted file mode 100644 index ceb9fb316..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9066.pgm b/examples/autotiler/Mnist/test_img/6/9066.pgm deleted file mode 100644 index 4930ad765..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9076.pgm b/examples/autotiler/Mnist/test_img/6/9076.pgm deleted file mode 100644 index bc1446b62..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9086.pgm b/examples/autotiler/Mnist/test_img/6/9086.pgm deleted file mode 100644 index 5f3231af7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9091.pgm b/examples/autotiler/Mnist/test_img/6/9091.pgm deleted file mode 100644 index 83a6e53e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/91.pgm b/examples/autotiler/Mnist/test_img/6/91.pgm deleted file mode 100644 index fe6d423b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/91.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9122.pgm b/examples/autotiler/Mnist/test_img/6/9122.pgm deleted file mode 100644 index ba787d71d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9127.pgm b/examples/autotiler/Mnist/test_img/6/9127.pgm deleted file mode 100644 index dcd50aa6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9130.pgm b/examples/autotiler/Mnist/test_img/6/9130.pgm deleted file mode 100644 index 7a11e3e9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9138.pgm b/examples/autotiler/Mnist/test_img/6/9138.pgm deleted file mode 100644 index 305aaaf21..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9146.pgm b/examples/autotiler/Mnist/test_img/6/9146.pgm deleted file mode 100644 index f53c54b81..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9148.pgm b/examples/autotiler/Mnist/test_img/6/9148.pgm deleted file mode 100644 index 36d10959c..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9149.pgm b/examples/autotiler/Mnist/test_img/6/9149.pgm deleted file mode 100644 index 64861928a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9178.pgm b/examples/autotiler/Mnist/test_img/6/9178.pgm deleted file mode 100644 index be64e6091..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9185.pgm b/examples/autotiler/Mnist/test_img/6/9185.pgm deleted file mode 100644 index 8700f6774..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9195.pgm b/examples/autotiler/Mnist/test_img/6/9195.pgm deleted file mode 100644 index 76d3ec250..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9207.pgm b/examples/autotiler/Mnist/test_img/6/9207.pgm deleted file mode 100644 index 34c6f72cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9210.pgm b/examples/autotiler/Mnist/test_img/6/9210.pgm deleted file mode 100644 index b0367e7d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9226.pgm b/examples/autotiler/Mnist/test_img/6/9226.pgm deleted file mode 100644 index 374117244..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9240.pgm b/examples/autotiler/Mnist/test_img/6/9240.pgm deleted file mode 100644 index 643e80e14..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9247.pgm b/examples/autotiler/Mnist/test_img/6/9247.pgm deleted file mode 100644 index 87ba9ea3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9251.pgm b/examples/autotiler/Mnist/test_img/6/9251.pgm deleted file mode 100644 index fda256c3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9256.pgm b/examples/autotiler/Mnist/test_img/6/9256.pgm deleted file mode 100644 index 338a08598..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9269.pgm b/examples/autotiler/Mnist/test_img/6/9269.pgm deleted file mode 100644 index fbd9d61cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9278.pgm b/examples/autotiler/Mnist/test_img/6/9278.pgm deleted file mode 100644 index 3b7f9daed..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9306.pgm b/examples/autotiler/Mnist/test_img/6/9306.pgm deleted file mode 100644 index fe507e2e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9312.pgm b/examples/autotiler/Mnist/test_img/6/9312.pgm deleted file mode 100644 index b2ec20003..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9317.pgm b/examples/autotiler/Mnist/test_img/6/9317.pgm deleted file mode 100644 index 7de51e6aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9334.pgm b/examples/autotiler/Mnist/test_img/6/9334.pgm deleted file mode 100644 index ac3b2f95e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9343.pgm b/examples/autotiler/Mnist/test_img/6/9343.pgm deleted file mode 100644 index ab72741f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9355.pgm b/examples/autotiler/Mnist/test_img/6/9355.pgm deleted file mode 100644 index d5ed2c780..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9361.pgm b/examples/autotiler/Mnist/test_img/6/9361.pgm deleted file mode 100644 index 1a514bf23..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9364.pgm b/examples/autotiler/Mnist/test_img/6/9364.pgm deleted file mode 100644 index c773c0aa0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9366.pgm b/examples/autotiler/Mnist/test_img/6/9366.pgm deleted file mode 100644 index 482429119..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/937.pgm b/examples/autotiler/Mnist/test_img/6/937.pgm deleted file mode 100644 index 12e7501c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/937.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9373.pgm b/examples/autotiler/Mnist/test_img/6/9373.pgm deleted file mode 100644 index 10bde51b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9383.pgm b/examples/autotiler/Mnist/test_img/6/9383.pgm deleted file mode 100644 index a7567a6d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9392.pgm b/examples/autotiler/Mnist/test_img/6/9392.pgm deleted file mode 100644 index cc7a4bdab..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/940.pgm b/examples/autotiler/Mnist/test_img/6/940.pgm deleted file mode 100644 index 358c2ff86..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9403.pgm b/examples/autotiler/Mnist/test_img/6/9403.pgm deleted file mode 100644 index d53452e2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/942.pgm b/examples/autotiler/Mnist/test_img/6/942.pgm deleted file mode 100644 index be4bd8d1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9424.pgm b/examples/autotiler/Mnist/test_img/6/9424.pgm deleted file mode 100644 index 5fe5a1c65..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9426.pgm b/examples/autotiler/Mnist/test_img/6/9426.pgm deleted file mode 100644 index c67413f2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/943.pgm b/examples/autotiler/Mnist/test_img/6/943.pgm deleted file mode 100644 index a4a95b4de..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/943.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9437.pgm b/examples/autotiler/Mnist/test_img/6/9437.pgm deleted file mode 100644 index e7311780a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9441.pgm b/examples/autotiler/Mnist/test_img/6/9441.pgm deleted file mode 100644 index 91a850ce4..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9454.pgm b/examples/autotiler/Mnist/test_img/6/9454.pgm deleted file mode 100644 index 80dc1eee3..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9461.pgm b/examples/autotiler/Mnist/test_img/6/9461.pgm deleted file mode 100644 index 96c3afc3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9475.pgm b/examples/autotiler/Mnist/test_img/6/9475.pgm deleted file mode 100644 index b8d6507bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9494.pgm b/examples/autotiler/Mnist/test_img/6/9494.pgm deleted file mode 100644 index 4c24bc384..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9504.pgm b/examples/autotiler/Mnist/test_img/6/9504.pgm deleted file mode 100644 index 49e4803f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9514.pgm b/examples/autotiler/Mnist/test_img/6/9514.pgm deleted file mode 100644 index 357a85025..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/952.pgm b/examples/autotiler/Mnist/test_img/6/952.pgm deleted file mode 100644 index f92ffed9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9529.pgm b/examples/autotiler/Mnist/test_img/6/9529.pgm deleted file mode 100644 index 4b085f358..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9531.pgm b/examples/autotiler/Mnist/test_img/6/9531.pgm deleted file mode 100644 index e72ed1696..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9531.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9532.pgm b/examples/autotiler/Mnist/test_img/6/9532.pgm deleted file mode 100644 index fc7e15790..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9555.pgm b/examples/autotiler/Mnist/test_img/6/9555.pgm deleted file mode 100644 index ae738053b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9568.pgm b/examples/autotiler/Mnist/test_img/6/9568.pgm deleted file mode 100644 index 2f204429f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9589.pgm b/examples/autotiler/Mnist/test_img/6/9589.pgm deleted file mode 100644 index 1651fa6b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9598.pgm b/examples/autotiler/Mnist/test_img/6/9598.pgm deleted file mode 100644 index 155b61536..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9607.pgm b/examples/autotiler/Mnist/test_img/6/9607.pgm deleted file mode 100644 index 77d027cb8..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9617.pgm b/examples/autotiler/Mnist/test_img/6/9617.pgm deleted file mode 100644 index 648b102fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9627.pgm b/examples/autotiler/Mnist/test_img/6/9627.pgm deleted file mode 100644 index ed25e678f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9632.pgm b/examples/autotiler/Mnist/test_img/6/9632.pgm deleted file mode 100644 index 8904e078b..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/965.pgm b/examples/autotiler/Mnist/test_img/6/965.pgm deleted file mode 100644 index 9c367d415..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9658.pgm b/examples/autotiler/Mnist/test_img/6/9658.pgm deleted file mode 100644 index 39bdb1689..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9665.pgm b/examples/autotiler/Mnist/test_img/6/9665.pgm deleted file mode 100644 index 9a35b4de7..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9678.pgm b/examples/autotiler/Mnist/test_img/6/9678.pgm deleted file mode 100644 index 3f7bd2f2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9679.pgm b/examples/autotiler/Mnist/test_img/6/9679.pgm deleted file mode 100644 index 71b0b1648..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9693.pgm b/examples/autotiler/Mnist/test_img/6/9693.pgm deleted file mode 100644 index 5eab49611..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9698.pgm b/examples/autotiler/Mnist/test_img/6/9698.pgm deleted file mode 100644 index 5e19bc4cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9710.pgm b/examples/autotiler/Mnist/test_img/6/9710.pgm deleted file mode 100644 index bf9ad94ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9720.pgm b/examples/autotiler/Mnist/test_img/6/9720.pgm deleted file mode 100644 index 21520c207..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/973.pgm b/examples/autotiler/Mnist/test_img/6/973.pgm deleted file mode 100644 index d588beea0..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9730.pgm b/examples/autotiler/Mnist/test_img/6/9730.pgm deleted file mode 100644 index 5d4a9c254..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9736.pgm b/examples/autotiler/Mnist/test_img/6/9736.pgm deleted file mode 100644 index e8fa3ad7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9756.pgm b/examples/autotiler/Mnist/test_img/6/9756.pgm deleted file mode 100644 index 398c73bb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9775.pgm b/examples/autotiler/Mnist/test_img/6/9775.pgm deleted file mode 100644 index d209c40de..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9776.pgm b/examples/autotiler/Mnist/test_img/6/9776.pgm deleted file mode 100644 index f9f0d7899..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9778.pgm b/examples/autotiler/Mnist/test_img/6/9778.pgm deleted file mode 100644 index 555c6157a..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9782.pgm b/examples/autotiler/Mnist/test_img/6/9782.pgm deleted file mode 100644 index 339359dd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9793.pgm b/examples/autotiler/Mnist/test_img/6/9793.pgm deleted file mode 100644 index 149307438..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9794.pgm b/examples/autotiler/Mnist/test_img/6/9794.pgm deleted file mode 100644 index 13bb90b2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/98.pgm b/examples/autotiler/Mnist/test_img/6/98.pgm deleted file mode 100644 index b3d8fa12e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/98.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9815.pgm b/examples/autotiler/Mnist/test_img/6/9815.pgm deleted file mode 100644 index 41cd7291d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9833.pgm b/examples/autotiler/Mnist/test_img/6/9833.pgm deleted file mode 100644 index 896a58bc2..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9842.pgm b/examples/autotiler/Mnist/test_img/6/9842.pgm deleted file mode 100644 index 97d59523f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9858.pgm b/examples/autotiler/Mnist/test_img/6/9858.pgm deleted file mode 100644 index 42311087d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/986.pgm b/examples/autotiler/Mnist/test_img/6/986.pgm deleted file mode 100644 index 66de53a36..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9862.pgm b/examples/autotiler/Mnist/test_img/6/9862.pgm deleted file mode 100644 index 07c907edf..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9886.pgm b/examples/autotiler/Mnist/test_img/6/9886.pgm deleted file mode 100644 index ae4b02404..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9888.pgm b/examples/autotiler/Mnist/test_img/6/9888.pgm deleted file mode 100644 index 772c83f49..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/989.pgm b/examples/autotiler/Mnist/test_img/6/989.pgm deleted file mode 100644 index bce22115d..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9908.pgm b/examples/autotiler/Mnist/test_img/6/9908.pgm deleted file mode 100644 index dea54ab90..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9921.pgm b/examples/autotiler/Mnist/test_img/6/9921.pgm deleted file mode 100644 index c8ed5a383..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9938.pgm b/examples/autotiler/Mnist/test_img/6/9938.pgm deleted file mode 100644 index 164ec2aba..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9940.pgm b/examples/autotiler/Mnist/test_img/6/9940.pgm deleted file mode 100644 index b5e693cad..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9949.pgm b/examples/autotiler/Mnist/test_img/6/9949.pgm deleted file mode 100644 index f7eaa5928..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9953.pgm b/examples/autotiler/Mnist/test_img/6/9953.pgm deleted file mode 100644 index 12558f054..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9961.pgm b/examples/autotiler/Mnist/test_img/6/9961.pgm deleted file mode 100644 index ce673a258..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9966.pgm b/examples/autotiler/Mnist/test_img/6/9966.pgm deleted file mode 100644 index 42ebc5d76..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9976.pgm b/examples/autotiler/Mnist/test_img/6/9976.pgm deleted file mode 100644 index a226eaedd..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9981.pgm b/examples/autotiler/Mnist/test_img/6/9981.pgm deleted file mode 100644 index 5459c68a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9989.pgm b/examples/autotiler/Mnist/test_img/6/9989.pgm deleted file mode 100644 index 7ca46f51f..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/6/9999.pgm b/examples/autotiler/Mnist/test_img/6/9999.pgm deleted file mode 100644 index e10ca5e0e..000000000 Binary files a/examples/autotiler/Mnist/test_img/6/9999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/0.pgm b/examples/autotiler/Mnist/test_img/7/0.pgm deleted file mode 100644 index 37d4f1229..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/0.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1006.pgm b/examples/autotiler/Mnist/test_img/7/1006.pgm deleted file mode 100644 index 8766e07c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1012.pgm b/examples/autotiler/Mnist/test_img/7/1012.pgm deleted file mode 100644 index 132c0856f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1021.pgm b/examples/autotiler/Mnist/test_img/7/1021.pgm deleted file mode 100644 index 8391306af..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1039.pgm b/examples/autotiler/Mnist/test_img/7/1039.pgm deleted file mode 100644 index c7394ea2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1055.pgm b/examples/autotiler/Mnist/test_img/7/1055.pgm deleted file mode 100644 index ff2049bb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1071.pgm b/examples/autotiler/Mnist/test_img/7/1071.pgm deleted file mode 100644 index 43afd552a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1091.pgm b/examples/autotiler/Mnist/test_img/7/1091.pgm deleted file mode 100644 index 9ead40e93..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1096.pgm b/examples/autotiler/Mnist/test_img/7/1096.pgm deleted file mode 100644 index 8e2a51928..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1100.pgm b/examples/autotiler/Mnist/test_img/7/1100.pgm deleted file mode 100644 index ce8dcf00b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1104.pgm b/examples/autotiler/Mnist/test_img/7/1104.pgm deleted file mode 100644 index 5df108958..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/111.pgm b/examples/autotiler/Mnist/test_img/7/111.pgm deleted file mode 100644 index 5af71d0de..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1110.pgm b/examples/autotiler/Mnist/test_img/7/1110.pgm deleted file mode 100644 index f8fa40e3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1117.pgm b/examples/autotiler/Mnist/test_img/7/1117.pgm deleted file mode 100644 index 4e91fad91..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1119.pgm b/examples/autotiler/Mnist/test_img/7/1119.pgm deleted file mode 100644 index f5eaddb41..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1122.pgm b/examples/autotiler/Mnist/test_img/7/1122.pgm deleted file mode 100644 index ec3c7034b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1126.pgm b/examples/autotiler/Mnist/test_img/7/1126.pgm deleted file mode 100644 index a666648de..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1133.pgm b/examples/autotiler/Mnist/test_img/7/1133.pgm deleted file mode 100644 index 361be242e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/114.pgm b/examples/autotiler/Mnist/test_img/7/114.pgm deleted file mode 100644 index 9073c7fa4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1141.pgm b/examples/autotiler/Mnist/test_img/7/1141.pgm deleted file mode 100644 index a2b3ab335..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1143.pgm b/examples/autotiler/Mnist/test_img/7/1143.pgm deleted file mode 100644 index 1c9c4c48a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1156.pgm b/examples/autotiler/Mnist/test_img/7/1156.pgm deleted file mode 100644 index 7188efd81..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1156.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1164.pgm b/examples/autotiler/Mnist/test_img/7/1164.pgm deleted file mode 100644 index c573df008..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1171.pgm b/examples/autotiler/Mnist/test_img/7/1171.pgm deleted file mode 100644 index 2ebeedad7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1173.pgm b/examples/autotiler/Mnist/test_img/7/1173.pgm deleted file mode 100644 index 1d24ce0c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1175.pgm b/examples/autotiler/Mnist/test_img/7/1175.pgm deleted file mode 100644 index bef34753e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1186.pgm b/examples/autotiler/Mnist/test_img/7/1186.pgm deleted file mode 100644 index 358cc10f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1194.pgm b/examples/autotiler/Mnist/test_img/7/1194.pgm deleted file mode 100644 index 7447fa744..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1194.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1206.pgm b/examples/autotiler/Mnist/test_img/7/1206.pgm deleted file mode 100644 index c30c6067d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1216.pgm b/examples/autotiler/Mnist/test_img/7/1216.pgm deleted file mode 100644 index d9d59ec79..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/122.pgm b/examples/autotiler/Mnist/test_img/7/122.pgm deleted file mode 100644 index de5647252..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1226.pgm b/examples/autotiler/Mnist/test_img/7/1226.pgm deleted file mode 100644 index 36ba4cbd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/124.pgm b/examples/autotiler/Mnist/test_img/7/124.pgm deleted file mode 100644 index e9e5e72d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1241.pgm b/examples/autotiler/Mnist/test_img/7/1241.pgm deleted file mode 100644 index 5cdf552f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1244.pgm b/examples/autotiler/Mnist/test_img/7/1244.pgm deleted file mode 100644 index 630dc477b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1260.pgm b/examples/autotiler/Mnist/test_img/7/1260.pgm deleted file mode 100644 index d5c7358d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1276.pgm b/examples/autotiler/Mnist/test_img/7/1276.pgm deleted file mode 100644 index 69ca31b9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1283.pgm b/examples/autotiler/Mnist/test_img/7/1283.pgm deleted file mode 100644 index 9d4131a9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1321.pgm b/examples/autotiler/Mnist/test_img/7/1321.pgm deleted file mode 100644 index 42c85e886..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1326.pgm b/examples/autotiler/Mnist/test_img/7/1326.pgm deleted file mode 100644 index 643ec3270..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1328.pgm b/examples/autotiler/Mnist/test_img/7/1328.pgm deleted file mode 100644 index e9c9bc059..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/133.pgm b/examples/autotiler/Mnist/test_img/7/133.pgm deleted file mode 100644 index 688c6e61c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/133.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1346.pgm b/examples/autotiler/Mnist/test_img/7/1346.pgm deleted file mode 100644 index 09801466e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1347.pgm b/examples/autotiler/Mnist/test_img/7/1347.pgm deleted file mode 100644 index b762802dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1355.pgm b/examples/autotiler/Mnist/test_img/7/1355.pgm deleted file mode 100644 index 9c2559a3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1359.pgm b/examples/autotiler/Mnist/test_img/7/1359.pgm deleted file mode 100644 index 48b1ce892..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1361.pgm b/examples/autotiler/Mnist/test_img/7/1361.pgm deleted file mode 100644 index 5f42c2cbc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1363.pgm b/examples/autotiler/Mnist/test_img/7/1363.pgm deleted file mode 100644 index d9ff7af8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1366.pgm b/examples/autotiler/Mnist/test_img/7/1366.pgm deleted file mode 100644 index c0f3ae588..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1369.pgm b/examples/autotiler/Mnist/test_img/7/1369.pgm deleted file mode 100644 index 77ada6ee7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1386.pgm b/examples/autotiler/Mnist/test_img/7/1386.pgm deleted file mode 100644 index 87c3ac38d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1401.pgm b/examples/autotiler/Mnist/test_img/7/1401.pgm deleted file mode 100644 index 3bc768926..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/141.pgm b/examples/autotiler/Mnist/test_img/7/141.pgm deleted file mode 100644 index 9f529ba2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/144.pgm b/examples/autotiler/Mnist/test_img/7/144.pgm deleted file mode 100644 index cb9083f87..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1477.pgm b/examples/autotiler/Mnist/test_img/7/1477.pgm deleted file mode 100644 index db6f5b144..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1494.pgm b/examples/autotiler/Mnist/test_img/7/1494.pgm deleted file mode 100644 index fc1631883..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1496.pgm b/examples/autotiler/Mnist/test_img/7/1496.pgm deleted file mode 100644 index 90b9610d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1497.pgm b/examples/autotiler/Mnist/test_img/7/1497.pgm deleted file mode 100644 index b64435c50..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1498.pgm b/examples/autotiler/Mnist/test_img/7/1498.pgm deleted file mode 100644 index 62b50e004..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1500.pgm b/examples/autotiler/Mnist/test_img/7/1500.pgm deleted file mode 100644 index 88129a301..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1505.pgm b/examples/autotiler/Mnist/test_img/7/1505.pgm deleted file mode 100644 index 73b6aa335..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1507.pgm b/examples/autotiler/Mnist/test_img/7/1507.pgm deleted file mode 100644 index 517c0425d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1520.pgm b/examples/autotiler/Mnist/test_img/7/1520.pgm deleted file mode 100644 index b7e6356e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1522.pgm b/examples/autotiler/Mnist/test_img/7/1522.pgm deleted file mode 100644 index 2d359fe17..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1540.pgm b/examples/autotiler/Mnist/test_img/7/1540.pgm deleted file mode 100644 index 108d583d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1543.pgm b/examples/autotiler/Mnist/test_img/7/1543.pgm deleted file mode 100644 index af110f3ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1544.pgm b/examples/autotiler/Mnist/test_img/7/1544.pgm deleted file mode 100644 index a04ce1770..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1563.pgm b/examples/autotiler/Mnist/test_img/7/1563.pgm deleted file mode 100644 index 2f36c91ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1564.pgm b/examples/autotiler/Mnist/test_img/7/1564.pgm deleted file mode 100644 index 38982b0b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1566.pgm b/examples/autotiler/Mnist/test_img/7/1566.pgm deleted file mode 100644 index 699ef8249..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1576.pgm b/examples/autotiler/Mnist/test_img/7/1576.pgm deleted file mode 100644 index be0338745..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1581.pgm b/examples/autotiler/Mnist/test_img/7/1581.pgm deleted file mode 100644 index 1ea966fba..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1581.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1592.pgm b/examples/autotiler/Mnist/test_img/7/1592.pgm deleted file mode 100644 index a5833aaed..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1595.pgm b/examples/autotiler/Mnist/test_img/7/1595.pgm deleted file mode 100644 index e8d29d297..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1606.pgm b/examples/autotiler/Mnist/test_img/7/1606.pgm deleted file mode 100644 index 4157ab4a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1624.pgm b/examples/autotiler/Mnist/test_img/7/1624.pgm deleted file mode 100644 index 08240b69f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1660.pgm b/examples/autotiler/Mnist/test_img/7/1660.pgm deleted file mode 100644 index 2ab3f54fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1671.pgm b/examples/autotiler/Mnist/test_img/7/1671.pgm deleted file mode 100644 index 81a721d4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1699.pgm b/examples/autotiler/Mnist/test_img/7/1699.pgm deleted file mode 100644 index 4b40af09c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/17.pgm b/examples/autotiler/Mnist/test_img/7/17.pgm deleted file mode 100644 index 69676a914..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/17.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1703.pgm b/examples/autotiler/Mnist/test_img/7/1703.pgm deleted file mode 100644 index f9717a997..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1705.pgm b/examples/autotiler/Mnist/test_img/7/1705.pgm deleted file mode 100644 index 565c821f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/171.pgm b/examples/autotiler/Mnist/test_img/7/171.pgm deleted file mode 100644 index 20800a097..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1710.pgm b/examples/autotiler/Mnist/test_img/7/1710.pgm deleted file mode 100644 index 5f887a2ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1716.pgm b/examples/autotiler/Mnist/test_img/7/1716.pgm deleted file mode 100644 index da2852414..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1718.pgm b/examples/autotiler/Mnist/test_img/7/1718.pgm deleted file mode 100644 index 610b637c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1721.pgm b/examples/autotiler/Mnist/test_img/7/1721.pgm deleted file mode 100644 index 43d2d474d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1734.pgm b/examples/autotiler/Mnist/test_img/7/1734.pgm deleted file mode 100644 index eb2b5981e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1741.pgm b/examples/autotiler/Mnist/test_img/7/1741.pgm deleted file mode 100644 index 51e423a42..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/175.pgm b/examples/autotiler/Mnist/test_img/7/175.pgm deleted file mode 100644 index b4c6dba45..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1750.pgm b/examples/autotiler/Mnist/test_img/7/1750.pgm deleted file mode 100644 index 5ac506454..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1754.pgm b/examples/autotiler/Mnist/test_img/7/1754.pgm deleted file mode 100644 index 28a394b44..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1770.pgm b/examples/autotiler/Mnist/test_img/7/1770.pgm deleted file mode 100644 index c165a0f82..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1772.pgm b/examples/autotiler/Mnist/test_img/7/1772.pgm deleted file mode 100644 index cc2fb201a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1776.pgm b/examples/autotiler/Mnist/test_img/7/1776.pgm deleted file mode 100644 index fee559b68..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1783.pgm b/examples/autotiler/Mnist/test_img/7/1783.pgm deleted file mode 100644 index e0f67ae68..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1784.pgm b/examples/autotiler/Mnist/test_img/7/1784.pgm deleted file mode 100644 index 87ae1e52d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1792.pgm b/examples/autotiler/Mnist/test_img/7/1792.pgm deleted file mode 100644 index a16f25cdd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1799.pgm b/examples/autotiler/Mnist/test_img/7/1799.pgm deleted file mode 100644 index 4e9ca9f33..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1805.pgm b/examples/autotiler/Mnist/test_img/7/1805.pgm deleted file mode 100644 index 1d249bf71..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1806.pgm b/examples/autotiler/Mnist/test_img/7/1806.pgm deleted file mode 100644 index 77bc7f405..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1809.pgm b/examples/autotiler/Mnist/test_img/7/1809.pgm deleted file mode 100644 index 3455d9bd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1814.pgm b/examples/autotiler/Mnist/test_img/7/1814.pgm deleted file mode 100644 index 20f619e10..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1848.pgm b/examples/autotiler/Mnist/test_img/7/1848.pgm deleted file mode 100644 index 1669fbbca..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1875.pgm b/examples/autotiler/Mnist/test_img/7/1875.pgm deleted file mode 100644 index f69fc97de..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1883.pgm b/examples/autotiler/Mnist/test_img/7/1883.pgm deleted file mode 100644 index 6d5f14f41..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1887.pgm b/examples/autotiler/Mnist/test_img/7/1887.pgm deleted file mode 100644 index 8d96f607c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1903.pgm b/examples/autotiler/Mnist/test_img/7/1903.pgm deleted file mode 100644 index f91af025f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1919.pgm b/examples/autotiler/Mnist/test_img/7/1919.pgm deleted file mode 100644 index 627e5f919..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1925.pgm b/examples/autotiler/Mnist/test_img/7/1925.pgm deleted file mode 100644 index 2267fa2fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1925.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1933.pgm b/examples/autotiler/Mnist/test_img/7/1933.pgm deleted file mode 100644 index ba7ac31ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1935.pgm b/examples/autotiler/Mnist/test_img/7/1935.pgm deleted file mode 100644 index 3635841be..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1941.pgm b/examples/autotiler/Mnist/test_img/7/1941.pgm deleted file mode 100644 index 8698179d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1949.pgm b/examples/autotiler/Mnist/test_img/7/1949.pgm deleted file mode 100644 index 736f28545..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1950.pgm b/examples/autotiler/Mnist/test_img/7/1950.pgm deleted file mode 100644 index 06d90e061..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1966.pgm b/examples/autotiler/Mnist/test_img/7/1966.pgm deleted file mode 100644 index c0f97ae82..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/1975.pgm b/examples/autotiler/Mnist/test_img/7/1975.pgm deleted file mode 100644 index 64f94cd20..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/1975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2016.pgm b/examples/autotiler/Mnist/test_img/7/2016.pgm deleted file mode 100644 index 1e555b67e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2024.pgm b/examples/autotiler/Mnist/test_img/7/2024.pgm deleted file mode 100644 index fac81b479..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2028.pgm b/examples/autotiler/Mnist/test_img/7/2028.pgm deleted file mode 100644 index a4eec3788..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2036.pgm b/examples/autotiler/Mnist/test_img/7/2036.pgm deleted file mode 100644 index df0dd1c9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2048.pgm b/examples/autotiler/Mnist/test_img/7/2048.pgm deleted file mode 100644 index 4dc1b8261..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2059.pgm b/examples/autotiler/Mnist/test_img/7/2059.pgm deleted file mode 100644 index e38e8f121..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2063.pgm b/examples/autotiler/Mnist/test_img/7/2063.pgm deleted file mode 100644 index 6234c5a13..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2070.pgm b/examples/autotiler/Mnist/test_img/7/2070.pgm deleted file mode 100644 index 0a1fcf4d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2091.pgm b/examples/autotiler/Mnist/test_img/7/2091.pgm deleted file mode 100644 index 96a3a1f3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2095.pgm b/examples/autotiler/Mnist/test_img/7/2095.pgm deleted file mode 100644 index 309955432..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2104.pgm b/examples/autotiler/Mnist/test_img/7/2104.pgm deleted file mode 100644 index d83954a08..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2115.pgm b/examples/autotiler/Mnist/test_img/7/2115.pgm deleted file mode 100644 index e605c4304..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2115.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2123.pgm b/examples/autotiler/Mnist/test_img/7/2123.pgm deleted file mode 100644 index 35b8baa2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2132.pgm b/examples/autotiler/Mnist/test_img/7/2132.pgm deleted file mode 100644 index 1cb923180..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2141.pgm b/examples/autotiler/Mnist/test_img/7/2141.pgm deleted file mode 100644 index fa0f25281..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2143.pgm b/examples/autotiler/Mnist/test_img/7/2143.pgm deleted file mode 100644 index 250bba877..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2167.pgm b/examples/autotiler/Mnist/test_img/7/2167.pgm deleted file mode 100644 index 005246739..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2167.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2187.pgm b/examples/autotiler/Mnist/test_img/7/2187.pgm deleted file mode 100644 index d184de157..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2193.pgm b/examples/autotiler/Mnist/test_img/7/2193.pgm deleted file mode 100644 index 5f3e33273..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2195.pgm b/examples/autotiler/Mnist/test_img/7/2195.pgm deleted file mode 100644 index 3de0d1e23..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2195.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/220.pgm b/examples/autotiler/Mnist/test_img/7/220.pgm deleted file mode 100644 index 743c79199..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2220.pgm b/examples/autotiler/Mnist/test_img/7/2220.pgm deleted file mode 100644 index 04cace907..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/223.pgm b/examples/autotiler/Mnist/test_img/7/223.pgm deleted file mode 100644 index 9d9aa0596..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2234.pgm b/examples/autotiler/Mnist/test_img/7/2234.pgm deleted file mode 100644 index 2c5bc7ac5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2238.pgm b/examples/autotiler/Mnist/test_img/7/2238.pgm deleted file mode 100644 index 34385b471..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2240.pgm b/examples/autotiler/Mnist/test_img/7/2240.pgm deleted file mode 100644 index ef4042c38..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2243.pgm b/examples/autotiler/Mnist/test_img/7/2243.pgm deleted file mode 100644 index ac1fefb1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2252.pgm b/examples/autotiler/Mnist/test_img/7/2252.pgm deleted file mode 100644 index fa2271e6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2262.pgm b/examples/autotiler/Mnist/test_img/7/2262.pgm deleted file mode 100644 index eaeb0748d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2268.pgm b/examples/autotiler/Mnist/test_img/7/2268.pgm deleted file mode 100644 index c789925ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2270.pgm b/examples/autotiler/Mnist/test_img/7/2270.pgm deleted file mode 100644 index 3e7d72b50..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2275.pgm b/examples/autotiler/Mnist/test_img/7/2275.pgm deleted file mode 100644 index 9bfec8e37..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2278.pgm b/examples/autotiler/Mnist/test_img/7/2278.pgm deleted file mode 100644 index a1d599dbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2285.pgm b/examples/autotiler/Mnist/test_img/7/2285.pgm deleted file mode 100644 index 4e970d9ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/229.pgm b/examples/autotiler/Mnist/test_img/7/229.pgm deleted file mode 100644 index 132ac8549..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2290.pgm b/examples/autotiler/Mnist/test_img/7/2290.pgm deleted file mode 100644 index 086da822f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2301.pgm b/examples/autotiler/Mnist/test_img/7/2301.pgm deleted file mode 100644 index 5a7089e7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2314.pgm b/examples/autotiler/Mnist/test_img/7/2314.pgm deleted file mode 100644 index 2e58d06e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2317.pgm b/examples/autotiler/Mnist/test_img/7/2317.pgm deleted file mode 100644 index 51f491f31..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2325.pgm b/examples/autotiler/Mnist/test_img/7/2325.pgm deleted file mode 100644 index 515649a63..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2332.pgm b/examples/autotiler/Mnist/test_img/7/2332.pgm deleted file mode 100644 index c98520b81..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2334.pgm b/examples/autotiler/Mnist/test_img/7/2334.pgm deleted file mode 100644 index ef9a4f8b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/234.pgm b/examples/autotiler/Mnist/test_img/7/234.pgm deleted file mode 100644 index 73d5d20ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2344.pgm b/examples/autotiler/Mnist/test_img/7/2344.pgm deleted file mode 100644 index 4ccd13294..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2365.pgm b/examples/autotiler/Mnist/test_img/7/2365.pgm deleted file mode 100644 index 46bd5aace..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2372.pgm b/examples/autotiler/Mnist/test_img/7/2372.pgm deleted file mode 100644 index e3a9a8a81..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2377.pgm b/examples/autotiler/Mnist/test_img/7/2377.pgm deleted file mode 100644 index 836c5c29a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2399.pgm b/examples/autotiler/Mnist/test_img/7/2399.pgm deleted file mode 100644 index 8f37f068b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2407.pgm b/examples/autotiler/Mnist/test_img/7/2407.pgm deleted file mode 100644 index 981ad24b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/243.pgm b/examples/autotiler/Mnist/test_img/7/243.pgm deleted file mode 100644 index b3b7006ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2442.pgm b/examples/autotiler/Mnist/test_img/7/2442.pgm deleted file mode 100644 index c94651ffb..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2463.pgm b/examples/autotiler/Mnist/test_img/7/2463.pgm deleted file mode 100644 index 80b89df76..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2474.pgm b/examples/autotiler/Mnist/test_img/7/2474.pgm deleted file mode 100644 index 042468940..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2480.pgm b/examples/autotiler/Mnist/test_img/7/2480.pgm deleted file mode 100644 index ea4dbcfd4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2482.pgm b/examples/autotiler/Mnist/test_img/7/2482.pgm deleted file mode 100644 index 19aed53fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2484.pgm b/examples/autotiler/Mnist/test_img/7/2484.pgm deleted file mode 100644 index fdc3ff023..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2484.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2490.pgm b/examples/autotiler/Mnist/test_img/7/2490.pgm deleted file mode 100644 index e184e628b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2505.pgm b/examples/autotiler/Mnist/test_img/7/2505.pgm deleted file mode 100644 index 07e277610..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2507.pgm b/examples/autotiler/Mnist/test_img/7/2507.pgm deleted file mode 100644 index e1f877012..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2513.pgm b/examples/autotiler/Mnist/test_img/7/2513.pgm deleted file mode 100644 index 9f3a2bc67..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2521.pgm b/examples/autotiler/Mnist/test_img/7/2521.pgm deleted file mode 100644 index 572074ed5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2523.pgm b/examples/autotiler/Mnist/test_img/7/2523.pgm deleted file mode 100644 index 8ea3adbb0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2539.pgm b/examples/autotiler/Mnist/test_img/7/2539.pgm deleted file mode 100644 index 955fe37ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/254.pgm b/examples/autotiler/Mnist/test_img/7/254.pgm deleted file mode 100644 index 9893d0004..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2547.pgm b/examples/autotiler/Mnist/test_img/7/2547.pgm deleted file mode 100644 index 5cb08f8b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/255.pgm b/examples/autotiler/Mnist/test_img/7/255.pgm deleted file mode 100644 index 632f025a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2563.pgm b/examples/autotiler/Mnist/test_img/7/2563.pgm deleted file mode 100644 index 71514c5ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2564.pgm b/examples/autotiler/Mnist/test_img/7/2564.pgm deleted file mode 100644 index 7553d3ef6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2565.pgm b/examples/autotiler/Mnist/test_img/7/2565.pgm deleted file mode 100644 index a3140be26..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2567.pgm b/examples/autotiler/Mnist/test_img/7/2567.pgm deleted file mode 100644 index 26f44ef05..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2577.pgm b/examples/autotiler/Mnist/test_img/7/2577.pgm deleted file mode 100644 index ad6aef45d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2578.pgm b/examples/autotiler/Mnist/test_img/7/2578.pgm deleted file mode 100644 index da1ed94a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2588.pgm b/examples/autotiler/Mnist/test_img/7/2588.pgm deleted file mode 100644 index a9f11f3df..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2591.pgm b/examples/autotiler/Mnist/test_img/7/2591.pgm deleted file mode 100644 index 95488918c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2595.pgm b/examples/autotiler/Mnist/test_img/7/2595.pgm deleted file mode 100644 index 04ffd193b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/26.pgm b/examples/autotiler/Mnist/test_img/7/26.pgm deleted file mode 100644 index b7a4b4f9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/26.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2605.pgm b/examples/autotiler/Mnist/test_img/7/2605.pgm deleted file mode 100644 index 73ee5c80e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2607.pgm b/examples/autotiler/Mnist/test_img/7/2607.pgm deleted file mode 100644 index 4c3b9c683..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2607.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/262.pgm b/examples/autotiler/Mnist/test_img/7/262.pgm deleted file mode 100644 index d29e01398..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2622.pgm b/examples/autotiler/Mnist/test_img/7/2622.pgm deleted file mode 100644 index a79a5b04a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2628.pgm b/examples/autotiler/Mnist/test_img/7/2628.pgm deleted file mode 100644 index 80f941804..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/263.pgm b/examples/autotiler/Mnist/test_img/7/263.pgm deleted file mode 100644 index da0736460..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2642.pgm b/examples/autotiler/Mnist/test_img/7/2642.pgm deleted file mode 100644 index d3fe41c3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2646.pgm b/examples/autotiler/Mnist/test_img/7/2646.pgm deleted file mode 100644 index f27e9593b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2646.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2665.pgm b/examples/autotiler/Mnist/test_img/7/2665.pgm deleted file mode 100644 index 6f6bf15a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2666.pgm b/examples/autotiler/Mnist/test_img/7/2666.pgm deleted file mode 100644 index 991ec6ee8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2671.pgm b/examples/autotiler/Mnist/test_img/7/2671.pgm deleted file mode 100644 index 640c4a7a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2695.pgm b/examples/autotiler/Mnist/test_img/7/2695.pgm deleted file mode 100644 index dd500aaaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2700.pgm b/examples/autotiler/Mnist/test_img/7/2700.pgm deleted file mode 100644 index a2d373c12..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2710.pgm b/examples/autotiler/Mnist/test_img/7/2710.pgm deleted file mode 100644 index b86ff363b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2730.pgm b/examples/autotiler/Mnist/test_img/7/2730.pgm deleted file mode 100644 index 488462bd3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2736.pgm b/examples/autotiler/Mnist/test_img/7/2736.pgm deleted file mode 100644 index 44c898caa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2749.pgm b/examples/autotiler/Mnist/test_img/7/2749.pgm deleted file mode 100644 index 30d08cb78..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2808.pgm b/examples/autotiler/Mnist/test_img/7/2808.pgm deleted file mode 100644 index 5d30ad52c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/282.pgm b/examples/autotiler/Mnist/test_img/7/282.pgm deleted file mode 100644 index 7897dd73f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2820.pgm b/examples/autotiler/Mnist/test_img/7/2820.pgm deleted file mode 100644 index 095e033fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2823.pgm b/examples/autotiler/Mnist/test_img/7/2823.pgm deleted file mode 100644 index 41964e284..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2833.pgm b/examples/autotiler/Mnist/test_img/7/2833.pgm deleted file mode 100644 index aea274778..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2837.pgm b/examples/autotiler/Mnist/test_img/7/2837.pgm deleted file mode 100644 index 4be781a2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2841.pgm b/examples/autotiler/Mnist/test_img/7/2841.pgm deleted file mode 100644 index 208f26c0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2843.pgm b/examples/autotiler/Mnist/test_img/7/2843.pgm deleted file mode 100644 index af1802bdf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2844.pgm b/examples/autotiler/Mnist/test_img/7/2844.pgm deleted file mode 100644 index c7a4aaf53..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2851.pgm b/examples/autotiler/Mnist/test_img/7/2851.pgm deleted file mode 100644 index a26e01ec5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2874.pgm b/examples/autotiler/Mnist/test_img/7/2874.pgm deleted file mode 100644 index 04490fae3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2887.pgm b/examples/autotiler/Mnist/test_img/7/2887.pgm deleted file mode 100644 index 81c2fa552..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2888.pgm b/examples/autotiler/Mnist/test_img/7/2888.pgm deleted file mode 100644 index 9162f011b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2890.pgm b/examples/autotiler/Mnist/test_img/7/2890.pgm deleted file mode 100644 index f9739abe0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2915.pgm b/examples/autotiler/Mnist/test_img/7/2915.pgm deleted file mode 100644 index 80fd4ecce..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2961.pgm b/examples/autotiler/Mnist/test_img/7/2961.pgm deleted file mode 100644 index 6328bb3c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2967.pgm b/examples/autotiler/Mnist/test_img/7/2967.pgm deleted file mode 100644 index 07ccf77ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2968.pgm b/examples/autotiler/Mnist/test_img/7/2968.pgm deleted file mode 100644 index 8b2a9b20e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/2993.pgm b/examples/autotiler/Mnist/test_img/7/2993.pgm deleted file mode 100644 index ddcef1068..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/2993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3009.pgm b/examples/autotiler/Mnist/test_img/7/3009.pgm deleted file mode 100644 index c390c86fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/301.pgm b/examples/autotiler/Mnist/test_img/7/301.pgm deleted file mode 100644 index aadee300c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3011.pgm b/examples/autotiler/Mnist/test_img/7/3011.pgm deleted file mode 100644 index bb680ddf3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3038.pgm b/examples/autotiler/Mnist/test_img/7/3038.pgm deleted file mode 100644 index d37fdee51..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3040.pgm b/examples/autotiler/Mnist/test_img/7/3040.pgm deleted file mode 100644 index f6996fb9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3054.pgm b/examples/autotiler/Mnist/test_img/7/3054.pgm deleted file mode 100644 index 0427de027..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3055.pgm b/examples/autotiler/Mnist/test_img/7/3055.pgm deleted file mode 100644 index af6c3bcf8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3059.pgm b/examples/autotiler/Mnist/test_img/7/3059.pgm deleted file mode 100644 index 1e1d2e49c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3061.pgm b/examples/autotiler/Mnist/test_img/7/3061.pgm deleted file mode 100644 index 91c601ebc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/307.pgm b/examples/autotiler/Mnist/test_img/7/307.pgm deleted file mode 100644 index d806ee8f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3079.pgm b/examples/autotiler/Mnist/test_img/7/3079.pgm deleted file mode 100644 index d11c7b9f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3084.pgm b/examples/autotiler/Mnist/test_img/7/3084.pgm deleted file mode 100644 index 9cc1d6914..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3098.pgm b/examples/autotiler/Mnist/test_img/7/3098.pgm deleted file mode 100644 index 2fce916f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3101.pgm b/examples/autotiler/Mnist/test_img/7/3101.pgm deleted file mode 100644 index b801db875..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3103.pgm b/examples/autotiler/Mnist/test_img/7/3103.pgm deleted file mode 100644 index 580c52bc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3107.pgm b/examples/autotiler/Mnist/test_img/7/3107.pgm deleted file mode 100644 index 4786afad0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3109.pgm b/examples/autotiler/Mnist/test_img/7/3109.pgm deleted file mode 100644 index 22448ca84..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3111.pgm b/examples/autotiler/Mnist/test_img/7/3111.pgm deleted file mode 100644 index 48545a035..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3122.pgm b/examples/autotiler/Mnist/test_img/7/3122.pgm deleted file mode 100644 index 48c4f807b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3125.pgm b/examples/autotiler/Mnist/test_img/7/3125.pgm deleted file mode 100644 index ffbc20fe7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3136.pgm b/examples/autotiler/Mnist/test_img/7/3136.pgm deleted file mode 100644 index 3ac1f3726..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3161.pgm b/examples/autotiler/Mnist/test_img/7/3161.pgm deleted file mode 100644 index 0021bd601..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3162.pgm b/examples/autotiler/Mnist/test_img/7/3162.pgm deleted file mode 100644 index 8d665c72a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3166.pgm b/examples/autotiler/Mnist/test_img/7/3166.pgm deleted file mode 100644 index bd598b739..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3184.pgm b/examples/autotiler/Mnist/test_img/7/3184.pgm deleted file mode 100644 index 83e7f04a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3189.pgm b/examples/autotiler/Mnist/test_img/7/3189.pgm deleted file mode 100644 index 0d4addff1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3192.pgm b/examples/autotiler/Mnist/test_img/7/3192.pgm deleted file mode 100644 index 5d7e082a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3202.pgm b/examples/autotiler/Mnist/test_img/7/3202.pgm deleted file mode 100644 index e7cf94f9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3208.pgm b/examples/autotiler/Mnist/test_img/7/3208.pgm deleted file mode 100644 index 039b60e1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3213.pgm b/examples/autotiler/Mnist/test_img/7/3213.pgm deleted file mode 100644 index 6bebe72a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3225.pgm b/examples/autotiler/Mnist/test_img/7/3225.pgm deleted file mode 100644 index 28643f622..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3236.pgm b/examples/autotiler/Mnist/test_img/7/3236.pgm deleted file mode 100644 index 9c199ae4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3262.pgm b/examples/autotiler/Mnist/test_img/7/3262.pgm deleted file mode 100644 index a16055259..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3277.pgm b/examples/autotiler/Mnist/test_img/7/3277.pgm deleted file mode 100644 index 532738da7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/328.pgm b/examples/autotiler/Mnist/test_img/7/328.pgm deleted file mode 100644 index 1c0d1722d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3292.pgm b/examples/autotiler/Mnist/test_img/7/3292.pgm deleted file mode 100644 index f91e64817..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3294.pgm b/examples/autotiler/Mnist/test_img/7/3294.pgm deleted file mode 100644 index 6c58be711..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3296.pgm b/examples/autotiler/Mnist/test_img/7/3296.pgm deleted file mode 100644 index 7ec9a2586..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3303.pgm b/examples/autotiler/Mnist/test_img/7/3303.pgm deleted file mode 100644 index 9ee9c3a40..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3308.pgm b/examples/autotiler/Mnist/test_img/7/3308.pgm deleted file mode 100644 index 463e6b531..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3309.pgm b/examples/autotiler/Mnist/test_img/7/3309.pgm deleted file mode 100644 index 7ac316b61..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3316.pgm b/examples/autotiler/Mnist/test_img/7/3316.pgm deleted file mode 100644 index f01f60194..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3328.pgm b/examples/autotiler/Mnist/test_img/7/3328.pgm deleted file mode 100644 index 5707b9587..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3329.pgm b/examples/autotiler/Mnist/test_img/7/3329.pgm deleted file mode 100644 index 56cb3d342..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3329.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3333.pgm b/examples/autotiler/Mnist/test_img/7/3333.pgm deleted file mode 100644 index ee63492be..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3349.pgm b/examples/autotiler/Mnist/test_img/7/3349.pgm deleted file mode 100644 index 3e789ed9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3352.pgm b/examples/autotiler/Mnist/test_img/7/3352.pgm deleted file mode 100644 index 35c7bef20..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3356.pgm b/examples/autotiler/Mnist/test_img/7/3356.pgm deleted file mode 100644 index 1d2091b6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3360.pgm b/examples/autotiler/Mnist/test_img/7/3360.pgm deleted file mode 100644 index 625e2e1d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3361.pgm b/examples/autotiler/Mnist/test_img/7/3361.pgm deleted file mode 100644 index 64b9ad3e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/337.pgm b/examples/autotiler/Mnist/test_img/7/337.pgm deleted file mode 100644 index 776a256a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/337.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3373.pgm b/examples/autotiler/Mnist/test_img/7/3373.pgm deleted file mode 100644 index 0fd4313e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3376.pgm b/examples/autotiler/Mnist/test_img/7/3376.pgm deleted file mode 100644 index bfd5cbe8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3378.pgm b/examples/autotiler/Mnist/test_img/7/3378.pgm deleted file mode 100644 index 639d7f9d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3399.pgm b/examples/autotiler/Mnist/test_img/7/3399.pgm deleted file mode 100644 index 9fbabad2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/34.pgm b/examples/autotiler/Mnist/test_img/7/34.pgm deleted file mode 100644 index 2415d3df6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/34.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3400.pgm b/examples/autotiler/Mnist/test_img/7/3400.pgm deleted file mode 100644 index cddf39aaa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3418.pgm b/examples/autotiler/Mnist/test_img/7/3418.pgm deleted file mode 100644 index b9194b473..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3423.pgm b/examples/autotiler/Mnist/test_img/7/3423.pgm deleted file mode 100644 index 5d19dcbe4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3425.pgm b/examples/autotiler/Mnist/test_img/7/3425.pgm deleted file mode 100644 index 0e7f95495..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3441.pgm b/examples/autotiler/Mnist/test_img/7/3441.pgm deleted file mode 100644 index b657e00d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3451.pgm b/examples/autotiler/Mnist/test_img/7/3451.pgm deleted file mode 100644 index f31650c37..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3453.pgm b/examples/autotiler/Mnist/test_img/7/3453.pgm deleted file mode 100644 index 253d95555..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3461.pgm b/examples/autotiler/Mnist/test_img/7/3461.pgm deleted file mode 100644 index be92177b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3461.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3494.pgm b/examples/autotiler/Mnist/test_img/7/3494.pgm deleted file mode 100644 index 9c9357fcf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3498.pgm b/examples/autotiler/Mnist/test_img/7/3498.pgm deleted file mode 100644 index 73b97f5b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3505.pgm b/examples/autotiler/Mnist/test_img/7/3505.pgm deleted file mode 100644 index 6219fafbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3525.pgm b/examples/autotiler/Mnist/test_img/7/3525.pgm deleted file mode 100644 index 49b155b33..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3535.pgm b/examples/autotiler/Mnist/test_img/7/3535.pgm deleted file mode 100644 index 732235326..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3572.pgm b/examples/autotiler/Mnist/test_img/7/3572.pgm deleted file mode 100644 index 4b9242ea5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3573.pgm b/examples/autotiler/Mnist/test_img/7/3573.pgm deleted file mode 100644 index ffd75d6e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3575.pgm b/examples/autotiler/Mnist/test_img/7/3575.pgm deleted file mode 100644 index 53d464320..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/358.pgm b/examples/autotiler/Mnist/test_img/7/358.pgm deleted file mode 100644 index 50ca06a4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3580.pgm b/examples/autotiler/Mnist/test_img/7/3580.pgm deleted file mode 100644 index 613540849..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3585.pgm b/examples/autotiler/Mnist/test_img/7/3585.pgm deleted file mode 100644 index bb8f21675..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3589.pgm b/examples/autotiler/Mnist/test_img/7/3589.pgm deleted file mode 100644 index 2565874de..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3594.pgm b/examples/autotiler/Mnist/test_img/7/3594.pgm deleted file mode 100644 index c508726fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/36.pgm b/examples/autotiler/Mnist/test_img/7/36.pgm deleted file mode 100644 index c37d3f8c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/36.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3604.pgm b/examples/autotiler/Mnist/test_img/7/3604.pgm deleted file mode 100644 index 6a5425f24..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3604.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3609.pgm b/examples/autotiler/Mnist/test_img/7/3609.pgm deleted file mode 100644 index 7dceab8df..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3616.pgm b/examples/autotiler/Mnist/test_img/7/3616.pgm deleted file mode 100644 index e2a7a1952..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3632.pgm b/examples/autotiler/Mnist/test_img/7/3632.pgm deleted file mode 100644 index 8230d8e68..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3637.pgm b/examples/autotiler/Mnist/test_img/7/3637.pgm deleted file mode 100644 index 578bc69f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3643.pgm b/examples/autotiler/Mnist/test_img/7/3643.pgm deleted file mode 100644 index d9c251765..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3643.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3647.pgm b/examples/autotiler/Mnist/test_img/7/3647.pgm deleted file mode 100644 index 56de0d794..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3656.pgm b/examples/autotiler/Mnist/test_img/7/3656.pgm deleted file mode 100644 index 69a30d084..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3667.pgm b/examples/autotiler/Mnist/test_img/7/3667.pgm deleted file mode 100644 index b23f90b09..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3692.pgm b/examples/autotiler/Mnist/test_img/7/3692.pgm deleted file mode 100644 index 1f8195d35..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/370.pgm b/examples/autotiler/Mnist/test_img/7/370.pgm deleted file mode 100644 index 3030e4a9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3713.pgm b/examples/autotiler/Mnist/test_img/7/3713.pgm deleted file mode 100644 index 97725b214..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3719.pgm b/examples/autotiler/Mnist/test_img/7/3719.pgm deleted file mode 100644 index 23a1dbcee..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3720.pgm b/examples/autotiler/Mnist/test_img/7/3720.pgm deleted file mode 100644 index af200c7ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3721.pgm b/examples/autotiler/Mnist/test_img/7/3721.pgm deleted file mode 100644 index 1b7b2132c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3730.pgm b/examples/autotiler/Mnist/test_img/7/3730.pgm deleted file mode 100644 index 6f13565e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3736.pgm b/examples/autotiler/Mnist/test_img/7/3736.pgm deleted file mode 100644 index 901cac629..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3743.pgm b/examples/autotiler/Mnist/test_img/7/3743.pgm deleted file mode 100644 index 621cfcbe4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3751.pgm b/examples/autotiler/Mnist/test_img/7/3751.pgm deleted file mode 100644 index a6b132a96..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3753.pgm b/examples/autotiler/Mnist/test_img/7/3753.pgm deleted file mode 100644 index 3bc7f6eba..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3767.pgm b/examples/autotiler/Mnist/test_img/7/3767.pgm deleted file mode 100644 index 845c60b06..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3799.pgm b/examples/autotiler/Mnist/test_img/7/3799.pgm deleted file mode 100644 index b765c6e30..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3808.pgm b/examples/autotiler/Mnist/test_img/7/3808.pgm deleted file mode 100644 index 36b24d34f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/383.pgm b/examples/autotiler/Mnist/test_img/7/383.pgm deleted file mode 100644 index 17f06ed60..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3836.pgm b/examples/autotiler/Mnist/test_img/7/3836.pgm deleted file mode 100644 index 07a705b20..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3838.pgm b/examples/autotiler/Mnist/test_img/7/3838.pgm deleted file mode 100644 index 628192684..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3848.pgm b/examples/autotiler/Mnist/test_img/7/3848.pgm deleted file mode 100644 index ceb0883ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3848.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3854.pgm b/examples/autotiler/Mnist/test_img/7/3854.pgm deleted file mode 100644 index c216ce77e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3878.pgm b/examples/autotiler/Mnist/test_img/7/3878.pgm deleted file mode 100644 index adffc8247..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3920.pgm b/examples/autotiler/Mnist/test_img/7/3920.pgm deleted file mode 100644 index 015cccb6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3936.pgm b/examples/autotiler/Mnist/test_img/7/3936.pgm deleted file mode 100644 index c7e2cac95..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3969.pgm b/examples/autotiler/Mnist/test_img/7/3969.pgm deleted file mode 100644 index 2963b86c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3969.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3973.pgm b/examples/autotiler/Mnist/test_img/7/3973.pgm deleted file mode 100644 index fd88b73bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3976.pgm b/examples/autotiler/Mnist/test_img/7/3976.pgm deleted file mode 100644 index 4fb324249..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3993.pgm b/examples/autotiler/Mnist/test_img/7/3993.pgm deleted file mode 100644 index 2edbd1609..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/3997.pgm b/examples/autotiler/Mnist/test_img/7/3997.pgm deleted file mode 100644 index 576ef36ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/3997.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4007.pgm b/examples/autotiler/Mnist/test_img/7/4007.pgm deleted file mode 100644 index 6db471615..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4027.pgm b/examples/autotiler/Mnist/test_img/7/4027.pgm deleted file mode 100644 index f937cfe86..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4028.pgm b/examples/autotiler/Mnist/test_img/7/4028.pgm deleted file mode 100644 index 1edd68300..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4049.pgm b/examples/autotiler/Mnist/test_img/7/4049.pgm deleted file mode 100644 index 4483d3e01..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4053.pgm b/examples/autotiler/Mnist/test_img/7/4053.pgm deleted file mode 100644 index fe2c2417e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4061.pgm b/examples/autotiler/Mnist/test_img/7/4061.pgm deleted file mode 100644 index ae01fa258..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4064.pgm b/examples/autotiler/Mnist/test_img/7/4064.pgm deleted file mode 100644 index 59e6cfc88..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4073.pgm b/examples/autotiler/Mnist/test_img/7/4073.pgm deleted file mode 100644 index 1dcfeb15a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4083.pgm b/examples/autotiler/Mnist/test_img/7/4083.pgm deleted file mode 100644 index ab9458c17..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4083.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4089.pgm b/examples/autotiler/Mnist/test_img/7/4089.pgm deleted file mode 100644 index 982574dc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4099.pgm b/examples/autotiler/Mnist/test_img/7/4099.pgm deleted file mode 100644 index a8263d5e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/41.pgm b/examples/autotiler/Mnist/test_img/7/41.pgm deleted file mode 100644 index d7bdf533e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/41.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/410.pgm b/examples/autotiler/Mnist/test_img/7/410.pgm deleted file mode 100644 index 37d7c556e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4102.pgm b/examples/autotiler/Mnist/test_img/7/4102.pgm deleted file mode 100644 index fd86834d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4107.pgm b/examples/autotiler/Mnist/test_img/7/4107.pgm deleted file mode 100644 index d02d797b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/411.pgm b/examples/autotiler/Mnist/test_img/7/411.pgm deleted file mode 100644 index 3aa86993f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4119.pgm b/examples/autotiler/Mnist/test_img/7/4119.pgm deleted file mode 100644 index de089717a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/413.pgm b/examples/autotiler/Mnist/test_img/7/413.pgm deleted file mode 100644 index 1a7b98fd6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4130.pgm b/examples/autotiler/Mnist/test_img/7/4130.pgm deleted file mode 100644 index 9d5079b3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4142.pgm b/examples/autotiler/Mnist/test_img/7/4142.pgm deleted file mode 100644 index 7990bb632..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4148.pgm b/examples/autotiler/Mnist/test_img/7/4148.pgm deleted file mode 100644 index 0c2380e5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/415.pgm b/examples/autotiler/Mnist/test_img/7/415.pgm deleted file mode 100644 index aa1c87dd2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4151.pgm b/examples/autotiler/Mnist/test_img/7/4151.pgm deleted file mode 100644 index 0036704b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4175.pgm b/examples/autotiler/Mnist/test_img/7/4175.pgm deleted file mode 100644 index 1b652335b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4199.pgm b/examples/autotiler/Mnist/test_img/7/4199.pgm deleted file mode 100644 index c355facdd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4200.pgm b/examples/autotiler/Mnist/test_img/7/4200.pgm deleted file mode 100644 index 7be83a279..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4214.pgm b/examples/autotiler/Mnist/test_img/7/4214.pgm deleted file mode 100644 index 0c080da18..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4215.pgm b/examples/autotiler/Mnist/test_img/7/4215.pgm deleted file mode 100644 index eaa3a1dd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4215.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4225.pgm b/examples/autotiler/Mnist/test_img/7/4225.pgm deleted file mode 100644 index c44acbfe0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4228.pgm b/examples/autotiler/Mnist/test_img/7/4228.pgm deleted file mode 100644 index 62c8dc045..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4238.pgm b/examples/autotiler/Mnist/test_img/7/4238.pgm deleted file mode 100644 index 710eb8c42..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4295.pgm b/examples/autotiler/Mnist/test_img/7/4295.pgm deleted file mode 100644 index 8c7e0b8dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4295.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4297.pgm b/examples/autotiler/Mnist/test_img/7/4297.pgm deleted file mode 100644 index 922601d70..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4322.pgm b/examples/autotiler/Mnist/test_img/7/4322.pgm deleted file mode 100644 index 1705bc970..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4357.pgm b/examples/autotiler/Mnist/test_img/7/4357.pgm deleted file mode 100644 index d8a7c8774..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/438.pgm b/examples/autotiler/Mnist/test_img/7/438.pgm deleted file mode 100644 index d7eaa50db..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4391.pgm b/examples/autotiler/Mnist/test_img/7/4391.pgm deleted file mode 100644 index 72324cf9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4400.pgm b/examples/autotiler/Mnist/test_img/7/4400.pgm deleted file mode 100644 index 64ce2c1d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4400.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4423.pgm b/examples/autotiler/Mnist/test_img/7/4423.pgm deleted file mode 100644 index cf1affd6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4433.pgm b/examples/autotiler/Mnist/test_img/7/4433.pgm deleted file mode 100644 index 975ec461a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4453.pgm b/examples/autotiler/Mnist/test_img/7/4453.pgm deleted file mode 100644 index e12af6af0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4453.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4459.pgm b/examples/autotiler/Mnist/test_img/7/4459.pgm deleted file mode 100644 index 6dbf90e50..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4460.pgm b/examples/autotiler/Mnist/test_img/7/4460.pgm deleted file mode 100644 index e3fabc47a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4467.pgm b/examples/autotiler/Mnist/test_img/7/4467.pgm deleted file mode 100644 index b0d19bbef..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4471.pgm b/examples/autotiler/Mnist/test_img/7/4471.pgm deleted file mode 100644 index 4ad7f62c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4474.pgm b/examples/autotiler/Mnist/test_img/7/4474.pgm deleted file mode 100644 index 65ac994b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4485.pgm b/examples/autotiler/Mnist/test_img/7/4485.pgm deleted file mode 100644 index 9dce5f3b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4487.pgm b/examples/autotiler/Mnist/test_img/7/4487.pgm deleted file mode 100644 index ad6bb297f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4493.pgm b/examples/autotiler/Mnist/test_img/7/4493.pgm deleted file mode 100644 index 5852a0415..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4498.pgm b/examples/autotiler/Mnist/test_img/7/4498.pgm deleted file mode 100644 index 6c964adfa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4522.pgm b/examples/autotiler/Mnist/test_img/7/4522.pgm deleted file mode 100644 index 0ebb1f74b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4530.pgm b/examples/autotiler/Mnist/test_img/7/4530.pgm deleted file mode 100644 index e1b6c844a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4539.pgm b/examples/autotiler/Mnist/test_img/7/4539.pgm deleted file mode 100644 index b6dc9a7c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4540.pgm b/examples/autotiler/Mnist/test_img/7/4540.pgm deleted file mode 100644 index cdced17f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4551.pgm b/examples/autotiler/Mnist/test_img/7/4551.pgm deleted file mode 100644 index f536c0f2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4561.pgm b/examples/autotiler/Mnist/test_img/7/4561.pgm deleted file mode 100644 index e377b1c84..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4566.pgm b/examples/autotiler/Mnist/test_img/7/4566.pgm deleted file mode 100644 index e5c437325..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4568.pgm b/examples/autotiler/Mnist/test_img/7/4568.pgm deleted file mode 100644 index 9c4cc7807..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4578.pgm b/examples/autotiler/Mnist/test_img/7/4578.pgm deleted file mode 100644 index 8186cbfa7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4593.pgm b/examples/autotiler/Mnist/test_img/7/4593.pgm deleted file mode 100644 index 41673ae9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4612.pgm b/examples/autotiler/Mnist/test_img/7/4612.pgm deleted file mode 100644 index 1770e6418..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4623.pgm b/examples/autotiler/Mnist/test_img/7/4623.pgm deleted file mode 100644 index 4f8837ab7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4624.pgm b/examples/autotiler/Mnist/test_img/7/4624.pgm deleted file mode 100644 index 24315118f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4654.pgm b/examples/autotiler/Mnist/test_img/7/4654.pgm deleted file mode 100644 index 1e560c5a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4658.pgm b/examples/autotiler/Mnist/test_img/7/4658.pgm deleted file mode 100644 index d0ffe097f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4660.pgm b/examples/autotiler/Mnist/test_img/7/4660.pgm deleted file mode 100644 index 573dbb116..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4669.pgm b/examples/autotiler/Mnist/test_img/7/4669.pgm deleted file mode 100644 index 88bb06ffc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4677.pgm b/examples/autotiler/Mnist/test_img/7/4677.pgm deleted file mode 100644 index a99400be3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4678.pgm b/examples/autotiler/Mnist/test_img/7/4678.pgm deleted file mode 100644 index b8ce903b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/468.pgm b/examples/autotiler/Mnist/test_img/7/468.pgm deleted file mode 100644 index c1b118bb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/468.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4690.pgm b/examples/autotiler/Mnist/test_img/7/4690.pgm deleted file mode 100644 index b51064530..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4693.pgm b/examples/autotiler/Mnist/test_img/7/4693.pgm deleted file mode 100644 index 092fccf1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4697.pgm b/examples/autotiler/Mnist/test_img/7/4697.pgm deleted file mode 100644 index 5016d7330..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4715.pgm b/examples/autotiler/Mnist/test_img/7/4715.pgm deleted file mode 100644 index 74649f1f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4715.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4730.pgm b/examples/autotiler/Mnist/test_img/7/4730.pgm deleted file mode 100644 index 5e3c48c4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4736.pgm b/examples/autotiler/Mnist/test_img/7/4736.pgm deleted file mode 100644 index a457af13d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4742.pgm b/examples/autotiler/Mnist/test_img/7/4742.pgm deleted file mode 100644 index 8659eb760..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4746.pgm b/examples/autotiler/Mnist/test_img/7/4746.pgm deleted file mode 100644 index fabdc56f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4747.pgm b/examples/autotiler/Mnist/test_img/7/4747.pgm deleted file mode 100644 index 8a10f6709..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4760.pgm b/examples/autotiler/Mnist/test_img/7/4760.pgm deleted file mode 100644 index 0d0eb9390..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4767.pgm b/examples/autotiler/Mnist/test_img/7/4767.pgm deleted file mode 100644 index 2032f1395..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4773.pgm b/examples/autotiler/Mnist/test_img/7/4773.pgm deleted file mode 100644 index 9ac4293cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4781.pgm b/examples/autotiler/Mnist/test_img/7/4781.pgm deleted file mode 100644 index d8c03857d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4784.pgm b/examples/autotiler/Mnist/test_img/7/4784.pgm deleted file mode 100644 index 9f4f78143..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4793.pgm b/examples/autotiler/Mnist/test_img/7/4793.pgm deleted file mode 100644 index 251b7a1c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4794.pgm b/examples/autotiler/Mnist/test_img/7/4794.pgm deleted file mode 100644 index f899c3eaa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4800.pgm b/examples/autotiler/Mnist/test_img/7/4800.pgm deleted file mode 100644 index ef6c03369..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4811.pgm b/examples/autotiler/Mnist/test_img/7/4811.pgm deleted file mode 100644 index 0ce31dc10..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4811.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4815.pgm b/examples/autotiler/Mnist/test_img/7/4815.pgm deleted file mode 100644 index bbb9e2d42..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/482.pgm b/examples/autotiler/Mnist/test_img/7/482.pgm deleted file mode 100644 index cf92d42c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4821.pgm b/examples/autotiler/Mnist/test_img/7/4821.pgm deleted file mode 100644 index fc1ae484f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4837.pgm b/examples/autotiler/Mnist/test_img/7/4837.pgm deleted file mode 100644 index 38317bce3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4855.pgm b/examples/autotiler/Mnist/test_img/7/4855.pgm deleted file mode 100644 index dfa8d7898..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4861.pgm b/examples/autotiler/Mnist/test_img/7/4861.pgm deleted file mode 100644 index 3332cdb14..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4865.pgm b/examples/autotiler/Mnist/test_img/7/4865.pgm deleted file mode 100644 index 67ab6d75e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4868.pgm b/examples/autotiler/Mnist/test_img/7/4868.pgm deleted file mode 100644 index 8188bcb8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4881.pgm b/examples/autotiler/Mnist/test_img/7/4881.pgm deleted file mode 100644 index f8742f69e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4886.pgm b/examples/autotiler/Mnist/test_img/7/4886.pgm deleted file mode 100644 index 637a0703c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4886.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4900.pgm b/examples/autotiler/Mnist/test_img/7/4900.pgm deleted file mode 100644 index dd154ad24..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4913.pgm b/examples/autotiler/Mnist/test_img/7/4913.pgm deleted file mode 100644 index 47d27f17e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4921.pgm b/examples/autotiler/Mnist/test_img/7/4921.pgm deleted file mode 100644 index 3887318ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4936.pgm b/examples/autotiler/Mnist/test_img/7/4936.pgm deleted file mode 100644 index 4058f44e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4938.pgm b/examples/autotiler/Mnist/test_img/7/4938.pgm deleted file mode 100644 index 103679856..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4938.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/494.pgm b/examples/autotiler/Mnist/test_img/7/494.pgm deleted file mode 100644 index 6c4f0f1d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4955.pgm b/examples/autotiler/Mnist/test_img/7/4955.pgm deleted file mode 100644 index 5f3b112d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4966.pgm b/examples/autotiler/Mnist/test_img/7/4966.pgm deleted file mode 100644 index 5fc03b441..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4970.pgm b/examples/autotiler/Mnist/test_img/7/4970.pgm deleted file mode 100644 index 0cc19182b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4991.pgm b/examples/autotiler/Mnist/test_img/7/4991.pgm deleted file mode 100644 index db6f918a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4993.pgm b/examples/autotiler/Mnist/test_img/7/4993.pgm deleted file mode 100644 index 71250cb26..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4993.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/4994.pgm b/examples/autotiler/Mnist/test_img/7/4994.pgm deleted file mode 100644 index 5f22af171..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/4994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5040.pgm b/examples/autotiler/Mnist/test_img/7/5040.pgm deleted file mode 100644 index 1be827928..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5048.pgm b/examples/autotiler/Mnist/test_img/7/5048.pgm deleted file mode 100644 index ec5024edf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5058.pgm b/examples/autotiler/Mnist/test_img/7/5058.pgm deleted file mode 100644 index a3bcf3d07..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5064.pgm b/examples/autotiler/Mnist/test_img/7/5064.pgm deleted file mode 100644 index 08826b477..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5071.pgm b/examples/autotiler/Mnist/test_img/7/5071.pgm deleted file mode 100644 index dc84f5c9c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5077.pgm b/examples/autotiler/Mnist/test_img/7/5077.pgm deleted file mode 100644 index ef1fbfe88..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5094.pgm b/examples/autotiler/Mnist/test_img/7/5094.pgm deleted file mode 100644 index 2eac3a809..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5097.pgm b/examples/autotiler/Mnist/test_img/7/5097.pgm deleted file mode 100644 index fbc155301..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/510.pgm b/examples/autotiler/Mnist/test_img/7/510.pgm deleted file mode 100644 index dee3a3cc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5107.pgm b/examples/autotiler/Mnist/test_img/7/5107.pgm deleted file mode 100644 index 1ac39f978..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5110.pgm b/examples/autotiler/Mnist/test_img/7/5110.pgm deleted file mode 100644 index c6eb063be..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5114.pgm b/examples/autotiler/Mnist/test_img/7/5114.pgm deleted file mode 100644 index 4fa6e8ef9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5121.pgm b/examples/autotiler/Mnist/test_img/7/5121.pgm deleted file mode 100644 index 78e5be2c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5122.pgm b/examples/autotiler/Mnist/test_img/7/5122.pgm deleted file mode 100644 index 02d6d0949..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5154.pgm b/examples/autotiler/Mnist/test_img/7/5154.pgm deleted file mode 100644 index b1361f1c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5162.pgm b/examples/autotiler/Mnist/test_img/7/5162.pgm deleted file mode 100644 index fe856d60a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5162.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5172.pgm b/examples/autotiler/Mnist/test_img/7/5172.pgm deleted file mode 100644 index b26b97f0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5177.pgm b/examples/autotiler/Mnist/test_img/7/5177.pgm deleted file mode 100644 index 541e4a3e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5179.pgm b/examples/autotiler/Mnist/test_img/7/5179.pgm deleted file mode 100644 index 71d47f50e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5180.pgm b/examples/autotiler/Mnist/test_img/7/5180.pgm deleted file mode 100644 index c77cf020c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5190.pgm b/examples/autotiler/Mnist/test_img/7/5190.pgm deleted file mode 100644 index d0d84fa79..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5205.pgm b/examples/autotiler/Mnist/test_img/7/5205.pgm deleted file mode 100644 index 4101cbc93..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/522.pgm b/examples/autotiler/Mnist/test_img/7/522.pgm deleted file mode 100644 index 4373e7188..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5234.pgm b/examples/autotiler/Mnist/test_img/7/5234.pgm deleted file mode 100644 index 878ffe8dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5238.pgm b/examples/autotiler/Mnist/test_img/7/5238.pgm deleted file mode 100644 index c3a48098b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5240.pgm b/examples/autotiler/Mnist/test_img/7/5240.pgm deleted file mode 100644 index 7d6b82102..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5246.pgm b/examples/autotiler/Mnist/test_img/7/5246.pgm deleted file mode 100644 index 34ff04413..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5261.pgm b/examples/autotiler/Mnist/test_img/7/5261.pgm deleted file mode 100644 index 3c7f40e3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5261.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5277.pgm b/examples/autotiler/Mnist/test_img/7/5277.pgm deleted file mode 100644 index cf17d83fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5287.pgm b/examples/autotiler/Mnist/test_img/7/5287.pgm deleted file mode 100644 index ec5c4e741..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5297.pgm b/examples/autotiler/Mnist/test_img/7/5297.pgm deleted file mode 100644 index 09d8436a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5310.pgm b/examples/autotiler/Mnist/test_img/7/5310.pgm deleted file mode 100644 index a961b4591..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5313.pgm b/examples/autotiler/Mnist/test_img/7/5313.pgm deleted file mode 100644 index f142b90f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5317.pgm b/examples/autotiler/Mnist/test_img/7/5317.pgm deleted file mode 100644 index 00f2b937c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5324.pgm b/examples/autotiler/Mnist/test_img/7/5324.pgm deleted file mode 100644 index 6f19456bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5326.pgm b/examples/autotiler/Mnist/test_img/7/5326.pgm deleted file mode 100644 index 79425d0ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5334.pgm b/examples/autotiler/Mnist/test_img/7/5334.pgm deleted file mode 100644 index 6b37356b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5363.pgm b/examples/autotiler/Mnist/test_img/7/5363.pgm deleted file mode 100644 index 6efcffc2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5365.pgm b/examples/autotiler/Mnist/test_img/7/5365.pgm deleted file mode 100644 index f4f97c5b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5365.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5371.pgm b/examples/autotiler/Mnist/test_img/7/5371.pgm deleted file mode 100644 index a1aa8ca7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5372.pgm b/examples/autotiler/Mnist/test_img/7/5372.pgm deleted file mode 100644 index 069656ea0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5402.pgm b/examples/autotiler/Mnist/test_img/7/5402.pgm deleted file mode 100644 index ef5a42044..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5412.pgm b/examples/autotiler/Mnist/test_img/7/5412.pgm deleted file mode 100644 index 7ff51631b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5412.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5422.pgm b/examples/autotiler/Mnist/test_img/7/5422.pgm deleted file mode 100644 index c3d762763..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5425.pgm b/examples/autotiler/Mnist/test_img/7/5425.pgm deleted file mode 100644 index 21068798e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5437.pgm b/examples/autotiler/Mnist/test_img/7/5437.pgm deleted file mode 100644 index e55b363e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5465.pgm b/examples/autotiler/Mnist/test_img/7/5465.pgm deleted file mode 100644 index dfb035ae6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5466.pgm b/examples/autotiler/Mnist/test_img/7/5466.pgm deleted file mode 100644 index a62e3daf6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5471.pgm b/examples/autotiler/Mnist/test_img/7/5471.pgm deleted file mode 100644 index b6998ccd5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5482.pgm b/examples/autotiler/Mnist/test_img/7/5482.pgm deleted file mode 100644 index 1d6bd15d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5482.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5485.pgm b/examples/autotiler/Mnist/test_img/7/5485.pgm deleted file mode 100644 index 748866fe7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5496.pgm b/examples/autotiler/Mnist/test_img/7/5496.pgm deleted file mode 100644 index d9fe16835..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5498.pgm b/examples/autotiler/Mnist/test_img/7/5498.pgm deleted file mode 100644 index e2a27b322..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5498.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/550.pgm b/examples/autotiler/Mnist/test_img/7/550.pgm deleted file mode 100644 index e83d0daee..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/551.pgm b/examples/autotiler/Mnist/test_img/7/551.pgm deleted file mode 100644 index 2916d1b87..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5512.pgm b/examples/autotiler/Mnist/test_img/7/5512.pgm deleted file mode 100644 index f19e8319a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5532.pgm b/examples/autotiler/Mnist/test_img/7/5532.pgm deleted file mode 100644 index 3ca338416..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5533.pgm b/examples/autotiler/Mnist/test_img/7/5533.pgm deleted file mode 100644 index dabe700cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/554.pgm b/examples/autotiler/Mnist/test_img/7/554.pgm deleted file mode 100644 index 1e9a8f9dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5540.pgm b/examples/autotiler/Mnist/test_img/7/5540.pgm deleted file mode 100644 index b29f747c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5540.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5549.pgm b/examples/autotiler/Mnist/test_img/7/5549.pgm deleted file mode 100644 index 2d8f3b35f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5549.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5551.pgm b/examples/autotiler/Mnist/test_img/7/5551.pgm deleted file mode 100644 index 2d5b099f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5551.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5560.pgm b/examples/autotiler/Mnist/test_img/7/5560.pgm deleted file mode 100644 index e5844c0db..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5563.pgm b/examples/autotiler/Mnist/test_img/7/5563.pgm deleted file mode 100644 index 15bc4df36..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/557.pgm b/examples/autotiler/Mnist/test_img/7/557.pgm deleted file mode 100644 index 059d7326e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5576.pgm b/examples/autotiler/Mnist/test_img/7/5576.pgm deleted file mode 100644 index 08aa37b6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5600.pgm b/examples/autotiler/Mnist/test_img/7/5600.pgm deleted file mode 100644 index c601bfce7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5610.pgm b/examples/autotiler/Mnist/test_img/7/5610.pgm deleted file mode 100644 index 5b10f1bb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5620.pgm b/examples/autotiler/Mnist/test_img/7/5620.pgm deleted file mode 100644 index 704df306e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5640.pgm b/examples/autotiler/Mnist/test_img/7/5640.pgm deleted file mode 100644 index bd130ac56..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5649.pgm b/examples/autotiler/Mnist/test_img/7/5649.pgm deleted file mode 100644 index b8fbf73d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5654.pgm b/examples/autotiler/Mnist/test_img/7/5654.pgm deleted file mode 100644 index 5826f458c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5655.pgm b/examples/autotiler/Mnist/test_img/7/5655.pgm deleted file mode 100644 index d474c9334..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5657.pgm b/examples/autotiler/Mnist/test_img/7/5657.pgm deleted file mode 100644 index ccc42531f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5663.pgm b/examples/autotiler/Mnist/test_img/7/5663.pgm deleted file mode 100644 index 51e989249..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5670.pgm b/examples/autotiler/Mnist/test_img/7/5670.pgm deleted file mode 100644 index 8adbae976..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5688.pgm b/examples/autotiler/Mnist/test_img/7/5688.pgm deleted file mode 100644 index 68ebca1c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5709.pgm b/examples/autotiler/Mnist/test_img/7/5709.pgm deleted file mode 100644 index 981160f26..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5714.pgm b/examples/autotiler/Mnist/test_img/7/5714.pgm deleted file mode 100644 index d690f4595..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5728.pgm b/examples/autotiler/Mnist/test_img/7/5728.pgm deleted file mode 100644 index 42c9e84a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5745.pgm b/examples/autotiler/Mnist/test_img/7/5745.pgm deleted file mode 100644 index 20ef0ae5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5751.pgm b/examples/autotiler/Mnist/test_img/7/5751.pgm deleted file mode 100644 index a459e3993..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5773.pgm b/examples/autotiler/Mnist/test_img/7/5773.pgm deleted file mode 100644 index 1d2ed9c91..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5789.pgm b/examples/autotiler/Mnist/test_img/7/5789.pgm deleted file mode 100644 index 16aebbc42..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/579.pgm b/examples/autotiler/Mnist/test_img/7/579.pgm deleted file mode 100644 index b04445ced..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5795.pgm b/examples/autotiler/Mnist/test_img/7/5795.pgm deleted file mode 100644 index fc6cf7a28..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5798.pgm b/examples/autotiler/Mnist/test_img/7/5798.pgm deleted file mode 100644 index e0eb10d03..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5808.pgm b/examples/autotiler/Mnist/test_img/7/5808.pgm deleted file mode 100644 index e2f4204c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5835.pgm b/examples/autotiler/Mnist/test_img/7/5835.pgm deleted file mode 100644 index aecc11bdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5845.pgm b/examples/autotiler/Mnist/test_img/7/5845.pgm deleted file mode 100644 index 2022613b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/585.pgm b/examples/autotiler/Mnist/test_img/7/585.pgm deleted file mode 100644 index 0ded44c43..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5854.pgm b/examples/autotiler/Mnist/test_img/7/5854.pgm deleted file mode 100644 index 4a0976f33..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5858.pgm b/examples/autotiler/Mnist/test_img/7/5858.pgm deleted file mode 100644 index 02a8a3f9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5861.pgm b/examples/autotiler/Mnist/test_img/7/5861.pgm deleted file mode 100644 index 7438c6a12..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5866.pgm b/examples/autotiler/Mnist/test_img/7/5866.pgm deleted file mode 100644 index d94f7137f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5887.pgm b/examples/autotiler/Mnist/test_img/7/5887.pgm deleted file mode 100644 index 75cf8f73a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5903.pgm b/examples/autotiler/Mnist/test_img/7/5903.pgm deleted file mode 100644 index 27cf886a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5906.pgm b/examples/autotiler/Mnist/test_img/7/5906.pgm deleted file mode 100644 index 833cd80dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5914.pgm b/examples/autotiler/Mnist/test_img/7/5914.pgm deleted file mode 100644 index e7f543044..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5939.pgm b/examples/autotiler/Mnist/test_img/7/5939.pgm deleted file mode 100644 index 283affa1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5949.pgm b/examples/autotiler/Mnist/test_img/7/5949.pgm deleted file mode 100644 index 77cc84cb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5959.pgm b/examples/autotiler/Mnist/test_img/7/5959.pgm deleted file mode 100644 index 4dfb0637a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5988.pgm b/examples/autotiler/Mnist/test_img/7/5988.pgm deleted file mode 100644 index 13f599353..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5992.pgm b/examples/autotiler/Mnist/test_img/7/5992.pgm deleted file mode 100644 index 652c8583d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/5999.pgm b/examples/autotiler/Mnist/test_img/7/5999.pgm deleted file mode 100644 index 2fef9de27..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/5999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/60.pgm b/examples/autotiler/Mnist/test_img/7/60.pgm deleted file mode 100644 index 2be2ef7cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/60.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6006.pgm b/examples/autotiler/Mnist/test_img/7/6006.pgm deleted file mode 100644 index f9954ff5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6007.pgm b/examples/autotiler/Mnist/test_img/7/6007.pgm deleted file mode 100644 index 0395fed5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6017.pgm b/examples/autotiler/Mnist/test_img/7/6017.pgm deleted file mode 100644 index 340002b9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6026.pgm b/examples/autotiler/Mnist/test_img/7/6026.pgm deleted file mode 100644 index ace157d12..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6048.pgm b/examples/autotiler/Mnist/test_img/7/6048.pgm deleted file mode 100644 index 0edf9870d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/605.pgm b/examples/autotiler/Mnist/test_img/7/605.pgm deleted file mode 100644 index 14695e67c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6050.pgm b/examples/autotiler/Mnist/test_img/7/6050.pgm deleted file mode 100644 index c1cb266b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6054.pgm b/examples/autotiler/Mnist/test_img/7/6054.pgm deleted file mode 100644 index 3c7271579..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6069.pgm b/examples/autotiler/Mnist/test_img/7/6069.pgm deleted file mode 100644 index c3b5e063e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6079.pgm b/examples/autotiler/Mnist/test_img/7/6079.pgm deleted file mode 100644 index 312e00d79..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6089.pgm b/examples/autotiler/Mnist/test_img/7/6089.pgm deleted file mode 100644 index 3e8062762..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6098.pgm b/examples/autotiler/Mnist/test_img/7/6098.pgm deleted file mode 100644 index 090f91e00..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6105.pgm b/examples/autotiler/Mnist/test_img/7/6105.pgm deleted file mode 100644 index e69fdc990..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6119.pgm b/examples/autotiler/Mnist/test_img/7/6119.pgm deleted file mode 100644 index 7fa5a551e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6121.pgm b/examples/autotiler/Mnist/test_img/7/6121.pgm deleted file mode 100644 index 5d5b57cce..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6147.pgm b/examples/autotiler/Mnist/test_img/7/6147.pgm deleted file mode 100644 index 96d1f81c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6149.pgm b/examples/autotiler/Mnist/test_img/7/6149.pgm deleted file mode 100644 index 7f8fa408e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6158.pgm b/examples/autotiler/Mnist/test_img/7/6158.pgm deleted file mode 100644 index 0597f4000..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6164.pgm b/examples/autotiler/Mnist/test_img/7/6164.pgm deleted file mode 100644 index a11ecff68..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/617.pgm b/examples/autotiler/Mnist/test_img/7/617.pgm deleted file mode 100644 index a0512012e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6170.pgm b/examples/autotiler/Mnist/test_img/7/6170.pgm deleted file mode 100644 index 0e5a235cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6171.pgm b/examples/autotiler/Mnist/test_img/7/6171.pgm deleted file mode 100644 index cca373d8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6171.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6188.pgm b/examples/autotiler/Mnist/test_img/7/6188.pgm deleted file mode 100644 index 77ea11a36..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6198.pgm b/examples/autotiler/Mnist/test_img/7/6198.pgm deleted file mode 100644 index ea8415518..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6208.pgm b/examples/autotiler/Mnist/test_img/7/6208.pgm deleted file mode 100644 index 3d551bfa0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6223.pgm b/examples/autotiler/Mnist/test_img/7/6223.pgm deleted file mode 100644 index bb0890836..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6242.pgm b/examples/autotiler/Mnist/test_img/7/6242.pgm deleted file mode 100644 index 9d903a7ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6243.pgm b/examples/autotiler/Mnist/test_img/7/6243.pgm deleted file mode 100644 index 822b0a3fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6253.pgm b/examples/autotiler/Mnist/test_img/7/6253.pgm deleted file mode 100644 index 888cab61c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/626.pgm b/examples/autotiler/Mnist/test_img/7/626.pgm deleted file mode 100644 index 4b754d005..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6263.pgm b/examples/autotiler/Mnist/test_img/7/6263.pgm deleted file mode 100644 index c73695cb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6267.pgm b/examples/autotiler/Mnist/test_img/7/6267.pgm deleted file mode 100644 index 5f62004e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6269.pgm b/examples/autotiler/Mnist/test_img/7/6269.pgm deleted file mode 100644 index 10c056645..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6292.pgm b/examples/autotiler/Mnist/test_img/7/6292.pgm deleted file mode 100644 index 3552aeb0b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6306.pgm b/examples/autotiler/Mnist/test_img/7/6306.pgm deleted file mode 100644 index f50a99233..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6307.pgm b/examples/autotiler/Mnist/test_img/7/6307.pgm deleted file mode 100644 index 43669e0ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6316.pgm b/examples/autotiler/Mnist/test_img/7/6316.pgm deleted file mode 100644 index ecd3dee80..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6326.pgm b/examples/autotiler/Mnist/test_img/7/6326.pgm deleted file mode 100644 index 72bc1558c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6335.pgm b/examples/autotiler/Mnist/test_img/7/6335.pgm deleted file mode 100644 index 97cd27687..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6335.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6339.pgm b/examples/autotiler/Mnist/test_img/7/6339.pgm deleted file mode 100644 index 738f6295e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6346.pgm b/examples/autotiler/Mnist/test_img/7/6346.pgm deleted file mode 100644 index eb23e3fe7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6346.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6353.pgm b/examples/autotiler/Mnist/test_img/7/6353.pgm deleted file mode 100644 index ea7d31cdd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/636.pgm b/examples/autotiler/Mnist/test_img/7/636.pgm deleted file mode 100644 index 03fb1308a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6360.pgm b/examples/autotiler/Mnist/test_img/7/6360.pgm deleted file mode 100644 index 67e1e103d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6361.pgm b/examples/autotiler/Mnist/test_img/7/6361.pgm deleted file mode 100644 index d48b0cf07..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6363.pgm b/examples/autotiler/Mnist/test_img/7/6363.pgm deleted file mode 100644 index ff0974950..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6364.pgm b/examples/autotiler/Mnist/test_img/7/6364.pgm deleted file mode 100644 index 220ca9344..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6366.pgm b/examples/autotiler/Mnist/test_img/7/6366.pgm deleted file mode 100644 index 5263a5859..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6366.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6377.pgm b/examples/autotiler/Mnist/test_img/7/6377.pgm deleted file mode 100644 index 44660ff00..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6380.pgm b/examples/autotiler/Mnist/test_img/7/6380.pgm deleted file mode 100644 index d875fdc90..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/64.pgm b/examples/autotiler/Mnist/test_img/7/64.pgm deleted file mode 100644 index c6f3b7754..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/64.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6434.pgm b/examples/autotiler/Mnist/test_img/7/6434.pgm deleted file mode 100644 index e679990e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6441.pgm b/examples/autotiler/Mnist/test_img/7/6441.pgm deleted file mode 100644 index 94ef20d01..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6449.pgm b/examples/autotiler/Mnist/test_img/7/6449.pgm deleted file mode 100644 index 6cf4a6b2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6452.pgm b/examples/autotiler/Mnist/test_img/7/6452.pgm deleted file mode 100644 index c17be3f01..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6458.pgm b/examples/autotiler/Mnist/test_img/7/6458.pgm deleted file mode 100644 index 79d78c139..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6471.pgm b/examples/autotiler/Mnist/test_img/7/6471.pgm deleted file mode 100644 index cd42c9010..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/649.pgm b/examples/autotiler/Mnist/test_img/7/649.pgm deleted file mode 100644 index c11e433a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6490.pgm b/examples/autotiler/Mnist/test_img/7/6490.pgm deleted file mode 100644 index 291de303f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6503.pgm b/examples/autotiler/Mnist/test_img/7/6503.pgm deleted file mode 100644 index 6cef90578..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/651.pgm b/examples/autotiler/Mnist/test_img/7/651.pgm deleted file mode 100644 index 8f1c98c12..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6539.pgm b/examples/autotiler/Mnist/test_img/7/6539.pgm deleted file mode 100644 index d3bd19b52..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6561.pgm b/examples/autotiler/Mnist/test_img/7/6561.pgm deleted file mode 100644 index ac259e1bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6576.pgm b/examples/autotiler/Mnist/test_img/7/6576.pgm deleted file mode 100644 index adf0d8b2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6577.pgm b/examples/autotiler/Mnist/test_img/7/6577.pgm deleted file mode 100644 index 21e37f20c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6577.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/658.pgm b/examples/autotiler/Mnist/test_img/7/658.pgm deleted file mode 100644 index 14fb68972..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6586.pgm b/examples/autotiler/Mnist/test_img/7/6586.pgm deleted file mode 100644 index 4c9ac4506..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6589.pgm b/examples/autotiler/Mnist/test_img/7/6589.pgm deleted file mode 100644 index 5424ebd76..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6599.pgm b/examples/autotiler/Mnist/test_img/7/6599.pgm deleted file mode 100644 index b8543cf67..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6606.pgm b/examples/autotiler/Mnist/test_img/7/6606.pgm deleted file mode 100644 index 6c56e8d69..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6609.pgm b/examples/autotiler/Mnist/test_img/7/6609.pgm deleted file mode 100644 index a8de0ec6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6619.pgm b/examples/autotiler/Mnist/test_img/7/6619.pgm deleted file mode 100644 index 8df56be7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6640.pgm b/examples/autotiler/Mnist/test_img/7/6640.pgm deleted file mode 100644 index d82459b83..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6648.pgm b/examples/autotiler/Mnist/test_img/7/6648.pgm deleted file mode 100644 index a296a3613..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6653.pgm b/examples/autotiler/Mnist/test_img/7/6653.pgm deleted file mode 100644 index f0443661c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6653.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/666.pgm b/examples/autotiler/Mnist/test_img/7/666.pgm deleted file mode 100644 index 0cce30e62..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6662.pgm b/examples/autotiler/Mnist/test_img/7/6662.pgm deleted file mode 100644 index af7bfb002..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6663.pgm b/examples/autotiler/Mnist/test_img/7/6663.pgm deleted file mode 100644 index ef742c088..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6666.pgm b/examples/autotiler/Mnist/test_img/7/6666.pgm deleted file mode 100644 index 995bbfca9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/667.pgm b/examples/autotiler/Mnist/test_img/7/667.pgm deleted file mode 100644 index 5b0e0669d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6674.pgm b/examples/autotiler/Mnist/test_img/7/6674.pgm deleted file mode 100644 index d08391335..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6679.pgm b/examples/autotiler/Mnist/test_img/7/6679.pgm deleted file mode 100644 index 22ca60438..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6684.pgm b/examples/autotiler/Mnist/test_img/7/6684.pgm deleted file mode 100644 index 096d52a9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6697.pgm b/examples/autotiler/Mnist/test_img/7/6697.pgm deleted file mode 100644 index 768d9e2c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6708.pgm b/examples/autotiler/Mnist/test_img/7/6708.pgm deleted file mode 100644 index 90b268b6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6724.pgm b/examples/autotiler/Mnist/test_img/7/6724.pgm deleted file mode 100644 index 8356426f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6730.pgm b/examples/autotiler/Mnist/test_img/7/6730.pgm deleted file mode 100644 index dd2b650b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6731.pgm b/examples/autotiler/Mnist/test_img/7/6731.pgm deleted file mode 100644 index a11ba714b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6741.pgm b/examples/autotiler/Mnist/test_img/7/6741.pgm deleted file mode 100644 index c2d4d9a85..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6756.pgm b/examples/autotiler/Mnist/test_img/7/6756.pgm deleted file mode 100644 index 26a60660f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/676.pgm b/examples/autotiler/Mnist/test_img/7/676.pgm deleted file mode 100644 index 154681efe..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6762.pgm b/examples/autotiler/Mnist/test_img/7/6762.pgm deleted file mode 100644 index 17a78a14b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6768.pgm b/examples/autotiler/Mnist/test_img/7/6768.pgm deleted file mode 100644 index 6282202c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6768.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/679.pgm b/examples/autotiler/Mnist/test_img/7/679.pgm deleted file mode 100644 index 76a545c30..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6791.pgm b/examples/autotiler/Mnist/test_img/7/6791.pgm deleted file mode 100644 index cb34b7028..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6805.pgm b/examples/autotiler/Mnist/test_img/7/6805.pgm deleted file mode 100644 index 2c146969a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6815.pgm b/examples/autotiler/Mnist/test_img/7/6815.pgm deleted file mode 100644 index c1dc844af..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6825.pgm b/examples/autotiler/Mnist/test_img/7/6825.pgm deleted file mode 100644 index ff0fc5e5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6830.pgm b/examples/autotiler/Mnist/test_img/7/6830.pgm deleted file mode 100644 index 78e2a75e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6830.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6837.pgm b/examples/autotiler/Mnist/test_img/7/6837.pgm deleted file mode 100644 index 9b696e0db..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/684.pgm b/examples/autotiler/Mnist/test_img/7/684.pgm deleted file mode 100644 index e46a95fec..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6845.pgm b/examples/autotiler/Mnist/test_img/7/6845.pgm deleted file mode 100644 index 6fa8e6ca4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6852.pgm b/examples/autotiler/Mnist/test_img/7/6852.pgm deleted file mode 100644 index cc3079dd3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6853.pgm b/examples/autotiler/Mnist/test_img/7/6853.pgm deleted file mode 100644 index 8f70b0420..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6855.pgm b/examples/autotiler/Mnist/test_img/7/6855.pgm deleted file mode 100644 index 916203f91..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6856.pgm b/examples/autotiler/Mnist/test_img/7/6856.pgm deleted file mode 100644 index b12986829..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6858.pgm b/examples/autotiler/Mnist/test_img/7/6858.pgm deleted file mode 100644 index 729fa9f6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6871.pgm b/examples/autotiler/Mnist/test_img/7/6871.pgm deleted file mode 100644 index 00c302c64..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6874.pgm b/examples/autotiler/Mnist/test_img/7/6874.pgm deleted file mode 100644 index cc81af5f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/689.pgm b/examples/autotiler/Mnist/test_img/7/689.pgm deleted file mode 100644 index e1654ff2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6934.pgm b/examples/autotiler/Mnist/test_img/7/6934.pgm deleted file mode 100644 index ccefdeb2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6944.pgm b/examples/autotiler/Mnist/test_img/7/6944.pgm deleted file mode 100644 index 9ea37bdde..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6944.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6954.pgm b/examples/autotiler/Mnist/test_img/7/6954.pgm deleted file mode 100644 index 0dde44533..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6960.pgm b/examples/autotiler/Mnist/test_img/7/6960.pgm deleted file mode 100644 index 8885ae1ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6963.pgm b/examples/autotiler/Mnist/test_img/7/6963.pgm deleted file mode 100644 index 84c55588e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6986.pgm b/examples/autotiler/Mnist/test_img/7/6986.pgm deleted file mode 100644 index 7e833ea20..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/6992.pgm b/examples/autotiler/Mnist/test_img/7/6992.pgm deleted file mode 100644 index 3d7f51387..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/6992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/70.pgm b/examples/autotiler/Mnist/test_img/7/70.pgm deleted file mode 100644 index ace6480e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/70.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/702.pgm b/examples/autotiler/Mnist/test_img/7/702.pgm deleted file mode 100644 index 9ff5d83e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7021.pgm b/examples/autotiler/Mnist/test_img/7/7021.pgm deleted file mode 100644 index ffd55b1c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7021.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7028.pgm b/examples/autotiler/Mnist/test_img/7/7028.pgm deleted file mode 100644 index 576235660..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/703.pgm b/examples/autotiler/Mnist/test_img/7/703.pgm deleted file mode 100644 index 65d7a44f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/703.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7030.pgm b/examples/autotiler/Mnist/test_img/7/7030.pgm deleted file mode 100644 index 77cfcbaac..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7032.pgm b/examples/autotiler/Mnist/test_img/7/7032.pgm deleted file mode 100644 index 364b22f19..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7041.pgm b/examples/autotiler/Mnist/test_img/7/7041.pgm deleted file mode 100644 index ed39f2e68..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/705.pgm b/examples/autotiler/Mnist/test_img/7/705.pgm deleted file mode 100644 index 32a515af3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7059.pgm b/examples/autotiler/Mnist/test_img/7/7059.pgm deleted file mode 100644 index edbf8d6e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7069.pgm b/examples/autotiler/Mnist/test_img/7/7069.pgm deleted file mode 100644 index 62ebfa83d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7079.pgm b/examples/autotiler/Mnist/test_img/7/7079.pgm deleted file mode 100644 index 3d61f710c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7082.pgm b/examples/autotiler/Mnist/test_img/7/7082.pgm deleted file mode 100644 index 961bf0a03..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7082.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7088.pgm b/examples/autotiler/Mnist/test_img/7/7088.pgm deleted file mode 100644 index ef129319f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7098.pgm b/examples/autotiler/Mnist/test_img/7/7098.pgm deleted file mode 100644 index e108c1e6b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7098.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7111.pgm b/examples/autotiler/Mnist/test_img/7/7111.pgm deleted file mode 100644 index 421d7ec01..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7124.pgm b/examples/autotiler/Mnist/test_img/7/7124.pgm deleted file mode 100644 index cf7bbe601..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7141.pgm b/examples/autotiler/Mnist/test_img/7/7141.pgm deleted file mode 100644 index 75e9a99ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7144.pgm b/examples/autotiler/Mnist/test_img/7/7144.pgm deleted file mode 100644 index 2c4dbfedd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7145.pgm b/examples/autotiler/Mnist/test_img/7/7145.pgm deleted file mode 100644 index 43c03b99f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7149.pgm b/examples/autotiler/Mnist/test_img/7/7149.pgm deleted file mode 100644 index 79aa68539..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7180.pgm b/examples/autotiler/Mnist/test_img/7/7180.pgm deleted file mode 100644 index cc5e2a21d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7180.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7189.pgm b/examples/autotiler/Mnist/test_img/7/7189.pgm deleted file mode 100644 index 3ac1b3f86..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7197.pgm b/examples/autotiler/Mnist/test_img/7/7197.pgm deleted file mode 100644 index a8fca81ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7204.pgm b/examples/autotiler/Mnist/test_img/7/7204.pgm deleted file mode 100644 index 8ea6bb2a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7219.pgm b/examples/autotiler/Mnist/test_img/7/7219.pgm deleted file mode 100644 index 679bdaee2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7230.pgm b/examples/autotiler/Mnist/test_img/7/7230.pgm deleted file mode 100644 index 01be76144..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7238.pgm b/examples/autotiler/Mnist/test_img/7/7238.pgm deleted file mode 100644 index 4657aa9ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/726.pgm b/examples/autotiler/Mnist/test_img/7/726.pgm deleted file mode 100644 index 8e8d4db12..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7260.pgm b/examples/autotiler/Mnist/test_img/7/7260.pgm deleted file mode 100644 index 8d09674aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7267.pgm b/examples/autotiler/Mnist/test_img/7/7267.pgm deleted file mode 100644 index 49c84cc39..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7268.pgm b/examples/autotiler/Mnist/test_img/7/7268.pgm deleted file mode 100644 index 32ba88788..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7276.pgm b/examples/autotiler/Mnist/test_img/7/7276.pgm deleted file mode 100644 index 1e3df5710..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7276.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7286.pgm b/examples/autotiler/Mnist/test_img/7/7286.pgm deleted file mode 100644 index 2c5853878..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7296.pgm b/examples/autotiler/Mnist/test_img/7/7296.pgm deleted file mode 100644 index 6d7f560f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/730.pgm b/examples/autotiler/Mnist/test_img/7/730.pgm deleted file mode 100644 index 74b077287..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7300.pgm b/examples/autotiler/Mnist/test_img/7/7300.pgm deleted file mode 100644 index 6d75e8c13..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7307.pgm b/examples/autotiler/Mnist/test_img/7/7307.pgm deleted file mode 100644 index 640090cc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7320.pgm b/examples/autotiler/Mnist/test_img/7/7320.pgm deleted file mode 100644 index f71124aaf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7334.pgm b/examples/autotiler/Mnist/test_img/7/7334.pgm deleted file mode 100644 index 03b409cf0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7355.pgm b/examples/autotiler/Mnist/test_img/7/7355.pgm deleted file mode 100644 index b2ad6bf1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7356.pgm b/examples/autotiler/Mnist/test_img/7/7356.pgm deleted file mode 100644 index 4b6ba7743..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7362.pgm b/examples/autotiler/Mnist/test_img/7/7362.pgm deleted file mode 100644 index ab55ce8c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7375.pgm b/examples/autotiler/Mnist/test_img/7/7375.pgm deleted file mode 100644 index be8fc75d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7390.pgm b/examples/autotiler/Mnist/test_img/7/7390.pgm deleted file mode 100644 index 9939415c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7392.pgm b/examples/autotiler/Mnist/test_img/7/7392.pgm deleted file mode 100644 index 0b3103dcf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7416.pgm b/examples/autotiler/Mnist/test_img/7/7416.pgm deleted file mode 100644 index b37334cf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7419.pgm b/examples/autotiler/Mnist/test_img/7/7419.pgm deleted file mode 100644 index 1aa0f3843..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7432.pgm b/examples/autotiler/Mnist/test_img/7/7432.pgm deleted file mode 100644 index 81fde673b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7439.pgm b/examples/autotiler/Mnist/test_img/7/7439.pgm deleted file mode 100644 index e25dc6071..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7445.pgm b/examples/autotiler/Mnist/test_img/7/7445.pgm deleted file mode 100644 index b4ba895a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7445.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/746.pgm b/examples/autotiler/Mnist/test_img/7/746.pgm deleted file mode 100644 index fb3de6431..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7460.pgm b/examples/autotiler/Mnist/test_img/7/7460.pgm deleted file mode 100644 index 8c7d4bccd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7467.pgm b/examples/autotiler/Mnist/test_img/7/7467.pgm deleted file mode 100644 index 658a3b822..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7477.pgm b/examples/autotiler/Mnist/test_img/7/7477.pgm deleted file mode 100644 index 1b3e29942..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7490.pgm b/examples/autotiler/Mnist/test_img/7/7490.pgm deleted file mode 100644 index 7e2de07e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7490.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7493.pgm b/examples/autotiler/Mnist/test_img/7/7493.pgm deleted file mode 100644 index a6cc04367..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/75.pgm b/examples/autotiler/Mnist/test_img/7/75.pgm deleted file mode 100644 index 65134cc42..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/75.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7504.pgm b/examples/autotiler/Mnist/test_img/7/7504.pgm deleted file mode 100644 index 279f794c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7513.pgm b/examples/autotiler/Mnist/test_img/7/7513.pgm deleted file mode 100644 index 5594564be..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7523.pgm b/examples/autotiler/Mnist/test_img/7/7523.pgm deleted file mode 100644 index ac99b995f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7533.pgm b/examples/autotiler/Mnist/test_img/7/7533.pgm deleted file mode 100644 index e0dbd7fe7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7533.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7538.pgm b/examples/autotiler/Mnist/test_img/7/7538.pgm deleted file mode 100644 index e77c6cf84..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7544.pgm b/examples/autotiler/Mnist/test_img/7/7544.pgm deleted file mode 100644 index 49e794e03..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/756.pgm b/examples/autotiler/Mnist/test_img/7/756.pgm deleted file mode 100644 index 5eef46fde..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7565.pgm b/examples/autotiler/Mnist/test_img/7/7565.pgm deleted file mode 100644 index d3d7acf67..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7573.pgm b/examples/autotiler/Mnist/test_img/7/7573.pgm deleted file mode 100644 index 1b9eae2df..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7584.pgm b/examples/autotiler/Mnist/test_img/7/7584.pgm deleted file mode 100644 index 361d86a15..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7598.pgm b/examples/autotiler/Mnist/test_img/7/7598.pgm deleted file mode 100644 index 1fe78df8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7605.pgm b/examples/autotiler/Mnist/test_img/7/7605.pgm deleted file mode 100644 index c6bb8c856..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7605.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7606.pgm b/examples/autotiler/Mnist/test_img/7/7606.pgm deleted file mode 100644 index 531f02cdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7614.pgm b/examples/autotiler/Mnist/test_img/7/7614.pgm deleted file mode 100644 index ab1071706..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7632.pgm b/examples/autotiler/Mnist/test_img/7/7632.pgm deleted file mode 100644 index 0e6f77bbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7645.pgm b/examples/autotiler/Mnist/test_img/7/7645.pgm deleted file mode 100644 index c17b72d4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7647.pgm b/examples/autotiler/Mnist/test_img/7/7647.pgm deleted file mode 100644 index 02b38713d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7648.pgm b/examples/autotiler/Mnist/test_img/7/7648.pgm deleted file mode 100644 index 7ca4065f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7650.pgm b/examples/autotiler/Mnist/test_img/7/7650.pgm deleted file mode 100644 index 9a053acba..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7654.pgm b/examples/autotiler/Mnist/test_img/7/7654.pgm deleted file mode 100644 index 410a4d547..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7677.pgm b/examples/autotiler/Mnist/test_img/7/7677.pgm deleted file mode 100644 index 04ab01049..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7677.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7695.pgm b/examples/autotiler/Mnist/test_img/7/7695.pgm deleted file mode 100644 index bc906f512..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7701.pgm b/examples/autotiler/Mnist/test_img/7/7701.pgm deleted file mode 100644 index 130a04303..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/771.pgm b/examples/autotiler/Mnist/test_img/7/771.pgm deleted file mode 100644 index a92bdfd21..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7711.pgm b/examples/autotiler/Mnist/test_img/7/7711.pgm deleted file mode 100644 index fde22481f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7734.pgm b/examples/autotiler/Mnist/test_img/7/7734.pgm deleted file mode 100644 index 25e1e57d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7744.pgm b/examples/autotiler/Mnist/test_img/7/7744.pgm deleted file mode 100644 index db93a4c3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7754.pgm b/examples/autotiler/Mnist/test_img/7/7754.pgm deleted file mode 100644 index e62325689..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7757.pgm b/examples/autotiler/Mnist/test_img/7/7757.pgm deleted file mode 100644 index 5e49c086f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7760.pgm b/examples/autotiler/Mnist/test_img/7/7760.pgm deleted file mode 100644 index 5bfce52b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7766.pgm b/examples/autotiler/Mnist/test_img/7/7766.pgm deleted file mode 100644 index 38e409989..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7766.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7796.pgm b/examples/autotiler/Mnist/test_img/7/7796.pgm deleted file mode 100644 index 8ea8b809f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7801.pgm b/examples/autotiler/Mnist/test_img/7/7801.pgm deleted file mode 100644 index e41d7f22c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7825.pgm b/examples/autotiler/Mnist/test_img/7/7825.pgm deleted file mode 100644 index 3ed77ad85..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7844.pgm b/examples/autotiler/Mnist/test_img/7/7844.pgm deleted file mode 100644 index cf8c81e26..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7852.pgm b/examples/autotiler/Mnist/test_img/7/7852.pgm deleted file mode 100644 index 3d8549102..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7861.pgm b/examples/autotiler/Mnist/test_img/7/7861.pgm deleted file mode 100644 index a0ca71fbc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7865.pgm b/examples/autotiler/Mnist/test_img/7/7865.pgm deleted file mode 100644 index d8f744204..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7865.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7877.pgm b/examples/autotiler/Mnist/test_img/7/7877.pgm deleted file mode 100644 index 9fc19d0d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/79.pgm b/examples/autotiler/Mnist/test_img/7/79.pgm deleted file mode 100644 index d9dce9db7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/79.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7902.pgm b/examples/autotiler/Mnist/test_img/7/7902.pgm deleted file mode 100644 index fe015b41d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7902.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7903.pgm b/examples/autotiler/Mnist/test_img/7/7903.pgm deleted file mode 100644 index d898022f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7908.pgm b/examples/autotiler/Mnist/test_img/7/7908.pgm deleted file mode 100644 index 9ee533917..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7912.pgm b/examples/autotiler/Mnist/test_img/7/7912.pgm deleted file mode 100644 index 04fe22b35..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7915.pgm b/examples/autotiler/Mnist/test_img/7/7915.pgm deleted file mode 100644 index 77faccfde..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7924.pgm b/examples/autotiler/Mnist/test_img/7/7924.pgm deleted file mode 100644 index 7f0a2e908..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7927.pgm b/examples/autotiler/Mnist/test_img/7/7927.pgm deleted file mode 100644 index a1906ee94..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7940.pgm b/examples/autotiler/Mnist/test_img/7/7940.pgm deleted file mode 100644 index 92e2ef9d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7950.pgm b/examples/autotiler/Mnist/test_img/7/7950.pgm deleted file mode 100644 index f13dff334..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7960.pgm b/examples/autotiler/Mnist/test_img/7/7960.pgm deleted file mode 100644 index ff7f2475b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7966.pgm b/examples/autotiler/Mnist/test_img/7/7966.pgm deleted file mode 100644 index 6aa9e25a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7978.pgm b/examples/autotiler/Mnist/test_img/7/7978.pgm deleted file mode 100644 index 51c77dc76..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7985.pgm b/examples/autotiler/Mnist/test_img/7/7985.pgm deleted file mode 100644 index 857a0a28f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/7998.pgm b/examples/autotiler/Mnist/test_img/7/7998.pgm deleted file mode 100644 index 8f8f27ed2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/7998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/80.pgm b/examples/autotiler/Mnist/test_img/7/80.pgm deleted file mode 100644 index f292a01f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/80.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8003.pgm b/examples/autotiler/Mnist/test_img/7/8003.pgm deleted file mode 100644 index a3eccb537..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8008.pgm b/examples/autotiler/Mnist/test_img/7/8008.pgm deleted file mode 100644 index c06dcbc06..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8030.pgm b/examples/autotiler/Mnist/test_img/7/8030.pgm deleted file mode 100644 index 1a95a1a39..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8043.pgm b/examples/autotiler/Mnist/test_img/7/8043.pgm deleted file mode 100644 index 03d486c17..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8052.pgm b/examples/autotiler/Mnist/test_img/7/8052.pgm deleted file mode 100644 index 560ced626..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8064.pgm b/examples/autotiler/Mnist/test_img/7/8064.pgm deleted file mode 100644 index 4b4311eac..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8074.pgm b/examples/autotiler/Mnist/test_img/7/8074.pgm deleted file mode 100644 index 98880ea0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/810.pgm b/examples/autotiler/Mnist/test_img/7/810.pgm deleted file mode 100644 index c16e23416..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/810.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8106.pgm b/examples/autotiler/Mnist/test_img/7/8106.pgm deleted file mode 100644 index ae32ff716..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8110.pgm b/examples/autotiler/Mnist/test_img/7/8110.pgm deleted file mode 100644 index d7a5a7569..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8124.pgm b/examples/autotiler/Mnist/test_img/7/8124.pgm deleted file mode 100644 index 6b20a87d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8134.pgm b/examples/autotiler/Mnist/test_img/7/8134.pgm deleted file mode 100644 index bf9c1f614..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8144.pgm b/examples/autotiler/Mnist/test_img/7/8144.pgm deleted file mode 100644 index 4f8903932..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8151.pgm b/examples/autotiler/Mnist/test_img/7/8151.pgm deleted file mode 100644 index 4587d6400..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8173.pgm b/examples/autotiler/Mnist/test_img/7/8173.pgm deleted file mode 100644 index a62f4d389..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8175.pgm b/examples/autotiler/Mnist/test_img/7/8175.pgm deleted file mode 100644 index 537f95a50..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8175.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8188.pgm b/examples/autotiler/Mnist/test_img/7/8188.pgm deleted file mode 100644 index df250331c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8190.pgm b/examples/autotiler/Mnist/test_img/7/8190.pgm deleted file mode 100644 index 11739e29a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8202.pgm b/examples/autotiler/Mnist/test_img/7/8202.pgm deleted file mode 100644 index b353b08ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8203.pgm b/examples/autotiler/Mnist/test_img/7/8203.pgm deleted file mode 100644 index 9e8469e92..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8218.pgm b/examples/autotiler/Mnist/test_img/7/8218.pgm deleted file mode 100644 index 3f4da059e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/822.pgm b/examples/autotiler/Mnist/test_img/7/822.pgm deleted file mode 100644 index 1f0d1a99e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8234.pgm b/examples/autotiler/Mnist/test_img/7/8234.pgm deleted file mode 100644 index badcc9d73..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8248.pgm b/examples/autotiler/Mnist/test_img/7/8248.pgm deleted file mode 100644 index 9b1e5c2ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/825.pgm b/examples/autotiler/Mnist/test_img/7/825.pgm deleted file mode 100644 index d4399d2f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8257.pgm b/examples/autotiler/Mnist/test_img/7/8257.pgm deleted file mode 100644 index cc597f18b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8265.pgm b/examples/autotiler/Mnist/test_img/7/8265.pgm deleted file mode 100644 index 3bcd54ca7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8282.pgm b/examples/autotiler/Mnist/test_img/7/8282.pgm deleted file mode 100644 index 29983ddc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8284.pgm b/examples/autotiler/Mnist/test_img/7/8284.pgm deleted file mode 100644 index 3ce3ae0d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8285.pgm b/examples/autotiler/Mnist/test_img/7/8285.pgm deleted file mode 100644 index a2b4a5d54..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/83.pgm b/examples/autotiler/Mnist/test_img/7/83.pgm deleted file mode 100644 index 071ef5a23..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/83.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8302.pgm b/examples/autotiler/Mnist/test_img/7/8302.pgm deleted file mode 100644 index a041005a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8304.pgm b/examples/autotiler/Mnist/test_img/7/8304.pgm deleted file mode 100644 index 9c99fada8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8313.pgm b/examples/autotiler/Mnist/test_img/7/8313.pgm deleted file mode 100644 index eafb2a596..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8316.pgm b/examples/autotiler/Mnist/test_img/7/8316.pgm deleted file mode 100644 index 51c032c5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/832.pgm b/examples/autotiler/Mnist/test_img/7/832.pgm deleted file mode 100644 index 599bb477a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/832.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8321.pgm b/examples/autotiler/Mnist/test_img/7/8321.pgm deleted file mode 100644 index 4ec92b649..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8350.pgm b/examples/autotiler/Mnist/test_img/7/8350.pgm deleted file mode 100644 index 88652bd4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8350.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8356.pgm b/examples/autotiler/Mnist/test_img/7/8356.pgm deleted file mode 100644 index 5d6e8afc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8356.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8364.pgm b/examples/autotiler/Mnist/test_img/7/8364.pgm deleted file mode 100644 index 9e26fdb76..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8375.pgm b/examples/autotiler/Mnist/test_img/7/8375.pgm deleted file mode 100644 index 6d5d78d53..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8387.pgm b/examples/autotiler/Mnist/test_img/7/8387.pgm deleted file mode 100644 index 45476a1f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8391.pgm b/examples/autotiler/Mnist/test_img/7/8391.pgm deleted file mode 100644 index 0f994e6b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8398.pgm b/examples/autotiler/Mnist/test_img/7/8398.pgm deleted file mode 100644 index 82c6e0a22..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8401.pgm b/examples/autotiler/Mnist/test_img/7/8401.pgm deleted file mode 100644 index 680592e5a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8402.pgm b/examples/autotiler/Mnist/test_img/7/8402.pgm deleted file mode 100644 index 91adb9e03..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8403.pgm b/examples/autotiler/Mnist/test_img/7/8403.pgm deleted file mode 100644 index 3fad8ed53..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/841.pgm b/examples/autotiler/Mnist/test_img/7/841.pgm deleted file mode 100644 index 2b5ca01b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8417.pgm b/examples/autotiler/Mnist/test_img/7/8417.pgm deleted file mode 100644 index 3351b4daa..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/842.pgm b/examples/autotiler/Mnist/test_img/7/842.pgm deleted file mode 100644 index f98af394e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8421.pgm b/examples/autotiler/Mnist/test_img/7/8421.pgm deleted file mode 100644 index 9855cca35..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8421.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8428.pgm b/examples/autotiler/Mnist/test_img/7/8428.pgm deleted file mode 100644 index 59c0cf558..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8455.pgm b/examples/autotiler/Mnist/test_img/7/8455.pgm deleted file mode 100644 index 247a9d332..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/846.pgm b/examples/autotiler/Mnist/test_img/7/846.pgm deleted file mode 100644 index 06c97c83f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8465.pgm b/examples/autotiler/Mnist/test_img/7/8465.pgm deleted file mode 100644 index 94b758001..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8475.pgm b/examples/autotiler/Mnist/test_img/7/8475.pgm deleted file mode 100644 index e4f261ac4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8475.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8480.pgm b/examples/autotiler/Mnist/test_img/7/8480.pgm deleted file mode 100644 index 63f315403..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8497.pgm b/examples/autotiler/Mnist/test_img/7/8497.pgm deleted file mode 100644 index 7d02d2e0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8510.pgm b/examples/autotiler/Mnist/test_img/7/8510.pgm deleted file mode 100644 index 393a53cef..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8510.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8512.pgm b/examples/autotiler/Mnist/test_img/7/8512.pgm deleted file mode 100644 index 680bd869f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8519.pgm b/examples/autotiler/Mnist/test_img/7/8519.pgm deleted file mode 100644 index e03e06773..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/852.pgm b/examples/autotiler/Mnist/test_img/7/852.pgm deleted file mode 100644 index 919679da6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8525.pgm b/examples/autotiler/Mnist/test_img/7/8525.pgm deleted file mode 100644 index b3e0b628b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/853.pgm b/examples/autotiler/Mnist/test_img/7/853.pgm deleted file mode 100644 index 44767168e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8541.pgm b/examples/autotiler/Mnist/test_img/7/8541.pgm deleted file mode 100644 index cd1611030..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8555.pgm b/examples/autotiler/Mnist/test_img/7/8555.pgm deleted file mode 100644 index 7a2eebd15..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8565.pgm b/examples/autotiler/Mnist/test_img/7/8565.pgm deleted file mode 100644 index 131a425ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8573.pgm b/examples/autotiler/Mnist/test_img/7/8573.pgm deleted file mode 100644 index 73c6259cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/859.pgm b/examples/autotiler/Mnist/test_img/7/859.pgm deleted file mode 100644 index c34fdd7b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8591.pgm b/examples/autotiler/Mnist/test_img/7/8591.pgm deleted file mode 100644 index 04008ecbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/86.pgm b/examples/autotiler/Mnist/test_img/7/86.pgm deleted file mode 100644 index a69adcb7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/86.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8606.pgm b/examples/autotiler/Mnist/test_img/7/8606.pgm deleted file mode 100644 index 254f7f95a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8608.pgm b/examples/autotiler/Mnist/test_img/7/8608.pgm deleted file mode 100644 index 8c6e0a075..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8617.pgm b/examples/autotiler/Mnist/test_img/7/8617.pgm deleted file mode 100644 index e8dd4fc6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8620.pgm b/examples/autotiler/Mnist/test_img/7/8620.pgm deleted file mode 100644 index b95965cc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8631.pgm b/examples/autotiler/Mnist/test_img/7/8631.pgm deleted file mode 100644 index 66f39f003..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8638.pgm b/examples/autotiler/Mnist/test_img/7/8638.pgm deleted file mode 100644 index 24eced97a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8641.pgm b/examples/autotiler/Mnist/test_img/7/8641.pgm deleted file mode 100644 index 04c6b52a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8651.pgm b/examples/autotiler/Mnist/test_img/7/8651.pgm deleted file mode 100644 index 342fab54d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8654.pgm b/examples/autotiler/Mnist/test_img/7/8654.pgm deleted file mode 100644 index a8bd9fcf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8678.pgm b/examples/autotiler/Mnist/test_img/7/8678.pgm deleted file mode 100644 index 115a07231..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8688.pgm b/examples/autotiler/Mnist/test_img/7/8688.pgm deleted file mode 100644 index f6842eaba..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8688.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8698.pgm b/examples/autotiler/Mnist/test_img/7/8698.pgm deleted file mode 100644 index b2628c9da..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8698.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8718.pgm b/examples/autotiler/Mnist/test_img/7/8718.pgm deleted file mode 100644 index 047e64e55..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8727.pgm b/examples/autotiler/Mnist/test_img/7/8727.pgm deleted file mode 100644 index c460e4562..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8733.pgm b/examples/autotiler/Mnist/test_img/7/8733.pgm deleted file mode 100644 index 39d26c424..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8734.pgm b/examples/autotiler/Mnist/test_img/7/8734.pgm deleted file mode 100644 index 113a41b38..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8736.pgm b/examples/autotiler/Mnist/test_img/7/8736.pgm deleted file mode 100644 index 6a08c6700..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8742.pgm b/examples/autotiler/Mnist/test_img/7/8742.pgm deleted file mode 100644 index ee488112d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8749.pgm b/examples/autotiler/Mnist/test_img/7/8749.pgm deleted file mode 100644 index 0af5d54e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8767.pgm b/examples/autotiler/Mnist/test_img/7/8767.pgm deleted file mode 100644 index 911b77b12..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8786.pgm b/examples/autotiler/Mnist/test_img/7/8786.pgm deleted file mode 100644 index be34ddf5f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8791.pgm b/examples/autotiler/Mnist/test_img/7/8791.pgm deleted file mode 100644 index 525fa2f48..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/880.pgm b/examples/autotiler/Mnist/test_img/7/880.pgm deleted file mode 100644 index 6dee667c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8805.pgm b/examples/autotiler/Mnist/test_img/7/8805.pgm deleted file mode 100644 index 23789a1b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8815.pgm b/examples/autotiler/Mnist/test_img/7/8815.pgm deleted file mode 100644 index 03eea40d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8815.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8825.pgm b/examples/autotiler/Mnist/test_img/7/8825.pgm deleted file mode 100644 index 2a92a2b16..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8833.pgm b/examples/autotiler/Mnist/test_img/7/8833.pgm deleted file mode 100644 index 245b08308..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8837.pgm b/examples/autotiler/Mnist/test_img/7/8837.pgm deleted file mode 100644 index 5dcf6e125..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8871.pgm b/examples/autotiler/Mnist/test_img/7/8871.pgm deleted file mode 100644 index 326fe3417..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8874.pgm b/examples/autotiler/Mnist/test_img/7/8874.pgm deleted file mode 100644 index 107935bf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8883.pgm b/examples/autotiler/Mnist/test_img/7/8883.pgm deleted file mode 100644 index 5792a759d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8885.pgm b/examples/autotiler/Mnist/test_img/7/8885.pgm deleted file mode 100644 index 9f78233dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8891.pgm b/examples/autotiler/Mnist/test_img/7/8891.pgm deleted file mode 100644 index fefe654a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8904.pgm b/examples/autotiler/Mnist/test_img/7/8904.pgm deleted file mode 100644 index efc09b0e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8911.pgm b/examples/autotiler/Mnist/test_img/7/8911.pgm deleted file mode 100644 index d03b54f12..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8918.pgm b/examples/autotiler/Mnist/test_img/7/8918.pgm deleted file mode 100644 index 295189d1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8926.pgm b/examples/autotiler/Mnist/test_img/7/8926.pgm deleted file mode 100644 index b302852cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8931.pgm b/examples/autotiler/Mnist/test_img/7/8931.pgm deleted file mode 100644 index b9fd5f013..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8956.pgm b/examples/autotiler/Mnist/test_img/7/8956.pgm deleted file mode 100644 index 5949c7fc3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8959.pgm b/examples/autotiler/Mnist/test_img/7/8959.pgm deleted file mode 100644 index 12776ab03..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8974.pgm b/examples/autotiler/Mnist/test_img/7/8974.pgm deleted file mode 100644 index 55c5580df..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8974.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/898.pgm b/examples/autotiler/Mnist/test_img/7/898.pgm deleted file mode 100644 index 44d2c684f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/8984.pgm b/examples/autotiler/Mnist/test_img/7/8984.pgm deleted file mode 100644 index 71cc8456a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/8984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9000.pgm b/examples/autotiler/Mnist/test_img/7/9000.pgm deleted file mode 100644 index 10657b072..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9009.pgm b/examples/autotiler/Mnist/test_img/7/9009.pgm deleted file mode 100644 index 173f05b57..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9015.pgm b/examples/autotiler/Mnist/test_img/7/9015.pgm deleted file mode 100644 index d2237d4c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9019.pgm b/examples/autotiler/Mnist/test_img/7/9019.pgm deleted file mode 100644 index 9795169a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9024.pgm b/examples/autotiler/Mnist/test_img/7/9024.pgm deleted file mode 100644 index 98e42e091..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9031.pgm b/examples/autotiler/Mnist/test_img/7/9031.pgm deleted file mode 100644 index 5eda8fba6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9031.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9036.pgm b/examples/autotiler/Mnist/test_img/7/9036.pgm deleted file mode 100644 index 07d275543..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9036.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9044.pgm b/examples/autotiler/Mnist/test_img/7/9044.pgm deleted file mode 100644 index e91300e05..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9045.pgm b/examples/autotiler/Mnist/test_img/7/9045.pgm deleted file mode 100644 index 9bb75f189..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9067.pgm b/examples/autotiler/Mnist/test_img/7/9067.pgm deleted file mode 100644 index 2c1a37160..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9067.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9077.pgm b/examples/autotiler/Mnist/test_img/7/9077.pgm deleted file mode 100644 index 3dd8a565c..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9077.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9087.pgm b/examples/autotiler/Mnist/test_img/7/9087.pgm deleted file mode 100644 index 0b3ee48b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9087.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/909.pgm b/examples/autotiler/Mnist/test_img/7/909.pgm deleted file mode 100644 index 49505d2eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9101.pgm b/examples/autotiler/Mnist/test_img/7/9101.pgm deleted file mode 100644 index 33ee7bc86..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9108.pgm b/examples/autotiler/Mnist/test_img/7/9108.pgm deleted file mode 100644 index 35441adad..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/911.pgm b/examples/autotiler/Mnist/test_img/7/911.pgm deleted file mode 100644 index 8758afcc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9113.pgm b/examples/autotiler/Mnist/test_img/7/9113.pgm deleted file mode 100644 index 660ea6636..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9141.pgm b/examples/autotiler/Mnist/test_img/7/9141.pgm deleted file mode 100644 index 9ed573b5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9147.pgm b/examples/autotiler/Mnist/test_img/7/9147.pgm deleted file mode 100644 index 70cdd8f74..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9151.pgm b/examples/autotiler/Mnist/test_img/7/9151.pgm deleted file mode 100644 index 3968261af..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9164.pgm b/examples/autotiler/Mnist/test_img/7/9164.pgm deleted file mode 100644 index bb93b1f44..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9166.pgm b/examples/autotiler/Mnist/test_img/7/9166.pgm deleted file mode 100644 index 4cafaabf4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9169.pgm b/examples/autotiler/Mnist/test_img/7/9169.pgm deleted file mode 100644 index abbe35392..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9169.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/917.pgm b/examples/autotiler/Mnist/test_img/7/917.pgm deleted file mode 100644 index 2401e1f21..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9172.pgm b/examples/autotiler/Mnist/test_img/7/9172.pgm deleted file mode 100644 index febc4b882..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9186.pgm b/examples/autotiler/Mnist/test_img/7/9186.pgm deleted file mode 100644 index f39116585..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9196.pgm b/examples/autotiler/Mnist/test_img/7/9196.pgm deleted file mode 100644 index 384affb9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9204.pgm b/examples/autotiler/Mnist/test_img/7/9204.pgm deleted file mode 100644 index 084694cf9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9212.pgm b/examples/autotiler/Mnist/test_img/7/9212.pgm deleted file mode 100644 index 876692bd4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9242.pgm b/examples/autotiler/Mnist/test_img/7/9242.pgm deleted file mode 100644 index 7aca8452d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9248.pgm b/examples/autotiler/Mnist/test_img/7/9248.pgm deleted file mode 100644 index 9ad2b4887..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9257.pgm b/examples/autotiler/Mnist/test_img/7/9257.pgm deleted file mode 100644 index 9ca4dcda7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9262.pgm b/examples/autotiler/Mnist/test_img/7/9262.pgm deleted file mode 100644 index 0d5266f42..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9270.pgm b/examples/autotiler/Mnist/test_img/7/9270.pgm deleted file mode 100644 index 226b26888..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9270.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9279.pgm b/examples/autotiler/Mnist/test_img/7/9279.pgm deleted file mode 100644 index 3145e4d2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9285.pgm b/examples/autotiler/Mnist/test_img/7/9285.pgm deleted file mode 100644 index 9179944ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9285.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9288.pgm b/examples/autotiler/Mnist/test_img/7/9288.pgm deleted file mode 100644 index 05f0c5d29..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9294.pgm b/examples/autotiler/Mnist/test_img/7/9294.pgm deleted file mode 100644 index 61954a716..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/930.pgm b/examples/autotiler/Mnist/test_img/7/930.pgm deleted file mode 100644 index e52e70660..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/930.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9300.pgm b/examples/autotiler/Mnist/test_img/7/9300.pgm deleted file mode 100644 index d48c3a0ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9302.pgm b/examples/autotiler/Mnist/test_img/7/9302.pgm deleted file mode 100644 index 6486e7c76..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9314.pgm b/examples/autotiler/Mnist/test_img/7/9314.pgm deleted file mode 100644 index 3fe7e045f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9323.pgm b/examples/autotiler/Mnist/test_img/7/9323.pgm deleted file mode 100644 index db883d9eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9327.pgm b/examples/autotiler/Mnist/test_img/7/9327.pgm deleted file mode 100644 index 25dd1f811..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9328.pgm b/examples/autotiler/Mnist/test_img/7/9328.pgm deleted file mode 100644 index a23757c2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9328.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9340.pgm b/examples/autotiler/Mnist/test_img/7/9340.pgm deleted file mode 100644 index 197f92f49..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9374.pgm b/examples/autotiler/Mnist/test_img/7/9374.pgm deleted file mode 100644 index 8ce8ce32d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9384.pgm b/examples/autotiler/Mnist/test_img/7/9384.pgm deleted file mode 100644 index 084e9b92e..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9393.pgm b/examples/autotiler/Mnist/test_img/7/9393.pgm deleted file mode 100644 index b791522e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9399.pgm b/examples/autotiler/Mnist/test_img/7/9399.pgm deleted file mode 100644 index ef519ce18..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/941.pgm b/examples/autotiler/Mnist/test_img/7/941.pgm deleted file mode 100644 index a1c8ec4e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9413.pgm b/examples/autotiler/Mnist/test_img/7/9413.pgm deleted file mode 100644 index e9d10c3ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9419.pgm b/examples/autotiler/Mnist/test_img/7/9419.pgm deleted file mode 100644 index b015f83e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9447.pgm b/examples/autotiler/Mnist/test_img/7/9447.pgm deleted file mode 100644 index 39feb14b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9448.pgm b/examples/autotiler/Mnist/test_img/7/9448.pgm deleted file mode 100644 index 46a67dfe6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9451.pgm b/examples/autotiler/Mnist/test_img/7/9451.pgm deleted file mode 100644 index ab442efd5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9458.pgm b/examples/autotiler/Mnist/test_img/7/9458.pgm deleted file mode 100644 index 30876ded1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/946.pgm b/examples/autotiler/Mnist/test_img/7/946.pgm deleted file mode 100644 index 4fcb56df5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9463.pgm b/examples/autotiler/Mnist/test_img/7/9463.pgm deleted file mode 100644 index dcd4d9afc..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9463.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9469.pgm b/examples/autotiler/Mnist/test_img/7/9469.pgm deleted file mode 100644 index a451a1a87..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9469.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9486.pgm b/examples/autotiler/Mnist/test_img/7/9486.pgm deleted file mode 100644 index dfffc4789..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9495.pgm b/examples/autotiler/Mnist/test_img/7/9495.pgm deleted file mode 100644 index 62296f752..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/950.pgm b/examples/autotiler/Mnist/test_img/7/950.pgm deleted file mode 100644 index 81398473a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9505.pgm b/examples/autotiler/Mnist/test_img/7/9505.pgm deleted file mode 100644 index 011e1fab1..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9515.pgm b/examples/autotiler/Mnist/test_img/7/9515.pgm deleted file mode 100644 index 5fabc9eb2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9522.pgm b/examples/autotiler/Mnist/test_img/7/9522.pgm deleted file mode 100644 index ed6881277..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9534.pgm b/examples/autotiler/Mnist/test_img/7/9534.pgm deleted file mode 100644 index 368023f48..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9543.pgm b/examples/autotiler/Mnist/test_img/7/9543.pgm deleted file mode 100644 index 4ffb2efbb..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9546.pgm b/examples/autotiler/Mnist/test_img/7/9546.pgm deleted file mode 100644 index f9e2c6a95..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9560.pgm b/examples/autotiler/Mnist/test_img/7/9560.pgm deleted file mode 100644 index 2000f2332..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9566.pgm b/examples/autotiler/Mnist/test_img/7/9566.pgm deleted file mode 100644 index afe516df7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9567.pgm b/examples/autotiler/Mnist/test_img/7/9567.pgm deleted file mode 100644 index d57661c34..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9573.pgm b/examples/autotiler/Mnist/test_img/7/9573.pgm deleted file mode 100644 index f1511acb8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9576.pgm b/examples/autotiler/Mnist/test_img/7/9576.pgm deleted file mode 100644 index 2548f66ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9586.pgm b/examples/autotiler/Mnist/test_img/7/9586.pgm deleted file mode 100644 index 39410c36a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/960.pgm b/examples/autotiler/Mnist/test_img/7/960.pgm deleted file mode 100644 index ac9a6e1d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9608.pgm b/examples/autotiler/Mnist/test_img/7/9608.pgm deleted file mode 100644 index 8345bbeff..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9618.pgm b/examples/autotiler/Mnist/test_img/7/9618.pgm deleted file mode 100644 index 297ee6ef5..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9628.pgm b/examples/autotiler/Mnist/test_img/7/9628.pgm deleted file mode 100644 index 44b78080d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9628.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9637.pgm b/examples/autotiler/Mnist/test_img/7/9637.pgm deleted file mode 100644 index b80efe91a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9640.pgm b/examples/autotiler/Mnist/test_img/7/9640.pgm deleted file mode 100644 index 8f5f57326..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9644.pgm b/examples/autotiler/Mnist/test_img/7/9644.pgm deleted file mode 100644 index 4a0912465..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9650.pgm b/examples/autotiler/Mnist/test_img/7/9650.pgm deleted file mode 100644 index cfb206f07..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9652.pgm b/examples/autotiler/Mnist/test_img/7/9652.pgm deleted file mode 100644 index 92b5094dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9660.pgm b/examples/autotiler/Mnist/test_img/7/9660.pgm deleted file mode 100644 index 7feebcfb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9684.pgm b/examples/autotiler/Mnist/test_img/7/9684.pgm deleted file mode 100644 index dad6e6bc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9684.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9690.pgm b/examples/autotiler/Mnist/test_img/7/9690.pgm deleted file mode 100644 index a84684bd3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/97.pgm b/examples/autotiler/Mnist/test_img/7/97.pgm deleted file mode 100644 index aac548b23..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/97.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9711.pgm b/examples/autotiler/Mnist/test_img/7/9711.pgm deleted file mode 100644 index 322cae625..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9721.pgm b/examples/autotiler/Mnist/test_img/7/9721.pgm deleted file mode 100644 index c46cccd38..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9721.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9731.pgm b/examples/autotiler/Mnist/test_img/7/9731.pgm deleted file mode 100644 index 88fa82074..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9734.pgm b/examples/autotiler/Mnist/test_img/7/9734.pgm deleted file mode 100644 index eca8730f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9734.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9743.pgm b/examples/autotiler/Mnist/test_img/7/9743.pgm deleted file mode 100644 index b42a832db..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9746.pgm b/examples/autotiler/Mnist/test_img/7/9746.pgm deleted file mode 100644 index c038115db..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9765.pgm b/examples/autotiler/Mnist/test_img/7/9765.pgm deleted file mode 100644 index 602ac2818..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9771.pgm b/examples/autotiler/Mnist/test_img/7/9771.pgm deleted file mode 100644 index d75c9193a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9773.pgm b/examples/autotiler/Mnist/test_img/7/9773.pgm deleted file mode 100644 index 277d3d7df..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9781.pgm b/examples/autotiler/Mnist/test_img/7/9781.pgm deleted file mode 100644 index b8f87bf06..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9788.pgm b/examples/autotiler/Mnist/test_img/7/9788.pgm deleted file mode 100644 index 5d25b24bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9806.pgm b/examples/autotiler/Mnist/test_img/7/9806.pgm deleted file mode 100644 index 70bf75409..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9816.pgm b/examples/autotiler/Mnist/test_img/7/9816.pgm deleted file mode 100644 index f10b9082a..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9823.pgm b/examples/autotiler/Mnist/test_img/7/9823.pgm deleted file mode 100644 index 965b3a366..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9837.pgm b/examples/autotiler/Mnist/test_img/7/9837.pgm deleted file mode 100644 index 6997f5c6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9851.pgm b/examples/autotiler/Mnist/test_img/7/9851.pgm deleted file mode 100644 index f3e12d96b..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9852.pgm b/examples/autotiler/Mnist/test_img/7/9852.pgm deleted file mode 100644 index daaaf9d05..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9859.pgm b/examples/autotiler/Mnist/test_img/7/9859.pgm deleted file mode 100644 index 414149f58..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9864.pgm b/examples/autotiler/Mnist/test_img/7/9864.pgm deleted file mode 100644 index f85b661b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9868.pgm b/examples/autotiler/Mnist/test_img/7/9868.pgm deleted file mode 100644 index b69049495..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9869.pgm b/examples/autotiler/Mnist/test_img/7/9869.pgm deleted file mode 100644 index 03b30b468..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/987.pgm b/examples/autotiler/Mnist/test_img/7/987.pgm deleted file mode 100644 index 78d955a75..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9884.pgm b/examples/autotiler/Mnist/test_img/7/9884.pgm deleted file mode 100644 index 33484aed6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9894.pgm b/examples/autotiler/Mnist/test_img/7/9894.pgm deleted file mode 100644 index 4a46f07ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9895.pgm b/examples/autotiler/Mnist/test_img/7/9895.pgm deleted file mode 100644 index fbc16a4ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9899.pgm b/examples/autotiler/Mnist/test_img/7/9899.pgm deleted file mode 100644 index 5531f08f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9909.pgm b/examples/autotiler/Mnist/test_img/7/9909.pgm deleted file mode 100644 index ded7c14f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9909.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9916.pgm b/examples/autotiler/Mnist/test_img/7/9916.pgm deleted file mode 100644 index cc8f92ea3..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9919.pgm b/examples/autotiler/Mnist/test_img/7/9919.pgm deleted file mode 100644 index f11936988..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9929.pgm b/examples/autotiler/Mnist/test_img/7/9929.pgm deleted file mode 100644 index 3387b8657..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9935.pgm b/examples/autotiler/Mnist/test_img/7/9935.pgm deleted file mode 100644 index 3ec321b28..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9957.pgm b/examples/autotiler/Mnist/test_img/7/9957.pgm deleted file mode 100644 index 950be76b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9957.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9958.pgm b/examples/autotiler/Mnist/test_img/7/9958.pgm deleted file mode 100644 index cc59bcff2..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9963.pgm b/examples/autotiler/Mnist/test_img/7/9963.pgm deleted file mode 100644 index f14f5b218..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9968.pgm b/examples/autotiler/Mnist/test_img/7/9968.pgm deleted file mode 100644 index ad3d4fc8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9979.pgm b/examples/autotiler/Mnist/test_img/7/9979.pgm deleted file mode 100644 index bc2f1d417..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/7/9990.pgm b/examples/autotiler/Mnist/test_img/7/9990.pgm deleted file mode 100644 index 2c2961b2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/7/9990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1007.pgm b/examples/autotiler/Mnist/test_img/8/1007.pgm deleted file mode 100644 index 379f35454..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1007.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1018.pgm b/examples/autotiler/Mnist/test_img/8/1018.pgm deleted file mode 100644 index 4a6994095..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1026.pgm b/examples/autotiler/Mnist/test_img/8/1026.pgm deleted file mode 100644 index b660f55ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1029.pgm b/examples/autotiler/Mnist/test_img/8/1029.pgm deleted file mode 100644 index 771a079c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1033.pgm b/examples/autotiler/Mnist/test_img/8/1033.pgm deleted file mode 100644 index f56612917..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1033.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1052.pgm b/examples/autotiler/Mnist/test_img/8/1052.pgm deleted file mode 100644 index 4984adc7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1068.pgm b/examples/autotiler/Mnist/test_img/8/1068.pgm deleted file mode 100644 index ff14c1a80..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1074.pgm b/examples/autotiler/Mnist/test_img/8/1074.pgm deleted file mode 100644 index dc15f1608..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1074.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1093.pgm b/examples/autotiler/Mnist/test_img/8/1093.pgm deleted file mode 100644 index b5c8bc0b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/110.pgm b/examples/autotiler/Mnist/test_img/8/110.pgm deleted file mode 100644 index 3f713e6dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1101.pgm b/examples/autotiler/Mnist/test_img/8/1101.pgm deleted file mode 100644 index 998ffec1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1118.pgm b/examples/autotiler/Mnist/test_img/8/1118.pgm deleted file mode 100644 index 9e67f0d82..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1120.pgm b/examples/autotiler/Mnist/test_img/8/1120.pgm deleted file mode 100644 index 6eef35e81..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1120.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1124.pgm b/examples/autotiler/Mnist/test_img/8/1124.pgm deleted file mode 100644 index 45acb4174..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1125.pgm b/examples/autotiler/Mnist/test_img/8/1125.pgm deleted file mode 100644 index c444f6bbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1149.pgm b/examples/autotiler/Mnist/test_img/8/1149.pgm deleted file mode 100644 index 508f514eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1170.pgm b/examples/autotiler/Mnist/test_img/8/1170.pgm deleted file mode 100644 index 9badf2bba..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1185.pgm b/examples/autotiler/Mnist/test_img/8/1185.pgm deleted file mode 100644 index d46ec0292..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1198.pgm b/examples/autotiler/Mnist/test_img/8/1198.pgm deleted file mode 100644 index 949bf2ee9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1200.pgm b/examples/autotiler/Mnist/test_img/8/1200.pgm deleted file mode 100644 index fa399a481..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1202.pgm b/examples/autotiler/Mnist/test_img/8/1202.pgm deleted file mode 100644 index 65f03e429..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1202.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1219.pgm b/examples/autotiler/Mnist/test_img/8/1219.pgm deleted file mode 100644 index aae8e2edc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1225.pgm b/examples/autotiler/Mnist/test_img/8/1225.pgm deleted file mode 100644 index 8618e34c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1229.pgm b/examples/autotiler/Mnist/test_img/8/1229.pgm deleted file mode 100644 index 3741d407e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1229.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1234.pgm b/examples/autotiler/Mnist/test_img/8/1234.pgm deleted file mode 100644 index 03080d034..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1248.pgm b/examples/autotiler/Mnist/test_img/8/1248.pgm deleted file mode 100644 index 2364f1567..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1249.pgm b/examples/autotiler/Mnist/test_img/8/1249.pgm deleted file mode 100644 index 328e7d6fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1259.pgm b/examples/autotiler/Mnist/test_img/8/1259.pgm deleted file mode 100644 index a4ca61c16..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1267.pgm b/examples/autotiler/Mnist/test_img/8/1267.pgm deleted file mode 100644 index 173e8cca4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1268.pgm b/examples/autotiler/Mnist/test_img/8/1268.pgm deleted file mode 100644 index b4c216f4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/128.pgm b/examples/autotiler/Mnist/test_img/8/128.pgm deleted file mode 100644 index 72fcbafb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1286.pgm b/examples/autotiler/Mnist/test_img/8/1286.pgm deleted file mode 100644 index 2de506269..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1287.pgm b/examples/autotiler/Mnist/test_img/8/1287.pgm deleted file mode 100644 index 0270a9e3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1312.pgm b/examples/autotiler/Mnist/test_img/8/1312.pgm deleted file mode 100644 index 45277c6f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1312.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1319.pgm b/examples/autotiler/Mnist/test_img/8/1319.pgm deleted file mode 100644 index 69062d4c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1320.pgm b/examples/autotiler/Mnist/test_img/8/1320.pgm deleted file mode 100644 index bb6242cad..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1324.pgm b/examples/autotiler/Mnist/test_img/8/1324.pgm deleted file mode 100644 index d7ee642e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1325.pgm b/examples/autotiler/Mnist/test_img/8/1325.pgm deleted file mode 100644 index 2cc0cd674..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/134.pgm b/examples/autotiler/Mnist/test_img/8/134.pgm deleted file mode 100644 index 9bac281b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1353.pgm b/examples/autotiler/Mnist/test_img/8/1353.pgm deleted file mode 100644 index 80a73e628..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1353.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1364.pgm b/examples/autotiler/Mnist/test_img/8/1364.pgm deleted file mode 100644 index 974a53e8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1371.pgm b/examples/autotiler/Mnist/test_img/8/1371.pgm deleted file mode 100644 index 73af27620..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1389.pgm b/examples/autotiler/Mnist/test_img/8/1389.pgm deleted file mode 100644 index 9c8f6e354..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1394.pgm b/examples/autotiler/Mnist/test_img/8/1394.pgm deleted file mode 100644 index e7fcb53de..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1398.pgm b/examples/autotiler/Mnist/test_img/8/1398.pgm deleted file mode 100644 index f50fa4c84..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1415.pgm b/examples/autotiler/Mnist/test_img/8/1415.pgm deleted file mode 100644 index 58fc8bd7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1415.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1425.pgm b/examples/autotiler/Mnist/test_img/8/1425.pgm deleted file mode 100644 index 488814f05..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1433.pgm b/examples/autotiler/Mnist/test_img/8/1433.pgm deleted file mode 100644 index 5c2844843..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1441.pgm b/examples/autotiler/Mnist/test_img/8/1441.pgm deleted file mode 100644 index fd4b52778..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1441.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1443.pgm b/examples/autotiler/Mnist/test_img/8/1443.pgm deleted file mode 100644 index f6ccafb94..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/146.pgm b/examples/autotiler/Mnist/test_img/8/146.pgm deleted file mode 100644 index a8c0647a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1464.pgm b/examples/autotiler/Mnist/test_img/8/1464.pgm deleted file mode 100644 index d6532c425..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1470.pgm b/examples/autotiler/Mnist/test_img/8/1470.pgm deleted file mode 100644 index dda0226bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1474.pgm b/examples/autotiler/Mnist/test_img/8/1474.pgm deleted file mode 100644 index 303543852..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1499.pgm b/examples/autotiler/Mnist/test_img/8/1499.pgm deleted file mode 100644 index 601fb8bc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1502.pgm b/examples/autotiler/Mnist/test_img/8/1502.pgm deleted file mode 100644 index 9d29a2120..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1523.pgm b/examples/autotiler/Mnist/test_img/8/1523.pgm deleted file mode 100644 index 0cfc36591..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1524.pgm b/examples/autotiler/Mnist/test_img/8/1524.pgm deleted file mode 100644 index 70e2f7fe5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1530.pgm b/examples/autotiler/Mnist/test_img/8/1530.pgm deleted file mode 100644 index d9081366f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1541.pgm b/examples/autotiler/Mnist/test_img/8/1541.pgm deleted file mode 100644 index 1fecc7598..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1541.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1556.pgm b/examples/autotiler/Mnist/test_img/8/1556.pgm deleted file mode 100644 index fa18461f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1560.pgm b/examples/autotiler/Mnist/test_img/8/1560.pgm deleted file mode 100644 index 493e876eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1562.pgm b/examples/autotiler/Mnist/test_img/8/1562.pgm deleted file mode 100644 index 7cac5d1a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1567.pgm b/examples/autotiler/Mnist/test_img/8/1567.pgm deleted file mode 100644 index 509e9661c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1568.pgm b/examples/autotiler/Mnist/test_img/8/1568.pgm deleted file mode 100644 index 3f1eec639..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1572.pgm b/examples/autotiler/Mnist/test_img/8/1572.pgm deleted file mode 100644 index e04ff5bf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1573.pgm b/examples/autotiler/Mnist/test_img/8/1573.pgm deleted file mode 100644 index 8b5108a10..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1573.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1583.pgm b/examples/autotiler/Mnist/test_img/8/1583.pgm deleted file mode 100644 index abeda4c18..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1584.pgm b/examples/autotiler/Mnist/test_img/8/1584.pgm deleted file mode 100644 index 05ecc752e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1613.pgm b/examples/autotiler/Mnist/test_img/8/1613.pgm deleted file mode 100644 index d0d750cc7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1613.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1651.pgm b/examples/autotiler/Mnist/test_img/8/1651.pgm deleted file mode 100644 index f8c15ab21..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1663.pgm b/examples/autotiler/Mnist/test_img/8/1663.pgm deleted file mode 100644 index 1c1c19fb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1664.pgm b/examples/autotiler/Mnist/test_img/8/1664.pgm deleted file mode 100644 index a8f359977..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1669.pgm b/examples/autotiler/Mnist/test_img/8/1669.pgm deleted file mode 100644 index 2950c80b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1675.pgm b/examples/autotiler/Mnist/test_img/8/1675.pgm deleted file mode 100644 index 38ae18d0e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1686.pgm b/examples/autotiler/Mnist/test_img/8/1686.pgm deleted file mode 100644 index 2ff670ceb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1687.pgm b/examples/autotiler/Mnist/test_img/8/1687.pgm deleted file mode 100644 index 749d9a049..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1694.pgm b/examples/autotiler/Mnist/test_img/8/1694.pgm deleted file mode 100644 index 20fc26d7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1702.pgm b/examples/autotiler/Mnist/test_img/8/1702.pgm deleted file mode 100644 index 86c6967fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1702.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1717.pgm b/examples/autotiler/Mnist/test_img/8/1717.pgm deleted file mode 100644 index a0df789c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1719.pgm b/examples/autotiler/Mnist/test_img/8/1719.pgm deleted file mode 100644 index 96a0b6003..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1740.pgm b/examples/autotiler/Mnist/test_img/8/1740.pgm deleted file mode 100644 index 278beaf8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1756.pgm b/examples/autotiler/Mnist/test_img/8/1756.pgm deleted file mode 100644 index a43005d6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1758.pgm b/examples/autotiler/Mnist/test_img/8/1758.pgm deleted file mode 100644 index 3cc121f08..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1759.pgm b/examples/autotiler/Mnist/test_img/8/1759.pgm deleted file mode 100644 index 179d4b549..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/177.pgm b/examples/autotiler/Mnist/test_img/8/177.pgm deleted file mode 100644 index d256e9878..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1774.pgm b/examples/autotiler/Mnist/test_img/8/1774.pgm deleted file mode 100644 index 9bd9391ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1782.pgm b/examples/autotiler/Mnist/test_img/8/1782.pgm deleted file mode 100644 index c6c19e85a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/179.pgm b/examples/autotiler/Mnist/test_img/8/179.pgm deleted file mode 100644 index f4aea9e36..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/181.pgm b/examples/autotiler/Mnist/test_img/8/181.pgm deleted file mode 100644 index b3da01433..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1813.pgm b/examples/autotiler/Mnist/test_img/8/1813.pgm deleted file mode 100644 index 87051e430..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1823.pgm b/examples/autotiler/Mnist/test_img/8/1823.pgm deleted file mode 100644 index 15d170c5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1827.pgm b/examples/autotiler/Mnist/test_img/8/1827.pgm deleted file mode 100644 index 826c2dac1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/184.pgm b/examples/autotiler/Mnist/test_img/8/184.pgm deleted file mode 100644 index 7f7666ac4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1850.pgm b/examples/autotiler/Mnist/test_img/8/1850.pgm deleted file mode 100644 index fa922bc6d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1855.pgm b/examples/autotiler/Mnist/test_img/8/1855.pgm deleted file mode 100644 index d130b15bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1859.pgm b/examples/autotiler/Mnist/test_img/8/1859.pgm deleted file mode 100644 index eb3e1e3e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1877.pgm b/examples/autotiler/Mnist/test_img/8/1877.pgm deleted file mode 100644 index 5da1a4230..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1878.pgm b/examples/autotiler/Mnist/test_img/8/1878.pgm deleted file mode 100644 index be93c299b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1882.pgm b/examples/autotiler/Mnist/test_img/8/1882.pgm deleted file mode 100644 index 3fa7395ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1893.pgm b/examples/autotiler/Mnist/test_img/8/1893.pgm deleted file mode 100644 index e229da010..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1899.pgm b/examples/autotiler/Mnist/test_img/8/1899.pgm deleted file mode 100644 index 01123d052..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1912.pgm b/examples/autotiler/Mnist/test_img/8/1912.pgm deleted file mode 100644 index 35182067d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1914.pgm b/examples/autotiler/Mnist/test_img/8/1914.pgm deleted file mode 100644 index f523f1896..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1942.pgm b/examples/autotiler/Mnist/test_img/8/1942.pgm deleted file mode 100644 index e7799e683..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1946.pgm b/examples/autotiler/Mnist/test_img/8/1946.pgm deleted file mode 100644 index 2c39622aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1955.pgm b/examples/autotiler/Mnist/test_img/8/1955.pgm deleted file mode 100644 index 76ac2f27e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1960.pgm b/examples/autotiler/Mnist/test_img/8/1960.pgm deleted file mode 100644 index 4e0aedf06..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1961.pgm b/examples/autotiler/Mnist/test_img/8/1961.pgm deleted file mode 100644 index ebe5fc5d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1968.pgm b/examples/autotiler/Mnist/test_img/8/1968.pgm deleted file mode 100644 index 5b9b22c53..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/1973.pgm b/examples/autotiler/Mnist/test_img/8/1973.pgm deleted file mode 100644 index 92ccd044a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/1973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2004.pgm b/examples/autotiler/Mnist/test_img/8/2004.pgm deleted file mode 100644 index 3ca02bc4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2038.pgm b/examples/autotiler/Mnist/test_img/8/2038.pgm deleted file mode 100644 index 124196b2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2038.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2050.pgm b/examples/autotiler/Mnist/test_img/8/2050.pgm deleted file mode 100644 index dd90c6cd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2052.pgm b/examples/autotiler/Mnist/test_img/8/2052.pgm deleted file mode 100644 index 5d05946c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2052.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2056.pgm b/examples/autotiler/Mnist/test_img/8/2056.pgm deleted file mode 100644 index 9ec1bc552..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2065.pgm b/examples/autotiler/Mnist/test_img/8/2065.pgm deleted file mode 100644 index 676ad6f07..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2093.pgm b/examples/autotiler/Mnist/test_img/8/2093.pgm deleted file mode 100644 index 045e5397f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2099.pgm b/examples/autotiler/Mnist/test_img/8/2099.pgm deleted file mode 100644 index 6ab89b126..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2102.pgm b/examples/autotiler/Mnist/test_img/8/2102.pgm deleted file mode 100644 index 1324a62f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2102.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2107.pgm b/examples/autotiler/Mnist/test_img/8/2107.pgm deleted file mode 100644 index fd4ddcb00..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2111.pgm b/examples/autotiler/Mnist/test_img/8/2111.pgm deleted file mode 100644 index e725d724f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2119.pgm b/examples/autotiler/Mnist/test_img/8/2119.pgm deleted file mode 100644 index f0fc1e5d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2119.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2121.pgm b/examples/autotiler/Mnist/test_img/8/2121.pgm deleted file mode 100644 index c475997c0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2142.pgm b/examples/autotiler/Mnist/test_img/8/2142.pgm deleted file mode 100644 index 1bbc55830..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2146.pgm b/examples/autotiler/Mnist/test_img/8/2146.pgm deleted file mode 100644 index 42781748f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2149.pgm b/examples/autotiler/Mnist/test_img/8/2149.pgm deleted file mode 100644 index afe7b3b7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2152.pgm b/examples/autotiler/Mnist/test_img/8/2152.pgm deleted file mode 100644 index 6942ff89a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2163.pgm b/examples/autotiler/Mnist/test_img/8/2163.pgm deleted file mode 100644 index 8d7371e9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2168.pgm b/examples/autotiler/Mnist/test_img/8/2168.pgm deleted file mode 100644 index 3a9af3d79..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2172.pgm b/examples/autotiler/Mnist/test_img/8/2172.pgm deleted file mode 100644 index ac8aaa72b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2177.pgm b/examples/autotiler/Mnist/test_img/8/2177.pgm deleted file mode 100644 index da424101a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2177.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2179.pgm b/examples/autotiler/Mnist/test_img/8/2179.pgm deleted file mode 100644 index a8787946b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2179.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2203.pgm b/examples/autotiler/Mnist/test_img/8/2203.pgm deleted file mode 100644 index 4e23c211e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2203.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2208.pgm b/examples/autotiler/Mnist/test_img/8/2208.pgm deleted file mode 100644 index 5d5d768cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2211.pgm b/examples/autotiler/Mnist/test_img/8/2211.pgm deleted file mode 100644 index 542a06872..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2211.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2213.pgm b/examples/autotiler/Mnist/test_img/8/2213.pgm deleted file mode 100644 index 0be4f5922..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2219.pgm b/examples/autotiler/Mnist/test_img/8/2219.pgm deleted file mode 100644 index fb1f74ea8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2225.pgm b/examples/autotiler/Mnist/test_img/8/2225.pgm deleted file mode 100644 index 9e0192026..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2225.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2233.pgm b/examples/autotiler/Mnist/test_img/8/2233.pgm deleted file mode 100644 index 1b6dec59a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2246.pgm b/examples/autotiler/Mnist/test_img/8/2246.pgm deleted file mode 100644 index 4ece5f7a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/226.pgm b/examples/autotiler/Mnist/test_img/8/226.pgm deleted file mode 100644 index 04380cee9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2271.pgm b/examples/autotiler/Mnist/test_img/8/2271.pgm deleted file mode 100644 index 82d719387..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2272.pgm b/examples/autotiler/Mnist/test_img/8/2272.pgm deleted file mode 100644 index 38ddb9668..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2289.pgm b/examples/autotiler/Mnist/test_img/8/2289.pgm deleted file mode 100644 index 01f633b42..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2297.pgm b/examples/autotiler/Mnist/test_img/8/2297.pgm deleted file mode 100644 index e9178f405..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2298.pgm b/examples/autotiler/Mnist/test_img/8/2298.pgm deleted file mode 100644 index fd1076c30..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2309.pgm b/examples/autotiler/Mnist/test_img/8/2309.pgm deleted file mode 100644 index 0848e8c8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/232.pgm b/examples/autotiler/Mnist/test_img/8/232.pgm deleted file mode 100644 index 5745f4678..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/233.pgm b/examples/autotiler/Mnist/test_img/8/233.pgm deleted file mode 100644 index a374952e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2349.pgm b/examples/autotiler/Mnist/test_img/8/2349.pgm deleted file mode 100644 index d73a4bd0e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2362.pgm b/examples/autotiler/Mnist/test_img/8/2362.pgm deleted file mode 100644 index 127a76ce6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2381.pgm b/examples/autotiler/Mnist/test_img/8/2381.pgm deleted file mode 100644 index 2475a230e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2381.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2382.pgm b/examples/autotiler/Mnist/test_img/8/2382.pgm deleted file mode 100644 index a0e962e66..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2389.pgm b/examples/autotiler/Mnist/test_img/8/2389.pgm deleted file mode 100644 index 6cb733e17..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2393.pgm b/examples/autotiler/Mnist/test_img/8/2393.pgm deleted file mode 100644 index 1c2139f38..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2395.pgm b/examples/autotiler/Mnist/test_img/8/2395.pgm deleted file mode 100644 index 1177c071d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2419.pgm b/examples/autotiler/Mnist/test_img/8/2419.pgm deleted file mode 100644 index 9250a0919..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/242.pgm b/examples/autotiler/Mnist/test_img/8/242.pgm deleted file mode 100644 index 0a7976692..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2423.pgm b/examples/autotiler/Mnist/test_img/8/2423.pgm deleted file mode 100644 index 0ce2a8892..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2425.pgm b/examples/autotiler/Mnist/test_img/8/2425.pgm deleted file mode 100644 index 96da63233..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2430.pgm b/examples/autotiler/Mnist/test_img/8/2430.pgm deleted file mode 100644 index f62ab2241..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2430.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2451.pgm b/examples/autotiler/Mnist/test_img/8/2451.pgm deleted file mode 100644 index c6df95134..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2467.pgm b/examples/autotiler/Mnist/test_img/8/2467.pgm deleted file mode 100644 index 4d2849868..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2470.pgm b/examples/autotiler/Mnist/test_img/8/2470.pgm deleted file mode 100644 index f2482d0ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2512.pgm b/examples/autotiler/Mnist/test_img/8/2512.pgm deleted file mode 100644 index 4e9471b33..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2520.pgm b/examples/autotiler/Mnist/test_img/8/2520.pgm deleted file mode 100644 index 1f1ffa726..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2543.pgm b/examples/autotiler/Mnist/test_img/8/2543.pgm deleted file mode 100644 index 6ccdca613..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2550.pgm b/examples/autotiler/Mnist/test_img/8/2550.pgm deleted file mode 100644 index 7293a0de7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2552.pgm b/examples/autotiler/Mnist/test_img/8/2552.pgm deleted file mode 100644 index 2ec3109b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2561.pgm b/examples/autotiler/Mnist/test_img/8/2561.pgm deleted file mode 100644 index e058b9a83..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2561.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/257.pgm b/examples/autotiler/Mnist/test_img/8/257.pgm deleted file mode 100644 index aea5cc126..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2579.pgm b/examples/autotiler/Mnist/test_img/8/2579.pgm deleted file mode 100644 index 385d6d6ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2584.pgm b/examples/autotiler/Mnist/test_img/8/2584.pgm deleted file mode 100644 index c4e007e3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2598.pgm b/examples/autotiler/Mnist/test_img/8/2598.pgm deleted file mode 100644 index 5b4d39af6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/260.pgm b/examples/autotiler/Mnist/test_img/8/260.pgm deleted file mode 100644 index 8938350f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/260.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2600.pgm b/examples/autotiler/Mnist/test_img/8/2600.pgm deleted file mode 100644 index d2c61aef7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2600.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2608.pgm b/examples/autotiler/Mnist/test_img/8/2608.pgm deleted file mode 100644 index 07d58596d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2614.pgm b/examples/autotiler/Mnist/test_img/8/2614.pgm deleted file mode 100644 index ea702996c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2614.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2617.pgm b/examples/autotiler/Mnist/test_img/8/2617.pgm deleted file mode 100644 index 44e0ec19c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2636.pgm b/examples/autotiler/Mnist/test_img/8/2636.pgm deleted file mode 100644 index 9086df56a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2636.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2640.pgm b/examples/autotiler/Mnist/test_img/8/2640.pgm deleted file mode 100644 index a8ce1cb1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2650.pgm b/examples/autotiler/Mnist/test_img/8/2650.pgm deleted file mode 100644 index f268cfb4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/266.pgm b/examples/autotiler/Mnist/test_img/8/266.pgm deleted file mode 100644 index a2d3ed622..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2667.pgm b/examples/autotiler/Mnist/test_img/8/2667.pgm deleted file mode 100644 index 797f59fcb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/268.pgm b/examples/autotiler/Mnist/test_img/8/268.pgm deleted file mode 100644 index 4c5f4f389..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2691.pgm b/examples/autotiler/Mnist/test_img/8/2691.pgm deleted file mode 100644 index 6c3259cb5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2724.pgm b/examples/autotiler/Mnist/test_img/8/2724.pgm deleted file mode 100644 index 721452f00..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2739.pgm b/examples/autotiler/Mnist/test_img/8/2739.pgm deleted file mode 100644 index 69f637587..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2739.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2744.pgm b/examples/autotiler/Mnist/test_img/8/2744.pgm deleted file mode 100644 index ef68a8df1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2758.pgm b/examples/autotiler/Mnist/test_img/8/2758.pgm deleted file mode 100644 index 1da9a2cdf..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/277.pgm b/examples/autotiler/Mnist/test_img/8/277.pgm deleted file mode 100644 index 2a5f8d796..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2774.pgm b/examples/autotiler/Mnist/test_img/8/2774.pgm deleted file mode 100644 index 167047b2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2783.pgm b/examples/autotiler/Mnist/test_img/8/2783.pgm deleted file mode 100644 index 9378ac6ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2793.pgm b/examples/autotiler/Mnist/test_img/8/2793.pgm deleted file mode 100644 index 167e465d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2800.pgm b/examples/autotiler/Mnist/test_img/8/2800.pgm deleted file mode 100644 index f180b4d62..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2809.pgm b/examples/autotiler/Mnist/test_img/8/2809.pgm deleted file mode 100644 index c32e81059..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2809.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2834.pgm b/examples/autotiler/Mnist/test_img/8/2834.pgm deleted file mode 100644 index 06e81f5db..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2849.pgm b/examples/autotiler/Mnist/test_img/8/2849.pgm deleted file mode 100644 index 2ce2fe454..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2852.pgm b/examples/autotiler/Mnist/test_img/8/2852.pgm deleted file mode 100644 index 44a98c6b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2856.pgm b/examples/autotiler/Mnist/test_img/8/2856.pgm deleted file mode 100644 index f431f221f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2859.pgm b/examples/autotiler/Mnist/test_img/8/2859.pgm deleted file mode 100644 index 37c32680e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2862.pgm b/examples/autotiler/Mnist/test_img/8/2862.pgm deleted file mode 100644 index cddfbf3b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2869.pgm b/examples/autotiler/Mnist/test_img/8/2869.pgm deleted file mode 100644 index 59c476e92..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2895.pgm b/examples/autotiler/Mnist/test_img/8/2895.pgm deleted file mode 100644 index ae69e9392..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2896.pgm b/examples/autotiler/Mnist/test_img/8/2896.pgm deleted file mode 100644 index d2a849cac..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2896.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2897.pgm b/examples/autotiler/Mnist/test_img/8/2897.pgm deleted file mode 100644 index 1d7b4a5c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/290.pgm b/examples/autotiler/Mnist/test_img/8/290.pgm deleted file mode 100644 index d09325a9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2905.pgm b/examples/autotiler/Mnist/test_img/8/2905.pgm deleted file mode 100644 index e67987767..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2911.pgm b/examples/autotiler/Mnist/test_img/8/2911.pgm deleted file mode 100644 index a5b0d4ce9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2935.pgm b/examples/autotiler/Mnist/test_img/8/2935.pgm deleted file mode 100644 index e1fcf5ab4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2949.pgm b/examples/autotiler/Mnist/test_img/8/2949.pgm deleted file mode 100644 index 467b2c841..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2960.pgm b/examples/autotiler/Mnist/test_img/8/2960.pgm deleted file mode 100644 index 9562d188f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2975.pgm b/examples/autotiler/Mnist/test_img/8/2975.pgm deleted file mode 100644 index f38c3bb68..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/299.pgm b/examples/autotiler/Mnist/test_img/8/299.pgm deleted file mode 100644 index 3a59bdc86..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/2990.pgm b/examples/autotiler/Mnist/test_img/8/2990.pgm deleted file mode 100644 index 5d8fe0c18..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/2990.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3002.pgm b/examples/autotiler/Mnist/test_img/8/3002.pgm deleted file mode 100644 index 92ac93c07..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3012.pgm b/examples/autotiler/Mnist/test_img/8/3012.pgm deleted file mode 100644 index 05b6b9f32..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3023.pgm b/examples/autotiler/Mnist/test_img/8/3023.pgm deleted file mode 100644 index 141a16723..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3046.pgm b/examples/autotiler/Mnist/test_img/8/3046.pgm deleted file mode 100644 index 9a1915f06..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3062.pgm b/examples/autotiler/Mnist/test_img/8/3062.pgm deleted file mode 100644 index 6b6cc7dfd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3062.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3064.pgm b/examples/autotiler/Mnist/test_img/8/3064.pgm deleted file mode 100644 index a476a2a1f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3064.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3065.pgm b/examples/autotiler/Mnist/test_img/8/3065.pgm deleted file mode 100644 index 4cbfd36ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3068.pgm b/examples/autotiler/Mnist/test_img/8/3068.pgm deleted file mode 100644 index 1b6547163..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3072.pgm b/examples/autotiler/Mnist/test_img/8/3072.pgm deleted file mode 100644 index 7baf8d59d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3072.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3091.pgm b/examples/autotiler/Mnist/test_img/8/3091.pgm deleted file mode 100644 index 3a818ec8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3112.pgm b/examples/autotiler/Mnist/test_img/8/3112.pgm deleted file mode 100644 index ffd172af3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3139.pgm b/examples/autotiler/Mnist/test_img/8/3139.pgm deleted file mode 100644 index 6dc202e98..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3153.pgm b/examples/autotiler/Mnist/test_img/8/3153.pgm deleted file mode 100644 index 1e37d30ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3158.pgm b/examples/autotiler/Mnist/test_img/8/3158.pgm deleted file mode 100644 index b8937c6fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3163.pgm b/examples/autotiler/Mnist/test_img/8/3163.pgm deleted file mode 100644 index 22d4b662c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3186.pgm b/examples/autotiler/Mnist/test_img/8/3186.pgm deleted file mode 100644 index 26f87fee6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3186.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3197.pgm b/examples/autotiler/Mnist/test_img/8/3197.pgm deleted file mode 100644 index 97a0dabf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3198.pgm b/examples/autotiler/Mnist/test_img/8/3198.pgm deleted file mode 100644 index fb7be0721..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3204.pgm b/examples/autotiler/Mnist/test_img/8/3204.pgm deleted file mode 100644 index dfba4a919..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3205.pgm b/examples/autotiler/Mnist/test_img/8/3205.pgm deleted file mode 100644 index 5a71f0400..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3206.pgm b/examples/autotiler/Mnist/test_img/8/3206.pgm deleted file mode 100644 index 84e637d85..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3216.pgm b/examples/autotiler/Mnist/test_img/8/3216.pgm deleted file mode 100644 index d29f0e6c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3224.pgm b/examples/autotiler/Mnist/test_img/8/3224.pgm deleted file mode 100644 index 2ed8d18b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3245.pgm b/examples/autotiler/Mnist/test_img/8/3245.pgm deleted file mode 100644 index 3fb1f8cd6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3246.pgm b/examples/autotiler/Mnist/test_img/8/3246.pgm deleted file mode 100644 index b3719e3ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3263.pgm b/examples/autotiler/Mnist/test_img/8/3263.pgm deleted file mode 100644 index d840484f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3279.pgm b/examples/autotiler/Mnist/test_img/8/3279.pgm deleted file mode 100644 index 367888240..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3284.pgm b/examples/autotiler/Mnist/test_img/8/3284.pgm deleted file mode 100644 index 9a0dc9ff1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3289.pgm b/examples/autotiler/Mnist/test_img/8/3289.pgm deleted file mode 100644 index f35c4a54e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3313.pgm b/examples/autotiler/Mnist/test_img/8/3313.pgm deleted file mode 100644 index 9f9ef4482..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3319.pgm b/examples/autotiler/Mnist/test_img/8/3319.pgm deleted file mode 100644 index 6ae1e5b26..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3323.pgm b/examples/autotiler/Mnist/test_img/8/3323.pgm deleted file mode 100644 index 99abb78ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3324.pgm b/examples/autotiler/Mnist/test_img/8/3324.pgm deleted file mode 100644 index 646838bbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3324.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3340.pgm b/examples/autotiler/Mnist/test_img/8/3340.pgm deleted file mode 100644 index b349776f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3340.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3343.pgm b/examples/autotiler/Mnist/test_img/8/3343.pgm deleted file mode 100644 index da710fd64..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3348.pgm b/examples/autotiler/Mnist/test_img/8/3348.pgm deleted file mode 100644 index f9f080536..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3364.pgm b/examples/autotiler/Mnist/test_img/8/3364.pgm deleted file mode 100644 index e25384698..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3364.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3374.pgm b/examples/autotiler/Mnist/test_img/8/3374.pgm deleted file mode 100644 index 7c6de23cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/338.pgm b/examples/autotiler/Mnist/test_img/8/338.pgm deleted file mode 100644 index 977b0052c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3389.pgm b/examples/autotiler/Mnist/test_img/8/3389.pgm deleted file mode 100644 index 20cc15217..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3406.pgm b/examples/autotiler/Mnist/test_img/8/3406.pgm deleted file mode 100644 index c8a44d2f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/344.pgm b/examples/autotiler/Mnist/test_img/8/344.pgm deleted file mode 100644 index b73e715f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3440.pgm b/examples/autotiler/Mnist/test_img/8/3440.pgm deleted file mode 100644 index b95f23051..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3466.pgm b/examples/autotiler/Mnist/test_img/8/3466.pgm deleted file mode 100644 index b41db8320..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3473.pgm b/examples/autotiler/Mnist/test_img/8/3473.pgm deleted file mode 100644 index 1809fc5c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3473.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3492.pgm b/examples/autotiler/Mnist/test_img/8/3492.pgm deleted file mode 100644 index 67b03589b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3499.pgm b/examples/autotiler/Mnist/test_img/8/3499.pgm deleted file mode 100644 index 6f5bae4dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3502.pgm b/examples/autotiler/Mnist/test_img/8/3502.pgm deleted file mode 100644 index 6ef4a8667..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3509.pgm b/examples/autotiler/Mnist/test_img/8/3509.pgm deleted file mode 100644 index 31409790b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3509.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3516.pgm b/examples/autotiler/Mnist/test_img/8/3516.pgm deleted file mode 100644 index 508d14d23..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3519.pgm b/examples/autotiler/Mnist/test_img/8/3519.pgm deleted file mode 100644 index 1ee02a2e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3519.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3521.pgm b/examples/autotiler/Mnist/test_img/8/3521.pgm deleted file mode 100644 index 79c9fedc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/355.pgm b/examples/autotiler/Mnist/test_img/8/355.pgm deleted file mode 100644 index 5029ccb01..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/355.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3555.pgm b/examples/autotiler/Mnist/test_img/8/3555.pgm deleted file mode 100644 index 41441f666..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3559.pgm b/examples/autotiler/Mnist/test_img/8/3559.pgm deleted file mode 100644 index 5234fd0be..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3563.pgm b/examples/autotiler/Mnist/test_img/8/3563.pgm deleted file mode 100644 index 3fd3ca70f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3567.pgm b/examples/autotiler/Mnist/test_img/8/3567.pgm deleted file mode 100644 index be3b78d89..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3567.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3576.pgm b/examples/autotiler/Mnist/test_img/8/3576.pgm deleted file mode 100644 index d0136a692..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3576.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3583.pgm b/examples/autotiler/Mnist/test_img/8/3583.pgm deleted file mode 100644 index a4868dd1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3583.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3588.pgm b/examples/autotiler/Mnist/test_img/8/3588.pgm deleted file mode 100644 index 71b347241..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3626.pgm b/examples/autotiler/Mnist/test_img/8/3626.pgm deleted file mode 100644 index 17528970e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3627.pgm b/examples/autotiler/Mnist/test_img/8/3627.pgm deleted file mode 100644 index ad2105e39..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3629.pgm b/examples/autotiler/Mnist/test_img/8/3629.pgm deleted file mode 100644 index 1d45327f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3633.pgm b/examples/autotiler/Mnist/test_img/8/3633.pgm deleted file mode 100644 index f246a75a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3635.pgm b/examples/autotiler/Mnist/test_img/8/3635.pgm deleted file mode 100644 index 8a1457398..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3644.pgm b/examples/autotiler/Mnist/test_img/8/3644.pgm deleted file mode 100644 index 1a7174035..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3662.pgm b/examples/autotiler/Mnist/test_img/8/3662.pgm deleted file mode 100644 index 444073150..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3674.pgm b/examples/autotiler/Mnist/test_img/8/3674.pgm deleted file mode 100644 index 8d21b72af..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3674.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3704.pgm b/examples/autotiler/Mnist/test_img/8/3704.pgm deleted file mode 100644 index ce4c27cd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3705.pgm b/examples/autotiler/Mnist/test_img/8/3705.pgm deleted file mode 100644 index 5248035c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3707.pgm b/examples/autotiler/Mnist/test_img/8/3707.pgm deleted file mode 100644 index 5e396de40..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3708.pgm b/examples/autotiler/Mnist/test_img/8/3708.pgm deleted file mode 100644 index 29a2cc02a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3708.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3727.pgm b/examples/autotiler/Mnist/test_img/8/3727.pgm deleted file mode 100644 index 57bb8409f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3727.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/373.pgm b/examples/autotiler/Mnist/test_img/8/373.pgm deleted file mode 100644 index 3ca11afb2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3732.pgm b/examples/autotiler/Mnist/test_img/8/3732.pgm deleted file mode 100644 index d1759f2ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3737.pgm b/examples/autotiler/Mnist/test_img/8/3737.pgm deleted file mode 100644 index 098c0948c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/374.pgm b/examples/autotiler/Mnist/test_img/8/374.pgm deleted file mode 100644 index 1934102d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3757.pgm b/examples/autotiler/Mnist/test_img/8/3757.pgm deleted file mode 100644 index d31e91c24..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3771.pgm b/examples/autotiler/Mnist/test_img/8/3771.pgm deleted file mode 100644 index 442a88381..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3781.pgm b/examples/autotiler/Mnist/test_img/8/3781.pgm deleted file mode 100644 index dfea55a78..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3782.pgm b/examples/autotiler/Mnist/test_img/8/3782.pgm deleted file mode 100644 index 093a7ca28..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3794.pgm b/examples/autotiler/Mnist/test_img/8/3794.pgm deleted file mode 100644 index c0c23f26a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3794.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3807.pgm b/examples/autotiler/Mnist/test_img/8/3807.pgm deleted file mode 100644 index 5469b8f25..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3813.pgm b/examples/autotiler/Mnist/test_img/8/3813.pgm deleted file mode 100644 index 6a75482e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3816.pgm b/examples/autotiler/Mnist/test_img/8/3816.pgm deleted file mode 100644 index d418bd3df..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3829.pgm b/examples/autotiler/Mnist/test_img/8/3829.pgm deleted file mode 100644 index 0b77ab492..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3833.pgm b/examples/autotiler/Mnist/test_img/8/3833.pgm deleted file mode 100644 index 94a7dd46b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3845.pgm b/examples/autotiler/Mnist/test_img/8/3845.pgm deleted file mode 100644 index 4abd887ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3868.pgm b/examples/autotiler/Mnist/test_img/8/3868.pgm deleted file mode 100644 index 4f732c527..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3871.pgm b/examples/autotiler/Mnist/test_img/8/3871.pgm deleted file mode 100644 index ea834d99a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3873.pgm b/examples/autotiler/Mnist/test_img/8/3873.pgm deleted file mode 100644 index 497a97da4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3880.pgm b/examples/autotiler/Mnist/test_img/8/3880.pgm deleted file mode 100644 index 20f7fcf2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3880.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3882.pgm b/examples/autotiler/Mnist/test_img/8/3882.pgm deleted file mode 100644 index 7d93fbe2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3887.pgm b/examples/autotiler/Mnist/test_img/8/3887.pgm deleted file mode 100644 index 0ca34ecbb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3892.pgm b/examples/autotiler/Mnist/test_img/8/3892.pgm deleted file mode 100644 index f39705e65..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3905.pgm b/examples/autotiler/Mnist/test_img/8/3905.pgm deleted file mode 100644 index 33a51a9bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/391.pgm b/examples/autotiler/Mnist/test_img/8/391.pgm deleted file mode 100644 index 93c50159b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/391.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3934.pgm b/examples/autotiler/Mnist/test_img/8/3934.pgm deleted file mode 100644 index f528426a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3949.pgm b/examples/autotiler/Mnist/test_img/8/3949.pgm deleted file mode 100644 index 8aa794e9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3951.pgm b/examples/autotiler/Mnist/test_img/8/3951.pgm deleted file mode 100644 index db1711e70..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3954.pgm b/examples/autotiler/Mnist/test_img/8/3954.pgm deleted file mode 100644 index ea9612494..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3964.pgm b/examples/autotiler/Mnist/test_img/8/3964.pgm deleted file mode 100644 index bb3b42426..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3987.pgm b/examples/autotiler/Mnist/test_img/8/3987.pgm deleted file mode 100644 index 30553637c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3987.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/3988.pgm b/examples/autotiler/Mnist/test_img/8/3988.pgm deleted file mode 100644 index 931edd3e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/3988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/401.pgm b/examples/autotiler/Mnist/test_img/8/401.pgm deleted file mode 100644 index 0b5f5db8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4011.pgm b/examples/autotiler/Mnist/test_img/8/4011.pgm deleted file mode 100644 index 68665a953..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4020.pgm b/examples/autotiler/Mnist/test_img/8/4020.pgm deleted file mode 100644 index 9835841dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/403.pgm b/examples/autotiler/Mnist/test_img/8/403.pgm deleted file mode 100644 index ce60c9726..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4041.pgm b/examples/autotiler/Mnist/test_img/8/4041.pgm deleted file mode 100644 index 0743814f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4058.pgm b/examples/autotiler/Mnist/test_img/8/4058.pgm deleted file mode 100644 index 32c483e4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4068.pgm b/examples/autotiler/Mnist/test_img/8/4068.pgm deleted file mode 100644 index 04e20d9c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4075.pgm b/examples/autotiler/Mnist/test_img/8/4075.pgm deleted file mode 100644 index 2ca50e8b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4086.pgm b/examples/autotiler/Mnist/test_img/8/4086.pgm deleted file mode 100644 index 076a1de1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4092.pgm b/examples/autotiler/Mnist/test_img/8/4092.pgm deleted file mode 100644 index 203b83e5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4096.pgm b/examples/autotiler/Mnist/test_img/8/4096.pgm deleted file mode 100644 index e524a0748..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4096.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4112.pgm b/examples/autotiler/Mnist/test_img/8/4112.pgm deleted file mode 100644 index 647fa5a66..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4116.pgm b/examples/autotiler/Mnist/test_img/8/4116.pgm deleted file mode 100644 index 3f75e0d0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4117.pgm b/examples/autotiler/Mnist/test_img/8/4117.pgm deleted file mode 100644 index 2648cb890..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4117.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4121.pgm b/examples/autotiler/Mnist/test_img/8/4121.pgm deleted file mode 100644 index 7fd3bdbe7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4123.pgm b/examples/autotiler/Mnist/test_img/8/4123.pgm deleted file mode 100644 index 2d862bfb0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4123.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4124.pgm b/examples/autotiler/Mnist/test_img/8/4124.pgm deleted file mode 100644 index bf23c1143..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4126.pgm b/examples/autotiler/Mnist/test_img/8/4126.pgm deleted file mode 100644 index ed8a64336..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4136.pgm b/examples/autotiler/Mnist/test_img/8/4136.pgm deleted file mode 100644 index 4784c544d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4137.pgm b/examples/autotiler/Mnist/test_img/8/4137.pgm deleted file mode 100644 index f1af3cdbb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4140.pgm b/examples/autotiler/Mnist/test_img/8/4140.pgm deleted file mode 100644 index cf9ebdb9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4140.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4141.pgm b/examples/autotiler/Mnist/test_img/8/4141.pgm deleted file mode 100644 index a046f01f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4141.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4145.pgm b/examples/autotiler/Mnist/test_img/8/4145.pgm deleted file mode 100644 index 8b084db8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4159.pgm b/examples/autotiler/Mnist/test_img/8/4159.pgm deleted file mode 100644 index 0a1f4261c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4159.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4165.pgm b/examples/autotiler/Mnist/test_img/8/4165.pgm deleted file mode 100644 index 6bdf6102f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4207.pgm b/examples/autotiler/Mnist/test_img/8/4207.pgm deleted file mode 100644 index 1df971173..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4218.pgm b/examples/autotiler/Mnist/test_img/8/4218.pgm deleted file mode 100644 index 8407ce3a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4230.pgm b/examples/autotiler/Mnist/test_img/8/4230.pgm deleted file mode 100644 index bcfefd786..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4231.pgm b/examples/autotiler/Mnist/test_img/8/4231.pgm deleted file mode 100644 index 41fbfa1f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4246.pgm b/examples/autotiler/Mnist/test_img/8/4246.pgm deleted file mode 100644 index dab67ff0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4251.pgm b/examples/autotiler/Mnist/test_img/8/4251.pgm deleted file mode 100644 index 21cc98a77..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4251.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4253.pgm b/examples/autotiler/Mnist/test_img/8/4253.pgm deleted file mode 100644 index 92a2f91b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4253.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/429.pgm b/examples/autotiler/Mnist/test_img/8/429.pgm deleted file mode 100644 index f25bf1a3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4290.pgm b/examples/autotiler/Mnist/test_img/8/4290.pgm deleted file mode 100644 index 3802881ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4290.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4305.pgm b/examples/autotiler/Mnist/test_img/8/4305.pgm deleted file mode 100644 index c96cfc382..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4305.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/431.pgm b/examples/autotiler/Mnist/test_img/8/431.pgm deleted file mode 100644 index f0a064673..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/435.pgm b/examples/autotiler/Mnist/test_img/8/435.pgm deleted file mode 100644 index 688b2e185..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/436.pgm b/examples/autotiler/Mnist/test_img/8/436.pgm deleted file mode 100644 index 65e6553b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4362.pgm b/examples/autotiler/Mnist/test_img/8/4362.pgm deleted file mode 100644 index 525832e02..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4371.pgm b/examples/autotiler/Mnist/test_img/8/4371.pgm deleted file mode 100644 index b275e4f87..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4372.pgm b/examples/autotiler/Mnist/test_img/8/4372.pgm deleted file mode 100644 index 6c5ef3a79..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4375.pgm b/examples/autotiler/Mnist/test_img/8/4375.pgm deleted file mode 100644 index e218c8bfc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4376.pgm b/examples/autotiler/Mnist/test_img/8/4376.pgm deleted file mode 100644 index c1475bd23..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4380.pgm b/examples/autotiler/Mnist/test_img/8/4380.pgm deleted file mode 100644 index 4f3b4ed1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4389.pgm b/examples/autotiler/Mnist/test_img/8/4389.pgm deleted file mode 100644 index 584707d2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4390.pgm b/examples/autotiler/Mnist/test_img/8/4390.pgm deleted file mode 100644 index e195dfb9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4390.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4398.pgm b/examples/autotiler/Mnist/test_img/8/4398.pgm deleted file mode 100644 index f61850fb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4398.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4399.pgm b/examples/autotiler/Mnist/test_img/8/4399.pgm deleted file mode 100644 index 73e058529..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4399.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4411.pgm b/examples/autotiler/Mnist/test_img/8/4411.pgm deleted file mode 100644 index 719488ef2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4419.pgm b/examples/autotiler/Mnist/test_img/8/4419.pgm deleted file mode 100644 index f7c56456b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4419.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4429.pgm b/examples/autotiler/Mnist/test_img/8/4429.pgm deleted file mode 100644 index b33959550..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4434.pgm b/examples/autotiler/Mnist/test_img/8/4434.pgm deleted file mode 100644 index e834df8b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4452.pgm b/examples/autotiler/Mnist/test_img/8/4452.pgm deleted file mode 100644 index db6f9d8fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4455.pgm b/examples/autotiler/Mnist/test_img/8/4455.pgm deleted file mode 100644 index bd6688518..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4478.pgm b/examples/autotiler/Mnist/test_img/8/4478.pgm deleted file mode 100644 index ddda261a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4486.pgm b/examples/autotiler/Mnist/test_img/8/4486.pgm deleted file mode 100644 index c3a6b7369..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4496.pgm b/examples/autotiler/Mnist/test_img/8/4496.pgm deleted file mode 100644 index 233a2c165..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4497.pgm b/examples/autotiler/Mnist/test_img/8/4497.pgm deleted file mode 100644 index 1914361e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4508.pgm b/examples/autotiler/Mnist/test_img/8/4508.pgm deleted file mode 100644 index b0d396ad1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4513.pgm b/examples/autotiler/Mnist/test_img/8/4513.pgm deleted file mode 100644 index 30d4cc0d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4513.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4518.pgm b/examples/autotiler/Mnist/test_img/8/4518.pgm deleted file mode 100644 index 2b792f864..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4518.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4523.pgm b/examples/autotiler/Mnist/test_img/8/4523.pgm deleted file mode 100644 index a0a0224b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4543.pgm b/examples/autotiler/Mnist/test_img/8/4543.pgm deleted file mode 100644 index 1ca05ec56..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4545.pgm b/examples/autotiler/Mnist/test_img/8/4545.pgm deleted file mode 100644 index c41cd4769..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4572.pgm b/examples/autotiler/Mnist/test_img/8/4572.pgm deleted file mode 100644 index 650797f50..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/458.pgm b/examples/autotiler/Mnist/test_img/8/458.pgm deleted file mode 100644 index c5be125bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/458.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4601.pgm b/examples/autotiler/Mnist/test_img/8/4601.pgm deleted file mode 100644 index 409ce0a40..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4608.pgm b/examples/autotiler/Mnist/test_img/8/4608.pgm deleted file mode 100644 index 4fd65efe8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4626.pgm b/examples/autotiler/Mnist/test_img/8/4626.pgm deleted file mode 100644 index fde90e947..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4626.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4629.pgm b/examples/autotiler/Mnist/test_img/8/4629.pgm deleted file mode 100644 index abcd8adce..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4634.pgm b/examples/autotiler/Mnist/test_img/8/4634.pgm deleted file mode 100644 index 38c9be566..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4639.pgm b/examples/autotiler/Mnist/test_img/8/4639.pgm deleted file mode 100644 index 170f64ceb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4640.pgm b/examples/autotiler/Mnist/test_img/8/4640.pgm deleted file mode 100644 index 812ccf00e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/465.pgm b/examples/autotiler/Mnist/test_img/8/465.pgm deleted file mode 100644 index 205ba2c10..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/465.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/466.pgm b/examples/autotiler/Mnist/test_img/8/466.pgm deleted file mode 100644 index 01ed67477..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4667.pgm b/examples/autotiler/Mnist/test_img/8/4667.pgm deleted file mode 100644 index 9ea3d759a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4671.pgm b/examples/autotiler/Mnist/test_img/8/4671.pgm deleted file mode 100644 index 975b532c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/470.pgm b/examples/autotiler/Mnist/test_img/8/470.pgm deleted file mode 100644 index e992de5b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/470.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4707.pgm b/examples/autotiler/Mnist/test_img/8/4707.pgm deleted file mode 100644 index 273b2ac10..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4724.pgm b/examples/autotiler/Mnist/test_img/8/4724.pgm deleted file mode 100644 index 5f859af13..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4724.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4726.pgm b/examples/autotiler/Mnist/test_img/8/4726.pgm deleted file mode 100644 index 68a066a83..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4731.pgm b/examples/autotiler/Mnist/test_img/8/4731.pgm deleted file mode 100644 index 6788a3bdf..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4731.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4737.pgm b/examples/autotiler/Mnist/test_img/8/4737.pgm deleted file mode 100644 index 3769c9f95..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4737.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/474.pgm b/examples/autotiler/Mnist/test_img/8/474.pgm deleted file mode 100644 index 6fc4c90b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/474.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4743.pgm b/examples/autotiler/Mnist/test_img/8/4743.pgm deleted file mode 100644 index 0ad85695d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4744.pgm b/examples/autotiler/Mnist/test_img/8/4744.pgm deleted file mode 100644 index edce4d7b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4748.pgm b/examples/autotiler/Mnist/test_img/8/4748.pgm deleted file mode 100644 index c8f343246..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4750.pgm b/examples/autotiler/Mnist/test_img/8/4750.pgm deleted file mode 100644 index 8365cf7bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4753.pgm b/examples/autotiler/Mnist/test_img/8/4753.pgm deleted file mode 100644 index 4af6cda26..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4756.pgm b/examples/autotiler/Mnist/test_img/8/4756.pgm deleted file mode 100644 index b5a5bee4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4777.pgm b/examples/autotiler/Mnist/test_img/8/4777.pgm deleted file mode 100644 index 53fdb613d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4789.pgm b/examples/autotiler/Mnist/test_img/8/4789.pgm deleted file mode 100644 index 3bab933f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4789.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4792.pgm b/examples/autotiler/Mnist/test_img/8/4792.pgm deleted file mode 100644 index 9071036b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4797.pgm b/examples/autotiler/Mnist/test_img/8/4797.pgm deleted file mode 100644 index 47ef9bb6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4807.pgm b/examples/autotiler/Mnist/test_img/8/4807.pgm deleted file mode 100644 index a96499cf8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4817.pgm b/examples/autotiler/Mnist/test_img/8/4817.pgm deleted file mode 100644 index 5109eb2d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4820.pgm b/examples/autotiler/Mnist/test_img/8/4820.pgm deleted file mode 100644 index 5b3259427..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4822.pgm b/examples/autotiler/Mnist/test_img/8/4822.pgm deleted file mode 100644 index b0c14f8d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4822.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4825.pgm b/examples/autotiler/Mnist/test_img/8/4825.pgm deleted file mode 100644 index 4c8897d3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4829.pgm b/examples/autotiler/Mnist/test_img/8/4829.pgm deleted file mode 100644 index db0bb9256..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4839.pgm b/examples/autotiler/Mnist/test_img/8/4839.pgm deleted file mode 100644 index f11c1814d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4845.pgm b/examples/autotiler/Mnist/test_img/8/4845.pgm deleted file mode 100644 index 1180c80c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4849.pgm b/examples/autotiler/Mnist/test_img/8/4849.pgm deleted file mode 100644 index bdbf7e8f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4849.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4850.pgm b/examples/autotiler/Mnist/test_img/8/4850.pgm deleted file mode 100644 index 51aa17a0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4852.pgm b/examples/autotiler/Mnist/test_img/8/4852.pgm deleted file mode 100644 index 66b2d06f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4852.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/486.pgm b/examples/autotiler/Mnist/test_img/8/486.pgm deleted file mode 100644 index 92bed2dff..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4863.pgm b/examples/autotiler/Mnist/test_img/8/4863.pgm deleted file mode 100644 index cf852cd6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4879.pgm b/examples/autotiler/Mnist/test_img/8/4879.pgm deleted file mode 100644 index b05eca66a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4890.pgm b/examples/autotiler/Mnist/test_img/8/4890.pgm deleted file mode 100644 index 5a4b47106..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4895.pgm b/examples/autotiler/Mnist/test_img/8/4895.pgm deleted file mode 100644 index c841fd5cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4922.pgm b/examples/autotiler/Mnist/test_img/8/4922.pgm deleted file mode 100644 index 3176a0024..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4922.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4948.pgm b/examples/autotiler/Mnist/test_img/8/4948.pgm deleted file mode 100644 index b78005cee..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4948.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/495.pgm b/examples/autotiler/Mnist/test_img/8/495.pgm deleted file mode 100644 index 1ab651132..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4956.pgm b/examples/autotiler/Mnist/test_img/8/4956.pgm deleted file mode 100644 index db64b4594..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4960.pgm b/examples/autotiler/Mnist/test_img/8/4960.pgm deleted file mode 100644 index b36ed5f94..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4978.pgm b/examples/autotiler/Mnist/test_img/8/4978.pgm deleted file mode 100644 index c13660a10..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4978.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4982.pgm b/examples/autotiler/Mnist/test_img/8/4982.pgm deleted file mode 100644 index f6e32d866..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4982.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/4986.pgm b/examples/autotiler/Mnist/test_img/8/4986.pgm deleted file mode 100644 index 6677af597..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/4986.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5003.pgm b/examples/autotiler/Mnist/test_img/8/5003.pgm deleted file mode 100644 index e795393a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5003.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5011.pgm b/examples/autotiler/Mnist/test_img/8/5011.pgm deleted file mode 100644 index 86bedf417..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5016.pgm b/examples/autotiler/Mnist/test_img/8/5016.pgm deleted file mode 100644 index 47d1a1694..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5041.pgm b/examples/autotiler/Mnist/test_img/8/5041.pgm deleted file mode 100644 index 3384ef819..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5049.pgm b/examples/autotiler/Mnist/test_img/8/5049.pgm deleted file mode 100644 index f2ab8e9a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5059.pgm b/examples/autotiler/Mnist/test_img/8/5059.pgm deleted file mode 100644 index d66be7cef..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5059.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5061.pgm b/examples/autotiler/Mnist/test_img/8/5061.pgm deleted file mode 100644 index 6537abfd6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5065.pgm b/examples/autotiler/Mnist/test_img/8/5065.pgm deleted file mode 100644 index 1aa37841b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5075.pgm b/examples/autotiler/Mnist/test_img/8/5075.pgm deleted file mode 100644 index 7ce862589..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5103.pgm b/examples/autotiler/Mnist/test_img/8/5103.pgm deleted file mode 100644 index 26f077ae6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5118.pgm b/examples/autotiler/Mnist/test_img/8/5118.pgm deleted file mode 100644 index f4581f50f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5129.pgm b/examples/autotiler/Mnist/test_img/8/5129.pgm deleted file mode 100644 index 991a3a640..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5138.pgm b/examples/autotiler/Mnist/test_img/8/5138.pgm deleted file mode 100644 index 59a0304b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5138.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5142.pgm b/examples/autotiler/Mnist/test_img/8/5142.pgm deleted file mode 100644 index 46e3ca3ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5163.pgm b/examples/autotiler/Mnist/test_img/8/5163.pgm deleted file mode 100644 index 3bc7e5c1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5173.pgm b/examples/autotiler/Mnist/test_img/8/5173.pgm deleted file mode 100644 index c8303b5e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5176.pgm b/examples/autotiler/Mnist/test_img/8/5176.pgm deleted file mode 100644 index 5e8a27bd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5176.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5183.pgm b/examples/autotiler/Mnist/test_img/8/5183.pgm deleted file mode 100644 index 9f15a0d7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5184.pgm b/examples/autotiler/Mnist/test_img/8/5184.pgm deleted file mode 100644 index 911f82067..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5188.pgm b/examples/autotiler/Mnist/test_img/8/5188.pgm deleted file mode 100644 index 7ce5a1152..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5198.pgm b/examples/autotiler/Mnist/test_img/8/5198.pgm deleted file mode 100644 index f8650be54..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/520.pgm b/examples/autotiler/Mnist/test_img/8/520.pgm deleted file mode 100644 index 2ab397679..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5204.pgm b/examples/autotiler/Mnist/test_img/8/5204.pgm deleted file mode 100644 index 2cf0fac45..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5204.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5209.pgm b/examples/autotiler/Mnist/test_img/8/5209.pgm deleted file mode 100644 index ad1511b9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5226.pgm b/examples/autotiler/Mnist/test_img/8/5226.pgm deleted file mode 100644 index 52e065499..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5226.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5231.pgm b/examples/autotiler/Mnist/test_img/8/5231.pgm deleted file mode 100644 index e2cdfbfe2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5231.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5236.pgm b/examples/autotiler/Mnist/test_img/8/5236.pgm deleted file mode 100644 index 4ec59a012..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/527.pgm b/examples/autotiler/Mnist/test_img/8/527.pgm deleted file mode 100644 index f9f3d381f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5278.pgm b/examples/autotiler/Mnist/test_img/8/5278.pgm deleted file mode 100644 index 4fbfe0020..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5288.pgm b/examples/autotiler/Mnist/test_img/8/5288.pgm deleted file mode 100644 index f3a246c28..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5298.pgm b/examples/autotiler/Mnist/test_img/8/5298.pgm deleted file mode 100644 index e94f45c3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5300.pgm b/examples/autotiler/Mnist/test_img/8/5300.pgm deleted file mode 100644 index 183972883..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5306.pgm b/examples/autotiler/Mnist/test_img/8/5306.pgm deleted file mode 100644 index 481920584..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5306.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5343.pgm b/examples/autotiler/Mnist/test_img/8/5343.pgm deleted file mode 100644 index 5709bb201..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5349.pgm b/examples/autotiler/Mnist/test_img/8/5349.pgm deleted file mode 100644 index 89738f12e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5349.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5360.pgm b/examples/autotiler/Mnist/test_img/8/5360.pgm deleted file mode 100644 index 646fb7efa..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5376.pgm b/examples/autotiler/Mnist/test_img/8/5376.pgm deleted file mode 100644 index 00b76b1ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5379.pgm b/examples/autotiler/Mnist/test_img/8/5379.pgm deleted file mode 100644 index 7ae3c6f90..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/538.pgm b/examples/autotiler/Mnist/test_img/8/538.pgm deleted file mode 100644 index c7ccd2e0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5380.pgm b/examples/autotiler/Mnist/test_img/8/5380.pgm deleted file mode 100644 index 012c8c57b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5387.pgm b/examples/autotiler/Mnist/test_img/8/5387.pgm deleted file mode 100644 index e9ebf493b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5394.pgm b/examples/autotiler/Mnist/test_img/8/5394.pgm deleted file mode 100644 index a2450f4e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5403.pgm b/examples/autotiler/Mnist/test_img/8/5403.pgm deleted file mode 100644 index 7a792bbbc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5413.pgm b/examples/autotiler/Mnist/test_img/8/5413.pgm deleted file mode 100644 index 5df044b50..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/542.pgm b/examples/autotiler/Mnist/test_img/8/542.pgm deleted file mode 100644 index 8adde995d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/542.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5423.pgm b/examples/autotiler/Mnist/test_img/8/5423.pgm deleted file mode 100644 index d719884f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/543.pgm b/examples/autotiler/Mnist/test_img/8/543.pgm deleted file mode 100644 index 7ee6a933e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5433.pgm b/examples/autotiler/Mnist/test_img/8/5433.pgm deleted file mode 100644 index 50446659a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5434.pgm b/examples/autotiler/Mnist/test_img/8/5434.pgm deleted file mode 100644 index 5bf80fe8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5438.pgm b/examples/autotiler/Mnist/test_img/8/5438.pgm deleted file mode 100644 index af0ed42c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5462.pgm b/examples/autotiler/Mnist/test_img/8/5462.pgm deleted file mode 100644 index e0464106c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5478.pgm b/examples/autotiler/Mnist/test_img/8/5478.pgm deleted file mode 100644 index 7c65633c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5489.pgm b/examples/autotiler/Mnist/test_img/8/5489.pgm deleted file mode 100644 index 7ede1a32c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5493.pgm b/examples/autotiler/Mnist/test_img/8/5493.pgm deleted file mode 100644 index 44b0619a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5495.pgm b/examples/autotiler/Mnist/test_img/8/5495.pgm deleted file mode 100644 index 3d1a6358d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5522.pgm b/examples/autotiler/Mnist/test_img/8/5522.pgm deleted file mode 100644 index 59af7747a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/553.pgm b/examples/autotiler/Mnist/test_img/8/553.pgm deleted file mode 100644 index aa0f5a9e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5530.pgm b/examples/autotiler/Mnist/test_img/8/5530.pgm deleted file mode 100644 index 89b1a5514..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5543.pgm b/examples/autotiler/Mnist/test_img/8/5543.pgm deleted file mode 100644 index 5b213c155..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5543.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5547.pgm b/examples/autotiler/Mnist/test_img/8/5547.pgm deleted file mode 100644 index 03ec649e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5548.pgm b/examples/autotiler/Mnist/test_img/8/5548.pgm deleted file mode 100644 index 127111885..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5569.pgm b/examples/autotiler/Mnist/test_img/8/5569.pgm deleted file mode 100644 index ff54f6318..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5578.pgm b/examples/autotiler/Mnist/test_img/8/5578.pgm deleted file mode 100644 index 10ae32734..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5586.pgm b/examples/autotiler/Mnist/test_img/8/5586.pgm deleted file mode 100644 index a72ee8b9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5589.pgm b/examples/autotiler/Mnist/test_img/8/5589.pgm deleted file mode 100644 index 592e37482..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5601.pgm b/examples/autotiler/Mnist/test_img/8/5601.pgm deleted file mode 100644 index c3d3190d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5611.pgm b/examples/autotiler/Mnist/test_img/8/5611.pgm deleted file mode 100644 index bc3e8db36..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5611.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5621.pgm b/examples/autotiler/Mnist/test_img/8/5621.pgm deleted file mode 100644 index 1d2b3ee41..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/563.pgm b/examples/autotiler/Mnist/test_img/8/563.pgm deleted file mode 100644 index 4a1df546e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5644.pgm b/examples/autotiler/Mnist/test_img/8/5644.pgm deleted file mode 100644 index 62ad5988a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5647.pgm b/examples/autotiler/Mnist/test_img/8/5647.pgm deleted file mode 100644 index 726f17767..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5648.pgm b/examples/autotiler/Mnist/test_img/8/5648.pgm deleted file mode 100644 index 041a64a53..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5650.pgm b/examples/autotiler/Mnist/test_img/8/5650.pgm deleted file mode 100644 index 5e0ed6607..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5656.pgm b/examples/autotiler/Mnist/test_img/8/5656.pgm deleted file mode 100644 index b486984a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5675.pgm b/examples/autotiler/Mnist/test_img/8/5675.pgm deleted file mode 100644 index 436191afc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5675.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5678.pgm b/examples/autotiler/Mnist/test_img/8/5678.pgm deleted file mode 100644 index cbc07a61c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5680.pgm b/examples/autotiler/Mnist/test_img/8/5680.pgm deleted file mode 100644 index 50d3b26d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5701.pgm b/examples/autotiler/Mnist/test_img/8/5701.pgm deleted file mode 100644 index 8217d9a06..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5710.pgm b/examples/autotiler/Mnist/test_img/8/5710.pgm deleted file mode 100644 index 403c26217..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/572.pgm b/examples/autotiler/Mnist/test_img/8/572.pgm deleted file mode 100644 index 84ea0ca11..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5729.pgm b/examples/autotiler/Mnist/test_img/8/5729.pgm deleted file mode 100644 index c0ba4c360..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5729.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5744.pgm b/examples/autotiler/Mnist/test_img/8/5744.pgm deleted file mode 100644 index e9346c600..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5749.pgm b/examples/autotiler/Mnist/test_img/8/5749.pgm deleted file mode 100644 index 7ece54c1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5749.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5765.pgm b/examples/autotiler/Mnist/test_img/8/5765.pgm deleted file mode 100644 index bb65eee50..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5771.pgm b/examples/autotiler/Mnist/test_img/8/5771.pgm deleted file mode 100644 index 56bb79857..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5771.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5775.pgm b/examples/autotiler/Mnist/test_img/8/5775.pgm deleted file mode 100644 index 25e4fc2de..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5775.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5777.pgm b/examples/autotiler/Mnist/test_img/8/5777.pgm deleted file mode 100644 index 4e9d6fb28..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5777.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5797.pgm b/examples/autotiler/Mnist/test_img/8/5797.pgm deleted file mode 100644 index 6b0c35aec..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5797.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/580.pgm b/examples/autotiler/Mnist/test_img/8/580.pgm deleted file mode 100644 index 955448a8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5803.pgm b/examples/autotiler/Mnist/test_img/8/5803.pgm deleted file mode 100644 index 9ad507ec2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/582.pgm b/examples/autotiler/Mnist/test_img/8/582.pgm deleted file mode 100644 index 8d449d1a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5836.pgm b/examples/autotiler/Mnist/test_img/8/5836.pgm deleted file mode 100644 index a45ae7445..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5836.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5846.pgm b/examples/autotiler/Mnist/test_img/8/5846.pgm deleted file mode 100644 index 7e68c2ac6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5855.pgm b/examples/autotiler/Mnist/test_img/8/5855.pgm deleted file mode 100644 index 950e2b578..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5855.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5857.pgm b/examples/autotiler/Mnist/test_img/8/5857.pgm deleted file mode 100644 index 0c2110591..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5864.pgm b/examples/autotiler/Mnist/test_img/8/5864.pgm deleted file mode 100644 index 197a9d1a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5875.pgm b/examples/autotiler/Mnist/test_img/8/5875.pgm deleted file mode 100644 index 9d4a109a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5876.pgm b/examples/autotiler/Mnist/test_img/8/5876.pgm deleted file mode 100644 index 97db80dd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5881.pgm b/examples/autotiler/Mnist/test_img/8/5881.pgm deleted file mode 100644 index 874b46b2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5905.pgm b/examples/autotiler/Mnist/test_img/8/5905.pgm deleted file mode 100644 index 27fb4d269..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/591.pgm b/examples/autotiler/Mnist/test_img/8/591.pgm deleted file mode 100644 index 82da10e2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/591.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5911.pgm b/examples/autotiler/Mnist/test_img/8/5911.pgm deleted file mode 100644 index 14177a578..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5911.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5940.pgm b/examples/autotiler/Mnist/test_img/8/5940.pgm deleted file mode 100644 index 5886e29e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5940.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5950.pgm b/examples/autotiler/Mnist/test_img/8/5950.pgm deleted file mode 100644 index 399a33e40..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/596.pgm b/examples/autotiler/Mnist/test_img/8/596.pgm deleted file mode 100644 index b75c06423..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5960.pgm b/examples/autotiler/Mnist/test_img/8/5960.pgm deleted file mode 100644 index 92ec4db9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5960.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5962.pgm b/examples/autotiler/Mnist/test_img/8/5962.pgm deleted file mode 100644 index 518c41f10..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5967.pgm b/examples/autotiler/Mnist/test_img/8/5967.pgm deleted file mode 100644 index 7ffa9733f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5976.pgm b/examples/autotiler/Mnist/test_img/8/5976.pgm deleted file mode 100644 index ec758fbf4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5976.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/5995.pgm b/examples/autotiler/Mnist/test_img/8/5995.pgm deleted file mode 100644 index d4b8b6a92..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/5995.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6001.pgm b/examples/autotiler/Mnist/test_img/8/6001.pgm deleted file mode 100644 index 20b128f2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6004.pgm b/examples/autotiler/Mnist/test_img/8/6004.pgm deleted file mode 100644 index 9b9d6c076..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/601.pgm b/examples/autotiler/Mnist/test_img/8/601.pgm deleted file mode 100644 index 8b314b1d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/601.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6018.pgm b/examples/autotiler/Mnist/test_img/8/6018.pgm deleted file mode 100644 index 917917f8f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6018.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6024.pgm b/examples/autotiler/Mnist/test_img/8/6024.pgm deleted file mode 100644 index fb637d5cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6024.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/603.pgm b/examples/autotiler/Mnist/test_img/8/603.pgm deleted file mode 100644 index b4f89a209..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6049.pgm b/examples/autotiler/Mnist/test_img/8/6049.pgm deleted file mode 100644 index fe55e968e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6056.pgm b/examples/autotiler/Mnist/test_img/8/6056.pgm deleted file mode 100644 index 4207120f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/606.pgm b/examples/autotiler/Mnist/test_img/8/606.pgm deleted file mode 100644 index 292705dbf..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/606.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6070.pgm b/examples/autotiler/Mnist/test_img/8/6070.pgm deleted file mode 100644 index 2b73a2a2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6080.pgm b/examples/autotiler/Mnist/test_img/8/6080.pgm deleted file mode 100644 index 48f324e9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6090.pgm b/examples/autotiler/Mnist/test_img/8/6090.pgm deleted file mode 100644 index 2374703b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/61.pgm b/examples/autotiler/Mnist/test_img/8/61.pgm deleted file mode 100644 index dae6e0bfb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/61.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6137.pgm b/examples/autotiler/Mnist/test_img/8/6137.pgm deleted file mode 100644 index 2f38feb0a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6145.pgm b/examples/autotiler/Mnist/test_img/8/6145.pgm deleted file mode 100644 index f46ef44c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6150.pgm b/examples/autotiler/Mnist/test_img/8/6150.pgm deleted file mode 100644 index 2aaec6fa6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6153.pgm b/examples/autotiler/Mnist/test_img/8/6153.pgm deleted file mode 100644 index 90788c626..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6154.pgm b/examples/autotiler/Mnist/test_img/8/6154.pgm deleted file mode 100644 index 3af825ce2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6161.pgm b/examples/autotiler/Mnist/test_img/8/6161.pgm deleted file mode 100644 index 8e0e19b5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6178.pgm b/examples/autotiler/Mnist/test_img/8/6178.pgm deleted file mode 100644 index 0c55ed68a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6178.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6189.pgm b/examples/autotiler/Mnist/test_img/8/6189.pgm deleted file mode 100644 index 44d8b968b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6199.pgm b/examples/autotiler/Mnist/test_img/8/6199.pgm deleted file mode 100644 index 97611f89f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6209.pgm b/examples/autotiler/Mnist/test_img/8/6209.pgm deleted file mode 100644 index 42e28aa0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/621.pgm b/examples/autotiler/Mnist/test_img/8/621.pgm deleted file mode 100644 index 306e85bd4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/621.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6212.pgm b/examples/autotiler/Mnist/test_img/8/6212.pgm deleted file mode 100644 index 2b2106f6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6219.pgm b/examples/autotiler/Mnist/test_img/8/6219.pgm deleted file mode 100644 index b2725130c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6238.pgm b/examples/autotiler/Mnist/test_img/8/6238.pgm deleted file mode 100644 index eb41f5492..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6238.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6245.pgm b/examples/autotiler/Mnist/test_img/8/6245.pgm deleted file mode 100644 index 06cd6ae2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6248.pgm b/examples/autotiler/Mnist/test_img/8/6248.pgm deleted file mode 100644 index 9373de26b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6248.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6262.pgm b/examples/autotiler/Mnist/test_img/8/6262.pgm deleted file mode 100644 index e2c5f2dbf..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6275.pgm b/examples/autotiler/Mnist/test_img/8/6275.pgm deleted file mode 100644 index 84b22046b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6275.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6296.pgm b/examples/autotiler/Mnist/test_img/8/6296.pgm deleted file mode 100644 index 95979dc9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6296.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6297.pgm b/examples/autotiler/Mnist/test_img/8/6297.pgm deleted file mode 100644 index 8c763438b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6304.pgm b/examples/autotiler/Mnist/test_img/8/6304.pgm deleted file mode 100644 index dad0bba4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/631.pgm b/examples/autotiler/Mnist/test_img/8/631.pgm deleted file mode 100644 index 4312b8066..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6317.pgm b/examples/autotiler/Mnist/test_img/8/6317.pgm deleted file mode 100644 index 2c032c261..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6317.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6327.pgm b/examples/autotiler/Mnist/test_img/8/6327.pgm deleted file mode 100644 index dc18569c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6336.pgm b/examples/autotiler/Mnist/test_img/8/6336.pgm deleted file mode 100644 index 656148a6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6343.pgm b/examples/autotiler/Mnist/test_img/8/6343.pgm deleted file mode 100644 index 4b7e90b82..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6347.pgm b/examples/autotiler/Mnist/test_img/8/6347.pgm deleted file mode 100644 index 7558d36a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6348.pgm b/examples/autotiler/Mnist/test_img/8/6348.pgm deleted file mode 100644 index 3d592056f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6348.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6358.pgm b/examples/autotiler/Mnist/test_img/8/6358.pgm deleted file mode 100644 index 9fc218ab7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6359.pgm b/examples/autotiler/Mnist/test_img/8/6359.pgm deleted file mode 100644 index 9d0784fcf..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6372.pgm b/examples/autotiler/Mnist/test_img/8/6372.pgm deleted file mode 100644 index 4dde18221..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6395.pgm b/examples/autotiler/Mnist/test_img/8/6395.pgm deleted file mode 100644 index 98e199bcd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6395.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6403.pgm b/examples/autotiler/Mnist/test_img/8/6403.pgm deleted file mode 100644 index 165fd0377..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6403.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6404.pgm b/examples/autotiler/Mnist/test_img/8/6404.pgm deleted file mode 100644 index b8c56e72b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/641.pgm b/examples/autotiler/Mnist/test_img/8/641.pgm deleted file mode 100644 index a8e526d26..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6410.pgm b/examples/autotiler/Mnist/test_img/8/6410.pgm deleted file mode 100644 index f8217cfdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6435.pgm b/examples/autotiler/Mnist/test_img/8/6435.pgm deleted file mode 100644 index 2786dd213..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6442.pgm b/examples/autotiler/Mnist/test_img/8/6442.pgm deleted file mode 100644 index bd5d427e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6442.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6450.pgm b/examples/autotiler/Mnist/test_img/8/6450.pgm deleted file mode 100644 index 8aa1f2572..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6457.pgm b/examples/autotiler/Mnist/test_img/8/6457.pgm deleted file mode 100644 index 295d92f9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6464.pgm b/examples/autotiler/Mnist/test_img/8/6464.pgm deleted file mode 100644 index c55e7a312..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6467.pgm b/examples/autotiler/Mnist/test_img/8/6467.pgm deleted file mode 100644 index b47bc273a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6477.pgm b/examples/autotiler/Mnist/test_img/8/6477.pgm deleted file mode 100644 index c26718e22..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6485.pgm b/examples/autotiler/Mnist/test_img/8/6485.pgm deleted file mode 100644 index 8db517898..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6492.pgm b/examples/autotiler/Mnist/test_img/8/6492.pgm deleted file mode 100644 index 5c06195eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6493.pgm b/examples/autotiler/Mnist/test_img/8/6493.pgm deleted file mode 100644 index fd093b546..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6495.pgm b/examples/autotiler/Mnist/test_img/8/6495.pgm deleted file mode 100644 index 2378e43fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6514.pgm b/examples/autotiler/Mnist/test_img/8/6514.pgm deleted file mode 100644 index 6fee438e4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6523.pgm b/examples/autotiler/Mnist/test_img/8/6523.pgm deleted file mode 100644 index 5ae1308a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/655.pgm b/examples/autotiler/Mnist/test_img/8/655.pgm deleted file mode 100644 index 182f4010e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6555.pgm b/examples/autotiler/Mnist/test_img/8/6555.pgm deleted file mode 100644 index b82aa1646..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6578.pgm b/examples/autotiler/Mnist/test_img/8/6578.pgm deleted file mode 100644 index b7719952e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6578.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6587.pgm b/examples/autotiler/Mnist/test_img/8/6587.pgm deleted file mode 100644 index c6749db1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6595.pgm b/examples/autotiler/Mnist/test_img/8/6595.pgm deleted file mode 100644 index 982ef3534..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6595.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6603.pgm b/examples/autotiler/Mnist/test_img/8/6603.pgm deleted file mode 100644 index 4941cec32..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6612.pgm b/examples/autotiler/Mnist/test_img/8/6612.pgm deleted file mode 100644 index ecd86493c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6617.pgm b/examples/autotiler/Mnist/test_img/8/6617.pgm deleted file mode 100644 index c86ff0556..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6617.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6625.pgm b/examples/autotiler/Mnist/test_img/8/6625.pgm deleted file mode 100644 index 407198132..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6625.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6629.pgm b/examples/autotiler/Mnist/test_img/8/6629.pgm deleted file mode 100644 index 1418d23e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6631.pgm b/examples/autotiler/Mnist/test_img/8/6631.pgm deleted file mode 100644 index 7c618ad0c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/664.pgm b/examples/autotiler/Mnist/test_img/8/664.pgm deleted file mode 100644 index b446e689f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6641.pgm b/examples/autotiler/Mnist/test_img/8/6641.pgm deleted file mode 100644 index 4c40ed33b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6649.pgm b/examples/autotiler/Mnist/test_img/8/6649.pgm deleted file mode 100644 index 4a8fef7a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6654.pgm b/examples/autotiler/Mnist/test_img/8/6654.pgm deleted file mode 100644 index b0812b912..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6654.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6657.pgm b/examples/autotiler/Mnist/test_img/8/6657.pgm deleted file mode 100644 index bd35e134b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6657.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6659.pgm b/examples/autotiler/Mnist/test_img/8/6659.pgm deleted file mode 100644 index 8464e5516..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6686.pgm b/examples/autotiler/Mnist/test_img/8/6686.pgm deleted file mode 100644 index 7b5b42dbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6686.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6709.pgm b/examples/autotiler/Mnist/test_img/8/6709.pgm deleted file mode 100644 index 1f9fefbc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6725.pgm b/examples/autotiler/Mnist/test_img/8/6725.pgm deleted file mode 100644 index 2af37d9eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6735.pgm b/examples/autotiler/Mnist/test_img/8/6735.pgm deleted file mode 100644 index 64081e85a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6755.pgm b/examples/autotiler/Mnist/test_img/8/6755.pgm deleted file mode 100644 index bd60bd37a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6765.pgm b/examples/autotiler/Mnist/test_img/8/6765.pgm deleted file mode 100644 index 29de12257..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6776.pgm b/examples/autotiler/Mnist/test_img/8/6776.pgm deleted file mode 100644 index bc4a0eb1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6806.pgm b/examples/autotiler/Mnist/test_img/8/6806.pgm deleted file mode 100644 index e637114ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6816.pgm b/examples/autotiler/Mnist/test_img/8/6816.pgm deleted file mode 100644 index b0ecf8733..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6826.pgm b/examples/autotiler/Mnist/test_img/8/6826.pgm deleted file mode 100644 index c09cc718d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6834.pgm b/examples/autotiler/Mnist/test_img/8/6834.pgm deleted file mode 100644 index aa91ab34c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6838.pgm b/examples/autotiler/Mnist/test_img/8/6838.pgm deleted file mode 100644 index f1e68e470..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6838.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6839.pgm b/examples/autotiler/Mnist/test_img/8/6839.pgm deleted file mode 100644 index c9716be02..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/685.pgm b/examples/autotiler/Mnist/test_img/8/685.pgm deleted file mode 100644 index 10c929d6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6850.pgm b/examples/autotiler/Mnist/test_img/8/6850.pgm deleted file mode 100644 index 1fd58e7b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6851.pgm b/examples/autotiler/Mnist/test_img/8/6851.pgm deleted file mode 100644 index d945f68cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6864.pgm b/examples/autotiler/Mnist/test_img/8/6864.pgm deleted file mode 100644 index 7184a9b77..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6889.pgm b/examples/autotiler/Mnist/test_img/8/6889.pgm deleted file mode 100644 index c39f93ec4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6897.pgm b/examples/autotiler/Mnist/test_img/8/6897.pgm deleted file mode 100644 index 21dcf3b6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6898.pgm b/examples/autotiler/Mnist/test_img/8/6898.pgm deleted file mode 100644 index 7a4e22126..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6898.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6904.pgm b/examples/autotiler/Mnist/test_img/8/6904.pgm deleted file mode 100644 index 80ff3361f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/691.pgm b/examples/autotiler/Mnist/test_img/8/691.pgm deleted file mode 100644 index 870bd59da..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/693.pgm b/examples/autotiler/Mnist/test_img/8/693.pgm deleted file mode 100644 index aca516020..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6935.pgm b/examples/autotiler/Mnist/test_img/8/6935.pgm deleted file mode 100644 index ce25baebb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6945.pgm b/examples/autotiler/Mnist/test_img/8/6945.pgm deleted file mode 100644 index 00d47bc41..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6955.pgm b/examples/autotiler/Mnist/test_img/8/6955.pgm deleted file mode 100644 index cf6462526..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6958.pgm b/examples/autotiler/Mnist/test_img/8/6958.pgm deleted file mode 100644 index cc4393dbb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/6972.pgm b/examples/autotiler/Mnist/test_img/8/6972.pgm deleted file mode 100644 index 21b3bc307..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/6972.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7004.pgm b/examples/autotiler/Mnist/test_img/8/7004.pgm deleted file mode 100644 index 84e028963..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7004.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7011.pgm b/examples/autotiler/Mnist/test_img/8/7011.pgm deleted file mode 100644 index b80fe539f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7011.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7016.pgm b/examples/autotiler/Mnist/test_img/8/7016.pgm deleted file mode 100644 index 4bf534239..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7027.pgm b/examples/autotiler/Mnist/test_img/8/7027.pgm deleted file mode 100644 index 15302ff6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7034.pgm b/examples/autotiler/Mnist/test_img/8/7034.pgm deleted file mode 100644 index d5c58dbf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7035.pgm b/examples/autotiler/Mnist/test_img/8/7035.pgm deleted file mode 100644 index 7816aa72f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7035.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7046.pgm b/examples/autotiler/Mnist/test_img/8/7046.pgm deleted file mode 100644 index 810aeb510..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7060.pgm b/examples/autotiler/Mnist/test_img/8/7060.pgm deleted file mode 100644 index 1d5eb410d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7070.pgm b/examples/autotiler/Mnist/test_img/8/7070.pgm deleted file mode 100644 index 8e7d6243e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7080.pgm b/examples/autotiler/Mnist/test_img/8/7080.pgm deleted file mode 100644 index 61be63f56..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/709.pgm b/examples/autotiler/Mnist/test_img/8/709.pgm deleted file mode 100644 index adef10cf4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7094.pgm b/examples/autotiler/Mnist/test_img/8/7094.pgm deleted file mode 100644 index f0d17f22f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7099.pgm b/examples/autotiler/Mnist/test_img/8/7099.pgm deleted file mode 100644 index f26262d27..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7099.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7109.pgm b/examples/autotiler/Mnist/test_img/8/7109.pgm deleted file mode 100644 index 954787a32..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7114.pgm b/examples/autotiler/Mnist/test_img/8/7114.pgm deleted file mode 100644 index c8bac1931..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7114.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7121.pgm b/examples/autotiler/Mnist/test_img/8/7121.pgm deleted file mode 100644 index 9085b5381..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7121.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7126.pgm b/examples/autotiler/Mnist/test_img/8/7126.pgm deleted file mode 100644 index 5b05910a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7127.pgm b/examples/autotiler/Mnist/test_img/8/7127.pgm deleted file mode 100644 index bc336501d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7127.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/714.pgm b/examples/autotiler/Mnist/test_img/8/714.pgm deleted file mode 100644 index 8117f398f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7143.pgm b/examples/autotiler/Mnist/test_img/8/7143.pgm deleted file mode 100644 index f5c119e7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7146.pgm b/examples/autotiler/Mnist/test_img/8/7146.pgm deleted file mode 100644 index f89bb9935..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7164.pgm b/examples/autotiler/Mnist/test_img/8/7164.pgm deleted file mode 100644 index 5d247e983..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/718.pgm b/examples/autotiler/Mnist/test_img/8/718.pgm deleted file mode 100644 index 69d8836c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7181.pgm b/examples/autotiler/Mnist/test_img/8/7181.pgm deleted file mode 100644 index 4c19baeea..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7198.pgm b/examples/autotiler/Mnist/test_img/8/7198.pgm deleted file mode 100644 index 33588bb1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7200.pgm b/examples/autotiler/Mnist/test_img/8/7200.pgm deleted file mode 100644 index 969efaaff..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7208.pgm b/examples/autotiler/Mnist/test_img/8/7208.pgm deleted file mode 100644 index 5883f7bbc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7208.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7220.pgm b/examples/autotiler/Mnist/test_img/8/7220.pgm deleted file mode 100644 index 11de88f13..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7234.pgm b/examples/autotiler/Mnist/test_img/8/7234.pgm deleted file mode 100644 index 76673b472..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7234.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7244.pgm b/examples/autotiler/Mnist/test_img/8/7244.pgm deleted file mode 100644 index 70ca324c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7259.pgm b/examples/autotiler/Mnist/test_img/8/7259.pgm deleted file mode 100644 index 4ab6e624d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7265.pgm b/examples/autotiler/Mnist/test_img/8/7265.pgm deleted file mode 100644 index c609d87e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7265.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7277.pgm b/examples/autotiler/Mnist/test_img/8/7277.pgm deleted file mode 100644 index fce0dff94..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7287.pgm b/examples/autotiler/Mnist/test_img/8/7287.pgm deleted file mode 100644 index 6eb970037..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7297.pgm b/examples/autotiler/Mnist/test_img/8/7297.pgm deleted file mode 100644 index 31a36a5a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7302.pgm b/examples/autotiler/Mnist/test_img/8/7302.pgm deleted file mode 100644 index 6d7ba76c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7309.pgm b/examples/autotiler/Mnist/test_img/8/7309.pgm deleted file mode 100644 index 1ddb7f5c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7313.pgm b/examples/autotiler/Mnist/test_img/8/7313.pgm deleted file mode 100644 index f24fa4f6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7339.pgm b/examples/autotiler/Mnist/test_img/8/7339.pgm deleted file mode 100644 index 28687d19f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7369.pgm b/examples/autotiler/Mnist/test_img/8/7369.pgm deleted file mode 100644 index e08b42a68..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7370.pgm b/examples/autotiler/Mnist/test_img/8/7370.pgm deleted file mode 100644 index d35bb6b05..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7370.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7371.pgm b/examples/autotiler/Mnist/test_img/8/7371.pgm deleted file mode 100644 index f780d597c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7378.pgm b/examples/autotiler/Mnist/test_img/8/7378.pgm deleted file mode 100644 index debdda11c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7378.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7379.pgm b/examples/autotiler/Mnist/test_img/8/7379.pgm deleted file mode 100644 index 1e092e5dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7379.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7383.pgm b/examples/autotiler/Mnist/test_img/8/7383.pgm deleted file mode 100644 index 68b1f04ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7417.pgm b/examples/autotiler/Mnist/test_img/8/7417.pgm deleted file mode 100644 index c5e1dd8df..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7428.pgm b/examples/autotiler/Mnist/test_img/8/7428.pgm deleted file mode 100644 index 2ac5e4ade..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7433.pgm b/examples/autotiler/Mnist/test_img/8/7433.pgm deleted file mode 100644 index 1e5824d99..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7444.pgm b/examples/autotiler/Mnist/test_img/8/7444.pgm deleted file mode 100644 index f76c29fb8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7450.pgm b/examples/autotiler/Mnist/test_img/8/7450.pgm deleted file mode 100644 index ece4d774a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7455.pgm b/examples/autotiler/Mnist/test_img/8/7455.pgm deleted file mode 100644 index 59c18da9b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7481.pgm b/examples/autotiler/Mnist/test_img/8/7481.pgm deleted file mode 100644 index 81b6fe536..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7500.pgm b/examples/autotiler/Mnist/test_img/8/7500.pgm deleted file mode 100644 index e123e0d0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7502.pgm b/examples/autotiler/Mnist/test_img/8/7502.pgm deleted file mode 100644 index fd7d94f76..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7514.pgm b/examples/autotiler/Mnist/test_img/8/7514.pgm deleted file mode 100644 index b0b824b12..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7514.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7524.pgm b/examples/autotiler/Mnist/test_img/8/7524.pgm deleted file mode 100644 index f24dbca75..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7534.pgm b/examples/autotiler/Mnist/test_img/8/7534.pgm deleted file mode 100644 index 4601f3bfe..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7545.pgm b/examples/autotiler/Mnist/test_img/8/7545.pgm deleted file mode 100644 index 88febbfe8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7552.pgm b/examples/autotiler/Mnist/test_img/8/7552.pgm deleted file mode 100644 index 46d8ab8b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7552.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7553.pgm b/examples/autotiler/Mnist/test_img/8/7553.pgm deleted file mode 100644 index aab82efd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7569.pgm b/examples/autotiler/Mnist/test_img/8/7569.pgm deleted file mode 100644 index d61b6edb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7569.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7586.pgm b/examples/autotiler/Mnist/test_img/8/7586.pgm deleted file mode 100644 index f813ec5fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7586.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7597.pgm b/examples/autotiler/Mnist/test_img/8/7597.pgm deleted file mode 100644 index 6f2205aa9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7603.pgm b/examples/autotiler/Mnist/test_img/8/7603.pgm deleted file mode 100644 index 82f42df55..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/761.pgm b/examples/autotiler/Mnist/test_img/8/761.pgm deleted file mode 100644 index 22c7c9d1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7615.pgm b/examples/autotiler/Mnist/test_img/8/7615.pgm deleted file mode 100644 index 77df3f96e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7615.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7623.pgm b/examples/autotiler/Mnist/test_img/8/7623.pgm deleted file mode 100644 index 9b3be030a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7633.pgm b/examples/autotiler/Mnist/test_img/8/7633.pgm deleted file mode 100644 index 296a8ba63..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7642.pgm b/examples/autotiler/Mnist/test_img/8/7642.pgm deleted file mode 100644 index aace4c80c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7660.pgm b/examples/autotiler/Mnist/test_img/8/7660.pgm deleted file mode 100644 index c2a606136..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7660.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7663.pgm b/examples/autotiler/Mnist/test_img/8/7663.pgm deleted file mode 100644 index 3fa052d42..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7666.pgm b/examples/autotiler/Mnist/test_img/8/7666.pgm deleted file mode 100644 index a50ff390d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7689.pgm b/examples/autotiler/Mnist/test_img/8/7689.pgm deleted file mode 100644 index 319b7f99b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7691.pgm b/examples/autotiler/Mnist/test_img/8/7691.pgm deleted file mode 100644 index 1d4e69b7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7694.pgm b/examples/autotiler/Mnist/test_img/8/7694.pgm deleted file mode 100644 index d2ab6ef42..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7713.pgm b/examples/autotiler/Mnist/test_img/8/7713.pgm deleted file mode 100644 index f28799221..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7718.pgm b/examples/autotiler/Mnist/test_img/8/7718.pgm deleted file mode 100644 index f920decf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7720.pgm b/examples/autotiler/Mnist/test_img/8/7720.pgm deleted file mode 100644 index 4ea2735b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7735.pgm b/examples/autotiler/Mnist/test_img/8/7735.pgm deleted file mode 100644 index f7a98f08a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7745.pgm b/examples/autotiler/Mnist/test_img/8/7745.pgm deleted file mode 100644 index 77625d920..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7755.pgm b/examples/autotiler/Mnist/test_img/8/7755.pgm deleted file mode 100644 index 3eef45f72..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7765.pgm b/examples/autotiler/Mnist/test_img/8/7765.pgm deleted file mode 100644 index 314a4ba7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7765.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7767.pgm b/examples/autotiler/Mnist/test_img/8/7767.pgm deleted file mode 100644 index 8da8b33c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7770.pgm b/examples/autotiler/Mnist/test_img/8/7770.pgm deleted file mode 100644 index ccb1b47be..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7770.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7774.pgm b/examples/autotiler/Mnist/test_img/8/7774.pgm deleted file mode 100644 index 68f84c4a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7774.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7776.pgm b/examples/autotiler/Mnist/test_img/8/7776.pgm deleted file mode 100644 index 912d06879..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7776.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7788.pgm b/examples/autotiler/Mnist/test_img/8/7788.pgm deleted file mode 100644 index 4e186bda0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7803.pgm b/examples/autotiler/Mnist/test_img/8/7803.pgm deleted file mode 100644 index 14ecaba7f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7803.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7805.pgm b/examples/autotiler/Mnist/test_img/8/7805.pgm deleted file mode 100644 index 556cbf934..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/781.pgm b/examples/autotiler/Mnist/test_img/8/781.pgm deleted file mode 100644 index e8ce5d6dc..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7814.pgm b/examples/autotiler/Mnist/test_img/8/7814.pgm deleted file mode 100644 index 43d03a3be..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7814.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7823.pgm b/examples/autotiler/Mnist/test_img/8/7823.pgm deleted file mode 100644 index 1a239c479..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7845.pgm b/examples/autotiler/Mnist/test_img/8/7845.pgm deleted file mode 100644 index a2806fab6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7853.pgm b/examples/autotiler/Mnist/test_img/8/7853.pgm deleted file mode 100644 index 63e555547..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7862.pgm b/examples/autotiler/Mnist/test_img/8/7862.pgm deleted file mode 100644 index 970ae8838..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/787.pgm b/examples/autotiler/Mnist/test_img/8/787.pgm deleted file mode 100644 index 257da7cbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7871.pgm b/examples/autotiler/Mnist/test_img/8/7871.pgm deleted file mode 100644 index ffc982e48..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7872.pgm b/examples/autotiler/Mnist/test_img/8/7872.pgm deleted file mode 100644 index f87972762..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7878.pgm b/examples/autotiler/Mnist/test_img/8/7878.pgm deleted file mode 100644 index 479b48836..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7901.pgm b/examples/autotiler/Mnist/test_img/8/7901.pgm deleted file mode 100644 index 83b51ef00..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7919.pgm b/examples/autotiler/Mnist/test_img/8/7919.pgm deleted file mode 100644 index cf75f89df..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7921.pgm b/examples/autotiler/Mnist/test_img/8/7921.pgm deleted file mode 100644 index 1c7eac329..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7921.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7923.pgm b/examples/autotiler/Mnist/test_img/8/7923.pgm deleted file mode 100644 index 9ba3074a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7926.pgm b/examples/autotiler/Mnist/test_img/8/7926.pgm deleted file mode 100644 index 9a2feef96..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/793.pgm b/examples/autotiler/Mnist/test_img/8/793.pgm deleted file mode 100644 index c8eb55dc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7941.pgm b/examples/autotiler/Mnist/test_img/8/7941.pgm deleted file mode 100644 index 6a3d9c71c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7951.pgm b/examples/autotiler/Mnist/test_img/8/7951.pgm deleted file mode 100644 index 70bd5eb41..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7961.pgm b/examples/autotiler/Mnist/test_img/8/7961.pgm deleted file mode 100644 index 2375994a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7963.pgm b/examples/autotiler/Mnist/test_img/8/7963.pgm deleted file mode 100644 index a063536f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7971.pgm b/examples/autotiler/Mnist/test_img/8/7971.pgm deleted file mode 100644 index 87ee3ac21..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7979.pgm b/examples/autotiler/Mnist/test_img/8/7979.pgm deleted file mode 100644 index a8f24408a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/7999.pgm b/examples/autotiler/Mnist/test_img/8/7999.pgm deleted file mode 100644 index c2d0649e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/7999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/800.pgm b/examples/autotiler/Mnist/test_img/8/800.pgm deleted file mode 100644 index 5d845a9df..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8009.pgm b/examples/autotiler/Mnist/test_img/8/8009.pgm deleted file mode 100644 index 440ce02a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8012.pgm b/examples/autotiler/Mnist/test_img/8/8012.pgm deleted file mode 100644 index 2ce850ec6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8012.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8015.pgm b/examples/autotiler/Mnist/test_img/8/8015.pgm deleted file mode 100644 index f31438039..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8027.pgm b/examples/autotiler/Mnist/test_img/8/8027.pgm deleted file mode 100644 index 7f84d87a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8027.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8037.pgm b/examples/autotiler/Mnist/test_img/8/8037.pgm deleted file mode 100644 index d29efd9fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8037.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8046.pgm b/examples/autotiler/Mnist/test_img/8/8046.pgm deleted file mode 100644 index 074ab6eb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8046.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/805.pgm b/examples/autotiler/Mnist/test_img/8/805.pgm deleted file mode 100644 index efeb88313..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/806.pgm b/examples/autotiler/Mnist/test_img/8/806.pgm deleted file mode 100644 index 24475d773..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8065.pgm b/examples/autotiler/Mnist/test_img/8/8065.pgm deleted file mode 100644 index 7a172b656..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8065.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8075.pgm b/examples/autotiler/Mnist/test_img/8/8075.pgm deleted file mode 100644 index 7e0a28738..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8097.pgm b/examples/autotiler/Mnist/test_img/8/8097.pgm deleted file mode 100644 index bc8b5ac17..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8097.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8105.pgm b/examples/autotiler/Mnist/test_img/8/8105.pgm deleted file mode 100644 index 706f3b9c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8125.pgm b/examples/autotiler/Mnist/test_img/8/8125.pgm deleted file mode 100644 index c68439d86..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8135.pgm b/examples/autotiler/Mnist/test_img/8/8135.pgm deleted file mode 100644 index 524e14106..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8145.pgm b/examples/autotiler/Mnist/test_img/8/8145.pgm deleted file mode 100644 index a4fc76521..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8145.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8147.pgm b/examples/autotiler/Mnist/test_img/8/8147.pgm deleted file mode 100644 index d27a0dacb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8157.pgm b/examples/autotiler/Mnist/test_img/8/8157.pgm deleted file mode 100644 index c2ac58b2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8183.pgm b/examples/autotiler/Mnist/test_img/8/8183.pgm deleted file mode 100644 index 867140a53..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8209.pgm b/examples/autotiler/Mnist/test_img/8/8209.pgm deleted file mode 100644 index 252d053d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8216.pgm b/examples/autotiler/Mnist/test_img/8/8216.pgm deleted file mode 100644 index d365b6857..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8217.pgm b/examples/autotiler/Mnist/test_img/8/8217.pgm deleted file mode 100644 index ef614455f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8223.pgm b/examples/autotiler/Mnist/test_img/8/8223.pgm deleted file mode 100644 index 8fbadac83..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8223.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8236.pgm b/examples/autotiler/Mnist/test_img/8/8236.pgm deleted file mode 100644 index 4cabe871e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8241.pgm b/examples/autotiler/Mnist/test_img/8/8241.pgm deleted file mode 100644 index 56c50476a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8242.pgm b/examples/autotiler/Mnist/test_img/8/8242.pgm deleted file mode 100644 index 7f0010aab..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8249.pgm b/examples/autotiler/Mnist/test_img/8/8249.pgm deleted file mode 100644 index 24df5c506..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8258.pgm b/examples/autotiler/Mnist/test_img/8/8258.pgm deleted file mode 100644 index 90f03130b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8258.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8266.pgm b/examples/autotiler/Mnist/test_img/8/8266.pgm deleted file mode 100644 index bab9d9bfd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8266.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8279.pgm b/examples/autotiler/Mnist/test_img/8/8279.pgm deleted file mode 100644 index 439b52892..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8294.pgm b/examples/autotiler/Mnist/test_img/8/8294.pgm deleted file mode 100644 index c818d1d75..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8297.pgm b/examples/autotiler/Mnist/test_img/8/8297.pgm deleted file mode 100644 index a3ed3448c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8297.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8300.pgm b/examples/autotiler/Mnist/test_img/8/8300.pgm deleted file mode 100644 index cf20d6b8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8300.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8301.pgm b/examples/autotiler/Mnist/test_img/8/8301.pgm deleted file mode 100644 index 43b9fccbd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8330.pgm b/examples/autotiler/Mnist/test_img/8/8330.pgm deleted file mode 100644 index 1e6a8dad1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8339.pgm b/examples/autotiler/Mnist/test_img/8/8339.pgm deleted file mode 100644 index 0bb6e134c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8339.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8357.pgm b/examples/autotiler/Mnist/test_img/8/8357.pgm deleted file mode 100644 index 25c7c014d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8384.pgm b/examples/autotiler/Mnist/test_img/8/8384.pgm deleted file mode 100644 index da3126141..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/839.pgm b/examples/autotiler/Mnist/test_img/8/839.pgm deleted file mode 100644 index eb4bf58db..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/84.pgm b/examples/autotiler/Mnist/test_img/8/84.pgm deleted file mode 100644 index 8e4c4c1dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/84.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8405.pgm b/examples/autotiler/Mnist/test_img/8/8405.pgm deleted file mode 100644 index 4380c2647..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8408.pgm b/examples/autotiler/Mnist/test_img/8/8408.pgm deleted file mode 100644 index abd8e062d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8410.pgm b/examples/autotiler/Mnist/test_img/8/8410.pgm deleted file mode 100644 index cd193d60a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8413.pgm b/examples/autotiler/Mnist/test_img/8/8413.pgm deleted file mode 100644 index fd1a8fab2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8413.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8437.pgm b/examples/autotiler/Mnist/test_img/8/8437.pgm deleted file mode 100644 index 5f22af8cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8437.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/844.pgm b/examples/autotiler/Mnist/test_img/8/844.pgm deleted file mode 100644 index 3291af51a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/844.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8440.pgm b/examples/autotiler/Mnist/test_img/8/8440.pgm deleted file mode 100644 index 11a10b3e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8440.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8456.pgm b/examples/autotiler/Mnist/test_img/8/8456.pgm deleted file mode 100644 index c6bcd417d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8466.pgm b/examples/autotiler/Mnist/test_img/8/8466.pgm deleted file mode 100644 index b144b1768..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8476.pgm b/examples/autotiler/Mnist/test_img/8/8476.pgm deleted file mode 100644 index 0f88cb8bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8476.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8486.pgm b/examples/autotiler/Mnist/test_img/8/8486.pgm deleted file mode 100644 index 95dca973d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8505.pgm b/examples/autotiler/Mnist/test_img/8/8505.pgm deleted file mode 100644 index 1c4c90feb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8522.pgm b/examples/autotiler/Mnist/test_img/8/8522.pgm deleted file mode 100644 index 6650c8501..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8522.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8524.pgm b/examples/autotiler/Mnist/test_img/8/8524.pgm deleted file mode 100644 index 71d1fd45d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8530.pgm b/examples/autotiler/Mnist/test_img/8/8530.pgm deleted file mode 100644 index faf3c8a37..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8547.pgm b/examples/autotiler/Mnist/test_img/8/8547.pgm deleted file mode 100644 index 0b4933e1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8547.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8556.pgm b/examples/autotiler/Mnist/test_img/8/8556.pgm deleted file mode 100644 index 5c53f010d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8566.pgm b/examples/autotiler/Mnist/test_img/8/8566.pgm deleted file mode 100644 index f1573d052..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8566.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8574.pgm b/examples/autotiler/Mnist/test_img/8/8574.pgm deleted file mode 100644 index 6b98c1945..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8585.pgm b/examples/autotiler/Mnist/test_img/8/8585.pgm deleted file mode 100644 index 69b2ce816..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8609.pgm b/examples/autotiler/Mnist/test_img/8/8609.pgm deleted file mode 100644 index 28bb9611b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8618.pgm b/examples/autotiler/Mnist/test_img/8/8618.pgm deleted file mode 100644 index ff2cc5959..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8627.pgm b/examples/autotiler/Mnist/test_img/8/8627.pgm deleted file mode 100644 index 0f8f04d9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8635.pgm b/examples/autotiler/Mnist/test_img/8/8635.pgm deleted file mode 100644 index 5dc066e87..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8635.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/864.pgm b/examples/autotiler/Mnist/test_img/8/864.pgm deleted file mode 100644 index b0ff53018..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8649.pgm b/examples/autotiler/Mnist/test_img/8/8649.pgm deleted file mode 100644 index 295c3d161..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8649.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8661.pgm b/examples/autotiler/Mnist/test_img/8/8661.pgm deleted file mode 100644 index ff402452a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8661.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8667.pgm b/examples/autotiler/Mnist/test_img/8/8667.pgm deleted file mode 100644 index 60dd458d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8669.pgm b/examples/autotiler/Mnist/test_img/8/8669.pgm deleted file mode 100644 index c7647d09d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8669.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8679.pgm b/examples/autotiler/Mnist/test_img/8/8679.pgm deleted file mode 100644 index 89a4d30c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8689.pgm b/examples/autotiler/Mnist/test_img/8/8689.pgm deleted file mode 100644 index eb13c8cbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8689.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8699.pgm b/examples/autotiler/Mnist/test_img/8/8699.pgm deleted file mode 100644 index c8b19bbfa..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8699.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/872.pgm b/examples/autotiler/Mnist/test_img/8/872.pgm deleted file mode 100644 index 7705814dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8722.pgm b/examples/autotiler/Mnist/test_img/8/8722.pgm deleted file mode 100644 index bfa51f6d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8725.pgm b/examples/autotiler/Mnist/test_img/8/8725.pgm deleted file mode 100644 index 8d9036d86..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8725.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8726.pgm b/examples/autotiler/Mnist/test_img/8/8726.pgm deleted file mode 100644 index 0227648f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8726.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8728.pgm b/examples/autotiler/Mnist/test_img/8/8728.pgm deleted file mode 100644 index 40cdab61f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8728.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8735.pgm b/examples/autotiler/Mnist/test_img/8/8735.pgm deleted file mode 100644 index 025823b8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8756.pgm b/examples/autotiler/Mnist/test_img/8/8756.pgm deleted file mode 100644 index d8f628548..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8759.pgm b/examples/autotiler/Mnist/test_img/8/8759.pgm deleted file mode 100644 index d10fb0cb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/876.pgm b/examples/autotiler/Mnist/test_img/8/876.pgm deleted file mode 100644 index 024814f02..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/876.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/877.pgm b/examples/autotiler/Mnist/test_img/8/877.pgm deleted file mode 100644 index 98ff00f1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8778.pgm b/examples/autotiler/Mnist/test_img/8/8778.pgm deleted file mode 100644 index 3628e81cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/878.pgm b/examples/autotiler/Mnist/test_img/8/878.pgm deleted file mode 100644 index 3302635cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/878.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8787.pgm b/examples/autotiler/Mnist/test_img/8/8787.pgm deleted file mode 100644 index 4d6fb05f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/879.pgm b/examples/autotiler/Mnist/test_img/8/879.pgm deleted file mode 100644 index a729e4ef1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8806.pgm b/examples/autotiler/Mnist/test_img/8/8806.pgm deleted file mode 100644 index 4730bf0f4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8806.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8816.pgm b/examples/autotiler/Mnist/test_img/8/8816.pgm deleted file mode 100644 index 1cbdfb78a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8816.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8826.pgm b/examples/autotiler/Mnist/test_img/8/8826.pgm deleted file mode 100644 index 26c232584..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8826.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8843.pgm b/examples/autotiler/Mnist/test_img/8/8843.pgm deleted file mode 100644 index 202e9c6c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8857.pgm b/examples/autotiler/Mnist/test_img/8/8857.pgm deleted file mode 100644 index 3246b2e03..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8866.pgm b/examples/autotiler/Mnist/test_img/8/8866.pgm deleted file mode 100644 index ac97859e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8866.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8872.pgm b/examples/autotiler/Mnist/test_img/8/8872.pgm deleted file mode 100644 index fe564c5aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8877.pgm b/examples/autotiler/Mnist/test_img/8/8877.pgm deleted file mode 100644 index 9c93ba84d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8877.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8894.pgm b/examples/autotiler/Mnist/test_img/8/8894.pgm deleted file mode 100644 index db2d208ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8912.pgm b/examples/autotiler/Mnist/test_img/8/8912.pgm deleted file mode 100644 index 6d94094a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8912.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8919.pgm b/examples/autotiler/Mnist/test_img/8/8919.pgm deleted file mode 100644 index e6f9d2234..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8927.pgm b/examples/autotiler/Mnist/test_img/8/8927.pgm deleted file mode 100644 index f29e470a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8932.pgm b/examples/autotiler/Mnist/test_img/8/8932.pgm deleted file mode 100644 index 321954b7a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8934.pgm b/examples/autotiler/Mnist/test_img/8/8934.pgm deleted file mode 100644 index 6e09ebb39..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8942.pgm b/examples/autotiler/Mnist/test_img/8/8942.pgm deleted file mode 100644 index e5c734f09..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8958.pgm b/examples/autotiler/Mnist/test_img/8/8958.pgm deleted file mode 100644 index 9a111c59b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8963.pgm b/examples/autotiler/Mnist/test_img/8/8963.pgm deleted file mode 100644 index ed5a1e304..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8965.pgm b/examples/autotiler/Mnist/test_img/8/8965.pgm deleted file mode 100644 index 7f5b76db1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8965.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/8985.pgm b/examples/autotiler/Mnist/test_img/8/8985.pgm deleted file mode 100644 index d7db444b0..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/8985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/899.pgm b/examples/autotiler/Mnist/test_img/8/899.pgm deleted file mode 100644 index fa740ea53..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9020.pgm b/examples/autotiler/Mnist/test_img/8/9020.pgm deleted file mode 100644 index 8bd26b939..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9020.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9042.pgm b/examples/autotiler/Mnist/test_img/8/9042.pgm deleted file mode 100644 index 837d238aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9055.pgm b/examples/autotiler/Mnist/test_img/8/9055.pgm deleted file mode 100644 index 7650099cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9068.pgm b/examples/autotiler/Mnist/test_img/8/9068.pgm deleted file mode 100644 index 7525036ac..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9078.pgm b/examples/autotiler/Mnist/test_img/8/9078.pgm deleted file mode 100644 index 9b38ca625..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9088.pgm b/examples/autotiler/Mnist/test_img/8/9088.pgm deleted file mode 100644 index ea7c8c27e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9092.pgm b/examples/autotiler/Mnist/test_img/8/9092.pgm deleted file mode 100644 index d90114504..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9092.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9107.pgm b/examples/autotiler/Mnist/test_img/8/9107.pgm deleted file mode 100644 index 47564bd04..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9110.pgm b/examples/autotiler/Mnist/test_img/8/9110.pgm deleted file mode 100644 index 3a58f1747..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9110.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9116.pgm b/examples/autotiler/Mnist/test_img/8/9116.pgm deleted file mode 100644 index 4f208de92..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9116.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9126.pgm b/examples/autotiler/Mnist/test_img/8/9126.pgm deleted file mode 100644 index fd13ff0e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9136.pgm b/examples/autotiler/Mnist/test_img/8/9136.pgm deleted file mode 100644 index 98cb36e73..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9139.pgm b/examples/autotiler/Mnist/test_img/8/9139.pgm deleted file mode 100644 index 2cb84d587..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9139.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/914.pgm b/examples/autotiler/Mnist/test_img/8/914.pgm deleted file mode 100644 index f0d3ca0e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/915.pgm b/examples/autotiler/Mnist/test_img/8/915.pgm deleted file mode 100644 index 33847f4e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/915.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9150.pgm b/examples/autotiler/Mnist/test_img/8/9150.pgm deleted file mode 100644 index 38e09e5fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9161.pgm b/examples/autotiler/Mnist/test_img/8/9161.pgm deleted file mode 100644 index 178546b0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9173.pgm b/examples/autotiler/Mnist/test_img/8/9173.pgm deleted file mode 100644 index dd35fe8ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9187.pgm b/examples/autotiler/Mnist/test_img/8/9187.pgm deleted file mode 100644 index db7f3e502..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9187.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9197.pgm b/examples/autotiler/Mnist/test_img/8/9197.pgm deleted file mode 100644 index 6a30795d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9197.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9205.pgm b/examples/autotiler/Mnist/test_img/8/9205.pgm deleted file mode 100644 index 4bdd4ffc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9205.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9213.pgm b/examples/autotiler/Mnist/test_img/8/9213.pgm deleted file mode 100644 index 34248075a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9237.pgm b/examples/autotiler/Mnist/test_img/8/9237.pgm deleted file mode 100644 index 045270def..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9243.pgm b/examples/autotiler/Mnist/test_img/8/9243.pgm deleted file mode 100644 index 07a08912e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9263.pgm b/examples/autotiler/Mnist/test_img/8/9263.pgm deleted file mode 100644 index 6d2320b95..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9271.pgm b/examples/autotiler/Mnist/test_img/8/9271.pgm deleted file mode 100644 index 712ea1c11..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9271.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9280.pgm b/examples/autotiler/Mnist/test_img/8/9280.pgm deleted file mode 100644 index 92fb45a60..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9286.pgm b/examples/autotiler/Mnist/test_img/8/9286.pgm deleted file mode 100644 index 893863763..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9307.pgm b/examples/autotiler/Mnist/test_img/8/9307.pgm deleted file mode 100644 index 310307371..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9307.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9316.pgm b/examples/autotiler/Mnist/test_img/8/9316.pgm deleted file mode 100644 index 8f0666175..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9321.pgm b/examples/autotiler/Mnist/test_img/8/9321.pgm deleted file mode 100644 index 8eba432e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9322.pgm b/examples/autotiler/Mnist/test_img/8/9322.pgm deleted file mode 100644 index 1e9713cb2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9326.pgm b/examples/autotiler/Mnist/test_img/8/9326.pgm deleted file mode 100644 index e2969e29a..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9326.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9330.pgm b/examples/autotiler/Mnist/test_img/8/9330.pgm deleted file mode 100644 index 98e5e97d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9330.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9354.pgm b/examples/autotiler/Mnist/test_img/8/9354.pgm deleted file mode 100644 index b059a73ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9354.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/936.pgm b/examples/autotiler/Mnist/test_img/8/936.pgm deleted file mode 100644 index d7b6c3c06..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9375.pgm b/examples/autotiler/Mnist/test_img/8/9375.pgm deleted file mode 100644 index 8cdca5375..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9385.pgm b/examples/autotiler/Mnist/test_img/8/9385.pgm deleted file mode 100644 index 0c0cf6955..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9394.pgm b/examples/autotiler/Mnist/test_img/8/9394.pgm deleted file mode 100644 index 10847feb8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9402.pgm b/examples/autotiler/Mnist/test_img/8/9402.pgm deleted file mode 100644 index b24e509f5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9402.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9410.pgm b/examples/autotiler/Mnist/test_img/8/9410.pgm deleted file mode 100644 index 6ccbb7aac..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9418.pgm b/examples/autotiler/Mnist/test_img/8/9418.pgm deleted file mode 100644 index 1a8a265d9..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9420.pgm b/examples/autotiler/Mnist/test_img/8/9420.pgm deleted file mode 100644 index dda76a437..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9433.pgm b/examples/autotiler/Mnist/test_img/8/9433.pgm deleted file mode 100644 index 865040425..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9433.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9449.pgm b/examples/autotiler/Mnist/test_img/8/9449.pgm deleted file mode 100644 index cde27f97f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9450.pgm b/examples/autotiler/Mnist/test_img/8/9450.pgm deleted file mode 100644 index 114175dc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9450.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9452.pgm b/examples/autotiler/Mnist/test_img/8/9452.pgm deleted file mode 100644 index c2a6d5bd1..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9462.pgm b/examples/autotiler/Mnist/test_img/8/9462.pgm deleted file mode 100644 index e567b4e04..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/947.pgm b/examples/autotiler/Mnist/test_img/8/947.pgm deleted file mode 100644 index 1a14e3751..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9496.pgm b/examples/autotiler/Mnist/test_img/8/9496.pgm deleted file mode 100644 index 4e58dd093..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9506.pgm b/examples/autotiler/Mnist/test_img/8/9506.pgm deleted file mode 100644 index b1371487c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9516.pgm b/examples/autotiler/Mnist/test_img/8/9516.pgm deleted file mode 100644 index 5ad5a93ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9557.pgm b/examples/autotiler/Mnist/test_img/8/9557.pgm deleted file mode 100644 index f30e22c97..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9563.pgm b/examples/autotiler/Mnist/test_img/8/9563.pgm deleted file mode 100644 index 86e8e69df..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9563.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9564.pgm b/examples/autotiler/Mnist/test_img/8/9564.pgm deleted file mode 100644 index 1b0cf5881..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9564.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9572.pgm b/examples/autotiler/Mnist/test_img/8/9572.pgm deleted file mode 100644 index 2a6858472..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9572.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9574.pgm b/examples/autotiler/Mnist/test_img/8/9574.pgm deleted file mode 100644 index efdc78eab..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9574.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9575.pgm b/examples/autotiler/Mnist/test_img/8/9575.pgm deleted file mode 100644 index d884b4799..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9596.pgm b/examples/autotiler/Mnist/test_img/8/9596.pgm deleted file mode 100644 index f5703e259..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9609.pgm b/examples/autotiler/Mnist/test_img/8/9609.pgm deleted file mode 100644 index c5fe3d83c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9609.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/961.pgm b/examples/autotiler/Mnist/test_img/8/961.pgm deleted file mode 100644 index 5d839b5a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9619.pgm b/examples/autotiler/Mnist/test_img/8/9619.pgm deleted file mode 100644 index 80ecf6a93..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9619.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9629.pgm b/examples/autotiler/Mnist/test_img/8/9629.pgm deleted file mode 100644 index b4622399f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9629.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9630.pgm b/examples/autotiler/Mnist/test_img/8/9630.pgm deleted file mode 100644 index 3d35ae00b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9667.pgm b/examples/autotiler/Mnist/test_img/8/9667.pgm deleted file mode 100644 index a1e05569b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9667.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9673.pgm b/examples/autotiler/Mnist/test_img/8/9673.pgm deleted file mode 100644 index 1ada21e68..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9681.pgm b/examples/autotiler/Mnist/test_img/8/9681.pgm deleted file mode 100644 index 9eaf5a8c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9691.pgm b/examples/autotiler/Mnist/test_img/8/9691.pgm deleted file mode 100644 index c13ee7e39..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9691.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9694.pgm b/examples/autotiler/Mnist/test_img/8/9694.pgm deleted file mode 100644 index b173fed07..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9695.pgm b/examples/autotiler/Mnist/test_img/8/9695.pgm deleted file mode 100644 index d6ff4faf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9712.pgm b/examples/autotiler/Mnist/test_img/8/9712.pgm deleted file mode 100644 index aca348044..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9712.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9722.pgm b/examples/autotiler/Mnist/test_img/8/9722.pgm deleted file mode 100644 index 0d2dc13fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9722.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9732.pgm b/examples/autotiler/Mnist/test_img/8/9732.pgm deleted file mode 100644 index da798a1fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9744.pgm b/examples/autotiler/Mnist/test_img/8/9744.pgm deleted file mode 100644 index 6100caa39..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9744.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9748.pgm b/examples/autotiler/Mnist/test_img/8/9748.pgm deleted file mode 100644 index fb602d0ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9748.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9755.pgm b/examples/autotiler/Mnist/test_img/8/9755.pgm deleted file mode 100644 index 34aaf4b1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9759.pgm b/examples/autotiler/Mnist/test_img/8/9759.pgm deleted file mode 100644 index 498e79537..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9780.pgm b/examples/autotiler/Mnist/test_img/8/9780.pgm deleted file mode 100644 index 6008e7ec2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9780.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9807.pgm b/examples/autotiler/Mnist/test_img/8/9807.pgm deleted file mode 100644 index 02c29a49f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9817.pgm b/examples/autotiler/Mnist/test_img/8/9817.pgm deleted file mode 100644 index 8e7252777..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9824.pgm b/examples/autotiler/Mnist/test_img/8/9824.pgm deleted file mode 100644 index dd063c33b..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9824.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9827.pgm b/examples/autotiler/Mnist/test_img/8/9827.pgm deleted file mode 100644 index 414ce8e80..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/983.pgm b/examples/autotiler/Mnist/test_img/8/983.pgm deleted file mode 100644 index 826e563ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9834.pgm b/examples/autotiler/Mnist/test_img/8/9834.pgm deleted file mode 100644 index e7759f6bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9834.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9854.pgm b/examples/autotiler/Mnist/test_img/8/9854.pgm deleted file mode 100644 index bd69ba68c..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9857.pgm b/examples/autotiler/Mnist/test_img/8/9857.pgm deleted file mode 100644 index 030ebdcf7..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9863.pgm b/examples/autotiler/Mnist/test_img/8/9863.pgm deleted file mode 100644 index 9665eaa7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9875.pgm b/examples/autotiler/Mnist/test_img/8/9875.pgm deleted file mode 100644 index 23b54a53f..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9887.pgm b/examples/autotiler/Mnist/test_img/8/9887.pgm deleted file mode 100644 index 46432020d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9892.pgm b/examples/autotiler/Mnist/test_img/8/9892.pgm deleted file mode 100644 index 2eb5e8ed4..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9900.pgm b/examples/autotiler/Mnist/test_img/8/9900.pgm deleted file mode 100644 index 60f287bd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9910.pgm b/examples/autotiler/Mnist/test_img/8/9910.pgm deleted file mode 100644 index 734774884..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9917.pgm b/examples/autotiler/Mnist/test_img/8/9917.pgm deleted file mode 100644 index da6795dbb..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9917.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9920.pgm b/examples/autotiler/Mnist/test_img/8/9920.pgm deleted file mode 100644 index e3a50c635..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9926.pgm b/examples/autotiler/Mnist/test_img/8/9926.pgm deleted file mode 100644 index 0a1e95aa2..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9934.pgm b/examples/autotiler/Mnist/test_img/8/9934.pgm deleted file mode 100644 index 1c13739a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9936.pgm b/examples/autotiler/Mnist/test_img/8/9936.pgm deleted file mode 100644 index 8d95d1ff6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9959.pgm b/examples/autotiler/Mnist/test_img/8/9959.pgm deleted file mode 100644 index 68d65e9f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9959.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9967.pgm b/examples/autotiler/Mnist/test_img/8/9967.pgm deleted file mode 100644 index 009b8fa0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/998.pgm b/examples/autotiler/Mnist/test_img/8/998.pgm deleted file mode 100644 index 494453291..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/8/9991.pgm b/examples/autotiler/Mnist/test_img/8/9991.pgm deleted file mode 100644 index 833d2ceea..000000000 Binary files a/examples/autotiler/Mnist/test_img/8/9991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1000.pgm b/examples/autotiler/Mnist/test_img/9/1000.pgm deleted file mode 100644 index e766df600..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1005.pgm b/examples/autotiler/Mnist/test_img/9/1005.pgm deleted file mode 100644 index 43a61df07..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1013.pgm b/examples/autotiler/Mnist/test_img/9/1013.pgm deleted file mode 100644 index 36c69ca82..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1013.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/104.pgm b/examples/autotiler/Mnist/test_img/9/104.pgm deleted file mode 100644 index ac7215a6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/104.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1045.pgm b/examples/autotiler/Mnist/test_img/9/1045.pgm deleted file mode 100644 index 43d6db44a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1045.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1048.pgm b/examples/autotiler/Mnist/test_img/9/1048.pgm deleted file mode 100644 index 67934eeed..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1048.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/105.pgm b/examples/autotiler/Mnist/test_img/9/105.pgm deleted file mode 100644 index 41d2d7601..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1058.pgm b/examples/autotiler/Mnist/test_img/9/1058.pgm deleted file mode 100644 index 538d47d86..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1058.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1063.pgm b/examples/autotiler/Mnist/test_img/9/1063.pgm deleted file mode 100644 index dd2e676bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1063.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/108.pgm b/examples/autotiler/Mnist/test_img/9/108.pgm deleted file mode 100644 index 69c9fc443..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/108.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1081.pgm b/examples/autotiler/Mnist/test_img/9/1081.pgm deleted file mode 100644 index 436a4cf3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1086.pgm b/examples/autotiler/Mnist/test_img/9/1086.pgm deleted file mode 100644 index 990e06265..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1086.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1088.pgm b/examples/autotiler/Mnist/test_img/9/1088.pgm deleted file mode 100644 index efee148ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1090.pgm b/examples/autotiler/Mnist/test_img/9/1090.pgm deleted file mode 100644 index 8cb213e88..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1090.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1103.pgm b/examples/autotiler/Mnist/test_img/9/1103.pgm deleted file mode 100644 index 922114170..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1103.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1105.pgm b/examples/autotiler/Mnist/test_img/9/1105.pgm deleted file mode 100644 index f88a36115..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1105.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1107.pgm b/examples/autotiler/Mnist/test_img/9/1107.pgm deleted file mode 100644 index 293cb83d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/113.pgm b/examples/autotiler/Mnist/test_img/9/113.pgm deleted file mode 100644 index 812b234dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/113.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1130.pgm b/examples/autotiler/Mnist/test_img/9/1130.pgm deleted file mode 100644 index e1f1a53b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1152.pgm b/examples/autotiler/Mnist/test_img/9/1152.pgm deleted file mode 100644 index 1b8119c27..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1152.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1165.pgm b/examples/autotiler/Mnist/test_img/9/1165.pgm deleted file mode 100644 index 6a249d221..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/118.pgm b/examples/autotiler/Mnist/test_img/9/118.pgm deleted file mode 100644 index ac2552633..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1183.pgm b/examples/autotiler/Mnist/test_img/9/1183.pgm deleted file mode 100644 index 1bd6408ec..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1192.pgm b/examples/autotiler/Mnist/test_img/9/1192.pgm deleted file mode 100644 index ad8890704..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1192.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/12.pgm b/examples/autotiler/Mnist/test_img/9/12.pgm deleted file mode 100644 index 3f7b0a949..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/12.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1217.pgm b/examples/autotiler/Mnist/test_img/9/1217.pgm deleted file mode 100644 index 078656607..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1217.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1228.pgm b/examples/autotiler/Mnist/test_img/9/1228.pgm deleted file mode 100644 index fa739febe..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1232.pgm b/examples/autotiler/Mnist/test_img/9/1232.pgm deleted file mode 100644 index f336b2bd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1247.pgm b/examples/autotiler/Mnist/test_img/9/1247.pgm deleted file mode 100644 index 2978f1c55..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/125.pgm b/examples/autotiler/Mnist/test_img/9/125.pgm deleted file mode 100644 index 4e797fdfb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/125.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1255.pgm b/examples/autotiler/Mnist/test_img/9/1255.pgm deleted file mode 100644 index a9f4d13f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1277.pgm b/examples/autotiler/Mnist/test_img/9/1277.pgm deleted file mode 100644 index 04d72cd6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1277.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1282.pgm b/examples/autotiler/Mnist/test_img/9/1282.pgm deleted file mode 100644 index fa2d10890..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1282.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1304.pgm b/examples/autotiler/Mnist/test_img/9/1304.pgm deleted file mode 100644 index fd5ae5ec8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1304.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1308.pgm b/examples/autotiler/Mnist/test_img/9/1308.pgm deleted file mode 100644 index 570b1a2d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1308.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1309.pgm b/examples/autotiler/Mnist/test_img/9/1309.pgm deleted file mode 100644 index a18d90102..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1311.pgm b/examples/autotiler/Mnist/test_img/9/1311.pgm deleted file mode 100644 index 09e104918..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1322.pgm b/examples/autotiler/Mnist/test_img/9/1322.pgm deleted file mode 100644 index 28beaf030..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1327.pgm b/examples/autotiler/Mnist/test_img/9/1327.pgm deleted file mode 100644 index 4f1eb11a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1327.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1343.pgm b/examples/autotiler/Mnist/test_img/9/1343.pgm deleted file mode 100644 index a4e7d4af6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1343.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1380.pgm b/examples/autotiler/Mnist/test_img/9/1380.pgm deleted file mode 100644 index 4c5ea20b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1385.pgm b/examples/autotiler/Mnist/test_img/9/1385.pgm deleted file mode 100644 index 869593137..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1396.pgm b/examples/autotiler/Mnist/test_img/9/1396.pgm deleted file mode 100644 index 3cf8aca41..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1396.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1414.pgm b/examples/autotiler/Mnist/test_img/9/1414.pgm deleted file mode 100644 index 486546b60..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1417.pgm b/examples/autotiler/Mnist/test_img/9/1417.pgm deleted file mode 100644 index da81d0e8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1418.pgm b/examples/autotiler/Mnist/test_img/9/1418.pgm deleted file mode 100644 index a75c4ac56..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1418.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1423.pgm b/examples/autotiler/Mnist/test_img/9/1423.pgm deleted file mode 100644 index 750b19081..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1428.pgm b/examples/autotiler/Mnist/test_img/9/1428.pgm deleted file mode 100644 index c39409ac7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1428.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1429.pgm b/examples/autotiler/Mnist/test_img/9/1429.pgm deleted file mode 100644 index e7f484d4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1435.pgm b/examples/autotiler/Mnist/test_img/9/1435.pgm deleted file mode 100644 index 693ff7f88..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1435.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1439.pgm b/examples/autotiler/Mnist/test_img/9/1439.pgm deleted file mode 100644 index 0b9c8a403..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1439.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1449.pgm b/examples/autotiler/Mnist/test_img/9/1449.pgm deleted file mode 100644 index 129d26390..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1449.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1452.pgm b/examples/autotiler/Mnist/test_img/9/1452.pgm deleted file mode 100644 index 8fffcfe76..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1452.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1455.pgm b/examples/autotiler/Mnist/test_img/9/1455.pgm deleted file mode 100644 index 02af6ea03..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1455.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1481.pgm b/examples/autotiler/Mnist/test_img/9/1481.pgm deleted file mode 100644 index f939ca74d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1486.pgm b/examples/autotiler/Mnist/test_img/9/1486.pgm deleted file mode 100644 index 3b81da9c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1486.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1492.pgm b/examples/autotiler/Mnist/test_img/9/1492.pgm deleted file mode 100644 index 5bb3e2c94..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1492.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/150.pgm b/examples/autotiler/Mnist/test_img/9/150.pgm deleted file mode 100644 index 0db417779..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1501.pgm b/examples/autotiler/Mnist/test_img/9/1501.pgm deleted file mode 100644 index 350f9b161..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1508.pgm b/examples/autotiler/Mnist/test_img/9/1508.pgm deleted file mode 100644 index 2984d269f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/151.pgm b/examples/autotiler/Mnist/test_img/9/151.pgm deleted file mode 100644 index ec67995d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/151.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1512.pgm b/examples/autotiler/Mnist/test_img/9/1512.pgm deleted file mode 100644 index 8729cb4fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1532.pgm b/examples/autotiler/Mnist/test_img/9/1532.pgm deleted file mode 100644 index c4cf01572..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1532.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1545.pgm b/examples/autotiler/Mnist/test_img/9/1545.pgm deleted file mode 100644 index 3ae7523a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1545.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1553.pgm b/examples/autotiler/Mnist/test_img/9/1553.pgm deleted file mode 100644 index 254f2fd61..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1554.pgm b/examples/autotiler/Mnist/test_img/9/1554.pgm deleted file mode 100644 index bc19656ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1559.pgm b/examples/autotiler/Mnist/test_img/9/1559.pgm deleted file mode 100644 index 0e826515f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1559.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1594.pgm b/examples/autotiler/Mnist/test_img/9/1594.pgm deleted file mode 100644 index b110beb48..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1596.pgm b/examples/autotiler/Mnist/test_img/9/1596.pgm deleted file mode 100644 index 96edbd0fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1597.pgm b/examples/autotiler/Mnist/test_img/9/1597.pgm deleted file mode 100644 index 02acfa930..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/16.pgm b/examples/autotiler/Mnist/test_img/9/16.pgm deleted file mode 100644 index 24d8f3819..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/16.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1622.pgm b/examples/autotiler/Mnist/test_img/9/1622.pgm deleted file mode 100644 index 850e80f54..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1627.pgm b/examples/autotiler/Mnist/test_img/9/1627.pgm deleted file mode 100644 index c993c0fb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1631.pgm b/examples/autotiler/Mnist/test_img/9/1631.pgm deleted file mode 100644 index 1a300ca06..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1631.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1640.pgm b/examples/autotiler/Mnist/test_img/9/1640.pgm deleted file mode 100644 index 9c72f055a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1645.pgm b/examples/autotiler/Mnist/test_img/9/1645.pgm deleted file mode 100644 index dac94ad5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1647.pgm b/examples/autotiler/Mnist/test_img/9/1647.pgm deleted file mode 100644 index 3965c820c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1647.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1648.pgm b/examples/autotiler/Mnist/test_img/9/1648.pgm deleted file mode 100644 index 5ebc897a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1655.pgm b/examples/autotiler/Mnist/test_img/9/1655.pgm deleted file mode 100644 index 8090308b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1666.pgm b/examples/autotiler/Mnist/test_img/9/1666.pgm deleted file mode 100644 index d2a398317..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1668.pgm b/examples/autotiler/Mnist/test_img/9/1668.pgm deleted file mode 100644 index e0b050612..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1695.pgm b/examples/autotiler/Mnist/test_img/9/1695.pgm deleted file mode 100644 index 6da006ef5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1695.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1697.pgm b/examples/autotiler/Mnist/test_img/9/1697.pgm deleted file mode 100644 index ec6a64b69..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1709.pgm b/examples/autotiler/Mnist/test_img/9/1709.pgm deleted file mode 100644 index dca2016fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1714.pgm b/examples/autotiler/Mnist/test_img/9/1714.pgm deleted file mode 100644 index f0ba3fbd9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1714.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1732.pgm b/examples/autotiler/Mnist/test_img/9/1732.pgm deleted file mode 100644 index 9f174f4db..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1732.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1743.pgm b/examples/autotiler/Mnist/test_img/9/1743.pgm deleted file mode 100644 index 7eec033d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1743.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1745.pgm b/examples/autotiler/Mnist/test_img/9/1745.pgm deleted file mode 100644 index 685c07e3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1745.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1781.pgm b/examples/autotiler/Mnist/test_img/9/1781.pgm deleted file mode 100644 index d41d2cc8c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1787.pgm b/examples/autotiler/Mnist/test_img/9/1787.pgm deleted file mode 100644 index cfb729351..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1788.pgm b/examples/autotiler/Mnist/test_img/9/1788.pgm deleted file mode 100644 index cae786033..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1793.pgm b/examples/autotiler/Mnist/test_img/9/1793.pgm deleted file mode 100644 index 2b1cbd1ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1801.pgm b/examples/autotiler/Mnist/test_img/9/1801.pgm deleted file mode 100644 index 7663c6d10..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1801.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1812.pgm b/examples/autotiler/Mnist/test_img/9/1812.pgm deleted file mode 100644 index f94aaad1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1821.pgm b/examples/autotiler/Mnist/test_img/9/1821.pgm deleted file mode 100644 index 2fdf51a2f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1825.pgm b/examples/autotiler/Mnist/test_img/9/1825.pgm deleted file mode 100644 index d3d10fa50..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/185.pgm b/examples/autotiler/Mnist/test_img/9/185.pgm deleted file mode 100644 index 71bed9665..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/185.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1851.pgm b/examples/autotiler/Mnist/test_img/9/1851.pgm deleted file mode 100644 index 863a17aea..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1851.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1853.pgm b/examples/autotiler/Mnist/test_img/9/1853.pgm deleted file mode 100644 index 770ee8b98..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1853.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1869.pgm b/examples/autotiler/Mnist/test_img/9/1869.pgm deleted file mode 100644 index 4d0e152da..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1873.pgm b/examples/autotiler/Mnist/test_img/9/1873.pgm deleted file mode 100644 index f34d417f1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1873.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1881.pgm b/examples/autotiler/Mnist/test_img/9/1881.pgm deleted file mode 100644 index e67ef7ec0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1894.pgm b/examples/autotiler/Mnist/test_img/9/1894.pgm deleted file mode 100644 index c06ff6fd4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1901.pgm b/examples/autotiler/Mnist/test_img/9/1901.pgm deleted file mode 100644 index 9d9e458ca..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1904.pgm b/examples/autotiler/Mnist/test_img/9/1904.pgm deleted file mode 100644 index eddc6f8cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1904.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1906.pgm b/examples/autotiler/Mnist/test_img/9/1906.pgm deleted file mode 100644 index d0811d3f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/193.pgm b/examples/autotiler/Mnist/test_img/9/193.pgm deleted file mode 100644 index dd189dbcc..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/193.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1952.pgm b/examples/autotiler/Mnist/test_img/9/1952.pgm deleted file mode 100644 index 11b7f2943..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1964.pgm b/examples/autotiler/Mnist/test_img/9/1964.pgm deleted file mode 100644 index 6ad9fd5b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1979.pgm b/examples/autotiler/Mnist/test_img/9/1979.pgm deleted file mode 100644 index b2f5c1abd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1992.pgm b/examples/autotiler/Mnist/test_img/9/1992.pgm deleted file mode 100644 index d9dadc1ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/1998.pgm b/examples/autotiler/Mnist/test_img/9/1998.pgm deleted file mode 100644 index a95981dfe..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/1998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/20.pgm b/examples/autotiler/Mnist/test_img/9/20.pgm deleted file mode 100644 index f7bc041d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/20.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2009.pgm b/examples/autotiler/Mnist/test_img/9/2009.pgm deleted file mode 100644 index 1b6b0c380..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2014.pgm b/examples/autotiler/Mnist/test_img/9/2014.pgm deleted file mode 100644 index 33280873a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2014.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2019.pgm b/examples/autotiler/Mnist/test_img/9/2019.pgm deleted file mode 100644 index e0f65a8a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2019.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2049.pgm b/examples/autotiler/Mnist/test_img/9/2049.pgm deleted file mode 100644 index 1462a8f2c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2049.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2054.pgm b/examples/autotiler/Mnist/test_img/9/2054.pgm deleted file mode 100644 index 74bc83c98..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/206.pgm b/examples/autotiler/Mnist/test_img/9/206.pgm deleted file mode 100644 index 4e59974ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2068.pgm b/examples/autotiler/Mnist/test_img/9/2068.pgm deleted file mode 100644 index 8ec510c9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2068.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2088.pgm b/examples/autotiler/Mnist/test_img/9/2088.pgm deleted file mode 100644 index 2804635e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2089.pgm b/examples/autotiler/Mnist/test_img/9/2089.pgm deleted file mode 100644 index 65c54b085..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/209.pgm b/examples/autotiler/Mnist/test_img/9/209.pgm deleted file mode 100644 index ad3fa149d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/209.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/212.pgm b/examples/autotiler/Mnist/test_img/9/212.pgm deleted file mode 100644 index 331bb2d26..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2129.pgm b/examples/autotiler/Mnist/test_img/9/2129.pgm deleted file mode 100644 index 7c8679f7e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/214.pgm b/examples/autotiler/Mnist/test_img/9/214.pgm deleted file mode 100644 index 4f17f2330..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2147.pgm b/examples/autotiler/Mnist/test_img/9/2147.pgm deleted file mode 100644 index 2a151f7f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2161.pgm b/examples/autotiler/Mnist/test_img/9/2161.pgm deleted file mode 100644 index 1fc7190cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2161.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2181.pgm b/examples/autotiler/Mnist/test_img/9/2181.pgm deleted file mode 100644 index 8fa952a59..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2189.pgm b/examples/autotiler/Mnist/test_img/9/2189.pgm deleted file mode 100644 index 10d701798..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2189.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2196.pgm b/examples/autotiler/Mnist/test_img/9/2196.pgm deleted file mode 100644 index 336e9fd37..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2196.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2212.pgm b/examples/autotiler/Mnist/test_img/9/2212.pgm deleted file mode 100644 index 4506ae870..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2212.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2216.pgm b/examples/autotiler/Mnist/test_img/9/2216.pgm deleted file mode 100644 index 709f61094..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2227.pgm b/examples/autotiler/Mnist/test_img/9/2227.pgm deleted file mode 100644 index c5c53fa30..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2232.pgm b/examples/autotiler/Mnist/test_img/9/2232.pgm deleted file mode 100644 index dfeee6bc2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2232.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2244.pgm b/examples/autotiler/Mnist/test_img/9/2244.pgm deleted file mode 100644 index 04776e707..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2244.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2250.pgm b/examples/autotiler/Mnist/test_img/9/2250.pgm deleted file mode 100644 index 6959cfe1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2257.pgm b/examples/autotiler/Mnist/test_img/9/2257.pgm deleted file mode 100644 index 2fb90d41f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2259.pgm b/examples/autotiler/Mnist/test_img/9/2259.pgm deleted file mode 100644 index e760cbb32..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2263.pgm b/examples/autotiler/Mnist/test_img/9/2263.pgm deleted file mode 100644 index a84f884ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2263.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2274.pgm b/examples/autotiler/Mnist/test_img/9/2274.pgm deleted file mode 100644 index bdbba769b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2292.pgm b/examples/autotiler/Mnist/test_img/9/2292.pgm deleted file mode 100644 index 7d212f1f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2293.pgm b/examples/autotiler/Mnist/test_img/9/2293.pgm deleted file mode 100644 index 4acac8870..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2310.pgm b/examples/autotiler/Mnist/test_img/9/2310.pgm deleted file mode 100644 index 854578097..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2310.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2313.pgm b/examples/autotiler/Mnist/test_img/9/2313.pgm deleted file mode 100644 index 7e95d9544..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2313.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2320.pgm b/examples/autotiler/Mnist/test_img/9/2320.pgm deleted file mode 100644 index 67b8c993d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2323.pgm b/examples/autotiler/Mnist/test_img/9/2323.pgm deleted file mode 100644 index 839f01bf1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2323.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2341.pgm b/examples/autotiler/Mnist/test_img/9/2341.pgm deleted file mode 100644 index 63be46996..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2341.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2342.pgm b/examples/autotiler/Mnist/test_img/9/2342.pgm deleted file mode 100644 index 747327571..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2342.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2345.pgm b/examples/autotiler/Mnist/test_img/9/2345.pgm deleted file mode 100644 index ac9b42ba4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2345.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/235.pgm b/examples/autotiler/Mnist/test_img/9/235.pgm deleted file mode 100644 index 43ac9e977..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2361.pgm b/examples/autotiler/Mnist/test_img/9/2361.pgm deleted file mode 100644 index c2cf5525e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2361.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2380.pgm b/examples/autotiler/Mnist/test_img/9/2380.pgm deleted file mode 100644 index 48af2a0de..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2387.pgm b/examples/autotiler/Mnist/test_img/9/2387.pgm deleted file mode 100644 index d3b91c832..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2406.pgm b/examples/autotiler/Mnist/test_img/9/2406.pgm deleted file mode 100644 index 6d5332adf..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2406.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/241.pgm b/examples/autotiler/Mnist/test_img/9/241.pgm deleted file mode 100644 index c2fd7b8fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2414.pgm b/examples/autotiler/Mnist/test_img/9/2414.pgm deleted file mode 100644 index afb64f0fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2420.pgm b/examples/autotiler/Mnist/test_img/9/2420.pgm deleted file mode 100644 index 238780d05..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2426.pgm b/examples/autotiler/Mnist/test_img/9/2426.pgm deleted file mode 100644 index d4c877377..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2438.pgm b/examples/autotiler/Mnist/test_img/9/2438.pgm deleted file mode 100644 index 64764eed7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2438.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2443.pgm b/examples/autotiler/Mnist/test_img/9/2443.pgm deleted file mode 100644 index 2b1155a41..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2448.pgm b/examples/autotiler/Mnist/test_img/9/2448.pgm deleted file mode 100644 index e64cb1696..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2456.pgm b/examples/autotiler/Mnist/test_img/9/2456.pgm deleted file mode 100644 index 3822c77a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2472.pgm b/examples/autotiler/Mnist/test_img/9/2472.pgm deleted file mode 100644 index 330b49eea..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2477.pgm b/examples/autotiler/Mnist/test_img/9/2477.pgm deleted file mode 100644 index 7e58ae46f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2478.pgm b/examples/autotiler/Mnist/test_img/9/2478.pgm deleted file mode 100644 index 75cdbc6b9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2493.pgm b/examples/autotiler/Mnist/test_img/9/2493.pgm deleted file mode 100644 index f3387557e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2493.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2494.pgm b/examples/autotiler/Mnist/test_img/9/2494.pgm deleted file mode 100644 index e66f0f116..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2494.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2497.pgm b/examples/autotiler/Mnist/test_img/9/2497.pgm deleted file mode 100644 index 4874416a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2516.pgm b/examples/autotiler/Mnist/test_img/9/2516.pgm deleted file mode 100644 index f7a0085f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2516.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/252.pgm b/examples/autotiler/Mnist/test_img/9/252.pgm deleted file mode 100644 index c53a8a979..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2528.pgm b/examples/autotiler/Mnist/test_img/9/2528.pgm deleted file mode 100644 index aebc9dd9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2528.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2538.pgm b/examples/autotiler/Mnist/test_img/9/2538.pgm deleted file mode 100644 index e7920375c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2544.pgm b/examples/autotiler/Mnist/test_img/9/2544.pgm deleted file mode 100644 index 739792c32..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2548.pgm b/examples/autotiler/Mnist/test_img/9/2548.pgm deleted file mode 100644 index e7149beac..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2548.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2570.pgm b/examples/autotiler/Mnist/test_img/9/2570.pgm deleted file mode 100644 index b530adde0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2582.pgm b/examples/autotiler/Mnist/test_img/9/2582.pgm deleted file mode 100644 index 817c0868a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2585.pgm b/examples/autotiler/Mnist/test_img/9/2585.pgm deleted file mode 100644 index c4f424a12..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2589.pgm b/examples/autotiler/Mnist/test_img/9/2589.pgm deleted file mode 100644 index 72aaf5318..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2589.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2603.pgm b/examples/autotiler/Mnist/test_img/9/2603.pgm deleted file mode 100644 index 0de877737..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2603.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2633.pgm b/examples/autotiler/Mnist/test_img/9/2633.pgm deleted file mode 100644 index 623c1374d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2637.pgm b/examples/autotiler/Mnist/test_img/9/2637.pgm deleted file mode 100644 index 929230005..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2637.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/264.pgm b/examples/autotiler/Mnist/test_img/9/264.pgm deleted file mode 100644 index 47387cd64..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/264.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2648.pgm b/examples/autotiler/Mnist/test_img/9/2648.pgm deleted file mode 100644 index 1c3eadc2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2673.pgm b/examples/autotiler/Mnist/test_img/9/2673.pgm deleted file mode 100644 index b4a26b4c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2685.pgm b/examples/autotiler/Mnist/test_img/9/2685.pgm deleted file mode 100644 index 7f21c8dce..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2685.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2692.pgm b/examples/autotiler/Mnist/test_img/9/2692.pgm deleted file mode 100644 index b9fedb923..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2694.pgm b/examples/autotiler/Mnist/test_img/9/2694.pgm deleted file mode 100644 index 5afbcbeef..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2694.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2696.pgm b/examples/autotiler/Mnist/test_img/9/2696.pgm deleted file mode 100644 index 73d2e4c5e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2696.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2720.pgm b/examples/autotiler/Mnist/test_img/9/2720.pgm deleted file mode 100644 index ecaae36d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2720.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/273.pgm b/examples/autotiler/Mnist/test_img/9/273.pgm deleted file mode 100644 index fc0c1f218..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/273.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2735.pgm b/examples/autotiler/Mnist/test_img/9/2735.pgm deleted file mode 100644 index 1fb9a2287..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/274.pgm b/examples/autotiler/Mnist/test_img/9/274.pgm deleted file mode 100644 index e601accc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2740.pgm b/examples/autotiler/Mnist/test_img/9/2740.pgm deleted file mode 100644 index d19509356..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2742.pgm b/examples/autotiler/Mnist/test_img/9/2742.pgm deleted file mode 100644 index 32744bc04..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2742.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2755.pgm b/examples/autotiler/Mnist/test_img/9/2755.pgm deleted file mode 100644 index 750ab32c8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2760.pgm b/examples/autotiler/Mnist/test_img/9/2760.pgm deleted file mode 100644 index 4be4ef6c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2769.pgm b/examples/autotiler/Mnist/test_img/9/2769.pgm deleted file mode 100644 index 906511c70..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2781.pgm b/examples/autotiler/Mnist/test_img/9/2781.pgm deleted file mode 100644 index 01cef8e55..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2792.pgm b/examples/autotiler/Mnist/test_img/9/2792.pgm deleted file mode 100644 index 4c9e9ef63..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2792.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/281.pgm b/examples/autotiler/Mnist/test_img/9/281.pgm deleted file mode 100644 index 47515818f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/281.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2812.pgm b/examples/autotiler/Mnist/test_img/9/2812.pgm deleted file mode 100644 index 2a1c4be46..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2812.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/284.pgm b/examples/autotiler/Mnist/test_img/9/284.pgm deleted file mode 100644 index 55df9d5e6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2845.pgm b/examples/autotiler/Mnist/test_img/9/2845.pgm deleted file mode 100644 index bb7acc6c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2845.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2854.pgm b/examples/autotiler/Mnist/test_img/9/2854.pgm deleted file mode 100644 index eee199a6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2857.pgm b/examples/autotiler/Mnist/test_img/9/2857.pgm deleted file mode 100644 index 2b014bd20..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2858.pgm b/examples/autotiler/Mnist/test_img/9/2858.pgm deleted file mode 100644 index 45888a4a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2858.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2863.pgm b/examples/autotiler/Mnist/test_img/9/2863.pgm deleted file mode 100644 index 2ad4fa8ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2870.pgm b/examples/autotiler/Mnist/test_img/9/2870.pgm deleted file mode 100644 index c6c5393d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2875.pgm b/examples/autotiler/Mnist/test_img/9/2875.pgm deleted file mode 100644 index e18e6d5e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2875.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2883.pgm b/examples/autotiler/Mnist/test_img/9/2883.pgm deleted file mode 100644 index 59518559a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2883.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2892.pgm b/examples/autotiler/Mnist/test_img/9/2892.pgm deleted file mode 100644 index e52f35724..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2908.pgm b/examples/autotiler/Mnist/test_img/9/2908.pgm deleted file mode 100644 index 02b0c1be5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2916.pgm b/examples/autotiler/Mnist/test_img/9/2916.pgm deleted file mode 100644 index 06a903f50..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/292.pgm b/examples/autotiler/Mnist/test_img/9/292.pgm deleted file mode 100644 index 267e1b250..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2923.pgm b/examples/autotiler/Mnist/test_img/9/2923.pgm deleted file mode 100644 index 81b0728ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2923.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2926.pgm b/examples/autotiler/Mnist/test_img/9/2926.pgm deleted file mode 100644 index 4bb9aa609..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2929.pgm b/examples/autotiler/Mnist/test_img/9/2929.pgm deleted file mode 100644 index 424750544..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2929.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2934.pgm b/examples/autotiler/Mnist/test_img/9/2934.pgm deleted file mode 100644 index a669a89f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2934.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2939.pgm b/examples/autotiler/Mnist/test_img/9/2939.pgm deleted file mode 100644 index ba6beab09..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2939.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2941.pgm b/examples/autotiler/Mnist/test_img/9/2941.pgm deleted file mode 100644 index 4d87bc92c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2958.pgm b/examples/autotiler/Mnist/test_img/9/2958.pgm deleted file mode 100644 index 6145f106b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2958.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2964.pgm b/examples/autotiler/Mnist/test_img/9/2964.pgm deleted file mode 100644 index f2730ec85..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2966.pgm b/examples/autotiler/Mnist/test_img/9/2966.pgm deleted file mode 100644 index 0122c9a29..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2973.pgm b/examples/autotiler/Mnist/test_img/9/2973.pgm deleted file mode 100644 index afc5e29a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2979.pgm b/examples/autotiler/Mnist/test_img/9/2979.pgm deleted file mode 100644 index d28b86ec1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2979.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/2983.pgm b/examples/autotiler/Mnist/test_img/9/2983.pgm deleted file mode 100644 index 8c04746b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/2983.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3001.pgm b/examples/autotiler/Mnist/test_img/9/3001.pgm deleted file mode 100644 index ec9b413a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3005.pgm b/examples/autotiler/Mnist/test_img/9/3005.pgm deleted file mode 100644 index 7f31a36da..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3005.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3006.pgm b/examples/autotiler/Mnist/test_img/9/3006.pgm deleted file mode 100644 index 42b873f68..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3008.pgm b/examples/autotiler/Mnist/test_img/9/3008.pgm deleted file mode 100644 index 992b76129..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3034.pgm b/examples/autotiler/Mnist/test_img/9/3034.pgm deleted file mode 100644 index 02a66b60c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3034.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3041.pgm b/examples/autotiler/Mnist/test_img/9/3041.pgm deleted file mode 100644 index ad79ad59d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3041.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3056.pgm b/examples/autotiler/Mnist/test_img/9/3056.pgm deleted file mode 100644 index 8af61e9d7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3056.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3060.pgm b/examples/autotiler/Mnist/test_img/9/3060.pgm deleted file mode 100644 index f4bfcd7de..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3075.pgm b/examples/autotiler/Mnist/test_img/9/3075.pgm deleted file mode 100644 index 3cbf9e97c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3075.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3147.pgm b/examples/autotiler/Mnist/test_img/9/3147.pgm deleted file mode 100644 index 1196a13ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3147.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3149.pgm b/examples/autotiler/Mnist/test_img/9/3149.pgm deleted file mode 100644 index d5ac0e272..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3149.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/315.pgm b/examples/autotiler/Mnist/test_img/9/315.pgm deleted file mode 100644 index e3b52ba7b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3160.pgm b/examples/autotiler/Mnist/test_img/9/3160.pgm deleted file mode 100644 index a9021c3ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3160.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3165.pgm b/examples/autotiler/Mnist/test_img/9/3165.pgm deleted file mode 100644 index ac7f2ef36..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3168.pgm b/examples/autotiler/Mnist/test_img/9/3168.pgm deleted file mode 100644 index d36f2f030..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3190.pgm b/examples/autotiler/Mnist/test_img/9/3190.pgm deleted file mode 100644 index 5b008c71f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/320.pgm b/examples/autotiler/Mnist/test_img/9/320.pgm deleted file mode 100644 index edafbed9d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/320.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3200.pgm b/examples/autotiler/Mnist/test_img/9/3200.pgm deleted file mode 100644 index 817b42f34..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/322.pgm b/examples/autotiler/Mnist/test_img/9/322.pgm deleted file mode 100644 index 8926d7df2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3240.pgm b/examples/autotiler/Mnist/test_img/9/3240.pgm deleted file mode 100644 index dd61e829a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3241.pgm b/examples/autotiler/Mnist/test_img/9/3241.pgm deleted file mode 100644 index 854a14117..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3241.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3286.pgm b/examples/autotiler/Mnist/test_img/9/3286.pgm deleted file mode 100644 index 63780facb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3286.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3287.pgm b/examples/autotiler/Mnist/test_img/9/3287.pgm deleted file mode 100644 index 99da4a991..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3338.pgm b/examples/autotiler/Mnist/test_img/9/3338.pgm deleted file mode 100644 index 74d3f81cd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3338.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/336.pgm b/examples/autotiler/Mnist/test_img/9/336.pgm deleted file mode 100644 index 6a849c5fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3369.pgm b/examples/autotiler/Mnist/test_img/9/3369.pgm deleted file mode 100644 index 1b862a2a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3385.pgm b/examples/autotiler/Mnist/test_img/9/3385.pgm deleted file mode 100644 index fea2e058e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3385.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3387.pgm b/examples/autotiler/Mnist/test_img/9/3387.pgm deleted file mode 100644 index 0f0886238..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3387.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3392.pgm b/examples/autotiler/Mnist/test_img/9/3392.pgm deleted file mode 100644 index 0a98a0373..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3392.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3394.pgm b/examples/autotiler/Mnist/test_img/9/3394.pgm deleted file mode 100644 index 3aa216599..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3404.pgm b/examples/autotiler/Mnist/test_img/9/3404.pgm deleted file mode 100644 index b3db3b519..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3411.pgm b/examples/autotiler/Mnist/test_img/9/3411.pgm deleted file mode 100644 index 8ef21bbef..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3426.pgm b/examples/autotiler/Mnist/test_img/9/3426.pgm deleted file mode 100644 index fc459a8f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3459.pgm b/examples/autotiler/Mnist/test_img/9/3459.pgm deleted file mode 100644 index 430bc2959..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3460.pgm b/examples/autotiler/Mnist/test_img/9/3460.pgm deleted file mode 100644 index 4883139bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3460.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3467.pgm b/examples/autotiler/Mnist/test_img/9/3467.pgm deleted file mode 100644 index 44f48b982..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3472.pgm b/examples/autotiler/Mnist/test_img/9/3472.pgm deleted file mode 100644 index ae50bae25..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3477.pgm b/examples/autotiler/Mnist/test_img/9/3477.pgm deleted file mode 100644 index 9d9c9925c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3478.pgm b/examples/autotiler/Mnist/test_img/9/3478.pgm deleted file mode 100644 index 15880a56e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3478.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3483.pgm b/examples/autotiler/Mnist/test_img/9/3483.pgm deleted file mode 100644 index 3590958f6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3485.pgm b/examples/autotiler/Mnist/test_img/9/3485.pgm deleted file mode 100644 index 89d472c07..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3485.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3491.pgm b/examples/autotiler/Mnist/test_img/9/3491.pgm deleted file mode 100644 index 04b8da4a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3501.pgm b/examples/autotiler/Mnist/test_img/9/3501.pgm deleted file mode 100644 index be2b3defd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3503.pgm b/examples/autotiler/Mnist/test_img/9/3503.pgm deleted file mode 100644 index fa31f09b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3504.pgm b/examples/autotiler/Mnist/test_img/9/3504.pgm deleted file mode 100644 index 28dbd94a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3507.pgm b/examples/autotiler/Mnist/test_img/9/3507.pgm deleted file mode 100644 index a96cc604b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3526.pgm b/examples/autotiler/Mnist/test_img/9/3526.pgm deleted file mode 100644 index 1c2ce3af0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3526.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3529.pgm b/examples/autotiler/Mnist/test_img/9/3529.pgm deleted file mode 100644 index b21c505cc..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3529.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3538.pgm b/examples/autotiler/Mnist/test_img/9/3538.pgm deleted file mode 100644 index 2733b316f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3538.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3553.pgm b/examples/autotiler/Mnist/test_img/9/3553.pgm deleted file mode 100644 index 0201c7f17..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3587.pgm b/examples/autotiler/Mnist/test_img/9/3587.pgm deleted file mode 100644 index b10a64b59..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/359.pgm b/examples/autotiler/Mnist/test_img/9/359.pgm deleted file mode 100644 index 7bc47c9b2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/359.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3592.pgm b/examples/autotiler/Mnist/test_img/9/3592.pgm deleted file mode 100644 index 5b9222f1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3597.pgm b/examples/autotiler/Mnist/test_img/9/3597.pgm deleted file mode 100644 index 33b44cb16..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3597.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3618.pgm b/examples/autotiler/Mnist/test_img/9/3618.pgm deleted file mode 100644 index 35a567682..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3618.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3664.pgm b/examples/autotiler/Mnist/test_img/9/3664.pgm deleted file mode 100644 index 60b6ce164..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3664.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3666.pgm b/examples/autotiler/Mnist/test_img/9/3666.pgm deleted file mode 100644 index bc76ab751..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3666.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3687.pgm b/examples/autotiler/Mnist/test_img/9/3687.pgm deleted file mode 100644 index 7ca254489..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3687.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3693.pgm b/examples/autotiler/Mnist/test_img/9/3693.pgm deleted file mode 100644 index d565770c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3693.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3709.pgm b/examples/autotiler/Mnist/test_img/9/3709.pgm deleted file mode 100644 index 35cf0f662..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3709.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3711.pgm b/examples/autotiler/Mnist/test_img/9/3711.pgm deleted file mode 100644 index 58b0d2085..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3711.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3716.pgm b/examples/autotiler/Mnist/test_img/9/3716.pgm deleted file mode 100644 index 016243b8a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3716.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3723.pgm b/examples/autotiler/Mnist/test_img/9/3723.pgm deleted file mode 100644 index 29561c14a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3755.pgm b/examples/autotiler/Mnist/test_img/9/3755.pgm deleted file mode 100644 index 58ac8e654..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3755.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3759.pgm b/examples/autotiler/Mnist/test_img/9/3759.pgm deleted file mode 100644 index ac0c97e79..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3760.pgm b/examples/autotiler/Mnist/test_img/9/3760.pgm deleted file mode 100644 index fc4afac53..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3760.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3783.pgm b/examples/autotiler/Mnist/test_img/9/3783.pgm deleted file mode 100644 index d9f4200c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3783.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3791.pgm b/examples/autotiler/Mnist/test_img/9/3791.pgm deleted file mode 100644 index 283368a4d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3791.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3798.pgm b/examples/autotiler/Mnist/test_img/9/3798.pgm deleted file mode 100644 index 010d7ee30..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3798.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3820.pgm b/examples/autotiler/Mnist/test_img/9/3820.pgm deleted file mode 100644 index 355789eac..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3820.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3821.pgm b/examples/autotiler/Mnist/test_img/9/3821.pgm deleted file mode 100644 index 67c7dbf07..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3821.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3831.pgm b/examples/autotiler/Mnist/test_img/9/3831.pgm deleted file mode 100644 index 8647ca003..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3831.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3840.pgm b/examples/autotiler/Mnist/test_img/9/3840.pgm deleted file mode 100644 index 51db3b850..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3842.pgm b/examples/autotiler/Mnist/test_img/9/3842.pgm deleted file mode 100644 index 78a20bb9f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3842.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3850.pgm b/examples/autotiler/Mnist/test_img/9/3850.pgm deleted file mode 100644 index 39cb11985..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3850.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3856.pgm b/examples/autotiler/Mnist/test_img/9/3856.pgm deleted file mode 100644 index 7cbf382cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3857.pgm b/examples/autotiler/Mnist/test_img/9/3857.pgm deleted file mode 100644 index 55d519f18..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3857.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3859.pgm b/examples/autotiler/Mnist/test_img/9/3859.pgm deleted file mode 100644 index c3af0b690..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3859.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3861.pgm b/examples/autotiler/Mnist/test_img/9/3861.pgm deleted file mode 100644 index 29751841a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3861.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3869.pgm b/examples/autotiler/Mnist/test_img/9/3869.pgm deleted file mode 100644 index ed3fb4dd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3872.pgm b/examples/autotiler/Mnist/test_img/9/3872.pgm deleted file mode 100644 index 8b93115b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3872.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3874.pgm b/examples/autotiler/Mnist/test_img/9/3874.pgm deleted file mode 100644 index 15d5d85ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3879.pgm b/examples/autotiler/Mnist/test_img/9/3879.pgm deleted file mode 100644 index b2e0bccbc..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3879.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3881.pgm b/examples/autotiler/Mnist/test_img/9/3881.pgm deleted file mode 100644 index 5f640098d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3881.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3884.pgm b/examples/autotiler/Mnist/test_img/9/3884.pgm deleted file mode 100644 index eeb85bb96..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3885.pgm b/examples/autotiler/Mnist/test_img/9/3885.pgm deleted file mode 100644 index bb2c51470..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3885.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3888.pgm b/examples/autotiler/Mnist/test_img/9/3888.pgm deleted file mode 100644 index 212983a24..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3889.pgm b/examples/autotiler/Mnist/test_img/9/3889.pgm deleted file mode 100644 index 4da5b8b14..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3889.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/389.pgm b/examples/autotiler/Mnist/test_img/9/389.pgm deleted file mode 100644 index dfc5330d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/389.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3891.pgm b/examples/autotiler/Mnist/test_img/9/3891.pgm deleted file mode 100644 index 07aa414d1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3924.pgm b/examples/autotiler/Mnist/test_img/9/3924.pgm deleted file mode 100644 index a25801bd4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3926.pgm b/examples/autotiler/Mnist/test_img/9/3926.pgm deleted file mode 100644 index 7007e7e6f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3926.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3927.pgm b/examples/autotiler/Mnist/test_img/9/3927.pgm deleted file mode 100644 index a30acc268..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3927.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/394.pgm b/examples/autotiler/Mnist/test_img/9/394.pgm deleted file mode 100644 index 3c9f8d230..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3950.pgm b/examples/autotiler/Mnist/test_img/9/3950.pgm deleted file mode 100644 index 16a55943a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3950.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3966.pgm b/examples/autotiler/Mnist/test_img/9/3966.pgm deleted file mode 100644 index 061363f97..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3967.pgm b/examples/autotiler/Mnist/test_img/9/3967.pgm deleted file mode 100644 index c7d05f8b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3970.pgm b/examples/autotiler/Mnist/test_img/9/3970.pgm deleted file mode 100644 index 286521d99..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3970.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3981.pgm b/examples/autotiler/Mnist/test_img/9/3981.pgm deleted file mode 100644 index 618dc65ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3981.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3984.pgm b/examples/autotiler/Mnist/test_img/9/3984.pgm deleted file mode 100644 index f7d92edd8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3985.pgm b/examples/autotiler/Mnist/test_img/9/3985.pgm deleted file mode 100644 index 7274a43e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3985.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3992.pgm b/examples/autotiler/Mnist/test_img/9/3992.pgm deleted file mode 100644 index 3143df471..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/3999.pgm b/examples/autotiler/Mnist/test_img/9/3999.pgm deleted file mode 100644 index 40899b9bb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/3999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4000.pgm b/examples/autotiler/Mnist/test_img/9/4000.pgm deleted file mode 100644 index a040a7fa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4009.pgm b/examples/autotiler/Mnist/test_img/9/4009.pgm deleted file mode 100644 index b35b76d04..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4015.pgm b/examples/autotiler/Mnist/test_img/9/4015.pgm deleted file mode 100644 index 2da3f74b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4016.pgm b/examples/autotiler/Mnist/test_img/9/4016.pgm deleted file mode 100644 index f453b5435..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4016.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4030.pgm b/examples/autotiler/Mnist/test_img/9/4030.pgm deleted file mode 100644 index 39b899007..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4030.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4040.pgm b/examples/autotiler/Mnist/test_img/9/4040.pgm deleted file mode 100644 index b675b04aa..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4040.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4047.pgm b/examples/autotiler/Mnist/test_img/9/4047.pgm deleted file mode 100644 index cca7ced29..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4078.pgm b/examples/autotiler/Mnist/test_img/9/4078.pgm deleted file mode 100644 index 26f413ff7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4078.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4088.pgm b/examples/autotiler/Mnist/test_img/9/4088.pgm deleted file mode 100644 index b1e460cc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4088.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4093.pgm b/examples/autotiler/Mnist/test_img/9/4093.pgm deleted file mode 100644 index 35ae9d6ad..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4095.pgm b/examples/autotiler/Mnist/test_img/9/4095.pgm deleted file mode 100644 index 18a12d29b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4101.pgm b/examples/autotiler/Mnist/test_img/9/4101.pgm deleted file mode 100644 index f7c5ee200..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4111.pgm b/examples/autotiler/Mnist/test_img/9/4111.pgm deleted file mode 100644 index d456dd2c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4111.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4122.pgm b/examples/autotiler/Mnist/test_img/9/4122.pgm deleted file mode 100644 index 081cfa0c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4122.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4129.pgm b/examples/autotiler/Mnist/test_img/9/4129.pgm deleted file mode 100644 index e60aa8a50..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4129.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4134.pgm b/examples/autotiler/Mnist/test_img/9/4134.pgm deleted file mode 100644 index 96e6b61f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4134.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/414.pgm b/examples/autotiler/Mnist/test_img/9/414.pgm deleted file mode 100644 index 7f69b9577..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4143.pgm b/examples/autotiler/Mnist/test_img/9/4143.pgm deleted file mode 100644 index 2f9442dc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4143.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4154.pgm b/examples/autotiler/Mnist/test_img/9/4154.pgm deleted file mode 100644 index 1698d9a6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4154.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4158.pgm b/examples/autotiler/Mnist/test_img/9/4158.pgm deleted file mode 100644 index ebcbca84d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4158.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4163.pgm b/examples/autotiler/Mnist/test_img/9/4163.pgm deleted file mode 100644 index d34121ed3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4163.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/417.pgm b/examples/autotiler/Mnist/test_img/9/417.pgm deleted file mode 100644 index db744bb0f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4174.pgm b/examples/autotiler/Mnist/test_img/9/4174.pgm deleted file mode 100644 index fd9837c99..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4182.pgm b/examples/autotiler/Mnist/test_img/9/4182.pgm deleted file mode 100644 index baf06beee..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4183.pgm b/examples/autotiler/Mnist/test_img/9/4183.pgm deleted file mode 100644 index fb8fe6bc8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4183.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4184.pgm b/examples/autotiler/Mnist/test_img/9/4184.pgm deleted file mode 100644 index b4a4016b3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4198.pgm b/examples/autotiler/Mnist/test_img/9/4198.pgm deleted file mode 100644 index 4b5629f6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4210.pgm b/examples/autotiler/Mnist/test_img/9/4210.pgm deleted file mode 100644 index 8ae679143..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4213.pgm b/examples/autotiler/Mnist/test_img/9/4213.pgm deleted file mode 100644 index 14f1062af..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/422.pgm b/examples/autotiler/Mnist/test_img/9/422.pgm deleted file mode 100644 index 61001c2c2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4224.pgm b/examples/autotiler/Mnist/test_img/9/4224.pgm deleted file mode 100644 index f7e30f81f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4235.pgm b/examples/autotiler/Mnist/test_img/9/4235.pgm deleted file mode 100644 index 9da163b17..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4237.pgm b/examples/autotiler/Mnist/test_img/9/4237.pgm deleted file mode 100644 index 238f19868..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4237.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4240.pgm b/examples/autotiler/Mnist/test_img/9/4240.pgm deleted file mode 100644 index d18176138..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4240.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4245.pgm b/examples/autotiler/Mnist/test_img/9/4245.pgm deleted file mode 100644 index b72d8baec..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4257.pgm b/examples/autotiler/Mnist/test_img/9/4257.pgm deleted file mode 100644 index 75a1d2c89..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4257.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4259.pgm b/examples/autotiler/Mnist/test_img/9/4259.pgm deleted file mode 100644 index a4c98bb25..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/426.pgm b/examples/autotiler/Mnist/test_img/9/426.pgm deleted file mode 100644 index 3ed3eb494..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4272.pgm b/examples/autotiler/Mnist/test_img/9/4272.pgm deleted file mode 100644 index c5566b67c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4280.pgm b/examples/autotiler/Mnist/test_img/9/4280.pgm deleted file mode 100644 index 90111e78e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4280.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4283.pgm b/examples/autotiler/Mnist/test_img/9/4283.pgm deleted file mode 100644 index bc2fdb0f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4283.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4284.pgm b/examples/autotiler/Mnist/test_img/9/4284.pgm deleted file mode 100644 index d0fcdefc5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4284.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4287.pgm b/examples/autotiler/Mnist/test_img/9/4287.pgm deleted file mode 100644 index 2a38d5957..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4293.pgm b/examples/autotiler/Mnist/test_img/9/4293.pgm deleted file mode 100644 index 56bc797a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4294.pgm b/examples/autotiler/Mnist/test_img/9/4294.pgm deleted file mode 100644 index 4045ee057..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4294.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4298.pgm b/examples/autotiler/Mnist/test_img/9/4298.pgm deleted file mode 100644 index ade15d9ce..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4299.pgm b/examples/autotiler/Mnist/test_img/9/4299.pgm deleted file mode 100644 index ad8f66f78..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4301.pgm b/examples/autotiler/Mnist/test_img/9/4301.pgm deleted file mode 100644 index 6b4f8de0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4301.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4309.pgm b/examples/autotiler/Mnist/test_img/9/4309.pgm deleted file mode 100644 index bf1404d14..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4309.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4314.pgm b/examples/autotiler/Mnist/test_img/9/4314.pgm deleted file mode 100644 index f2d04d55f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4314.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4316.pgm b/examples/autotiler/Mnist/test_img/9/4316.pgm deleted file mode 100644 index ae5abfa63..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4316.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4319.pgm b/examples/autotiler/Mnist/test_img/9/4319.pgm deleted file mode 100644 index 9633e7bf0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4321.pgm b/examples/autotiler/Mnist/test_img/9/4321.pgm deleted file mode 100644 index ceb020a53..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4321.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4325.pgm b/examples/autotiler/Mnist/test_img/9/4325.pgm deleted file mode 100644 index 90482a499..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4325.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4333.pgm b/examples/autotiler/Mnist/test_img/9/4333.pgm deleted file mode 100644 index a00534bf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/434.pgm b/examples/autotiler/Mnist/test_img/9/434.pgm deleted file mode 100644 index a188affe9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/434.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4344.pgm b/examples/autotiler/Mnist/test_img/9/4344.pgm deleted file mode 100644 index 18e10deb4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4358.pgm b/examples/autotiler/Mnist/test_img/9/4358.pgm deleted file mode 100644 index e16c4b362..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4363.pgm b/examples/autotiler/Mnist/test_img/9/4363.pgm deleted file mode 100644 index 5f5eb1e3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4363.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4369.pgm b/examples/autotiler/Mnist/test_img/9/4369.pgm deleted file mode 100644 index a9d6b4d24..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4369.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4383.pgm b/examples/autotiler/Mnist/test_img/9/4383.pgm deleted file mode 100644 index 4c0159784..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4405.pgm b/examples/autotiler/Mnist/test_img/9/4405.pgm deleted file mode 100644 index 19198e644..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4405.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4407.pgm b/examples/autotiler/Mnist/test_img/9/4407.pgm deleted file mode 100644 index b8b825567..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4407.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4408.pgm b/examples/autotiler/Mnist/test_img/9/4408.pgm deleted file mode 100644 index f552d18f2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4410.pgm b/examples/autotiler/Mnist/test_img/9/4410.pgm deleted file mode 100644 index 3b9df8a1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4410.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4417.pgm b/examples/autotiler/Mnist/test_img/9/4417.pgm deleted file mode 100644 index eadbdb5c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4417.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4424.pgm b/examples/autotiler/Mnist/test_img/9/4424.pgm deleted file mode 100644 index b39d81dda..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4425.pgm b/examples/autotiler/Mnist/test_img/9/4425.pgm deleted file mode 100644 index 61fd10720..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4425.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4426.pgm b/examples/autotiler/Mnist/test_img/9/4426.pgm deleted file mode 100644 index 2d64976d5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4436.pgm b/examples/autotiler/Mnist/test_img/9/4436.pgm deleted file mode 100644 index f39e6f440..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4444.pgm b/examples/autotiler/Mnist/test_img/9/4444.pgm deleted file mode 100644 index 278beb38f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4444.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4454.pgm b/examples/autotiler/Mnist/test_img/9/4454.pgm deleted file mode 100644 index 79d4d2cdc..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4479.pgm b/examples/autotiler/Mnist/test_img/9/4479.pgm deleted file mode 100644 index a99470293..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/448.pgm b/examples/autotiler/Mnist/test_img/9/448.pgm deleted file mode 100644 index aa57e1940..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/448.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4480.pgm b/examples/autotiler/Mnist/test_img/9/4480.pgm deleted file mode 100644 index fafb25680..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4480.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4489.pgm b/examples/autotiler/Mnist/test_img/9/4489.pgm deleted file mode 100644 index a3f499f59..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4500.pgm b/examples/autotiler/Mnist/test_img/9/4500.pgm deleted file mode 100644 index a30a73c35..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4500.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4502.pgm b/examples/autotiler/Mnist/test_img/9/4502.pgm deleted file mode 100644 index a4e045d47..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4502.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4505.pgm b/examples/autotiler/Mnist/test_img/9/4505.pgm deleted file mode 100644 index a72da12db..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4511.pgm b/examples/autotiler/Mnist/test_img/9/4511.pgm deleted file mode 100644 index 65f24bd03..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4511.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4534.pgm b/examples/autotiler/Mnist/test_img/9/4534.pgm deleted file mode 100644 index d8dbe4e4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/454.pgm b/examples/autotiler/Mnist/test_img/9/454.pgm deleted file mode 100644 index 83166fc4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/454.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4550.pgm b/examples/autotiler/Mnist/test_img/9/4550.pgm deleted file mode 100644 index 00fa70668..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4550.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4553.pgm b/examples/autotiler/Mnist/test_img/9/4553.pgm deleted file mode 100644 index 1461cc96d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4555.pgm b/examples/autotiler/Mnist/test_img/9/4555.pgm deleted file mode 100644 index 746edaf5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4555.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4556.pgm b/examples/autotiler/Mnist/test_img/9/4556.pgm deleted file mode 100644 index efa96c0ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4556.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4560.pgm b/examples/autotiler/Mnist/test_img/9/4560.pgm deleted file mode 100644 index ebf44bb65..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4570.pgm b/examples/autotiler/Mnist/test_img/9/4570.pgm deleted file mode 100644 index 4e58e5959..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4570.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4584.pgm b/examples/autotiler/Mnist/test_img/9/4584.pgm deleted file mode 100644 index 3f0e6b30f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4584.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4585.pgm b/examples/autotiler/Mnist/test_img/9/4585.pgm deleted file mode 100644 index 6b534913d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4585.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4592.pgm b/examples/autotiler/Mnist/test_img/9/4592.pgm deleted file mode 100644 index 2b7dd0824..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4610.pgm b/examples/autotiler/Mnist/test_img/9/4610.pgm deleted file mode 100644 index ea2a35f72..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4616.pgm b/examples/autotiler/Mnist/test_img/9/4616.pgm deleted file mode 100644 index 96197b73e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4633.pgm b/examples/autotiler/Mnist/test_img/9/4633.pgm deleted file mode 100644 index 926d58fa2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4633.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4644.pgm b/examples/autotiler/Mnist/test_img/9/4644.pgm deleted file mode 100644 index 6b12a2c02..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4644.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4648.pgm b/examples/autotiler/Mnist/test_img/9/4648.pgm deleted file mode 100644 index b9b3f4e2a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4648.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4659.pgm b/examples/autotiler/Mnist/test_img/9/4659.pgm deleted file mode 100644 index e4d8d0ff6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4662.pgm b/examples/autotiler/Mnist/test_img/9/4662.pgm deleted file mode 100644 index a9a37b25b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4663.pgm b/examples/autotiler/Mnist/test_img/9/4663.pgm deleted file mode 100644 index acf09c679..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4665.pgm b/examples/autotiler/Mnist/test_img/9/4665.pgm deleted file mode 100644 index b353beaa9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4665.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4673.pgm b/examples/autotiler/Mnist/test_img/9/4673.pgm deleted file mode 100644 index 64c6de034..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4679.pgm b/examples/autotiler/Mnist/test_img/9/4679.pgm deleted file mode 100644 index 2989b2de5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4679.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4681.pgm b/examples/autotiler/Mnist/test_img/9/4681.pgm deleted file mode 100644 index bf16b31ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4682.pgm b/examples/autotiler/Mnist/test_img/9/4682.pgm deleted file mode 100644 index b56e0a66d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4683.pgm b/examples/autotiler/Mnist/test_img/9/4683.pgm deleted file mode 100644 index 3ea4e4770..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4692.pgm b/examples/autotiler/Mnist/test_img/9/4692.pgm deleted file mode 100644 index 5ef0f6c65..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4700.pgm b/examples/autotiler/Mnist/test_img/9/4700.pgm deleted file mode 100644 index cda58c10e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4701.pgm b/examples/autotiler/Mnist/test_img/9/4701.pgm deleted file mode 100644 index cd31560a9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4706.pgm b/examples/autotiler/Mnist/test_img/9/4706.pgm deleted file mode 100644 index a9970c017..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/471.pgm b/examples/autotiler/Mnist/test_img/9/471.pgm deleted file mode 100644 index 93fad349a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4735.pgm b/examples/autotiler/Mnist/test_img/9/4735.pgm deleted file mode 100644 index 80fbf4452..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4735.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4752.pgm b/examples/autotiler/Mnist/test_img/9/4752.pgm deleted file mode 100644 index 8df8b56fc..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4752.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4761.pgm b/examples/autotiler/Mnist/test_img/9/4761.pgm deleted file mode 100644 index 5264842dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4761.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4769.pgm b/examples/autotiler/Mnist/test_img/9/4769.pgm deleted file mode 100644 index 54f60ad2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4786.pgm b/examples/autotiler/Mnist/test_img/9/4786.pgm deleted file mode 100644 index 4d5a7d65c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/479.pgm b/examples/autotiler/Mnist/test_img/9/479.pgm deleted file mode 100644 index 7ec959631..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4795.pgm b/examples/autotiler/Mnist/test_img/9/4795.pgm deleted file mode 100644 index cc014a84c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4799.pgm b/examples/autotiler/Mnist/test_img/9/4799.pgm deleted file mode 100644 index 240fca595..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/481.pgm b/examples/autotiler/Mnist/test_img/9/481.pgm deleted file mode 100644 index ae1fb13c9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/481.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4823.pgm b/examples/autotiler/Mnist/test_img/9/4823.pgm deleted file mode 100644 index fc729eff5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4823.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4835.pgm b/examples/autotiler/Mnist/test_img/9/4835.pgm deleted file mode 100644 index b61ad6330..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4835.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4840.pgm b/examples/autotiler/Mnist/test_img/9/4840.pgm deleted file mode 100644 index b6a27e735..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4840.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4843.pgm b/examples/autotiler/Mnist/test_img/9/4843.pgm deleted file mode 100644 index d39ee7e1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4846.pgm b/examples/autotiler/Mnist/test_img/9/4846.pgm deleted file mode 100644 index ac288f0c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4856.pgm b/examples/autotiler/Mnist/test_img/9/4856.pgm deleted file mode 100644 index 5193ce7de..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/487.pgm b/examples/autotiler/Mnist/test_img/9/487.pgm deleted file mode 100644 index 170b9eb98..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4874.pgm b/examples/autotiler/Mnist/test_img/9/4874.pgm deleted file mode 100644 index d14981bc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/488.pgm b/examples/autotiler/Mnist/test_img/9/488.pgm deleted file mode 100644 index ece02d0bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/488.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4884.pgm b/examples/autotiler/Mnist/test_img/9/4884.pgm deleted file mode 100644 index b62b59520..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4901.pgm b/examples/autotiler/Mnist/test_img/9/4901.pgm deleted file mode 100644 index 756bbe5b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4910.pgm b/examples/autotiler/Mnist/test_img/9/4910.pgm deleted file mode 100644 index 7b1d81bf2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4918.pgm b/examples/autotiler/Mnist/test_img/9/4918.pgm deleted file mode 100644 index e634c4d1a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4919.pgm b/examples/autotiler/Mnist/test_img/9/4919.pgm deleted file mode 100644 index 0206ababe..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4945.pgm b/examples/autotiler/Mnist/test_img/9/4945.pgm deleted file mode 100644 index c24cf0b0a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4947.pgm b/examples/autotiler/Mnist/test_img/9/4947.pgm deleted file mode 100644 index 9f5e89045..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4947.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/496.pgm b/examples/autotiler/Mnist/test_img/9/496.pgm deleted file mode 100644 index fcc372f3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4963.pgm b/examples/autotiler/Mnist/test_img/9/4963.pgm deleted file mode 100644 index ba04a6e3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4963.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4967.pgm b/examples/autotiler/Mnist/test_img/9/4967.pgm deleted file mode 100644 index 2e65303d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4968.pgm b/examples/autotiler/Mnist/test_img/9/4968.pgm deleted file mode 100644 index 1f5711ac8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4975.pgm b/examples/autotiler/Mnist/test_img/9/4975.pgm deleted file mode 100644 index 8c3ef4750..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4975.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4988.pgm b/examples/autotiler/Mnist/test_img/9/4988.pgm deleted file mode 100644 index 334ad4aa8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/4989.pgm b/examples/autotiler/Mnist/test_img/9/4989.pgm deleted file mode 100644 index bd9d57573..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/4989.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5001.pgm b/examples/autotiler/Mnist/test_img/9/5001.pgm deleted file mode 100644 index 90f840d5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5002.pgm b/examples/autotiler/Mnist/test_img/9/5002.pgm deleted file mode 100644 index 02584f53a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5009.pgm b/examples/autotiler/Mnist/test_img/9/5009.pgm deleted file mode 100644 index e7bf70e3a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5009.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/501.pgm b/examples/autotiler/Mnist/test_img/9/501.pgm deleted file mode 100644 index 4a8429056..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/501.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5015.pgm b/examples/autotiler/Mnist/test_img/9/5015.pgm deleted file mode 100644 index bc91dd33d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5015.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5017.pgm b/examples/autotiler/Mnist/test_img/9/5017.pgm deleted file mode 100644 index dfc20e8db..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5022.pgm b/examples/autotiler/Mnist/test_img/9/5022.pgm deleted file mode 100644 index 360fd6c23..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5026.pgm b/examples/autotiler/Mnist/test_img/9/5026.pgm deleted file mode 100644 index 7584adb09..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5029.pgm b/examples/autotiler/Mnist/test_img/9/5029.pgm deleted file mode 100644 index 00dfb3628..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5029.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5042.pgm b/examples/autotiler/Mnist/test_img/9/5042.pgm deleted file mode 100644 index 54e1268bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5042.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5050.pgm b/examples/autotiler/Mnist/test_img/9/5050.pgm deleted file mode 100644 index 82dffb9f8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5050.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5060.pgm b/examples/autotiler/Mnist/test_img/9/5060.pgm deleted file mode 100644 index a8d5a05b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5060.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5070.pgm b/examples/autotiler/Mnist/test_img/9/5070.pgm deleted file mode 100644 index 4758b6eb4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5070.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5073.pgm b/examples/autotiler/Mnist/test_img/9/5073.pgm deleted file mode 100644 index 2a72ee9ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5073.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5080.pgm b/examples/autotiler/Mnist/test_img/9/5080.pgm deleted file mode 100644 index c715af8f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5080.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5100.pgm b/examples/autotiler/Mnist/test_img/9/5100.pgm deleted file mode 100644 index 4b612803a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5100.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5106.pgm b/examples/autotiler/Mnist/test_img/9/5106.pgm deleted file mode 100644 index 5add7acf5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5130.pgm b/examples/autotiler/Mnist/test_img/9/5130.pgm deleted file mode 100644 index b6306c6c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5130.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5135.pgm b/examples/autotiler/Mnist/test_img/9/5135.pgm deleted file mode 100644 index ca9839a19..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5135.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5137.pgm b/examples/autotiler/Mnist/test_img/9/5137.pgm deleted file mode 100644 index 589b0e861..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5137.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5144.pgm b/examples/autotiler/Mnist/test_img/9/5144.pgm deleted file mode 100644 index 6a3b3d65e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5164.pgm b/examples/autotiler/Mnist/test_img/9/5164.pgm deleted file mode 100644 index 92a1493b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5164.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5182.pgm b/examples/autotiler/Mnist/test_img/9/5182.pgm deleted file mode 100644 index e87b90d8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/521.pgm b/examples/autotiler/Mnist/test_img/9/521.pgm deleted file mode 100644 index 9b79fe842..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/521.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5210.pgm b/examples/autotiler/Mnist/test_img/9/5210.pgm deleted file mode 100644 index 65a2bd450..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5219.pgm b/examples/autotiler/Mnist/test_img/9/5219.pgm deleted file mode 100644 index 6720f75bd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5219.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5220.pgm b/examples/autotiler/Mnist/test_img/9/5220.pgm deleted file mode 100644 index c2816b3d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5220.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5233.pgm b/examples/autotiler/Mnist/test_img/9/5233.pgm deleted file mode 100644 index 3b6aabfca..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5233.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5242.pgm b/examples/autotiler/Mnist/test_img/9/5242.pgm deleted file mode 100644 index eee799e79..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5247.pgm b/examples/autotiler/Mnist/test_img/9/5247.pgm deleted file mode 100644 index 933142046..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5262.pgm b/examples/autotiler/Mnist/test_img/9/5262.pgm deleted file mode 100644 index 1064b7979..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5262.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5268.pgm b/examples/autotiler/Mnist/test_img/9/5268.pgm deleted file mode 100644 index baf6f3ad1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5268.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5269.pgm b/examples/autotiler/Mnist/test_img/9/5269.pgm deleted file mode 100644 index d9e9b8873..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5269.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5279.pgm b/examples/autotiler/Mnist/test_img/9/5279.pgm deleted file mode 100644 index 529e3e495..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5279.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5289.pgm b/examples/autotiler/Mnist/test_img/9/5289.pgm deleted file mode 100644 index 46ac46eef..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5289.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5299.pgm b/examples/autotiler/Mnist/test_img/9/5299.pgm deleted file mode 100644 index 7059e5af7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/530.pgm b/examples/autotiler/Mnist/test_img/9/530.pgm deleted file mode 100644 index 779532bd0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5311.pgm b/examples/autotiler/Mnist/test_img/9/5311.pgm deleted file mode 100644 index 64f9832ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5311.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5315.pgm b/examples/autotiler/Mnist/test_img/9/5315.pgm deleted file mode 100644 index cb67832c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5315.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5333.pgm b/examples/autotiler/Mnist/test_img/9/5333.pgm deleted file mode 100644 index 71778a8be..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5333.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5344.pgm b/examples/autotiler/Mnist/test_img/9/5344.pgm deleted file mode 100644 index 2ac1c10e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5344.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5352.pgm b/examples/autotiler/Mnist/test_img/9/5352.pgm deleted file mode 100644 index 0b5f391ea..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5352.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5373.pgm b/examples/autotiler/Mnist/test_img/9/5373.pgm deleted file mode 100644 index 4b9461342..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5373.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5375.pgm b/examples/autotiler/Mnist/test_img/9/5375.pgm deleted file mode 100644 index b1298ea42..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5375.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5377.pgm b/examples/autotiler/Mnist/test_img/9/5377.pgm deleted file mode 100644 index 9eb7da36f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5386.pgm b/examples/autotiler/Mnist/test_img/9/5386.pgm deleted file mode 100644 index 3738dc213..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5388.pgm b/examples/autotiler/Mnist/test_img/9/5388.pgm deleted file mode 100644 index 7fd398197..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5388.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5404.pgm b/examples/autotiler/Mnist/test_img/9/5404.pgm deleted file mode 100644 index 239cc76e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5414.pgm b/examples/autotiler/Mnist/test_img/9/5414.pgm deleted file mode 100644 index 31ff636a1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5414.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5424.pgm b/examples/autotiler/Mnist/test_img/9/5424.pgm deleted file mode 100644 index abaa530b4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5424.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5429.pgm b/examples/autotiler/Mnist/test_img/9/5429.pgm deleted file mode 100644 index ee30cad88..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5429.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5447.pgm b/examples/autotiler/Mnist/test_img/9/5447.pgm deleted file mode 100644 index b4461eb6e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5447.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5456.pgm b/examples/autotiler/Mnist/test_img/9/5456.pgm deleted file mode 100644 index b1a9a6813..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5456.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5491.pgm b/examples/autotiler/Mnist/test_img/9/5491.pgm deleted file mode 100644 index 3772d61ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5491.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5503.pgm b/examples/autotiler/Mnist/test_img/9/5503.pgm deleted file mode 100644 index d1b411033..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5523.pgm b/examples/autotiler/Mnist/test_img/9/5523.pgm deleted file mode 100644 index 417231428..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5527.pgm b/examples/autotiler/Mnist/test_img/9/5527.pgm deleted file mode 100644 index 166c1a323..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5527.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5537.pgm b/examples/autotiler/Mnist/test_img/9/5537.pgm deleted file mode 100644 index ea1feee37..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5546.pgm b/examples/autotiler/Mnist/test_img/9/5546.pgm deleted file mode 100644 index f026a83e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5546.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5565.pgm b/examples/autotiler/Mnist/test_img/9/5565.pgm deleted file mode 100644 index 9756a7b8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5575.pgm b/examples/autotiler/Mnist/test_img/9/5575.pgm deleted file mode 100644 index 93e1bcc8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/558.pgm b/examples/autotiler/Mnist/test_img/9/558.pgm deleted file mode 100644 index 27ce10c57..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/558.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5580.pgm b/examples/autotiler/Mnist/test_img/9/5580.pgm deleted file mode 100644 index cb5fe5e75..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5582.pgm b/examples/autotiler/Mnist/test_img/9/5582.pgm deleted file mode 100644 index bf0862b84..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5582.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5587.pgm b/examples/autotiler/Mnist/test_img/9/5587.pgm deleted file mode 100644 index 5710e9e53..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/560.pgm b/examples/autotiler/Mnist/test_img/9/560.pgm deleted file mode 100644 index f18bac5cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5602.pgm b/examples/autotiler/Mnist/test_img/9/5602.pgm deleted file mode 100644 index 3b7e2ad94..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5602.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5612.pgm b/examples/autotiler/Mnist/test_img/9/5612.pgm deleted file mode 100644 index ee6c8c3d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5612.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/562.pgm b/examples/autotiler/Mnist/test_img/9/562.pgm deleted file mode 100644 index c16b17389..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5622.pgm b/examples/autotiler/Mnist/test_img/9/5622.pgm deleted file mode 100644 index ede3d17e2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5622.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5627.pgm b/examples/autotiler/Mnist/test_img/9/5627.pgm deleted file mode 100644 index abb7ba02a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5639.pgm b/examples/autotiler/Mnist/test_img/9/5639.pgm deleted file mode 100644 index e43f5d4fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5645.pgm b/examples/autotiler/Mnist/test_img/9/5645.pgm deleted file mode 100644 index 9c4d5f77b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5645.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5671.pgm b/examples/autotiler/Mnist/test_img/9/5671.pgm deleted file mode 100644 index b0c1fef3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5672.pgm b/examples/autotiler/Mnist/test_img/9/5672.pgm deleted file mode 100644 index 0f092cb67..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5672.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5683.pgm b/examples/autotiler/Mnist/test_img/9/5683.pgm deleted file mode 100644 index 6f349dcb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5683.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5704.pgm b/examples/autotiler/Mnist/test_img/9/5704.pgm deleted file mode 100644 index 3fea11e52..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5704.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5705.pgm b/examples/autotiler/Mnist/test_img/9/5705.pgm deleted file mode 100644 index d619f1d6a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5707.pgm b/examples/autotiler/Mnist/test_img/9/5707.pgm deleted file mode 100644 index 8f416c907..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5719.pgm b/examples/autotiler/Mnist/test_img/9/5719.pgm deleted file mode 100644 index c2de291e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5719.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5730.pgm b/examples/autotiler/Mnist/test_img/9/5730.pgm deleted file mode 100644 index 9ddcb427b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5730.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/575.pgm b/examples/autotiler/Mnist/test_img/9/575.pgm deleted file mode 100644 index f270a68c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/575.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5753.pgm b/examples/autotiler/Mnist/test_img/9/5753.pgm deleted file mode 100644 index 7ba36e0e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5753.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5754.pgm b/examples/autotiler/Mnist/test_img/9/5754.pgm deleted file mode 100644 index 49bbfecf6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5754.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5757.pgm b/examples/autotiler/Mnist/test_img/9/5757.pgm deleted file mode 100644 index f6cdba9df..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5757.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5781.pgm b/examples/autotiler/Mnist/test_img/9/5781.pgm deleted file mode 100644 index f24cb492b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5784.pgm b/examples/autotiler/Mnist/test_img/9/5784.pgm deleted file mode 100644 index 1917d80c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5787.pgm b/examples/autotiler/Mnist/test_img/9/5787.pgm deleted file mode 100644 index dd78aaf22..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5790.pgm b/examples/autotiler/Mnist/test_img/9/5790.pgm deleted file mode 100644 index 4ba72b262..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5790.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/58.pgm b/examples/autotiler/Mnist/test_img/9/58.pgm deleted file mode 100644 index 1db3ec42f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/58.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5800.pgm b/examples/autotiler/Mnist/test_img/9/5800.pgm deleted file mode 100644 index 261b38169..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5800.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5805.pgm b/examples/autotiler/Mnist/test_img/9/5805.pgm deleted file mode 100644 index 4540478b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5805.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5813.pgm b/examples/autotiler/Mnist/test_img/9/5813.pgm deleted file mode 100644 index 8fc906b56..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5837.pgm b/examples/autotiler/Mnist/test_img/9/5837.pgm deleted file mode 100644 index c67495f93..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5856.pgm b/examples/autotiler/Mnist/test_img/9/5856.pgm deleted file mode 100644 index 60239d234..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5868.pgm b/examples/autotiler/Mnist/test_img/9/5868.pgm deleted file mode 100644 index 84c8d6ab8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5868.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5869.pgm b/examples/autotiler/Mnist/test_img/9/5869.pgm deleted file mode 100644 index 944a098a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5869.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5871.pgm b/examples/autotiler/Mnist/test_img/9/5871.pgm deleted file mode 100644 index f08d4379e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5871.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5894.pgm b/examples/autotiler/Mnist/test_img/9/5894.pgm deleted file mode 100644 index 65606ad11..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5894.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5897.pgm b/examples/autotiler/Mnist/test_img/9/5897.pgm deleted file mode 100644 index c3f6e1f06..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5908.pgm b/examples/autotiler/Mnist/test_img/9/5908.pgm deleted file mode 100644 index 9792dc0b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5908.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5919.pgm b/examples/autotiler/Mnist/test_img/9/5919.pgm deleted file mode 100644 index f305a5448..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/593.pgm b/examples/autotiler/Mnist/test_img/9/593.pgm deleted file mode 100644 index 661733760..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5941.pgm b/examples/autotiler/Mnist/test_img/9/5941.pgm deleted file mode 100644 index 5e1ad2093..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5941.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5951.pgm b/examples/autotiler/Mnist/test_img/9/5951.pgm deleted file mode 100644 index 58a40bf28..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5951.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5961.pgm b/examples/autotiler/Mnist/test_img/9/5961.pgm deleted file mode 100644 index 9038b6b29..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5961.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5968.pgm b/examples/autotiler/Mnist/test_img/9/5968.pgm deleted file mode 100644 index c5a91e19a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5968.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5971.pgm b/examples/autotiler/Mnist/test_img/9/5971.pgm deleted file mode 100644 index 884a2f171..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5971.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5977.pgm b/examples/autotiler/Mnist/test_img/9/5977.pgm deleted file mode 100644 index aa04ad040..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/598.pgm b/examples/autotiler/Mnist/test_img/9/598.pgm deleted file mode 100644 index 36af6823a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/598.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/599.pgm b/examples/autotiler/Mnist/test_img/9/599.pgm deleted file mode 100644 index 5c0df69be..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/5996.pgm b/examples/autotiler/Mnist/test_img/9/5996.pgm deleted file mode 100644 index 2f023369a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/5996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6000.pgm b/examples/autotiler/Mnist/test_img/9/6000.pgm deleted file mode 100644 index e7b8841dd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6000.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6022.pgm b/examples/autotiler/Mnist/test_img/9/6022.pgm deleted file mode 100644 index cc97182e0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6022.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6032.pgm b/examples/autotiler/Mnist/test_img/9/6032.pgm deleted file mode 100644 index 44fddda5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6032.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6039.pgm b/examples/autotiler/Mnist/test_img/9/6039.pgm deleted file mode 100644 index ce75dbe07..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6039.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6047.pgm b/examples/autotiler/Mnist/test_img/9/6047.pgm deleted file mode 100644 index ecc118513..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6047.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6055.pgm b/examples/autotiler/Mnist/test_img/9/6055.pgm deleted file mode 100644 index 8ecf14f9a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6055.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6071.pgm b/examples/autotiler/Mnist/test_img/9/6071.pgm deleted file mode 100644 index 62b3ffe19..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6081.pgm b/examples/autotiler/Mnist/test_img/9/6081.pgm deleted file mode 100644 index 0ff89de57..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6091.pgm b/examples/autotiler/Mnist/test_img/9/6091.pgm deleted file mode 100644 index 77557d069..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6091.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6112.pgm b/examples/autotiler/Mnist/test_img/9/6112.pgm deleted file mode 100644 index d5e827d08..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6112.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6124.pgm b/examples/autotiler/Mnist/test_img/9/6124.pgm deleted file mode 100644 index 4a21c8292..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6124.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6126.pgm b/examples/autotiler/Mnist/test_img/9/6126.pgm deleted file mode 100644 index 03f1a8460..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6157.pgm b/examples/autotiler/Mnist/test_img/9/6157.pgm deleted file mode 100644 index 089ea20ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6157.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/616.pgm b/examples/autotiler/Mnist/test_img/9/616.pgm deleted file mode 100644 index 3149596df..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6166.pgm b/examples/autotiler/Mnist/test_img/9/6166.pgm deleted file mode 100644 index a6c7bd32c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6166.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6168.pgm b/examples/autotiler/Mnist/test_img/9/6168.pgm deleted file mode 100644 index df490399d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6168.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6172.pgm b/examples/autotiler/Mnist/test_img/9/6172.pgm deleted file mode 100644 index 27d6472e3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6172.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6173.pgm b/examples/autotiler/Mnist/test_img/9/6173.pgm deleted file mode 100644 index 8975fae06..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6173.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6190.pgm b/examples/autotiler/Mnist/test_img/9/6190.pgm deleted file mode 100644 index 02776e309..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6190.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/62.pgm b/examples/autotiler/Mnist/test_img/9/62.pgm deleted file mode 100644 index a7888776f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/62.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6200.pgm b/examples/autotiler/Mnist/test_img/9/6200.pgm deleted file mode 100644 index 6fdcffeb1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6200.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6210.pgm b/examples/autotiler/Mnist/test_img/9/6210.pgm deleted file mode 100644 index 6a1b328a2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6214.pgm b/examples/autotiler/Mnist/test_img/9/6214.pgm deleted file mode 100644 index e2a19a3d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6221.pgm b/examples/autotiler/Mnist/test_img/9/6221.pgm deleted file mode 100644 index 1f15a17eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6221.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6228.pgm b/examples/autotiler/Mnist/test_img/9/6228.pgm deleted file mode 100644 index 7f588ec3d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6228.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6230.pgm b/examples/autotiler/Mnist/test_img/9/6230.pgm deleted file mode 100644 index 9824775e9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6235.pgm b/examples/autotiler/Mnist/test_img/9/6235.pgm deleted file mode 100644 index 023e1954f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6235.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6247.pgm b/examples/autotiler/Mnist/test_img/9/6247.pgm deleted file mode 100644 index 4070a1ec2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6247.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6249.pgm b/examples/autotiler/Mnist/test_img/9/6249.pgm deleted file mode 100644 index 08044eb15..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6249.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/627.pgm b/examples/autotiler/Mnist/test_img/9/627.pgm deleted file mode 100644 index bf7f1888b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/630.pgm b/examples/autotiler/Mnist/test_img/9/630.pgm deleted file mode 100644 index a1ea1e231..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/630.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6302.pgm b/examples/autotiler/Mnist/test_img/9/6302.pgm deleted file mode 100644 index a8bfa23b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6302.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6303.pgm b/examples/autotiler/Mnist/test_img/9/6303.pgm deleted file mode 100644 index c1c03a986..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6303.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6318.pgm b/examples/autotiler/Mnist/test_img/9/6318.pgm deleted file mode 100644 index ecf0b882c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/634.pgm b/examples/autotiler/Mnist/test_img/9/634.pgm deleted file mode 100644 index f74077fe5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6376.pgm b/examples/autotiler/Mnist/test_img/9/6376.pgm deleted file mode 100644 index 0c9c00fd6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/639.pgm b/examples/autotiler/Mnist/test_img/9/639.pgm deleted file mode 100644 index d83b5a926..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/639.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6393.pgm b/examples/autotiler/Mnist/test_img/9/6393.pgm deleted file mode 100644 index bcee71f78..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6393.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6394.pgm b/examples/autotiler/Mnist/test_img/9/6394.pgm deleted file mode 100644 index 4286c7cea..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6394.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6401.pgm b/examples/autotiler/Mnist/test_img/9/6401.pgm deleted file mode 100644 index cb8bca50e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6401.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6409.pgm b/examples/autotiler/Mnist/test_img/9/6409.pgm deleted file mode 100644 index f8aea29a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6409.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6411.pgm b/examples/autotiler/Mnist/test_img/9/6411.pgm deleted file mode 100644 index ba367d8cb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6411.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6416.pgm b/examples/autotiler/Mnist/test_img/9/6416.pgm deleted file mode 100644 index 0b276e421..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6420.pgm b/examples/autotiler/Mnist/test_img/9/6420.pgm deleted file mode 100644 index becee76ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6420.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6422.pgm b/examples/autotiler/Mnist/test_img/9/6422.pgm deleted file mode 100644 index 79a5fca1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6436.pgm b/examples/autotiler/Mnist/test_img/9/6436.pgm deleted file mode 100644 index fa0fcc9e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6443.pgm b/examples/autotiler/Mnist/test_img/9/6443.pgm deleted file mode 100644 index ca5cdd85c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6443.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6451.pgm b/examples/autotiler/Mnist/test_img/9/6451.pgm deleted file mode 100644 index 370cd8a66..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6451.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6487.pgm b/examples/autotiler/Mnist/test_img/9/6487.pgm deleted file mode 100644 index dd8807042..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6496.pgm b/examples/autotiler/Mnist/test_img/9/6496.pgm deleted file mode 100644 index 57151bd9e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6505.pgm b/examples/autotiler/Mnist/test_img/9/6505.pgm deleted file mode 100644 index a6491cca6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6505.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6507.pgm b/examples/autotiler/Mnist/test_img/9/6507.pgm deleted file mode 100644 index d2ebf1eb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6508.pgm b/examples/autotiler/Mnist/test_img/9/6508.pgm deleted file mode 100644 index cf524858e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6508.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6512.pgm b/examples/autotiler/Mnist/test_img/9/6512.pgm deleted file mode 100644 index 6eeed5833..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6512.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6520.pgm b/examples/autotiler/Mnist/test_img/9/6520.pgm deleted file mode 100644 index 592e1e0bf..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6520.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6524.pgm b/examples/autotiler/Mnist/test_img/9/6524.pgm deleted file mode 100644 index 159b2ce32..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6524.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6560.pgm b/examples/autotiler/Mnist/test_img/9/6560.pgm deleted file mode 100644 index 165a6d4e7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6560.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6565.pgm b/examples/autotiler/Mnist/test_img/9/6565.pgm deleted file mode 100644 index 2b22119bc..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6565.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6568.pgm b/examples/autotiler/Mnist/test_img/9/6568.pgm deleted file mode 100644 index a3c3edb20..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6568.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6571.pgm b/examples/autotiler/Mnist/test_img/9/6571.pgm deleted file mode 100644 index 53c5f7bc9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6592.pgm b/examples/autotiler/Mnist/test_img/9/6592.pgm deleted file mode 100644 index 47c59b9a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6608.pgm b/examples/autotiler/Mnist/test_img/9/6608.pgm deleted file mode 100644 index d5a15ccdb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6608.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6610.pgm b/examples/autotiler/Mnist/test_img/9/6610.pgm deleted file mode 100644 index fa7f31ee1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/662.pgm b/examples/autotiler/Mnist/test_img/9/662.pgm deleted file mode 100644 index c12401aad..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/662.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6627.pgm b/examples/autotiler/Mnist/test_img/9/6627.pgm deleted file mode 100644 index 4a3891024..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6627.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6632.pgm b/examples/autotiler/Mnist/test_img/9/6632.pgm deleted file mode 100644 index 2633f5dc4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6632.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6642.pgm b/examples/autotiler/Mnist/test_img/9/6642.pgm deleted file mode 100644 index 712c9acc1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6650.pgm b/examples/autotiler/Mnist/test_img/9/6650.pgm deleted file mode 100644 index 66d3bf58c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6650.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6655.pgm b/examples/autotiler/Mnist/test_img/9/6655.pgm deleted file mode 100644 index 0429ac77c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6655.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6656.pgm b/examples/autotiler/Mnist/test_img/9/6656.pgm deleted file mode 100644 index 6b3b81e8e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6656.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6658.pgm b/examples/autotiler/Mnist/test_img/9/6658.pgm deleted file mode 100644 index da03f55f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6658.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6671.pgm b/examples/autotiler/Mnist/test_img/9/6671.pgm deleted file mode 100644 index 6482e2ff6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6682.pgm b/examples/autotiler/Mnist/test_img/9/6682.pgm deleted file mode 100644 index 9469447fd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6692.pgm b/examples/autotiler/Mnist/test_img/9/6692.pgm deleted file mode 100644 index 12ae06e7d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/671.pgm b/examples/autotiler/Mnist/test_img/9/671.pgm deleted file mode 100644 index 039a48e75..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/671.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6710.pgm b/examples/autotiler/Mnist/test_img/9/6710.pgm deleted file mode 100644 index b34db46cf..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6710.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6718.pgm b/examples/autotiler/Mnist/test_img/9/6718.pgm deleted file mode 100644 index 68abc7672..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6718.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/673.pgm b/examples/autotiler/Mnist/test_img/9/673.pgm deleted file mode 100644 index b875319b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/673.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6740.pgm b/examples/autotiler/Mnist/test_img/9/6740.pgm deleted file mode 100644 index f023fd5ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6747.pgm b/examples/autotiler/Mnist/test_img/9/6747.pgm deleted file mode 100644 index 259afe3fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6747.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6772.pgm b/examples/autotiler/Mnist/test_img/9/6772.pgm deleted file mode 100644 index aa38b72b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6772.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6778.pgm b/examples/autotiler/Mnist/test_img/9/6778.pgm deleted file mode 100644 index c5c0a0f58..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6778.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/678.pgm b/examples/autotiler/Mnist/test_img/9/678.pgm deleted file mode 100644 index eb5442c4b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/678.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6784.pgm b/examples/autotiler/Mnist/test_img/9/6784.pgm deleted file mode 100644 index 43c31e263..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6787.pgm b/examples/autotiler/Mnist/test_img/9/6787.pgm deleted file mode 100644 index 22c690695..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6787.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6793.pgm b/examples/autotiler/Mnist/test_img/9/6793.pgm deleted file mode 100644 index 904a61946..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6793.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6807.pgm b/examples/autotiler/Mnist/test_img/9/6807.pgm deleted file mode 100644 index 2fd2158b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/681.pgm b/examples/autotiler/Mnist/test_img/9/681.pgm deleted file mode 100644 index 32ab1fa1b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/681.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6817.pgm b/examples/autotiler/Mnist/test_img/9/6817.pgm deleted file mode 100644 index e140e8b41..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6827.pgm b/examples/autotiler/Mnist/test_img/9/6827.pgm deleted file mode 100644 index 834de4677..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6870.pgm b/examples/autotiler/Mnist/test_img/9/6870.pgm deleted file mode 100644 index 15ceec474..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6870.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6887.pgm b/examples/autotiler/Mnist/test_img/9/6887.pgm deleted file mode 100644 index 9e8cbe8ee..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6887.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6888.pgm b/examples/autotiler/Mnist/test_img/9/6888.pgm deleted file mode 100644 index 584acd961..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6888.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6895.pgm b/examples/autotiler/Mnist/test_img/9/6895.pgm deleted file mode 100644 index d6585a98a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6903.pgm b/examples/autotiler/Mnist/test_img/9/6903.pgm deleted file mode 100644 index 2a9fbb7c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6903.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6905.pgm b/examples/autotiler/Mnist/test_img/9/6905.pgm deleted file mode 100644 index 823971abf..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6905.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6910.pgm b/examples/autotiler/Mnist/test_img/9/6910.pgm deleted file mode 100644 index 6075d7652..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6910.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6914.pgm b/examples/autotiler/Mnist/test_img/9/6914.pgm deleted file mode 100644 index 9680a82db..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6914.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6916.pgm b/examples/autotiler/Mnist/test_img/9/6916.pgm deleted file mode 100644 index e9e6e6d6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6916.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6919.pgm b/examples/autotiler/Mnist/test_img/9/6919.pgm deleted file mode 100644 index 5146d7814..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6919.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6936.pgm b/examples/autotiler/Mnist/test_img/9/6936.pgm deleted file mode 100644 index 9f801e392..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6936.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6946.pgm b/examples/autotiler/Mnist/test_img/9/6946.pgm deleted file mode 100644 index d0021869b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6946.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6956.pgm b/examples/autotiler/Mnist/test_img/9/6956.pgm deleted file mode 100644 index 025056aa4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6956.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6967.pgm b/examples/autotiler/Mnist/test_img/9/6967.pgm deleted file mode 100644 index b1720e369..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6967.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6980.pgm b/examples/autotiler/Mnist/test_img/9/6980.pgm deleted file mode 100644 index 2a0c01b70..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6980.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6984.pgm b/examples/autotiler/Mnist/test_img/9/6984.pgm deleted file mode 100644 index 26d8f5384..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6984.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6988.pgm b/examples/autotiler/Mnist/test_img/9/6988.pgm deleted file mode 100644 index cee224c60..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6988.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6996.pgm b/examples/autotiler/Mnist/test_img/9/6996.pgm deleted file mode 100644 index bc800952d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6996.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/6998.pgm b/examples/autotiler/Mnist/test_img/9/6998.pgm deleted file mode 100644 index da462b10a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/6998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7.pgm b/examples/autotiler/Mnist/test_img/9/7.pgm deleted file mode 100644 index dc9e29e67..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7008.pgm b/examples/autotiler/Mnist/test_img/9/7008.pgm deleted file mode 100644 index 643b67b8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7008.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7025.pgm b/examples/autotiler/Mnist/test_img/9/7025.pgm deleted file mode 100644 index 4205a9f39..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7025.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7043.pgm b/examples/autotiler/Mnist/test_img/9/7043.pgm deleted file mode 100644 index 5fdfe81f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7043.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7044.pgm b/examples/autotiler/Mnist/test_img/9/7044.pgm deleted file mode 100644 index 16070d6c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/706.pgm b/examples/autotiler/Mnist/test_img/9/706.pgm deleted file mode 100644 index 23e5d4112..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/706.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7061.pgm b/examples/autotiler/Mnist/test_img/9/7061.pgm deleted file mode 100644 index fedea8d86..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7061.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7071.pgm b/examples/autotiler/Mnist/test_img/9/7071.pgm deleted file mode 100644 index 0d32a2717..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7071.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7081.pgm b/examples/autotiler/Mnist/test_img/9/7081.pgm deleted file mode 100644 index 1e26ec749..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7081.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7089.pgm b/examples/autotiler/Mnist/test_img/9/7089.pgm deleted file mode 100644 index f81724fa1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7095.pgm b/examples/autotiler/Mnist/test_img/9/7095.pgm deleted file mode 100644 index 20e8e886f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7095.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7106.pgm b/examples/autotiler/Mnist/test_img/9/7106.pgm deleted file mode 100644 index a666e896b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7106.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7107.pgm b/examples/autotiler/Mnist/test_img/9/7107.pgm deleted file mode 100644 index bb2a5a7be..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7107.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7118.pgm b/examples/autotiler/Mnist/test_img/9/7118.pgm deleted file mode 100644 index 17a518e99..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7118.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7128.pgm b/examples/autotiler/Mnist/test_img/9/7128.pgm deleted file mode 100644 index 9397b4570..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7128.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7132.pgm b/examples/autotiler/Mnist/test_img/9/7132.pgm deleted file mode 100644 index 0b14abefb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7132.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7136.pgm b/examples/autotiler/Mnist/test_img/9/7136.pgm deleted file mode 100644 index a080fbe1e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7148.pgm b/examples/autotiler/Mnist/test_img/9/7148.pgm deleted file mode 100644 index 376a49ab7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7148.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7174.pgm b/examples/autotiler/Mnist/test_img/9/7174.pgm deleted file mode 100644 index 7728499a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7174.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7182.pgm b/examples/autotiler/Mnist/test_img/9/7182.pgm deleted file mode 100644 index 4c529ee5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7199.pgm b/examples/autotiler/Mnist/test_img/9/7199.pgm deleted file mode 100644 index bc0fac107..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7199.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7224.pgm b/examples/autotiler/Mnist/test_img/9/7224.pgm deleted file mode 100644 index ca4d982ab..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7224.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7227.pgm b/examples/autotiler/Mnist/test_img/9/7227.pgm deleted file mode 100644 index 967543f88..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7236.pgm b/examples/autotiler/Mnist/test_img/9/7236.pgm deleted file mode 100644 index b8abc24be..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7236.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7242.pgm b/examples/autotiler/Mnist/test_img/9/7242.pgm deleted file mode 100644 index 59bf1b60e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7242.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7243.pgm b/examples/autotiler/Mnist/test_img/9/7243.pgm deleted file mode 100644 index 6db248b89..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7243.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7246.pgm b/examples/autotiler/Mnist/test_img/9/7246.pgm deleted file mode 100644 index 514a3d9d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7246.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7254.pgm b/examples/autotiler/Mnist/test_img/9/7254.pgm deleted file mode 100644 index b3aadfd41..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7256.pgm b/examples/autotiler/Mnist/test_img/9/7256.pgm deleted file mode 100644 index 9d16f03f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7256.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7278.pgm b/examples/autotiler/Mnist/test_img/9/7278.pgm deleted file mode 100644 index 9dabf9f55..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7278.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7288.pgm b/examples/autotiler/Mnist/test_img/9/7288.pgm deleted file mode 100644 index f80d2d9a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7298.pgm b/examples/autotiler/Mnist/test_img/9/7298.pgm deleted file mode 100644 index b5df823f9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/73.pgm b/examples/autotiler/Mnist/test_img/9/73.pgm deleted file mode 100644 index 5b222212b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/73.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7318.pgm b/examples/autotiler/Mnist/test_img/9/7318.pgm deleted file mode 100644 index 21d10c8d3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7318.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7322.pgm b/examples/autotiler/Mnist/test_img/9/7322.pgm deleted file mode 100644 index 6e4ce1dcf..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/733.pgm b/examples/autotiler/Mnist/test_img/9/733.pgm deleted file mode 100644 index bba27a198..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7336.pgm b/examples/autotiler/Mnist/test_img/9/7336.pgm deleted file mode 100644 index 92e64b7f0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7336.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7347.pgm b/examples/autotiler/Mnist/test_img/9/7347.pgm deleted file mode 100644 index 1aa8cd220..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7347.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7357.pgm b/examples/autotiler/Mnist/test_img/9/7357.pgm deleted file mode 100644 index 8f2a20140..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7360.pgm b/examples/autotiler/Mnist/test_img/9/7360.pgm deleted file mode 100644 index 461bf299a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7360.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7377.pgm b/examples/autotiler/Mnist/test_img/9/7377.pgm deleted file mode 100644 index abcb3fb1d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7377.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7380.pgm b/examples/autotiler/Mnist/test_img/9/7380.pgm deleted file mode 100644 index 4ecb0def7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7380.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7382.pgm b/examples/autotiler/Mnist/test_img/9/7382.pgm deleted file mode 100644 index 343d07329..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7382.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7384.pgm b/examples/autotiler/Mnist/test_img/9/7384.pgm deleted file mode 100644 index 8dad41af4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7384.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7426.pgm b/examples/autotiler/Mnist/test_img/9/7426.pgm deleted file mode 100644 index 634f03563..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7459.pgm b/examples/autotiler/Mnist/test_img/9/7459.pgm deleted file mode 100644 index f135a6a03..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7459.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7462.pgm b/examples/autotiler/Mnist/test_img/9/7462.pgm deleted file mode 100644 index bb108061d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7462.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7464.pgm b/examples/autotiler/Mnist/test_img/9/7464.pgm deleted file mode 100644 index 051b76062..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7464.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7471.pgm b/examples/autotiler/Mnist/test_img/9/7471.pgm deleted file mode 100644 index 7e88f0153..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7471.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7487.pgm b/examples/autotiler/Mnist/test_img/9/7487.pgm deleted file mode 100644 index 0ff43af93..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7487.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7489.pgm b/examples/autotiler/Mnist/test_img/9/7489.pgm deleted file mode 100644 index a53844e2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7489.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7495.pgm b/examples/autotiler/Mnist/test_img/9/7495.pgm deleted file mode 100644 index 38ec821b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7495.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7496.pgm b/examples/autotiler/Mnist/test_img/9/7496.pgm deleted file mode 100644 index 0a0eded8d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7496.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7499.pgm b/examples/autotiler/Mnist/test_img/9/7499.pgm deleted file mode 100644 index 1ed6c1aa0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7499.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7515.pgm b/examples/autotiler/Mnist/test_img/9/7515.pgm deleted file mode 100644 index 857858a55..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7515.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7525.pgm b/examples/autotiler/Mnist/test_img/9/7525.pgm deleted file mode 100644 index 98377855e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7525.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7535.pgm b/examples/autotiler/Mnist/test_img/9/7535.pgm deleted file mode 100644 index de120dd09..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7535.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7557.pgm b/examples/autotiler/Mnist/test_img/9/7557.pgm deleted file mode 100644 index cd39d5aa8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7562.pgm b/examples/autotiler/Mnist/test_img/9/7562.pgm deleted file mode 100644 index 62d2beb2b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7571.pgm b/examples/autotiler/Mnist/test_img/9/7571.pgm deleted file mode 100644 index 4851b09eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7579.pgm b/examples/autotiler/Mnist/test_img/9/7579.pgm deleted file mode 100644 index c2038e192..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7579.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/758.pgm b/examples/autotiler/Mnist/test_img/9/758.pgm deleted file mode 100644 index f5345e908..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/758.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7580.pgm b/examples/autotiler/Mnist/test_img/9/7580.pgm deleted file mode 100644 index 33a528744..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7588.pgm b/examples/autotiler/Mnist/test_img/9/7588.pgm deleted file mode 100644 index 1d26213ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7588.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/759.pgm b/examples/autotiler/Mnist/test_img/9/759.pgm deleted file mode 100644 index b500a340c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/759.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7592.pgm b/examples/autotiler/Mnist/test_img/9/7592.pgm deleted file mode 100644 index 5c03d3bc0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7592.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7594.pgm b/examples/autotiler/Mnist/test_img/9/7594.pgm deleted file mode 100644 index 74c2a3cbe..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7594.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7616.pgm b/examples/autotiler/Mnist/test_img/9/7616.pgm deleted file mode 100644 index 000157976..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7616.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7624.pgm b/examples/autotiler/Mnist/test_img/9/7624.pgm deleted file mode 100644 index 17ed51318..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7624.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7634.pgm b/examples/autotiler/Mnist/test_img/9/7634.pgm deleted file mode 100644 index 56c4481ed..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7634.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7640.pgm b/examples/autotiler/Mnist/test_img/9/7640.pgm deleted file mode 100644 index f264bc0fa..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7641.pgm b/examples/autotiler/Mnist/test_img/9/7641.pgm deleted file mode 100644 index 920622466..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7641.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7651.pgm b/examples/autotiler/Mnist/test_img/9/7651.pgm deleted file mode 100644 index e7ef403a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7651.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7652.pgm b/examples/autotiler/Mnist/test_img/9/7652.pgm deleted file mode 100644 index 9ee91637c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7652.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7680.pgm b/examples/autotiler/Mnist/test_img/9/7680.pgm deleted file mode 100644 index 0a2e735e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7682.pgm b/examples/autotiler/Mnist/test_img/9/7682.pgm deleted file mode 100644 index d05210675..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7682.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7697.pgm b/examples/autotiler/Mnist/test_img/9/7697.pgm deleted file mode 100644 index 2804f8b8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7697.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7700.pgm b/examples/autotiler/Mnist/test_img/9/7700.pgm deleted file mode 100644 index bdac74273..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7707.pgm b/examples/autotiler/Mnist/test_img/9/7707.pgm deleted file mode 100644 index 8c737c766..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7707.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/773.pgm b/examples/autotiler/Mnist/test_img/9/773.pgm deleted file mode 100644 index 90d677738..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/773.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7736.pgm b/examples/autotiler/Mnist/test_img/9/7736.pgm deleted file mode 100644 index ec721a426..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7736.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7746.pgm b/examples/autotiler/Mnist/test_img/9/7746.pgm deleted file mode 100644 index c443d838b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7746.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7756.pgm b/examples/autotiler/Mnist/test_img/9/7756.pgm deleted file mode 100644 index 0b4eb4fb3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7756.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7769.pgm b/examples/autotiler/Mnist/test_img/9/7769.pgm deleted file mode 100644 index 36486120a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7786.pgm b/examples/autotiler/Mnist/test_img/9/7786.pgm deleted file mode 100644 index 224bc611f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7786.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7795.pgm b/examples/autotiler/Mnist/test_img/9/7795.pgm deleted file mode 100644 index c03980c8b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7795.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7799.pgm b/examples/autotiler/Mnist/test_img/9/7799.pgm deleted file mode 100644 index 887c63cb7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7799.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/78.pgm b/examples/autotiler/Mnist/test_img/9/78.pgm deleted file mode 100644 index 962d33ed0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/78.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7807.pgm b/examples/autotiler/Mnist/test_img/9/7807.pgm deleted file mode 100644 index 9e2a98ef0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7813.pgm b/examples/autotiler/Mnist/test_img/9/7813.pgm deleted file mode 100644 index 794055ebd..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7827.pgm b/examples/autotiler/Mnist/test_img/9/7827.pgm deleted file mode 100644 index 772b4807a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7828.pgm b/examples/autotiler/Mnist/test_img/9/7828.pgm deleted file mode 100644 index 3270a143e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7828.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7837.pgm b/examples/autotiler/Mnist/test_img/9/7837.pgm deleted file mode 100644 index 72e2cc050..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7837.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7854.pgm b/examples/autotiler/Mnist/test_img/9/7854.pgm deleted file mode 100644 index e30f49200..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7854.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7863.pgm b/examples/autotiler/Mnist/test_img/9/7863.pgm deleted file mode 100644 index 695123138..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7863.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7864.pgm b/examples/autotiler/Mnist/test_img/9/7864.pgm deleted file mode 100644 index f5ef06cf4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7864.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7867.pgm b/examples/autotiler/Mnist/test_img/9/7867.pgm deleted file mode 100644 index f9c28ed66..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7867.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7874.pgm b/examples/autotiler/Mnist/test_img/9/7874.pgm deleted file mode 100644 index ff992dad5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/788.pgm b/examples/autotiler/Mnist/test_img/9/788.pgm deleted file mode 100644 index b262f39d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/788.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7884.pgm b/examples/autotiler/Mnist/test_img/9/7884.pgm deleted file mode 100644 index 10f9b44b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7884.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7892.pgm b/examples/autotiler/Mnist/test_img/9/7892.pgm deleted file mode 100644 index c6b4afd39..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7892.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7895.pgm b/examples/autotiler/Mnist/test_img/9/7895.pgm deleted file mode 100644 index bc95a8d50..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7895.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7931.pgm b/examples/autotiler/Mnist/test_img/9/7931.pgm deleted file mode 100644 index 019b0eaee..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7931.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7942.pgm b/examples/autotiler/Mnist/test_img/9/7942.pgm deleted file mode 100644 index 2cf0713e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7942.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7952.pgm b/examples/autotiler/Mnist/test_img/9/7952.pgm deleted file mode 100644 index 85885120d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7952.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7962.pgm b/examples/autotiler/Mnist/test_img/9/7962.pgm deleted file mode 100644 index 3231e8365..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7964.pgm b/examples/autotiler/Mnist/test_img/9/7964.pgm deleted file mode 100644 index cd0d19ecb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7964.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/7991.pgm b/examples/autotiler/Mnist/test_img/9/7991.pgm deleted file mode 100644 index 8f192c504..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/7991.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8001.pgm b/examples/autotiler/Mnist/test_img/9/8001.pgm deleted file mode 100644 index 5a6a651ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8001.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8002.pgm b/examples/autotiler/Mnist/test_img/9/8002.pgm deleted file mode 100644 index 7115d139e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8002.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8006.pgm b/examples/autotiler/Mnist/test_img/9/8006.pgm deleted file mode 100644 index 85fbbf837..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8006.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8017.pgm b/examples/autotiler/Mnist/test_img/9/8017.pgm deleted file mode 100644 index 959b5f937..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8017.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8028.pgm b/examples/autotiler/Mnist/test_img/9/8028.pgm deleted file mode 100644 index 8fe973cef..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8044.pgm b/examples/autotiler/Mnist/test_img/9/8044.pgm deleted file mode 100644 index ba147b395..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8044.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8053.pgm b/examples/autotiler/Mnist/test_img/9/8053.pgm deleted file mode 100644 index 5ef5cfead..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8053.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8066.pgm b/examples/autotiler/Mnist/test_img/9/8066.pgm deleted file mode 100644 index bdb7cef3f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8066.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8076.pgm b/examples/autotiler/Mnist/test_img/9/8076.pgm deleted file mode 100644 index 9e4f27fa3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8076.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8084.pgm b/examples/autotiler/Mnist/test_img/9/8084.pgm deleted file mode 100644 index a2c49a023..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8084.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8093.pgm b/examples/autotiler/Mnist/test_img/9/8093.pgm deleted file mode 100644 index b2dbcecad..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8101.pgm b/examples/autotiler/Mnist/test_img/9/8101.pgm deleted file mode 100644 index dce03fd69..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8101.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8109.pgm b/examples/autotiler/Mnist/test_img/9/8109.pgm deleted file mode 100644 index 9e6aa35c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8109.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8126.pgm b/examples/autotiler/Mnist/test_img/9/8126.pgm deleted file mode 100644 index 058f629c3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8126.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/813.pgm b/examples/autotiler/Mnist/test_img/9/813.pgm deleted file mode 100644 index c350a9e54..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/813.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8136.pgm b/examples/autotiler/Mnist/test_img/9/8136.pgm deleted file mode 100644 index 6b20d1aa1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8136.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8146.pgm b/examples/autotiler/Mnist/test_img/9/8146.pgm deleted file mode 100644 index 22787d506..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8146.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8150.pgm b/examples/autotiler/Mnist/test_img/9/8150.pgm deleted file mode 100644 index 6044682de..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8150.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8181.pgm b/examples/autotiler/Mnist/test_img/9/8181.pgm deleted file mode 100644 index 1010a3f54..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8181.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8182.pgm b/examples/autotiler/Mnist/test_img/9/8182.pgm deleted file mode 100644 index 537881ae1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8182.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8184.pgm b/examples/autotiler/Mnist/test_img/9/8184.pgm deleted file mode 100644 index b2727a13b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8184.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8207.pgm b/examples/autotiler/Mnist/test_img/9/8207.pgm deleted file mode 100644 index 5e63a8cc6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8207.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8210.pgm b/examples/autotiler/Mnist/test_img/9/8210.pgm deleted file mode 100644 index e45abd648..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8210.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8213.pgm b/examples/autotiler/Mnist/test_img/9/8213.pgm deleted file mode 100644 index 48ad6ef65..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8213.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8227.pgm b/examples/autotiler/Mnist/test_img/9/8227.pgm deleted file mode 100644 index f8c68602d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8227.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8230.pgm b/examples/autotiler/Mnist/test_img/9/8230.pgm deleted file mode 100644 index 21e4a86ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8230.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8250.pgm b/examples/autotiler/Mnist/test_img/9/8250.pgm deleted file mode 100644 index aa798a880..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8259.pgm b/examples/autotiler/Mnist/test_img/9/8259.pgm deleted file mode 100644 index 6e45f6c68..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8259.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8267.pgm b/examples/autotiler/Mnist/test_img/9/8267.pgm deleted file mode 100644 index f7ab4d8d2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8267.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8274.pgm b/examples/autotiler/Mnist/test_img/9/8274.pgm deleted file mode 100644 index f781009a4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8274.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8288.pgm b/examples/autotiler/Mnist/test_img/9/8288.pgm deleted file mode 100644 index 2c52f4d4c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8288.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8298.pgm b/examples/autotiler/Mnist/test_img/9/8298.pgm deleted file mode 100644 index 73bb83350..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8298.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8319.pgm b/examples/autotiler/Mnist/test_img/9/8319.pgm deleted file mode 100644 index 4ad28f827..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8322.pgm b/examples/autotiler/Mnist/test_img/9/8322.pgm deleted file mode 100644 index 44f24ed89..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8322.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/833.pgm b/examples/autotiler/Mnist/test_img/9/833.pgm deleted file mode 100644 index fe9e6230f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/833.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8332.pgm b/examples/autotiler/Mnist/test_img/9/8332.pgm deleted file mode 100644 index 756fc2697..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8332.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8334.pgm b/examples/autotiler/Mnist/test_img/9/8334.pgm deleted file mode 100644 index f43dee55a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8334.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8358.pgm b/examples/autotiler/Mnist/test_img/9/8358.pgm deleted file mode 100644 index 3f4b3b7a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8358.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8371.pgm b/examples/autotiler/Mnist/test_img/9/8371.pgm deleted file mode 100644 index 4d62ffe37..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8371.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8372.pgm b/examples/autotiler/Mnist/test_img/9/8372.pgm deleted file mode 100644 index 6bcd32172..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8372.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8374.pgm b/examples/autotiler/Mnist/test_img/9/8374.pgm deleted file mode 100644 index e6553922f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8374.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8383.pgm b/examples/autotiler/Mnist/test_img/9/8383.pgm deleted file mode 100644 index dcbbffe3c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8383.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8404.pgm b/examples/autotiler/Mnist/test_img/9/8404.pgm deleted file mode 100644 index 3070b2e43..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8422.pgm b/examples/autotiler/Mnist/test_img/9/8422.pgm deleted file mode 100644 index b4728bb4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8422.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8426.pgm b/examples/autotiler/Mnist/test_img/9/8426.pgm deleted file mode 100644 index a5c64b989..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8426.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8431.pgm b/examples/autotiler/Mnist/test_img/9/8431.pgm deleted file mode 100644 index 9fcb3ad31..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8431.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8436.pgm b/examples/autotiler/Mnist/test_img/9/8436.pgm deleted file mode 100644 index 648c7f7da..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8436.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8457.pgm b/examples/autotiler/Mnist/test_img/9/8457.pgm deleted file mode 100644 index f5f082eb9..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8457.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8467.pgm b/examples/autotiler/Mnist/test_img/9/8467.pgm deleted file mode 100644 index e9e5aaa0d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8477.pgm b/examples/autotiler/Mnist/test_img/9/8477.pgm deleted file mode 100644 index 16b0490fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8477.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8479.pgm b/examples/autotiler/Mnist/test_img/9/8479.pgm deleted file mode 100644 index edb17e718..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8479.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8503.pgm b/examples/autotiler/Mnist/test_img/9/8503.pgm deleted file mode 100644 index 4ec27587b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8503.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8504.pgm b/examples/autotiler/Mnist/test_img/9/8504.pgm deleted file mode 100644 index 1f5ed522f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8504.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8506.pgm b/examples/autotiler/Mnist/test_img/9/8506.pgm deleted file mode 100644 index 479a3a5da..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8506.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8523.pgm b/examples/autotiler/Mnist/test_img/9/8523.pgm deleted file mode 100644 index ba4b61b7c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8523.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8534.pgm b/examples/autotiler/Mnist/test_img/9/8534.pgm deleted file mode 100644 index 127754ccb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8534.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8537.pgm b/examples/autotiler/Mnist/test_img/9/8537.pgm deleted file mode 100644 index 225d02016..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8537.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8557.pgm b/examples/autotiler/Mnist/test_img/9/8557.pgm deleted file mode 100644 index 20eb0a365..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8557.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8590.pgm b/examples/autotiler/Mnist/test_img/9/8590.pgm deleted file mode 100644 index 0aa36bb3e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8590.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8593.pgm b/examples/autotiler/Mnist/test_img/9/8593.pgm deleted file mode 100644 index 4cc37441b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8593.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8596.pgm b/examples/autotiler/Mnist/test_img/9/8596.pgm deleted file mode 100644 index 35e39cef7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8596.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8599.pgm b/examples/autotiler/Mnist/test_img/9/8599.pgm deleted file mode 100644 index 60b2dc253..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8599.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/862.pgm b/examples/autotiler/Mnist/test_img/9/862.pgm deleted file mode 100644 index 36c0715ae..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/862.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8623.pgm b/examples/autotiler/Mnist/test_img/9/8623.pgm deleted file mode 100644 index d97841ee5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8623.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8640.pgm b/examples/autotiler/Mnist/test_img/9/8640.pgm deleted file mode 100644 index 8e83cb7b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8640.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8642.pgm b/examples/autotiler/Mnist/test_img/9/8642.pgm deleted file mode 100644 index ab30359f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8663.pgm b/examples/autotiler/Mnist/test_img/9/8663.pgm deleted file mode 100644 index 6a4454cfb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8663.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8670.pgm b/examples/autotiler/Mnist/test_img/9/8670.pgm deleted file mode 100644 index d70c6d849..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8670.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8680.pgm b/examples/autotiler/Mnist/test_img/9/8680.pgm deleted file mode 100644 index 56920266a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8680.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8690.pgm b/examples/autotiler/Mnist/test_img/9/8690.pgm deleted file mode 100644 index 6e6ebfb43..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8690.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8700.pgm b/examples/autotiler/Mnist/test_img/9/8700.pgm deleted file mode 100644 index 73302473c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8700.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8705.pgm b/examples/autotiler/Mnist/test_img/9/8705.pgm deleted file mode 100644 index 1a305ec5d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8705.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8717.pgm b/examples/autotiler/Mnist/test_img/9/8717.pgm deleted file mode 100644 index dfca7337d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8717.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8723.pgm b/examples/autotiler/Mnist/test_img/9/8723.pgm deleted file mode 100644 index ce607219e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/874.pgm b/examples/autotiler/Mnist/test_img/9/874.pgm deleted file mode 100644 index 33b57541f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/874.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8750.pgm b/examples/autotiler/Mnist/test_img/9/8750.pgm deleted file mode 100644 index 107f8a00b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8750.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8751.pgm b/examples/autotiler/Mnist/test_img/9/8751.pgm deleted file mode 100644 index dd4f743e5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8751.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8762.pgm b/examples/autotiler/Mnist/test_img/9/8762.pgm deleted file mode 100644 index 0286ee667..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8762.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8781.pgm b/examples/autotiler/Mnist/test_img/9/8781.pgm deleted file mode 100644 index b57f16546..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8781.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8782.pgm b/examples/autotiler/Mnist/test_img/9/8782.pgm deleted file mode 100644 index 5fa05a7fe..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8782.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8784.pgm b/examples/autotiler/Mnist/test_img/9/8784.pgm deleted file mode 100644 index deccd8347..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8796.pgm b/examples/autotiler/Mnist/test_img/9/8796.pgm deleted file mode 100644 index f9f1b4d34..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8796.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8807.pgm b/examples/autotiler/Mnist/test_img/9/8807.pgm deleted file mode 100644 index 099ab688f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8807.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8817.pgm b/examples/autotiler/Mnist/test_img/9/8817.pgm deleted file mode 100644 index 9164c27b1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8817.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/882.pgm b/examples/autotiler/Mnist/test_img/9/882.pgm deleted file mode 100644 index 3749b7608..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8827.pgm b/examples/autotiler/Mnist/test_img/9/8827.pgm deleted file mode 100644 index 27cfe2f48..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8827.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8839.pgm b/examples/autotiler/Mnist/test_img/9/8839.pgm deleted file mode 100644 index 7fa72255e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8839.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8841.pgm b/examples/autotiler/Mnist/test_img/9/8841.pgm deleted file mode 100644 index 631430705..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8841.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8846.pgm b/examples/autotiler/Mnist/test_img/9/8846.pgm deleted file mode 100644 index fa85232b5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8846.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8882.pgm b/examples/autotiler/Mnist/test_img/9/8882.pgm deleted file mode 100644 index 5b966f240..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8882.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8893.pgm b/examples/autotiler/Mnist/test_img/9/8893.pgm deleted file mode 100644 index f6adb5a02..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8897.pgm b/examples/autotiler/Mnist/test_img/9/8897.pgm deleted file mode 100644 index 2c3b10296..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8897.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8899.pgm b/examples/autotiler/Mnist/test_img/9/8899.pgm deleted file mode 100644 index 956208e99..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8899.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8900.pgm b/examples/autotiler/Mnist/test_img/9/8900.pgm deleted file mode 100644 index 310bb665b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8900.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8906.pgm b/examples/autotiler/Mnist/test_img/9/8906.pgm deleted file mode 100644 index 0f769b3d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8920.pgm b/examples/autotiler/Mnist/test_img/9/8920.pgm deleted file mode 100644 index e7da64ac2..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8920.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8928.pgm b/examples/autotiler/Mnist/test_img/9/8928.pgm deleted file mode 100644 index 26479e2e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/893.pgm b/examples/autotiler/Mnist/test_img/9/893.pgm deleted file mode 100644 index 9216ea51d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/893.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8933.pgm b/examples/autotiler/Mnist/test_img/9/8933.pgm deleted file mode 100644 index efdee0748..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8933.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8935.pgm b/examples/autotiler/Mnist/test_img/9/8935.pgm deleted file mode 100644 index 1be25ac53..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8935.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8949.pgm b/examples/autotiler/Mnist/test_img/9/8949.pgm deleted file mode 100644 index ce2347981..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8949.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8953.pgm b/examples/autotiler/Mnist/test_img/9/8953.pgm deleted file mode 100644 index 02de635e8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8953.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8955.pgm b/examples/autotiler/Mnist/test_img/9/8955.pgm deleted file mode 100644 index 7738b101b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8955.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8962.pgm b/examples/autotiler/Mnist/test_img/9/8962.pgm deleted file mode 100644 index 7505181a7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8977.pgm b/examples/autotiler/Mnist/test_img/9/8977.pgm deleted file mode 100644 index c46a91fb6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8977.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8994.pgm b/examples/autotiler/Mnist/test_img/9/8994.pgm deleted file mode 100644 index 390334339..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8994.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/8998.pgm b/examples/autotiler/Mnist/test_img/9/8998.pgm deleted file mode 100644 index c447366c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/8998.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9.pgm b/examples/autotiler/Mnist/test_img/9/9.pgm deleted file mode 100644 index 9f0f2dabe..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9023.pgm b/examples/autotiler/Mnist/test_img/9/9023.pgm deleted file mode 100644 index bc1a41944..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9023.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9026.pgm b/examples/autotiler/Mnist/test_img/9/9026.pgm deleted file mode 100644 index e0a5322b6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9026.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9028.pgm b/examples/autotiler/Mnist/test_img/9/9028.pgm deleted file mode 100644 index 03d12933b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9028.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9054.pgm b/examples/autotiler/Mnist/test_img/9/9054.pgm deleted file mode 100644 index 4ba4f68f3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9054.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9057.pgm b/examples/autotiler/Mnist/test_img/9/9057.pgm deleted file mode 100644 index 35f88da1c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9057.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/906.pgm b/examples/autotiler/Mnist/test_img/9/906.pgm deleted file mode 100644 index bd45ddfe8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/906.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9069.pgm b/examples/autotiler/Mnist/test_img/9/9069.pgm deleted file mode 100644 index dccfc0549..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9069.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9079.pgm b/examples/autotiler/Mnist/test_img/9/9079.pgm deleted file mode 100644 index 6f421fced..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9079.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9089.pgm b/examples/autotiler/Mnist/test_img/9/9089.pgm deleted file mode 100644 index 7713b5b80..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9089.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9093.pgm b/examples/autotiler/Mnist/test_img/9/9093.pgm deleted file mode 100644 index cad0e56eb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9093.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9094.pgm b/examples/autotiler/Mnist/test_img/9/9094.pgm deleted file mode 100644 index e601da9a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9094.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/913.pgm b/examples/autotiler/Mnist/test_img/9/913.pgm deleted file mode 100644 index 89230dd49..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/913.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9142.pgm b/examples/autotiler/Mnist/test_img/9/9142.pgm deleted file mode 100644 index 107c235be..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9142.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9144.pgm b/examples/autotiler/Mnist/test_img/9/9144.pgm deleted file mode 100644 index 76b7cba33..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9144.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9153.pgm b/examples/autotiler/Mnist/test_img/9/9153.pgm deleted file mode 100644 index 9409d9c5c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9153.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9165.pgm b/examples/autotiler/Mnist/test_img/9/9165.pgm deleted file mode 100644 index 1b0ae9272..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9165.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9170.pgm b/examples/autotiler/Mnist/test_img/9/9170.pgm deleted file mode 100644 index 1cc3220da..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9170.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9188.pgm b/examples/autotiler/Mnist/test_img/9/9188.pgm deleted file mode 100644 index 817262b4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9188.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9198.pgm b/examples/autotiler/Mnist/test_img/9/9198.pgm deleted file mode 100644 index b03118d38..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9198.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/92.pgm b/examples/autotiler/Mnist/test_img/9/92.pgm deleted file mode 100644 index 6695d72a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/92.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9206.pgm b/examples/autotiler/Mnist/test_img/9/9206.pgm deleted file mode 100644 index b5131805d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9206.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9214.pgm b/examples/autotiler/Mnist/test_img/9/9214.pgm deleted file mode 100644 index f5094bf4f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9214.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9216.pgm b/examples/autotiler/Mnist/test_img/9/9216.pgm deleted file mode 100644 index 63d985c37..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9216.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9218.pgm b/examples/autotiler/Mnist/test_img/9/9218.pgm deleted file mode 100644 index 9583e95ba..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9218.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9245.pgm b/examples/autotiler/Mnist/test_img/9/9245.pgm deleted file mode 100644 index 9ba13dc88..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9245.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9250.pgm b/examples/autotiler/Mnist/test_img/9/9250.pgm deleted file mode 100644 index ef79f1b71..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9250.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9252.pgm b/examples/autotiler/Mnist/test_img/9/9252.pgm deleted file mode 100644 index 7b11761e1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9252.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9254.pgm b/examples/autotiler/Mnist/test_img/9/9254.pgm deleted file mode 100644 index b586f1ffa..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9254.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9255.pgm b/examples/autotiler/Mnist/test_img/9/9255.pgm deleted file mode 100644 index b2b10e6d0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9255.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9272.pgm b/examples/autotiler/Mnist/test_img/9/9272.pgm deleted file mode 100644 index 417a7403c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9272.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/928.pgm b/examples/autotiler/Mnist/test_img/9/928.pgm deleted file mode 100644 index 881da4c2e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/928.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9287.pgm b/examples/autotiler/Mnist/test_img/9/9287.pgm deleted file mode 100644 index 0887734a0..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9287.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9292.pgm b/examples/autotiler/Mnist/test_img/9/9292.pgm deleted file mode 100644 index f3b6741af..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9292.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9293.pgm b/examples/autotiler/Mnist/test_img/9/9293.pgm deleted file mode 100644 index aefaaefdf..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9293.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9299.pgm b/examples/autotiler/Mnist/test_img/9/9299.pgm deleted file mode 100644 index 9928504d4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9299.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9319.pgm b/examples/autotiler/Mnist/test_img/9/9319.pgm deleted file mode 100644 index 8548534c7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9319.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9357.pgm b/examples/autotiler/Mnist/test_img/9/9357.pgm deleted file mode 100644 index 107e4c91f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9357.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9362.pgm b/examples/autotiler/Mnist/test_img/9/9362.pgm deleted file mode 100644 index 6afb2a1a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9362.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9376.pgm b/examples/autotiler/Mnist/test_img/9/9376.pgm deleted file mode 100644 index 2b8e18bae..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9376.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9386.pgm b/examples/autotiler/Mnist/test_img/9/9386.pgm deleted file mode 100644 index 4f380f9af..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9386.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9397.pgm b/examples/autotiler/Mnist/test_img/9/9397.pgm deleted file mode 100644 index 59c68c429..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9397.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9404.pgm b/examples/autotiler/Mnist/test_img/9/9404.pgm deleted file mode 100644 index 5014f61b8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9404.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9408.pgm b/examples/autotiler/Mnist/test_img/9/9408.pgm deleted file mode 100644 index abab45a2d..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9408.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9416.pgm b/examples/autotiler/Mnist/test_img/9/9416.pgm deleted file mode 100644 index b2ce36624..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9416.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9423.pgm b/examples/autotiler/Mnist/test_img/9/9423.pgm deleted file mode 100644 index af806eb91..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9423.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9432.pgm b/examples/autotiler/Mnist/test_img/9/9432.pgm deleted file mode 100644 index d02b988fb..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9432.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9466.pgm b/examples/autotiler/Mnist/test_img/9/9466.pgm deleted file mode 100644 index 9ae5079ff..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9466.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9467.pgm b/examples/autotiler/Mnist/test_img/9/9467.pgm deleted file mode 100644 index e2b0c9651..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9467.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9472.pgm b/examples/autotiler/Mnist/test_img/9/9472.pgm deleted file mode 100644 index 945b2892e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9472.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9483.pgm b/examples/autotiler/Mnist/test_img/9/9483.pgm deleted file mode 100644 index 99058ec36..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9483.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9497.pgm b/examples/autotiler/Mnist/test_img/9/9497.pgm deleted file mode 100644 index 9765fb01f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9497.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9507.pgm b/examples/autotiler/Mnist/test_img/9/9507.pgm deleted file mode 100644 index bc1a76a30..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9507.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9517.pgm b/examples/autotiler/Mnist/test_img/9/9517.pgm deleted file mode 100644 index c8cf08aa4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9517.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9530.pgm b/examples/autotiler/Mnist/test_img/9/9530.pgm deleted file mode 100644 index b8f1aaf55..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9530.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9539.pgm b/examples/autotiler/Mnist/test_img/9/9539.pgm deleted file mode 100644 index ecd1f0667..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9539.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/954.pgm b/examples/autotiler/Mnist/test_img/9/954.pgm deleted file mode 100644 index 0b68107a6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/954.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9544.pgm b/examples/autotiler/Mnist/test_img/9/9544.pgm deleted file mode 100644 index ef61f0e23..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9544.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9553.pgm b/examples/autotiler/Mnist/test_img/9/9553.pgm deleted file mode 100644 index 063e9954f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9553.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9554.pgm b/examples/autotiler/Mnist/test_img/9/9554.pgm deleted file mode 100644 index 8db9d8833..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9554.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9562.pgm b/examples/autotiler/Mnist/test_img/9/9562.pgm deleted file mode 100644 index aca996000..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9562.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9571.pgm b/examples/autotiler/Mnist/test_img/9/9571.pgm deleted file mode 100644 index 1db09da07..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9571.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9580.pgm b/examples/autotiler/Mnist/test_img/9/9580.pgm deleted file mode 100644 index 7453be88b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9580.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9587.pgm b/examples/autotiler/Mnist/test_img/9/9587.pgm deleted file mode 100644 index dd1f7695a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9587.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9610.pgm b/examples/autotiler/Mnist/test_img/9/9610.pgm deleted file mode 100644 index 56805d1a3..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9610.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/962.pgm b/examples/autotiler/Mnist/test_img/9/962.pgm deleted file mode 100644 index e49894894..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/962.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9620.pgm b/examples/autotiler/Mnist/test_img/9/9620.pgm deleted file mode 100644 index 2cbbce32e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9620.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9638.pgm b/examples/autotiler/Mnist/test_img/9/9638.pgm deleted file mode 100644 index 1f5d234b7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9638.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9642.pgm b/examples/autotiler/Mnist/test_img/9/9642.pgm deleted file mode 100644 index ad8355166..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9642.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9659.pgm b/examples/autotiler/Mnist/test_img/9/9659.pgm deleted file mode 100644 index bd483b649..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9659.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/966.pgm b/examples/autotiler/Mnist/test_img/9/966.pgm deleted file mode 100644 index 1a90051a5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/966.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9668.pgm b/examples/autotiler/Mnist/test_img/9/9668.pgm deleted file mode 100644 index 079ad31c5..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9668.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9676.pgm b/examples/autotiler/Mnist/test_img/9/9676.pgm deleted file mode 100644 index bf719dd92..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9676.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9692.pgm b/examples/autotiler/Mnist/test_img/9/9692.pgm deleted file mode 100644 index 354be9b4a..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9692.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9701.pgm b/examples/autotiler/Mnist/test_img/9/9701.pgm deleted file mode 100644 index 0a2cac6c1..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9701.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9713.pgm b/examples/autotiler/Mnist/test_img/9/9713.pgm deleted file mode 100644 index a4f285542..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9713.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9723.pgm b/examples/autotiler/Mnist/test_img/9/9723.pgm deleted file mode 100644 index 0aeb11a21..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9723.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9733.pgm b/examples/autotiler/Mnist/test_img/9/9733.pgm deleted file mode 100644 index 13dcb8e81..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9733.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9740.pgm b/examples/autotiler/Mnist/test_img/9/9740.pgm deleted file mode 100644 index e789c64a8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9740.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9741.pgm b/examples/autotiler/Mnist/test_img/9/9741.pgm deleted file mode 100644 index c290c8244..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9741.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9767.pgm b/examples/autotiler/Mnist/test_img/9/9767.pgm deleted file mode 100644 index 6c92a8f65..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9767.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9769.pgm b/examples/autotiler/Mnist/test_img/9/9769.pgm deleted file mode 100644 index 988a761c4..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9769.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9784.pgm b/examples/autotiler/Mnist/test_img/9/9784.pgm deleted file mode 100644 index a1a41a01f..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9784.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9785.pgm b/examples/autotiler/Mnist/test_img/9/9785.pgm deleted file mode 100644 index 51a5198ef..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9785.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9808.pgm b/examples/autotiler/Mnist/test_img/9/9808.pgm deleted file mode 100644 index 01b881d3b..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9808.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9825.pgm b/examples/autotiler/Mnist/test_img/9/9825.pgm deleted file mode 100644 index 9bc5709c6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9825.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9829.pgm b/examples/autotiler/Mnist/test_img/9/9829.pgm deleted file mode 100644 index 60cc3f468..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9829.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9843.pgm b/examples/autotiler/Mnist/test_img/9/9843.pgm deleted file mode 100644 index 9db025356..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9843.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9856.pgm b/examples/autotiler/Mnist/test_img/9/9856.pgm deleted file mode 100644 index 11ffea274..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9856.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9890.pgm b/examples/autotiler/Mnist/test_img/9/9890.pgm deleted file mode 100644 index b7d76d130..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9890.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9891.pgm b/examples/autotiler/Mnist/test_img/9/9891.pgm deleted file mode 100644 index 1beb0570c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9891.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/99.pgm b/examples/autotiler/Mnist/test_img/9/99.pgm deleted file mode 100644 index ca54a9111..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/99.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9901.pgm b/examples/autotiler/Mnist/test_img/9/9901.pgm deleted file mode 100644 index 265edf5d8..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9901.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9918.pgm b/examples/autotiler/Mnist/test_img/9/9918.pgm deleted file mode 100644 index 2d0498381..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9918.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/992.pgm b/examples/autotiler/Mnist/test_img/9/992.pgm deleted file mode 100644 index e3ea6f8f7..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/992.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9924.pgm b/examples/autotiler/Mnist/test_img/9/9924.pgm deleted file mode 100644 index d34b0ad4e..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9924.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9932.pgm b/examples/autotiler/Mnist/test_img/9/9932.pgm deleted file mode 100644 index 4f77099d6..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9932.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9945.pgm b/examples/autotiler/Mnist/test_img/9/9945.pgm deleted file mode 100644 index c74582a6c..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9945.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9973.pgm b/examples/autotiler/Mnist/test_img/9/9973.pgm deleted file mode 100644 index 299a21a40..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9973.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/999.pgm b/examples/autotiler/Mnist/test_img/9/999.pgm deleted file mode 100644 index 00cd47a64..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/999.pgm and /dev/null differ diff --git a/examples/autotiler/Mnist/test_img/9/9992.pgm b/examples/autotiler/Mnist/test_img/9/9992.pgm deleted file mode 100644 index 1ce053d05..000000000 Binary files a/examples/autotiler/Mnist/test_img/9/9992.pgm and /dev/null differ diff --git a/examples/customer_bsp/bsp/epeas_cis001_board.c b/examples/customer_bsp/bsp/epeas_cis001_board.c new file mode 100644 index 000000000..12fc9a877 --- /dev/null +++ b/examples/customer_bsp/bsp/epeas_cis001_board.c @@ -0,0 +1,139 @@ + /* + * Copyright (C) 2019 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "pmsis.h" +#include "epeas_cis001_board.h" + +#include "bsp/bsp.h" +#include "pmsis/drivers/gpio.h" +#include "pmsis/drivers/pad.h" +#include "bsp/flash/spiflash.h" +#include "bsp/ram/spiram.h" +#include "bsp/camera/epeas_cis001.h" + + +static int __bsp_init_pads_done = 0; + +static void __gpio_init() +{ + pi_gpio_pin_configure(0, GPIO_CAM_RESET, PI_GPIO_OUTPUT); + pi_gpio_pin_configure(0, GPIO_CAM_CAPTURE, PI_GPIO_OUTPUT); +} + +static int __bsp_init_pads() +{ + pi_pad_set_function(PAD_CAM_RESET, GPIO_FUNC1); + pi_pad_set_function(PAD_CAM_CAPTURE, GPIO_FUNC1); + + return 0; +} + +static void __bsp_init_spi_pads() +{ + pi_pad_set_function(PI_PAD_40_D2_SPIM0_SDIO0 , PI_PAD_40_D2_SPIM0_SDIO0_FUNC0 ); + pi_pad_set_function(PI_PAD_41_A11_SPIM0_SDIO1, PI_PAD_41_A11_SPIM0_SDIO1_FUNC0); + pi_pad_set_function(PI_PAD_42_B10_SPIM0_SDIO2, PI_PAD_42_B10_SPIM0_SDIO2_FUNC0); + pi_pad_set_function(PI_PAD_43_A10_SPIM0_SDIO3, PI_PAD_43_A10_SPIM0_SDIO3_FUNC0); + pi_pad_set_function(PI_PAD_44_B8_SPIM0_CSN0 , PI_PAD_44_B8_SPIM0_CSN0_FUNC0 ); + pi_pad_set_function(PI_PAD_45_A8_SPIM0_CSN1 , PI_PAD_45_A8_SPIM0_CSN1_FUNC0 ); + pi_pad_set_function(PI_PAD_46_B7_SPIM0_SCK , PI_PAD_46_B7_SPIM0_SCK_FUNC0 ); +} + +void bsp_spiram_conf_init(struct pi_spiram_conf *conf) +{ + conf->ram_start = CONFIG_SPIRAM_START; + conf->ram_size = CONFIG_SPIRAM_SIZE; + conf->skip_pads_config = 0; + conf->spi_itf = CONFIG_SPIRAM_SPI_ITF; + conf->spi_cs = CONFIG_SPIRAM_SPI_CS; +} + +int bsp_spiram_open(struct pi_spiram_conf *conf) +{ + __bsp_init_spi_pads(); + return 0; +} + +void bsp_spiflash_conf_init(struct pi_spiflash_conf *conf) +{ + conf->size = CONFIG_SPIFLASH_SIZE; + // sector size is in number of KB + conf->sector_size = CONFIG_SPIFLASH_SECTOR_SIZE; + conf->spi_itf = CONFIG_SPIFLASH_SPI_ITF; + conf->spi_cs = CONFIG_SPIFLASH_SPI_CS; +} + +int bsp_spiflash_open(struct pi_spiflash_conf *conf) +{ + __bsp_init_spi_pads(); + return 0; +} + + +void bsp_epeas_cis001_conf_init(struct pi_epeas_cis001_conf *conf) +{ + conf->spi_itf = CONFIG_EPEAS_CIS001_SPI_ITF; + conf->spi_cs = CONFIG_EPEAS_CIS001_SPI_CS; + conf->cpi_itf = CONFIG_EPEAS_CIS001_CPI_ITF; + conf->pwm_id = (uint8_t) CONFIG_EPEAS_CIS001_PWM_ID; + conf->pwm_channel = (uint8_t) CONFIG_EPEAS_CIS001_PWM_CH; + conf->gpio_reset = EPEAS_CIS001_GPIO_RESET; + conf->gpio_capture = EPEAS_CIS001_GPIO_CAPTURE; + conf->skip_pads_config = 0; + + +} + +int bsp_epeas_cis001_open(struct pi_epeas_cis001_conf *conf) +{ + if (!conf->skip_pads_config) + { + pi_pad_set_function(PI_PAD_18_A43_CAM_PCLK ,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_20_B39_CAM_DATA0,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_21_A42_CAM_DATA1,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_22_B38_CAM_DATA2,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_23_A41_CAM_DATA3,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_24_B37_CAM_DATA4,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_25_A40_CAM_DATA5,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_26_B36_CAM_DATA6,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_27_A38_CAM_DATA7,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_28_A36_CAM_VSYNC,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_19_A37_CAM_HSYNC,PI_PAD_FUNC0); + + pi_pad_set_function(PI_PAD_8_A4_RF_SPIM1_MISO ,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_9_B3_RF_SPIM1_MOSI ,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_10_A5_RF_SPIM1_CSN ,PI_PAD_FUNC0); + pi_pad_set_function(PI_PAD_11_B4_RF_SPIM1_SCK ,PI_PAD_FUNC0); + + pi_pad_set_function(PAD_CAM_RESET, PI_PAD_FUNC1); + pi_gpio_pin_configure(0, GPIO_CAM_RESET, PI_GPIO_OUTPUT); + pi_gpio_pin_write(0, GPIO_CAM_RESET, 1); + + pi_pad_set_function(PAD_CAM_CAPTURE, PI_PAD_FUNC1); + pi_gpio_pin_configure(0, GPIO_CAM_CAPTURE, PI_GPIO_OUTPUT); + pi_gpio_pin_write(0, GPIO_CAM_CAPTURE, 0); + + pi_pad_set_function(PI_PAD_32_A13_TIMER0_CH1 ,PI_PAD_FUNC0); + + } + + return 0; +} + +void pi_bsp_init() +{ + __bsp_init_pads(); +} diff --git a/examples/customer_bsp/bsp/epeas_cis001_board.h b/examples/customer_bsp/bsp/epeas_cis001_board.h new file mode 100644 index 000000000..42369b032 --- /dev/null +++ b/examples/customer_bsp/bsp/epeas_cis001_board.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2019 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __BSP_EPEAS_CIS001_BOARD_H__ +#define __BSP_EPEAS_CIS001_BOARD_H__ + +#define CONFIG_EPEAS_CIS001_CPI_ITF 0 +#define CONFIG_EPEAS_CIS001_SPI_ITF 1 +#define CONFIG_EPEAS_CIS001_SPI_CS 0 +#define CONFIG_EPEAS_CIS001_PWM_ID 0 +#define CONFIG_EPEAS_CIS001_PWM_CH 1 + +#define CONFIG_HYPERBUS_DATA6_PAD (PI_PAD_46_B7_SPIM0_SCK) +#define CONFIG_UART_RX_PAD_FUNC (0) +#define CONFIG_HYPERRAM_DATA6_PAD_FUNC (3) + +#define CONFIG_SPIRAM_SPI_ITF 0 +#define CONFIG_SPIRAM_SPI_CS 1 +#define CONFIG_SPIRAM_START 0 +#define CONFIG_SPIRAM_SIZE (8<<20) + +#define CONFIG_SPIFLASH_SPI_ITF 0 +#define CONFIG_SPIFLASH_SPI_CS 0 +#define CONFIG_SPIFLASH_START 0 +#define CONFIG_SPIFLASH_SIZE (16<<20) +#define CONFIG_SPIFLASH_SECTOR_SIZE (1<<12) + +#define GPIO_FUNC1 (1) +#define GPIO_CAM_RESET (PI_GPIO_A4_PAD_16_A44) +#define GPIO_CAM_CAPTURE (PI_GPIO_A17_PAD_31_B11) + + +/*LEDs*/ + + +/*Camera */ +#define PAD_CAM_RESET (PI_PAD_16_A44_RF_PACTRL4) +#define PAD_CAM_CAPTURE (PI_PAD_31_B11_TIMER0_CH0) + +#define EPEAS_CIS001_GPIO_RESET GPIO_CAM_RESET +#define EPEAS_CIS001_GPIO_CAPTURE GPIO_CAM_CAPTURE + +#define EPEAS_CIS001_PAD_RST PAD_CAM_RESET +#define EPEAS_CIS001_PAD_CAPTURE PAD_CAM_CAPTURE + + +#endif /* __BSP_EPEAS_CIS001_BOARD_H__ */ diff --git a/examples/customer_bsp/bsp_src.mk b/examples/customer_bsp/bsp_src.mk index 14346a8ca..e4a653c42 100644 --- a/examples/customer_bsp/bsp_src.mk +++ b/examples/customer_bsp/bsp_src.mk @@ -1,4 +1,6 @@ GAPOC_C_BSP = $(CUSTOM_BSP_PATH) +EPEAS_CIS001_BOARD_BSP = $(CUSTOM_BSP_PATH) + PMSIS_BSP_PATH = $(GAP_SDK_HOME)/rtos/pmsis/pmsis_bsp BSP_READFS_SRC = $(PMSIS_BSP_PATH)/fs/read_fs/read_fs.c @@ -17,7 +19,8 @@ BSP_RAM_SRC = $(PMSIS_BSP_PATH)/ram/ram.c $(PMSIS_BSP_PATH)/ram/alloc_extern.c BSP_OTA_SRC = $(PMSIS_BSP_PATH)/ota/ota.c $(PMSIS_BSP_PATH)/ota/ota_utility.c $(PMSIS_BSP_PATH)/ota/updater.c BSP_BOOTLOADER_SRC = $(PMSIS_BSP_PATH)/bootloader/bootloader_utility.c -BSP_CAM_SRC = $(PMSIS_BSP_PATH)/camera/camera.c $(PMSIS_BSP_PATH)/camera/hm0360/hm0360.c +BSP_CAM_SRC = $(PMSIS_BSP_PATH)/camera/camera.c $(PMSIS_BSP_PATH)/camera/hm0360/hm0360.c +BSP_CAM_EPEAS_CIS001_SRC = $(PMSIS_BSP_PATH)/camera/camera.c $(PMSIS_BSP_PATH)/camera/epeas_cis001/epeas_cis001.c COMMON_SRC = \ $(BSP_FLASH_SRC) \ @@ -36,6 +39,14 @@ GAPOC_C_SRC = \ $(BSP_RAM_SRC) \ $(BSP_CAM_SRC) +EPEAS_CIS001_BOARD_SRC = \ + $(COMMON_SRC) \ + $(EPEAS_CIS001_BOARD_BSP)/bsp/epeas_cis001_board.c \ + $(BSP_SPIFLASH_SRC) \ + $(BSP_SPIRAM_SRC) \ + $(BSP_RAM_SRC) \ + $(BSP_CAM_EPEAS_CIS001_SRC) + # $(BSP_HYPERFLASH_SRC) \ # $(BSP_HYPERRAM_SRC) \ @@ -43,3 +54,6 @@ GAPOC_C_SRC = \ GAPOC_C_BSP_FLAGS += -DCONFIG_SPIFLASH \ -DCONFIG_SPIRAM \ -DCONFIG_HM0360 +EPEAS_CIS001_BOARD_BSP_FLAGS += -DCONFIG_SPIFLASH \ + -DCONFIG_SPIRAM \ + -DCONFIG_EPEAS_CIS001 diff --git a/examples/customer_bsp/epeas_cis001_board.sh b/examples/customer_bsp/epeas_cis001_board.sh new file mode 100644 index 000000000..6999a9926 --- /dev/null +++ b/examples/customer_bsp/epeas_cis001_board.sh @@ -0,0 +1,11 @@ +export CUSTOM_BSP_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" + +# For JLINK Debugger +#export GAPY_OPENOCD_CABLE=interface/jlink.cfg +#export OPENOCD_CABLE=interface/jlink.cfg + +# For OLIMEX Debugger +export GAPY_OPENOCD_CABLE=interface/ftdi/olimex-arm-usb-ocd-h.cfg +export OPENOCD_CABLE=interface/ftdi/olimex-arm-usb-ocd-h.cfg + +export BOARD_NAME=epeas_cis001_board diff --git a/examples/customer_bsp/examples/camera_epeas_cis001/.gitignore b/examples/customer_bsp/examples/camera_epeas_cis001/.gitignore new file mode 100644 index 000000000..218cb60e9 --- /dev/null +++ b/examples/customer_bsp/examples/camera_epeas_cis001/.gitignore @@ -0,0 +1 @@ +*.ppm diff --git a/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/Makefile b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/Makefile new file mode 100644 index 000000000..f3dacff06 --- /dev/null +++ b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/Makefile @@ -0,0 +1,21 @@ +# User Test +#------------------------------------ +include $(CUSTOM_BSP_PATH)/bsp_src.mk + +APP = test +APP_SRCS += epeas_cis001_example.c $(GAP_LIB_PATH)/img_io/ImgIO.c +APP_SRCS += $(EPEAS_CIS001_BOARD_SRC) +APP_INC += . $(GAP_LIB_PATH)/include $(TILER_INC) +APP_INC += $(CUSTOM_BSP_PATH)/bsp $(PMSIS_BSP_PATH)/include +APP_CFLAGS += $(EPEAS_CIS001_BOARD_BSP_FLAGS) +APP_CFLAGS += -O3 -g +APP_CFLAGS += -DIMG_QQVGA + +PMSIS_OS=freertos + +CUSTOM_BSP = 1 + +clean:: + rm -rf *.ppm + +include $(RULES_DIR)/pmsis_rules.mk diff --git a/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/epeas_cis001.h b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/epeas_cis001.h new file mode 100644 index 000000000..d5780ec75 --- /dev/null +++ b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/epeas_cis001.h @@ -0,0 +1,42 @@ +/* + * EPEAS camera macros + */ + +// Register address +// Read only registers +#define ADDR_STATUS_REGISTER 0x06 +#define ADDR_IRQ_FLAG_REGISTER 0x0E +#define ADDR_CAL_CLK_BUFF_B0_REGISTER 0x35 +#define ADDR_CAL_CLK_BUFF_B1_REGISTER 0x36 +#define ADDR_CAL_RAMP_COUNT_B0_REGISTER 0x37 +#define ADDR_CAL_RAMP_COUNT_B1_REGISTER 0x38 +#define ADDR_CAL_RAMP_COUNT_B2_REGISTER 0x39 +#define ADDR_VERSION_REGISTER 0x7F +// Write only registers +#define ADDR_CAPTURE_REGISTER 0x00 +#define ADDR_SOFT_RESET_REGISTER 0x07 +#define ADDRE_IRQCLR_REGISTER 0x0F +// R&W registers +// Sensor mode control +#define ADDR_MODE_REGISTER 0x01 +#define ADDR_PMODE_REGISTER 0x02 +#define ADDR_PCLK_MODE_REGISTER 0x03 +#define ADDR_FLIP_REGISTER 0x1A +#define ADDR_RESOLUTION_REGISTER 0x15 +// Sensor exposure and gain control +#define ADDR_ANALOG_GAIN_REGISTER 0x30 +#define ADDR_EXPOSURE_B0_REGISTER 0x04 +#define ADDR_EXPOSURE_B1_REGISTER 0x05 +//Sensor ROI mode +#define ADDR_ROI_EN_REGISTER 0x10 +#define ADDR_ROI_X_START_REGISTER 0x11 +#define ADDR_ROI_X_END_REGISTER 0x12 +#define ADDR_ROI_Y_START_REGISTER 0x13 +#define ADDR_ROI_Y_END_REGISTER 0x14 + + +//Calibration +#define ADDR_CCLK_CAL_REGISTER 0x31 + +//useful register values + diff --git a/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/epeas_cis001_example.c b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/epeas_cis001_example.c new file mode 100644 index 000000000..a3c9b197c --- /dev/null +++ b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_roi/epeas_cis001_example.c @@ -0,0 +1,382 @@ + +//#include "pmsis/chips/gap8/pmu.h" +//#include "pmsis/drivers/pmu.h" + +#include "stdio.h" + +/* PMSIS includes. */ +#include "pmsis.h" + +/* PMSIS BSP includes. */ +#include "bsp/bsp.h" +#include "epeas_cis001_board.h" +#include "bsp/camera.h" + +#include "bsp/ram.h" +#include "bsp/ram/spiram.h" + +/* gaplib includes */ +#include "gaplib/ImgIO.h" + +#include "bsp/camera/epeas_cis001.h" +#include "epeas_cis001.h" + + +/* constants */ +#ifdef IMG_QVGA +#define CAMERA_WIDTH ( 320 ) +#define CAMERA_HEIGHT ( 240 ) +#elif defined IMG_QQVGA +#define CAMERA_WIDTH ( 160 ) +#define CAMERA_HEIGHT ( 120 ) +#else +#define CAMERA_WIDTH ( 640 ) +#define CAMERA_HEIGHT ( 480 ) +#endif + +#define ROI1_X_START 1 +#define ROI1_X_END 5 +#define ROI1_Y_START 1 +#define ROI1_Y_END 5 + +#define ROI2_X_START 10 +#define ROI2_X_END 14 +#define ROI2_Y_START 10 +#define ROI2_Y_END 10 + +#define ROI1_WIDTH (ROI1_X_START - ROI1_X_END + 1)*32 +#define ROI1_HEIGHT (ROI1_Y_START - ROI1_Y_END + 1)*32 + +#define ROI2_WIDTH (ROI2_X_START - ROI2_X_END + 1)*32 +#define ROI2_HEIGHT (ROI2_Y_START - ROI2_Y_END + 1)*32 + + +/* statics */ + +PI_L2 static uint8_t *qqvga_buffers; +PI_L2 static uint8_t *roi1_buffers; +PI_L2 static uint8_t *roi2_buffers; + + +static struct pi_device cam; + +static pi_task_t task; + + +static int32_t open_camera_epeas_cis001(struct pi_device *device) +{ + struct pi_epeas_cis001_conf cam_conf; + pi_epeas_cis001_conf_init(&cam_conf); + #ifdef IMG_QVGA + cam_conf.format = PI_CAMERA_QVGA; + #elif defined IMG_QQVGA + cam_conf.format = PI_CAMERA_QQVGA; + #else + cam_conf.format = PI_CAMERA_VGA; + #endif + pi_open_from_conf(device, &cam_conf); + if (pi_camera_open(device)) + { + return -1; + } + return 0; +} + + +static int32_t open_camera(struct pi_device *device) +{ + return open_camera_epeas_cis001(device); +} + +static void dump_cam_configuration_register(void) +{ + uint8_t val_read; + uint16_t temp; + + + printf("\n"); + printf("-------- Dump Configuration Registers --------\n"); + + pi_camera_reg_get(&cam,ADDR_RESOLUTION_REGISTER,&val_read); + printf("Resolution : 0x%x \n",val_read); + + pi_camera_reg_get(&cam,ADDR_MODE_REGISTER,&val_read); + printf("Mode : %d \n",val_read); + + pi_camera_reg_get(&cam,ADDR_EXPOSURE_B0_REGISTER,&val_read); + temp = val_read; + pi_camera_reg_get(&cam,ADDR_EXPOSURE_B1_REGISTER,&val_read); + temp += (val_read)<<8; + printf("Exposure Time : %d \n",temp); + + pi_camera_reg_get(&cam,ADDR_ANALOG_GAIN_REGISTER,&val_read); + printf("Analog Gain : %d \n",val_read); + + pi_camera_reg_get(&cam,ADDR_CCLK_CAL_REGISTER,&val_read); + printf("CCLK Calibration : %d \n",val_read); + + printf("-------- End Dump Configuration Registers --------\n"); + printf("\n"); + + +} + + +static void write_cam_configuration_register(uint8_t addr, uint8_t value) +{ + + pi_camera_reg_set(&cam,addr, &value); + +} + +static void config_qqvga(void) +{ + write_cam_configuration_register(ADDR_ROI_EN_REGISTER, 0); + write_cam_configuration_register(ADDR_RESOLUTION_REGISTER, 2); +} + +static void config_roi(void) +{ + write_cam_configuration_register(ADDR_RESOLUTION_REGISTER, 0); + write_cam_configuration_register(ADDR_ROI_EN_REGISTER, 1); +} + +static void config_roi_size(uint8_t roi_x_start, uint8_t roi_x_end, uint8_t roi_y_start, uint8_t roi_y_end) +{ + write_cam_configuration_register(ADDR_ROI_X_START_REGISTER, roi_x_start); + write_cam_configuration_register(ADDR_ROI_X_END_REGISTER, roi_x_end); + write_cam_configuration_register(ADDR_ROI_Y_START_REGISTER, roi_y_start); + write_cam_configuration_register(ADDR_ROI_Y_END_REGISTER, roi_y_end); +} + +static void auto_cal_cclk(int target, int threshold) +{ + + uint16_t res=0; + uint16_t cal_max=120; + uint16_t cal_min=5; + uint16_t cal=15; + uint16_t iter=0; + uint8_t previous_mode=0; + uint8_t a,b=0; + + pi_camera_reg_get(&cam,ADDR_MODE_REGISTER,&previous_mode); + + + //set cam in cclk mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 5); + + // start at cal=15 + write_cam_configuration_register(ADDR_CCLK_CAL_REGISTER, cal); + pi_camera_control(&cam, PI_CAMERA_CMD_START, 0); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + pi_time_wait_us(1000); + //printf("cclk cal done\n"); // print something instead of seleeping + iter++; + + //res=read_cam_configuration_register(ADDR_CAL_CLK_BUFF_B0_REGISTER) + //res+=(read_cam_configuration_register(ADDR_CAL_CLK_BUFF_B1_REGISTER)*256); + pi_camera_reg_get(&cam,ADDR_CAL_CLK_BUFF_B0_REGISTER,&a); + pi_camera_reg_get(&cam,ADDR_CAL_CLK_BUFF_B1_REGISTER,&b); + res=a+(b<<8); + //printf("res: %i\n",res); + + + while (((res < target -threshold) || (res > target+threshold)) && (iter<8)){ + + write_cam_configuration_register(ADDR_CCLK_CAL_REGISTER, cal); + pi_camera_control(&cam, PI_CAMERA_CMD_START, 0); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + pi_time_wait_us(5000); + //printf("cclk cal done\n"); // print something instead of seleeping + + pi_camera_reg_get(&cam,ADDR_CAL_CLK_BUFF_B0_REGISTER,&a); + pi_camera_reg_get(&cam,ADDR_CAL_CLK_BUFF_B1_REGISTER,&b); + res=a+(b<<8); + //printf("res: %i\n",res); + + //updated stuff + if(res< (target -threshold)){ + //printf("too low: %i %i %i %i",res,cclk,lower,upper); + cal_min=cal; + cal=(cal_min+cal_max)/2; + //printf(" -> %i %i %i\r\n\r\n",cclk,lower,upper); + } else if(res> (target+threshold)){ + //printf("too high: %i %i %i %i",res,cclk,lower,upper); + cal_max=cal; + cal=(cal_min+cal_max)/2; + //printf(" -> %i %i %i \r\n\r\n",cclk,lower,upper); + } else { + //printf("ok !!\r\n"); + } + iter++; + } + + //printf("res: %i\n",res); + // put camera in the mode it was + write_cam_configuration_register(ADDR_MODE_REGISTER, previous_mode); + + return; +} + + +static void mode_drs() +{ + // configure ccclk + auto_cal_cclk(350, 5); + //mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 1); +} + +static void mode_so() +{ + // configure ccclk + auto_cal_cclk(250, 5); + //mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 0); + +} + +static void mode_hdr_drs() +{ + // configure ccclk + auto_cal_cclk(350, 5); + //mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 12); +} + +static void mode_hdr_so() +{ + // configure ccclk + auto_cal_cclk(250, 5); + //mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 11); + +} + + + + +static void test_camera_double_buffer(void) +{ + printf("Launching test ...\n"); + int32_t errors = 0; + + /*Force DC-DC in PWM mode to minimize jitter clock*/ + // Set some custom FC frequency : + pi_freq_set(PI_FREQ_DOMAIN_FC, 240 * 1000000) ; + printf("Frequency now = %d Hz\n\n", (int)pi_freq_get(PI_FREQ_DOMAIN_FC)); + // Set some known voltage before switch + pi_pmu_voltage_set( PI_PMU_DOMAIN_FC, 1199 ); + // FORCE DC-DC PWM Mode + uint32_t DC_ForcePWM_RegAdd = 0x1A10414C; + (*(volatile unsigned int *)(long)(DC_ForcePWM_RegAdd)) = 1; + // Set a different voltage AFTER this to validate + pi_pmu_voltage_set( PI_PMU_DOMAIN_FC, 1200 ); + + + /*Memory allocation for L2 buffer image and ROI*/ + + + qqvga_buffers = (uint8_t *) pmsis_l2_malloc(CAMERA_WIDTH*CAMERA_HEIGHT); + if(qqvga_buffers == NULL)pmsis_exit(-1); + + roi1_buffers = (uint8_t *) pmsis_l2_malloc(ROI1_WIDTH*ROI1_HEIGHT); + if(roi1_buffers == NULL)pmsis_exit(-1); + + roi2_buffers = (uint8_t *) pmsis_l2_malloc(ROI2_WIDTH*ROI2_HEIGHT); + if(roi2_buffers == NULL)pmsis_exit(-1); + + + /* open camera */ + + printf("Opening camera ...\n"); + errors = open_camera(&cam); + if (errors) + { + printf("Failed to open camera : %ld\n", errors); + pmsis_exit(-2); + } + + + /* Configuration */ + + mode_drs(); // calibration from default driver configuration + + //exposure for linear mode + //write_cam_configuration_register(ADDR_EXPOSURE_B0_REGISTER, 0); + //write_cam_configuration_register(ADDR_EXPOSURE_B1_REGISTER, 3); + + //exposure for HDR mode + //write_cam_configuration_register(ADDR_EXPOSURE_B0_REGISTER, 100); + //write_cam_configuration_register(ADDR_EXPOSURE_B1_REGISTER, 7); + + //write_cam_configuration_register(ADDR_ANALOG_GAIN_REGISTER, 6); + //write_cam_configuration_register(ADDR_FLIP_REGISTER, 3); + + + int idx =0; + printf("Starting image capture...\n"); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + + while (idx++ < 10) + { + + + config_qqvga(); + + pi_camera_capture_async(&cam, qqvga_buffers, CAMERA_WIDTH*CAMERA_HEIGHT, pi_task_block(&task)); + pi_camera_control(&cam, PI_CAMERA_CMD_START, 0); + + int tm = pi_time_get_us(); + + pi_task_wait_on(&task); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + + + pi_time_wait_us(30000); + + config_roi(); + + config_roi_size(ROI1_X_START, ROI1_X_END, ROI1_Y_START, ROI1_Y_END); + + pi_camera_capture_async(&cam, roi1_buffers, ROI1_WIDTH*ROI1_HEIGHT, pi_task_block(&task)); + pi_camera_control(&cam, PI_CAMERA_CMD_START, 0); + pi_task_wait_on(&task); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + + + config_roi_size(ROI2_X_START, ROI2_X_END, ROI2_Y_START, ROI2_Y_END); + + pi_camera_capture_async(&cam, roi2_buffers, ROI2_WIDTH*ROI2_HEIGHT, pi_task_block(&task)); + pi_camera_control(&cam, PI_CAMERA_CMD_START, 0); + pi_task_wait_on(&task); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + + tm = pi_time_get_us() - tm; + printf("Inference finished in %d us\n", tm); + + + + char filename[30]; + + sprintf(filename, "../../../pgmfile%d.pgm", idx ); + WriteImageToFile(filename, 160, 120, sizeof(uint8_t), qqvga_buffers, GRAY_SCALE_IO); + + sprintf(filename, "../../../pgmfile%d_roi1.pgm", idx ); + WriteImageToFile(filename, ROI1_WIDTH, ROI1_HEIGHT, sizeof(uint8_t), roi1_buffers, GRAY_SCALE_IO); + + sprintf(filename, "../../../pgmfile%d_roi2.pgm", idx ); + WriteImageToFile(filename, ROI2_WIDTH, ROI2_HEIGHT, sizeof(uint8_t), roi2_buffers, GRAY_SCALE_IO); + + } + + printf("Exiting...\n"); + pmsis_exit(errors); +} + +int main(void) +{ + printf("\n\t*** PMSIS camera e-Peas CIS001 software ROI example ***\n\n"); + return pmsis_kickoff((void *) test_camera_double_buffer); +} diff --git a/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/Makefile b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/Makefile new file mode 100644 index 000000000..da2ad8733 --- /dev/null +++ b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/Makefile @@ -0,0 +1,21 @@ +# User Test +#------------------------------------ +include $(CUSTOM_BSP_PATH)/bsp_src.mk + +APP = test +APP_SRCS += epeas_cis001_example.c $(GAP_LIB_PATH)/img_io/ImgIO.c +APP_SRCS += $(EPEAS_CIS001_BOARD_SRC) +APP_INC += . $(GAP_LIB_PATH)/include $(TILER_INC) +APP_INC += $(CUSTOM_BSP_PATH)/bsp $(PMSIS_BSP_PATH)/include +APP_CFLAGS += $(EPEAS_CIS001_BOARD_BSP_FLAGS) +APP_CFLAGS += -O3 -g +#APP_CFLAGS += -DIMG_QQVGA + +PMSIS_OS=freertos + +CUSTOM_BSP = 1 + +clean:: + rm -rf *.ppm + +include $(RULES_DIR)/pmsis_rules.mk diff --git a/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/epeas_cis001.h b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/epeas_cis001.h new file mode 100644 index 000000000..d5780ec75 --- /dev/null +++ b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/epeas_cis001.h @@ -0,0 +1,42 @@ +/* + * EPEAS camera macros + */ + +// Register address +// Read only registers +#define ADDR_STATUS_REGISTER 0x06 +#define ADDR_IRQ_FLAG_REGISTER 0x0E +#define ADDR_CAL_CLK_BUFF_B0_REGISTER 0x35 +#define ADDR_CAL_CLK_BUFF_B1_REGISTER 0x36 +#define ADDR_CAL_RAMP_COUNT_B0_REGISTER 0x37 +#define ADDR_CAL_RAMP_COUNT_B1_REGISTER 0x38 +#define ADDR_CAL_RAMP_COUNT_B2_REGISTER 0x39 +#define ADDR_VERSION_REGISTER 0x7F +// Write only registers +#define ADDR_CAPTURE_REGISTER 0x00 +#define ADDR_SOFT_RESET_REGISTER 0x07 +#define ADDRE_IRQCLR_REGISTER 0x0F +// R&W registers +// Sensor mode control +#define ADDR_MODE_REGISTER 0x01 +#define ADDR_PMODE_REGISTER 0x02 +#define ADDR_PCLK_MODE_REGISTER 0x03 +#define ADDR_FLIP_REGISTER 0x1A +#define ADDR_RESOLUTION_REGISTER 0x15 +// Sensor exposure and gain control +#define ADDR_ANALOG_GAIN_REGISTER 0x30 +#define ADDR_EXPOSURE_B0_REGISTER 0x04 +#define ADDR_EXPOSURE_B1_REGISTER 0x05 +//Sensor ROI mode +#define ADDR_ROI_EN_REGISTER 0x10 +#define ADDR_ROI_X_START_REGISTER 0x11 +#define ADDR_ROI_X_END_REGISTER 0x12 +#define ADDR_ROI_Y_START_REGISTER 0x13 +#define ADDR_ROI_Y_END_REGISTER 0x14 + + +//Calibration +#define ADDR_CCLK_CAL_REGISTER 0x31 + +//useful register values + diff --git a/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/epeas_cis001_example.c b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/epeas_cis001_example.c new file mode 100644 index 000000000..932f90bc8 --- /dev/null +++ b/examples/customer_bsp/examples/camera_epeas_cis001/cis001_capture_simple/epeas_cis001_example.c @@ -0,0 +1,404 @@ + +//#include "pmsis/chips/gap8/pmu.h" +//#include "pmsis/drivers/pmu.h" + +#include "stdio.h" + +/* PMSIS includes. */ +#include "pmsis.h" + +/* PMSIS BSP includes. */ +#include "bsp/bsp.h" +#include "epeas_cis001_board.h" +#include "bsp/camera.h" + +#include "bsp/ram.h" +#include "bsp/ram/spiram.h" + +/* gaplib includes */ +#include "gaplib/ImgIO.h" + +#include "bsp/camera/epeas_cis001.h" +#include "epeas_cis001.h" + + +/* constants */ +#ifdef IMG_QVGA +#define CAMERA_WIDTH ( 320 ) +#define CAMERA_HEIGHT ( 240 ) +#elif defined IMG_QQVGA +#define CAMERA_WIDTH ( 160 ) +#define CAMERA_HEIGHT ( 120 ) +#else +#define CAMERA_WIDTH ( 640 ) +#define CAMERA_HEIGHT ( 480 ) +#endif +//#define CAMERA_HEIGHT ( 100 ) +#define CAMERA_PIXEL_SIZE (1) +#define ITER_SIZE (0x12C00) + +/* statics */ + +static uint8_t* img_buffers[2]; +static volatile int current_idx = 0; +static volatile int next_idx = 0; + +static struct pi_device cam; + +static struct pi_device ram; +static uint32_t l3_buff; +static pi_task_t ctrl_tasks[2]; +static pi_task_t ram_tasks[2]; + +static int remaining_size; +static int saved_size; +static volatile int done; +static int nb_transfers; +static unsigned char current_buff; +static int current_size[2]; +static int current_task; + +static void handle_transfer_end(void *arg); +static void handle_ram_end(void *arg); + +// This is called to enqueue new transfers + +static void enqueue_transfer() +{ + // We can enqueue new transfers if there are still a part of the image to + // capture and less than 2 transfers are pending (the dma supports up to 2 transfers + // at the same time) + while (remaining_size > 0 && nb_transfers < 2) + { + int iter_size = ITER_SIZE; + if (remaining_size < iter_size) + iter_size = remaining_size; + + pi_task_t *task = &ctrl_tasks[current_task]; + // Enqueue a transfer. The callback will be called once the transfer is finished + // so that a new one is enqueued while another one is already running + pi_camera_capture_async(&cam, img_buffers[current_task], iter_size, pi_task_callback(task, handle_transfer_end, (void *) current_task)); + + current_size[current_task] = iter_size; + remaining_size -= iter_size; + nb_transfers++; + current_task ^= 1; + } +} + + +static void handle_transfer_end(void * arg) +{ + nb_transfers--; + unsigned last = (unsigned) arg; + int size = current_size[last]; + + enqueue_transfer(); + + pi_task_t *cb_tx = &ram_tasks[last]; + pi_ram_write_async(&ram, (l3_buff+saved_size), img_buffers[last], (uint32_t) size, pi_task_callback(cb_tx, handle_ram_end, NULL)); + + saved_size += size; +} + +static void handle_ram_end(void *arg) +{ + if (nb_transfers == 0 && saved_size == (CAMERA_WIDTH*CAMERA_HEIGHT*CAMERA_PIXEL_SIZE)) + done = 1; +} + + + +static int32_t open_camera_epeas_cis001(struct pi_device *device) +{ + struct pi_epeas_cis001_conf cam_conf; + pi_epeas_cis001_conf_init(&cam_conf); + #ifdef IMG_QVGA + cam_conf.format = PI_CAMERA_QVGA; + #elif defined IMG_QQVGA + cam_conf.format = PI_CAMERA_QQVGA; + #else + cam_conf.format = PI_CAMERA_VGA; + #endif + pi_open_from_conf(device, &cam_conf); + if (pi_camera_open(device)) + { + return -1; + } + return 0; +} + +static void process_image(int idx) +{ + char imgName[50]; + sprintf(imgName, "../../../img_OUT_%ld.ppm", idx); + WriteImageToFileL3(&ram, imgName, CAMERA_WIDTH, CAMERA_HEIGHT, CAMERA_PIXEL_SIZE, l3_buff, GRAY_SCALE_IO); +} + +static int32_t open_camera(struct pi_device *device) +{ + return open_camera_epeas_cis001(device); +} + + +static void dump_cam_configuration_register(void) +{ + uint8_t val_read; + uint16_t temp; + + + printf("\n"); + printf("-------- Dump Configuration Registers --------\n"); + + pi_camera_reg_get(&cam,ADDR_RESOLUTION_REGISTER,&val_read); + printf("Resolution : 0x%x \n",val_read); + + pi_camera_reg_get(&cam,ADDR_MODE_REGISTER,&val_read); + printf("Mode : %d \n",val_read); + + pi_camera_reg_get(&cam,ADDR_EXPOSURE_B0_REGISTER,&val_read); + temp = val_read; + pi_camera_reg_get(&cam,ADDR_EXPOSURE_B1_REGISTER,&val_read); + temp += (val_read)<<8; + printf("Exposure Time : %d \n",temp); + + pi_camera_reg_get(&cam,ADDR_ANALOG_GAIN_REGISTER,&val_read); + printf("Analog Gain : %d \n",val_read); + + pi_camera_reg_get(&cam,ADDR_CCLK_CAL_REGISTER,&val_read); + printf("CCLK Calibration : %d \n",val_read); + + printf("-------- End Dump Configuration Registers --------\n"); + printf("\n"); + + +} + + +static void write_cam_configuration_register(uint8_t addr, uint8_t value) +{ + + pi_camera_reg_set(&cam,addr, &value); + +} + +static void auto_cal_cclk(int target, int threshold) +{ + + uint16_t res=0; + uint16_t cal_max=120; + uint16_t cal_min=5; + uint16_t cal=15; + uint16_t iter=0; + uint8_t previous_mode=0; + uint8_t a,b=0; + + pi_camera_reg_get(&cam,ADDR_MODE_REGISTER,&previous_mode); + + + //set cam in cclk mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 5); + + // start at cal=15 + write_cam_configuration_register(ADDR_CCLK_CAL_REGISTER, cal); + pi_camera_control(&cam, PI_CAMERA_CMD_START, 0); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + pi_time_wait_us(1000); + //printf("cclk cal done\n"); // print something instead of seleeping + iter++; + + //res=read_cam_configuration_register(ADDR_CAL_CLK_BUFF_B0_REGISTER) + //res+=(read_cam_configuration_register(ADDR_CAL_CLK_BUFF_B1_REGISTER)*256); + pi_camera_reg_get(&cam,ADDR_CAL_CLK_BUFF_B0_REGISTER,&a); + pi_camera_reg_get(&cam,ADDR_CAL_CLK_BUFF_B1_REGISTER,&b); + res=a+(b<<8); + //printf("res: %i\n",res); + + + while (((res < target -threshold) || (res > target+threshold)) && (iter<8)){ + + write_cam_configuration_register(ADDR_CCLK_CAL_REGISTER, cal); + pi_camera_control(&cam, PI_CAMERA_CMD_START, 0); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + pi_time_wait_us(5000); + //printf("cclk cal done\n"); // print something instead of seleeping + + pi_camera_reg_get(&cam,ADDR_CAL_CLK_BUFF_B0_REGISTER,&a); + pi_camera_reg_get(&cam,ADDR_CAL_CLK_BUFF_B1_REGISTER,&b); + res=a+(b<<8); + //printf("res: %i\n",res); + + //updated stuff + if(res< (target -threshold)){ + //printf("too low: %i %i %i %i",res,cclk,lower,upper); + cal_min=cal; + cal=(cal_min+cal_max)/2; + //printf(" -> %i %i %i\r\n\r\n",cclk,lower,upper); + } else if(res> (target+threshold)){ + //printf("too high: %i %i %i %i",res,cclk,lower,upper); + cal_max=cal; + cal=(cal_min+cal_max)/2; + //printf(" -> %i %i %i \r\n\r\n",cclk,lower,upper); + } else { + //printf("ok !!\r\n"); + } + iter++; + } + + //printf("res: %i\n",res); + // put camera in the mode it was + write_cam_configuration_register(ADDR_MODE_REGISTER, previous_mode); + + return; +} + + +static void mode_drs() +{ + // configure ccclk + auto_cal_cclk(350, 5); + //mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 1); +} + +static void mode_so() +{ + // configure ccclk + auto_cal_cclk(250, 5); + //mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 0); + +} + +static void mode_hdr_drs() +{ + // configure ccclk + auto_cal_cclk(350, 5); + //mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 12); +} + +static void mode_hdr_so() +{ + // configure ccclk + auto_cal_cclk(250, 5); + //mode + write_cam_configuration_register(ADDR_MODE_REGISTER, 11); + +} + + + +static void test_camera_double_buffer(void) +{ + printf("Launching test ...\n"); + int32_t errors = 0; + + /*Force DC-DC in PWM mode to minimize jitter clock*/ + // Set some custom FC frequency : + pi_freq_set(PI_FREQ_DOMAIN_FC, 240 * 1000000) ; + printf("Frequency now = %d Hz\n\n", (int)pi_freq_get(PI_FREQ_DOMAIN_FC)); + // Set some known voltage before switch + pi_pmu_voltage_set( PI_PMU_DOMAIN_FC, 1199 ); + // FORCE DC-DC PWM Mode + uint32_t DC_ForcePWM_RegAdd = 0x1A10414C; + (*(volatile unsigned int *)(long)(DC_ForcePWM_RegAdd)) = 1; + // Set a different voltage AFTER this to validate + pi_pmu_voltage_set( PI_PMU_DOMAIN_FC, 1200 ); + + struct pi_spiram_conf conf; + pi_spiram_conf_init(&conf); + pi_open_from_conf(&ram, &conf); + if (pi_ram_open(&ram)) + { + printf("Error ram open !\n"); + pmsis_exit(-3); + } + + if (pi_ram_alloc(&ram, &l3_buff, (uint32_t) (CAMERA_WIDTH*CAMERA_HEIGHT*CAMERA_PIXEL_SIZE))) + { + printf("Ram malloc failed !\n"); + pmsis_exit(-4); + } + + /* allocate memory for images */ + + for(int i = 0; i<2; i++) + { + img_buffers[i] = (uint8_t *) pmsis_l2_malloc(ITER_SIZE); + if (img_buffers[i] == NULL) + { + printf("Failed to allocate Memory for Image %d \n", i); + pmsis_exit(-1); + } + } + + remaining_size = (CAMERA_WIDTH*CAMERA_HEIGHT*CAMERA_PIXEL_SIZE); + nb_transfers = 0; + current_buff = 0; + current_task = 0; + saved_size = 0; + done = 0; + + /* open camera */ + + printf("Opening camera ...\n"); + + errors = open_camera(&cam); + if (errors) + { + printf("Failed to open camera : %ld\n", errors); + pmsis_exit(-2); + } + + + /* Configuration */ + + mode_drs(); // default driver used + + //exposure for linear mode + //write_cam_configuration_register(ADDR_EXPOSURE_B0_REGISTER, 0); + //write_cam_configuration_register(ADDR_EXPOSURE_B1_REGISTER, 3); + + //exposure for HDR mode + //write_cam_configuration_register(ADDR_EXPOSURE_B0_REGISTER, 100); + //write_cam_configuration_register(ADDR_EXPOSURE_B1_REGISTER, 7); + + //write_cam_configuration_register(ADDR_ANALOG_GAIN_REGISTER, 6); + //write_cam_configuration_register(ADDR_FLIP_REGISTER, 3); + + + dump_cam_configuration_register(); + + int idx =0; + printf("Starting image capture...\n"); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + while (idx++ < 10) + { + + enqueue_transfer(); + + pi_camera_control(&cam, PI_CAMERA_CMD_START, 0); + while(!done) pi_yield(); + pi_camera_control(&cam, PI_CAMERA_CMD_STOP, 0); + printf("Capture done\n"); + + process_image(idx); + + remaining_size = (CAMERA_WIDTH*CAMERA_HEIGHT*CAMERA_PIXEL_SIZE); + nb_transfers = 0; + current_buff = 0; + current_task = 0; + saved_size = 0; + done = 0; + } + + printf("Exiting...\n"); + pmsis_exit(errors); +} + +int main(void) +{ + printf("\n\t*** PMSIS camera e-Peas CIS001 software double buffering ***\n\n"); + return pmsis_kickoff((void *) test_camera_double_buffer); +} diff --git a/examples/pmsis/bsp/ble/ble_nina_b112/ble_main.c b/examples/pmsis/bsp/ble/ble_nina_b112/ble_main.c index 5d008456d..351e7d57b 100644 --- a/examples/pmsis/bsp/ble/ble_nina_b112/ble_main.c +++ b/examples/pmsis/bsp/ble/ble_nina_b112/ble_main.c @@ -15,7 +15,7 @@ static uint8_t rx_buffer[AT_RESP_ARRAY_LENGTH]; void test_ble(void) { int32_t errors = 0; - struct pi_nina_b112_conf conf = {0}; + struct pi_nina_b112_conf conf; pi_ble_nina_b112_conf_init(&ble, &conf); pi_open_from_conf(&ble, &conf); errors += pi_ble_open(&ble); diff --git a/examples/pmsis/bsp/cameras/camera_ir_thermeye/always_on/test_thermeye.c b/examples/pmsis/bsp/cameras/camera_ir_thermeye/always_on/test_thermeye.c index 10859d9f6..b90e7701a 100644 --- a/examples/pmsis/bsp/cameras/camera_ir_thermeye/always_on/test_thermeye.c +++ b/examples/pmsis/bsp/cameras/camera_ir_thermeye/always_on/test_thermeye.c @@ -46,7 +46,7 @@ void test_therm_eye() pmsis_exit(-1); } - pi_task_t cb = {0}; + pi_task_t cb; pi_task_block(&cb); printf("Cover sensor until end of calibration(led will switch off).\n"); diff --git a/examples/pmsis/bsp/cameras/camera_ir_thermeye/lower_power_mode/test_thermeye.c b/examples/pmsis/bsp/cameras/camera_ir_thermeye/lower_power_mode/test_thermeye.c index aba9ee26e..0bd3df6be 100644 --- a/examples/pmsis/bsp/cameras/camera_ir_thermeye/lower_power_mode/test_thermeye.c +++ b/examples/pmsis/bsp/cameras/camera_ir_thermeye/lower_power_mode/test_thermeye.c @@ -46,7 +46,7 @@ void test_therm_eye() pmsis_exit(-1); } - pi_task_t cb = {0}; + pi_task_t cb; pi_task_block(&cb); printf("Cover sensor until end of calibration(led will switch off).\n"); diff --git a/examples/pmsis/bsp/filesystem/readfs/readfs.c b/examples/pmsis/bsp/filesystem/readfs/readfs.c index 0c7c7cdfd..7c338610a 100644 --- a/examples/pmsis/bsp/filesystem/readfs/readfs.c +++ b/examples/pmsis/bsp/filesystem/readfs/readfs.c @@ -19,9 +19,9 @@ static void check_file(pi_fs_file_t *file) uint32_t size_total = 0; uint32_t count_done = 0; #if defined(USE_CLUSTER) - pi_cl_fs_req_t req = {0}; + pi_cl_fs_req_t req; #else - pi_task_t task = {0}; + pi_task_t task; pi_task_block(&task); #endif /* USE_CLUSTER */ for (count_done = 0; count_done < COUNT; count_done++) @@ -81,7 +81,7 @@ void test_fs(void) { printf("Entering main controller\n"); - pi_fs_file_t *file[NB_FILE] = {0}; + pi_fs_file_t *file[NB_FILE]; char *name[NB_FILE] = {"hello.txt"};//, "Makefile"}; struct pi_device fs; @@ -90,8 +90,8 @@ void test_fs(void) #if defined(USE_CLUSTER) printf("Use cluster\n"); - struct pi_device cluster = {0}; - struct pi_cluster_task cluster_task = {0}; + struct pi_device cluster; + struct pi_cluster_task cluster_task; /* Init & open cluster if used. */ struct pi_cluster_conf cluster_conf; pi_cluster_conf_init(&cluster_conf); @@ -102,9 +102,8 @@ void test_fs(void) printf("Error cluster open !\n"); pmsis_exit(-3); } + pi_cluster_task(&cluster_task, (void (*)(void *))check_file, NULL); cluster_task.stack_size = 1024; - cluster_task.entry = (void *) check_file; - cluster_task.arg = NULL; #endif /* USE_CLUSTER */ for (uint32_t i = 0; i < (uint32_t) NB_FILE; i++) diff --git a/examples/pmsis/bsp/flash/hyper_flash_multi_thread/hyper_flash_multi_thread.c b/examples/pmsis/bsp/flash/hyper_flash_multi_thread/hyper_flash_multi_thread.c index efe9accc1..a20fe97c5 100644 --- a/examples/pmsis/bsp/flash/hyper_flash_multi_thread/hyper_flash_multi_thread.c +++ b/examples/pmsis/bsp/flash/hyper_flash_multi_thread/hyper_flash_multi_thread.c @@ -33,7 +33,7 @@ void transfer_test(void *parameters) //printf("Task_%d exec now\n", args->id); /* Write a buffer then read back from flash. */ #if defined(ASYNC) - struct pi_task cb_tx = {0}, cb_rx = {0}; + struct pi_task cb_tx, cb_rx; pi_task_block(&cb_rx); cb_rx.arg[1] = (uint32_t) args; pi_task_callback(&cb_tx, __end_of_tx, &cb_rx); diff --git a/examples/pmsis/bsp/microphones/vesper/vm3011_wakeup/test.c b/examples/pmsis/bsp/microphones/vesper/vm3011_wakeup/test.c index 91fcd6eaf..adb4739fb 100644 --- a/examples/pmsis/bsp/microphones/vesper/vm3011_wakeup/test.c +++ b/examples/pmsis/bsp/microphones/vesper/vm3011_wakeup/test.c @@ -78,7 +78,7 @@ static int test_entry() //Configuring GPIO A0 on Pin A3 to receive wake up signal from Vesper mic - struct pi_gpio_conf gpio_conf = {0}; + struct pi_gpio_conf gpio_conf; pi_gpio_conf_init(&gpio_conf); pi_open_from_conf(&gpio, &gpio_conf); if (pi_gpio_open(&gpio)) diff --git a/examples/pmsis/bsp/ram/hyper_ram_multi_thread/hyper_ram_multi_thread.c b/examples/pmsis/bsp/ram/hyper_ram_multi_thread/hyper_ram_multi_thread.c index 3fc25fe37..197f674a9 100644 --- a/examples/pmsis/bsp/ram/hyper_ram_multi_thread/hyper_ram_multi_thread.c +++ b/examples/pmsis/bsp/ram/hyper_ram_multi_thread/hyper_ram_multi_thread.c @@ -32,7 +32,7 @@ void transfer_test(void *parameters) struct args_s *args = (struct args_s *) parameters; /* Write a buffer in ram, then read back from ram. */ #if defined(ASYNC) - struct pi_task cb_tx = {0}, cb_rx = {0}; + struct pi_task cb_tx, cb_rx; pi_task_block(&cb_rx); cb_rx.arg[1] = (uint32_t) args; pi_task_callback(&cb_tx, __end_of_tx, &cb_rx); diff --git a/examples/pmsis/features/aes128_sw/AesLib.c b/examples/pmsis/features/aes128_sw/AesLib.c new file mode 100644 index 000000000..874842ee6 --- /dev/null +++ b/examples/pmsis/features/aes128_sw/AesLib.c @@ -0,0 +1,217 @@ +#include "pmsis.h" +#include "AesLib.h" + +typedef unsigned char v4u __attribute__((vector_size (4))); + +#define gap8_packu4(x, y, z, t) __builtin_pulp_pack4((unsigned char) (x), (unsigned char) (y), (unsigned char) (z), (unsigned char) (t)) + +static unsigned char GF8_Mul(unsigned char a, unsigned char b) + +{ + unsigned char p = 0; /* the product of the multiplication */ + while (b) { + /* if b is odd, then add the corresponding a to p (final product = sum of all a's corresponding to odd b's) */ + if (b & 1) p ^= a; /* since we're in GF(2^m), addition is an XOR */ + /* GF modulo: if a >= 128, then it will overflow when shifted left, so reduce */ + if (a & 0x80) a = (a << 1) ^ 0x11b; /* XOR with the primitive polynomial x^8 + x^4 + x^3 + x + 1 */ + else a <<= 1; /* equivalent to a*2 */ + b >>= 1; /* equivalent to b // 2 */ + } + return p; +} + +static unsigned char GF8_rcon(unsigned char in) + +{ + unsigned char c=1; + + if (in == 0) return 0; + while(in != 1) { + c = GF8_Mul(c,2); in--; + } + return c; +} + +static void GenerateAES_LUTs(unsigned char *Sbox, unsigned char *GF8_mul2, unsigned char *GF8_mul3, unsigned char *Rcon) + +{ + unsigned char p = 1, q = 1; + int i, j; + + for (i=0; i<16; i++) { + for (j=0; j<16; j++) { + GF8_mul2[16*i+j] = GF8_Mul(16*i+j, 2); + GF8_mul3[16*i+j] = GF8_Mul(16*i+j, 3); + } + } + +#define ROTL8(x,shift) ((unsigned char) ((x) << (shift)) | ((x) >> (8 - (shift)))) + /* loop invariant: p * q == 1 in the Galois field */ + do { + /* multiply p by 2 */ + p = p ^ (p << 1) ^ (p & 0x80 ? 0x1B : 0); + /* divide q by 2 */ + q ^= q << 1; q ^= q << 2; q ^= q << 4; q ^= q & 0x80 ? 0x09 : 0; + /* compute the affine transformation */ + unsigned char xformed = q ^ ROTL8(q, 1) ^ ROTL8(q, 2) ^ ROTL8(q, 3) ^ ROTL8(q, 4); + Sbox[p] = xformed ^ 0x63; + } while (p != 1); + /* 0 is a special case since it has no inverse */ + Sbox[0] = 0x63; +#undef ROTL8 + for (i=0; i<30; i++) Rcon[i] = GF8_rcon(i); +} + + +static inline void KeyExpansion(aes_data_t *data, unsigned char Key[4][MAXBC]) + +{ + int j, t, rconpointer = 1; + + ((v4u *) data->RoundKey[0])[0] = ((v4u *) Key)[0]; + ((v4u *) data->RoundKey[0])[1] = ((v4u *) Key)[1]; + ((v4u *) data->RoundKey[0])[2] = ((v4u *) Key)[2]; + ((v4u *) data->RoundKey[0])[3] = ((v4u *) Key)[3]; + + for(t = 1; t < (ROUNDS+1); ++t) { + v4u V; + Key[0][0] ^= data->S[Key[1][KC-1]]; + Key[1][0] ^= data->S[Key[2][KC-1]]; + Key[2][0] ^= data->S[Key[3][KC-1]]; + Key[3][0] ^= data->S[Key[0][KC-1]]; + Key[0][0] ^= data->RC[rconpointer++]; + + Key[0][1] ^= Key[0][0]; + Key[1][1] ^= Key[1][0]; + Key[2][1] ^= Key[2][0]; + Key[3][1] ^= Key[3][0]; + Key[0][2] ^= Key[0][1]; + Key[1][2] ^= Key[1][1]; + Key[2][2] ^= Key[2][1]; + Key[3][2] ^= Key[3][1]; + Key[0][3] ^= Key[0][2]; + Key[1][3] ^= Key[1][2]; + Key[2][3] ^= Key[2][2]; + Key[3][3] ^= Key[3][2]; + + ((v4u *) data->RoundKey[t])[0] = ((v4u *) Key)[0]; + ((v4u *) data->RoundKey[t])[1] = ((v4u *) Key)[1]; + ((v4u *) data->RoundKey[t])[2] = ((v4u *) Key)[2]; + ((v4u *) data->RoundKey[t])[3] = ((v4u *) Key)[3]; + } +} + +static inline void Encrypt (aes_data_t *data, unsigned char State[4][MAXBC]) + +{ + unsigned char tmp2[4][4]; + int r; + + // Add round key + ((v4u *) State)[0] = ((v4u *) State)[0] ^ ((v4u *) data->RoundKey[0])[0]; + ((v4u *) State)[1] = ((v4u *) State)[1] ^ ((v4u *) data->RoundKey[0])[1]; + ((v4u *) State)[2] = ((v4u *) State)[2] ^ ((v4u *) data->RoundKey[0])[2]; + ((v4u *) State)[3] = ((v4u *) State)[3] ^ ((v4u *) data->RoundKey[0])[3]; + + for(r = 1; r < ROUNDS; r++) { + v4u V, V0, V1, V2, V3; + + V = ((v4u *) State)[0]; ((v4u *) State)[0] = gap8_packu4(data->S[V[0]], data->S[V[1]], data->S[V[2]], data->S[V[3]]); + V = ((v4u *) State)[1]; ((v4u *) State)[1] = gap8_packu4(data->S[V[0]], data->S[V[1]], data->S[V[2]], data->S[V[3]]); + V = ((v4u *) State)[2]; ((v4u *) State)[2] = gap8_packu4(data->S[V[0]], data->S[V[1]], data->S[V[2]], data->S[V[3]]); + V = ((v4u *) State)[3]; ((v4u *) State)[3] = gap8_packu4(data->S[V[0]], data->S[V[1]], data->S[V[2]], data->S[V[3]]); + + // Shift Rows + ((v4u *) State)[1] = __builtin_shuffle(((v4u *) State)[1], (v4u){1,2,3,0}); + ((v4u *) State)[2] = __builtin_shuffle(((v4u *) State)[2], (v4u){2,3,0,1}); + ((v4u *) State)[3] = __builtin_shuffle(((v4u *) State)[3], (v4u){3,0,1,2}); + + // MixColumns + V0 = ((v4u *) State)[0]; V1 = ((v4u *) State)[1]; V2 = ((v4u *) State)[2]; V3 = ((v4u *) State)[3]; + ((v4u *) tmp2)[0] = gap8_packu4(data->mul2[V0[0]], data->mul2[V0[1]], data->mul2[V0[2]], data->mul2[V0[3]]) ^ + gap8_packu4(data->mul3[V1[0]], data->mul3[V1[1]], data->mul3[V1[2]], data->mul3[V1[3]]) ^ + V2 ^ V3; + ((v4u *) tmp2)[1] = gap8_packu4(data->mul2[V1[0]], data->mul2[V1[1]], data->mul2[V1[2]], data->mul2[V1[3]]) ^ + gap8_packu4(data->mul3[V2[0]], data->mul3[V2[1]], data->mul3[V2[2]], data->mul3[V2[3]]) ^ + V3 ^ V0; + ((v4u *) tmp2)[2] = gap8_packu4(data->mul2[V2[0]], data->mul2[V2[1]], data->mul2[V2[2]], data->mul2[V2[3]]) ^ + gap8_packu4(data->mul3[V3[0]], data->mul3[V3[1]], data->mul3[V3[2]], data->mul3[V3[3]]) ^ + V0 ^ V1; + ((v4u *) tmp2)[3] = gap8_packu4(data->mul2[V3[0]], data->mul2[V3[1]], data->mul2[V3[2]], data->mul2[V3[3]]) ^ + gap8_packu4(data->mul3[V0[0]], data->mul3[V0[1]], data->mul3[V0[2]], data->mul3[V0[3]]) ^ + V1 ^ V2; + ((v4u *) State)[0] = ((v4u *) tmp2)[0]; + ((v4u *) State)[1] = ((v4u *) tmp2)[1]; + ((v4u *) State)[2] = ((v4u *) tmp2)[2]; + ((v4u *) State)[3] = ((v4u *) tmp2)[3]; + + // Add round key + ((v4u *) State)[0] = ((v4u *) State)[0] ^ ((v4u *) data->RoundKey[r])[0]; + ((v4u *) State)[1] = ((v4u *) State)[1] ^ ((v4u *) data->RoundKey[r])[1]; + ((v4u *) State)[2] = ((v4u *) State)[2] ^ ((v4u *) data->RoundKey[r])[2]; + ((v4u *) State)[3] = ((v4u *) State)[3] ^ ((v4u *) data->RoundKey[r])[3]; + } + // Last round without mixcolumn + { + v4u V; + V = ((v4u *) State)[0]; ((v4u *) State)[0] = gap8_packu4(data->S[V[0]], data->S[V[1]], data->S[V[2]], data->S[V[3]]); + V = ((v4u *) State)[1]; ((v4u *) State)[1] = gap8_packu4(data->S[V[0]], data->S[V[1]], data->S[V[2]], data->S[V[3]]); + V = ((v4u *) State)[2]; ((v4u *) State)[2] = gap8_packu4(data->S[V[0]], data->S[V[1]], data->S[V[2]], data->S[V[3]]); + V = ((v4u *) State)[3]; ((v4u *) State)[3] = gap8_packu4(data->S[V[0]], data->S[V[1]], data->S[V[2]], data->S[V[3]]); + } + // Shift Rows + ((v4u *) State)[1] = __builtin_shuffle(((v4u *) State)[1], (v4u){1,2,3,0}); + ((v4u *) State)[2] = __builtin_shuffle(((v4u *) State)[2], (v4u){2,3,0,1}); + ((v4u *) State)[3] = __builtin_shuffle(((v4u *) State)[3], (v4u){3,0,1,2}); + + // Add round key + ((v4u *) State)[0] = ((v4u *) State)[0] ^ ((v4u *) data->RoundKey[ROUNDS])[0]; + ((v4u *) State)[1] = ((v4u *) State)[1] ^ ((v4u *) data->RoundKey[ROUNDS])[1]; + ((v4u *) State)[2] = ((v4u *) State)[2] ^ ((v4u *) data->RoundKey[ROUNDS])[2]; + ((v4u *) State)[3] = ((v4u *) State)[3] ^ ((v4u *) data->RoundKey[ROUNDS])[3]; +} + +void AesCtrCipher( + aes_data_t *data, + unsigned char *In, + unsigned char *Out, + unsigned char Key[4][MAXBC], + unsigned char IV[2][MAXBC], + int Len, + int Reset) + +{ + int i, j; + unsigned char Buff[16]; + unsigned char State[4][4]; + int Counter = 0; + v4u *Vo = (v4u *) Out; + v4u *Vi = (v4u *) In; + v4u *VBuff = (v4u *) Buff; + + if (Reset) KeyExpansion(data, Key); + + ((unsigned int *) State)[0] = ((unsigned int *) IV)[0]; + ((unsigned int *) State)[1] = ((unsigned int *) IV)[1]; + ((unsigned int *) State)[2] = 0; + + for (i=0; iS, data->mul2, data->mul3, data->RC); +} diff --git a/examples/pmsis/features/aes128_sw/AesLib.h b/examples/pmsis/features/aes128_sw/AesLib.h new file mode 100644 index 000000000..fc4ccaaf5 --- /dev/null +++ b/examples/pmsis/features/aes128_sw/AesLib.h @@ -0,0 +1,34 @@ +#ifndef __AES_LIB_H__ +#define __AES_LIB_H__ + +#define MAXBC (4) + +// #define MAXBC (4) +#define MAXKC (4) +#define MAXROUNDS (10) +#define BC (4) +#define KC (4) +#define ROUNDS (10) + +typedef struct { + unsigned char mul2[256]; + unsigned char mul3[256]; + unsigned char S[256]; + unsigned char RC[30]; + unsigned char RoundKey[MAXROUNDS+1][4][4]; +} aes_data_t; + + +extern void AesBuildLUT(aes_data_t *data); +extern void AesCtrCipher( + aes_data_t *data, + unsigned char *In, + unsigned char *Out, + unsigned char Key[4][MAXBC], + unsigned char IV[2][MAXBC], + int Len, + int Reset); + + + +#endif diff --git a/examples/pmsis/features/aes128_sw/Makefile b/examples/pmsis/features/aes128_sw/Makefile new file mode 100644 index 000000000..f51ef4b0a --- /dev/null +++ b/examples/pmsis/features/aes128_sw/Makefile @@ -0,0 +1,10 @@ +APP = aes +APP_SRCS = AesLib.c main.c +APP_CFLAGS = -O3 + +output ?= emul_build +emul: + mkdir -p $(outpath) + gcc $(CFLAGS) -o $(outpath)/$(output) $(SRC) + +include $(RULES_DIR)/pmsis_rules.mk diff --git a/examples/pmsis/features/aes128_sw/main.c b/examples/pmsis/features/aes128_sw/main.c new file mode 100644 index 000000000..8514d59c0 --- /dev/null +++ b/examples/pmsis/features/aes128_sw/main.c @@ -0,0 +1,104 @@ +#include "pmsis.h" +#include "AesLib.h" + +#define TEST_BUFF_SIZE (40600) +#define TEST_KEY_HI (0x1122334455667788) +#define TEST_KEY_LO (0x9900AABBCCDDEEFF) +#define TEST_IV (0x1122334455667788) + +#if defined (__PULP_OS__) +RT_FC_DATA aes_data_t aes_data; +#else +GAP_FC_DATA aes_data_t aes_data; +#endif + +static void load_key(unsigned char * key, unsigned char * iv) +{ + for(int i=0; i<8; i++) + { + key[i] = (TEST_KEY_LO>>(i*8)) & 0xFF; + key[(i+8)] = (TEST_KEY_HI>>(i*8)) & 0xFF; + iv[i] = (TEST_IV>>(i*8)) & 0xFF; + } + for (int i=0; i<16; i++) + { + printf("%x", key[i]); + } + printf("\n"); + for (int i=0; i<8; i++) + { + printf("%x", iv[i]); + } + printf("\n"); +} + +static void buff_init (unsigned char * buff, unsigned int size) +{ + for (unsigned int i=0; i= DCDC_DEFAULT_LV; voltage -= 100) { @@ -118,7 +117,7 @@ void test_cluster_frequency(void) printf("Cluster Frequency : %ld Hz, freq : %ld\n", cur_cl_freq, cl_freq); #if defined(ASYNC) - pi_task_t wait_task = {0}; + pi_task_t wait_task; pi_task_block(&wait_task); pi_cluster_send_task_to_cl_async(&cluster_dev, &task, &wait_task); pi_task_wait_on(&wait_task); diff --git a/examples/pmsis/features/cluster/cluster_malloc/test_cluster_malloc.c b/examples/pmsis/features/cluster/cluster_malloc/test_cluster_malloc.c index b44c9c964..b8c164abb 100644 --- a/examples/pmsis/features/cluster/cluster_malloc/test_cluster_malloc.c +++ b/examples/pmsis/features/cluster/cluster_malloc/test_cluster_malloc.c @@ -33,8 +33,8 @@ void cluster_malloc(void *arg) Cluster core requests memory allocation in L2, and wait response for request. The request is delegated to FC. */ - pi_cl_alloc_req_t alloc_req = {0}; - pi_cl_free_req_t free_req = {0}; + pi_cl_alloc_req_t alloc_req; + pi_cl_free_req_t free_req; for (uint32_t i=0; i<1000; i++) { pi_cl_l2_malloc((uint32_t) BUFFER_SIZE, &alloc_req); @@ -72,13 +72,12 @@ void test_cluster_malloc(void) } /* Prepare cluster task and send it to cluster. */ - struct pi_cluster_task task = {0}; - task.entry = cluster_malloc; - task.arg = NULL; + struct pi_cluster_task task; + pi_cluster_task(&task, cluster_malloc, NULL); printf("Sending task.\n"); #if defined(ASYNC) - pi_task_t wait_task = {0}; + pi_task_t wait_task; pi_task_block(&wait_task); pi_cluster_send_task_to_cl_async(&cluster_dev, &task, &wait_task); printf("Wait end of cluster task\n"); diff --git a/examples/pmsis/features/helloworld_cxx/Makefile b/examples/pmsis/features/helloworld_cxx/Makefile new file mode 100644 index 000000000..ebe6b9e2d --- /dev/null +++ b/examples/pmsis/features/helloworld_cxx/Makefile @@ -0,0 +1,16 @@ +# User Test +#------------------------------------ +APP = test +# App sources +APP_SRCS_CXX = helloworld.cpp +# App includes +APP_INC = +# Compiler flags +APP_CFLAGS = +# Linker flags +APP_LDFLAGS = + +# Custom linker +APP_LINK_SCRIPT = + +include $(RULES_DIR)/pmsis_rules.mk diff --git a/examples/pmsis/features/helloworld_cxx/helloworld.cpp b/examples/pmsis/features/helloworld_cxx/helloworld.cpp new file mode 100644 index 000000000..88cfaa23d --- /dev/null +++ b/examples/pmsis/features/helloworld_cxx/helloworld.cpp @@ -0,0 +1,61 @@ +/* PMSIS includes */ +#include "pmsis.h" +#include "math.h" + +/* Task executed by cluster cores. */ +void cluster_helloworld(void *arg) +{ + uint32_t core_id = pi_core_id(), cluster_id = pi_cluster_id(); + printf("[%d %d] Hello World!\n", cluster_id, core_id); +} + +/* Cluster main entry, executed by core 0. */ +void cluster_delegate(void *arg) +{ + printf("Cluster master core entry\n"); + /* Task dispatch to cluster cores. */ + pi_cl_team_fork(pi_cl_cluster_nb_cores(), cluster_helloworld, arg); + printf("Cluster master core exit\n"); +} + +void helloworld(void) +{ + printf("Entering main controller\n"); + + uint32_t errors = 0; + uint32_t core_id = pi_core_id(), cluster_id = pi_cluster_id(); + printf("[%d %d] Hello World!\n", cluster_id, core_id); + + struct pi_device cluster_dev; + struct pi_cluster_conf cl_conf; + + /* Init cluster configuration structure. */ + pi_cluster_conf_init(&cl_conf); + cl_conf.id = 0; /* Set cluster ID. */ + /* Configure & open cluster. */ + pi_open_from_conf(&cluster_dev, &cl_conf); + if (pi_cluster_open(&cluster_dev)) + { + printf("Cluster open failed !\n"); + pmsis_exit(-1); + } + + /* Prepare cluster task and send it to cluster. */ + struct pi_cluster_task cl_task; + + pi_cluster_send_task_to_cl(&cluster_dev, pi_cluster_task(&cl_task, cluster_delegate, NULL)); + + pi_cluster_close(&cluster_dev); + + printf("Test success !\n"); + + pmsis_exit(errors); +} + +/* Program Entry. */ +int main(void) +{ + printf("\n\n\t *** PMSIS HelloWorld ***\n\n"); + return pmsis_kickoff((void *) helloworld); +} + diff --git a/examples/pmsis/features/hyper_ram_delegate/test_hyper_ram_delegate.c b/examples/pmsis/features/hyper_ram_delegate/test_hyper_ram_delegate.c index de2bc04eb..66d037cb5 100644 --- a/examples/pmsis/features/hyper_ram_delegate/test_hyper_ram_delegate.c +++ b/examples/pmsis/features/hyper_ram_delegate/test_hyper_ram_delegate.c @@ -168,11 +168,9 @@ void test_hyper_ram_delegate(void) } /* Prepare cluster task and send it to cluster. */ - struct pi_cluster_task cl_task = {0}; - cl_task.entry = cluster_delegate; - cl_task.arg = NULL; + struct pi_cluster_task cl_task; - pi_cluster_send_task_to_cl(&cluster_dev, &cl_task); + pi_cluster_send_task_to_cl(&cluster_dev, pi_cluster_task(&cl_task, cluster_delegate, NULL)); pi_cluster_close(&cluster_dev); diff --git a/examples/pmsis/features/uart_delegate/test_uart_delegate.c b/examples/pmsis/features/uart_delegate/test_uart_delegate.c index ca1a2c9e8..7dc3c6eb0 100644 --- a/examples/pmsis/features/uart_delegate/test_uart_delegate.c +++ b/examples/pmsis/features/uart_delegate/test_uart_delegate.c @@ -53,8 +53,8 @@ void test_uart_delegate(void) sprintf(hello, "[%d %d] Hello World!\n", cluster_id, core_id); pi_uart_write(&uart, hello, strlen(hello)); - struct pi_device cluster_dev = {0}; - struct pi_cluster_conf cl_conf = {0}; + struct pi_device cluster_dev; + struct pi_cluster_conf cl_conf; /* Init cluster configuration structure. */ pi_cluster_conf_init(&cl_conf); @@ -68,11 +68,9 @@ void test_uart_delegate(void) } /* Prepare cluster task and send it to cluster. */ - struct pi_cluster_task cl_task = {0}; - cl_task.entry = cluster_delegate; - cl_task.arg = NULL; + struct pi_cluster_task cl_task; - pi_cluster_send_task_to_cl(&cluster_dev, &cl_task); + pi_cluster_send_task_to_cl(&cluster_dev, pi_cluster_task(&cl_task, cluster_delegate, NULL)); pi_cluster_close(&cluster_dev); diff --git a/examples/pmsis/helloworld/helloworld.c b/examples/pmsis/helloworld/helloworld.c index ca83432f1..ae5e2a666 100644 --- a/examples/pmsis/helloworld/helloworld.c +++ b/examples/pmsis/helloworld/helloworld.c @@ -25,8 +25,8 @@ void helloworld(void) uint32_t core_id = pi_core_id(), cluster_id = pi_cluster_id(); printf("[%d %d] Hello World!\n", cluster_id, core_id); - struct pi_device cluster_dev = {0}; - struct pi_cluster_conf cl_conf = {0}; + struct pi_device cluster_dev; + struct pi_cluster_conf cl_conf; /* Init cluster configuration structure. */ pi_cluster_conf_init(&cl_conf); @@ -40,11 +40,9 @@ void helloworld(void) } /* Prepare cluster task and send it to cluster. */ - struct pi_cluster_task cl_task = {0}; - cl_task.entry = cluster_delegate; - cl_task.arg = NULL; + struct pi_cluster_task cl_task; - pi_cluster_send_task_to_cl(&cluster_dev, &cl_task); + pi_cluster_send_task_to_cl(&cluster_dev, pi_cluster_task(&cl_task, cluster_delegate, NULL)); pi_cluster_close(&cluster_dev); diff --git a/examples/pmsis/periph/deep_sleep/deep_sleep.c b/examples/pmsis/periph/deep_sleep/deep_sleep.c index 843005607..08c093118 100644 --- a/examples/pmsis/periph/deep_sleep/deep_sleep.c +++ b/examples/pmsis/periph/deep_sleep/deep_sleep.c @@ -11,7 +11,7 @@ int32_t setup_rtc(void) { int32_t errors = 0; /* Init & open RTC. */ - struct pi_rtc_conf rtc_conf = {0}; + struct pi_rtc_conf rtc_conf; pi_rtc_conf_init(&rtc_conf); rtc_conf.mode = PI_RTC_MODE_CALENDAR | PI_RTC_MODE_ALARM; /* Date & time. */ @@ -36,7 +36,7 @@ int32_t setup_rtc(void) return -11; } - struct tm time = {0}, time_now = {0}; + struct tm time, time_now; /* Initial date & time. */ pi_rtc_datetime_get(&wakeup_dev, &time_now); @@ -62,7 +62,7 @@ int32_t setup_rtc(void) int32_t setup_gpio(struct pi_pmu_sleep_conf_s *sleep_conf) { int32_t errors = 0; - struct pi_gpio_conf gpio_conf = {0}; + struct pi_gpio_conf gpio_conf; pi_gpio_conf_init(&gpio_conf); pi_open_from_conf(&wakeup_dev, &gpio_conf); errors = pi_gpio_open(&wakeup_dev); @@ -97,7 +97,7 @@ void helloworld(void) { printf("Cold boot\n"); - struct pi_pmu_sleep_conf_s sleep_conf = {0}; + struct pi_pmu_sleep_conf_s sleep_conf; sleep_conf.pmu_cluster_state = PI_PMU_DOMAIN_STATE_OFF; sleep_conf.power_state = PI_PMU_WAKEUP_STATE_POWER_HIGH; sleep_conf.sleep_mode = PI_PMU_MODE_RET_DEEP_SLEEP; diff --git a/examples/pmsis/periph/dmacpy/test_dmacpy.c b/examples/pmsis/periph/dmacpy/test_dmacpy.c index 75d4dace4..2e5ccbe71 100644 --- a/examples/pmsis/periph/dmacpy/test_dmacpy.c +++ b/examples/pmsis/periph/dmacpy/test_dmacpy.c @@ -105,7 +105,7 @@ void test_dmacpy(void) } /* Init & open dmacpy. */ - struct pi_dmacpy_conf dmacpy_conf = {0}; + struct pi_dmacpy_conf dmacpy_conf; pi_dmacpy_conf_init(&dmacpy_conf); pi_open_from_conf(&dmacpy, &dmacpy_conf); errors = pi_dmacpy_open(&dmacpy); @@ -120,8 +120,8 @@ void test_dmacpy(void) "size = %d Bytes.\n", buff, rcv_buff_0, rcv_buff_1, rcv_buff_2, cpy_size); - pi_task_t task_fcl2 = {0}, task_l2l2 = {0}, task_l2fc = {0}, task_copy = {0}; - dma_memcpy_t copy_fcl2 = {0}, copy_l2l2 = {0}, copy_l2fc = {0}; + pi_task_t task_fcl2, task_l2l2, task_l2fc, task_copy; + dma_memcpy_t copy_fcl2, copy_l2l2, copy_l2fc; copy_fcl2.src = buff; copy_fcl2.dst = rcv_buff_0; copy_fcl2.size = cpy_size; diff --git a/examples/pmsis/periph/gpio/gpio_input/gpio.c b/examples/pmsis/periph/gpio/gpio_input/gpio.c index e1853d040..0c3005e75 100644 --- a/examples/pmsis/periph/gpio/gpio_input/gpio.c +++ b/examples/pmsis/periph/gpio/gpio_input/gpio.c @@ -23,7 +23,7 @@ void test_gpio(void) { int32_t errors = 0; uint32_t value = 0; - struct pi_gpio_conf gpio_conf = {0}; + struct pi_gpio_conf gpio_conf; pi_gpio_conf_init(&gpio_conf); pi_open_from_conf(&gpio, &gpio_conf); errors = pi_gpio_open(&gpio); @@ -32,7 +32,7 @@ void test_gpio(void) printf("Error opening GPIO %d\n", errors); pmsis_exit(errors); } - pi_task_t cb_gpio = {0}; + pi_task_t cb_gpio; pi_gpio_e gpio_in = PI_GPIO_A0_PAD_12_A3; pi_gpio_notif_e irq_type = PI_GPIO_NOTIF_RISE; diff --git a/examples/pmsis/periph/gpio/gpio_irq_cb/gpio.c b/examples/pmsis/periph/gpio/gpio_irq_cb/gpio.c index d10cd8372..1b6a64a26 100644 --- a/examples/pmsis/periph/gpio/gpio_irq_cb/gpio.c +++ b/examples/pmsis/periph/gpio/gpio_irq_cb/gpio.c @@ -41,7 +41,7 @@ void test_gpio(void) { int32_t errors = 0; uint32_t value = 0; - struct pi_gpio_conf gpio_conf = {0}; + struct pi_gpio_conf gpio_conf; pi_gpio_conf_init(&gpio_conf); pi_open_from_conf(&gpio, &gpio_conf); errors = pi_gpio_open(&gpio); @@ -63,7 +63,7 @@ void test_gpio(void) /* Initialize cb. */ uint32_t gpio_mask = (1 << (gpio_in & PI_GPIO_NUM_MASK)); - pi_gpio_callback_t cb_gpio[3] = {0}; + pi_gpio_callback_t cb_gpio[3]; pi_gpio_callback_init(&cb_gpio[0], gpio_mask, __pi_cb_gpio, (void *) gpio_in); pi_gpio_callback_init(&cb_gpio[1], gpio_mask, __pi_cb_gpio_2, (void *) gpio_in); pi_gpio_callback_init(&cb_gpio[2], gpio_mask, __pi_cb_gpio_3, (void *) gpio_in); diff --git a/examples/pmsis/periph/i2c/i2c_eeprom_pulp_fmc/i2c_eeprom_pulp_fmc.c b/examples/pmsis/periph/i2c/i2c_eeprom_pulp_fmc/i2c_eeprom_pulp_fmc.c index a430062a6..447149a67 100644 --- a/examples/pmsis/periph/i2c/i2c_eeprom_pulp_fmc/i2c_eeprom_pulp_fmc.c +++ b/examples/pmsis/periph/i2c/i2c_eeprom_pulp_fmc/i2c_eeprom_pulp_fmc.c @@ -13,11 +13,11 @@ #define TEST_VALUE 0x45 /* Buffer to write in EEPROM : BUF_SIZE + 2, for the memory address. */ -unsigned char write_buff[BUFF_SIZE+2] = {0}; +unsigned char write_buff[BUFF_SIZE+2]; /* Buffer to read from EEPROM : BUF_SIZE. */ -unsigned char read_buff[BUFF_SIZE] = {0}; +unsigned char read_buff[BUFF_SIZE]; /* BUffer holding the memory address for read transactions. */ -unsigned char addr_buff[2] = {0}; +unsigned char addr_buff[2]; void data_init(int nb) { diff --git a/examples/pmsis/periph/i2c/i2c_scan/i2c_scan.c b/examples/pmsis/periph/i2c/i2c_scan/i2c_scan.c index 7e35748ff..830291048 100644 --- a/examples/pmsis/periph/i2c/i2c_scan/i2c_scan.c +++ b/examples/pmsis/periph/i2c/i2c_scan/i2c_scan.c @@ -47,8 +47,8 @@ static uint8_t i2c_write(uint8_t *buf, uint16_t size) int scan(uint8_t itf) { printf("Scanning interface %d\n", itf); - uint8_t buf[1] = {0}; - uint8_t peripherals[128] = {0}; + uint8_t buf[1]; + uint8_t peripherals[128]; int found = 0; for (int i = 0; i < 128; i++) diff --git a/examples/pmsis/periph/i2c/i2c_slave/i2c_slave_loopback.c b/examples/pmsis/periph/i2c/i2c_slave/i2c_slave_loopback.c index 8e817f235..528a1a136 100644 --- a/examples/pmsis/periph/i2c/i2c_slave/i2c_slave_loopback.c +++ b/examples/pmsis/periph/i2c/i2c_slave/i2c_slave_loopback.c @@ -35,16 +35,16 @@ #define I2C_SLAVE_L2_TEST_SIZE (BUFF_SIZE*4) /* Buffer to write in EEPROM : BUF_SIZE + 2, for the memory address. */ -uint32_t write_buff[BUFF_SIZE+2] = {0}; +uint32_t write_buff[BUFF_SIZE+2] ; /* Buffer to read from EEPROM : BUF_SIZE. */ -uint32_t read_buff[BUFF_SIZE] = {0}; +uint32_t read_buff[BUFF_SIZE] ; /* BUffer holding the memory address & size for read transactions. */ -uint32_t addr_buff[2] = {0}; +uint32_t addr_buff[2] ; // buffer to hold rx on slave side // BUFF SIZE + addr + size + an extra byte for matcher -uint8_t rx_buffer[((BUFF_SIZE+2)*4)+1] = {0}; +uint8_t rx_buffer[((BUFF_SIZE+2)*4)+1] ; uint32_t g_l2_buff[BUFF_SIZE]; diff --git a/examples/pmsis/periph/i2s/wav_out_long/test.c b/examples/pmsis/periph/i2s/wav_out_long/test.c index e0c7af696..411f2a273 100644 --- a/examples/pmsis/periph/i2s/wav_out_long/test.c +++ b/examples/pmsis/periph/i2s/wav_out_long/test.c @@ -73,8 +73,8 @@ static int l3_init() static void open_cl() { - struct pi_device cluster_dev = {0}; - struct pi_cluster_conf cl_conf = {0}; + struct pi_device cluster_dev; + struct pi_cluster_conf cl_conf; /* Init cluster configuration structure. */ pi_cluster_conf_init(&cl_conf); diff --git a/examples/pmsis/periph/perf/perf.c b/examples/pmsis/periph/perf/perf.c index 506bba012..66fa7d289 100644 --- a/examples/pmsis/periph/perf/perf.c +++ b/examples/pmsis/periph/perf/perf.c @@ -3,7 +3,7 @@ /* Variables used. */ struct pi_device uart; -PI_L2 uint32_t perf_values[ARCHI_CLUSTER_NB_PE] = {0}; +PI_L2 uint32_t perf_values[ARCHI_CLUSTER_NB_PE]; /* Task executed by cluster cores. */ void cluster_helloworld(void *arg) @@ -37,8 +37,8 @@ void helloworld(void) printf("[%d %d] Hello World!\n", cluster_id, core_id); uint32_t fc_perf = pi_perf_read(PI_PERF_ACTIVE_CYCLES); - struct pi_device cluster_dev = {0}; - struct pi_cluster_conf cl_conf = {0}; + struct pi_device cluster_dev; + struct pi_cluster_conf cl_conf; /* Init cluster configuration structure. */ pi_cluster_conf_init(&cl_conf); @@ -52,11 +52,9 @@ void helloworld(void) } /* Prepare cluster task and send it to cluster. */ - struct pi_cluster_task cl_task = {0}; - cl_task.entry = cluster_delegate; - cl_task.arg = NULL; + struct pi_cluster_task cl_task; - pi_cluster_send_task_to_cl(&cluster_dev, &cl_task); + pi_cluster_send_task_to_cl(&cluster_dev, pi_cluster_task(&cl_task, cluster_delegate, NULL)); pi_cluster_close(&cluster_dev); diff --git a/examples/pmsis/periph/pwm/test_pwm.c b/examples/pmsis/periph/pwm/test_pwm.c index 6aba24037..20693c424 100644 --- a/examples/pmsis/periph/pwm/test_pwm.c +++ b/examples/pmsis/periph/pwm/test_pwm.c @@ -26,9 +26,9 @@ void test_pwm(void) uint32_t freq[NB_PWM_USED] = {PWM0_FREQ, PWM1_FREQ, PWM2_FREQ, PWM3_FREQ}; uint32_t duty_cycle[NB_PWM_USED] = {PWM0_DUTY_CYCLE, PWM1_DUTY_CYCLE, PWM2_DUTY_CYCLE, PWM3_DUTY_CYCLE}; - struct pi_pwm_ioctl_ch_config ch_conf[NB_PWM_USED] = {0}; - struct pi_pwm_ioctl_evt evt[NB_PWM_USED] = {0}; - pi_task_t cb_task[NB_PWM_USED] = {0}; + struct pi_pwm_ioctl_ch_config ch_conf[NB_PWM_USED]; + struct pi_pwm_ioctl_evt evt[NB_PWM_USED]; + pi_task_t cb_task[NB_PWM_USED]; for (uint32_t i = 0; i < (uint32_t) NB_PWM_USED; i++) { diff --git a/examples/pmsis/periph/rtc/rtc_alarm/rtc_alarm.c b/examples/pmsis/periph/rtc/rtc_alarm/rtc_alarm.c index de2ec0442..432de9384 100644 --- a/examples/pmsis/periph/rtc/rtc_alarm/rtc_alarm.c +++ b/examples/pmsis/periph/rtc/rtc_alarm/rtc_alarm.c @@ -20,7 +20,7 @@ void test_rtc_alarm(void) int32_t errors = 0; /* Init & open RTC. */ - struct pi_rtc_conf rtc_conf = {0}; + struct pi_rtc_conf rtc_conf; pi_rtc_conf_init(&rtc_conf); rtc_conf.mode = PI_RTC_MODE_CALENDAR | PI_RTC_MODE_ALARM; /* Date & time. */ @@ -45,7 +45,7 @@ void test_rtc_alarm(void) pmsis_exit(-1); } - struct tm time = {0}, time_now = {0}; + struct tm time, time_now; /* Initial date & time. */ pi_rtc_datetime_get(&rtc, &time_now); @@ -75,7 +75,7 @@ void test_rtc_alarm(void) /* Binding RTC IRQ. */ uint32_t arg = 0xabbadead; - struct pi_task task = {0}; + struct pi_task task; pi_task_callback(&task, alarm_irq_handler, &arg); pi_rtc_ioctl(&rtc, PI_RTC_ALARM_ATTACH_TASK, &task); diff --git a/examples/pmsis/periph/rtc/rtc_calendar/rtc_calendar.c b/examples/pmsis/periph/rtc/rtc_calendar/rtc_calendar.c index 88a58bb8a..d7f0e58a6 100644 --- a/examples/pmsis/periph/rtc/rtc_calendar/rtc_calendar.c +++ b/examples/pmsis/periph/rtc/rtc_calendar/rtc_calendar.c @@ -13,7 +13,7 @@ void test_rtc_calendar(void) int32_t errors = 0; /* Init & open RTC. */ - struct pi_rtc_conf rtc_conf = {0}; + struct pi_rtc_conf rtc_conf; pi_rtc_conf_init(&rtc_conf); rtc_conf.mode = PI_RTC_MODE_CALENDAR; /* Date & time. */ diff --git a/examples/pmsis/periph/rtc/rtc_counter/rtc_counter.c b/examples/pmsis/periph/rtc/rtc_counter/rtc_counter.c index bd1802d50..deff57122 100644 --- a/examples/pmsis/periph/rtc/rtc_counter/rtc_counter.c +++ b/examples/pmsis/periph/rtc/rtc_counter/rtc_counter.c @@ -22,7 +22,7 @@ void test_rtc_counter(void) uint8_t repeat_en = (repeat > 0) ? 1 : 0; /* Init & open RTC. */ - struct pi_rtc_conf rtc_conf = {0}; + struct pi_rtc_conf rtc_conf; pi_rtc_conf_init(&rtc_conf); rtc_conf.mode = PI_RTC_MODE_TIMER; rtc_conf.counter = (uint32_t) TIMER_SECONDS; @@ -41,7 +41,7 @@ void test_rtc_counter(void) /* Binding RTC IRQ. */ uint32_t arg = 0xabbadead; - struct pi_task task = {0}; + struct pi_task task; pi_task_callback(&task, timer_irq_handler, &arg); pi_rtc_ioctl(&rtc, PI_RTC_TIMER_ATTACH_TASK, &task); diff --git a/examples/pmsis/periph/uart/uart_helloworld/test_uart_helloworld.c b/examples/pmsis/periph/uart/uart_helloworld/test_uart_helloworld.c index c51ef647f..330967a5a 100644 --- a/examples/pmsis/periph/uart/uart_helloworld/test_uart_helloworld.c +++ b/examples/pmsis/periph/uart/uart_helloworld/test_uart_helloworld.c @@ -29,7 +29,7 @@ void test_uart_helloworld(void) /* Write though uart. */ #if (ASYNC) - pi_task_t wait_task = {0}; + pi_task_t wait_task; pi_task_block(&wait_task); pi_uart_write_async(&uart, hello, strlen(hello), &wait_task); pi_task_wait_on(&wait_task); diff --git a/examples/pmsis/periph/uart/uart_helloworld_timeout/uart_helloworld.c b/examples/pmsis/periph/uart/uart_helloworld_timeout/uart_helloworld.c index 1cd2954dc..e8cbd90f6 100644 --- a/examples/pmsis/periph/uart/uart_helloworld_timeout/uart_helloworld.c +++ b/examples/pmsis/periph/uart/uart_helloworld_timeout/uart_helloworld.c @@ -37,7 +37,7 @@ void test_uart_helloworld(void) pi_uart_ioctl(&uart, PI_UART_IOCTL_ATTACH_TIMEOUT_TX, (void *) timeout_id); /* Write though uart. */ #if (ASYNC) - pi_task_t wait_task = {0}; + pi_task_t wait_task; pi_task_block(&wait_task); pi_task_timeout_set(&wait_task, timeout_us); pi_uart_write_async(&uart, hello, strlen(hello), &wait_task); diff --git a/examples/pmsis/periph/uart/uart_input/test_uart_input.c b/examples/pmsis/periph/uart/uart_input/test_uart_input.c index 6fae07f12..d71b9dc42 100644 --- a/examples/pmsis/periph/uart/uart_input/test_uart_input.c +++ b/examples/pmsis/periph/uart/uart_input/test_uart_input.c @@ -61,7 +61,7 @@ void test_uart_input(void) /* Write on uart then wait for data from uart. */ #if (ASYNC) - pi_task_t task = {0}; + pi_task_t task; pi_task_callback(&task, (void *) uart_tx_cb, &task); pi_uart_write_async(&uart, sentence, strlen(sentence), &task); while (done != 2) diff --git a/examples/pmsis/periph/uart/uart_input_timeout/test_uart_input.c b/examples/pmsis/periph/uart/uart_input_timeout/test_uart_input.c index f3270b1bf..6b855034f 100644 --- a/examples/pmsis/periph/uart/uart_input_timeout/test_uart_input.c +++ b/examples/pmsis/periph/uart/uart_input_timeout/test_uart_input.c @@ -65,7 +65,7 @@ void test_uart_input(void) pi_uart_ioctl(&uart, PI_UART_IOCTL_ATTACH_TIMEOUT_RX, (void *) timeout_id); /* Write on uart then wait for data from uart. */ #if (ASYNC) - pi_task_t task = {0}; + pi_task_t task; pi_task_callback(&task, (void *) uart_tx_cb, &task); pi_uart_write_async(&uart, sentence, strlen(sentence), &task); while (done != 2) diff --git a/gap8/.gitignore b/gap8/.gitignore new file mode 100644 index 000000000..78e9d4b97 --- /dev/null +++ b/gap8/.gitignore @@ -0,0 +1,29 @@ +# SDK build and test folders +/install/ +/build/ +BUILD* +junit-reports/ + +# SDK generated folders +/rtos/pulp/archi_gap/ +/rtos/pulp/hal_gap/ +/rtos/pulp/archi/ +/rtos/pulp/hal/ +/utils/openocd/ +/utils/gap8-openocd/ + +# Various editor files +*~ +*.swp + +# Python Files +__pycache__* +*.pyc + +# C generated files +*.o + +# Miscellaneous files +*.log +*.wav +.scon* diff --git a/gap8/.gitmodules b/gap8/.gitmodules new file mode 100644 index 000000000..4cdf5f2a9 --- /dev/null +++ b/gap8/.gitmodules @@ -0,0 +1,12 @@ +[submodule "rtos/pulp/archi_pulp"] + path = rtos/pulp/archi_pulp + url = ../../gwt_sdk_developer/archi_pulp.git +[submodule "rtos/pulp/hal_pulp"] + path = rtos/pulp/hal_pulp + url = ../../gwt_sdk_developer/hal_pulp.git +[submodule "rtos/pulp/pulp-os"] + path = rtos/pulp/pulp-os + url = ../../gwt_sdk_developer/pulp-rt.git +[submodule "gvsoc/dpi-models"] + path = gvsoc/dpi-models + url = ../../gwt_sdk_developer/gvsoc_dpi_models.git diff --git a/gap8/README.md b/gap8/README.md new file mode 100644 index 000000000..0281d053b --- /dev/null +++ b/gap8/README.md @@ -0,0 +1,3 @@ +# Gap Sdk Ga8 Modules + +Submodule of gap_sdk used to hide all gap8 specific modules \ No newline at end of file diff --git a/gap8/gap8.mk b/gap8/gap8.mk new file mode 100644 index 000000000..a4b7e9772 --- /dev/null +++ b/gap8/gap8.mk @@ -0,0 +1,288 @@ +# Copyright (c) 2021 GreenWaves Technologies SAS +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of GreenWaves Technologies SAS nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +ifndef GAP_SDK_HOME + $(error Please run 'source sourceme.sh' in gap_sdk first) +endif # GAP_SDK_HOME + +CD = cd +CP = cp -rf +RM = rm -rf +MKDIR = mkdir -p +MAKE = make + +BUILD_DIR ?= $(CURDIR)/build +export BUILD_DIR + +INSTALL_BIN_DIR = $(INSTALL_DIR)/bin + +TIMEOUT ?= 300 + +SHELL=bash +ECHO_GREEN = $(shell tput setaf 2) +ECHO_BOLD = $(shell tput bold) +ECHO_CLEAR = $(shell tput sgr0) + +# Keep this rule first +help: + @echo "=================== ${ECHO_BOLD}${ECHO_GREEN}GAP SDK${ECHO_CLEAR} ===================" + @echo "" + @echo "Main targets:" + @echo " - ${ECHO_BOLD}clean${ECHO_CLEAR} : clean the SDK" + @echo " - ${ECHO_BOLD}all${ECHO_CLEAR} : build the whole SDK with all tools" + @echo " - ${ECHO_BOLD}minimal${ECHO_CLEAR} : get latest sources for all rtos and libs" + @echo " - ${ECHO_BOLD}gvsoc${ECHO_CLEAR} : build GVSOC simulation platform" + @echo " - ${ECHO_BOLD}openocd.all${ECHO_CLEAR} : build OpenOCD tools to run simulation on boards" + @echo "" + @echo "Note: to speed up compilation, you can use the \"-j\" option with most rules" + +gap8.all: minimal gvsoc autotiler nntool littlefs.all openocd.all + +clean: littlefs.clean + $(RM) $(TARGET_INSTALL_DIR) + $(RM) $(INSTALL_DIR) + $(RM) $(BUILD_DIR) + if [ -e $(GAP_SDK_HOME)/tools/autotiler_v3/Makefile ]; then $(MAKE) -C $(GAP_SDK_HOME)/tools/autotiler_v3 clean; fi + $(MAKE) -C $(GAP_SDK_HOME)/tools/nntool clean + if [ -e tools/profiler ]; then $(MAKE) -C $(GAP_SDK_HOME)/tools/profiler clean; fi + +minimal: pulp-os freertos gapy.all openocd_tools.all plptest.all + +# Compat +sdk: all +mini_checkout: pmsis-bsp.checkout pmsis-api.checkout examples.checkout +freertos: freertos.all mini_checkout + + +$(INSTALL_BIN_DIR) $(TARGET_INSTALL_DIR) $(INSTALL_DIR): + $(MKDIR) -p $@ + +install_others: | $(INSTALL_BIN_DIR) + $(CP) $(GAP_SDK_HOME)/utils/bin/* $(INSTALL_DIR)/bin + $(CP) $(GAP_SDK_HOME)/tools/ld $(INSTALL_DIR) + $(CP) $(GAP_SDK_HOME)/utils/rules $(INSTALL_DIR) + + +# Sources +pmsis-bsp.checkout: + git submodule update --init rtos/pmsis/pmsis_bsp + +pmsis-api.checkout: + git submodule update --init rtos/pmsis/pmsis_api + +# This rules is to compile pmsis-bsp for pulp os on gap8, wihtout having to recompile the whole sdk +pmsis-bsp.build: + $(MAKE) -C $(GAP_SDK_HOME)/rtos/pmsis/pmsis_bsp all + +gap_configs.checkout: + git submodule update --init utils/gap_configs + +# PulpOS_v1 +pulprt.all: pulprt.checkout pulprt.build + +pulprt.checkout: + cd gap8 && git submodule update --init rtos/pulp/pulp-os + +pulprt.build: + $(MAKE) -C $(GAP_SDK_HOME)/gap8/rtos/pulp build.pulprt + +pulp-os: $(TARGET_INSTALL_DIR) install_others pulprt.checkout + $(MAKE) -C $(GAP_SDK_HOME)/rtos/pmsis/pmsis_api -f tools/export.mk build + $(MAKE) -C $(GAP_SDK_HOME)/gap8/rtos/pulp build + $(MAKE) -C $(GAP_SDK_HOME)/rtos/pmsis/pmsis_bsp all + $(MAKE) -C $(GAP_SDK_HOME)/libs/gap_lib all + +# PulpOS_v2 +pulpos.all: pulpos.checkout + +gap_lib.checkout: + cd $(GAP_SDK_HOME) && git submodule update --init libs/gap_lib + +pulpos.checkout: gap_lib.checkout + cd gap8 && git submodule update --init rtos/pulp/hal_pulp rtos/pulp/archi_pulp + +freertos.all: freertos.checkout + +freertos.checkout: + git submodule update --recursive --init rtos/freeRTOS + +use_old_gvsoc=0 + +ifeq '$(TARGET_CHIP_FAMILY)' 'GAP8' +use_old_gvsoc=1 +endif + +ifeq '$(TARGET_CHIP)' 'GAP9' +use_old_gvsoc=1 +endif + +# GVSOC +ifeq '$(use_old_gvsoc)' '1' +gvsoc: pulp-os pulpos.all gvsoc.checkout + cd $(GAP_SDK_HOME) && ./gvsoc/gvsoc-build + $(MAKE) -f gap8/gap8.mk gvsoc.build +else +gvsoc: pulp-os + $(MAKE) -f gap8/gap8.mk gvsoc.build +endif + +gvsoc.all: gvsoc.checkout gvsoc.build + +gvsoc.checkout: + git submodule update --init --recursive gvsoc + +ifeq '$(use_old_gvsoc)' '1' +gvsoc.build: gvsoc.checkout gap_configs.checkout + cd $(GAP_SDK_HOME) && $(MAKE) -C gvsoc/gvsoc build BUILD_DIR=$(BUILD_DIR)/gvsoc INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/install + cd $(GAP_SDK_HOME) && $(MAKE) -C gvsoc/gvsoc_gap build BUILD_DIR=$(BUILD_DIR)/gvsoc_gap INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/install +else +gvsoc.build: + cmake -S gvsoc -B build/gvsoc -DCMAKE_BUILD_TYPE=RelWithDebInfo -DTARGET_CHIP=GAP9_V2 && cmake --build build/gvsoc -j8 && cmake --install build/gvsoc --prefix=$(GAP_SDK_HOME)/install/workstation +endif + +gvsoc.clean: + cd $(GAP_SDK_HOME) && $(MAKE) -C gvsoc/gvsoc clean BUILD_DIR=$(BUILD_DIR)/gvsoc INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/install + + +# Tools + +openocd.all: openocd.build + +openocd.checkout: + if [ ! -e utils/gap8-openocd ]; then \ + git clone --recursive https://github.com/GreenWaves-Technologies/gap8_openocd.git utils/gap8-openocd; \ + cd utils/gap8-openocd; \ + fi + +openocd.build: openocd.checkout + cd utils/gap8-openocd && ./bootstrap + cd utils/gap8-openocd && ./configure --prefix=$(INSTALL_DIR)/gap8-openocd --program-prefix=gap8- + cd utils/gap8-openocd && make -j install + mkdir -p $(INSTALL_DIR)/gap8-openocd/share/openocd/scripts/tcl + cd utils/openocd_tools && cp -r tcl/* $(INSTALL_DIR)/gap8-openocd/share/openocd/scripts/tcl + cd utils/openocd_tools && mkdir -p $(INSTALL_DIR)/gap8-openocd/share/openocd/gap_bins && cp -r gap_bins/* $(INSTALL_DIR)/gap8-openocd/share/openocd/gap_bins + +openocd_tools.all: openocd_tools.build + +openocd_tools.build: + mkdir -p $(INSTALL_DIR)/gap8-openocd/share/openocd/scripts/tcl + cd utils/openocd_tools && cp -r tcl/* $(INSTALL_DIR)/gap8-openocd/share/openocd/scripts/tcl + cd utils/openocd_tools && mkdir -p $(INSTALL_DIR)/gap8-openocd/share/openocd/gap_bins && cp -r gap_bins/* $(INSTALL_DIR)/gap8-openocd/share/openocd/gap_bins + +profiler: + $(MAKE) -C tools/profiler all + mkdir -p $(INSTALL_DIR)/bin + cp tools/profiler/gui/build/profiler $(INSTALL_DIR)/bin + +nntool: + $(MAKE) -C $(GAP_SDK_HOME)/tools/nntool all + +sfu.clean: +ifneq ("$(wildcard tools/sfu_gen/Makefile)","") + cd tools/sfu_gen && make clean +endif + +sfu.build: +ifneq ("$(wildcard tools/sfu_gen/Makefile)","") + cd tools/sfu_gen && make lib all install #INSTALL_DIR=$(CURDIR)/tools/sfu_gen/install +endif + + +# Utils +gapy.all: gapy.checkout + +gapy.checkout: + git submodule update --init utils/gapy + +plptest.all: plptest.checkout plptest.build + +plptest.checkout: + git submodule update --init utils/plptest + +plptest.build: + if [ -e utils/plptest ]; then cd utils/plptest && make build; fi + + +# Littlefs +LFS_DIR = $(GAP_SDK_HOME)/utils/littlefs +LFS_BUILD_DIR = $(LFS_DIR)/build +LFS_MAKEFILE = $(LFS_BUILD_DIR)/Makefile + +#include $(LFS_MAKEFILE) + +littlefs.build: $(LFS_MAKEFILE) + make -C $(LFS_BUILD_DIR) all install + +$(LFS_MAKEFILE): $(LFS_DIR)/CMakeLists.txt | $(LFS_BUILD_DIR) + cd $(LFS_BUILD_DIR) && cmake -DCMAKE_INSTALL_PREFIX:PATH=$(INSTALL_DIR) $(LFS_DIR) + +$(LFS_BUILD_DIR): + $(MKDIR) -p $@ + +littlefs.checkout: + git submodule update --init utils/littlefs + +littlefs.all: littlefs.checkout littlefs.build + +littlefs.clean: + rm -rf $(LFS_BUILD_DIR) + + + +# Libs +autotiler: + if [ -e $(GAP_SDK_HOME)/tools/autotiler_v3/Makefile ]; then $(MAKE) -C $(GAP_SDK_HOME)/tools/autotiler_v3 all; fi + +audio-framework.checkout: + git submodule update --init tools/audio-framework + +audio-framework.build: + mkdir -p $(BUILD_DIR)/audio-framework + cd $(BUILD_DIR)/audio-framework && cmake $(GAP_SDK_HOME)/tools/audio-framework \ + -DCMAKE_INSTALL_PREFIX=$(GAP_SDK_HOME)/install/workstation \ + -DAF_COMPONENTS_PATH=$(GAP_SDK_HOME)/tools/audio-framework/components \ + -DAF_LIBRARY_PATH=$(GAP_SDK_HOME)/install/workstation/lib + cd $(BUILD_DIR)/audio-framework && make all install + +audio-framework.clean: + rm -rf $(BUILD_DIR)/audio-framework + +audio-framework: audio-framework.checkout audio-framework.build + +# Examples, tests +examples.checkout: + git submodule update --recursive --init examples + +tests.checkout: + git submodule update --init tests/pmsis_tests tests/bsp_tests tests/sfu_tests tests/pmsis_bench + +test: + plptest --max-timeout=$(TIMEOUT) --bench-csv-file=results.csv + plptest --max-timeout=$(TIMEOUT) --bench-csv-file=results.csv score + + +.PHONY: all clean install_others pulp-os gvsoc minimal diff --git a/gvsoc/dpi-models/LICENSE b/gap8/gvsoc/dpi-models/LICENSE similarity index 100% rename from gvsoc/dpi-models/LICENSE rename to gap8/gvsoc/dpi-models/LICENSE diff --git a/gvsoc/dpi-models/Makefile b/gap8/gvsoc/dpi-models/Makefile similarity index 100% rename from gvsoc/dpi-models/Makefile rename to gap8/gvsoc/dpi-models/Makefile diff --git a/gvsoc/dpi-models/dpi_rules.mk b/gap8/gvsoc/dpi-models/dpi_rules.mk similarity index 100% rename from gvsoc/dpi-models/dpi_rules.mk rename to gap8/gvsoc/dpi-models/dpi_rules.mk diff --git a/gvsoc/dpi-models/ext/nosv/svdpi.h b/gap8/gvsoc/dpi-models/ext/nosv/svdpi.h similarity index 100% rename from gvsoc/dpi-models/ext/nosv/svdpi.h rename to gap8/gvsoc/dpi-models/ext/nosv/svdpi.h diff --git a/gvsoc/dpi-models/ext/sv/include/questa/dpiheader.h b/gap8/gvsoc/dpi-models/ext/sv/include/questa/dpiheader.h similarity index 100% rename from gvsoc/dpi-models/ext/sv/include/questa/dpiheader.h rename to gap8/gvsoc/dpi-models/ext/sv/include/questa/dpiheader.h diff --git a/gvsoc/dpi-models/include/common/telnet_proxy.hpp b/gap8/gvsoc/dpi-models/include/common/telnet_proxy.hpp similarity index 100% rename from gvsoc/dpi-models/include/common/telnet_proxy.hpp rename to gap8/gvsoc/dpi-models/include/common/telnet_proxy.hpp diff --git a/gvsoc/dpi-models/include/dpi/models.hpp b/gap8/gvsoc/dpi-models/include/dpi/models.hpp similarity index 100% rename from gvsoc/dpi-models/include/dpi/models.hpp rename to gap8/gvsoc/dpi-models/include/dpi/models.hpp diff --git a/gvsoc/dpi-models/include/dpi/tb_driver.h b/gap8/gvsoc/dpi-models/include/dpi/tb_driver.h similarity index 100% rename from gvsoc/dpi-models/include/dpi/tb_driver.h rename to gap8/gvsoc/dpi-models/include/dpi/tb_driver.h diff --git a/gvsoc/dpi-models/models/Makefile b/gap8/gvsoc/dpi-models/models/Makefile similarity index 100% rename from gvsoc/dpi-models/models/Makefile rename to gap8/gvsoc/dpi-models/models/Makefile diff --git a/gvsoc/dpi-models/models/camera/Makefile b/gap8/gvsoc/dpi-models/models/camera/Makefile similarity index 100% rename from gvsoc/dpi-models/models/camera/Makefile rename to gap8/gvsoc/dpi-models/models/camera/Makefile diff --git a/gvsoc/dpi-models/models/camera/camera.cpp b/gap8/gvsoc/dpi-models/models/camera/camera.cpp similarity index 100% rename from gvsoc/dpi-models/models/camera/camera.cpp rename to gap8/gvsoc/dpi-models/models/camera/camera.cpp diff --git a/gvsoc/dpi-models/models/eeprom/Makefile b/gap8/gvsoc/dpi-models/models/eeprom/Makefile similarity index 100% rename from gvsoc/dpi-models/models/eeprom/Makefile rename to gap8/gvsoc/dpi-models/models/eeprom/Makefile diff --git a/gvsoc/dpi-models/models/eeprom/eeprom.cpp b/gap8/gvsoc/dpi-models/models/eeprom/eeprom.cpp similarity index 100% rename from gvsoc/dpi-models/models/eeprom/eeprom.cpp rename to gap8/gvsoc/dpi-models/models/eeprom/eeprom.cpp diff --git a/gvsoc/dpi-models/models/flash/spiflash/Makefile b/gap8/gvsoc/dpi-models/models/flash/spiflash/Makefile similarity index 100% rename from gvsoc/dpi-models/models/flash/spiflash/Makefile rename to gap8/gvsoc/dpi-models/models/flash/spiflash/Makefile diff --git a/gvsoc/dpi-models/models/flash/spiflash/spiflash.cpp b/gap8/gvsoc/dpi-models/models/flash/spiflash/spiflash.cpp similarity index 100% rename from gvsoc/dpi-models/models/flash/spiflash/spiflash.cpp rename to gap8/gvsoc/dpi-models/models/flash/spiflash/spiflash.cpp diff --git a/gvsoc/dpi-models/models/jtag/proxy/Makefile b/gap8/gvsoc/dpi-models/models/jtag/proxy/Makefile similarity index 100% rename from gvsoc/dpi-models/models/jtag/proxy/Makefile rename to gap8/gvsoc/dpi-models/models/jtag/proxy/Makefile diff --git a/gvsoc/dpi-models/models/jtag/proxy/proxy.cpp b/gap8/gvsoc/dpi-models/models/jtag/proxy/proxy.cpp similarity index 100% rename from gvsoc/dpi-models/models/jtag/proxy/proxy.cpp rename to gap8/gvsoc/dpi-models/models/jtag/proxy/proxy.cpp diff --git a/gvsoc/dpi-models/models/lcd/Makefile b/gap8/gvsoc/dpi-models/models/lcd/Makefile similarity index 100% rename from gvsoc/dpi-models/models/lcd/Makefile rename to gap8/gvsoc/dpi-models/models/lcd/Makefile diff --git a/gvsoc/dpi-models/models/lcd/ili9341.cpp b/gap8/gvsoc/dpi-models/models/lcd/ili9341.cpp similarity index 100% rename from gvsoc/dpi-models/models/lcd/ili9341.cpp rename to gap8/gvsoc/dpi-models/models/lcd/ili9341.cpp diff --git a/gvsoc/dpi-models/models/microphone/Makefile b/gap8/gvsoc/dpi-models/models/microphone/Makefile similarity index 100% rename from gvsoc/dpi-models/models/microphone/Makefile rename to gap8/gvsoc/dpi-models/models/microphone/Makefile diff --git a/gvsoc/dpi-models/models/microphone/i2s_microphone.cpp b/gap8/gvsoc/dpi-models/models/microphone/i2s_microphone.cpp similarity index 100% rename from gvsoc/dpi-models/models/microphone/i2s_microphone.cpp rename to gap8/gvsoc/dpi-models/models/microphone/i2s_microphone.cpp diff --git a/gvsoc/dpi-models/models/ram/spiram/Makefile b/gap8/gvsoc/dpi-models/models/ram/spiram/Makefile similarity index 100% rename from gvsoc/dpi-models/models/ram/spiram/Makefile rename to gap8/gvsoc/dpi-models/models/ram/spiram/Makefile diff --git a/gvsoc/dpi-models/models/ram/spiram/spiram.cpp b/gap8/gvsoc/dpi-models/models/ram/spiram/spiram.cpp similarity index 100% rename from gvsoc/dpi-models/models/ram/spiram/spiram.cpp rename to gap8/gvsoc/dpi-models/models/ram/spiram/spiram.cpp diff --git a/gvsoc/dpi-models/models/test/spim_verif/Makefile b/gap8/gvsoc/dpi-models/models/test/spim_verif/Makefile similarity index 100% rename from gvsoc/dpi-models/models/test/spim_verif/Makefile rename to gap8/gvsoc/dpi-models/models/test/spim_verif/Makefile diff --git a/gvsoc/dpi-models/models/test/spim_verif/spim_verif.cpp b/gap8/gvsoc/dpi-models/models/test/spim_verif/spim_verif.cpp similarity index 100% rename from gvsoc/dpi-models/models/test/spim_verif/spim_verif.cpp rename to gap8/gvsoc/dpi-models/models/test/spim_verif/spim_verif.cpp diff --git a/gvsoc/dpi-models/models/uart/uart/Makefile b/gap8/gvsoc/dpi-models/models/uart/uart/Makefile similarity index 100% rename from gvsoc/dpi-models/models/uart/uart/Makefile rename to gap8/gvsoc/dpi-models/models/uart/uart/Makefile diff --git a/gvsoc/dpi-models/models/uart/uart/uart.cpp b/gap8/gvsoc/dpi-models/models/uart/uart/uart.cpp similarity index 100% rename from gvsoc/dpi-models/models/uart/uart/uart.cpp rename to gap8/gvsoc/dpi-models/models/uart/uart/uart.cpp diff --git a/gvsoc/dpi-models/models/wifi/Makefile b/gap8/gvsoc/dpi-models/models/wifi/Makefile similarity index 100% rename from gvsoc/dpi-models/models/wifi/Makefile rename to gap8/gvsoc/dpi-models/models/wifi/Makefile diff --git a/gvsoc/dpi-models/models/wifi/nina_w10.cpp b/gap8/gvsoc/dpi-models/models/wifi/nina_w10.cpp similarity index 100% rename from gvsoc/dpi-models/models/wifi/nina_w10.cpp rename to gap8/gvsoc/dpi-models/models/wifi/nina_w10.cpp diff --git a/gvsoc/dpi-models/src/cpi.cpp b/gap8/gvsoc/dpi-models/src/cpi.cpp similarity index 100% rename from gvsoc/dpi-models/src/cpi.cpp rename to gap8/gvsoc/dpi-models/src/cpi.cpp diff --git a/gvsoc/dpi-models/src/ctrl.cpp b/gap8/gvsoc/dpi-models/src/ctrl.cpp similarity index 100% rename from gvsoc/dpi-models/src/ctrl.cpp rename to gap8/gvsoc/dpi-models/src/ctrl.cpp diff --git a/gvsoc/dpi-models/src/dpi.cpp b/gap8/gvsoc/dpi-models/src/dpi.cpp similarity index 100% rename from gvsoc/dpi-models/src/dpi.cpp rename to gap8/gvsoc/dpi-models/src/dpi.cpp diff --git a/gvsoc/dpi-models/src/gpio.cpp b/gap8/gvsoc/dpi-models/src/gpio.cpp similarity index 100% rename from gvsoc/dpi-models/src/gpio.cpp rename to gap8/gvsoc/dpi-models/src/gpio.cpp diff --git a/gvsoc/dpi-models/src/i2c.cpp b/gap8/gvsoc/dpi-models/src/i2c.cpp similarity index 100% rename from gvsoc/dpi-models/src/i2c.cpp rename to gap8/gvsoc/dpi-models/src/i2c.cpp diff --git a/gvsoc/dpi-models/src/i2s.cpp b/gap8/gvsoc/dpi-models/src/i2s.cpp similarity index 100% rename from gvsoc/dpi-models/src/i2s.cpp rename to gap8/gvsoc/dpi-models/src/i2s.cpp diff --git a/gvsoc/dpi-models/src/jtag.cpp b/gap8/gvsoc/dpi-models/src/jtag.cpp similarity index 100% rename from gvsoc/dpi-models/src/jtag.cpp rename to gap8/gvsoc/dpi-models/src/jtag.cpp diff --git a/gvsoc/dpi-models/src/models.cpp b/gap8/gvsoc/dpi-models/src/models.cpp similarity index 100% rename from gvsoc/dpi-models/src/models.cpp rename to gap8/gvsoc/dpi-models/src/models.cpp diff --git a/gvsoc/dpi-models/src/qspim.cpp b/gap8/gvsoc/dpi-models/src/qspim.cpp similarity index 100% rename from gvsoc/dpi-models/src/qspim.cpp rename to gap8/gvsoc/dpi-models/src/qspim.cpp diff --git a/gvsoc/dpi-models/src/telnet_proxy.cpp b/gap8/gvsoc/dpi-models/src/telnet_proxy.cpp similarity index 100% rename from gvsoc/dpi-models/src/telnet_proxy.cpp rename to gap8/gvsoc/dpi-models/src/telnet_proxy.cpp diff --git a/gvsoc/dpi-models/src/uart.cpp b/gap8/gvsoc/dpi-models/src/uart.cpp similarity index 100% rename from gvsoc/dpi-models/src/uart.cpp rename to gap8/gvsoc/dpi-models/src/uart.cpp diff --git a/gap8/rtos/pulp/Makefile b/gap8/rtos/pulp/Makefile new file mode 100644 index 000000000..bdd84e7bd --- /dev/null +++ b/gap8/rtos/pulp/Makefile @@ -0,0 +1,52 @@ +DEFAULT_EXCLUDES=--exclude=".git*" --exclude="BUILD*" --exclude="build*" --exclude="_build*" --exclude="__pycache__/" --exclude=junit-reports + +pulp_configs: + $(MAKE) -C $(GAP_SDK_HOME)/utils/gap_configs all_scons INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(TARGET_INSTALL_DIR) + +do.archi: pulp_configs + if [ -e archi_pulp ]; then \ + cd archi_pulp && \ + export INSTALL_DIR=$(GAP_SDK_HOME)/gap8/rtos/pulp/archi/workstation && \ + export TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/gap8/rtos/pulp/archi/target && \ + make build; \ + fi + +build.archi: do.archi + cd $(GAP_SDK_HOME)/gap8/rtos/pulp/archi/target && rsync -avR * $(TARGET_INSTALL_DIR) + cd $(GAP_SDK_HOME)/gap8/rtos/pulp/archi/workstation && rsync -avR * $(INSTALL_DIR) + +artifact.archi: do.archi + mkdir -p $(ARTIFACT_PATH)/gap8/rtos/pulp/archi + rsync -avR $(DEFAULT_EXCLUDES) archi $(ARTIFACT_PATH)/rtos/pulp + +do.hal: pulp_configs + if [ -e hal_pulp ]; then \ + cd hal_pulp && \ + export TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/gap8/rtos/pulp/hal/target && \ + make build; \ + fi + +build.hal: do.hal + cd $(GAP_SDK_HOME)/gap8/rtos/pulp/hal/target && rsync -avR * $(TARGET_INSTALL_DIR) + +build.gap_archi: +ifeq '$(TARGET_CHIP)' 'GAP9_V2' + cd $(GAP_SDK_HOME)/rtos/pulp/gap_archi && make build +endif + +artifact.hal: do.hal + mkdir -p $(ARTIFACT_PATH)/gap8/rtos/pulp/hal + rsync -avR $(DEFAULT_EXCLUDES) hal $(ARTIFACT_PATH)/rtos/pulp + +artifact.pulpos: + mkdir -p $(ARTIFACT_PATH)/rtos/pulp/pulp-os + rsync -avR $(DEFAULT_EXCLUDES) pulp-os $(ARTIFACT_PATH)/rtos/pulp + +artifact: artifact.archi artifact.hal artifact.pulpos + +build.pulprt: build.archi +ifneq '$(TARGET_CHIP)' 'GAP9_V2' + $(MAKE) -C pulp-os -f gap_sdk.mk $(TARGET_NAME) +endif + +build: build.archi build.hal build.gap_archi build.pulprt diff --git a/rtos/pulp/archi_pulp/.gitignore b/gap8/rtos/pulp/archi_pulp/.gitignore similarity index 100% rename from rtos/pulp/archi_pulp/.gitignore rename to gap8/rtos/pulp/archi_pulp/.gitignore diff --git a/rtos/pulp/archi_pulp/LICENSE b/gap8/rtos/pulp/archi_pulp/LICENSE similarity index 100% rename from rtos/pulp/archi_pulp/LICENSE rename to gap8/rtos/pulp/archi_pulp/LICENSE diff --git a/rtos/pulp/archi_pulp/Makefile b/gap8/rtos/pulp/archi_pulp/Makefile similarity index 100% rename from rtos/pulp/archi_pulp/Makefile rename to gap8/rtos/pulp/archi_pulp/Makefile diff --git a/rtos/pulp/archi_pulp/SConstruct b/gap8/rtos/pulp/archi_pulp/SConstruct similarity index 100% rename from rtos/pulp/archi_pulp/SConstruct rename to gap8/rtos/pulp/archi_pulp/SConstruct diff --git a/rtos/pulp/archi_pulp/arch/pulp/APB_SOC_CTRL_reference.md b/gap8/rtos/pulp/archi_pulp/arch/pulp/APB_SOC_CTRL_reference.md similarity index 100% rename from rtos/pulp/archi_pulp/arch/pulp/APB_SOC_CTRL_reference.md rename to gap8/rtos/pulp/archi_pulp/arch/pulp/APB_SOC_CTRL_reference.md diff --git a/rtos/pulp/archi_pulp/arch/pulp/APB_SOC_CTRL_reference.md.html b/gap8/rtos/pulp/archi_pulp/arch/pulp/APB_SOC_CTRL_reference.md.html similarity index 100% rename from rtos/pulp/archi_pulp/arch/pulp/APB_SOC_CTRL_reference.md.html rename to gap8/rtos/pulp/archi_pulp/arch/pulp/APB_SOC_CTRL_reference.md.html diff --git a/rtos/pulp/archi_pulp/arch/pulp/CLUSTER_CRTL_UNIT_reference.md b/gap8/rtos/pulp/archi_pulp/arch/pulp/CLUSTER_CRTL_UNIT_reference.md similarity index 100% rename from rtos/pulp/archi_pulp/arch/pulp/CLUSTER_CRTL_UNIT_reference.md rename to gap8/rtos/pulp/archi_pulp/arch/pulp/CLUSTER_CRTL_UNIT_reference.md diff --git a/rtos/pulp/archi_pulp/arch/pulp/CLUSTER_ICACHE_CTRL_reference.md b/gap8/rtos/pulp/archi_pulp/arch/pulp/CLUSTER_ICACHE_CTRL_reference.md similarity index 100% rename from rtos/pulp/archi_pulp/arch/pulp/CLUSTER_ICACHE_CTRL_reference.md rename to gap8/rtos/pulp/archi_pulp/arch/pulp/CLUSTER_ICACHE_CTRL_reference.md diff --git a/rtos/pulp/archi_pulp/doc/APB_GPIO_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/APB_GPIO_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/APB_GPIO_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/APB_GPIO_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/CL_EVENT_UNIT_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/CL_EVENT_UNIT_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/CL_EVENT_UNIT_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/CL_EVENT_UNIT_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/FC_EVENT_UNIT_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/FC_EVENT_UNIT_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/FC_EVENT_UNIT_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/FC_EVENT_UNIT_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/HYPER_V2_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/HYPER_V2_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/HYPER_V2_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/HYPER_V2_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/PULPISSIMO_APB_SOC_CTRL_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/PULPISSIMO_APB_SOC_CTRL_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/PULPISSIMO_APB_SOC_CTRL_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/PULPISSIMO_APB_SOC_CTRL_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/RTC_UNIT_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/RTC_UNIT_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/RTC_UNIT_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/RTC_UNIT_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/TIMER_UNIT_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/TIMER_UNIT_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/TIMER_UNIT_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/TIMER_UNIT_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/WOLFE_APB_SOC_CTRL_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/WOLFE_APB_SOC_CTRL_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/WOLFE_APB_SOC_CTRL_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/WOLFE_APB_SOC_CTRL_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/gap/APB_SOC_CTRL_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/gap/APB_SOC_CTRL_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/gap/APB_SOC_CTRL_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/gap/APB_SOC_CTRL_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/gpio/APB_GPIO_V3_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/gpio/APB_GPIO_V3_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/gpio/APB_GPIO_V3_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/gpio/APB_GPIO_V3_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/hwce/HWCE_v4_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/hwce/HWCE_v4_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/hwce/HWCE_v4_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/hwce/HWCE_v4_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/hwce/HWCE_v5_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/hwce/HWCE_v5_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/hwce/HWCE_v5_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/hwce/HWCE_v5_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/mchan/CL_DMA_v7_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/mchan/CL_DMA_v7_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/mchan/CL_DMA_v7_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/mchan/CL_DMA_v7_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/pwm/pwm_v1.xlsx b/gap8/rtos/pulp/archi_pulp/doc/pwm/pwm_v1.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/pwm/pwm_v1.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/pwm/pwm_v1.xlsx diff --git a/rtos/pulp/archi_pulp/doc/udma/CAM_CPI_V1_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/udma/CAM_CPI_V1_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/udma/CAM_CPI_V1_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/udma/CAM_CPI_V1_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/udma/MEMCPY_v1_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/udma/MEMCPY_v1_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/udma/MEMCPY_v1_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/udma/MEMCPY_v1_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/udma/MRAM_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/udma/MRAM_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/udma/MRAM_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/udma/MRAM_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V1_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V1_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V1_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V1_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V2_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V2_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V2_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V2_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V3_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V3_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V3_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/udma/i2s/I2S_V3_reference.xlsx diff --git a/rtos/pulp/archi_pulp/doc/vega/APB_SOC_CTRL_reference.xlsx b/gap8/rtos/pulp/archi_pulp/doc/vega/APB_SOC_CTRL_reference.xlsx similarity index 100% rename from rtos/pulp/archi_pulp/doc/vega/APB_SOC_CTRL_reference.xlsx rename to gap8/rtos/pulp/archi_pulp/doc/vega/APB_SOC_CTRL_reference.xlsx diff --git a/rtos/pulp/archi_pulp/include/archi/chips/arnold/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/arnold/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/arnold/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/arnold/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/arnold/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/arnold/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/arnold/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/arnold/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/arnold/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/arnold/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/arnold/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/arnold/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/arnold/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/arnold/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/arnold/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/arnold/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/bigpulp/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/bigpulp/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/bigpulp/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/bigpulp/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/bigpulp/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/devchip/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/devchip/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/devchip/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/devchip/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/devchip/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/devchip/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/devchip/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/devchip/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/devchip/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/devchip/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/devchip/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/devchip/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/devchip/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/devchip/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/devchip/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/devchip/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/fulmine/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/fulmine/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/fulmine/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/fulmine/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/fulmine/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/fulmine/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/fulmine/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/fulmine/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/fulmine/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/fulmine/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/fulmine/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/fulmine/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/fulmine/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/fulmine/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/fulmine/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/fulmine/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/gap/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/gap/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/gap/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/gap/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/gap/padframe.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/padframe.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/gap/padframe.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/padframe.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/gap/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/gap/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/gap/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/gap/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/gap8 b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap8 similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/gap8 rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap8 diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vega/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vega/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vega/apb_soc_ctrl.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/apb_soc_ctrl.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vega/apb_soc_ctrl.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/apb_soc_ctrl.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vega/memory_map.h.in b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/memory_map.h.in similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vega/memory_map.h.in rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/memory_map.h.in diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vega/pmu.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/pmu.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vega/pmu.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/pmu.h diff --git a/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/properties.h new file mode 100644 index 000000000..9ff3bb27c --- /dev/null +++ b/gap8/rtos/pulp/archi_pulp/include/archi/chips/gap9/properties.h @@ -0,0 +1,347 @@ +/* + * Copyright (C) 2018 ETH Zurich, University of Bologna and GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef __ARCHI_CHIPS_VEGA_PROPERTIES_H__ +#define __ARCHI_CHIPS_VEGA_PROPERTIES_H__ + +/* + * MEMORIES + */ + +#define ARCHI_HAS_L2 1 +#define ARCHI_HAS_L1 1 + +#define ARCHI_L1_SIZE 0x20000 + +#define ARCHI_MEMORY_POWER 1 + +/* + * MEMORY ALIAS + */ + +#define ARCHI_HAS_L1_ALIAS 1 +#define ARCHI_HAS_L2_ALIAS 1 + + + +/* + * IP VERSIONS + */ + +#define FLL_VERSION 1 +#define GPIO_VERSION 2 +#define UDMA_VERSION 3 +#define PERIPH_VERSION 3 +#define APB_SOC_VERSION 3 +#define ADV_TIMER_VERSION 1 +#define SOC_EU_VERSION 2 +#define PMU_VERSION 3 +#define FC_ICACHE_CTRL_VERSION 2 +#define ITC_VERSION 1 +#define I3C_VERSION 1 +#define TIMER_VERSION 2 +#define DPHY_VERSION 1 +#define CSI2_VERSION 1 +#define MPU_VERSION 1 +#define EFUSE_VERSION 1 +#define DEBUG_VERSION 1 +#define STDOUT_VERSION 2 +#define QUIDDIKEY_VERSION 1 +#define ROM_VERSION 2 +#define RTC_VERSION 1 + +#define EU_VERSION 3 +#define RISCV_VERSION 4 +#define MCHAN_VERSION 7 +#define HWCE_VERSION 5 + +#define CL_CTRL_VERSION 2 +#define PADS_VERSION 2 + + +/* + * CLUSTER + */ + +#define ARCHI_HAS_CLUSTER 1 +#define ARCHI_CL_CID 0 + +// TAS = Test&Set +#define ARCHI_L1_TAS_BIT 20 +#define ARCHI_HAS_CC 1 +#define ARCHI_CC_CORE_ID 8 +#define ARCHI_CLUSTER_NB_PE 8 +#define ARCHI_HAS_CLUSTER_CLK_GATE 1 + + +/* + * CLUSTER EVENT UNIT + */ + +//#define ARCHI_HAS_NO_BARRIER 1 +//#define ARCHI_HAS_NO_DISPATCH 1 +//#define ARCHI_HAS_NO_MUTEX 1 + + +/* + * HWS + */ + +#define ARCHI_EU_NB_HW_MUTEX 1 + + + +/* + * FC + */ + +#define ARCHI_FC_CID 31 +#define ARCHI_HAS_FC_ITC 1 +#define ARCHI_FC_HAS_ICACHE 1 + + + +/* + * CLOCKS + */ + +#define ARCHI_REF_CLOCK_LOG2 15 +#define ARCHI_REF_CLOCK (1<> 4) +#define APB_SOC_PADFUN_PAD(padfun) ((padfun)*16) +#define APB_SOC_PADFUN_SIZE 2 +#define ARCHI_APB_SOC_PADFUN_NB 0 // FIXME put it to the right value once the padframe is specified +#define APB_SOC_PADFUN_BIT(pad) (((pad) & 0xF) << 1) + +#define APB_SOC_PADCFG_OFFSET(g) (APB_SOC_PADCFG0_OFFSET+(g)*4) //sets config for pin g*4+0(bits [7:0]) to pin g*4+3(bits [31:24]) +#define APB_SOC_PADCFG_NO(pad) ((pad) >> 2) +#define APB_SOC_PADCFG_PAD(padfun) ((padfun)*4) +#define APB_SOC_PADCFG_SIZE 8 +#define APB_SOC_PADCFG_BIT(pad) (((pad) & 0x3) << 3) + +#define APB_SOC_PWRCMD_OFFSET 0x60 //change power mode(not funtional yet) +#define APB_SOC_PWRCFG_OFFSET 0x64 //configures power modes(not funtional yet) +#define APB_SOC_PWRREG_OFFSET 0x68 //32 bit GP register used by power pngmt routines to see if is hard or cold reboot +#define APB_SOC_BUSY_OFFSET 0x6C //not used at the moment +#define APB_SOC_MMARGIN_OFFSET 0x70 //memory margin pins(not used at the moment) +#define APB_SOC_JTAG_REG 0x74 // R/W register for interaction with the the chip environment +#define APB_SOC_L2_SLEEP_OFFSET 0x78 //memory margin pins(not used at the moment) +#define APB_SOC_NOTUSED3_OFFSET 0x7C //not used at the moment +#define APB_SOC_CLKDIV0_OFFSET 0x80 //soc clock divider(to be removed) +#define APB_SOC_CLKDIV1_OFFSET 0x84 //cluster clock divider(to be removed) +#define APB_SOC_CLKDIV2_OFFSET 0x88 //not used at the moment +#define APB_SOC_CLKDIV3_OFFSET 0x8C //not used at the moment +#define APB_SOC_CLKDIV4_OFFSET 0x90 //not used at the moment +#define APB_SOC_NOTUSED4_OFFSET 0x94 //not used at the moment +#define APB_SOC_NOTUSED5_OFFSET 0x98 //not used at the moment +#define APB_SOC_NOTUSED6_OFFSET 0x9C //not used at the moment +#define APB_SOC_PADS_CONFIG 0xC4 + +#define APB_SOC_SLEEP_CONTROL 0x104 + +#define APB_SOC_PADS_CONFIG_BOOTSEL_BIT 0 + +#define APB_SOC_JTAG_REG_EXT_BIT 8 +#define APB_SOC_JTAG_REG_EXT_WIDTH 8 + +#define APB_SOC_JTAG_REG_LOC_BIT 0 +#define APB_SOC_JTAG_REG_LOC_WIDTH 8 + +#define APB_SOC_INFO_CORES_OFFSET (APB_SOC_INFO_OFFSET + 2) +#define APB_SOC_INFO_CLUSTERS_OFFSET (APB_SOC_INFO_OFFSET) + +#define APB_SOC_STATUS_EOC_BIT 31 +#define APB_SOC_NB_CORE_BIT 16 + + +#define APB_SOC_BYPASS_OFFSET 0x70 + +#define APB_SOC_BYPASS_CLOCK_GATE_BIT 10 +#define APB_SOC_BYPASS_CLUSTER_STATE_BIT 3 +#define APB_SOC_BYPASS_USER0_BIT 14 +#define APB_SOC_BYPASS_USER1_BIT 15 + + +#define APB_SOC_FLL_CTRL_OFFSET 0xD0 +#define APB_SOC_CLKDIV_SOC_OFFSET 0xD4 +#define APB_SOC_CLKDIV_CLUSTER_OFFSET 0xD8 +#define APB_SOC_CLKDIV_PERIPH_OFFSET 0xDC + + +#define APB_SOC_FLL_CTRL_SOC_BIT 0 +#define APB_SOC_FLL_CTRL_CLUSTER_BIT 1 +#define APB_SOC_FLL_CTRL_PERIPH_BIT 2 + + +#define APB_SOC_RTC_OFFSET 0x1D0 + +#endif diff --git a/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/apb_soc_ctrl.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/apb_soc_ctrl.h new file mode 100644 index 000000000..e07d9adc2 --- /dev/null +++ b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/apb_soc_ctrl.h @@ -0,0 +1,1581 @@ + +/* THIS FILE HAS BEEN GENERATED, DO NOT MODIFY IT. + */ + +/* + * Copyright (C) 2018 ETH Zurich, University of Bologna + * and GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __INCLUDE_ARCHI_CHIPS_VEGA_APB_SOC_CTRL_H__ +#define __INCLUDE_ARCHI_CHIPS_VEGA_APB_SOC_CTRL_H__ + +#ifndef LANGUAGE_ASSEMBLY + +#include +#include "archi/utils.h" + +#endif + + + + +// +// REGISTERS +// + +// Core information register +#define APB_SOC_INFO_OFFSET 0x0 + +// Boot address +#define APB_SOC_FC_BOOT_OFFSET 0x4 + +// FC Fetch enable +#define APB_SOC_FC_FETCH_OFFSET 0x8 + +// Isolate cluster register +#define APB_SOC_CL_ISOLATE_OFFSET 0xc + +// Mux config register (pad 0-15) +#define APB_SOC_PADFUN0_OFFSET 0x10 + +// Mux config register (pad 16-31) +#define APB_SOC_PADFUN1_OFFSET 0x14 + +// Mux config register (pad 32-47) +#define APB_SOC_PADFUN2_OFFSET 0x18 + +// Mux config register (pad 48-63) +#define APB_SOC_PADFUN3_OFFSET 0x1c + +// Function register (pad 0 to 3) +#define APB_SOC_PADCFG0_OFFSET 0x20 + +// Function register (pad 4 to 7) +#define APB_SOC_PADCFG1_OFFSET 0x24 + +// Function register (pad 8 to 11) +#define APB_SOC_PADCFG2_OFFSET 0x28 + +// Function register (pad 12 to 15) +#define APB_SOC_PADCFG3_OFFSET 0x2c + +// Function register (pad 16 to 19) +#define APB_SOC_PADCFG4_OFFSET 0x30 + +// Function register (pad 20 to 23) +#define APB_SOC_PADCFG5_OFFSET 0x34 + +// Function register (pad 24 to 27) +#define APB_SOC_PADCFG6_OFFSET 0x38 + +// Function register (pad 28 to 31) +#define APB_SOC_PADCFG7_OFFSET 0x3c + +// Function register (pad 32 to 35) +#define APB_SOC_PADCFG8_OFFSET 0x40 + +// Function register (pad 36 to 39) +#define APB_SOC_PADCFG9_OFFSET 0x44 + +// Function register (pad 40 to 43) +#define APB_SOC_PADCFG10_OFFSET 0x48 + +// Function register (pad 44 to 47) +#define APB_SOC_PADCFG11_OFFSET 0x4c + +// Function register (pad 48 to 51) +#define APB_SOC_PADCFG12_OFFSET 0x50 + +// Function register (pad 52 to 55) +#define APB_SOC_PADCFG13_OFFSET 0x54 + +// Function register (pad 56 to 59) +#define APB_SOC_PADCFG14_OFFSET 0x58 + +// Function register (pad 60 to 63) +#define APB_SOC_PADCFG15_OFFSET 0x5c + +// Cluster busy register +#define APB_SOC_CL_BUSY_OFFSET 0x6c + +// JTAG external register +#define APB_SOC_JTAGREG_OFFSET 0x74 + +// Alias for SAFE_PMU_SLEEPCTRL +#define APB_SOC_SLEEP_CTRL_OFFSET 0x7c + +// Clock divider for I3C +#define APB_SOC_CLK_DIV_I3C_OFFSET 0x80 + +// EOC and chip status register +#define APB_SOC_CORESTATUS_OFFSET 0xa0 + +// EOC and chip status register read mirror +#define APB_SOC_CORESTATUS_RO_OFFSET 0xc0 + +// Value of pad bootsel +#define APB_SOC_BOOTSEL_OFFSET 0xc4 + +// Clear WD timer +#define APB_SOC_WD_CLR_OFFSET 0xc8 + +// Clock selection for SOC,Cluster and Periph +#define APB_SOC_CLK_SEL_OFFSET 0xd0 + +// SOC Clock Divider settings +#define APB_SOC_CLK_DIV_SOC_OFFSET 0xd4 + +// Cluster Clock Divider settings +#define APB_SOC_CLK_DIV_CLU_OFFSET 0xd8 + +// Peripheral Clock Divider Settings +#define APB_SOC_CLK_DIV_PER_OFFSET 0xdc + +// nan +#define APB_SOC_SUPERVISOR_DBG_OFFSET 0xe0 + +// nan +#define APB_SOC_RWM_GRP0_OFFSET 0xe4 + +// nan +#define APB_SOC_RWM_GRP1_OFFSET 0xe8 + +// nan +#define APB_SOC_RWM_GRP2_OFFSET 0xec + +// nan +#define APB_SOC_RWM_GRP3_OFFSET 0xf0 + +// nan +#define APB_SOC_RWM_GRP4_OFFSET 0xf4 + +// nan +#define APB_SOC_RWM_GRP5_OFFSET 0xf8 + +// nan +#define APB_SOC_RWM_GRP6_OFFSET 0xfc + +// Sleep modes configuration register +#define APB_SOC_SAFE_PMU_SLEEPCTRL_OFFSET 0x104 + +// Enables and configures WatchDog Timer +#define APB_SOC_SAFE_WD_OFFSET 0x110 + +// Sleep config register (pad 0-7) +#define APB_SOC_SAFE_SLEEPPADCFG0_OFFSET 0x150 + +// Sleep config register (pad 8-15) +#define APB_SOC_SAFE_SLEEPPADCFG1_OFFSET 0x154 + +// Config timings for NEVA +#define APB_SOC_SAFE_NEVACF_OFFSET 0x164 + +// General purpouse register AO +#define APB_SOC_SAFE_GPREG_OFFSET 0x170 + +// L2 standby configuration +#define APB_SOC_SAFE_L2_BTRIM_STDBY_OFFSET 0x174 + +// FLL2 and FLL3 power control +#define APB_SOC_SAFE_FLL_CTRL_OFFSET 0x178 + +// L1 power control +#define APB_SOC_SAFE_L1_PWR_CTRL_OFFSET 0x17c + +// L2 power control +#define APB_SOC_SAFE_L2_PWR_CTRL_OFFSET 0x180 + +// GPIO power domain pad input isolation register +#define APB_SOC_REG_GPIO_ISO_OFFSET 0x1c0 + +// CAM power domain pad input isolation register +#define APB_SOC_REG_CAM_ISO_OFFSET 0x1c4 + +// LVDS power domain pad input isolation register +#define APB_SOC_REG_LVDS_ISO_OFFSET 0x1c8 + + + +// +// REGISTERS FIELDS +// + +// Number of clusters (access: R) +#define APB_SOC_INFO_NB_CL_BIT 0 +#define APB_SOC_INFO_NB_CL_WIDTH 16 +#define APB_SOC_INFO_NB_CL_MASK 0xffff + +// Number of cores (access: R) +#define APB_SOC_INFO_NB_CORES_BIT 16 +#define APB_SOC_INFO_NB_CORES_WIDTH 16 +#define APB_SOC_INFO_NB_CORES_MASK 0xffff0000 + +// FC Boot Address (access: R/W) +#define APB_SOC_FC_BOOT_ADDR_BIT 0 +#define APB_SOC_FC_BOOT_ADDR_WIDTH 32 +#define APB_SOC_FC_BOOT_ADDR_MASK 0xffffffff + +// FC Fetch Enable (access: R/W) +#define APB_SOC_FC_FETCH_FC_FE_BIT 0 +#define APB_SOC_FC_FETCH_FC_FE_WIDTH 1 +#define APB_SOC_FC_FETCH_FC_FE_MASK 0x1 + +// Isolate cluster. Inhibits AXI transactions from cluster to SoC: - 1'b0: Disable - 1'b1: Enable (access: R/W) +#define APB_SOC_CL_ISOLATE_EN_BIT 0 +#define APB_SOC_CL_ISOLATE_EN_WIDTH 1 +#define APB_SOC_CL_ISOLATE_EN_MASK 0x1 + +// Cluster busy flag (i.e. It's 1 if there is at least 1 active block in the cluster) (access: R) +#define APB_SOC_CL_BUSY_BUSY_BIT 0 +#define APB_SOC_CL_BUSY_BUSY_WIDTH 1 +#define APB_SOC_CL_BUSY_BUSY_MASK 0x1 + +// JTAG internal register used for synchronisation from external debugger (access: R/W) +#define APB_SOC_JTAGREG_INT_SYNC_BIT 0 +#define APB_SOC_JTAGREG_INT_SYNC_WIDTH 1 +#define APB_SOC_JTAGREG_INT_SYNC_MASK 0x1 + +// JTAG internal register used for selecting boot mode configuration from external debugger (access: R/W) +#define APB_SOC_JTAGREG_INT_BT_MD_BIT 1 +#define APB_SOC_JTAGREG_INT_BT_MD_WIDTH 3 +#define APB_SOC_JTAGREG_INT_BT_MD_MASK 0xe + +// JTAG external register used for synchronisation from external debugger (access: R) +#define APB_SOC_JTAGREG_EXT_SYNC_BIT 8 +#define APB_SOC_JTAGREG_EXT_SYNC_WIDTH 1 +#define APB_SOC_JTAGREG_EXT_SYNC_MASK 0x100 + +// JTAG external register used for selecting boot mode configuration from external debugger (access: R) +#define APB_SOC_JTAGREG_EXT_BT_MD_BIT 9 +#define APB_SOC_JTAGREG_EXT_BT_MD_WIDTH 3 +#define APB_SOC_JTAGREG_EXT_BT_MD_MASK 0xe00 + +// Alias for SAFE_PMU_SLEEPCTRL(i.e. will be accessible in 1 clock cycle) (access: R) +#define APB_SOC_SLEEP_CTRL_SLEEP_CTRL_BIT 0 +#define APB_SOC_SLEEP_CTRL_SLEEP_CTRL_WIDTH 32 +#define APB_SOC_SLEEP_CTRL_SLEEP_CTRL_MASK 0xffffffff + +// EOC and chip status register (access: R/W) +#define APB_SOC_CORESTATUS_STATUS_BIT 0 +#define APB_SOC_CORESTATUS_STATUS_WIDTH 32 +#define APB_SOC_CORESTATUS_STATUS_MASK 0xffffffff + +// EOC and chip status register (access: R) +#define APB_SOC_CORESTATUS_RO_STATUS_BIT 0 +#define APB_SOC_CORESTATUS_RO_STATUS_WIDTH 32 +#define APB_SOC_CORESTATUS_RO_STATUS_MASK 0xffffffff + +// SoC domain clock selection: - 1b0: First FLL is used (FLL1) - 1b1: Second FLL is used (FLL2) (access: R/W) +#define APB_SOC_CLK_SEL_CLK_SOC_BIT 0 +#define APB_SOC_CLK_SEL_CLK_SOC_WIDTH 1 +#define APB_SOC_CLK_SEL_CLK_SOC_MASK 0x1 + +// Cluster domain clock selection: - 2b00: First FLL is used (FLL1) - 2b01: Second FLL is used (FLL2) - 2b10: Third FLL is used (FLL3) (access: R/W) +#define APB_SOC_CLK_SEL_CLK_CLUSTER_BIT 1 +#define APB_SOC_CLK_SEL_CLK_CLUSTER_WIDTH 2 +#define APB_SOC_CLK_SEL_CLK_CLUSTER_MASK 0x6 + +// User value which is kept retentive after wakeup (even in non-retentive sleep). This value is only partially interpreted by the ROM code (TBD) to distinguish betweem cold boot, non-retentive sleep and retentive sleep. (access: R/W) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_BIT 0 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_WIDTH 3 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_MASK 0x7 + +// Enable smart wake-up; - 1'b0; smart wake-up disabled - 1'b1: smart wake-up enabled (access: R/W) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_BIT 9 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_WIDTH 1 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_MASK 0x200 + +// Enable RTC wake-up; - 1'b0; rtc wake-up disabled - 1'b1: rtc wake-up enabled (access: R/W) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_BIT 10 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_WIDTH 1 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_MASK 0x400 + +// Select external wake-up mode (through dedicated pin): - 2'b00: rise event - 2'b01: fall event - 2'b10: high level - 2'b11: low level (access: R/W) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_BIT 11 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_WIDTH 2 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_MASK 0x1800 + +// Enable external wake-up (through dedicated pin); - 1'b0; external wake-up disabled - 1'b1: external wake-up enabled (access: R/W) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_BIT 13 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_WIDTH 1 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_MASK 0x2000 + +// Power state of the MRAM to restore after warm boot - 1'b0: MRAM OFF - 1'b1: MRAM ON (access: R/W) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_BIT 14 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_WIDTH 1 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_MASK 0x4000 + +// Power state of the cluster to restore after warm boot - 1'b0: cluster OFF - 1'b1: cluster ON (access: R/W) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_BIT 15 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_WIDTH 1 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_MASK 0x8000 + +// Configure retention mode of L2 memory. There is one bit per cut: - 1'b0: Non retentive - 1'b1: Retentive (access: R/W) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_BIT 16 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_WIDTH 16 +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_MASK 0xffff0000 + +// Pad state when the chip is down with low-speed IOs ON: - 4b0000: Tristate with no pull-up and no pull-down - 4b0001: Tristate with pull-up - 4b0010: Tristate with pull-down - 4b0011: Drive 0 - 4b0100: Drive 1 (access: R/W) +#define APB_SOC_SAFE_SLEEPPADCFG0_STATE_BIT 0 +#define APB_SOC_SAFE_SLEEPPADCFG0_STATE_WIDTH 4 +#define APB_SOC_SAFE_SLEEPPADCFG0_STATE_MASK 0xf + +// L2 cuts bias trim. This code is forwarded to all cuts and defines the level of current when the cut is in standby mode. 4b0000 is the least amount of current and 4b1110 is the most amount. 4bxxx1 is disabling the bias. (access: R/W) +#define APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_BIT 0 +#define APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_WIDTH 4 +#define APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_MASK 0xf + +// L2 cuts standby active low. One bit per L2 cut for 16 cuts, the cut is in standby when its corresponding bit is 0. The 4 last bits are for the private banks and the rest for the shared banks. (access: R/W) +#define APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_BIT 4 +#define APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_WIDTH 16 +#define APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_MASK 0xffff0 + +// FLL2 power down. The FLL is powered down when this bit is 1b1. (access: R/W) +#define APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_BIT 0 +#define APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_WIDTH 1 +#define APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_MASK 0x1 + +// FLL3 power down. The FLL is powered down when this bit is 1b1. (access: R/W) +#define APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_BIT 1 +#define APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_WIDTH 1 +#define APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_MASK 0x2 + +// FLL2 reset active low. The FLL is reset when this bit is 1b0. (access: R/W) +#define APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_BIT 2 +#define APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_WIDTH 1 +#define APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_MASK 0x4 + +// FLL3 reset active low. The FLL is reset when this bit is 1b0. (access: R/W) +#define APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_BIT 3 +#define APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_WIDTH 1 +#define APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_MASK 0x8 + +// L1 cuts bias trim. This code is forwarded to all cuts and defines the level of current when the cut is in standby mode. 4b0000 is the least amount of current and 4b1110 is the most amount. 4bxxx1 is disabling the bias. (access: R/W) +#define APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_BIT 0 +#define APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_WIDTH 4 +#define APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_MASK 0xf + +// L1 cuts standby active low. First bit is for first L1 64Kbytes and second bit for second L1 64Kbytes. (access: R/W) +#define APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_BIT 4 +#define APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_WIDTH 2 +#define APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_MASK 0x30 + +// L1 power down. The corresponding L1 part is powered down when this bit is 1b1. First bit is for first L1 64Kbytes and second bit for second L1 64Kbytes. (access: R/W) +#define APB_SOC_SAFE_L1_PWR_CTRL_PWD_BIT 6 +#define APB_SOC_SAFE_L1_PWR_CTRL_PWD_WIDTH 2 +#define APB_SOC_SAFE_L1_PWR_CTRL_PWD_MASK 0xc0 + +// L2 VDDDE active low. One bit per L2 cut for 16 cuts, the cut periphery is supplied when its corresponding bit is 0. The 4 last bits are for the private banks and the rest for the shared banks. (access: R/W) +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_BIT 0 +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_WIDTH 16 +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_MASK 0xffff + +// L2 VDDME active low. One bit per L2 cut for 16 cuts, the cut array is supplied when its corresponding bit is 0. The 4 last bits are for the private banks and the rest for the shared banks. (access: R/W) +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_BIT 16 +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_WIDTH 16 +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_MASK 0xffff0000 + + + +// +// REGISTERS STRUCTS +// + +#ifndef LANGUAGE_ASSEMBLY + +typedef union { + struct { + unsigned int nb_cl :16; // Number of clusters + unsigned int nb_cores :16; // Number of cores + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_info_t; + +typedef union { + struct { + unsigned int addr :32; // FC Boot Address + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_fc_boot_t; + +typedef union { + struct { + unsigned int fc_fe :1 ; // FC Fetch Enable + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_fc_fetch_t; + +typedef union { + struct { + unsigned int en :1 ; // Isolate cluster. Inhibits AXI transactions from cluster to SoC: - 1'b0: Disable - 1'b1: Enable + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_cl_isolate_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padfun0_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padfun1_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padfun2_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padfun3_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg0_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg1_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg2_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg3_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg4_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg5_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg6_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg7_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg8_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg9_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg10_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg11_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg12_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg13_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg14_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_padcfg15_t; + +typedef union { + struct { + unsigned int busy :1 ; // Cluster busy flag (i.e. It's 1 if there is at least 1 active block in the cluster) + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_cl_busy_t; + +typedef union { + struct { + unsigned int int_sync :1 ; // JTAG internal register used for synchronisation from external debugger + unsigned int int_bt_md :3 ; // JTAG internal register used for selecting boot mode configuration from external debugger + unsigned int padding0:4 ; + unsigned int ext_sync :1 ; // JTAG external register used for synchronisation from external debugger + unsigned int ext_bt_md :3 ; // JTAG external register used for selecting boot mode configuration from external debugger + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_jtagreg_t; + +typedef union { + struct { + unsigned int sleep_ctrl :32; // Alias for SAFE_PMU_SLEEPCTRL(i.e. will be accessible in 1 clock cycle) + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_sleep_ctrl_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_clk_div_i3c_t; + +typedef union { + struct { + unsigned int status :32; // EOC and chip status register + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_corestatus_t; + +typedef union { + struct { + unsigned int status :32; // EOC and chip status register + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_corestatus_ro_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_bootsel_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_wd_clr_t; + +typedef union { + struct { + unsigned int clk_soc :1 ; // SoC domain clock selection: - 1b0: First FLL is used (FLL1) - 1b1: Second FLL is used (FLL2) + unsigned int clk_cluster :2 ; // Cluster domain clock selection: - 2b00: First FLL is used (FLL1) - 2b01: Second FLL is used (FLL2) - 2b10: Third FLL is used (FLL3) + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_clk_sel_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_clk_div_soc_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_clk_div_clu_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_clk_div_per_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_supervisor_dbg_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_rwm_grp0_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_rwm_grp1_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_rwm_grp2_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_rwm_grp3_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_rwm_grp4_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_rwm_grp5_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_rwm_grp6_t; + +typedef union { + struct { + unsigned int reboot :3 ; // User value which is kept retentive after wakeup (even in non-retentive sleep). This value is only partially interpreted by the ROM code (TBD) to distinguish betweem cold boot, non-retentive sleep and retentive sleep. + unsigned int padding0:6 ; + unsigned int smartwake_en :1 ; // Enable smart wake-up; - 1'b0; smart wake-up disabled - 1'b1: smart wake-up enabled + unsigned int rtcwake_en :1 ; // Enable RTC wake-up; - 1'b0; rtc wake-up disabled - 1'b1: rtc wake-up enabled + unsigned int extwake_type :2 ; // Select external wake-up mode (through dedicated pin): - 2'b00: rise event - 2'b01: fall event - 2'b10: high level - 2'b11: low level + unsigned int extwake_en :1 ; // Enable external wake-up (through dedicated pin); - 1'b0; external wake-up disabled - 1'b1: external wake-up enabled + unsigned int mram_wakestate :1 ; // Power state of the MRAM to restore after warm boot - 1'b0: MRAM OFF - 1'b1: MRAM ON + unsigned int cluster_wakestate:1 ; // Power state of the cluster to restore after warm boot - 1'b0: cluster OFF - 1'b1: cluster ON + unsigned int ret_mem :16; // Configure retention mode of L2 memory. There is one bit per cut: - 1'b0: Non retentive - 1'b1: Retentive + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_pmu_sleepctrl_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_wd_t; + +typedef union { + struct { + unsigned int state :4 ; // Pad state when the chip is down with low-speed IOs ON: - 4b0000: Tristate with no pull-up and no pull-down - 4b0001: Tristate with pull-up - 4b0010: Tristate with pull-down - 4b0011: Drive 0 - 4b0100: Drive 1 + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_sleeppadcfg0_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_sleeppadcfg1_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_nevacf_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_gpreg_t; + +typedef union { + struct { + unsigned int btrim :4 ; // L2 cuts bias trim. This code is forwarded to all cuts and defines the level of current when the cut is in standby mode. 4b0000 is the least amount of current and 4b1110 is the most amount. 4bxxx1 is disabling the bias. + unsigned int stdby_n :16; // L2 cuts standby active low. One bit per L2 cut for 16 cuts, the cut is in standby when its corresponding bit is 0. The 4 last bits are for the private banks and the rest for the shared banks. + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_l2_btrim_stdby_t; + +typedef union { + struct { + unsigned int fll2_pwd :1 ; // FLL2 power down. The FLL is powered down when this bit is 1b1. + unsigned int fll3_pwd :1 ; // FLL3 power down. The FLL is powered down when this bit is 1b1. + unsigned int fll2_rstb :1 ; // FLL2 reset active low. The FLL is reset when this bit is 1b0. + unsigned int fll3_rstb :1 ; // FLL3 reset active low. The FLL is reset when this bit is 1b0. + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_fll_ctrl_t; + +typedef union { + struct { + unsigned int btrim :4 ; // L1 cuts bias trim. This code is forwarded to all cuts and defines the level of current when the cut is in standby mode. 4b0000 is the least amount of current and 4b1110 is the most amount. 4bxxx1 is disabling the bias. + unsigned int stdby_n :2 ; // L1 cuts standby active low. First bit is for first L1 64Kbytes and second bit for second L1 64Kbytes. + unsigned int pwd :2 ; // L1 power down. The corresponding L1 part is powered down when this bit is 1b1. First bit is for first L1 64Kbytes and second bit for second L1 64Kbytes. + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_l1_pwr_ctrl_t; + +typedef union { + struct { + unsigned int vddde_n :16; // L2 VDDDE active low. One bit per L2 cut for 16 cuts, the cut periphery is supplied when its corresponding bit is 0. The 4 last bits are for the private banks and the rest for the shared banks. + unsigned int vddme_n :16; // L2 VDDME active low. One bit per L2 cut for 16 cuts, the cut array is supplied when its corresponding bit is 0. The 4 last bits are for the private banks and the rest for the shared banks. + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_safe_l2_pwr_ctrl_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_reg_gpio_iso_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_reg_cam_iso_t; + +typedef union { + struct { + }; + unsigned int raw; +} __attribute__((packed)) apb_soc_reg_lvds_iso_t; + +#endif + + + +// +// REGISTERS STRUCTS +// + +#ifdef __GVSOC__ + +class vp_apb_soc_info : public vp::reg_32 +{ +public: + inline void nb_cl_set(uint32_t value) { this->set_field(value, APB_SOC_INFO_NB_CL_BIT, APB_SOC_INFO_NB_CL_WIDTH); } + inline uint32_t nb_cl_get() { return this->get_field(APB_SOC_INFO_NB_CL_BIT, APB_SOC_INFO_NB_CL_WIDTH); } + inline void nb_cores_set(uint32_t value) { this->set_field(value, APB_SOC_INFO_NB_CORES_BIT, APB_SOC_INFO_NB_CORES_WIDTH); } + inline uint32_t nb_cores_get() { return this->get_field(APB_SOC_INFO_NB_CORES_BIT, APB_SOC_INFO_NB_CORES_WIDTH); } +}; + +class vp_apb_soc_fc_boot : public vp::reg_32 +{ +public: + inline void addr_set(uint32_t value) { this->set_field(value, APB_SOC_FC_BOOT_ADDR_BIT, APB_SOC_FC_BOOT_ADDR_WIDTH); } + inline uint32_t addr_get() { return this->get_field(APB_SOC_FC_BOOT_ADDR_BIT, APB_SOC_FC_BOOT_ADDR_WIDTH); } +}; + +class vp_apb_soc_fc_fetch : public vp::reg_32 +{ +public: + inline void fc_fe_set(uint32_t value) { this->set_field(value, APB_SOC_FC_FETCH_FC_FE_BIT, APB_SOC_FC_FETCH_FC_FE_WIDTH); } + inline uint32_t fc_fe_get() { return this->get_field(APB_SOC_FC_FETCH_FC_FE_BIT, APB_SOC_FC_FETCH_FC_FE_WIDTH); } +}; + +class vp_apb_soc_cl_isolate : public vp::reg_32 +{ +public: + inline void en_set(uint32_t value) { this->set_field(value, APB_SOC_CL_ISOLATE_EN_BIT, APB_SOC_CL_ISOLATE_EN_WIDTH); } + inline uint32_t en_get() { return this->get_field(APB_SOC_CL_ISOLATE_EN_BIT, APB_SOC_CL_ISOLATE_EN_WIDTH); } +}; + +class vp_apb_soc_padfun0 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padfun1 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padfun2 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padfun3 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg0 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg1 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg2 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg3 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg4 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg5 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg6 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg7 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg8 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg9 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg10 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg11 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg12 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg13 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg14 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_padcfg15 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_cl_busy : public vp::reg_32 +{ +public: + inline void busy_set(uint32_t value) { this->set_field(value, APB_SOC_CL_BUSY_BUSY_BIT, APB_SOC_CL_BUSY_BUSY_WIDTH); } + inline uint32_t busy_get() { return this->get_field(APB_SOC_CL_BUSY_BUSY_BIT, APB_SOC_CL_BUSY_BUSY_WIDTH); } +}; + +class vp_apb_soc_jtagreg : public vp::reg_32 +{ +public: + inline void int_sync_set(uint32_t value) { this->set_field(value, APB_SOC_JTAGREG_INT_SYNC_BIT, APB_SOC_JTAGREG_INT_SYNC_WIDTH); } + inline uint32_t int_sync_get() { return this->get_field(APB_SOC_JTAGREG_INT_SYNC_BIT, APB_SOC_JTAGREG_INT_SYNC_WIDTH); } + inline void int_bt_md_set(uint32_t value) { this->set_field(value, APB_SOC_JTAGREG_INT_BT_MD_BIT, APB_SOC_JTAGREG_INT_BT_MD_WIDTH); } + inline uint32_t int_bt_md_get() { return this->get_field(APB_SOC_JTAGREG_INT_BT_MD_BIT, APB_SOC_JTAGREG_INT_BT_MD_WIDTH); } + inline void ext_sync_set(uint32_t value) { this->set_field(value, APB_SOC_JTAGREG_EXT_SYNC_BIT, APB_SOC_JTAGREG_EXT_SYNC_WIDTH); } + inline uint32_t ext_sync_get() { return this->get_field(APB_SOC_JTAGREG_EXT_SYNC_BIT, APB_SOC_JTAGREG_EXT_SYNC_WIDTH); } + inline void ext_bt_md_set(uint32_t value) { this->set_field(value, APB_SOC_JTAGREG_EXT_BT_MD_BIT, APB_SOC_JTAGREG_EXT_BT_MD_WIDTH); } + inline uint32_t ext_bt_md_get() { return this->get_field(APB_SOC_JTAGREG_EXT_BT_MD_BIT, APB_SOC_JTAGREG_EXT_BT_MD_WIDTH); } +}; + +class vp_apb_soc_sleep_ctrl : public vp::reg_32 +{ +public: + inline void sleep_ctrl_set(uint32_t value) { this->set_field(value, APB_SOC_SLEEP_CTRL_SLEEP_CTRL_BIT, APB_SOC_SLEEP_CTRL_SLEEP_CTRL_WIDTH); } + inline uint32_t sleep_ctrl_get() { return this->get_field(APB_SOC_SLEEP_CTRL_SLEEP_CTRL_BIT, APB_SOC_SLEEP_CTRL_SLEEP_CTRL_WIDTH); } +}; + +class vp_apb_soc_clk_div_i3c : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_corestatus : public vp::reg_32 +{ +public: + inline void status_set(uint32_t value) { this->set_field(value, APB_SOC_CORESTATUS_STATUS_BIT, APB_SOC_CORESTATUS_STATUS_WIDTH); } + inline uint32_t status_get() { return this->get_field(APB_SOC_CORESTATUS_STATUS_BIT, APB_SOC_CORESTATUS_STATUS_WIDTH); } +}; + +class vp_apb_soc_corestatus_ro : public vp::reg_32 +{ +public: + inline void status_set(uint32_t value) { this->set_field(value, APB_SOC_CORESTATUS_RO_STATUS_BIT, APB_SOC_CORESTATUS_RO_STATUS_WIDTH); } + inline uint32_t status_get() { return this->get_field(APB_SOC_CORESTATUS_RO_STATUS_BIT, APB_SOC_CORESTATUS_RO_STATUS_WIDTH); } +}; + +class vp_apb_soc_bootsel : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_wd_clr : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_clk_sel : public vp::reg_32 +{ +public: + inline void clk_soc_set(uint32_t value) { this->set_field(value, APB_SOC_CLK_SEL_CLK_SOC_BIT, APB_SOC_CLK_SEL_CLK_SOC_WIDTH); } + inline uint32_t clk_soc_get() { return this->get_field(APB_SOC_CLK_SEL_CLK_SOC_BIT, APB_SOC_CLK_SEL_CLK_SOC_WIDTH); } + inline void clk_cluster_set(uint32_t value) { this->set_field(value, APB_SOC_CLK_SEL_CLK_CLUSTER_BIT, APB_SOC_CLK_SEL_CLK_CLUSTER_WIDTH); } + inline uint32_t clk_cluster_get() { return this->get_field(APB_SOC_CLK_SEL_CLK_CLUSTER_BIT, APB_SOC_CLK_SEL_CLK_CLUSTER_WIDTH); } +}; + +class vp_apb_soc_clk_div_soc : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_clk_div_clu : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_clk_div_per : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_supervisor_dbg : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_rwm_grp0 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_rwm_grp1 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_rwm_grp2 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_rwm_grp3 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_rwm_grp4 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_rwm_grp5 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_rwm_grp6 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_safe_pmu_sleepctrl : public vp::reg_32 +{ +public: + inline void reboot_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_WIDTH); } + inline uint32_t reboot_get() { return this->get_field(APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_WIDTH); } + inline void smartwake_en_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_WIDTH); } + inline uint32_t smartwake_en_get() { return this->get_field(APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_WIDTH); } + inline void rtcwake_en_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_WIDTH); } + inline uint32_t rtcwake_en_get() { return this->get_field(APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_WIDTH); } + inline void extwake_type_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_WIDTH); } + inline uint32_t extwake_type_get() { return this->get_field(APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_WIDTH); } + inline void extwake_en_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_WIDTH); } + inline uint32_t extwake_en_get() { return this->get_field(APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_WIDTH); } + inline void mram_wakestate_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_WIDTH); } + inline uint32_t mram_wakestate_get() { return this->get_field(APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_WIDTH); } + inline void cluster_wakestate_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_WIDTH); } + inline uint32_t cluster_wakestate_get() { return this->get_field(APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_WIDTH); } + inline void ret_mem_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_WIDTH); } + inline uint32_t ret_mem_get() { return this->get_field(APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_BIT, APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_WIDTH); } +}; + +class vp_apb_soc_safe_wd : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_safe_sleeppadcfg0 : public vp::reg_32 +{ +public: + inline void state_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_SLEEPPADCFG0_STATE_BIT, APB_SOC_SAFE_SLEEPPADCFG0_STATE_WIDTH); } + inline uint32_t state_get() { return this->get_field(APB_SOC_SAFE_SLEEPPADCFG0_STATE_BIT, APB_SOC_SAFE_SLEEPPADCFG0_STATE_WIDTH); } +}; + +class vp_apb_soc_safe_sleeppadcfg1 : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_safe_nevacf : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_safe_gpreg : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_safe_l2_btrim_stdby : public vp::reg_32 +{ +public: + inline void btrim_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_BIT, APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_WIDTH); } + inline uint32_t btrim_get() { return this->get_field(APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_BIT, APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_WIDTH); } + inline void stdby_n_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_BIT, APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_WIDTH); } + inline uint32_t stdby_n_get() { return this->get_field(APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_BIT, APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_WIDTH); } +}; + +class vp_apb_soc_safe_fll_ctrl : public vp::reg_32 +{ +public: + inline void fll2_pwd_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_BIT, APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_WIDTH); } + inline uint32_t fll2_pwd_get() { return this->get_field(APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_BIT, APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_WIDTH); } + inline void fll3_pwd_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_BIT, APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_WIDTH); } + inline uint32_t fll3_pwd_get() { return this->get_field(APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_BIT, APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_WIDTH); } + inline void fll2_rstb_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_BIT, APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_WIDTH); } + inline uint32_t fll2_rstb_get() { return this->get_field(APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_BIT, APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_WIDTH); } + inline void fll3_rstb_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_BIT, APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_WIDTH); } + inline uint32_t fll3_rstb_get() { return this->get_field(APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_BIT, APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_WIDTH); } +}; + +class vp_apb_soc_safe_l1_pwr_ctrl : public vp::reg_32 +{ +public: + inline void btrim_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_BIT, APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_WIDTH); } + inline uint32_t btrim_get() { return this->get_field(APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_BIT, APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_WIDTH); } + inline void stdby_n_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_BIT, APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_WIDTH); } + inline uint32_t stdby_n_get() { return this->get_field(APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_BIT, APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_WIDTH); } + inline void pwd_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_L1_PWR_CTRL_PWD_BIT, APB_SOC_SAFE_L1_PWR_CTRL_PWD_WIDTH); } + inline uint32_t pwd_get() { return this->get_field(APB_SOC_SAFE_L1_PWR_CTRL_PWD_BIT, APB_SOC_SAFE_L1_PWR_CTRL_PWD_WIDTH); } +}; + +class vp_apb_soc_safe_l2_pwr_ctrl : public vp::reg_32 +{ +public: + inline void vddde_n_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_BIT, APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_WIDTH); } + inline uint32_t vddde_n_get() { return this->get_field(APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_BIT, APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_WIDTH); } + inline void vddme_n_set(uint32_t value) { this->set_field(value, APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_BIT, APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_WIDTH); } + inline uint32_t vddme_n_get() { return this->get_field(APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_BIT, APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_WIDTH); } +}; + +class vp_apb_soc_reg_gpio_iso : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_reg_cam_iso : public vp::reg_32 +{ +public: +}; + +class vp_apb_soc_reg_lvds_iso : public vp::reg_32 +{ +public: +}; + +#endif + + + +// +// REGISTERS GLOBAL STRUCT +// + +#ifndef LANGUAGE_ASSEMBLY + +typedef struct { + unsigned int info ; // Core information register + unsigned int fc_boot ; // Boot address + unsigned int fc_fetch ; // FC Fetch enable + unsigned int cl_isolate ; // Isolate cluster register + unsigned int padfun0 ; // Mux config register (pad 0-15) + unsigned int padfun1 ; // Mux config register (pad 16-31) + unsigned int padfun2 ; // Mux config register (pad 32-47) + unsigned int padfun3 ; // Mux config register (pad 48-63) + unsigned int padcfg0 ; // Function register (pad 0 to 3) + unsigned int padcfg1 ; // Function register (pad 4 to 7) + unsigned int padcfg2 ; // Function register (pad 8 to 11) + unsigned int padcfg3 ; // Function register (pad 12 to 15) + unsigned int padcfg4 ; // Function register (pad 16 to 19) + unsigned int padcfg5 ; // Function register (pad 20 to 23) + unsigned int padcfg6 ; // Function register (pad 24 to 27) + unsigned int padcfg7 ; // Function register (pad 28 to 31) + unsigned int padcfg8 ; // Function register (pad 32 to 35) + unsigned int padcfg9 ; // Function register (pad 36 to 39) + unsigned int padcfg10 ; // Function register (pad 40 to 43) + unsigned int padcfg11 ; // Function register (pad 44 to 47) + unsigned int padcfg12 ; // Function register (pad 48 to 51) + unsigned int padcfg13 ; // Function register (pad 52 to 55) + unsigned int padcfg14 ; // Function register (pad 56 to 59) + unsigned int padcfg15 ; // Function register (pad 60 to 63) + unsigned int cl_busy ; // Cluster busy register + unsigned int jtagreg ; // JTAG external register + unsigned int sleep_ctrl ; // Alias for SAFE_PMU_SLEEPCTRL + unsigned int clk_div_i3c ; // Clock divider for I3C + unsigned int corestatus ; // EOC and chip status register + unsigned int corestatus_ro ; // EOC and chip status register read mirror + unsigned int bootsel ; // Value of pad bootsel + unsigned int wd_clr ; // Clear WD timer + unsigned int clk_sel ; // Clock selection for SOC,Cluster and Periph + unsigned int clk_div_soc ; // SOC Clock Divider settings + unsigned int clk_div_clu ; // Cluster Clock Divider settings + unsigned int clk_div_per ; // Peripheral Clock Divider Settings + unsigned int supervisor_dbg ; // nan + unsigned int rwm_grp0 ; // nan + unsigned int rwm_grp1 ; // nan + unsigned int rwm_grp2 ; // nan + unsigned int rwm_grp3 ; // nan + unsigned int rwm_grp4 ; // nan + unsigned int rwm_grp5 ; // nan + unsigned int rwm_grp6 ; // nan + unsigned int safe_pmu_sleepctrl; // Sleep modes configuration register + unsigned int safe_wd ; // Enables and configures WatchDog Timer + unsigned int safe_sleeppadcfg0; // Sleep config register (pad 0-7) + unsigned int safe_sleeppadcfg1; // Sleep config register (pad 8-15) + unsigned int safe_nevacf ; // Config timings for NEVA + unsigned int safe_gpreg ; // General purpouse register AO + unsigned int safe_l2_btrim_stdby; // L2 standby configuration + unsigned int safe_fll_ctrl ; // FLL2 and FLL3 power control + unsigned int safe_l1_pwr_ctrl; // L1 power control + unsigned int safe_l2_pwr_ctrl; // L2 power control + unsigned int reg_gpio_iso ; // GPIO power domain pad input isolation register + unsigned int reg_cam_iso ; // CAM power domain pad input isolation register + unsigned int reg_lvds_iso ; // LVDS power domain pad input isolation register +} __attribute__((packed)) apb_soc_apb_soc_t; + +#endif + + + +// +// REGISTERS ACCESS FUNCTIONS +// + +#ifndef LANGUAGE_ASSEMBLY + +static inline uint32_t apb_soc_info_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_INFO_OFFSET); } +static inline void apb_soc_info_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_INFO_OFFSET, value); } + +static inline uint32_t apb_soc_fc_boot_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_FC_BOOT_OFFSET); } +static inline void apb_soc_fc_boot_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_FC_BOOT_OFFSET, value); } + +static inline uint32_t apb_soc_fc_fetch_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_FC_FETCH_OFFSET); } +static inline void apb_soc_fc_fetch_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_FC_FETCH_OFFSET, value); } + +static inline uint32_t apb_soc_cl_isolate_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CL_ISOLATE_OFFSET); } +static inline void apb_soc_cl_isolate_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CL_ISOLATE_OFFSET, value); } + +static inline uint32_t apb_soc_padfun0_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADFUN0_OFFSET); } +static inline void apb_soc_padfun0_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADFUN0_OFFSET, value); } + +static inline uint32_t apb_soc_padfun1_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADFUN1_OFFSET); } +static inline void apb_soc_padfun1_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADFUN1_OFFSET, value); } + +static inline uint32_t apb_soc_padfun2_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADFUN2_OFFSET); } +static inline void apb_soc_padfun2_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADFUN2_OFFSET, value); } + +static inline uint32_t apb_soc_padfun3_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADFUN3_OFFSET); } +static inline void apb_soc_padfun3_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADFUN3_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg0_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG0_OFFSET); } +static inline void apb_soc_padcfg0_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG0_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg1_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG1_OFFSET); } +static inline void apb_soc_padcfg1_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG1_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg2_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG2_OFFSET); } +static inline void apb_soc_padcfg2_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG2_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg3_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG3_OFFSET); } +static inline void apb_soc_padcfg3_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG3_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg4_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG4_OFFSET); } +static inline void apb_soc_padcfg4_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG4_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg5_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG5_OFFSET); } +static inline void apb_soc_padcfg5_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG5_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg6_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG6_OFFSET); } +static inline void apb_soc_padcfg6_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG6_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg7_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG7_OFFSET); } +static inline void apb_soc_padcfg7_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG7_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg8_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG8_OFFSET); } +static inline void apb_soc_padcfg8_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG8_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg9_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG9_OFFSET); } +static inline void apb_soc_padcfg9_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG9_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg10_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG10_OFFSET); } +static inline void apb_soc_padcfg10_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG10_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg11_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG11_OFFSET); } +static inline void apb_soc_padcfg11_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG11_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg12_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG12_OFFSET); } +static inline void apb_soc_padcfg12_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG12_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg13_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG13_OFFSET); } +static inline void apb_soc_padcfg13_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG13_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg14_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG14_OFFSET); } +static inline void apb_soc_padcfg14_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG14_OFFSET, value); } + +static inline uint32_t apb_soc_padcfg15_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_PADCFG15_OFFSET); } +static inline void apb_soc_padcfg15_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_PADCFG15_OFFSET, value); } + +static inline uint32_t apb_soc_cl_busy_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CL_BUSY_OFFSET); } +static inline void apb_soc_cl_busy_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CL_BUSY_OFFSET, value); } + +static inline uint32_t apb_soc_jtagreg_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_JTAGREG_OFFSET); } +static inline void apb_soc_jtagreg_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_JTAGREG_OFFSET, value); } + +static inline uint32_t apb_soc_sleep_ctrl_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SLEEP_CTRL_OFFSET); } +static inline void apb_soc_sleep_ctrl_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SLEEP_CTRL_OFFSET, value); } + +static inline uint32_t apb_soc_clk_div_i3c_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CLK_DIV_I3C_OFFSET); } +static inline void apb_soc_clk_div_i3c_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CLK_DIV_I3C_OFFSET, value); } + +static inline uint32_t apb_soc_corestatus_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CORESTATUS_OFFSET); } +static inline void apb_soc_corestatus_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CORESTATUS_OFFSET, value); } + +static inline uint32_t apb_soc_corestatus_ro_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CORESTATUS_RO_OFFSET); } +static inline void apb_soc_corestatus_ro_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CORESTATUS_RO_OFFSET, value); } + +static inline uint32_t apb_soc_bootsel_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_BOOTSEL_OFFSET); } +static inline void apb_soc_bootsel_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_BOOTSEL_OFFSET, value); } + +static inline uint32_t apb_soc_wd_clr_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_WD_CLR_OFFSET); } +static inline void apb_soc_wd_clr_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_WD_CLR_OFFSET, value); } + +static inline uint32_t apb_soc_clk_sel_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CLK_SEL_OFFSET); } +static inline void apb_soc_clk_sel_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CLK_SEL_OFFSET, value); } + +static inline uint32_t apb_soc_clk_div_soc_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CLK_DIV_SOC_OFFSET); } +static inline void apb_soc_clk_div_soc_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CLK_DIV_SOC_OFFSET, value); } + +static inline uint32_t apb_soc_clk_div_clu_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CLK_DIV_CLU_OFFSET); } +static inline void apb_soc_clk_div_clu_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CLK_DIV_CLU_OFFSET, value); } + +static inline uint32_t apb_soc_clk_div_per_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_CLK_DIV_PER_OFFSET); } +static inline void apb_soc_clk_div_per_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_CLK_DIV_PER_OFFSET, value); } + +static inline uint32_t apb_soc_supervisor_dbg_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SUPERVISOR_DBG_OFFSET); } +static inline void apb_soc_supervisor_dbg_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SUPERVISOR_DBG_OFFSET, value); } + +static inline uint32_t apb_soc_rwm_grp0_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_RWM_GRP0_OFFSET); } +static inline void apb_soc_rwm_grp0_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_RWM_GRP0_OFFSET, value); } + +static inline uint32_t apb_soc_rwm_grp1_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_RWM_GRP1_OFFSET); } +static inline void apb_soc_rwm_grp1_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_RWM_GRP1_OFFSET, value); } + +static inline uint32_t apb_soc_rwm_grp2_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_RWM_GRP2_OFFSET); } +static inline void apb_soc_rwm_grp2_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_RWM_GRP2_OFFSET, value); } + +static inline uint32_t apb_soc_rwm_grp3_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_RWM_GRP3_OFFSET); } +static inline void apb_soc_rwm_grp3_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_RWM_GRP3_OFFSET, value); } + +static inline uint32_t apb_soc_rwm_grp4_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_RWM_GRP4_OFFSET); } +static inline void apb_soc_rwm_grp4_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_RWM_GRP4_OFFSET, value); } + +static inline uint32_t apb_soc_rwm_grp5_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_RWM_GRP5_OFFSET); } +static inline void apb_soc_rwm_grp5_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_RWM_GRP5_OFFSET, value); } + +static inline uint32_t apb_soc_rwm_grp6_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_RWM_GRP6_OFFSET); } +static inline void apb_soc_rwm_grp6_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_RWM_GRP6_OFFSET, value); } + +static inline uint32_t apb_soc_safe_pmu_sleepctrl_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_PMU_SLEEPCTRL_OFFSET); } +static inline void apb_soc_safe_pmu_sleepctrl_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_PMU_SLEEPCTRL_OFFSET, value); } + +static inline uint32_t apb_soc_safe_wd_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_WD_OFFSET); } +static inline void apb_soc_safe_wd_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_WD_OFFSET, value); } + +static inline uint32_t apb_soc_safe_sleeppadcfg0_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_SLEEPPADCFG0_OFFSET); } +static inline void apb_soc_safe_sleeppadcfg0_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_SLEEPPADCFG0_OFFSET, value); } + +static inline uint32_t apb_soc_safe_sleeppadcfg1_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_SLEEPPADCFG1_OFFSET); } +static inline void apb_soc_safe_sleeppadcfg1_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_SLEEPPADCFG1_OFFSET, value); } + +static inline uint32_t apb_soc_safe_nevacf_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_NEVACF_OFFSET); } +static inline void apb_soc_safe_nevacf_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_NEVACF_OFFSET, value); } + +static inline uint32_t apb_soc_safe_gpreg_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_GPREG_OFFSET); } +static inline void apb_soc_safe_gpreg_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_GPREG_OFFSET, value); } + +static inline uint32_t apb_soc_safe_l2_btrim_stdby_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_L2_BTRIM_STDBY_OFFSET); } +static inline void apb_soc_safe_l2_btrim_stdby_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_L2_BTRIM_STDBY_OFFSET, value); } + +static inline uint32_t apb_soc_safe_fll_ctrl_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_FLL_CTRL_OFFSET); } +static inline void apb_soc_safe_fll_ctrl_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_FLL_CTRL_OFFSET, value); } + +static inline uint32_t apb_soc_safe_l1_pwr_ctrl_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_L1_PWR_CTRL_OFFSET); } +static inline void apb_soc_safe_l1_pwr_ctrl_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_L1_PWR_CTRL_OFFSET, value); } + +static inline uint32_t apb_soc_safe_l2_pwr_ctrl_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_SAFE_L2_PWR_CTRL_OFFSET); } +static inline void apb_soc_safe_l2_pwr_ctrl_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_SAFE_L2_PWR_CTRL_OFFSET, value); } + +static inline uint32_t apb_soc_reg_gpio_iso_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_REG_GPIO_ISO_OFFSET); } +static inline void apb_soc_reg_gpio_iso_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_REG_GPIO_ISO_OFFSET, value); } + +static inline uint32_t apb_soc_reg_cam_iso_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_REG_CAM_ISO_OFFSET); } +static inline void apb_soc_reg_cam_iso_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_REG_CAM_ISO_OFFSET, value); } + +static inline uint32_t apb_soc_reg_lvds_iso_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_REG_LVDS_ISO_OFFSET); } +static inline void apb_soc_reg_lvds_iso_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_REG_LVDS_ISO_OFFSET, value); } + +#endif + + + +// +// REGISTERS FIELDS MACROS +// + +#ifndef LANGUAGE_ASSEMBLY + +#define APB_SOC_INFO_NB_CL_GET(value) (ARCHI_BEXTRACTU((value),16,0)) +#define APB_SOC_INFO_NB_CL_GETS(value) (ARCHI_BEXTRACT((value),16,0)) +#define APB_SOC_INFO_NB_CL_SET(value,field) (ARCHI_BINSERT((value),(field),16,0)) +#define APB_SOC_INFO_NB_CL(val) ((val) << 0) + +#define APB_SOC_INFO_NB_CORES_GET(value) (ARCHI_BEXTRACTU((value),16,16)) +#define APB_SOC_INFO_NB_CORES_GETS(value) (ARCHI_BEXTRACT((value),16,16)) +#define APB_SOC_INFO_NB_CORES_SET(value,field) (ARCHI_BINSERT((value),(field),16,16)) +#define APB_SOC_INFO_NB_CORES(val) ((val) << 16) + +#define APB_SOC_FC_BOOT_ADDR_GET(value) (ARCHI_BEXTRACTU((value),32,0)) +#define APB_SOC_FC_BOOT_ADDR_GETS(value) (ARCHI_BEXTRACT((value),32,0)) +#define APB_SOC_FC_BOOT_ADDR_SET(value,field) (ARCHI_BINSERT((value),(field),32,0)) +#define APB_SOC_FC_BOOT_ADDR(val) ((val) << 0) + +#define APB_SOC_FC_FETCH_FC_FE_GET(value) (ARCHI_BEXTRACTU((value),1,0)) +#define APB_SOC_FC_FETCH_FC_FE_GETS(value) (ARCHI_BEXTRACT((value),1,0)) +#define APB_SOC_FC_FETCH_FC_FE_SET(value,field) (ARCHI_BINSERT((value),(field),1,0)) +#define APB_SOC_FC_FETCH_FC_FE(val) ((val) << 0) + +#define APB_SOC_CL_ISOLATE_EN_GET(value) (ARCHI_BEXTRACTU((value),1,0)) +#define APB_SOC_CL_ISOLATE_EN_GETS(value) (ARCHI_BEXTRACT((value),1,0)) +#define APB_SOC_CL_ISOLATE_EN_SET(value,field) (ARCHI_BINSERT((value),(field),1,0)) +#define APB_SOC_CL_ISOLATE_EN(val) ((val) << 0) + +#define APB_SOC_CL_BUSY_BUSY_GET(value) (ARCHI_BEXTRACTU((value),1,0)) +#define APB_SOC_CL_BUSY_BUSY_GETS(value) (ARCHI_BEXTRACT((value),1,0)) +#define APB_SOC_CL_BUSY_BUSY_SET(value,field) (ARCHI_BINSERT((value),(field),1,0)) +#define APB_SOC_CL_BUSY_BUSY(val) ((val) << 0) + +#define APB_SOC_JTAGREG_INT_SYNC_GET(value) (ARCHI_BEXTRACTU((value),1,0)) +#define APB_SOC_JTAGREG_INT_SYNC_GETS(value) (ARCHI_BEXTRACT((value),1,0)) +#define APB_SOC_JTAGREG_INT_SYNC_SET(value,field) (ARCHI_BINSERT((value),(field),1,0)) +#define APB_SOC_JTAGREG_INT_SYNC(val) ((val) << 0) + +#define APB_SOC_JTAGREG_INT_BT_MD_GET(value) (ARCHI_BEXTRACTU((value),3,1)) +#define APB_SOC_JTAGREG_INT_BT_MD_GETS(value) (ARCHI_BEXTRACT((value),3,1)) +#define APB_SOC_JTAGREG_INT_BT_MD_SET(value,field) (ARCHI_BINSERT((value),(field),3,1)) +#define APB_SOC_JTAGREG_INT_BT_MD(val) ((val) << 1) + +#define APB_SOC_JTAGREG_EXT_SYNC_GET(value) (ARCHI_BEXTRACTU((value),1,8)) +#define APB_SOC_JTAGREG_EXT_SYNC_GETS(value) (ARCHI_BEXTRACT((value),1,8)) +#define APB_SOC_JTAGREG_EXT_SYNC_SET(value,field) (ARCHI_BINSERT((value),(field),1,8)) +#define APB_SOC_JTAGREG_EXT_SYNC(val) ((val) << 8) + +#define APB_SOC_JTAGREG_EXT_BT_MD_GET(value) (ARCHI_BEXTRACTU((value),3,9)) +#define APB_SOC_JTAGREG_EXT_BT_MD_GETS(value) (ARCHI_BEXTRACT((value),3,9)) +#define APB_SOC_JTAGREG_EXT_BT_MD_SET(value,field) (ARCHI_BINSERT((value),(field),3,9)) +#define APB_SOC_JTAGREG_EXT_BT_MD(val) ((val) << 9) + +#define APB_SOC_SLEEP_CTRL_SLEEP_CTRL_GET(value) (ARCHI_BEXTRACTU((value),32,0)) +#define APB_SOC_SLEEP_CTRL_SLEEP_CTRL_GETS(value) (ARCHI_BEXTRACT((value),32,0)) +#define APB_SOC_SLEEP_CTRL_SLEEP_CTRL_SET(value,field) (ARCHI_BINSERT((value),(field),32,0)) +#define APB_SOC_SLEEP_CTRL_SLEEP_CTRL(val) ((val) << 0) + +#define APB_SOC_CORESTATUS_STATUS_GET(value) (ARCHI_BEXTRACTU((value),32,0)) +#define APB_SOC_CORESTATUS_STATUS_GETS(value) (ARCHI_BEXTRACT((value),32,0)) +#define APB_SOC_CORESTATUS_STATUS_SET(value,field) (ARCHI_BINSERT((value),(field),32,0)) +#define APB_SOC_CORESTATUS_STATUS(val) ((val) << 0) + +#define APB_SOC_CORESTATUS_RO_STATUS_GET(value) (ARCHI_BEXTRACTU((value),32,0)) +#define APB_SOC_CORESTATUS_RO_STATUS_GETS(value) (ARCHI_BEXTRACT((value),32,0)) +#define APB_SOC_CORESTATUS_RO_STATUS_SET(value,field) (ARCHI_BINSERT((value),(field),32,0)) +#define APB_SOC_CORESTATUS_RO_STATUS(val) ((val) << 0) + +#define APB_SOC_CLK_SEL_CLK_SOC_GET(value) (ARCHI_BEXTRACTU((value),1,0)) +#define APB_SOC_CLK_SEL_CLK_SOC_GETS(value) (ARCHI_BEXTRACT((value),1,0)) +#define APB_SOC_CLK_SEL_CLK_SOC_SET(value,field) (ARCHI_BINSERT((value),(field),1,0)) +#define APB_SOC_CLK_SEL_CLK_SOC(val) ((val) << 0) + +#define APB_SOC_CLK_SEL_CLK_CLUSTER_GET(value) (ARCHI_BEXTRACTU((value),2,1)) +#define APB_SOC_CLK_SEL_CLK_CLUSTER_GETS(value) (ARCHI_BEXTRACT((value),2,1)) +#define APB_SOC_CLK_SEL_CLK_CLUSTER_SET(value,field) (ARCHI_BINSERT((value),(field),2,1)) +#define APB_SOC_CLK_SEL_CLK_CLUSTER(val) ((val) << 1) + +#define APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_GET(value) (ARCHI_BEXTRACTU((value),3,0)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_GETS(value) (ARCHI_BEXTRACT((value),3,0)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT_SET(value,field) (ARCHI_BINSERT((value),(field),3,0)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_REBOOT(val) ((val) << 0) + +#define APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_GET(value) (ARCHI_BEXTRACTU((value),1,9)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_GETS(value) (ARCHI_BEXTRACT((value),1,9)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN_SET(value,field) (ARCHI_BINSERT((value),(field),1,9)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_SMARTWAKE_EN(val) ((val) << 9) + +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_GET(value) (ARCHI_BEXTRACTU((value),1,10)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_GETS(value) (ARCHI_BEXTRACT((value),1,10)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN_SET(value,field) (ARCHI_BINSERT((value),(field),1,10)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RTCWAKE_EN(val) ((val) << 10) + +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_GET(value) (ARCHI_BEXTRACTU((value),2,11)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_GETS(value) (ARCHI_BEXTRACT((value),2,11)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE_SET(value,field) (ARCHI_BINSERT((value),(field),2,11)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_TYPE(val) ((val) << 11) + +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_GET(value) (ARCHI_BEXTRACTU((value),1,13)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_GETS(value) (ARCHI_BEXTRACT((value),1,13)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN_SET(value,field) (ARCHI_BINSERT((value),(field),1,13)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_EXTWAKE_EN(val) ((val) << 13) + +#define APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_GET(value) (ARCHI_BEXTRACTU((value),1,14)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_GETS(value) (ARCHI_BEXTRACT((value),1,14)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE_SET(value,field) (ARCHI_BINSERT((value),(field),1,14)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_MRAM_WAKESTATE(val) ((val) << 14) + +#define APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_GET(value) (ARCHI_BEXTRACTU((value),1,15)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_GETS(value) (ARCHI_BEXTRACT((value),1,15)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE_SET(value,field) (ARCHI_BINSERT((value),(field),1,15)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_CLUSTER_WAKESTATE(val) ((val) << 15) + +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_GET(value) (ARCHI_BEXTRACTU((value),16,16)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_GETS(value) (ARCHI_BEXTRACT((value),16,16)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM_SET(value,field) (ARCHI_BINSERT((value),(field),16,16)) +#define APB_SOC_SAFE_PMU_SLEEPCTRL_RET_MEM(val) ((val) << 16) + +#define APB_SOC_SAFE_SLEEPPADCFG0_STATE_GET(value) (ARCHI_BEXTRACTU((value),4,0)) +#define APB_SOC_SAFE_SLEEPPADCFG0_STATE_GETS(value) (ARCHI_BEXTRACT((value),4,0)) +#define APB_SOC_SAFE_SLEEPPADCFG0_STATE_SET(value,field) (ARCHI_BINSERT((value),(field),4,0)) +#define APB_SOC_SAFE_SLEEPPADCFG0_STATE(val) ((val) << 0) + +#define APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_GET(value) (ARCHI_BEXTRACTU((value),4,0)) +#define APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_GETS(value) (ARCHI_BEXTRACT((value),4,0)) +#define APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM_SET(value,field) (ARCHI_BINSERT((value),(field),4,0)) +#define APB_SOC_SAFE_L2_BTRIM_STDBY_BTRIM(val) ((val) << 0) + +#define APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_GET(value) (ARCHI_BEXTRACTU((value),16,4)) +#define APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_GETS(value) (ARCHI_BEXTRACT((value),16,4)) +#define APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N_SET(value,field) (ARCHI_BINSERT((value),(field),16,4)) +#define APB_SOC_SAFE_L2_BTRIM_STDBY_STDBY_N(val) ((val) << 4) + +#define APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_GET(value) (ARCHI_BEXTRACTU((value),1,0)) +#define APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_GETS(value) (ARCHI_BEXTRACT((value),1,0)) +#define APB_SOC_SAFE_FLL_CTRL_FLL2_PWD_SET(value,field) (ARCHI_BINSERT((value),(field),1,0)) +#define APB_SOC_SAFE_FLL_CTRL_FLL2_PWD(val) ((val) << 0) + +#define APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_GET(value) (ARCHI_BEXTRACTU((value),1,1)) +#define APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_GETS(value) (ARCHI_BEXTRACT((value),1,1)) +#define APB_SOC_SAFE_FLL_CTRL_FLL3_PWD_SET(value,field) (ARCHI_BINSERT((value),(field),1,1)) +#define APB_SOC_SAFE_FLL_CTRL_FLL3_PWD(val) ((val) << 1) + +#define APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_GET(value) (ARCHI_BEXTRACTU((value),1,2)) +#define APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_GETS(value) (ARCHI_BEXTRACT((value),1,2)) +#define APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB_SET(value,field) (ARCHI_BINSERT((value),(field),1,2)) +#define APB_SOC_SAFE_FLL_CTRL_FLL2_RSTB(val) ((val) << 2) + +#define APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_GET(value) (ARCHI_BEXTRACTU((value),1,3)) +#define APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_GETS(value) (ARCHI_BEXTRACT((value),1,3)) +#define APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB_SET(value,field) (ARCHI_BINSERT((value),(field),1,3)) +#define APB_SOC_SAFE_FLL_CTRL_FLL3_RSTB(val) ((val) << 3) + +#define APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_GET(value) (ARCHI_BEXTRACTU((value),4,0)) +#define APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_GETS(value) (ARCHI_BEXTRACT((value),4,0)) +#define APB_SOC_SAFE_L1_PWR_CTRL_BTRIM_SET(value,field) (ARCHI_BINSERT((value),(field),4,0)) +#define APB_SOC_SAFE_L1_PWR_CTRL_BTRIM(val) ((val) << 0) + +#define APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_GET(value) (ARCHI_BEXTRACTU((value),2,4)) +#define APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_GETS(value) (ARCHI_BEXTRACT((value),2,4)) +#define APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N_SET(value,field) (ARCHI_BINSERT((value),(field),2,4)) +#define APB_SOC_SAFE_L1_PWR_CTRL_STDBY_N(val) ((val) << 4) + +#define APB_SOC_SAFE_L1_PWR_CTRL_PWD_GET(value) (ARCHI_BEXTRACTU((value),2,6)) +#define APB_SOC_SAFE_L1_PWR_CTRL_PWD_GETS(value) (ARCHI_BEXTRACT((value),2,6)) +#define APB_SOC_SAFE_L1_PWR_CTRL_PWD_SET(value,field) (ARCHI_BINSERT((value),(field),2,6)) +#define APB_SOC_SAFE_L1_PWR_CTRL_PWD(val) ((val) << 6) + +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_GET(value) (ARCHI_BEXTRACTU((value),16,0)) +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_GETS(value) (ARCHI_BEXTRACT((value),16,0)) +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N_SET(value,field) (ARCHI_BINSERT((value),(field),16,0)) +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDDE_N(val) ((val) << 0) + +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_GET(value) (ARCHI_BEXTRACTU((value),16,16)) +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_GETS(value) (ARCHI_BEXTRACT((value),16,16)) +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N_SET(value,field) (ARCHI_BINSERT((value),(field),16,16)) +#define APB_SOC_SAFE_L2_PWR_CTRL_VDDME_N(val) ((val) << 16) + +#endif + +#endif diff --git a/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/memory_map.h.in b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/memory_map.h.in new file mode 100644 index 000000000..63c751d11 --- /dev/null +++ b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/memory_map.h.in @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2018 ETH Zurich, University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef __ARCHI_CHIPS_VEGA_MEMORY_MAP_H__ +#define __ARCHI_CHIPS_VEGA_MEMORY_MAP_H__ + + + +/* + * MEMORIES + */ + +#define ARCHI_L2_PRIV0_ADDR 0x1c000000 +#define ARCHI_L2_PRIV0_SIZE 0x00008000 + +#define ARCHI_L2_PRIV1_ADDR 0x1c008000 +#define ARCHI_L2_PRIV1_SIZE 0x00008000 + +#define ARCHI_L2_SHARED_ADDR 0x1c010000 +#define ARCHI_L2_SHARED_SIZE @l2_shared_size@ + + + +/* + * MRAM + */ + +#define ARCHI_MRAM_ADDR 0x1D000000 + + + +/* + * SOC PERIPHERALS + */ + +#define ARCHI_SOC_PERIPHERALS_ADDR 0x1A100000 + +#define ARCHI_FC_TIMER_SIZE 0x00000800 + +#define ARCHI_FLL_OFFSET 0x00000000 +#define ARCHI_CVP_OFFSET 0x00000000 +#define ARCHI_GPIO_OFFSET 0x00001000 +#define ARCHI_UDMA_OFFSET 0x00002000 +#define ARCHI_APB_SOC_CTRL_OFFSET 0x00004000 +#define ARCHI_PWM_OFFSET 0x00005000 +#define ARCHI_SOC_EU_OFFSET 0x00006000 /// FIXME: not soc eu but soc event generator +#define ARCHI_PMU_OFFSET 0x00007000 +#define ARCHI_RTC_BASE_OFFSET 0x00008000 +#define ARCHI_FC_ICACHE_OFFSET 0x00008800 +#define ARCHI_FC_ITC_OFFSET 0x00009000 +#define ARCHI_I3C0_OFFSET 0x0000A000 +#define ARCHI_I3C1_OFFSET 0x0000A800 +#define ARCHI_FC_TIMER_OFFSET 0x0000B000 +#define ARCHI_FC_TIMER1_OFFSET 0x0000B800 +#define ARCHI_DPHY_OFFSET 0x0000C000 +#define ARCHI_CSI2_OFFSET 0x0000D000 +#define ARCHI_MPU_OFFSET 0x0000E000 +#define ARCHI_EFUSE_OFFSET 0x0000F000 +#define ARCHI_DEBUG_OFFSET 0x00010000 +#define ARCHI_STDOUT_OFFSET 0x00020000 +#define ARCHI_QUIDDIKEY_OFFSET 0x00021000 + +#define ARCHI_FLL_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_FLL_OFFSET ) +#define ARCHI_GPIO_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_GPIO_OFFSET ) +#define ARCHI_UDMA_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_UDMA_OFFSET ) +#define ARCHI_APB_SOC_CTRL_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_APB_SOC_CTRL_OFFSET ) +#define ARCHI_PWM_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_PWM_OFFSET ) +#define ARCHI_SOC_EU_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_SOC_EU_OFFSET ) +#define ARCHI_PMU_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_PMU_OFFSET ) +#define ARCHI_RTC_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_RTC_BASE_OFFSET ) +#define ARCHI_FC_ICACHE_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_FC_ICACHE_OFFSET ) +#define ARCHI_FC_ITC_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_FC_ITC_OFFSET ) +#define ARCHI_I3C0_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_I3C0_OFFSET ) +#define ARCHI_I3C1_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_I3C1_OFFSET ) +#define ARCHI_FC_TIMER_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_FC_TIMER_OFFSET ) +// #define ARCHI_FC_TIMER1_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_FC_TIMER1_OFFSET ) +#define ARCHI_DPHY_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_DPHY_OFFSET ) +#define ARCHI_CSI2_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_CSI2_OFFSET ) +#define ARCHI_MPU_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_MPU_OFFSET ) +#define ARCHI_EFUSE_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_EFUSE_OFFSET ) +#define ARCHI_DEBUG_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_DEBUG_OFFSET ) +#define ARCHI_STDOUT_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_STDOUT_OFFSET ) +#define ARCHI_QUIDDIKEY_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_QUIDDIKEY_OFFSET ) + + + +// VEGA HAL Handles definition +#define QUIDDIKEY_HANDLE ((halQuiddikeyHandle_t *)(ARCHI_QUIDDIKEY_ADDR)) +#define CSI2_HANDLE ((halCsi2Handle_t *)(ARCHI_CSI2_ADDR)) +#define DPHY_HANDLE ((halDphyHandle_t *)(ARCHI_DPHY_ADDR)) + +#define UDMA_CSI2_HANDLE(id) ((plpUdmaCsi2Handle_t *)(ARCHI_UDMA_ADDR + UDMA_CSI2_OFFSET(id))) + + + + +#define ARCHI_FLL_AREA_SIZE 0x00000010 + + + +/* + * FC + */ +// NOTE: they are all in SOC PERIPH now + +#define ARCHI_FC_ADDR 0x00000000 +// #define ARCHI_FC_GLOBAL_ADDR 0x1B000000 + + +/* + * CLUSTER + */ + +#define ARCHI_CLUSTER_ADDR 0x00000000 +#define ARCHI_CLUSTER_SIZE 0x00400000 +#define ARCHI_CLUSTER_GLOBAL_ADDR(cid) (0x10000000 + (cid)*ARCHI_CLUSTER_SIZE) + + + +/* + * CLUSTER PERIPHERALS + */ + +#define ARCHI_CLUSTER_PERIPHERALS_OFFSET 0x00200000 + +#define ARCHI_TIMER_SIZE 0x00000800 + +#define ARCHI_CLUSTER_CTRL_OFFSET 0x00000000 +#define ARCHI_TIMER_OFFSET 0x00000400 +#define ARCHI_EU_OFFSET 0x00000800 +#define ARCHI_HWCE_OFFSET 0x00001000 +#define ARCHI_ICACHE_CTRL_OFFSET 0x00001400 +#define ARCHI_MCHAN_EXT_OFFSET 0x00001800 + +#define ARCHI_CLUSTER_PERIPHERALS_ADDR ( ARCHI_CLUSTER_ADDR + ARCHI_CLUSTER_PERIPHERALS_OFFSET ) +#define ARCHI_CLUSTER_PERIPHERALS_GLOBAL_ADDR(cid) ( ARCHI_CLUSTER_GLOBAL_ADDR(cid) + ARCHI_CLUSTER_PERIPHERALS_OFFSET ) + +#define ARCHI_CLUSTER_CTRL_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_CLUSTER_CTRL_OFFSET ) +#define ARCHI_ICACHE_CTRL_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_ICACHE_CTRL_OFFSET ) +#define ARCHI_EU_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_EU_OFFSET ) +#define ARCHI_HWCE_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_HWCE_OFFSET ) +#define ARCHI_MCHAN_EXT_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_MCHAN_EXT_OFFSET ) + + + +/* + * CLUSTER DEMUX PERIPHERALS + */ + +#define ARCHI_DEMUX_PERIPHERALS_OFFSET 0x204000 + +#define ARCHI_EU_DEMUX_OFFSET ( 0x00000 ) +#define ARCHI_MCHAN_DEMUX_OFFSET ( 0x00400 ) + + +#define ARCHI_DEMUX_PERIPHERALS_ADDR ( ARCHI_CLUSTER_ADDR + ARCHI_DEMUX_PERIPHERALS_OFFSET ) + +#define ARCHI_EU_DEMUX_ADDR ( ARCHI_DEMUX_PERIPHERALS_ADDR + ARCHI_EU_DEMUX_OFFSET ) +#define ARCHI_MCHAN_DEMUX_ADDR ( ARCHI_DEMUX_PERIPHERALS_ADDR + ARCHI_MCHAN_DEMUX_OFFSET ) + +#endif diff --git a/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/pmu.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/pmu.h new file mode 100644 index 000000000..01155f75f --- /dev/null +++ b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/pmu.h @@ -0,0 +1,510 @@ + +/* THIS FILE HAS BEEN GENERATED, DO NOT MODIFY IT. + */ + +/* + * Copyright (C) 2018 ETH Zurich, University of Bologna + * and GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __INCLUDE_ARCHI_CHIPS_VEGA_PMU_H__ +#define __INCLUDE_ARCHI_CHIPS_VEGA_PMU_H__ + +#ifndef LANGUAGE_ASSEMBLY + +#include +#include "archi/utils.h" + +#endif + + + + +// +// REGISTERS +// + + + +// +// REGISTERS FIELDS +// + + + +// +// REGISTERS STRUCTS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS STRUCTS +// + +#ifdef __GVSOC__ + +#endif + + + +// +// REGISTERS GLOBAL STRUCT +// + +#ifndef LANGUAGE_ASSEMBLY + +typedef struct { +} __attribute__((packed)) pmu_pmu_t; + +#endif + + + +// +// REGISTERS ACCESS FUNCTIONS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS FIELDS MACROS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// GROUP icu0 +// + +#define PMU_ICU0_OFFSET 0x2 + + + +// +// REGISTERS +// + + + +// +// REGISTERS FIELDS +// + + + +// +// REGISTERS STRUCTS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS STRUCTS +// + +#ifdef __GVSOC__ + +#endif + + + +// +// REGISTERS GLOBAL STRUCT +// + +#ifndef LANGUAGE_ASSEMBLY + +typedef struct { +} __attribute__((packed)) pmu_icu0_t; + +#endif + + + +// +// REGISTERS ACCESS FUNCTIONS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS FIELDS MACROS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// GROUP icu1 +// + +#define PMU_ICU1_OFFSET 0x3 + + + +// +// REGISTERS +// + + + +// +// REGISTERS FIELDS +// + + + +// +// REGISTERS STRUCTS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS STRUCTS +// + +#ifdef __GVSOC__ + +#endif + + + +// +// REGISTERS GLOBAL STRUCT +// + +#ifndef LANGUAGE_ASSEMBLY + +typedef struct { +} __attribute__((packed)) pmu_icu1_t; + +#endif + + + +// +// REGISTERS ACCESS FUNCTIONS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS FIELDS MACROS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// GROUP dmu0 +// + +#define PMU_DMU0_OFFSET 0x4 + + + +// +// REGISTERS +// + + + +// +// REGISTERS FIELDS +// + + + +// +// REGISTERS STRUCTS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS STRUCTS +// + +#ifdef __GVSOC__ + +#endif + + + +// +// REGISTERS GLOBAL STRUCT +// + +#ifndef LANGUAGE_ASSEMBLY + +typedef struct { +} __attribute__((packed)) pmu_dmu0_t; + +#endif + + + +// +// REGISTERS ACCESS FUNCTIONS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS FIELDS MACROS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// GROUP icu_soc +// + + + +// +// REGISTERS +// + + + +// +// REGISTERS FIELDS +// + + + +// +// REGISTERS STRUCTS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS STRUCTS +// + +#ifdef __GVSOC__ + +#endif + + + +// +// REGISTERS GLOBAL STRUCT +// + +#ifndef LANGUAGE_ASSEMBLY + +typedef struct { +} __attribute__((packed)) pmu_icu_soc_t; + +#endif + + + +// +// REGISTERS ACCESS FUNCTIONS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS FIELDS MACROS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// CUSTOM FIELDS +// +#define PMU_SOC_ON_NV 0x00 +#define PMU_SOC_ON_LV 0x01 +#define PMU_SOC_RET_OFF 0x02 +#define PMU_SOC_RET_NV 0x03 +#define PMU_SOC_RET_LV 0x04 +#define PMU_SOC_RET_RV 0x05 +#define PMU_SOC_EXT_OFF 0x06 +#define PMU_SOC_EXT_NV 0x07 +#define PMU_SOC_EXT_LV 0x08 +#define PMU_SOC_EXT_RV 0x09 +#define PMU_SOC_CKOFF_NV 0x11 +#define PMU_SOC_CKOFF_LV 0x12 +#define PMU_SOC_CKOFF_RV 0x13 + + + +// +// GROUP icu_cluster +// + + + +// +// REGISTERS +// + + + +// +// REGISTERS FIELDS +// + + + +// +// REGISTERS STRUCTS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS STRUCTS +// + +#ifdef __GVSOC__ + +#endif + + + +// +// REGISTERS GLOBAL STRUCT +// + +#ifndef LANGUAGE_ASSEMBLY + +typedef struct { +} __attribute__((packed)) pmu_icu_cluster_t; + +#endif + + + +// +// REGISTERS ACCESS FUNCTIONS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// REGISTERS FIELDS MACROS +// + +#ifndef LANGUAGE_ASSEMBLY + +#endif + + + +// +// CUSTOM FIELDS +// +#define PMU_CLUSTER_ON_NV 0x00 +#define PMU_CLUSTER_ON_LV 0x01 +#define PMU_CLUSTER_RET_OFF 0x02 +#define PMU_CLUSTER_RET_NV 0x03 +#define PMU_CLUSTER_RET_LV 0x04 +#define PMU_CLUSTER_RET_RV 0x05 +#define PMU_CLUSTER_EXT_OFF 0x06 +#define PMU_CLUSTER_EXT_NV 0x07 +#define PMU_CLUSTER_EXT_LV 0x08 +#define PMU_CLUSTER_EXT_RV 0x09 +#define PMU_CLUSTER_CKOFF_NV 0x11 +#define PMU_CLUSTER_CKOFF_LV 0x12 +#define PMU_CLUSTER_CKOFF_RV 0x13 + + + +// +// CUSTOM FIELDS +// +#define PMU_BOOT 0x01 +#define PMU_SOC_ACTIVE_NV 0x01 +#define PMU_SOC_ACTIVE_LV 0x02 +#define PMU_SOC_CLUSTER_ACTIVE_NV 0x04 +#define PMU_SOC_CLUSTER_ACTIVE_LV 0x08 +#define PMU_DEEP_SLEEP_ALL_OFF 0x10 +#define PMU_DEEP_SLEEP_RETENTIVE 0x20 + +#endif diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vega/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vega/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vega/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vega/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vega/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc2_1/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/fll.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/fll.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/fll.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/fll.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/freq.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/freq.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/freq.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/freq.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/fll.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/fll.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/fll.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/fll.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/freq.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/freq.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/freq.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/freq.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_1/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/fll.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/fll.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/fll.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/fll.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/freq.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/freq.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/freq.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/freq.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc3_5/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/fll.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/fll.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/fll.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/fll.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/freq.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/freq.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/freq.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/freq.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/vivosoc4/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/wolfe/apb_soc.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/apb_soc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/wolfe/apb_soc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/apb_soc.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/wolfe/apb_soc_ctrl_new.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/apb_soc_ctrl_new.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/wolfe/apb_soc_ctrl_new.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/apb_soc_ctrl_new.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/wolfe/memory_map.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/memory_map.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/wolfe/memory_map.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/memory_map.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/wolfe/pmu.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/pmu.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/wolfe/pmu.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/pmu.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/wolfe/properties.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/properties.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/wolfe/properties.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/properties.h diff --git a/rtos/pulp/archi_pulp/include/archi/chips/wolfe/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/chips/wolfe/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/chips/wolfe/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/cluster_ctrl/cluster_ctrl_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/cluster_ctrl/cluster_ctrl_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/cluster_ctrl/cluster_ctrl_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/cluster_ctrl/cluster_ctrl_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/dma/mchan_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/dma/mchan_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/dma/mchan_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/dma/mchan_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/dma/mchan_v5.h b/gap8/rtos/pulp/archi_pulp/include/archi/dma/mchan_v5.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/dma/mchan_v5.h rename to gap8/rtos/pulp/archi_pulp/include/archi/dma/mchan_v5.h diff --git a/rtos/pulp/archi_pulp/include/archi/dma/mchan_v6.h b/gap8/rtos/pulp/archi_pulp/include/archi/dma/mchan_v6.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/dma/mchan_v6.h rename to gap8/rtos/pulp/archi_pulp/include/archi/dma/mchan_v6.h diff --git a/rtos/pulp/archi_pulp/include/archi/dma/mchan_v7.h b/gap8/rtos/pulp/archi_pulp/include/archi/dma/mchan_v7.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/dma/mchan_v7.h rename to gap8/rtos/pulp/archi_pulp/include/archi/dma/mchan_v7.h diff --git a/rtos/pulp/archi_pulp/include/archi/efuse/efuse_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/efuse/efuse_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/efuse/efuse_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/efuse/efuse_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/eu/eu_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/eu/eu_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/eu/eu_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/eu/eu_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/eu/eu_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/eu/eu_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/eu/eu_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/eu/eu_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/eu/eu_v4.h b/gap8/rtos/pulp/archi_pulp/include/archi/eu/eu_v4.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/eu/eu_v4.h rename to gap8/rtos/pulp/archi_pulp/include/archi/eu/eu_v4.h diff --git a/rtos/pulp/archi_pulp/include/archi/fll/fll_v0.h b/gap8/rtos/pulp/archi_pulp/include/archi/fll/fll_v0.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/fll/fll_v0.h rename to gap8/rtos/pulp/archi_pulp/include/archi/fll/fll_v0.h diff --git a/rtos/pulp/archi_pulp/include/archi/fll/fll_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/fll/fll_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/fll/fll_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/fll/fll_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/gap_utils.h b/gap8/rtos/pulp/archi_pulp/include/archi/gap_utils.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/gap_utils.h rename to gap8/rtos/pulp/archi_pulp/include/archi/gap_utils.h diff --git a/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/gpio/gpio_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v2_new.h b/gap8/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v2_new.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/gpio/gpio_v2_new.h rename to gap8/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v2_new.h diff --git a/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/gpio/gpio_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/gpio/gpio_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/gvsoc/gvsoc.h b/gap8/rtos/pulp/archi_pulp/include/archi/gvsoc/gvsoc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/gvsoc/gvsoc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/gvsoc/gvsoc.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/hwce_v4_old.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/hwce_v4_old.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/hwce_v4_old.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/hwce_v4_old.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/hwce_v5.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/hwce_v5.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/hwce_v5.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/hwce_v5.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_accessors.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_accessors.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_accessors.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_accessors.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_constants.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_constants.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_constants.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_constants.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_groups.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_groups.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_groups.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_groups.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_gvsoc.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_gvsoc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_gvsoc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_gvsoc.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_macros.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_macros.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_macros.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_macros.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regfields.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regfields.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regfields.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regfields.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regfields_accessors.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regfields_accessors.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regfields_accessors.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regfields_accessors.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regmap.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regmap.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regmap.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regmap.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regs.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_regs.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_structs.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_structs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_structs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwce/v4/hwce_structs.h diff --git a/rtos/pulp/archi_pulp/include/archi/hwme/hwme_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/hwme/hwme_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/hwme/hwme_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/hwme/hwme_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/ima/ima_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/ima/ima_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/ima/ima_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/ima/ima_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/itc/itc_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/itc/itc_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/itc/itc_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/itc/itc_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/maestro/maestro_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v1_new.h b/gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v1_new.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/maestro/maestro_v1_new.h rename to gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v1_new.h diff --git a/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/maestro/maestro_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v2_new.h b/gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v2_new.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/maestro/maestro_v2_new.h rename to gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v2_new.h diff --git a/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/maestro/maestro_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/maestro/maestro_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/mailbox/mailbox_v0.h b/gap8/rtos/pulp/archi_pulp/include/archi/mailbox/mailbox_v0.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/mailbox/mailbox_v0.h rename to gap8/rtos/pulp/archi_pulp/include/archi/mailbox/mailbox_v0.h diff --git a/rtos/pulp/archi_pulp/include/archi/or1k/spr-defs.h b/gap8/rtos/pulp/archi_pulp/include/archi/or1k/spr-defs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/or1k/spr-defs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/or1k/spr-defs.h diff --git a/rtos/pulp/archi_pulp/include/archi/pulp.h b/gap8/rtos/pulp/archi_pulp/include/archi/pulp.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pulp.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pulp.h diff --git a/rtos/pulp/archi_pulp/include/archi/pulp_defs.h b/gap8/rtos/pulp/archi_pulp/include/archi/pulp_defs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pulp_defs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pulp_defs.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/pwm_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/pwm_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/pwm_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/pwm_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_accessors.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_accessors.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_accessors.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_accessors.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_constants.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_constants.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_constants.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_constants.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_groups.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_groups.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_groups.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_groups.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_gvsoc.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_gvsoc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_gvsoc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_gvsoc.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_macros.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_macros.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_macros.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_macros.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regfields.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regfields.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regfields.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regfields.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regmap.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regmap.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regmap.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regmap.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regs.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_regs.h diff --git a/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_structs.h b/gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_structs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_structs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/pwm/v1/pwm_v1_structs.h diff --git a/rtos/pulp/archi_pulp/include/archi/rab/rab_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/rab/rab_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/rab/rab_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/rab/rab_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv/builtins_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv/builtins_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv/builtins_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv/builtins_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv/builtins_v2_emu.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv/builtins_v2_emu.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv/builtins_v2_emu.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv/builtins_v2_emu.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv/pcer_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv/pcer_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv/pcer_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv/pcer_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv/pcer_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv/pcer_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv/pcer_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv/pcer_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv/priv_1.9.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv/priv_1.9.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv/priv_1.9.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv/priv_1.9.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_10.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_10.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv/priv_1_10.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_10.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_7.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_7.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv/priv_1_7.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_7.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_9.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_9.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv/priv_1_9.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv/priv_1_9.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_accessors.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_accessors.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_accessors.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_accessors.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_cmd.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_cmd.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_cmd.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_cmd.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_constants.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_constants.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_constants.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_constants.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_groups.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_groups.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_groups.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_groups.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_gvsoc.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_gvsoc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_gvsoc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_gvsoc.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_macros.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_macros.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_macros.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_macros.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regfields.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regfields.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regfields.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regfields.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regfields_accessors.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regfields_accessors.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regfields_accessors.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regfields_accessors.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regmap.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regmap.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regmap.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regmap.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regs.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_regs.h diff --git a/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_structs.h b/gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_structs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_structs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/riscv_dbg/riscv_dbg_dm_structs.h diff --git a/rtos/pulp/archi_pulp/include/archi/rtc/rtc_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/rtc/rtc_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/rtc/rtc_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/rtc/rtc_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/soc_eu/soc_eu_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/spim/spi_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/spim/spi_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/spim/spi_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/spim/spi_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/stdout/stdout_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/stdout/stdout_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/stdout/stdout_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/stdout/stdout_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/stdout/stdout_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/stdout/stdout_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/stdout/stdout_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/stdout/stdout_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/timer/timer_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/timer/timer_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/timer/timer_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/timer/timer_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/cpi/udma_cpi_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/cpi/udma_cpi_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/cpi/udma_cpi_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/cpi/udma_cpi_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/cpi/udma_cpi_v1_old.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/cpi/udma_cpi_v1_old.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/cpi/udma_cpi_v1_old.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/cpi/udma_cpi_v1_old.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/csi2/udma_csi2_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/csi2/udma_csi2_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/csi2/udma_csi2_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/csi2/udma_csi2_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/hyper/udma_hyper_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2c/udma_i2c_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2c/udma_i2c_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2c/udma_i2c_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2c/udma_i2c_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2c/udma_i2c_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2c/udma_i2c_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2c/udma_i2c_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2c/udma_i2c_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v1_new.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v1_new.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v1_new.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v1_new.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/udma_i2s_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_accessors.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_accessors.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_accessors.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_accessors.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_constants.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_constants.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_constants.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_constants.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_groups.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_groups.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_groups.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_groups.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_gvsoc.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_gvsoc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_gvsoc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_gvsoc.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_macros.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_macros.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_macros.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_macros.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regfields.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regfields.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regfields.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regfields.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regmap.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regmap.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regmap.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regmap.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regs.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_regs.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_structs.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_structs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_structs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/i2s/v3/udma_i2s_v3_structs.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_accessors.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_accessors.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_accessors.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_accessors.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_constants.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_constants.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_constants.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_constants.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_groups.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_groups.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_groups.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_groups.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_gvsoc.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_gvsoc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_gvsoc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_gvsoc.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_macros.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_macros.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_macros.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_macros.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regfields.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regfields.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regfields.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regfields.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regmap.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regmap.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regmap.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regmap.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regs.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_regs.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_structs.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_structs.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_structs.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/memcpy/v1/udma_memcpy_v1_structs.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/mram/udma_mram_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/mram/udma_mram_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/mram/udma_mram_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/mram/udma_mram_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/spim/udma_spim_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/tcdm/udma_tcdm_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/tcdm/udma_tcdm_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/tcdm/udma_tcdm_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/tcdm/udma_tcdm_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/uart/udma_uart_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/uart/udma_uart_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/uart/udma_uart_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/uart/udma_uart_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/udma_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/udma_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/udma_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/udma_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/udma_v2.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/udma_v2.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/udma_v2.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/udma_v2.h diff --git a/rtos/pulp/archi_pulp/include/archi/udma/udma_v3.h b/gap8/rtos/pulp/archi_pulp/include/archi/udma/udma_v3.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/udma/udma_v3.h rename to gap8/rtos/pulp/archi_pulp/include/archi/udma/udma_v3.h diff --git a/rtos/pulp/archi_pulp/include/archi/utils.h b/gap8/rtos/pulp/archi_pulp/include/archi/utils.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/utils.h rename to gap8/rtos/pulp/archi_pulp/include/archi/utils.h diff --git a/rtos/pulp/archi_pulp/include/archi/vendors/dolphin/rtc.h b/gap8/rtos/pulp/archi_pulp/include/archi/vendors/dolphin/rtc.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/vendors/dolphin/rtc.h rename to gap8/rtos/pulp/archi_pulp/include/archi/vendors/dolphin/rtc.h diff --git a/rtos/pulp/archi_pulp/include/archi/vendors/iid/quiddikey_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/vendors/iid/quiddikey_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/vendors/iid/quiddikey_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/vendors/iid/quiddikey_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/vendors/lnt/csi2_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/vendors/lnt/csi2_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/vendors/lnt/csi2_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/vendors/lnt/csi2_v1.h diff --git a/rtos/pulp/archi_pulp/include/archi/xne/xne_v1.h b/gap8/rtos/pulp/archi_pulp/include/archi/xne/xne_v1.h similarity index 100% rename from rtos/pulp/archi_pulp/include/archi/xne/xne_v1.h rename to gap8/rtos/pulp/archi_pulp/include/archi/xne/xne_v1.h diff --git a/rtos/pulp/hal_pulp/.gitignore b/gap8/rtos/pulp/hal_pulp/.gitignore similarity index 100% rename from rtos/pulp/hal_pulp/.gitignore rename to gap8/rtos/pulp/hal_pulp/.gitignore diff --git a/rtos/pulp/hal_pulp/LICENSE b/gap8/rtos/pulp/hal_pulp/LICENSE similarity index 100% rename from rtos/pulp/hal_pulp/LICENSE rename to gap8/rtos/pulp/hal_pulp/LICENSE diff --git a/rtos/pulp/hal_pulp/Makefile b/gap8/rtos/pulp/hal_pulp/Makefile similarity index 100% rename from rtos/pulp/hal_pulp/Makefile rename to gap8/rtos/pulp/hal_pulp/Makefile diff --git a/rtos/pulp/hal_pulp/SConstruct b/gap8/rtos/pulp/hal_pulp/SConstruct similarity index 100% rename from rtos/pulp/hal_pulp/SConstruct rename to gap8/rtos/pulp/hal_pulp/SConstruct diff --git a/rtos/pulp/hal_pulp/include/debug_bridge/debug_bridge.h b/gap8/rtos/pulp/hal_pulp/include/debug_bridge/debug_bridge.h similarity index 100% rename from rtos/pulp/hal_pulp/include/debug_bridge/debug_bridge.h rename to gap8/rtos/pulp/hal_pulp/include/debug_bridge/debug_bridge.h diff --git a/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v4.h b/gap8/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v4.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v4.h rename to gap8/rtos/pulp/hal_pulp/include/hal/apb_soc/apb_soc_v4.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/arnold/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/arnold/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/arnold/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/arnold/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/bigpulp/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/bigpulp/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/bigpulp/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/bigpulp/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/devchip/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/devchip/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/devchip/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/devchip/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/fulmine/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/fulmine/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/fulmine/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/fulmine/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/gap/apb_soc.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap/apb_soc.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/gap/apb_soc.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/gap/apb_soc.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/gap/efuse.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap/efuse.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/gap/efuse.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/gap/efuse.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/gap/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/gap/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/gap/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/gap8 b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap8 similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/gap8 rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/gap8 diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vega/efuse.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap9/efuse.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vega/efuse.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/gap9/efuse.h diff --git a/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap9/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap9/pulp.h new file mode 100644 index 000000000..7c388b488 --- /dev/null +++ b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap9/pulp.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2015 ETH Zurich and University of Bologna + * All rights reserved. + * + * This software may be modified and distributed under the terms + * of the BSD license. See the LICENSE file for details. + * + */ + +#ifndef __HAL_GAP9_PULP_H__ +#define __HAL_GAP9_PULP_H__ + +#include "hal/riscv/riscv_v5.h" +#include "hal/eu/eu_v3.h" +#include "hal/itc/itc_v1.h" +#include "hal/dma/mchan_v7.h" +#include "hal/timer/timer_v2.h" +#include "hal/soc_eu/soc_eu_v2.h" +#include "hal/udma/udma_v3.h" +#include "hal/cluster_ctrl/cluster_ctrl_v2.h" +#include "hal/icache/icache_ctrl_v2.h" +#include "hal/apb_soc/apb_soc_v3.h" +#include "hal/maestro/pmu_v3.h" +#include "hal/rom/rom_v2.h" +#include "hal/fll/fll_v1.h" +#include "hal/gpio/gpio_v3.h" +#include "hal/hwce/hwce_v5.h" +#include "hal/pwm/pwm_v1.h" +#include "hal/efuse/efuse_v1.h" +#include "hal/chips/gap9/efuse.h" + +#include "hal/vendors/iid/quiddikey_v1.h" +#include "hal/vendors/lnt/csi2_v1.h" + +#include "hal/udma/cpi/udma_cpi_v1.h" +#include "hal/udma/csi2/udma_csi2_v1.h" +#include "hal/udma/hyper/udma_hyper_v2.h" +#include "hal/udma/i2c/udma_i2c_v2.h" +#include "hal/udma/spim/udma_spim_v3.h" +#include "hal/udma/uart/udma_uart_v1.h" +#include "hal/vendors/dolphin/rtc.h" + +#include "hal/chips/gap9/efuse.h" + +#endif diff --git a/rtos/pulp/hal_pulp/include/hal/chips/gap_rev1/efuse.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap_rev1/efuse.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/gap_rev1/efuse.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/gap_rev1/efuse.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/gap_rev1/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/gap_rev1/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/gap_rev1/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/gap_rev1/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/honey/fll.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/honey/fll.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/honey/fll.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/honey/fll.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/honey/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/honey/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/honey/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/honey/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/multino/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/multino/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/multino/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/multino/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/neuraghe/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/neuraghe/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/neuraghe/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/neuraghe/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/oprecompkw/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/oprecompkw/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/oprecompkw/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/oprecompkw/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/pulp/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/pulp/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/pulp/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/pulp/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/pulp_v1/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/pulp_v1/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/pulp_v1/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/pulp_v1/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/pulpissimo/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/pulpissimo/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/pulpissimo/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/pulpissimo/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/pulpissimo_v1/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/pulpissimo_v1/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/pulpissimo_v1/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/pulpissimo_v1/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/quentin/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/quentin/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/quentin/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/quentin/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/apb_soc.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/apb_soc.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/apb_soc.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/apb_soc.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/gpio.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/gpio.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/gpio.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/gpio.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/usoc_v1/pulp.h diff --git a/gap8/rtos/pulp/hal_pulp/include/hal/chips/vega/efuse.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vega/efuse.h new file mode 100644 index 000000000..dc93aa059 --- /dev/null +++ b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vega/efuse.h @@ -0,0 +1,178 @@ +/* + * Copyright (C) 2018 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __HAL_VEGA_EFUSE_H__ +#define __HAL_VEGA_EFUSE_H__ + +#include "hal/pulp.h" + +typedef struct { + union { + struct { + unsigned int platform:3; + unsigned int bootmode:8; + unsigned int encrypted:1; + unsigned int wait_xtal:1; + unsigned int icache_enabled:1; + } __attribute__((packed)); + uint32_t raw; + } info; + union { + struct { + unsigned int fll_freq_set:1; + unsigned int fll_conf:1; + unsigned int fll_lock:1; + unsigned int clkdiv:2; + unsigned int jtag_spis_lock:1; + unsigned int ref_clk_wait:1; + unsigned int pad_config:1; + } __attribute__((packed)); + uint8_t raw; + } info2; + uint8_t Key[4][4]; + uint8_t IV[2][4]; + uint16_t wait_xtal_delta; + uint8_t wait_xtal_min; + uint8_t wait_xtal_max; + uint8_t hyper_rds_delay; + uint8_t fll_freq; + uint8_t fll_lock_tolerance; + uint8_t fll_assert_cycles; + uint8_t periph_div; + uint16_t ref_clk_wait_cycles; + union { + struct { + unsigned int flash_type:2; + unsigned int flash_reset:1; + unsigned int flash_wait:1; + unsigned int flash_wakeup:1; + unsigned int flash_init:1; + unsigned int flash_reset_wait:1; + unsigned int ref_clk_wait_deep_sleep:1; + } __attribute__((packed)); + uint8_t raw; + } info3; + union { + struct { + unsigned int flash_cmd:1; + unsigned int flash_cmd_ds:1; + unsigned int flash_cmd2:1; + unsigned int flash_cmd2_ds:1; + unsigned int flash_cmd3:1; + unsigned int flash_cmd3_ds:1; + unsigned int flash_cmd4:1; + unsigned int flash_cmd4_ds:1; + } __attribute__((packed)); + uint8_t raw; + } info4; + union { + struct { + unsigned int flash_cs:1; + unsigned int flash_itf:2; + unsigned int flash_pad:2; + unsigned int hyperchip_size:1; + unsigned int hyper_delay:1; + unsigned int hyper_latency:1; + } __attribute__((packed)); + uint8_t raw; + } info5; + union { + struct { + unsigned int i2c_loader:1; + unsigned int i2c_itf:1; + unsigned int i2c_pad_config:2; + unsigned int signature:1; + unsigned int flash_id:1; + unsigned int mram_trim:1; + unsigned int set_clkdiv:1; + } __attribute__((packed)); + uint8_t raw; + } info6; + uint8_t flash_cmd; + uint8_t flash_cmd2; + uint8_t flash_cmd3; + uint8_t flash_cmd4; + uint8_t flash_wait; + uint32_t hyperchip_size; + uint16_t i2c_div; + uint8_t i2c_cs; + uint8_t flash_reset_wait; + uint8_t hyper_latency; + uint16_t ref_clk_wait_cycles_deep_sleep; + uint16_t flash_id; + uint16_t mram_trim_size; + uint8_t padding[8]; +} __attribute__((packed)) efuse_t; + +#define PLP_EFUSE_PLT_OTHER 0 +#define PLP_EFUSE_PLT_FPGA 1 +#define PLP_EFUSE_PLT_RTL 2 +#define PLP_EFUSE_PLT_VP 3 +#define PLP_EFUSE_PLT_CHIP 4 + + +#define PLP_EFUSE_BOOT_JTAG 0 +#define PLP_EFUSE_BOOT_STOP 1 +#define PLP_EFUSE_BOOT_FLASH 2 +#define PLP_EFUSE_BOOT_WAIT 4 +#define PLP_EFUSE_BOOT_WAIT_END 5 + + +#define EFUSE_INFO_REG 0 +#define EFUSE_INFO2_REG 1 +#define EFUSE_AES_KEY_FIRST_REG 2 +#define EFUSE_AES_KEY_NB_REGS 16 +#define EFUSE_AES_IV_FIRST_REG 18 +#define EFUSE_AES_IV_NB_REGS 8 +#define EFUSE_WAIT_XTAL_DELTA_REG_LSB 26 +#define EFUSE_WAIT_XTAL_DELTA_REG_MSB 27 +#define EFUSE_WAIT_XTAL_MIN_REG 28 +#define EFUSE_WAIT_XTAL_MAX_REG 29 +#define EFUSE_HYPER_RDS_DELAY 30 +#define EFUSE_FLL_FREQ 31 +#define EFUSE_FLL_TOLERANCE 32 +#define EFUSE_FLL_ASSERT_CYCLES 33 +#define EFUSE_PERIPH_DIV 34 +#define EFUSE_REF_CLK_WAIT_CYCLES_LSB 35 +#define EFUSE_REF_CLK_WAIT_CYCLES_MSB 36 +#define EFUSE_INFO3_REG 37 +#define EFUSE_INFO4_REG 38 +#define EFUSE_INFO5_REG 39 +#define EFUSE_INFO6_REG 40 +#define EFUSE_FLASH_CMD 41 +#define EFUSE_FLASH_CMD2 42 +#define EFUSE_FLASH_CMD3 43 +#define EFUSE_FLASH_CMD4 44 +#define EFUSE_FLASH_WAIT 45 +#define EFUSE_HYPERCHIP_SIZE 46 +#define EFUSE_I2C_DIV_LSB 47 +#define EFUSE_I2C_DIV_MSB 48 +#define EFUSE_I2C_CS 49 +#define EFUSE_FLASH_RESET_WAIT 50 +#define EFUSE_HYPER_LATENCY 51 +#define EFUSE_REF_CLK_WAIT_CYCLES_DEEP_SLEEP_LSB 52 +#define EFUSE_REF_CLK_WAIT_CYCLES_DEEP_SLEEP_MSB 53 +#define EFUSE_FLASH_ID_LSB 54 +#define EFUSE_FLASH_ID_MSB 55 +#define EFUSE_MRAM_TRIM_SIZE 56 +#define EFUSE_MRAM_TRIM_START 57 +// DONT PUT ANYTHING AFTER THIS EFUSE AS IT IS A VARIABLE SIZE ARRAY + +static inline unsigned int plp_efuse_readShort(int lsb, int msb) { + return plp_efuse_readByte(lsb) | (plp_efuse_readByte(msb) << 8); +} + +#endif diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vega/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vega/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vega/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vega/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc2/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc2/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc2/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc2/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc2_1/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc2_1/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc2_1/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc2_1/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/fll.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/fll.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/fll.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/fll.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/freq.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/freq.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/freq.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/freq.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/fll.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/fll.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/fll.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/fll.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/freq.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/freq.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/freq.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/freq.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_1/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/fll.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/fll.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/fll.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/fll.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/freq.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/freq.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/freq.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/freq.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc3_5/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/fll.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/fll.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/fll.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/fll.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/freq.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/freq.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/freq.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/freq.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/vivosoc4/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/chips/wolfe/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/chips/wolfe/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/chips/wolfe/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/chips/wolfe/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/cluster_ctrl/cluster_ctrl_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/cluster_ctrl/cluster_ctrl_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/cluster_ctrl/cluster_ctrl_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/cluster_ctrl/cluster_ctrl_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/debug_bridge/debug_bridge.h b/gap8/rtos/pulp/hal_pulp/include/hal/debug_bridge/debug_bridge.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/debug_bridge/debug_bridge.h rename to gap8/rtos/pulp/hal_pulp/include/hal/debug_bridge/debug_bridge.h diff --git a/rtos/pulp/hal_pulp/include/hal/dma/mchan_v4.h b/gap8/rtos/pulp/hal_pulp/include/hal/dma/mchan_v4.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/dma/mchan_v4.h rename to gap8/rtos/pulp/hal_pulp/include/hal/dma/mchan_v4.h diff --git a/rtos/pulp/hal_pulp/include/hal/dma/mchan_v5.h b/gap8/rtos/pulp/hal_pulp/include/hal/dma/mchan_v5.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/dma/mchan_v5.h rename to gap8/rtos/pulp/hal_pulp/include/hal/dma/mchan_v5.h diff --git a/rtos/pulp/hal_pulp/include/hal/dma/mchan_v6.h b/gap8/rtos/pulp/hal_pulp/include/hal/dma/mchan_v6.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/dma/mchan_v6.h rename to gap8/rtos/pulp/hal_pulp/include/hal/dma/mchan_v6.h diff --git a/rtos/pulp/hal_pulp/include/hal/dma/mchan_v7.h b/gap8/rtos/pulp/hal_pulp/include/hal/dma/mchan_v7.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/dma/mchan_v7.h rename to gap8/rtos/pulp/hal_pulp/include/hal/dma/mchan_v7.h diff --git a/rtos/pulp/hal_pulp/include/hal/efuse/efuse_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/efuse/efuse_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/efuse/efuse_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/efuse/efuse_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/eu/eu_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/eu/eu_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/eu/eu_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/eu/eu_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/eu/eu_v1_ids.h b/gap8/rtos/pulp/hal_pulp/include/hal/eu/eu_v1_ids.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/eu/eu_v1_ids.h rename to gap8/rtos/pulp/hal_pulp/include/hal/eu/eu_v1_ids.h diff --git a/rtos/pulp/hal_pulp/include/hal/eu/eu_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/eu/eu_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/eu/eu_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/eu/eu_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/fll/fll_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/fll/fll_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/fll/fll_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/fll/fll_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v0.h b/gap8/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v0.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/gpio/gpio_v0.h rename to gap8/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v0.h diff --git a/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/gpio/gpio_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/gpio/gpio_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/gpio/gpio_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/gvsoc/gvsoc.h b/gap8/rtos/pulp/hal_pulp/include/hal/gvsoc/gvsoc.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/gvsoc/gvsoc.h rename to gap8/rtos/pulp/hal_pulp/include/hal/gvsoc/gvsoc.h diff --git a/rtos/pulp/hal_pulp/include/hal/hwce/hwce_v4.h b/gap8/rtos/pulp/hal_pulp/include/hal/hwce/hwce_v4.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/hwce/hwce_v4.h rename to gap8/rtos/pulp/hal_pulp/include/hal/hwce/hwce_v4.h diff --git a/rtos/pulp/hal_pulp/include/hal/hwce/hwce_v5.h b/gap8/rtos/pulp/hal_pulp/include/hal/hwce/hwce_v5.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/hwce/hwce_v5.h rename to gap8/rtos/pulp/hal_pulp/include/hal/hwce/hwce_v5.h diff --git a/rtos/pulp/hal_pulp/include/hal/hwme/hwme_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/hwme/hwme_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/hwme/hwme_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/hwme/hwme_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/icache/icache_ctrl_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/icache/icache_ctrl_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/icache/icache_ctrl_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/icache/icache_ctrl_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/icache/icache_ctrl_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/icache/icache_ctrl_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/icache/icache_ctrl_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/icache/icache_ctrl_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/ima/ima_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/ima/ima_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/ima/ima_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/ima/ima_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/itc/itc_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/itc/itc_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/itc/itc_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/itc/itc_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/maestro/pmu_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/maestro/pmu_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/maestro/pmu_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/maestro/pmu_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/mailbox/mailbox_v0.h b/gap8/rtos/pulp/hal_pulp/include/hal/mailbox/mailbox_v0.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/mailbox/mailbox_v0.h rename to gap8/rtos/pulp/hal_pulp/include/hal/mailbox/mailbox_v0.h diff --git a/rtos/pulp/hal_pulp/include/hal/or1k/or10nv2_builtins.h b/gap8/rtos/pulp/hal_pulp/include/hal/or1k/or10nv2_builtins.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/or1k/or10nv2_builtins.h rename to gap8/rtos/pulp/hal_pulp/include/hal/or1k/or10nv2_builtins.h diff --git a/rtos/pulp/hal_pulp/include/hal/or1k/or1k_v5.h b/gap8/rtos/pulp/hal_pulp/include/hal/or1k/or1k_v5.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/or1k/or1k_v5.h rename to gap8/rtos/pulp/hal_pulp/include/hal/or1k/or1k_v5.h diff --git a/rtos/pulp/hal_pulp/include/hal/periph/spi_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/periph/spi_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/periph/spi_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/periph/spi_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/pulp.h b/gap8/rtos/pulp/hal_pulp/include/hal/pulp.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/pulp.h rename to gap8/rtos/pulp/hal_pulp/include/hal/pulp.h diff --git a/rtos/pulp/hal_pulp/include/hal/pulp_io.h b/gap8/rtos/pulp/hal_pulp/include/hal/pulp_io.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/pulp_io.h rename to gap8/rtos/pulp/hal_pulp/include/hal/pulp_io.h diff --git a/rtos/pulp/hal_pulp/include/hal/pwm/pwm_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/pwm/pwm_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/pwm/pwm_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/pwm/pwm_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/rab/rab_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/rab/rab_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/rab/rab_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/rab/rab_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/riscv/builtins_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/riscv/builtins_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/riscv/builtins_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/riscv/builtins_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/riscv/builtins_v2_emu.h b/gap8/rtos/pulp/hal_pulp/include/hal/riscv/builtins_v2_emu.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/riscv/builtins_v2_emu.h rename to gap8/rtos/pulp/hal_pulp/include/hal/riscv/builtins_v2_emu.h diff --git a/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/riscv/riscv_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v4.h b/gap8/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v4.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/riscv/riscv_v4.h rename to gap8/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v4.h diff --git a/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v5.h b/gap8/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v5.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/riscv/riscv_v5.h rename to gap8/rtos/pulp/hal_pulp/include/hal/riscv/riscv_v5.h diff --git a/rtos/pulp/hal_pulp/include/hal/riscv/types.h b/gap8/rtos/pulp/hal_pulp/include/hal/riscv/types.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/riscv/types.h rename to gap8/rtos/pulp/hal_pulp/include/hal/riscv/types.h diff --git a/rtos/pulp/hal_pulp/include/hal/rom/rom_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/rom/rom_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/rom/rom_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/rom/rom_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/rtc/rtc_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/rtc/rtc_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/rtc/rtc_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/rtc/rtc_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/soc_eu/soc_eu_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/tb/tb.h b/gap8/rtos/pulp/hal_pulp/include/hal/tb/tb.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/tb/tb.h rename to gap8/rtos/pulp/hal_pulp/include/hal/tb/tb.h diff --git a/rtos/pulp/hal_pulp/include/hal/timer/timer_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/timer/timer_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/timer/timer_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/timer/timer_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/timer/timer_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/timer/timer_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/timer/timer_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/timer/timer_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/tryx/tryx_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/tryx/tryx_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/tryx/tryx_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/tryx/tryx_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/cpi/udma_cpi_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/cpi/udma_cpi_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/cpi/udma_cpi_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/cpi/udma_cpi_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/csi2/udma_csi2_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/csi2/udma_csi2_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/csi2/udma_csi2_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/csi2/udma_csi2_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/hyper/udma_hyper_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/i2c/udma_i2c_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/i2c/udma_i2c_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/i2c/udma_i2c_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/i2c/udma_i2c_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/i2c/udma_i2c_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/i2c/udma_i2c_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/i2c/udma_i2c_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/i2c/udma_i2c_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/i2s/udma_i2s_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/i2s/udma_i2s_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/i2s/udma_i2s_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/i2s/udma_i2s_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/spim/udma_spim_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/tcdm/udma_tcdm_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/tcdm/udma_tcdm_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/tcdm/udma_tcdm_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/tcdm/udma_tcdm_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/uart/udma_uart_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/uart/udma_uart_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/uart/udma_uart_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/uart/udma_uart_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/udma_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/udma_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/udma_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/udma_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/udma_v2.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/udma_v2.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/udma_v2.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/udma_v2.h diff --git a/rtos/pulp/hal_pulp/include/hal/udma/udma_v3.h b/gap8/rtos/pulp/hal_pulp/include/hal/udma/udma_v3.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/udma/udma_v3.h rename to gap8/rtos/pulp/hal_pulp/include/hal/udma/udma_v3.h diff --git a/rtos/pulp/hal_pulp/include/hal/utils.h b/gap8/rtos/pulp/hal_pulp/include/hal/utils.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/utils.h rename to gap8/rtos/pulp/hal_pulp/include/hal/utils.h diff --git a/rtos/pulp/hal_pulp/include/hal/vendors/dolphin/rtc.h b/gap8/rtos/pulp/hal_pulp/include/hal/vendors/dolphin/rtc.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/vendors/dolphin/rtc.h rename to gap8/rtos/pulp/hal_pulp/include/hal/vendors/dolphin/rtc.h diff --git a/rtos/pulp/hal_pulp/include/hal/vendors/iid/quiddikey_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/vendors/iid/quiddikey_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/vendors/iid/quiddikey_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/vendors/iid/quiddikey_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/vendors/lnt/csi2_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/vendors/lnt/csi2_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/vendors/lnt/csi2_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/vendors/lnt/csi2_v1.h diff --git a/rtos/pulp/hal_pulp/include/hal/xne/xne_v1.h b/gap8/rtos/pulp/hal_pulp/include/hal/xne/xne_v1.h similarity index 100% rename from rtos/pulp/hal_pulp/include/hal/xne/xne_v1.h rename to gap8/rtos/pulp/hal_pulp/include/hal/xne/xne_v1.h diff --git a/rtos/pulp/hal_pulp/src/hal/mailbox/mailbox_v0.c b/gap8/rtos/pulp/hal_pulp/src/hal/mailbox/mailbox_v0.c similarity index 100% rename from rtos/pulp/hal_pulp/src/hal/mailbox/mailbox_v0.c rename to gap8/rtos/pulp/hal_pulp/src/hal/mailbox/mailbox_v0.c diff --git a/rtos/pulp/hal_pulp/src/hal/rab/rab_v1.c b/gap8/rtos/pulp/hal_pulp/src/hal/rab/rab_v1.c similarity index 100% rename from rtos/pulp/hal_pulp/src/hal/rab/rab_v1.c rename to gap8/rtos/pulp/hal_pulp/src/hal/rab/rab_v1.c diff --git a/rtos/pulp/hal_pulp/src/hal/tryx/tryx_v1.c b/gap8/rtos/pulp/hal_pulp/src/hal/tryx/tryx_v1.c similarity index 100% rename from rtos/pulp/hal_pulp/src/hal/tryx/tryx_v1.c rename to gap8/rtos/pulp/hal_pulp/src/hal/tryx/tryx_v1.c diff --git a/rtos/pulp/pulp-os/.gitignore b/gap8/rtos/pulp/pulp-os/.gitignore similarity index 100% rename from rtos/pulp/pulp-os/.gitignore rename to gap8/rtos/pulp/pulp-os/.gitignore diff --git a/rtos/pulp/pulp-os/LICENSE b/gap8/rtos/pulp/pulp-os/LICENSE similarity index 100% rename from rtos/pulp/pulp-os/LICENSE rename to gap8/rtos/pulp/pulp-os/LICENSE diff --git a/rtos/pulp/pulp-os/Makefile b/gap8/rtos/pulp/pulp-os/Makefile similarity index 100% rename from rtos/pulp/pulp-os/Makefile rename to gap8/rtos/pulp/pulp-os/Makefile diff --git a/rtos/pulp/pulp-os/configs/bare.mk b/gap8/rtos/pulp/pulp-os/configs/bare.mk similarity index 100% rename from rtos/pulp/pulp-os/configs/bare.mk rename to gap8/rtos/pulp/pulp-os/configs/bare.mk diff --git a/rtos/pulp/pulp-os/configs/pulpos.mk b/gap8/rtos/pulp/pulp-os/configs/pulpos.mk similarity index 100% rename from rtos/pulp/pulp-os/configs/pulpos.mk rename to gap8/rtos/pulp/pulp-os/configs/pulpos.mk diff --git a/rtos/pulp/pulp-os/configs/pulpos_profile.mk b/gap8/rtos/pulp/pulp-os/configs/pulpos_profile.mk similarity index 100% rename from rtos/pulp/pulp-os/configs/pulpos_profile.mk rename to gap8/rtos/pulp/pulp-os/configs/pulpos_profile.mk diff --git a/rtos/pulp/pulp-os/configs/tiny.mk b/gap8/rtos/pulp/pulp-os/configs/tiny.mk similarity index 100% rename from rtos/pulp/pulp-os/configs/tiny.mk rename to gap8/rtos/pulp/pulp-os/configs/tiny.mk diff --git a/rtos/pulp/pulp-os/drivers/cpi/cpi-v1.c b/gap8/rtos/pulp/pulp-os/drivers/cpi/cpi-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/cpi/cpi-v1.c rename to gap8/rtos/pulp/pulp-os/drivers/cpi/cpi-v1.c diff --git a/rtos/pulp/pulp-os/drivers/dmacpy/dmacpy.c b/gap8/rtos/pulp/pulp-os/drivers/dmacpy/dmacpy.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/dmacpy/dmacpy.c rename to gap8/rtos/pulp/pulp-os/drivers/dmacpy/dmacpy.c diff --git a/rtos/pulp/pulp-os/drivers/dmacpy/dmacpy_asm.S b/gap8/rtos/pulp/pulp-os/drivers/dmacpy/dmacpy_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/dmacpy/dmacpy_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/dmacpy/dmacpy_asm.S diff --git a/rtos/pulp/pulp-os/drivers/drivers.mk b/gap8/rtos/pulp/pulp-os/drivers/drivers.mk similarity index 100% rename from rtos/pulp/pulp-os/drivers/drivers.mk rename to gap8/rtos/pulp/pulp-os/drivers/drivers.mk diff --git a/rtos/pulp/pulp-os/drivers/gpio/gpio-v2.c b/gap8/rtos/pulp/pulp-os/drivers/gpio/gpio-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/gpio/gpio-v2.c rename to gap8/rtos/pulp/pulp-os/drivers/gpio/gpio-v2.c diff --git a/rtos/pulp/pulp-os/drivers/gpio/gpio-v3.c b/gap8/rtos/pulp/pulp-os/drivers/gpio/gpio-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/gpio/gpio-v3.c rename to gap8/rtos/pulp/pulp-os/drivers/gpio/gpio-v3.c diff --git a/rtos/pulp/pulp-os/drivers/hwce/hwce-v4.c b/gap8/rtos/pulp/pulp-os/drivers/hwce/hwce-v4.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/hwce/hwce-v4.c rename to gap8/rtos/pulp/pulp-os/drivers/hwce/hwce-v4.c diff --git a/rtos/pulp/pulp-os/drivers/hyper/hyperram-v1.c b/gap8/rtos/pulp/pulp-os/drivers/hyper/hyperram-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/hyper/hyperram-v1.c rename to gap8/rtos/pulp/pulp-os/drivers/hyper/hyperram-v1.c diff --git a/rtos/pulp/pulp-os/drivers/hyper/hyperram-v1_asm.S b/gap8/rtos/pulp/pulp-os/drivers/hyper/hyperram-v1_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/hyper/hyperram-v1_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/hyper/hyperram-v1_asm.S diff --git a/rtos/pulp/pulp-os/drivers/hyper/hyperram-v2.c b/gap8/rtos/pulp/pulp-os/drivers/hyper/hyperram-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/hyper/hyperram-v2.c rename to gap8/rtos/pulp/pulp-os/drivers/hyper/hyperram-v2.c diff --git a/rtos/pulp/pulp-os/drivers/hyper/hyperram-v2_asm.S b/gap8/rtos/pulp/pulp-os/drivers/hyper/hyperram-v2_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/hyper/hyperram-v2_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/hyper/hyperram-v2_asm.S diff --git a/rtos/pulp/pulp-os/drivers/i2c/i2c-v2.c b/gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/i2c/i2c-v2.c rename to gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v2.c diff --git a/rtos/pulp/pulp-os/drivers/i2c/i2c-v2_asm.S b/gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v2_asm.S similarity index 93% rename from rtos/pulp/pulp-os/drivers/i2c/i2c-v2_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v2_asm.S index 2ec63345f..dc47dd262 100644 --- a/rtos/pulp/pulp-os/drivers/i2c/i2c-v2_asm.S +++ b/gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v2_asm.S @@ -28,7 +28,12 @@ __rt_i2c_handle_tx_copy: slli x8, x10, 2 +#ifdef CONFIG_NO_FC_TINY + la x11, __rt_udma_channels + p.lw x8, x11(x8) +#else lw x8, %tiny(__rt_udma_channels)(x8) +#endif lw x11, PI_I2C_T_PENDING_STEP(x8) jr x11 @@ -80,6 +85,11 @@ __rt_i2c_step3: __rt_i2c_handle_rx_copy: slli x8, x10, 2 +#ifdef CONFIG_NO_FC_TINY + la x11, __rt_udma_channels + p.lw x8, x11(x8) +#else lw x8, %tiny(__rt_udma_channels)(x8) +#endif j __rt_i2c_step3 diff --git a/rtos/pulp/pulp-os/drivers/i2c/i2c-v3.c b/gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/i2c/i2c-v3.c rename to gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v3.c diff --git a/rtos/pulp/pulp-os/drivers/i2c/i2c-v3_asm.S b/gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v3_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/i2c/i2c-v3_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/i2c/i2c-v3_asm.S diff --git a/rtos/pulp/pulp-os/drivers/i2s/i2s-v1.c b/gap8/rtos/pulp/pulp-os/drivers/i2s/i2s-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/i2s/i2s-v1.c rename to gap8/rtos/pulp/pulp-os/drivers/i2s/i2s-v1.c diff --git a/rtos/pulp/pulp-os/drivers/i2s/i2s-v1_asm.S b/gap8/rtos/pulp/pulp-os/drivers/i2s/i2s-v1_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/i2s/i2s-v1_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/i2s/i2s-v1_asm.S diff --git a/rtos/pulp/pulp-os/drivers/pads/pads-v1.c b/gap8/rtos/pulp/pulp-os/drivers/pads/pads-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/pads/pads-v1.c rename to gap8/rtos/pulp/pulp-os/drivers/pads/pads-v1.c diff --git a/rtos/pulp/pulp-os/drivers/pwm/pwm-v1.c b/gap8/rtos/pulp/pulp-os/drivers/pwm/pwm-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/pwm/pwm-v1.c rename to gap8/rtos/pulp/pulp-os/drivers/pwm/pwm-v1.c diff --git a/rtos/pulp/pulp-os/drivers/pwm/pwm.c b/gap8/rtos/pulp/pulp-os/drivers/pwm/pwm.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/pwm/pwm.c rename to gap8/rtos/pulp/pulp-os/drivers/pwm/pwm.c diff --git a/rtos/pulp/pulp-os/drivers/pwm/pwm_asm.S b/gap8/rtos/pulp/pulp-os/drivers/pwm/pwm_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/pwm/pwm_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/pwm/pwm_asm.S diff --git a/rtos/pulp/pulp-os/drivers/spi/spim-v2.c b/gap8/rtos/pulp/pulp-os/drivers/spi/spim-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/spi/spim-v2.c rename to gap8/rtos/pulp/pulp-os/drivers/spi/spim-v2.c diff --git a/rtos/pulp/pulp-os/drivers/spi/spim-v2_asm.S b/gap8/rtos/pulp/pulp-os/drivers/spi/spim-v2_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/spi/spim-v2_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/spi/spim-v2_asm.S diff --git a/rtos/pulp/pulp-os/drivers/spi/spim-v3.c b/gap8/rtos/pulp/pulp-os/drivers/spi/spim-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/spi/spim-v3.c rename to gap8/rtos/pulp/pulp-os/drivers/spi/spim-v3.c diff --git a/rtos/pulp/pulp-os/drivers/spi/spim-v3_asm.S b/gap8/rtos/pulp/pulp-os/drivers/spi/spim-v3_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/spi/spim-v3_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/spi/spim-v3_asm.S diff --git a/rtos/pulp/pulp-os/drivers/uart/uart.c b/gap8/rtos/pulp/pulp-os/drivers/uart/uart.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/uart/uart.c rename to gap8/rtos/pulp/pulp-os/drivers/uart/uart.c diff --git a/rtos/pulp/pulp-os/drivers/uart/uart_asm.S b/gap8/rtos/pulp/pulp-os/drivers/uart/uart_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/uart/uart_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/uart/uart_asm.S diff --git a/rtos/pulp/pulp-os/drivers/udma/udma-v2.c b/gap8/rtos/pulp/pulp-os/drivers/udma/udma-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/udma/udma-v2.c rename to gap8/rtos/pulp/pulp-os/drivers/udma/udma-v2.c diff --git a/rtos/pulp/pulp-os/drivers/udma/udma-v2_asm.S b/gap8/rtos/pulp/pulp-os/drivers/udma/udma-v2_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/udma/udma-v2_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/udma/udma-v2_asm.S diff --git a/rtos/pulp/pulp-os/drivers/udma/udma-v3.c b/gap8/rtos/pulp/pulp-os/drivers/udma/udma-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers/udma/udma-v3.c rename to gap8/rtos/pulp/pulp-os/drivers/udma/udma-v3.c diff --git a/rtos/pulp/pulp-os/drivers/udma/udma-v3_asm.S b/gap8/rtos/pulp/pulp-os/drivers/udma/udma-v3_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers/udma/udma-v3_asm.S rename to gap8/rtos/pulp/pulp-os/drivers/udma/udma-v3_asm.S diff --git a/rtos/pulp/pulp-os/drivers_deprecated/camera/camera.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/camera/camera.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/camera/camera.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/camera/camera.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/camera/himax.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/camera/himax.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/camera/himax.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/camera/himax.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/dolphin/rtc.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/dolphin/rtc.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/dolphin/rtc.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/dolphin/rtc.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/drivers.mk b/gap8/rtos/pulp/pulp-os/drivers_deprecated/drivers.mk similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/drivers.mk rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/drivers.mk diff --git a/rtos/pulp/pulp-os/drivers_deprecated/flash.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/flash.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/flash.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/flash.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v0.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v0.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v0.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v0.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v2.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v2.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v2.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v3.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v3.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/gpio/gpio-v3.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperflash-v1.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperflash-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperflash-v1.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperflash-v1.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperflash-v2.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperflash-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperflash-v2.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperflash-v2.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperram-v1.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperram-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperram-v1.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperram-v1.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperram-v2.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperram-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperram-v2.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/hyper/hyperram-v2.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/i2c/eeprom.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/i2c/eeprom.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/i2c/eeprom.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/i2c/eeprom.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v1.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v1.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v1.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v2.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v2.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v2.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v3.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v3.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/i2c/i2c-v3.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v1.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v1.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v1.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v2.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v2.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v2.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v3.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v3.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/i2s/i2s-v3.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/mram/mram-v1.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/mram/mram-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/mram/mram-v1.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/mram/mram-v1.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/pads/pads-v0.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/pads/pads-v0.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/pads/pads-v0.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/pads/pads-v0.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/pads/pads-v1.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/pads/pads-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/pads/pads-v1.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/pads/pads-v1.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/read_fs.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/read_fs.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/read_fs.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/read_fs.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/rtc/rtc_v2.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/rtc/rtc_v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/rtc/rtc_v2.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/rtc/rtc_v2.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/rtc/rtc_v2_asm.S b/gap8/rtos/pulp/pulp-os/drivers_deprecated/rtc/rtc_v2_asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/rtc/rtc_v2_asm.S rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/rtc/rtc_v2_asm.S diff --git a/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v1.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v1.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v1.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v2-asm.S b/gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v2-asm.S similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v2-asm.S rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v2-asm.S diff --git a/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v2.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v2.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v2.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v3.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v3.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spiflash-v3.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v0.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v0.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v0.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v0.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v1.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v1.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v1.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v1.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v2.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v2.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v2.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v2.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v3.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v3.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v3.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/spim/spim-v3.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/uart/uart-v0.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/uart/uart-v0.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/uart/uart-v0.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/uart/uart-v0.c diff --git a/rtos/pulp/pulp-os/drivers_deprecated/uart/uart.c b/gap8/rtos/pulp/pulp-os/drivers_deprecated/uart/uart.c similarity index 100% rename from rtos/pulp/pulp-os/drivers_deprecated/uart/uart.c rename to gap8/rtos/pulp/pulp-os/drivers_deprecated/uart/uart.c diff --git a/gap8/rtos/pulp/pulp-os/gap_sdk.mk b/gap8/rtos/pulp/pulp-os/gap_sdk.mk new file mode 100644 index 000000000..acbd8c6fa --- /dev/null +++ b/gap8/rtos/pulp/pulp-os/gap_sdk.mk @@ -0,0 +1,103 @@ +ifndef GAP_SDK_HOME + $(error Please run 'source sourceme.sh' in gap_sdk first) +endif + +CD = cd +CP = cp -rf +RM = rm -rf +MKDIR = mkdir + +# The C program compiler. +CXX = riscv32-unknown-elf-g++ +CC = riscv32-unknown-elf-gcc +AR = riscv32-unknown-elf-ar +OBJDUMP = riscv32-unknown-elf-objdump + +LDFLAGS = -T$(GAP_SDK_HOME)/tools/ld/link.gap8.ld + +# The pre-processor and compiler options. +# Users can override those variables from the command line. +COMMON = -march=rv32imcxgap8 -mPE=8 -mFC=1 -D__riscv__ -Os -g -fno-jump-tables -Werror -fno-tree-loop-distribute-patterns -Wextra -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wundef -fdata-sections -ffunction-sections + +ASMFLAGS = $(COMMON) -DLANGUAGE_ASSEMBLY -MMD -MP -c + +CFLAGS = $(COMMON) -MMD -MP -c -DCONFIG_GAP + +# Final binary +#------------------------------------------ +RT_LIB = $(TARGET_INSTALL_DIR)/libs/librt.a +IO_LIB = $(TARGET_INSTALL_DIR)/libs/libio.a + +HEADER_DIR = $(TARGET_INSTALL_DIR)/include +BUILD_RT ?= $(BUILD_DIR)/rt +COMMON_SRC += $(RUNTIME_PATH)/pulp-rt/rt_conf.c $(RUNTIME_PATH)/pulp-rt/rt_pad_conf.c + +HEADERS = $(wildcard $(shell find $(RUNTIME_PATH)/include -name "*.h")) + +RT_S_OBJECTS = $(patsubst %.S, $(BUILD_RT)/%.o, $(wildcard $(shell find $(RUNTIME_PATH)/pulp-rt -name "*.S" | sort))) + +RT_C_OBJECTS = $(patsubst %.c, $(BUILD_RT)/%.o, $(wildcard $(shell find $(RUNTIME_PATH)/pulp-rt/kernel -name "*.c") $(shell find $(RUNTIME_PATH)/pulp-rt/drivers -name "*.c") $(COMMON_SRC))) + +RT_OBJECTS = $(RT_S_OBJECTS) $(RT_C_OBJECTS) + +IO_C_OBJECTS = $(patsubst %.c, $(BUILD_RT)/%.o, $(wildcard $(shell find $(RUNTIME_PATH)/pulp-rt/libs/io -name "*.c"))) + +INC_DEFINE = -include $(TARGET_INSTALL_DIR)/include/rt/chips/$(TARGET_NAME)/config.h + +INC = $(TARGET_INSTALL_DIR)/include/ \ + $(TARGET_INSTALL_DIR)/include/io \ + $(INSTALL_DIR)/include + +INC_PATH = $(foreach d, $(INC), -I$d) $(INC_DEFINE) + +$(HEADER_DIR): + mkdir -p $@ + +install_headers: $(HEADER_DIR) + make -C $(GAP_SDK_HOME)/tools/pulp_tools/pulp-configs all_scons INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(TARGET_INSTALL_DIR) + if [ -e $(GAP_SDK_HOME)/gap8/rtos/pulp/archi ]; then \ + cd $(GAP_SDK_HOME)/gap8/rtos/pulp/archi && \ + export INSTALL_DIR=$(GAP_SDK_HOME)/gap8/rtos/pulp/archi_gap/workstation && \ + export TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/gap8/rtos/pulp/archi_gap/target && \ + make build; \ + fi + if [ -e $(GAP_SDK_HOME)/gap8/rtos/pulp/hal ]; then \ + cd $(GAP_SDK_HOME)/gap8/rtos/pulp/hal && \ + export TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/gap8/rtos/pulp/hal_gap/target && \ + make build; \ + fi + cd $(GAP_SDK_HOME)/gap8/rtos/pulp/archi_gap/target && rsync -avR * $(TARGET_INSTALL_DIR) + cd $(GAP_SDK_HOME)/gap8/rtos/pulp/archi_gap/workstation && rsync -avR * $(INSTALL_DIR) + cd $(GAP_SDK_HOME)/gap8/rtos/pulp/hal_gap/target && rsync -avR * $(TARGET_INSTALL_DIR) + +install_rt_gap8: + make -C $(GAP_SDK_HOME)/gap8/rtos/pulp/pulp-os MK_ROOT=$(GAP_SDK_HOME)/gap8/rtos/pulp/pulp-os/mk/gap header build install + +install_rt_vega: + make -C $(GAP_SDK_HOME)/gap8/rtos/pulp/pulp-os MK_ROOT=$(GAP_SDK_HOME)/gap8/rtos/pulp/pulp-os/mk/vega header build install + +# Rules for creating the libs. +#------------------------------------------ +gap: install_rt_gap8 + +gap_rev1: install_rt_gap8 + +gap8_revc: install_rt_gap8 + +vega: install_rt_vega + +clean: + rm -rf $(GAP_SDK_HOME)/gap8/rtos/pulp/archi_gap $(GAP_SDK_HOME)/gap8/rtos/pulp/hal_gap + +DEFAULT_EXCLUDES=--exclude=".git*" --exclude="BUILD*" --exclude="build*" --exclude="_build*" --exclude="__pycache__/" --exclude=junit-reports + +artifact: + mkdir -p $(PULPOS_ARTIFACT_PATH) + rsync -avR $(DEFAULT_EXCLUDES) * $(PULPOS_ARTIFACT_PATH) + +#all: install_headers $(TARGET_CHIP) + + + + + diff --git a/rtos/pulp/pulp-os/include/Gap8.h b/gap8/rtos/pulp/pulp-os/include/Gap8.h similarity index 100% rename from rtos/pulp/pulp-os/include/Gap8.h rename to gap8/rtos/pulp/pulp-os/include/Gap8.h diff --git a/rtos/pulp/pulp-os/include/bench/bench.h b/gap8/rtos/pulp/pulp-os/include/bench/bench.h similarity index 100% rename from rtos/pulp/pulp-os/include/bench/bench.h rename to gap8/rtos/pulp/pulp-os/include/bench/bench.h diff --git a/rtos/pulp/pulp-os/include/gap8_emul.h b/gap8/rtos/pulp/pulp-os/include/gap8_emul.h similarity index 100% rename from rtos/pulp/pulp-os/include/gap8_emul.h rename to gap8/rtos/pulp/pulp-os/include/gap8_emul.h diff --git a/rtos/pulp/pulp-os/include/io/ctype.h b/gap8/rtos/pulp/pulp-os/include/io/ctype.h similarity index 100% rename from rtos/pulp/pulp-os/include/io/ctype.h rename to gap8/rtos/pulp/pulp-os/include/io/ctype.h diff --git a/rtos/pulp/pulp-os/include/io/stdio.h b/gap8/rtos/pulp/pulp-os/include/io/stdio.h similarity index 100% rename from rtos/pulp/pulp-os/include/io/stdio.h rename to gap8/rtos/pulp/pulp-os/include/io/stdio.h diff --git a/rtos/pulp/pulp-os/include/io/stdlib.h b/gap8/rtos/pulp/pulp-os/include/io/stdlib.h similarity index 100% rename from rtos/pulp/pulp-os/include/io/stdlib.h rename to gap8/rtos/pulp/pulp-os/include/io/stdlib.h diff --git a/rtos/pulp/pulp-os/include/io/string.h b/gap8/rtos/pulp/pulp-os/include/io/string.h similarity index 100% rename from rtos/pulp/pulp-os/include/io/string.h rename to gap8/rtos/pulp/pulp-os/include/io/string.h diff --git a/rtos/pulp/pulp-os/include/omp.h b/gap8/rtos/pulp/pulp-os/include/omp.h similarity index 100% rename from rtos/pulp/pulp-os/include/omp.h rename to gap8/rtos/pulp/pulp-os/include/omp.h diff --git a/rtos/pulp/pulp-os/include/pmsis.h b/gap8/rtos/pulp/pulp-os/include/pmsis.h similarity index 98% rename from rtos/pulp/pulp-os/include/pmsis.h rename to gap8/rtos/pulp/pulp-os/include/pmsis.h index 9f14f5ff6..bb372bd42 100644 --- a/rtos/pulp/pulp-os/include/pmsis.h +++ b/gap8/rtos/pulp/pulp-os/include/pmsis.h @@ -51,6 +51,7 @@ #include "pmsis/chips/gap8/pad.h" #include "pmsis/chips/gap8/gpio.h" #endif +#include "pmsis/rtos/assert.h" #include "pmsis/rtos/os_frontend_api/pmsis_time.h" #include "pmsis/rtos/os_frontend_api/freq.h" #include "pmsis/rtos/malloc/cl_l1_malloc.h" diff --git a/rtos/pulp/pulp-os/include/pmsis/data/cpi.h b/gap8/rtos/pulp/pulp-os/include/pmsis/data/cpi.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/data/cpi.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/data/cpi.h diff --git a/rtos/pulp/pulp-os/include/pmsis/data/data.h b/gap8/rtos/pulp/pulp-os/include/pmsis/data/data.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/data/data.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/data/data.h diff --git a/rtos/pulp/pulp-os/include/pmsis/data/i2c.h b/gap8/rtos/pulp/pulp-os/include/pmsis/data/i2c.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/data/i2c.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/data/i2c.h diff --git a/rtos/pulp/pulp-os/include/pmsis/data/i2s.h b/gap8/rtos/pulp/pulp-os/include/pmsis/data/i2s.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/data/i2s.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/data/i2s.h diff --git a/rtos/pulp/pulp-os/include/pmsis/data/spi.h b/gap8/rtos/pulp/pulp-os/include/pmsis/data/spi.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/data/spi.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/data/spi.h diff --git a/rtos/pulp/pulp-os/include/pmsis/data/uart.h b/gap8/rtos/pulp/pulp-os/include/pmsis/data/uart.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/data/uart.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/data/uart.h diff --git a/rtos/pulp/pulp-os/include/pmsis/data/udma.h b/gap8/rtos/pulp/pulp-os/include/pmsis/data/udma.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/data/udma.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/data/udma.h diff --git a/rtos/pulp/pulp-os/include/pmsis/implem/cpi.h b/gap8/rtos/pulp/pulp-os/include/pmsis/implem/cpi.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/implem/cpi.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/implem/cpi.h diff --git a/rtos/pulp/pulp-os/include/pmsis/implem/dma.h b/gap8/rtos/pulp/pulp-os/include/pmsis/implem/dma.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/implem/dma.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/implem/dma.h diff --git a/rtos/pulp/pulp-os/include/pmsis/implem/implem.h b/gap8/rtos/pulp/pulp-os/include/pmsis/implem/implem.h similarity index 80% rename from rtos/pulp/pulp-os/include/pmsis/implem/implem.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/implem/implem.h index 7ecae8c3d..0ad07137d 100644 --- a/rtos/pulp/pulp-os/include/pmsis/implem/implem.h +++ b/gap8/rtos/pulp/pulp-os/include/pmsis/implem/implem.h @@ -92,5 +92,18 @@ static inline pi_callback_t *pi_callback(pi_callback_t *callback, return callback; } +/* Define this flag to enable assert, args check. */ + +#if defined(DEBUG_ASSERT) +#define IMPLEM_SPECIFIC_ASSERT(test) \ + if (!(test)) \ + { \ + printf("PI assertion error in func %s, %s:%d : %s.\n", \ + __func__, __FILE__, (unsigned int)__LINE__, #test); \ + pmsis_exit(-187); \ + } +#else +#define IMPLEM_SPECIFIC_ASSERT(test) ((void) 0) +#endif /* DEBUG_ASSERT */ #endif diff --git a/rtos/pulp/pulp-os/include/pmsis/implem/perf.h b/gap8/rtos/pulp/pulp-os/include/pmsis/implem/perf.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/implem/perf.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/implem/perf.h diff --git a/rtos/pulp/pulp-os/include/pmsis/implem/pwm.h b/gap8/rtos/pulp/pulp-os/include/pmsis/implem/pwm.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/implem/pwm.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/implem/pwm.h diff --git a/rtos/pulp/pulp-os/include/pmsis/implem/uart.h b/gap8/rtos/pulp/pulp-os/include/pmsis/implem/uart.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/implem/uart.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/implem/uart.h diff --git a/rtos/pulp/pulp-os/include/pmsis/implem/udma.h b/gap8/rtos/pulp/pulp-os/include/pmsis/implem/udma.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis/implem/udma.h rename to gap8/rtos/pulp/pulp-os/include/pmsis/implem/udma.h diff --git a/rtos/pulp/pulp-os/include/pmsis_backend/pmsis_backend_native_task_api.h b/gap8/rtos/pulp/pulp-os/include/pmsis_backend/pmsis_backend_native_task_api.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis_backend/pmsis_backend_native_task_api.h rename to gap8/rtos/pulp/pulp-os/include/pmsis_backend/pmsis_backend_native_task_api.h diff --git a/rtos/pulp/pulp-os/include/pmsis_backend/pmsis_backend_native_types.h b/gap8/rtos/pulp/pulp-os/include/pmsis_backend/pmsis_backend_native_types.h similarity index 100% rename from rtos/pulp/pulp-os/include/pmsis_backend/pmsis_backend_native_types.h rename to gap8/rtos/pulp/pulp-os/include/pmsis_backend/pmsis_backend_native_types.h diff --git a/rtos/pulp/pulp-os/include/pulp.h b/gap8/rtos/pulp/pulp-os/include/pulp.h similarity index 100% rename from rtos/pulp/pulp-os/include/pulp.h rename to gap8/rtos/pulp/pulp-os/include/pulp.h diff --git a/rtos/pulp/pulp-os/include/rt.h b/gap8/rtos/pulp/pulp-os/include/rt.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt.h rename to gap8/rtos/pulp/pulp-os/include/rt.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/gap/config.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/gap/config.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/gap/config.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/gap/config.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/gap8_revc/config.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/gap8_revc/config.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/gap8_revc/config.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/gap8_revc/config.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/gap9/config.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/gap9/config.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/gap9/config.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/gap9/config.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/gap_rev1/config.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/gap_rev1/config.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/gap_rev1/config.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/gap_rev1/config.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/rt_default.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/rt_default.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/rt_default.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/rt_default.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/rt_gap.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/rt_gap.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/rt_gap.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/rt_gap.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/rt_gap9.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/rt_gap9.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/rt_gap9.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/rt_gap9.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/rt_pulp.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/rt_pulp.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/rt_pulp.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/rt_pulp.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/rt_pulpissimo.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/rt_pulpissimo.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/rt_pulpissimo.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/rt_pulpissimo.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/rt_vega.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/rt_vega.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/rt_vega.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/rt_vega.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/rt_wolfe.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/rt_wolfe.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/rt_wolfe.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/rt_wolfe.h diff --git a/rtos/pulp/pulp-os/include/rt/chips/vega/config.h b/gap8/rtos/pulp/pulp-os/include/rt/chips/vega/config.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/chips/vega/config.h rename to gap8/rtos/pulp/pulp-os/include/rt/chips/vega/config.h diff --git a/rtos/pulp/pulp-os/include/rt/data/rt_data_bridge.h b/gap8/rtos/pulp/pulp-os/include/rt/data/rt_data_bridge.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/data/rt_data_bridge.h rename to gap8/rtos/pulp/pulp-os/include/rt/data/rt_data_bridge.h diff --git a/rtos/pulp/pulp-os/include/rt/data/rt_data_camera.h b/gap8/rtos/pulp/pulp-os/include/rt/data/rt_data_camera.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/data/rt_data_camera.h rename to gap8/rtos/pulp/pulp-os/include/rt/data/rt_data_camera.h diff --git a/rtos/pulp/pulp-os/include/rt/data/rt_data_i2c.h b/gap8/rtos/pulp/pulp-os/include/rt/data/rt_data_i2c.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/data/rt_data_i2c.h rename to gap8/rtos/pulp/pulp-os/include/rt/data/rt_data_i2c.h diff --git a/rtos/pulp/pulp-os/include/rt/data/rt_data_spim.h b/gap8/rtos/pulp/pulp-os/include/rt/data/rt_data_spim.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/data/rt_data_spim.h rename to gap8/rtos/pulp/pulp-os/include/rt/data/rt_data_spim.h diff --git a/rtos/pulp/pulp-os/include/rt/hwce.h b/gap8/rtos/pulp/pulp-os/include/rt/hwce.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/hwce.h rename to gap8/rtos/pulp/pulp-os/include/rt/hwce.h diff --git a/rtos/pulp/pulp-os/include/rt/implem/cluster.h b/gap8/rtos/pulp/pulp-os/include/rt/implem/cluster.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/implem/cluster.h rename to gap8/rtos/pulp/pulp-os/include/rt/implem/cluster.h diff --git a/rtos/pulp/pulp-os/include/rt/implem/gap9.h b/gap8/rtos/pulp/pulp-os/include/rt/implem/gap9.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/implem/gap9.h rename to gap8/rtos/pulp/pulp-os/include/rt/implem/gap9.h diff --git a/rtos/pulp/pulp-os/include/rt/implem/hyperram.h b/gap8/rtos/pulp/pulp-os/include/rt/implem/hyperram.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/implem/hyperram.h rename to gap8/rtos/pulp/pulp-os/include/rt/implem/hyperram.h diff --git a/rtos/pulp/pulp-os/include/rt/implem/implem.h b/gap8/rtos/pulp/pulp-os/include/rt/implem/implem.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/implem/implem.h rename to gap8/rtos/pulp/pulp-os/include/rt/implem/implem.h diff --git a/rtos/pulp/pulp-os/include/rt/implem/udma.h b/gap8/rtos/pulp/pulp-os/include/rt/implem/udma.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/implem/udma.h rename to gap8/rtos/pulp/pulp-os/include/rt/implem/udma.h diff --git a/rtos/pulp/pulp-os/include/rt/implem/utils.h b/gap8/rtos/pulp/pulp-os/include/rt/implem/utils.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/implem/utils.h rename to gap8/rtos/pulp/pulp-os/include/rt/implem/utils.h diff --git a/rtos/pulp/pulp-os/include/rt/implem/vega.h b/gap8/rtos/pulp/pulp-os/include/rt/implem/vega.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/implem/vega.h rename to gap8/rtos/pulp/pulp-os/include/rt/implem/vega.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_alloc.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_alloc.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_alloc.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_alloc.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_api.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_api.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_api.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_api.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_api_decl.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_api_decl.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_api_decl.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_api_decl.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_bridge.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_bridge.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_bridge.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_bridge.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_camera.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_camera.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_camera.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_camera.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_cluster.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_cluster.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_cluster.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_cluster.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_compat.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_compat.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_compat.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_compat.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_config.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_config.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_config.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_config.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_data.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_data.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_data.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_data.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_debug.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_debug.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_debug.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_debug.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_dev.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_dev.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_dev.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_dev.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_dma.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_dma.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_dma.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_dma.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_eeprom.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_eeprom.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_eeprom.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_eeprom.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_error.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_error.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_error.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_error.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_event.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_event.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_event.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_event.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_extern_alloc.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_extern_alloc.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_extern_alloc.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_extern_alloc.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_flash.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_flash.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_flash.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_flash.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_freq.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_freq.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_freq.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_freq.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_fs.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_fs.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_fs.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_fs.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_gpio.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_gpio.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_gpio.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_gpio.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_himax.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_himax.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_himax.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_himax.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_hyper.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_hyper.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_hyper.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_hyper.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_i2c.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_i2c.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_i2c.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_i2c.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_i2s.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_i2s.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_i2s.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_i2s.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_irq.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_irq.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_irq.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_irq.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_omp.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_omp.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_omp.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_omp.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_pad.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_pad.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_pad.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_pad.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_pe.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_pe.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_pe.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_pe.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_perf.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_perf.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_perf.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_perf.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_periph.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_periph.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_periph.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_periph.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_pm.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_pm.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_pm.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_pm.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_pwm.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_pwm.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_pwm.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_pwm.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_rtc.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_rtc.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_rtc.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_rtc.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_spim.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_spim.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_spim.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_spim.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_sync_mc.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_sync_mc.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_sync_mc.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_sync_mc.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_task.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_task.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_task.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_task.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_thread.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_thread.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_thread.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_thread.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_time.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_time.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_time.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_time.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_timer.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_timer.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_timer.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_timer.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_uart.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_uart.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_uart.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_uart.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_utils.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_utils.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_utils.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_utils.h diff --git a/rtos/pulp/pulp-os/include/rt/rt_voltage.h b/gap8/rtos/pulp/pulp-os/include/rt/rt_voltage.h similarity index 100% rename from rtos/pulp/pulp-os/include/rt/rt_voltage.h rename to gap8/rtos/pulp/pulp-os/include/rt/rt_voltage.h diff --git a/rtos/pulp/pulp-os/kernel/alloc.c b/gap8/rtos/pulp/pulp-os/kernel/alloc.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/alloc.c rename to gap8/rtos/pulp/pulp-os/kernel/alloc.c diff --git a/rtos/pulp/pulp-os/kernel/alloc_extern.c b/gap8/rtos/pulp/pulp-os/kernel/alloc_extern.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/alloc_extern.c rename to gap8/rtos/pulp/pulp-os/kernel/alloc_extern.c diff --git a/rtos/pulp/pulp-os/kernel/bridge.c b/gap8/rtos/pulp/pulp-os/kernel/bridge.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/bridge.c rename to gap8/rtos/pulp/pulp-os/kernel/bridge.c diff --git a/rtos/pulp/pulp-os/kernel/cluster.c b/gap8/rtos/pulp/pulp-os/kernel/cluster.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/cluster.c rename to gap8/rtos/pulp/pulp-os/kernel/cluster.c diff --git a/rtos/pulp/pulp-os/kernel/cluster_call.c b/gap8/rtos/pulp/pulp-os/kernel/cluster_call.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/cluster_call.c rename to gap8/rtos/pulp/pulp-os/kernel/cluster_call.c diff --git a/rtos/pulp/pulp-os/kernel/conf.c b/gap8/rtos/pulp/pulp-os/kernel/conf.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/conf.c rename to gap8/rtos/pulp/pulp-os/kernel/conf.c diff --git a/rtos/pulp/pulp-os/kernel/data.h b/gap8/rtos/pulp/pulp-os/kernel/data.h similarity index 100% rename from rtos/pulp/pulp-os/kernel/data.h rename to gap8/rtos/pulp/pulp-os/kernel/data.h diff --git a/rtos/pulp/pulp-os/kernel/debug.c b/gap8/rtos/pulp/pulp-os/kernel/debug.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/debug.c rename to gap8/rtos/pulp/pulp-os/kernel/debug.c diff --git a/rtos/pulp/pulp-os/kernel/dev.c b/gap8/rtos/pulp/pulp-os/kernel/dev.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/dev.c rename to gap8/rtos/pulp/pulp-os/kernel/dev.c diff --git a/rtos/pulp/pulp-os/kernel/error.c b/gap8/rtos/pulp/pulp-os/kernel/error.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/error.c rename to gap8/rtos/pulp/pulp-os/kernel/error.c diff --git a/rtos/pulp/pulp-os/kernel/events.c b/gap8/rtos/pulp/pulp-os/kernel/events.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/events.c rename to gap8/rtos/pulp/pulp-os/kernel/events.c diff --git a/rtos/pulp/pulp-os/kernel/fll-v0.c b/gap8/rtos/pulp/pulp-os/kernel/fll-v0.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/fll-v0.c rename to gap8/rtos/pulp/pulp-os/kernel/fll-v0.c diff --git a/rtos/pulp/pulp-os/kernel/fll-v1.c b/gap8/rtos/pulp/pulp-os/kernel/fll-v1.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/fll-v1.c rename to gap8/rtos/pulp/pulp-os/kernel/fll-v1.c diff --git a/rtos/pulp/pulp-os/kernel/freq-one-per-domain.c b/gap8/rtos/pulp/pulp-os/kernel/freq-one-per-domain.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/freq-one-per-domain.c rename to gap8/rtos/pulp/pulp-os/kernel/freq-one-per-domain.c diff --git a/rtos/pulp/pulp-os/kernel/freq-v0.c b/gap8/rtos/pulp/pulp-os/kernel/freq-v0.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/freq-v0.c rename to gap8/rtos/pulp/pulp-os/kernel/freq-v0.c diff --git a/rtos/pulp/pulp-os/kernel/freq-v1.c b/gap8/rtos/pulp/pulp-os/kernel/freq-v1.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/freq-v1.c rename to gap8/rtos/pulp/pulp-os/kernel/freq-v1.c diff --git a/rtos/pulp/pulp-os/kernel/gap/freq.c b/gap8/rtos/pulp/pulp-os/kernel/gap/freq.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap/freq.c rename to gap8/rtos/pulp/pulp-os/kernel/gap/freq.c diff --git a/rtos/pulp/pulp-os/kernel/gap/maestro.c b/gap8/rtos/pulp/pulp-os/kernel/gap/maestro.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap/maestro.c rename to gap8/rtos/pulp/pulp-os/kernel/gap/maestro.c diff --git a/rtos/pulp/pulp-os/kernel/gap/pm.c b/gap8/rtos/pulp/pulp-os/kernel/gap/pm.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap/pm.c rename to gap8/rtos/pulp/pulp-os/kernel/gap/pm.c diff --git a/rtos/pulp/pulp-os/kernel/gap/pmu_driver.c b/gap8/rtos/pulp/pulp-os/kernel/gap/pmu_driver.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap/pmu_driver.c rename to gap8/rtos/pulp/pulp-os/kernel/gap/pmu_driver.c diff --git a/rtos/pulp/pulp-os/kernel/gap/pmu_driver.h b/gap8/rtos/pulp/pulp-os/kernel/gap/pmu_driver.h similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap/pmu_driver.h rename to gap8/rtos/pulp/pulp-os/kernel/gap/pmu_driver.h diff --git a/rtos/pulp/pulp-os/kernel/gap9/maestro.c b/gap8/rtos/pulp/pulp-os/kernel/gap9/maestro.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap9/maestro.c rename to gap8/rtos/pulp/pulp-os/kernel/gap9/maestro.c diff --git a/rtos/pulp/pulp-os/kernel/gap9/maestro.h b/gap8/rtos/pulp/pulp-os/kernel/gap9/maestro.h similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap9/maestro.h rename to gap8/rtos/pulp/pulp-os/kernel/gap9/maestro.h diff --git a/rtos/pulp/pulp-os/kernel/gap9/maestro_irq.c b/gap8/rtos/pulp/pulp-os/kernel/gap9/maestro_irq.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap9/maestro_irq.c rename to gap8/rtos/pulp/pulp-os/kernel/gap9/maestro_irq.c diff --git a/rtos/pulp/pulp-os/kernel/gap9/pad.c b/gap8/rtos/pulp/pulp-os/kernel/gap9/pad.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/gap9/pad.c rename to gap8/rtos/pulp/pulp-os/kernel/gap9/pad.c diff --git a/rtos/pulp/pulp-os/kernel/init.c b/gap8/rtos/pulp/pulp-os/kernel/init.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/init.c rename to gap8/rtos/pulp/pulp-os/kernel/init.c diff --git a/rtos/pulp/pulp-os/kernel/irq.c b/gap8/rtos/pulp/pulp-os/kernel/irq.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/irq.c rename to gap8/rtos/pulp/pulp-os/kernel/irq.c diff --git a/rtos/pulp/pulp-os/kernel/kernel.mk b/gap8/rtos/pulp/pulp-os/kernel/kernel.mk similarity index 100% rename from rtos/pulp/pulp-os/kernel/kernel.mk rename to gap8/rtos/pulp/pulp-os/kernel/kernel.mk diff --git a/rtos/pulp/pulp-os/kernel/log.c b/gap8/rtos/pulp/pulp-os/kernel/log.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/log.c rename to gap8/rtos/pulp/pulp-os/kernel/log.c diff --git a/rtos/pulp/pulp-os/kernel/mem_slab.c b/gap8/rtos/pulp/pulp-os/kernel/mem_slab.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/mem_slab.c rename to gap8/rtos/pulp/pulp-os/kernel/mem_slab.c diff --git a/rtos/pulp/pulp-os/kernel/oprecompkw/rt/crt0.S b/gap8/rtos/pulp/pulp-os/kernel/oprecompkw/rt/crt0.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/oprecompkw/rt/crt0.S rename to gap8/rtos/pulp/pulp-os/kernel/oprecompkw/rt/crt0.S diff --git a/rtos/pulp/pulp-os/kernel/oprecompkw/rtbare b/gap8/rtos/pulp/pulp-os/kernel/oprecompkw/rtbare similarity index 100% rename from rtos/pulp/pulp-os/kernel/oprecompkw/rtbare rename to gap8/rtos/pulp/pulp-os/kernel/oprecompkw/rtbare diff --git a/rtos/pulp/pulp-os/kernel/oprecompkw/rttiny b/gap8/rtos/pulp/pulp-os/kernel/oprecompkw/rttiny similarity index 100% rename from rtos/pulp/pulp-os/kernel/oprecompkw/rttiny rename to gap8/rtos/pulp/pulp-os/kernel/oprecompkw/rttiny diff --git a/rtos/pulp/pulp-os/kernel/or1k/pe-eu-v1.S b/gap8/rtos/pulp/pulp-os/kernel/or1k/pe-eu-v1.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/or1k/pe-eu-v1.S rename to gap8/rtos/pulp/pulp-os/kernel/or1k/pe-eu-v1.S diff --git a/rtos/pulp/pulp-os/kernel/or1k/rt/crt0.S b/gap8/rtos/pulp/pulp-os/kernel/or1k/rt/crt0.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/or1k/rt/crt0.S rename to gap8/rtos/pulp/pulp-os/kernel/or1k/rt/crt0.S diff --git a/rtos/pulp/pulp-os/kernel/or1k/rtbare b/gap8/rtos/pulp/pulp-os/kernel/or1k/rtbare similarity index 100% rename from rtos/pulp/pulp-os/kernel/or1k/rtbare rename to gap8/rtos/pulp/pulp-os/kernel/or1k/rtbare diff --git a/rtos/pulp/pulp-os/kernel/or1k/rttiny b/gap8/rtos/pulp/pulp-os/kernel/or1k/rttiny similarity index 100% rename from rtos/pulp/pulp-os/kernel/or1k/rttiny rename to gap8/rtos/pulp/pulp-os/kernel/or1k/rttiny diff --git a/rtos/pulp/pulp-os/kernel/or1k/thread.S b/gap8/rtos/pulp/pulp-os/kernel/or1k/thread.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/or1k/thread.S rename to gap8/rtos/pulp/pulp-os/kernel/or1k/thread.S diff --git a/rtos/pulp/pulp-os/kernel/or1k/udma-v1.S b/gap8/rtos/pulp/pulp-os/kernel/or1k/udma-v1.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/or1k/udma-v1.S rename to gap8/rtos/pulp/pulp-os/kernel/or1k/udma-v1.S diff --git a/rtos/pulp/pulp-os/kernel/or1k/udma_spim-v1.S b/gap8/rtos/pulp/pulp-os/kernel/or1k/udma_spim-v1.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/or1k/udma_spim-v1.S rename to gap8/rtos/pulp/pulp-os/kernel/or1k/udma_spim-v1.S diff --git a/rtos/pulp/pulp-os/kernel/perf.c b/gap8/rtos/pulp/pulp-os/kernel/perf.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/perf.c rename to gap8/rtos/pulp/pulp-os/kernel/perf.c diff --git a/rtos/pulp/pulp-os/kernel/periph-v1.c b/gap8/rtos/pulp/pulp-os/kernel/periph-v1.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/periph-v1.c rename to gap8/rtos/pulp/pulp-os/kernel/periph-v1.c diff --git a/rtos/pulp/pulp-os/kernel/periph-v2.c b/gap8/rtos/pulp/pulp-os/kernel/periph-v2.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/periph-v2.c rename to gap8/rtos/pulp/pulp-os/kernel/periph-v2.c diff --git a/rtos/pulp/pulp-os/kernel/periph-v3.c b/gap8/rtos/pulp/pulp-os/kernel/periph-v3.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/periph-v3.c rename to gap8/rtos/pulp/pulp-os/kernel/periph-v3.c diff --git a/rtos/pulp/pulp-os/kernel/pulp/pulp.c b/gap8/rtos/pulp/pulp-os/kernel/pulp/pulp.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/pulp/pulp.c rename to gap8/rtos/pulp/pulp-os/kernel/pulp/pulp.c diff --git a/rtos/pulp/pulp-os/kernel/pulpissimo/pulpissimo.c b/gap8/rtos/pulp/pulp-os/kernel/pulpissimo/pulpissimo.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/pulpissimo/pulpissimo.c rename to gap8/rtos/pulp/pulp-os/kernel/pulpissimo/pulpissimo.c diff --git a/rtos/pulp/pulp-os/kernel/pulpos_emu.c b/gap8/rtos/pulp/pulp-os/kernel/pulpos_emu.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/pulpos_emu.c rename to gap8/rtos/pulp/pulp-os/kernel/pulpos_emu.c diff --git a/rtos/pulp/pulp-os/kernel/pulprt_wrapper.h b/gap8/rtos/pulp/pulp-os/kernel/pulprt_wrapper.h similarity index 100% rename from rtos/pulp/pulp-os/kernel/pulprt_wrapper.h rename to gap8/rtos/pulp/pulp-os/kernel/pulprt_wrapper.h diff --git a/rtos/pulp/pulp-os/kernel/riscv/gpio.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/gpio.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/gpio.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/gpio.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v1-entry.c b/gap8/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v1-entry.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/pe-eu-v1-entry.c rename to gap8/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v1-entry.c diff --git a/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v1.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v1.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/pe-eu-v1.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v1.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v3.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v3.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/pe-eu-v3.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/pe-eu-v3.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/rt/crt0.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/rt/crt0.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/rt/crt0.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/rt/crt0.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/rtbare b/gap8/rtos/pulp/pulp-os/kernel/riscv/rtbare similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/rtbare rename to gap8/rtos/pulp/pulp-os/kernel/riscv/rtbare diff --git a/rtos/pulp/pulp-os/kernel/riscv/rttiny b/gap8/rtos/pulp/pulp-os/kernel/riscv/rttiny similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/rttiny rename to gap8/rtos/pulp/pulp-os/kernel/riscv/rttiny diff --git a/rtos/pulp/pulp-os/kernel/riscv/sched.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/sched.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/sched.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/sched.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/soc_event_eu.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/soc_event_eu.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/soc_event_eu.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/soc_event_eu.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v1.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v1.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v1.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v1.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v2.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v2.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v2.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v2.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v3.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v3.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v3.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/soc_event_itc-v3.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/task.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/task.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/task.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/task.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/thread.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/thread.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/thread.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/thread.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/udma-v2.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/udma-v2.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/udma-v2.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/udma-v2.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/udma-v3.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/udma-v3.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/udma-v3.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/udma-v3.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/udma_mram-v1.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/udma_mram-v1.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/udma_mram-v1.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/udma_mram-v1.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/udma_spim-v2.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/udma_spim-v2.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/udma_spim-v2.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/udma_spim-v2.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/udma_spim-v3.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/udma_spim-v3.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/udma_spim-v3.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/udma_spim-v3.S diff --git a/rtos/pulp/pulp-os/kernel/riscv/vectors.S b/gap8/rtos/pulp/pulp-os/kernel/riscv/vectors.S similarity index 100% rename from rtos/pulp/pulp-os/kernel/riscv/vectors.S rename to gap8/rtos/pulp/pulp-os/kernel/riscv/vectors.S diff --git a/rtos/pulp/pulp-os/kernel/sync_mc.c b/gap8/rtos/pulp/pulp-os/kernel/sync_mc.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/sync_mc.c rename to gap8/rtos/pulp/pulp-os/kernel/sync_mc.c diff --git a/rtos/pulp/pulp-os/kernel/task.c b/gap8/rtos/pulp/pulp-os/kernel/task.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/task.c rename to gap8/rtos/pulp/pulp-os/kernel/task.c diff --git a/rtos/pulp/pulp-os/kernel/thread.c b/gap8/rtos/pulp/pulp-os/kernel/thread.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/thread.c rename to gap8/rtos/pulp/pulp-os/kernel/thread.c diff --git a/rtos/pulp/pulp-os/kernel/time.c b/gap8/rtos/pulp/pulp-os/kernel/time.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/time.c rename to gap8/rtos/pulp/pulp-os/kernel/time.c diff --git a/rtos/pulp/pulp-os/kernel/time_irq.c b/gap8/rtos/pulp/pulp-os/kernel/time_irq.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/time_irq.c rename to gap8/rtos/pulp/pulp-os/kernel/time_irq.c diff --git a/rtos/pulp/pulp-os/kernel/usoc_v1/gpio.c b/gap8/rtos/pulp/pulp-os/kernel/usoc_v1/gpio.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/usoc_v1/gpio.c rename to gap8/rtos/pulp/pulp-os/kernel/usoc_v1/gpio.c diff --git a/rtos/pulp/pulp-os/kernel/utils.c b/gap8/rtos/pulp/pulp-os/kernel/utils.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/utils.c rename to gap8/rtos/pulp/pulp-os/kernel/utils.c diff --git a/rtos/pulp/pulp-os/kernel/vega/maestro.c b/gap8/rtos/pulp/pulp-os/kernel/vega/maestro.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/vega/maestro.c rename to gap8/rtos/pulp/pulp-os/kernel/vega/maestro.c diff --git a/rtos/pulp/pulp-os/kernel/vega/maestro.h b/gap8/rtos/pulp/pulp-os/kernel/vega/maestro.h similarity index 100% rename from rtos/pulp/pulp-os/kernel/vega/maestro.h rename to gap8/rtos/pulp/pulp-os/kernel/vega/maestro.h diff --git a/rtos/pulp/pulp-os/kernel/vega/maestro_irq.c b/gap8/rtos/pulp/pulp-os/kernel/vega/maestro_irq.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/vega/maestro_irq.c rename to gap8/rtos/pulp/pulp-os/kernel/vega/maestro_irq.c diff --git a/rtos/pulp/pulp-os/kernel/vega/pad.c b/gap8/rtos/pulp/pulp-os/kernel/vega/pad.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/vega/pad.c rename to gap8/rtos/pulp/pulp-os/kernel/vega/pad.c diff --git a/rtos/pulp/pulp-os/kernel/vivosoc3/fll.c b/gap8/rtos/pulp/pulp-os/kernel/vivosoc3/fll.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/vivosoc3/fll.c rename to gap8/rtos/pulp/pulp-os/kernel/vivosoc3/fll.c diff --git a/rtos/pulp/pulp-os/kernel/vivosoc3/freq.c b/gap8/rtos/pulp/pulp-os/kernel/vivosoc3/freq.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/vivosoc3/freq.c rename to gap8/rtos/pulp/pulp-os/kernel/vivosoc3/freq.c diff --git a/rtos/pulp/pulp-os/kernel/vivosoc4/fll.c b/gap8/rtos/pulp/pulp-os/kernel/vivosoc4/fll.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/vivosoc4/fll.c rename to gap8/rtos/pulp/pulp-os/kernel/vivosoc4/fll.c diff --git a/rtos/pulp/pulp-os/kernel/vivosoc4/freq.c b/gap8/rtos/pulp/pulp-os/kernel/vivosoc4/freq.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/vivosoc4/freq.c rename to gap8/rtos/pulp/pulp-os/kernel/vivosoc4/freq.c diff --git a/rtos/pulp/pulp-os/kernel/wolfe/maestro.c b/gap8/rtos/pulp/pulp-os/kernel/wolfe/maestro.c similarity index 100% rename from rtos/pulp/pulp-os/kernel/wolfe/maestro.c rename to gap8/rtos/pulp/pulp-os/kernel/wolfe/maestro.c diff --git a/rtos/pulp/pulp-os/libs/bench/bench.c b/gap8/rtos/pulp/pulp-os/libs/bench/bench.c similarity index 100% rename from rtos/pulp/pulp-os/libs/bench/bench.c rename to gap8/rtos/pulp/pulp-os/libs/bench/bench.c diff --git a/rtos/pulp/pulp-os/libs/io/fprintf.c b/gap8/rtos/pulp/pulp-os/libs/io/fprintf.c similarity index 100% rename from rtos/pulp/pulp-os/libs/io/fprintf.c rename to gap8/rtos/pulp/pulp-os/libs/io/fprintf.c diff --git a/rtos/pulp/pulp-os/libs/io/io.c b/gap8/rtos/pulp/pulp-os/libs/io/io.c similarity index 100% rename from rtos/pulp/pulp-os/libs/io/io.c rename to gap8/rtos/pulp/pulp-os/libs/io/io.c diff --git a/rtos/pulp/pulp-os/libs/io/prf.c b/gap8/rtos/pulp/pulp-os/libs/io/prf.c similarity index 100% rename from rtos/pulp/pulp-os/libs/io/prf.c rename to gap8/rtos/pulp/pulp-os/libs/io/prf.c diff --git a/rtos/pulp/pulp-os/libs/io/semihost.c b/gap8/rtos/pulp/pulp-os/libs/io/semihost.c similarity index 100% rename from rtos/pulp/pulp-os/libs/io/semihost.c rename to gap8/rtos/pulp/pulp-os/libs/io/semihost.c diff --git a/rtos/pulp/pulp-os/libs/io/semihost.h b/gap8/rtos/pulp/pulp-os/libs/io/semihost.h similarity index 100% rename from rtos/pulp/pulp-os/libs/io/semihost.h rename to gap8/rtos/pulp/pulp-os/libs/io/semihost.h diff --git a/rtos/pulp/pulp-os/libs/io/sprintf.c b/gap8/rtos/pulp/pulp-os/libs/io/sprintf.c similarity index 100% rename from rtos/pulp/pulp-os/libs/io/sprintf.c rename to gap8/rtos/pulp/pulp-os/libs/io/sprintf.c diff --git a/rtos/pulp/pulp-os/libs/libs.mk b/gap8/rtos/pulp/pulp-os/libs/libs.mk similarity index 100% rename from rtos/pulp/pulp-os/libs/libs.mk rename to gap8/rtos/pulp/pulp-os/libs/libs.mk diff --git a/rtos/pulp/pulp-os/libs/omp/omp.c b/gap8/rtos/pulp/pulp-os/libs/omp/omp.c similarity index 100% rename from rtos/pulp/pulp-os/libs/omp/omp.c rename to gap8/rtos/pulp/pulp-os/libs/omp/omp.c diff --git a/rtos/pulp/pulp-os/libs/omp/ompRt.h b/gap8/rtos/pulp/pulp-os/libs/omp/ompRt.h similarity index 100% rename from rtos/pulp/pulp-os/libs/omp/ompRt.h rename to gap8/rtos/pulp/pulp-os/libs/omp/ompRt.h diff --git a/rtos/pulp/pulp-os/libs/omp/omp_asm.S b/gap8/rtos/pulp/pulp-os/libs/omp/omp_asm.S similarity index 100% rename from rtos/pulp/pulp-os/libs/omp/omp_asm.S rename to gap8/rtos/pulp/pulp-os/libs/omp/omp_asm.S diff --git a/rtos/pulp/pulp-os/libs/omp/omp_wrapper_gcc.c b/gap8/rtos/pulp/pulp-os/libs/omp/omp_wrapper_gcc.c similarity index 100% rename from rtos/pulp/pulp-os/libs/omp/omp_wrapper_gcc.c rename to gap8/rtos/pulp/pulp-os/libs/omp/omp_wrapper_gcc.c diff --git a/rtos/pulp/pulp-os/libs/omp/omp_wrapper_llvm.c b/gap8/rtos/pulp/pulp-os/libs/omp/omp_wrapper_llvm.c similarity index 100% rename from rtos/pulp/pulp-os/libs/omp/omp_wrapper_llvm.c rename to gap8/rtos/pulp/pulp-os/libs/omp/omp_wrapper_llvm.c diff --git a/rtos/pulp/pulp-os/mk/gap/__flags.mk b/gap8/rtos/pulp/pulp-os/mk/gap/__flags.mk similarity index 100% rename from rtos/pulp/pulp-os/mk/gap/__flags.mk rename to gap8/rtos/pulp/pulp-os/mk/gap/__flags.mk diff --git a/rtos/pulp/pulp-os/mk/gap/config.mk b/gap8/rtos/pulp/pulp-os/mk/gap/config.mk similarity index 100% rename from rtos/pulp/pulp-os/mk/gap/config.mk rename to gap8/rtos/pulp/pulp-os/mk/gap/config.mk diff --git a/rtos/pulp/pulp-os/mk/gap/props.mk b/gap8/rtos/pulp/pulp-os/mk/gap/props.mk similarity index 100% rename from rtos/pulp/pulp-os/mk/gap/props.mk rename to gap8/rtos/pulp/pulp-os/mk/gap/props.mk diff --git a/rtos/pulp/pulp-os/mk/rules.mk b/gap8/rtos/pulp/pulp-os/mk/rules.mk similarity index 100% rename from rtos/pulp/pulp-os/mk/rules.mk rename to gap8/rtos/pulp/pulp-os/mk/rules.mk diff --git a/rtos/pulp/pulp-os/mk/vega/__flags.mk b/gap8/rtos/pulp/pulp-os/mk/vega/__flags.mk similarity index 100% rename from rtos/pulp/pulp-os/mk/vega/__flags.mk rename to gap8/rtos/pulp/pulp-os/mk/vega/__flags.mk diff --git a/rtos/pulp/pulp-os/mk/vega/config.mk b/gap8/rtos/pulp/pulp-os/mk/vega/config.mk similarity index 100% rename from rtos/pulp/pulp-os/mk/vega/config.mk rename to gap8/rtos/pulp/pulp-os/mk/vega/config.mk diff --git a/rtos/pulp/pulp-os/mk/vega/props.mk b/gap8/rtos/pulp/pulp-os/mk/vega/props.mk similarity index 100% rename from rtos/pulp/pulp-os/mk/vega/props.mk rename to gap8/rtos/pulp/pulp-os/mk/vega/props.mk diff --git a/rtos/pulp/pulp-os/pulpos_rules/pulpos.mk b/gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos.mk similarity index 100% rename from rtos/pulp/pulp-os/pulpos_rules/pulpos.mk rename to gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos.mk diff --git a/rtos/pulp/pulp-os/pulpos_rules/pulpos/configs/default.mk b/gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos/configs/default.mk similarity index 100% rename from rtos/pulp/pulp-os/pulpos_rules/pulpos/configs/default.mk rename to gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos/configs/default.mk diff --git a/rtos/pulp/pulp-os/pulpos_rules/pulpos/default_rules.mk b/gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos/default_rules.mk similarity index 100% rename from rtos/pulp/pulp-os/pulpos_rules/pulpos/default_rules.mk rename to gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos/default_rules.mk diff --git a/rtos/pulp/pulp-os/pulpos_rules/pulpos/src.mk b/gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos/src.mk similarity index 100% rename from rtos/pulp/pulp-os/pulpos_rules/pulpos/src.mk rename to gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos/src.mk diff --git a/rtos/pulp/pulp-os/pulpos_rules/pulpos/targets/gapuino.mk b/gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos/targets/gapuino.mk similarity index 100% rename from rtos/pulp/pulp-os/pulpos_rules/pulpos/targets/gapuino.mk rename to gap8/rtos/pulp/pulp-os/pulpos_rules/pulpos/targets/gapuino.mk diff --git a/rtos/pulp/pulp-os/rules/arnold/link.ld b/gap8/rtos/pulp/pulp-os/rules/arnold/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/arnold/link.ld rename to gap8/rtos/pulp/pulp-os/rules/arnold/link.ld diff --git a/rtos/pulp/pulp-os/rules/bigpulp/link.ld b/gap8/rtos/pulp/pulp-os/rules/bigpulp/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/bigpulp/link.ld rename to gap8/rtos/pulp/pulp-os/rules/bigpulp/link.ld diff --git a/rtos/pulp/pulp-os/rules/gap/link.ld b/gap8/rtos/pulp/pulp-os/rules/gap/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/gap/link.ld rename to gap8/rtos/pulp/pulp-os/rules/gap/link.ld diff --git a/rtos/pulp/pulp-os/rules/gap9/link.ld.in b/gap8/rtos/pulp/pulp-os/rules/gap9/link.ld.in similarity index 100% rename from rtos/pulp/pulp-os/rules/gap9/link.ld.in rename to gap8/rtos/pulp/pulp-os/rules/gap9/link.ld.in diff --git a/rtos/pulp/pulp-os/rules/gap_rev1/link.ld b/gap8/rtos/pulp/pulp-os/rules/gap_rev1/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/gap_rev1/link.ld rename to gap8/rtos/pulp/pulp-os/rules/gap_rev1/link.ld diff --git a/rtos/pulp/pulp-os/rules/multino/link.ld b/gap8/rtos/pulp/pulp-os/rules/multino/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/multino/link.ld rename to gap8/rtos/pulp/pulp-os/rules/multino/link.ld diff --git a/rtos/pulp/pulp-os/rules/oprecompkw/link.ld b/gap8/rtos/pulp/pulp-os/rules/oprecompkw/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/oprecompkw/link.ld rename to gap8/rtos/pulp/pulp-os/rules/oprecompkw/link.ld diff --git a/rtos/pulp/pulp-os/rules/process_linker_script b/gap8/rtos/pulp/pulp-os/rules/process_linker_script similarity index 100% rename from rtos/pulp/pulp-os/rules/process_linker_script rename to gap8/rtos/pulp/pulp-os/rules/process_linker_script diff --git a/rtos/pulp/pulp-os/rules/pulp/link.ld b/gap8/rtos/pulp/pulp-os/rules/pulp/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/pulp/link.ld rename to gap8/rtos/pulp/pulp-os/rules/pulp/link.ld diff --git a/rtos/pulp/pulp-os/rules/pulp_v1/link.ld b/gap8/rtos/pulp/pulp-os/rules/pulp_v1/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/pulp_v1/link.ld rename to gap8/rtos/pulp/pulp-os/rules/pulp_v1/link.ld diff --git a/rtos/pulp/pulp-os/rules/pulpissimo/link.ld b/gap8/rtos/pulp/pulp-os/rules/pulpissimo/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/pulpissimo/link.ld rename to gap8/rtos/pulp/pulp-os/rules/pulpissimo/link.ld diff --git a/rtos/pulp/pulp-os/rules/pulpissimo_v1/link.ld b/gap8/rtos/pulp/pulp-os/rules/pulpissimo_v1/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/pulpissimo_v1/link.ld rename to gap8/rtos/pulp/pulp-os/rules/pulpissimo_v1/link.ld diff --git a/rtos/pulp/pulp-os/rules/quentin/link-scm.ld b/gap8/rtos/pulp/pulp-os/rules/quentin/link-scm.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/quentin/link-scm.ld rename to gap8/rtos/pulp/pulp-os/rules/quentin/link-scm.ld diff --git a/rtos/pulp/pulp-os/rules/quentin/link-sram.ld b/gap8/rtos/pulp/pulp-os/rules/quentin/link-sram.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/quentin/link-sram.ld rename to gap8/rtos/pulp/pulp-os/rules/quentin/link-sram.ld diff --git a/rtos/pulp/pulp-os/rules/quentin/link.ld b/gap8/rtos/pulp/pulp-os/rules/quentin/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/quentin/link.ld rename to gap8/rtos/pulp/pulp-os/rules/quentin/link.ld diff --git a/rtos/pulp/pulp-os/rules/usoc_v1/link.ld b/gap8/rtos/pulp/pulp-os/rules/usoc_v1/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/usoc_v1/link.ld rename to gap8/rtos/pulp/pulp-os/rules/usoc_v1/link.ld diff --git a/rtos/pulp/pulp-os/rules/vega/link.ld.in b/gap8/rtos/pulp/pulp-os/rules/vega/link.ld.in similarity index 100% rename from rtos/pulp/pulp-os/rules/vega/link.ld.in rename to gap8/rtos/pulp/pulp-os/rules/vega/link.ld.in diff --git a/rtos/pulp/pulp-os/rules/vivosoc3/link.ld b/gap8/rtos/pulp/pulp-os/rules/vivosoc3/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/vivosoc3/link.ld rename to gap8/rtos/pulp/pulp-os/rules/vivosoc3/link.ld diff --git a/rtos/pulp/pulp-os/rules/vivosoc3_1/link.ld b/gap8/rtos/pulp/pulp-os/rules/vivosoc3_1/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/vivosoc3_1/link.ld rename to gap8/rtos/pulp/pulp-os/rules/vivosoc3_1/link.ld diff --git a/rtos/pulp/pulp-os/rules/vivosoc3_5/link.ld b/gap8/rtos/pulp/pulp-os/rules/vivosoc3_5/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/vivosoc3_5/link.ld rename to gap8/rtos/pulp/pulp-os/rules/vivosoc3_5/link.ld diff --git a/rtos/pulp/pulp-os/rules/vivosoc4/link.ld b/gap8/rtos/pulp/pulp-os/rules/vivosoc4/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/vivosoc4/link.ld rename to gap8/rtos/pulp/pulp-os/rules/vivosoc4/link.ld diff --git a/rtos/pulp/pulp-os/rules/wolfe/link.ld b/gap8/rtos/pulp/pulp-os/rules/wolfe/link.ld similarity index 100% rename from rtos/pulp/pulp-os/rules/wolfe/link.ld rename to gap8/rtos/pulp/pulp-os/rules/wolfe/link.ld diff --git a/gvsoc/CMakeLists.txt b/gvsoc/CMakeLists.txt index 9c460aaa3..85379e2b8 100644 --- a/gvsoc/CMakeLists.txt +++ b/gvsoc/CMakeLists.txt @@ -1,6 +1,13 @@ cmake_minimum_required(VERSION 3.16.3) project(gvsoc) +if(NOT DEFINED VP_MODEL_ROOT_DIRS) + set(VP_MODEL_ROOT_DIRS + "${CMAKE_CURRENT_SOURCE_DIR}/gvosc/models" + "${CMAKE_CURRENT_SOURCE_DIR}/gvsoc_gap/models" + ) +endif() + # gap_archi add_library(gap_archi INTERFACE) target_include_directories(gap_archi INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/../rtos/pulp/gap_archi/include") @@ -55,7 +62,6 @@ vp_set_target_types( # ================== add_subdirectory(ext) -add_subdirectory(dpi-models) add_subdirectory(gvsoc) if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/gvsoc_gap_sfu") diff --git a/gvsoc/cmake/vp_model.cmake b/gvsoc/cmake/vp_model.cmake index 5ac05b58b..f7508d354 100644 --- a/gvsoc/cmake/vp_model.cmake +++ b/gvsoc/cmake/vp_model.cmake @@ -44,6 +44,9 @@ function(vp_model) target_link_libraries(${VP_MODEL_NAME_OPTIM} PRIVATE gvsoc gap_archi archi_pulp) set_target_properties(${VP_MODEL_NAME_OPTIM} PROPERTIES PREFIX "") target_compile_options(${VP_MODEL_NAME_OPTIM} PRIVATE "-D__GVSOC__") + foreach(X IN LISTS VP_MODEL_ROOT_DIRS) + target_include_directories(${VP_MODEL_NAME_OPTIM} PRIVATE ${X}) + endforeach() if(VP_MODEL_OUTPUT_NAME) set_target_properties(${VP_MODEL_NAME_OPTIM} @@ -71,6 +74,9 @@ function(vp_model) set_target_properties(${VP_MODEL_NAME_DEBUG} PROPERTIES PREFIX "") target_compile_options(${VP_MODEL_NAME_DEBUG} PRIVATE "-D__GVSOC__") target_compile_definitions(${VP_MODEL_NAME_DEBUG} PRIVATE "-DVP_TRACE_ACTIVE=1") + foreach(X IN LISTS VP_MODEL_ROOT_DIRS) + target_include_directories(${VP_MODEL_NAME_DEBUG} PRIVATE ${X}) + endforeach() if(VP_MODEL_OUTPUT_NAME) set(RENAME_DEBUG_NAME ${VP_MODEL_OUTPUT_NAME}) @@ -91,7 +97,7 @@ function(vp_model) if(${BUILD_RTL}) add_library(${VP_MODEL_NAME_SV} MODULE ${VP_MODEL_SOURCES}) - target_link_libraries(${VP_MODEL_NAME_SV} PRIVATE gvsoc_debug gap_archi archi_pulp) + target_link_libraries(${VP_MODEL_NAME_SV} PRIVATE gvsoc_sv gap_archi archi_pulp) set_target_properties(${VP_MODEL_NAME_SV} PROPERTIES PREFIX "") target_compile_options(${VP_MODEL_NAME_SV} PRIVATE "-D__GVSOC__") target_compile_definitions(${VP_MODEL_NAME_SV} @@ -99,6 +105,9 @@ function(vp_model) "-DVP_TRACE_ACTIVE=1" "-D__VP_USE_SYSTEMV=1" ) + foreach(X IN LISTS VP_MODEL_ROOT_DIRS) + target_include_directories(${VP_MODEL_NAME_SV} PRIVATE ${X}) + endforeach() if(VP_MODEL_OUTPUT_NAME) set(RENAME_SV_NAME ${VP_MODEL_OUTPUT_NAME}) diff --git a/gvsoc/dpi-models/CMakeLists.txt b/gvsoc/dpi-models/CMakeLists.txt deleted file mode 100644 index 3ac9d5bdf..000000000 --- a/gvsoc/dpi-models/CMakeLists.txt +++ /dev/null @@ -1,58 +0,0 @@ -cmake_minimum_required(VERSION 3.10) -project(gvsoc-dpi) - -set(COMMON_SRCS - "src/qspim.cpp" - "src/gpio.cpp" - "src/jtag.cpp" - "src/ctrl.cpp" - "src/uart.cpp" - "src/cpi.cpp" - "src/i2s.cpp" - "src/i2c.cpp" - "src/telnet_proxy.cpp" - ) - -set(DPI_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include" - "${CMAKE_CURRENT_SOURCE_DIR}/ext/sv/include" - "${CMAKE_CURRENT_SOURCE_DIR}/ext/nosv/") - -function(dpi_model) - cmake_parse_arguments( - DPI_MODEL - "" - "NAME" - "SOURCES;INCLUDES" - ${ARGN} - ) - #message(STATUS "dpi_model: name=\"${DPI_MODEL_NAME}\", srcs=\"${DPI_MODEL_SOURCES}\", incs=\"${DPI_MODEL_INCLUDES}\"") - - # TODO verify arguments - - add_library(${DPI_MODEL_NAME} MODULE ${DPI_MODEL_SOURCES}) - target_include_directories(${DPI_MODEL_NAME} PRIVATE ${DPI_INCLUDE_DIRS}) - target_link_libraries(${DPI_MODEL_NAME} PRIVATE json-tools) - set_target_properties(${DPI_MODEL_NAME} PROPERTIES PREFIX "") - target_compile_options(${DPI_MODEL_NAME} PRIVATE "-DUSE_DPI") - - install(TARGETS ${DPI_MODEL_NAME} - LIBRARY DESTINATION "lib" - ARCHIVE DESTINATION "lib" - RUNTIME DESTINATION "bin" - INCLUDES DESTINATION "include" - ) -endfunction() - -add_subdirectory(models) - -# libpulpdpi -set(PULPDPI_SRCS "src/dpi.cpp" ${COMMON_SRCS}) -dpi_model(NAME libpulpdpi - SOURCES ${PULPDPI_SRCS} - ) - -# libpulpperiph -set(PULPPERIPH_SRCS "src/models.cpp" ${COMMON_SRCS}) -dpi_model(NAME libpulpperiph - SOURCES ${PULPPERIPH_SRCS} - ) diff --git a/gvsoc/dpi-models/models/CMakeLists.txt b/gvsoc/dpi-models/models/CMakeLists.txt deleted file mode 100644 index 463ff8b90..000000000 --- a/gvsoc/dpi-models/models/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ - -add_subdirectory(camera) -add_subdirectory(eeprom) -add_subdirectory(flash) -add_subdirectory(jtag) -add_subdirectory(lcd) -add_subdirectory(microphone) -add_subdirectory(ram) -add_subdirectory(test) -add_subdirectory(uart) -add_subdirectory(wifi) diff --git a/gvsoc/dpi-models/models/camera/CMakeLists.txt b/gvsoc/dpi-models/models/camera/CMakeLists.txt deleted file mode 100644 index a1ebacfc0..000000000 --- a/gvsoc/dpi-models/models/camera/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -dpi_model(NAME camera - SOURCES "camera.cpp" - ) - -# include graphicsmagick if exists -find_library(MAGICK_LIB GraphicsMagick++) -if(MAGICK_LIB) - target_compile_options(camera PRIVATE "-D__MAGICK__") - target_link_libraries(camera PRIVATE GraphicsMagick++) -else() -endif() diff --git a/gvsoc/dpi-models/models/eeprom/CMakeLists.txt b/gvsoc/dpi-models/models/eeprom/CMakeLists.txt deleted file mode 100644 index 2d05a8e8d..000000000 --- a/gvsoc/dpi-models/models/eeprom/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -dpi_model(NAME eeprom - SOURCES "eeprom.cpp" - ) diff --git a/gvsoc/dpi-models/models/flash/CMakeLists.txt b/gvsoc/dpi-models/models/flash/CMakeLists.txt deleted file mode 100644 index e074b95d6..000000000 --- a/gvsoc/dpi-models/models/flash/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(spiflash) diff --git a/gvsoc/dpi-models/models/flash/spiflash/CMakeLists.txt b/gvsoc/dpi-models/models/flash/spiflash/CMakeLists.txt deleted file mode 100644 index e51748cf6..000000000 --- a/gvsoc/dpi-models/models/flash/spiflash/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -dpi_model(NAME spiflash - SOURCES "spiflash.cpp" - ) diff --git a/gvsoc/dpi-models/models/jtag/CMakeLists.txt b/gvsoc/dpi-models/models/jtag/CMakeLists.txt deleted file mode 100644 index 73f029033..000000000 --- a/gvsoc/dpi-models/models/jtag/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(proxy) diff --git a/gvsoc/dpi-models/models/jtag/proxy/CMakeLists.txt b/gvsoc/dpi-models/models/jtag/proxy/CMakeLists.txt deleted file mode 100644 index ea97469d6..000000000 --- a/gvsoc/dpi-models/models/jtag/proxy/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -dpi_model(NAME jtag_proxy - SOURCES "proxy.cpp" - ) diff --git a/gvsoc/dpi-models/models/lcd/CMakeLists.txt b/gvsoc/dpi-models/models/lcd/CMakeLists.txt deleted file mode 100644 index cff45d08e..000000000 --- a/gvsoc/dpi-models/models/lcd/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -dpi_model(NAME lcd_ili9341 - SOURCES "ili9341.cpp" - ) - -# use sdl2 if possible -include(FindPkgConfig) -pkg_search_module(SDL2 sdl2) -if(SDL2_FOUND) - target_compile_options(lcd_ili9341 PRIVATE "-D__USE_SDL__") - target_include_directories(lcd_ili9341 PRIVATE ${SDL2_INCLUDE_DIRS}) - target_link_libraries(lcd_ili9341 PRIVATE ${SDL2_LIBRARIES}) -else() - message(FATAL_ERROR "SDL2 not found!") -endif() diff --git a/gvsoc/dpi-models/models/microphone/CMakeLists.txt b/gvsoc/dpi-models/models/microphone/CMakeLists.txt deleted file mode 100644 index 592cb235e..000000000 --- a/gvsoc/dpi-models/models/microphone/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -message(STATUS "TODO solve duplicate target \"i2s_microphone\"") -#dpi_model(NAME i2s_microphone -# SOURCES "i2s_microphone.cpp" -# ) -# -# -#find_library(SNDFILE_LIB sndfile) -#if(SNDFILE_LIB) -# target_compile_options(i2s_microphone PRIVATE "-DUSE_SNDFILE") -# target_link_libraries(i2s_microphone PRIVATE sndfile) -#endif() diff --git a/gvsoc/dpi-models/models/ram/CMakeLists.txt b/gvsoc/dpi-models/models/ram/CMakeLists.txt deleted file mode 100644 index f12a075b8..000000000 --- a/gvsoc/dpi-models/models/ram/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(spiram) diff --git a/gvsoc/dpi-models/models/ram/spiram/CMakeLists.txt b/gvsoc/dpi-models/models/ram/spiram/CMakeLists.txt deleted file mode 100644 index 8d52d62eb..000000000 --- a/gvsoc/dpi-models/models/ram/spiram/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -dpi_model(NAME spiram - SOURCES "spiram.cpp" - ) diff --git a/gvsoc/dpi-models/models/test/CMakeLists.txt b/gvsoc/dpi-models/models/test/CMakeLists.txt deleted file mode 100644 index 0e9376be6..000000000 --- a/gvsoc/dpi-models/models/test/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(spim_verif) diff --git a/gvsoc/dpi-models/models/test/spim_verif/CMakeLists.txt b/gvsoc/dpi-models/models/test/spim_verif/CMakeLists.txt deleted file mode 100644 index 23e4e38ea..000000000 --- a/gvsoc/dpi-models/models/test/spim_verif/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -dpi_model(NAME spim_tb - SOURCES "spim_verif.cpp" - ) diff --git a/gvsoc/dpi-models/models/uart/CMakeLists.txt b/gvsoc/dpi-models/models/uart/CMakeLists.txt deleted file mode 100644 index 3413e4096..000000000 --- a/gvsoc/dpi-models/models/uart/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(uart) diff --git a/gvsoc/dpi-models/models/uart/uart/CMakeLists.txt b/gvsoc/dpi-models/models/uart/uart/CMakeLists.txt deleted file mode 100644 index 5c8e50f48..000000000 --- a/gvsoc/dpi-models/models/uart/uart/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -dpi_model(NAME uart - SOURCES uart.cpp - ) diff --git a/gvsoc/dpi-models/models/wifi/CMakeLists.txt b/gvsoc/dpi-models/models/wifi/CMakeLists.txt deleted file mode 100644 index c3a342ae2..000000000 --- a/gvsoc/dpi-models/models/wifi/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -dpi_model(NAME nina_w10 - SOURCES "nina_w10.cpp" - ) diff --git a/gvsoc/gvsoc-build b/gvsoc/gvsoc-build index fe37a374d..85b32d5ad 100755 --- a/gvsoc/gvsoc-build +++ b/gvsoc/gvsoc-build @@ -1,4 +1,4 @@ -#!/bin/bash -ex +#!/usr/bin/env bash install_dir=$GAP_SDK_HOME/install doc_install_dir=$PWD/install/doc @@ -15,7 +15,7 @@ PULP_CONFIG_PATH=$GAP_SDK_HOME/utils/gap_configs GVSOC_GLOBAL_PATH=$GAP_SDK_HOME/gvsoc GVSOC_PATH=$GVSOC_GLOBAL_PATH/gvsoc GVSOC_GAP_PATH=$GVSOC_GLOBAL_PATH/gvsoc_gap -DPI_MODELS_PATH=$GVSOC_GLOBAL_PATH/dpi-models +DPI_MODELS_PATH=$GAP_SDK_HOME/gap8/gvsoc/dpi-models RUNNER_PATH=$GVSOC_GLOBAL_PATH/runner ARCHI_PATH=$GAP_SDK_HOME/rtos/pulp/archi_gap diff --git a/gvsoc/gvsoc/dpi-wrapper/CMakeLists.txt b/gvsoc/gvsoc/dpi-wrapper/CMakeLists.txt index 2ef484d0b..1bbc312f1 100644 --- a/gvsoc/gvsoc/dpi-wrapper/CMakeLists.txt +++ b/gvsoc/gvsoc/dpi-wrapper/CMakeLists.txt @@ -8,7 +8,7 @@ set(GVSOC_DPI_INC_DIRS "ext/sv/include/questa/" add_library(gvsocdpi SHARED ${GVSOC_DPI_SRCS}) target_include_directories(gvsocdpi PRIVATE ${GVSOC_DPI_INC_DIRS}) -target_link_libraries(gvsocdpi PUBLIC gvsoc) +target_link_libraries(gvsocdpi PUBLIC gvsoc_sv) install(TARGETS gvsocdpi LIBRARY DESTINATION lib diff --git a/gvsoc/gvsoc/dpi-wrapper/src/dpi.cpp b/gvsoc/gvsoc/dpi-wrapper/src/dpi.cpp index 6830eb9fe..e91b75418 100644 --- a/gvsoc/gvsoc/dpi-wrapper/src/dpi.cpp +++ b/gvsoc/gvsoc/dpi-wrapper/src/dpi.cpp @@ -30,6 +30,7 @@ using namespace std; extern "C" void *dpi_open(char *config_path) { struct gv_conf gv_conf; + gv_conf.proxy_socket = NULL; gv_init(&gv_conf); void *handle = gv_create(config_path, &gv_conf); return handle; diff --git a/gvsoc/gvsoc/engine/CMakeLists.txt b/gvsoc/gvsoc/engine/CMakeLists.txt index 8d141279b..d1303f654 100644 --- a/gvsoc/gvsoc/engine/CMakeLists.txt +++ b/gvsoc/gvsoc/engine/CMakeLists.txt @@ -12,7 +12,12 @@ set(GVSOC_ENGINE_CXX_SRCS "src/clock/clock.cpp" "src/vp.cpp" "src/proxy.cpp" - "src/power/power.cpp" + "src/power/power_table.cpp" + "src/power/power_engine.cpp" + "src/power/component_power.cpp" + "src/power/power_trace.cpp" + "src/power/power_source.cpp" + "src/launcher.cpp" ) set(GVSOC_ENGINE_C_SRCS @@ -37,7 +42,7 @@ if(${BUILD_OPTIMIZED}) add_library(gvsoc SHARED ${GVSOC_ENGINE_CXX_SRCS} ${GVSOC_ENGINE_C_SRCS}) target_include_directories(gvsoc PUBLIC ${GVSOC_ENGINE_INC_DIRS}) target_link_libraries(gvsoc PUBLIC json-tools z pthread ${CMAKE_DL_LIBS}) - set_target_properties(gvsoc PROPERTIES OUTPUT_NAME "libpulpvp") + set_target_properties(gvsoc PROPERTIES OUTPUT_NAME "pulpvp") install(TARGETS gvsoc LIBRARY DESTINATION lib ARCHIVE DESTINATION lib @@ -63,7 +68,7 @@ if(${BUILD_DEBUG}) add_library(gvsoc_debug SHARED ${GVSOC_ENGINE_CXX_SRCS} ${GVSOC_ENGINE_C_SRCS}) target_include_directories(gvsoc_debug PUBLIC ${GVSOC_ENGINE_INC_DIRS}) target_link_libraries(gvsoc_debug PUBLIC json-tools z pthread ${CMAKE_DL_LIBS}) - set_target_properties(gvsoc_debug PROPERTIES OUTPUT_NAME "libpulpvp-debug") + set_target_properties(gvsoc_debug PROPERTIES OUTPUT_NAME "pulpvp-debug") install(TARGETS gvsoc_debug LIBRARY DESTINATION lib ARCHIVE DESTINATION lib @@ -91,7 +96,7 @@ if(${BUILD_RTL}) add_library(gvsoc_sv SHARED ${GVSOC_ENGINE_CXX_SRCS} ${GVSOC_ENGINE_C_SRCS}) target_include_directories(gvsoc_sv PUBLIC ${GVSOC_ENGINE_INC_DIRS}) target_link_libraries(gvsoc_sv PUBLIC json-tools z pthread ${CMAKE_DL_LIBS}) - set_target_properties(gvsoc_sv PROPERTIES OUTPUT_NAME "libpulpvp-sv") + set_target_properties(gvsoc_sv PROPERTIES OUTPUT_NAME "pulpvp-sv") install(TARGETS gvsoc_sv LIBRARY DESTINATION lib ARCHIVE DESTINATION lib diff --git a/gvsoc/gvsoc/engine/Makefile b/gvsoc/gvsoc/engine/Makefile index aae16230d..0d8dd9761 100644 --- a/gvsoc/gvsoc/engine/Makefile +++ b/gvsoc/gvsoc/engine/Makefile @@ -24,7 +24,7 @@ CFLAGS_DBG += -DVP_TRACE_ACTIVE=1 CFLAGS_SV += -DVP_TRACE_ACTIVE=1 -D__VP_USE_SYSTEMV=1 VP_SRCS = src/vp.cpp src/proxy.cpp src/trace/trace.cpp src/clock/clock.cpp src/trace/event.cpp \ - src/trace/vcd.cpp src/trace/lxt2.cpp src/power/power.cpp src/trace/lxt2_write.c \ + src/trace/vcd.cpp src/trace/lxt2.cpp src/power/power_trace.cpp src/power/power_table.cpp src/power/power_source.cpp src/power/power_engine.cpp src/power/component_power.cpp src/trace/lxt2_write.c \ src/trace/fst/fastlz.c src/trace/fst/lz4.c src/trace/fst/fstapi.c src/trace/fst.cpp \ src/trace/raw.cpp src/trace/raw/trace_dumper.cpp src/launcher.cpp diff --git a/gvsoc/gvsoc/engine/include/gv/power.hpp b/gvsoc/gvsoc/engine/include/gv/power.hpp new file mode 100644 index 000000000..df4853d35 --- /dev/null +++ b/gvsoc/gvsoc/engine/include/gv/power.hpp @@ -0,0 +1,577 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#pragma once + +#include "json.hpp" +#include "vp/vp_data.hpp" + +/** + * @brief Power framework + * + * Power is modeled through 2 classes, one for declaring sources of power consumptions + * and another one for collecting consumed power from sources. + * A note on method visibility: all the public functions are there for the HW models + * to model HW power consumption while protected methods are there for the classes + * belonging to vp::power, to manage the overall power framework. + * + */ + +namespace vp +{ + + namespace power + { + +#define VP_POWER_DEFAULT_TEMP 25 +#define VP_POWER_DEFAULT_VOLT 1.2 +#define VP_POWER_DEFAULT_FREQ 50 + + class Linear_table; + class engine; + class power_source; + class power_trace; + class component_power; + + /** + * @brief Used to model a power source + * + * A power source is a piece of hardware which is consuming energy. + * This class can be instantiated any time as needed to model all the ways + * an IP is consuming energy. + * It can be used for dynamic or leakage power, or for both at the same time, since + * they are accounted separatly. + * For dynamic power it can be used either as a quantum-based power source or + * as background power source. + * A quantum-based power source will consume energy only when an event is triggered. + * A background power source will constantly consume power as soon as it is on. + * A leakage power source is similar to a background power source, but is just accounted + * differently in the power report. + */ + class power_source + { + // Only classes from vp::power are allowed as friends + friend class vp::power::component_power; + + public: + /** + * @brief Account the the current energy quantum + * + * This should be used in quantum-based power source to trigger the consumption + * of a quantum of energy. + * The accounted quantum is the current one, estimated from the current temperature + * and voltage. + * This will just add the quantum of energy to the current consumed energy. + */ + inline void account_energy_quantum(); + + /** + * @brief Start accounting background power + * + * This should be used for a background dynamic power to start accounting the associated power. + * The power is accounted until the background power is stopped. + * The accounted power is the current one, estimated from the current temperature + * and voltage. + * This is actually converted to energy and accounted on the total of energy + * anytime current power is changed or power is stopped. + */ + inline void dynamic_power_start(); + + /** + * @brief Stop accounting background power + * + * This will trigger the accounting of energy for the current windows + * and stop accounting power until it is started again. + */ + inline void dynamic_power_stop(); + + /** + * @brief Start accounting leakage + * + * This should be used for leakage to start accounting the associated power. + * The power is accounted until the leakage is stopped. + * The accounted leakage is the current one, estimated from the current temperature + * and voltage. + * This is actually converted to energy and accounted on the total of energy + * anytime current power is changed or leakage is stopped. + */ + inline void leakage_power_start(); + + /** + * @brief Stop accounting leakage + * + * This will trigger the accounting of energy for the current windows + * and stop accounting leakage until it is started again. + */ + inline void leakage_power_stop(); + + protected: + /** + * @brief Initialize a power source + * + * This method is reserved for methods belonging to namespace vp::power. + * + * @param top Component containing the power source. + * @param name Name of the power source, used in traces. + * @param config Configuration of the power source, giving power numbers. + * @param trace Power trace where this source should account power consumed. + */ + int init(component *top, std::string name, js::config *config, power_trace *trace); + + /** + * @brief Set temperature, voltage and frequency + * + * The power source will adapt its power number according to the given characteristics. + * This method is reserved for methods belonging to namespace vp::power. + * + * @param temp Temperature + * @param volt Voltage + * @param freq Frequency + */ + void setup(double temp, double volt, double freq); + + private: + Linear_table *table = NULL; // Table of power values for all supported temperatures and voltages + // imported from the json configuration given when trace was initialized. + double quantum; // Current quantumm of energy, for quantum-based power consumption. + // The current value is estimated depending on voltage and temperature according + // to the provided json configuration. + double background_power; // Current background power, for background-based power consumption. + // The current value is estimated depending on voltage and temperature according + // to the provided json configuration. + double leakage; // Current leakage power, for leakage-based power consumption. + // The current value is estimated depending on voltage and temperature according + // to the provided json configuration. + component *top; // Top component containing the power source + power_trace *trace; // Power trace where the power consumption should be reported. + bool is_on = false; // True is the source is on and backgroun-power and leakage should be reported + }; + + + /** + * @brief Used for tracing power consumption + * + * This class can be used to gather the power consumption of several power sources and + * trace it through VCD traces and power reports. + * Each power source must be associated to a power trace and a power trace can be associated + * to one ore more power traces. + * A power trace is automatically created with each component and is the default trace associated + * to any power source created in this component. Additional traces can also be created + * to give finer granularity to the power consumption in the reports. + */ + class power_trace + { + // Only classes from vp::power are allowed as friends + friend class vp::power::power_source; + friend class vp::power::engine; + friend class vp::power::component_power; + + public: + /** + * @brief Init the trace + * + * @param top Component containing the power trace. + * @param name Name of the power trace. It will be used in traces and in the power report + * @param parent Optional. Trace parent of this trace. Can be NULL to take the default + * one of the parent component. Power consumption of this trace will also + * be accounted to the parent to have a hierarchical view of the power + * consumption. + */ + int init(component *top, std::string name, power_trace *parent=NULL); + + /** + * @brief Return if the trace is enabled + * + * @return true if the trace is active and should account power + * @return false if the trace is inactive and any activity should be ignored + */ + inline bool get_active() { return trace.get_event_active(); } + + /** + * @brief Dump the trace + * + * This allowss dumping the power consumption of this trace to a file. + * This also dumps the consumption of the traces of the child components + * to get the hierarchical distribution. + * + * @param file File descriptor where the trace should. + */ + void dump(FILE *file); + + protected: + + /** + * @brief Start monitoring power for report generation. + * + * This will clear all pending power values so that a new report starts + * to be generating within a window which start when this method is + * called. + * It can be called several time to generate several reports, each one + * on a different time window. + * This method is reserved for methods belonging to namespace vp::power. + * + * @param file File descriptor where the trace should. + */ + void report_start(); + + /** + * @brief Report the average power consumed on the active window. + * + * The time duration of the report window (starting at the time where + * report_start was called) is computed, the average power estimated + * on this window and returned (both dynamic and leakage). + * This method is reserved for methods belonging to namespace vp::power. + * + * @param dynamic Dynamic power consumed on the time window is reported here. + * @param leakage Leakage power consumed on the time window is reported here. + */ + void get_report_power(double *dynamic, double *leakage); + + /** + * @brief Report the energy consumed on the active window. + * + * The time duration of the report window (starting at the time where + * report_start was called) is computed, the total amount of energy consumed + * estimated on this window and returned (both dynamic and leakage). + * This method is reserved for methods belonging to namespace vp::power. + * + * @param dynamic Dynamic power consumed on the time window is reported here. + * @param leakage Leakage power consumed on the time window is reported here. + */ + void get_report_energy(double *dynamic, double *leakage); + + /** + * @brief Report the current instant power. + * + * Report the sum of background dynamic power, leakage power, and + * power corresponding to the dynamic energy consumed in the current cycle. + * For what concerns the energy, since this is based on events, this can grow + * several times in the same cycle. So it is important to call this function + * everytime the energy in the cycle is increased, to get the proper power at the + * end of the cycle. + * + * @return The current instant power + */ + inline double get_power(); + + /** + * @brief Increment the current dynamic background power. + * + * The dynamic background power is incremented by the specified value + * to reflect a change in power consumption. + * Note that this power is consumed constantly until it is modified again. + * This can be used to model some power consumed in background activity + * (e.g. a core in idle mode). + * This method is reserved for methods belonging to namespace vp::power. + * + * @param power_inc Power increase. Can be negative to reflect a decrease. + */ + void inc_dynamic_power(double power_inc); + + /** + * @brief Increment the current leakage power. + * + * The leakage power is incremented by the specified value + * to reflect a change in power consumption. + * Note that this power is consumed constantly until it is modified again. + * This can be used to model the leakage power which is consumed in background + * as soon as an IP is on. + * This method is reserved for methods belonging to namespace vp::power. + * + * @param power_inc Power increase. Can be negative to reflect a decrease. + */ + void inc_leakage_power(double power_incr); + + /** + * @brief Increment the current energy consumed. + * + * The amount of energy consumed is increased by the specified amount of + * energy (in joule) to reflect that an event occured and consumed some + * energy (like a memory access). + * This method is reserved for methods belonging to namespace vp::power. + * + * @param power_inc Power increase. Can be negative to reflect a decrease. + */ + void inc_dynamic_energy(double energy); + + private: + // Regularly, current power consumption is converted into energy and added + // to the total amount of energy consumed, for example when the current power + // consumption is modified. + // Calling this function will do this conversion for the dynamic part of the + // power consumed. + void account_dynamic_power(); + + // Regularly, current power consumption is converted into energy and added + // to the total amount of energy consumed, for example when the current power + // consumption is modified. + // Calling this function will do this conversion for the leakage part of the + // power consumed. + void account_leakage_power(); + + // Check if the current amount of cycle energy is not for the current cycle + // (by checking the timestamp), and if not, reset it to zero. + inline void flush_dynamic_energy_for_cycle(); + + // Get the amount of energy spent in the current cycle + inline double get_dynamic_energy_for_cycle(); + + // Return the total amount of dynamic energy spent since the beginning + // of the report windows (since report_start was called) + inline double get_report_dynamic_energy(); + + // Return the total amount of leakage energy spent since the beginning + // of the report windows (since report_start was called) + inline double get_report_leakage_energy(); + + // Dump VCD trace reporting the power consumption + // This should be called everytime the energy consumed in the current cycle + // or the current background or leakage power is modified. + void dump_vcd_trace(); + + // Event handler called after an energy quantum has been accounted + // in order to dump the new value of the vcd trace since the quantum + // has to be removed from the vcd value in the next cycle + static void trace_handler(void *__this, vp::clock_event *event); + + + component *top; // Component containing this power trace + power_trace *parent; // Parent trace where power consumption should be + // also be accounted to build the hierarchical view. + vp::clock_event *trace_event; // Clock event used to adjust VCD trace value after + // energy quantum has been accounted. + vp::trace trace; // Trace used for reporting power in VCD traces + + int64_t curent_cycle_timestamp; // Timestamp of the current cycle, used to compute energy spent in the + // current cycle. As soon as current time is different, the timestamp + // is set to current time and the current energy is set to 0. + double dynamic_energy_for_cycle; // Amount of energy spent in the current cycle. + // It is increased everytime a quantum of energy is + // spent and reset to zero when the current cycle is + // over. It is mostly used to compute the instant power + // displayed in VCD traces. + + int64_t report_start_timestamp; // Time where the current report window was started. + // It is used to compute the average power when the report is dumped + double report_dynamic_energy; // Total amount of dynamic energy spent since the report was started + double report_leakage_energy; // Total amount of leakage energy spent since the report was started + + int64_t current_dynamic_power_timestamp; // Indicate the timestamp of the last time the background energy + // was accounted. This is used everytime background power is + // updated or dumped to compute the energy spent over the period. + double current_dynamic_power; // Current dynamic background power. This is used to account the + // energy over the period being measured. Everytime it is updated, + // the energy should be computed and the timestamp updated. + + int64_t current_leakage_power_timestamp; // Indicate the timestamp of the last time the leakage energy + // was accounted. This is used everytime leakage power is + // updated or dumped to compute the energy spent over the period. + double current_leakage_power; // Current leakage power. This is used to account the + // energy over the period being measured. Everytime it is updated, + // the energy should be computed and the timestamp updated. + + double current_power; // Instant power of the current cycle. This is updated everytime + // background or leakage power is updated and also when a quantum of energy is + // accounted, in order to proerly update the VCD trace + }; + + + /** + * @brief Class gathering all power aspects of a component + * + * Each component should include an object of this class to include power modeling fetures. + * A model can use this object to model power consumption. + */ + class component_power + { + // Only classes from vp::power are allowed as friends + friend class power_trace; + + public: + /** + * @brief Construct a new component power object + * + * @param top Component containing this object. + */ + component_power(component &top); + + /** + * @brief Get the power engine + * + * + * @return power::engine* Return the central power engine + */ + power::engine *get_engine() { return engine; } + + /** + * @brief Do all required initializations + * + */ + void build(); + + /** + * @brief Declare a new power source + * + * Power source can be used to report consumption. + * One power source can used to account both dynamic and leakage power, + * but any number of power sources can also be used to better organize + * the modeling of the power consumption. + * + * @param name Name of the power source. + * @param source Power source to be declared. + * @param config JSON configuration of the power source giving the power numbers + * @param trace Power trace where the power consumption of this source should be reported. + * @return int 0 if it was successfully declared, -1 otherwise. + */ + int new_power_source(std::string name, power_source *source, js::config *config, power_trace *trace=NULL); + + /** + * @brief Declare a new power trace + * + * Power traces are used to account and report power consumption. + * A default trace is associated to each component but more traces can be + * declared to better organize power consumption modeling/ + * + * @param name Name of the power trace + * @param trace Power trace to be declared + * @param parent Optional. Parent trace. Can be NULL to take default parent trace. + * Can be use to organize differently the hierarchy of traces for VCD dumping. + * @return int + */ + int new_power_trace(std::string name, power_trace *trace, vp::power::power_trace *parent=NULL); + + /** + * @brief Get the default power trace + * + * Get the default power trace associated to this component. + * All power sources have by default this power trace as parent. + * + * @return vp::power::power_trace* The default power trace + */ + vp::power::power_trace *get_power_trace() { return &this->power_trace; } + + protected: + /** + * @brief Get the report energy from childs object + * + * Get the total amount of energy since the begining of the current report window + * (since report_start was called). + * + * @param dynamic Report dynamic energy here + * @param leakage Report leakage energy here + */ + void get_report_energy_from_childs(double *dynamic, double *leakage); + + /** + * @brief Get the instant power from childs + * + * This returns the instant power of the whole power hierarchy below this component. + * + * @return double Instant power + */ + double get_power_from_childs(); + + /** + * @brief Dump component power traces + * + * All the power traces of this component are dumped to the specified file. + * + * @param file File where to dump the trace + * @param total Total power used to compute trace contribution + */ + void dump(FILE *file, double total); + + /** + * @brief Dump power traces of child components + * + * Each component child is asked to dump its power traces to the specified file. + * + * @param file File where to dump the trace + * @param total Total power used to compute trace contribution + */ + void dump_child_traces(FILE *file, double total); + + private: + // Get energy since begining of report window for this component and his childs + void get_report_energy_from_self_and_childs(double *dynamic, double *leakage); + + // Get instant power for this component and the whole hierarchy below him. + double get_power_from_self_and_childs(); + + component ⊤ // Component containing the power component object + vp::power::power_trace power_trace; // Default power trace of this component + std::vector traces; // Vector of power traces of this component + power::engine *engine = NULL; // Power engine + }; + + + + /** + * @brief Class for power engine + * + * The engine is a central object used for managing power modeling. + */ + class engine + { + // Only classes from vp::power are allowed as friends + friend class vp::power::component_power; + + public: + /** + * @brief Construct a new engine object + * + * @param top Top component of teh simulated system. + */ + engine(vp::component *top); + + /** + * @brief Start power report generation + * + * This will start accounting power consumption for dumping the power report. + */ + void start_capture(); + + /** + * @brief Dump power report + * + * This dumps a report of the power consumed since start_capture was called. + */ + void stop_capture(); + + protected: + /** + * @brief Register a new trace + * + * Any power trace has to be registered in the engine by calling this method. + * + * @param trace Trace to be registered. + */ + void reg_trace(vp::power::power_trace *trace); + + private: + std::vector traces; // Vector of all traces. + + vp::component *top; // Top component of the simulated architecture + }; + + }; + +}; diff --git a/gvsoc/gvsoc/engine/include/vp/clock/clock_event.hpp b/gvsoc/gvsoc/engine/include/vp/clock/clock_event.hpp index dabcc0f3f..7efe79aa7 100644 --- a/gvsoc/gvsoc/engine/include/vp/clock/clock_event.hpp +++ b/gvsoc/gvsoc/engine/include/vp/clock/clock_event.hpp @@ -59,6 +59,8 @@ namespace vp { int64_t get_cycle() { return cycle; } + void exec() { this->meth(this->_this, this); } + private: uint8_t payload[CLOCK_EVENT_PAYLOAD_SIZE]; void *args[CLOCK_EVENT_NB_ARGS]; diff --git a/gvsoc/gvsoc/engine/include/vp/component.hpp b/gvsoc/gvsoc/engine/include/vp/component.hpp index 652059339..dd336a587 100644 --- a/gvsoc/gvsoc/engine/include/vp/component.hpp +++ b/gvsoc/gvsoc/engine/include/vp/component.hpp @@ -35,7 +35,7 @@ #include "vp/itf/clk.hpp" #include "vp/clock/component_clock.hpp" #include "vp/trace/component_trace.hpp" -#include "vp/power/component_power.hpp" +#include "gv/power.hpp" #include "json.hpp" #include @@ -424,7 +424,7 @@ namespace vp { void dump_traces_recursive(FILE *file); - + component *get_parent() { return this->parent; } inline js::config *get_js_config() { return comp_js_config; } js::config *get_vp_config(); @@ -457,6 +457,7 @@ namespace vp { config *import_config(const char *config_string); void reg_step_pre_start(std::function callback); + void register_build_callback(std::function callback); void post_post_build(); @@ -525,7 +526,7 @@ namespace vp { virtual std::string handle_command(Gv_proxy *proxy, FILE *req_file, FILE *reply_file, std::vector args, std::string req) { return ""; } component_trace traces; - component_power power; + vp::power::component_power power; trace warning; @@ -557,6 +558,7 @@ namespace vp { component *parent = NULL; vector> pre_start_callbacks; + vector> build_callbacks; vector regs; bool reset_done_from_itf; diff --git a/gvsoc/gvsoc/engine/include/vp/power/component_power.hpp b/gvsoc/gvsoc/engine/include/vp/power/component_power.hpp deleted file mode 100644 index e21878a47..000000000 --- a/gvsoc/gvsoc/engine/include/vp/power/component_power.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and - * University of Bologna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) - */ - -#ifndef __VP_TRACE_COMPONENT_POWER_HPP__ -#define __VP_TRACE_COMPONENT_POWER_HPP__ - -#include "vp/component.hpp" -#include "vp/power/power.hpp" -#include "json.hpp" - -using namespace std; - -namespace vp { - - class power_trace; - class power_source; - - class component_power - { - - public: - - component_power(component &top); - - power_engine *get_engine() { return power_manager; } - - void post_post_build(); - - void pre_start(); - - int new_event(std::string name, power_source *source, js::config *config, power_trace *trace, bool is_leakage=false); - - int new_leakage_event(std::string name, power_source *source, js::config *config, power_trace *trace) { return this->new_event(name, source, config, trace, true); } - - int new_trace(std::string name, power_trace *trace); - - void reg_top_trace(vp::power_trace *trace); - - protected: - - private: - component ⊤ - - std::vector traces; - - power_engine *power_manager = NULL; - }; - -}; - - -#endif diff --git a/gvsoc/gvsoc/engine/include/vp/power/implementation.hpp b/gvsoc/gvsoc/engine/include/vp/power/implementation.hpp deleted file mode 100644 index 048e4d42d..000000000 --- a/gvsoc/gvsoc/engine/include/vp/power/implementation.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and - * University of Bologna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) - */ - - - -#ifndef __VP_POWER_IMPLEMENTATION_HPP__ -#define __VP_POWER_IMPLEMENTATION_HPP__ - -#include "vp/vp_data.hpp" -#include "vp/power/power_engine.hpp" - - -inline void vp::power_trace::account_quantum(double quantum) -{ - this->incr(quantum); - this->trace.event_real_pulse(this->top->get_period(), quantum, 0); -} - -inline double vp::power_trace::get_value() -{ - if (this->timestamp < this->top->get_time()) - { - this->timestamp = this->top->get_time(); - this->value = 0; - } - return this->value; -} - -inline double vp::power_trace::get_total() -{ - this->account_power(); - return this->total; -} - -inline double vp::power_trace::get_total_leakage() -{ - this->account_leakage_power(); - return this->total_leakage; -} - -inline void vp::power_trace::flush() -{ - this->account_power(); - this->account_leakage_power(); -} - -#endif \ No newline at end of file diff --git a/gvsoc/gvsoc/engine/include/vp/power/power.hpp b/gvsoc/gvsoc/engine/include/vp/power/power.hpp deleted file mode 100644 index f2c73ee39..000000000 --- a/gvsoc/gvsoc/engine/include/vp/power/power.hpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and - * University of Bologna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) - */ - -#ifndef __VP_POWER_POWER_HPP__ -#define __VP_POWER_POWER_HPP__ - -#include "json.hpp" -#include "vp/vp_data.hpp" - -namespace vp { - - #define VP_POWER_DEFAULT_TEMP 25 - #define VP_POWER_DEFAULT_VOLT 1.2 - #define VP_POWER_DEFAULT_FREQ 50 - - class Linear_table; - - class power_engine; - - class power_trace - { - public: - int init(component *top, std::string name); - - inline bool get_active() { return trace.get_event_active(); } - - inline void account_quantum(double quantum); - - void set_power(double quantum, bool is_leakage); - - void incr(double quantum, bool is_leakage=false); - - inline double get_value(); - - inline double get_total(); - - inline double get_total_leakage(); - - bool is_dumped() { return this->dumped; } - - power_trace *get_top_trace(); - - void clear(); - - void flush(); - - void dump(FILE *file); - - void collect(); - - void reg_top_trace(vp::power_trace *trace); - void reg_child_trace(vp::power_trace *trace); - - void get(double *dynamic, double *leakage); - - vp::trace trace; - - private: - void account_power(); - void account_leakage_power(); - - component *top; - power_trace *top_trace = NULL; - std::vector child_traces; - double value; - double total; - double total_leakage; - int64_t timestamp; - int64_t last_clear_timestamp; - - double current_power; - int64_t current_power_timestamp; - - double current_leakage_power; - int64_t current_leakage_power_timestamp; - - bool dumped; - }; - - class power_source - { - friend class component_power; - - public: - inline void account_event() { this->trace->account_quantum(this->quantum); } - inline void power_on() { if (!this->is_on) this->trace->set_power(this->quantum, this->is_leakage); this->is_on = true; } - inline void power_off() { if (this->is_on) this->trace->set_power(-this->quantum, this->is_leakage); this->is_on = false; } - - inline double get_quantum() { return this->quantum; } - - - protected: - int init(component *top, std::string name, js::config *config, power_trace *trace, bool is_leakage); - void setup(double temp, double volt, double freq); - - private: - Linear_table *table = NULL; - double quantum; - component *top; - power_trace *trace; - bool is_on = false; - bool is_leakage; - }; - -}; - -#endif \ No newline at end of file diff --git a/gvsoc/gvsoc/engine/include/vp/power/power_engine.hpp b/gvsoc/gvsoc/engine/include/vp/power/power_engine.hpp deleted file mode 100644 index d4a95ccc7..000000000 --- a/gvsoc/gvsoc/engine/include/vp/power/power_engine.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and - * University of Bologna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) - */ - -#ifndef __VP_POWER_ENGINE_HPP__ -#define __VP_POWER_ENGINE_HPP__ - -#include "vp/vp_data.hpp" -#include "vp/component.hpp" -#include "vp/power/power.hpp" -#include -#include - -namespace vp { - - class power_engine : public component - { - public: - power_engine(js::config *config); - - virtual void start_capture() {} - - virtual void stop_capture() {} - - virtual void reg_trace(vp::power_trace *trace) {} - }; - -}; - -#endif diff --git a/gvsoc/gvsoc/engine/include/vp/power/power_source.hpp b/gvsoc/gvsoc/engine/include/vp/power/power_source.hpp new file mode 100644 index 000000000..10bb99434 --- /dev/null +++ b/gvsoc/gvsoc/engine/include/vp/power/power_source.hpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + + +#pragma once + +#include "vp/vp_data.hpp" + + + +inline void vp::power::power_source::leakage_power_start() +{ + // Only start accounting leakage if not already done and if leakage is defined + if (!this->is_on && this->leakage != -1) + { + this->trace->inc_leakage_power(this->leakage); + } + this->is_on = true; +} + + + +inline void vp::power::power_source::leakage_power_stop() +{ + // Only stop accounting leakage if not already done and if leakage is defined + if (this->is_on && this->leakage != -1) + { + this->trace->inc_leakage_power(-this->leakage); + } + this->is_on = false; +} + + + +inline void vp::power::power_source::dynamic_power_start() +{ + // Only start accounting background power if not already done and if it is is defined + if (!this->is_on && this->background_power != -1) + { + this->trace->inc_dynamic_power(this->background_power); + } + this->is_on = true; +} + + + +inline void vp::power::power_source::dynamic_power_stop() +{ + // Only stop accounting background power if not already done and if it is is defined + if (this->is_on && this->background_power != -1) + { + this->trace->inc_dynamic_power(-this->background_power); + } + this->is_on = false; +} + + + +inline void vp::power::power_source::account_energy_quantum() +{ + // Only account energy is a quantum is defined + if (this->quantum != -1) + { + this->trace->inc_dynamic_energy(this->quantum); + } +} diff --git a/gvsoc/gvsoc/engine/include/vp/power/power_table.hpp b/gvsoc/gvsoc/engine/include/vp/power/power_table.hpp new file mode 100644 index 000000000..a55f65930 --- /dev/null +++ b/gvsoc/gvsoc/engine/include/vp/power/power_table.hpp @@ -0,0 +1,146 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#pragma once + +#include "vp/vp_data.hpp" + + + +namespace vp +{ + namespace power + { + class Linear_temp_table; + class Linear_volt_table; + + /** + * @brief Power values of a power characteristic + * + * This manages the actual power value of a power characteristic, depending on current + * temperature, voltage and frequency. + * The value is interpolated, based on power numbers at various voltages, temperatures and frequencies. + */ + class Linear_table + { + public: + /** + * @brief Construct a new Linear_table object + * + * @param config JSON config giving all the power numbers at various frequencies, temperatures an voltages + */ + Linear_table(js::config *config); + + /** + * @brief Get the power value at specified temperature, voltage and frequency + * + * The value is interpolated from the tables extracted from JSON tables. + * + * @param temp Temperature + * @param volt Voltage + * @param frequency Frequency + * @return double The estimated power value + */ + double get(double temp, double volt, double frequency); + + private: + // Vector of power tables at supported temperatures + std::vector temp_tables; + }; + + /** + * @brief Power values of a power characteristic at a given temperature + */ + class Linear_temp_table + { + public: + /** + * @brief Construct a new Linear_temp_table object + * + * @param temp Temperature for which this table is valid + * @param config JSON config containing the power numbers + */ + Linear_temp_table(double temp, js::config *config); + + /** + * @brief Get the power value at specified voltage and frequency + * + * The value is interpolated from the tables extracted from JSON tables. + * These tables contains the power values at different voltages and frequencies + * at the temperature for which this class has been created. + * + * @param volt Voltage + * @param frequency Frequency + * @return double The estimated power value + */ + double get(double volt, double frequency); + + /** + * @brief Get temperature for which this class has been created + * + * @return double Temperature + */ + inline double get_temp() { return this->temp; } + + private: + std::vector volt_tables; // Power tables at various voltages + double temp; // Temperature for which this table has been created + }; + + /** + * @brief Power values of a power characteristic at a given temperature and voltage + */ + class Linear_volt_table + { + public: + /** + * @brief Construct a new Linear_volt_table object + * + * @param volt Voltage for which the power numbers are defined. + * @param config JSON config giving the power numbers for various frequencies at the specified voltage + */ + Linear_volt_table(double volt, js::config *config); + + /** + * @brief Get the power number at the specified frequency + * + * The value is interpolated from the tables extracted from JSON tables. + * These tables contains the power values at different frequencies + * at the voltage and temperature for which this class has been created. + * + * @param frequency Frequency at which the power number should be given + * @return double + */ + inline double get(double frequency) { return any; } + + /** + * @brief Get voltage for which this class has been created + * + * @return double Voltage + */ + inline double get_volt() { return this->volt; } + + private: + double any; // Power value for any frequency + double volt; // Voltage for which this class has been instantiated + }; + }; +}; diff --git a/gvsoc/gvsoc/engine/include/vp/power/power_trace.hpp b/gvsoc/gvsoc/engine/include/vp/power/power_trace.hpp new file mode 100644 index 000000000..6d833599b --- /dev/null +++ b/gvsoc/gvsoc/engine/include/vp/power/power_trace.hpp @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#pragma once + +#include "vp/vp_data.hpp" + + + +inline double vp::power::power_trace::get_power() +{ + return this->current_power; +} + + + +inline double vp::power::power_trace::get_dynamic_energy_for_cycle() +{ + // First check if the current energy is for an old cycle + this->flush_dynamic_energy_for_cycle(); + + // And return the current total + return this->dynamic_energy_for_cycle; +} + + + +inline void vp::power::power_trace::flush_dynamic_energy_for_cycle() +{ + // Clear the current total if it is not for the current cycle + if (this->curent_cycle_timestamp < this->top->get_time()) + { + this->curent_cycle_timestamp = this->top->get_time(); + this->dynamic_energy_for_cycle = 0; + } +} + + + +inline double vp::power::power_trace::get_report_dynamic_energy() +{ + // First convert background power to energy + this->account_dynamic_power(); + + // And return the current total + return this->report_dynamic_energy; +} + + + +inline double vp::power::power_trace::get_report_leakage_energy() +{ + // First convert leakage power to energy + this->account_leakage_power(); + + // And return the current total + return this->report_leakage_energy; +} diff --git a/gvsoc/gvsoc/engine/include/vp/time/time_engine.hpp b/gvsoc/gvsoc/engine/include/vp/time/time_engine.hpp index 2e4c9bd9a..ac5f4d20a 100644 --- a/gvsoc/gvsoc/engine/include/vp/time/time_engine.hpp +++ b/gvsoc/gvsoc/engine/include/vp/time/time_engine.hpp @@ -98,6 +98,7 @@ class time_engine : public component bool locked_run_req; bool run_req; bool stop_req; + bool pause_req; bool finished = false; bool init = false; diff --git a/gvsoc/gvsoc/engine/include/vp/vp.hpp b/gvsoc/gvsoc/engine/include/vp/vp.hpp index f99435987..79199c9b2 100644 --- a/gvsoc/gvsoc/engine/include/vp/vp.hpp +++ b/gvsoc/gvsoc/engine/include/vp/vp.hpp @@ -27,6 +27,8 @@ #include "vp/implementation.hpp" #include "vp/trace/implementation.hpp" #include "vp/clock/implementation.hpp" -#include "vp/power/implementation.hpp" +#include "vp/power/power_trace.hpp" +#include "vp/power/power_source.hpp" +#include "vp/power/power_table.hpp" #endif diff --git a/gvsoc/gvsoc/engine/include/vp/vp_data.hpp b/gvsoc/gvsoc/engine/include/vp/vp_data.hpp index cec3c2742..cbccf92de 100644 --- a/gvsoc/gvsoc/engine/include/vp/vp_data.hpp +++ b/gvsoc/gvsoc/engine/include/vp/vp_data.hpp @@ -26,6 +26,6 @@ #include "vp/component.hpp" #include "vp/clock/clock_event.hpp" #include "vp/clock/clock_engine.hpp" -#include "vp/power/power.hpp" +#include "gv/power.hpp" #endif diff --git a/gvsoc/gvsoc/engine/python/vp_runner.py b/gvsoc/gvsoc/engine/python/vp_runner.py deleted file mode 100644 index 4b5797158..000000000 --- a/gvsoc/gvsoc/engine/python/vp_runner.py +++ /dev/null @@ -1,1422 +0,0 @@ -# -# Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and -# University of Bologna -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# -# Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) -# - -import vp_core -import runner.stim_utils -from os import listdir -from os.path import isfile, join, isdir -import os.path - -from plp_platform import * -import runner.plp_flash_stimuli as plp_flash_stimuli -import shlex -import json_tools as js -import pulp_config -from prettytable import PrettyTable -import imp -import ctypes - -import gtkw_new - -gtkw_colors = [ -"alice blue", -"AliceBlue", -"antique white", -"AntiqueWhite", -"AntiqueWhite1", -"AntiqueWhite2", -"AntiqueWhite3", -"AntiqueWhite4", -"aquamarine", -"aquamarine1", -"aquamarine2", -"aquamarine3", -"aquamarine4", -"azure", -"azure1", -"azure2", -"azure3", -"azure4", -"beige", -"bisque", -"bisque1", -"bisque2", -"bisque3", -"bisque4", -"black", -"blanched almond", -"BlanchedAlmond", -"blue", -"blue violet", -"blue1", -"blue2", -"blue3", -"blue4", -"BlueViolet", -"brown", -"brown1", -"brown2", -"brown3", -"brown4", -"burlywood", -"burlywood1", -"burlywood2", -"burlywood3", -"burlywood4", -"cadet blue", -"CadetBlue", -"CadetBlue1", -"CadetBlue2", -"CadetBlue3", -"CadetBlue4", -"chartreuse", -"chartreuse1", -"chartreuse2", -"chartreuse3", -"chartreuse4", -"chocolate", -"chocolate1", -"chocolate2", -"chocolate3", -"chocolate4", -"coral", -"coral1", -"coral2", -"coral3", -"coral4", -"cornflower blue", -"CornflowerBlue", -"cornsilk", -"cornsilk1", -"cornsilk2", -"cornsilk3", -"cornsilk4", -"cyan", -"cyan1", -"cyan2", -"cyan3", -"cyan4", -"dark blue", -"dark cyan", -"dark goldenrod", -"dark gray", -"dark green", -"dark grey", -"dark khaki", -"dark magenta", -"dark olive green", -"dark orange", -"dark orchid", -"dark red", -"dark salmon", -"dark sea green", -"dark slate blue", -"dark slate gray", -"dark slate grey", -"dark turquoise", -"dark violet", -"DarkBlue", -"DarkCyan", -"DarkGoldenrod", -"DarkGoldenrod1", -"DarkGoldenrod2", -"DarkGoldenrod3", -"DarkGoldenrod4", -"DarkGray", -"DarkGreen", -"DarkGrey", -"DarkKhaki", -"DarkMagenta", -"DarkOliveGreen", -"DarkOliveGreen1", -"DarkOliveGreen2", -"DarkOliveGreen3", -"DarkOliveGreen4", -"DarkOrange", -"DarkOrange1", -"DarkOrange2", -"DarkOrange3", -"DarkOrange4", -"DarkOrchid", -"DarkOrchid1", -"DarkOrchid2", -"DarkOrchid3", -"DarkOrchid4", -"DarkRed", -"DarkSalmon", -"DarkSeaGreen", -"DarkSeaGreen1", -"DarkSeaGreen2", -"DarkSeaGreen3", -"DarkSeaGreen4", -"DarkSlateBlue", -"DarkSlateGray", -"DarkSlateGray1", -"DarkSlateGray2", -"DarkSlateGray3", -"DarkSlateGray4", -"DarkSlateGrey", -"DarkTurquoise", -"DarkViolet", -"deep pink", -"deep sky blue", -"DeepPink", -"DeepPink1", -"DeepPink2", -"DeepPink3", -"DeepPink4", -"DeepSkyBlue", -"DeepSkyBlue1", -"DeepSkyBlue2", -"DeepSkyBlue3", -"DeepSkyBlue4", -"dim gray", -"dim grey", -"DimGray", -"DimGrey", -"dodger blue", -"DodgerBlue", -"DodgerBlue1", -"DodgerBlue2", -"DodgerBlue3", -"DodgerBlue4", -"firebrick", -"firebrick1", -"firebrick2", -"firebrick3", -"firebrick4", -"floral white", -"FloralWhite", -"forest green", -"ForestGreen", -"gainsboro", -"ghost white", -"GhostWhite", -"gold", -"gold1", -"gold2", -"gold3", -"gold4", -"goldenrod", -"goldenrod1", -"goldenrod2", -"goldenrod3", -"goldenrod4", -"gray", -"gray0", -"gray1", -"gray10", -"gray100", -"gray11", -"gray12", -"gray13", -"gray14", -"gray15", -"gray16", -"gray17", -"gray18", -"gray19", -"gray2", -"gray20", -"gray21", -"gray22", -"gray23", -"gray24", -"gray25", -"gray26", -"gray27", -"gray28", -"gray29", -"gray3", -"gray30", -"gray31", -"gray32", -"gray33", -"gray34", -"gray35", -"gray36", -"gray37", -"gray38", -"gray39", -"gray4", -"gray40", -"gray41", -"gray42", -"gray43", -"gray44", -"gray45", -"gray46", -"gray47", -"gray48", -"gray49", -"gray5", -"gray50", -"gray51", -"gray52", -"gray53", -"gray54", -"gray55", -"gray56", -"gray57", -"gray58", -"gray59", -"gray6", -"gray60", -"gray61", -"gray62", -"gray63", -"gray64", -"gray65", -"gray66", -"gray67", -"gray68", -"gray69", -"gray7", -"gray70", -"gray71", -"gray72", -"gray73", -"gray74", -"gray75", -"gray76", -"gray77", -"gray78", -"gray79", -"gray8", -"gray80", -"gray81", -"gray82", -"gray83", -"gray84", -"gray85", -"gray86", -"gray87", -"gray88", -"gray89", -"gray9", -"gray90", -"gray91", -"gray92", -"gray93", -"gray94", -"gray95", -"gray96", -"gray97", -"gray98", -"gray99", -"green", -"green yellow", -"green1", -"green2", -"green3", -"green4", -"GreenYellow", -"grey", -"grey0", -"grey1", -"grey10", -"grey100", -"grey11", -"grey12", -"grey13", -"grey14", -"grey15", -"grey16", -"grey17", -"grey18", -"grey19", -"grey2", -"grey20", -"grey21", -"grey22", -"grey23", -"grey24", -"grey25", -"grey26", -"grey27", -"grey28", -"grey29", -"grey3", -"grey30", -"grey31", -"grey32", -"grey33", -"grey34", -"grey35", -"grey36", -"grey37", -"grey38", -"grey39", -"grey4", -"grey40", -"grey41", -"grey42", -"grey43", -"grey44", -"grey45", -"grey46", -"grey47", -"grey48", -"grey49", -"grey5", -"grey50", -"grey51", -"grey52", -"grey53", -"grey54", -"grey55", -"grey56", -"grey57", -"grey58", -"grey59", -"grey6", -"grey60", -"grey61", -"grey62", -"grey63", -"grey64", -"grey65", -"grey66", -"grey67", -"grey68", -"grey69", -"grey7", -"grey70", -"grey71", -"grey72", -"grey73", -"grey74", -"grey75", -"grey76", -"grey77", -"grey78", -"grey79", -"grey8", -"grey80", -"grey81", -"grey82", -"grey83", -"grey84", -"grey85", -"grey86", -"grey87", -"grey88", -"grey89", -"grey9", -"grey90", -"grey91", -"grey92", -"grey93", -"grey94", -"grey95", -"grey96", -"grey97", -"grey98", -"grey99", -"honeydew", -"honeydew1", -"honeydew2", -"honeydew3", -"honeydew4", -"hot pink", -"HotPink", -"HotPink1", -"HotPink2", -"HotPink3", -"HotPink4", -"indian red", -"IndianRed", -"IndianRed1", -"IndianRed2", -"IndianRed3", -"IndianRed4", -"ivory", -"ivory1", -"ivory2", -"ivory3", -"ivory4", -"khaki", -"khaki1", -"khaki2", -"khaki3", -"khaki4", -"lavender", -"lavender blush", -"LavenderBlush", -"LavenderBlush1", -"LavenderBlush2", -"LavenderBlush3", -"LavenderBlush4", -"lawn green", -"LawnGreen", -"lemon chiffon", -"LemonChiffon", -"LemonChiffon1", -"LemonChiffon2", -"LemonChiffon3", -"LemonChiffon4", -"light blue", -"light coral", -"light cyan", -"light goldenrod", -"light goldenrod yellow", -"light gray", -"light green", -"light grey", -"light pink", -"light salmon", -"light sea green", -"light sky blue", -"light slate blue", -"light slate gray", -"light slate grey", -"light steel blue", -"light yellow", -"LightBlue", -"LightBlue1", -"LightBlue2", -"LightBlue3", -"LightBlue4", -"LightCoral", -"LightCyan", -"LightCyan1", -"LightCyan2", -"LightCyan3", -"LightCyan4", -"LightGoldenrod", -"LightGoldenrod1", -"LightGoldenrod2", -"LightGoldenrod3", -"LightGoldenrod4", -"LightGoldenrodYellow", -"LightGray", -"LightGreen", -"LightGrey", -"LightPink", -"LightPink1", -"LightPink2", -"LightPink3", -"LightPink4", -"LightSalmon", -"LightSalmon1", -"LightSalmon2", -"LightSalmon3", -"LightSalmon4", -"LightSeaGreen", -"LightSkyBlue", -"LightSkyBlue1", -"LightSkyBlue2", -"LightSkyBlue3", -"LightSkyBlue4", -"LightSlateBlue", -"LightSlateGray", -"LightSlateGrey", -"LightSteelBlue", -"LightSteelBlue1", -"LightSteelBlue2", -"LightSteelBlue3", -"LightSteelBlue4", -"LightYellow", -"LightYellow1", -"LightYellow2", -"LightYellow3", -"LightYellow4", -"lime green", -"LimeGreen", -"linen", -"magenta", -"magenta1", -"magenta2", -"magenta3", -"magenta4", -"maroon", -"maroon1", -"maroon2", -"maroon3", -"maroon4", -"medium aquamarine", -"medium blue", -"medium orchid", -"medium purple", -"medium sea green", -"medium slate blue", -"medium spring green", -"medium turquoise", -"medium violet red", -"MediumAquamarine", -"MediumBlue", -"MediumOrchid", -"MediumOrchid1", -"MediumOrchid2", -"MediumOrchid3", -"MediumOrchid4", -"MediumPurple", -"MediumPurple1", -"MediumPurple2", -"MediumPurple3", -"MediumPurple4", -"MediumSeaGreen", -"MediumSlateBlue", -"MediumSpringGreen", -"MediumTurquoise", -"MediumVioletRed", -"midnight blue", -"MidnightBlue", -"mint cream", -"MintCream", -"misty rose", -"MistyRose", -"MistyRose1", -"MistyRose2", -"MistyRose3", -"MistyRose4", -"moccasin", -"navajo white", -"NavajoWhite", -"NavajoWhite1", -"NavajoWhite2", -"NavajoWhite3", -"NavajoWhite4", -"navy", -"navy blue", -"NavyBlue", -"old lace", -"OldLace", -"olive drab", -"OliveDrab", -"OliveDrab1", -"OliveDrab2", -"OliveDrab3", -"OliveDrab4", -"orange", -"orange red", -"orange1", -"orange2", -"orange3", -"orange4", -"OrangeRed", -"OrangeRed1", -"OrangeRed2", -"OrangeRed3", -"OrangeRed4", -"orchid", -"orchid1", -"orchid2", -"orchid3", -"orchid4", -"pale goldenrod", -"pale green", -"pale turquoise", -"pale violet red", -"PaleGoldenrod", -"PaleGreen", -"PaleGreen1", -"PaleGreen2", -"PaleGreen3", -"PaleGreen4", -"PaleTurquoise", -"PaleTurquoise1", -"PaleTurquoise2", -"PaleTurquoise3", -"PaleTurquoise4", -"PaleVioletRed", -"PaleVioletRed1", -"PaleVioletRed2", -"PaleVioletRed3", -"PaleVioletRed4", -"papaya whip", -"PapayaWhip", -"peach puff", -"PeachPuff", -"PeachPuff1", -"PeachPuff2", -"PeachPuff3", -"PeachPuff4", -"peru", -"pink", -"pink1", -"pink2", -"pink3", -"pink4", -"plum", -"plum1", -"plum2", -"plum3", -"plum4", -"powder blue", -"PowderBlue", -"purple", -"purple1", -"purple2", -"purple3", -"purple4", -"red", -"red1", -"red2", -"red3", -"red4", -"rosy brown", -"RosyBrown", -"RosyBrown1", -"RosyBrown2", -"RosyBrown3", -"RosyBrown4", -"royal blue", -"RoyalBlue", -"RoyalBlue1", -"RoyalBlue2", -"RoyalBlue3", -"RoyalBlue4", -"saddle brown", -"SaddleBrown", -"salmon", -"salmon1", -"salmon2", -"salmon3", -"salmon4", -"sandy brown", -"SandyBrown", -"sea green", -"SeaGreen", -"SeaGreen1", -"SeaGreen2", -"SeaGreen3", -"SeaGreen4", -"seashell", -"seashell1", -"seashell2", -"seashell3", -"seashell4", -"sienna", -"sienna1", -"sienna2", -"sienna3", -"sienna4", -"sky blue", -"SkyBlue", -"SkyBlue1", -"SkyBlue2", -"SkyBlue3", -"SkyBlue4", -"slate blue", -"slate gray", -"slate grey", -"SlateBlue", -"SlateBlue1", -"SlateBlue2", -"SlateBlue3", -"SlateBlue4", -"SlateGray", -"SlateGray1", -"SlateGray2", -"SlateGray3", -"SlateGray4", -"SlateGrey", -"snow", -"snow1", -"snow2", -"snow3", -"snow4", -"spring green", -"SpringGreen", -"SpringGreen1", -"SpringGreen2", -"SpringGreen3", -"SpringGreen4", -"steel blue", -"SteelBlue", -"SteelBlue1", -"SteelBlue2", -"SteelBlue3", -"SteelBlue4", -"tan", -"tan1", -"tan2", -"tan3", -"tan4", -"thistle", -"thistle1", -"thistle2", -"thistle3", -"thistle4", -"tomato", -"tomato1", -"tomato2", -"tomato3", -"tomato4", -"turquoise", -"turquoise1", -"turquoise2", -"turquoise3", -"turquoise4", -"violet", -"violet red", -"VioletRed", -"VioletRed1", -"VioletRed2", -"VioletRed3", -"VioletRed4", -"wheat", -"wheat1", -"wheat2", -"wheat3", -"wheat4", -"white", -"white smoke", -"WhiteSmoke", -"yellow", -"yellow green", -"yellow1", -"yellow2", -"yellow3", -"yellow4", -"YellowGreen" -] - -class Trace(object): - - def __init__(self, tag, name, width=None): - self.tag = tag - self.name = name - self.width = width - self.vcd_name = name - self.vp_name = '/' + name.replace('.', '/') - if width is not None: - self.vcd_name = self.vcd_name + width - - def get_vcd(self): - return self.vcd_name - - def get_vp(self): - return self.vp_name - - -class Trace_pool(object): - - def __init__(self): - self.traces = [] - - def get(self, tag, name, width=None): - trace = Trace(tag, name, width) - self.traces.append(trace) - return trace.get_vcd() - - def get_traces(self, tags=None): - if tags is None: - return self.traces - else: - result = [] - for trace in self.traces: - if trace.tag is None or trace.tag in tags: - result.append(trace) - return result - - -def gen_gtkw_core_traces(gtkw, tp, path): - gtkw.trace(tp.get('pc', path + '.pc', '[31:0]'), 'pc') - gtkw.trace(tp.get('asm', path + '.asm'), 'asm') - gtkw.trace(tp.get('debug', path + '.func'), 'func') - gtkw.trace(tp.get('debug', path + '.inline_func'), 'inline_func') - gtkw.trace(tp.get('debug', path + '.file'), 'file') - gtkw.trace(tp.get('debug', path + '.line', '[31:0]'), 'line', datafmt='dec') - with gtkw.group('events', closed=True): - gtkw.trace(tp.get('core_events', path + '.pcer_cycles'), 'cycles') - gtkw.trace(tp.get('core_events', path + '.pcer_instr'), 'instr') - gtkw.trace(tp.get('core_events', path + '.pcer_ld_stall'), 'ld_stall') - gtkw.trace(tp.get('core_events', path + '.pcer_jmp_stall'), 'jmp_stall') - gtkw.trace(tp.get('core_events', path + '.pcer_imiss'), 'imiss') - gtkw.trace(tp.get('core_events', path + '.pcer_ld'), 'ld') - gtkw.trace(tp.get('core_events', path + '.pcer_st'), 'st') - gtkw.trace(tp.get('core_events', path + '.pcer_jump'), 'jump') - gtkw.trace(tp.get('core_events', path + '.pcer_branch'), 'branch') - gtkw.trace(tp.get('core_events', path + '.pcer_taken_branch'), 'taken_branch') - gtkw.trace(tp.get('core_events', path + '.pcer_rvc'), 'rvc') - gtkw.trace(tp.get('core_events', path + '.pcer_ld_ext'), 'ld_ext') - gtkw.trace(tp.get('core_events', path + '.pcer_st_ext'), 'st_ext') - gtkw.trace(tp.get('core_events', path + '.pcer_ld_ext_cycles'), 'ld_ext_cycles') - gtkw.trace(tp.get('core_events', path + '.pcer_st_ext_cycles'), 'st_ext_cycles') - gtkw.trace(tp.get('core_events', path + '.pcer_tcdm_cont'), 'tcdm_cont') - gtkw.trace(tp.get('core_events', path + '.misaligned'), 'misaligned') - - -def gen_gtkw_icache_traces(gtkw, tp, path, nb_ways, nb_sets): - gtkw.trace(tp.get('refill', path + '.refill', '[31:0]'), 'refill') - gtkw.trace(tp.get('input', path + '.port_0', '[31:0]'), 'input') - for way in range(0, nb_ways): - with gtkw.group('way_%d' % way, closed=True): - for line in range(0, nb_sets): - name = 'tag_%d' % line - gtkw.trace(tp.get(name, path + '.set_%d.line_%d' % (way, line), '[31:0]'), name) - - - -def check_user_traces(gtkw, tp, path, user_traces): - if user_traces is not None: - traces = user_traces.get_items() - if traces is not None: - for name, trace in user_traces.get_items().items(): - view_path = trace.get_str('view_path') - - if view_path.find('.') == -1: - parent = None - name = view_path - else: - parent, name = view_path.rsplit('.', 1) - - if parent == path: - tag = trace.get_str('tag') - vcd_path = trace.get_str('vcd_path') - trace_filter = trace.get_str('filter') - if trace_filter is not None: - trace_filter = os.path.join(os.getcwd(), trace_filter) - - width = None - if vcd_path.find('[') != -1: - vcd_path, width = vcd_path.split('[') - width = '[' + width - - gtkw.trace(tp.get(tag, vcd_path, width), view_path, datafmt='dec', translate_filter_file=trace_filter) - - -def gen_gtkw_vector(gtkw, path, name, traces=[], trace_filter=None): - vector_traces = [] - - for trace in traces: - for i in range(0, 8): - vector_traces.append('(%d)%s' % (i, trace[0])) - - vector_filer = os.path.join(os.getcwd(), '%s.%s.txt' % (path, name)) - - with open(vector_filer, 'w') as file: - for i in range(0, len(traces)+1): - file.write('%2d ?CadetBlue?ACTIVE\n' % i) - - with gtkw.vector(name, traces=vector_traces, extraflags=['popcnt', 'closed'], color='green', datafmt='dec', translate_filter_file=vector_filer): - - for trace in traces: - gtkw.trace(trace[0], trace[1], translate_filter_file=trace_filter) - - -def gen_rt_traces_for_cluster(config, gv_config, cluster, cluster_alias): - nb_pe = config.get_int('**/%s/nb_pe' % cluster) - for i in range(0, nb_pe): - pe_conf = { - 'tag': 'overview', - 'type': 'int', - 'path': '/user/runtime/%s/pe%d' % (cluster_alias, i), - 'vcd_path': 'user.runtime.%s.pe%d[31:0]' % (cluster_alias, i), - 'view_path': 'overview.%s.runtime.pe%d' % (cluster, i), - 'filter': 'rt_state.txt' - } - - gv_config.set('events/include_regex/%s_pe%d' % (cluster, i), pe_conf) - - - -def gen_rt_traces(config, gv_config): - nb_cluster = config.get_int('**/nb_cluster') - - if nb_cluster is not None: - for cid in range(0, nb_cluster): - gen_rt_traces_for_cluster(config, gv_config, 'cluster' if cid == 0 else 'cluster_%d' % cid, 'cluster_%d' % cid) - - - -def gen_gtkw_files(config, gv_config): - nb_pe = config.get_int('**/cluster/nb_pe') - - user_traces = gv_config.get('**/events/traces') - tags = gv_config.get('**/events/tags').get_dict() - - gen_rt_traces(config, gv_config) - - # Remove trace file so that we can switch between regular file and fifo - if os.path.exists('all.vcd'): - os.remove('all.vcd') - - core_state_file = os.path.join(os.getcwd(), 'core_state.txt') - rt_state_file = os.path.join(os.getcwd(), 'rt_state.txt') - all_state_file = os.path.join(os.getcwd(), 'all_state.txt') - - with open(core_state_file, 'w') as file: - file.write('01 ?CadetBlue?ACTIVE\n') - - with open(all_state_file, 'w') as file: - for i in range(0, len(gtkw_colors)): - file.write('%d ?%s?ACTIVE\n' % (i, gtkw_colors[i])) - - with open(rt_state_file, 'w') as file: - file.write('0 ?DarkSlateGray3?ENTRY\n') - file.write('1 ?CadetBlue?FORK\n') - file.write('2 ?DarkSlateGrey?BARRIER\n') - file.write('3 ?DarkSlateGrey?CRITICAL\n') - file.write('4 ?DarkSlateGrey?DMA_PUSH\n') - file.write('5 ?DarkSlateGrey?DMA_WAIT\n') - - tp = Trace_pool() - - if len(gv_config.get('events/include_regex').get()) != 0 or gv_config.get_bool('events/enabled'): - path = os.path.join(os.getcwd(), 'view.gtkw') - with open(path, 'w') as file: - gtkw = gtkw_new.GTKWSave(file) - - gtkw.dumpfile('all.vcd') - - with gtkw.group('overview'): - check_user_traces(gtkw, tp, 'overview', user_traces) - with gtkw.group('soc'): - check_user_traces(gtkw, tp, 'overview.soc', user_traces) - gtkw.trace(tp.get('overview', 'sys.board.chip.soc.fc.state', '[7:0]'), 'fc', translate_filter_file=core_state_file) - - gen_gtkw_vector(gtkw, 'sys.board.chip.soc', 'udma', trace_filter=core_state_file, traces=[ - [tp.get('overview', 'sys.board.chip.soc.udma.spim0_rx.state', '[7:0]'), 'spim0_rx'], - [tp.get('overview', 'sys.board.chip.soc.udma.spim0_tx.state', '[7:0]'), 'spim0_tx'], - [tp.get('overview', 'sys.board.chip.soc.udma.spim1_rx.state', '[7:0]'), 'spim1_rx'], - [tp.get('overview', 'sys.board.chip.soc.udma.spim1_tx.state', '[7:0]'), 'spim1_tx'], - [tp.get('overview', 'sys.board.chip.soc.udma.hyper0_rx.state', '[7:0]'),'hyper0_rx' ], - [tp.get('overview', 'sys.board.chip.soc.udma.hyper0_tx.state', '[7:0]'), 'hyper0_tx'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2c0_rx.state', '[7:0]'), 'ic20_rx'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2c0_tx.state', '[7:0]'), 'ic20_tx'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2c1_rx.state', '[7:0]'), 'ic21_rx'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2c1_tx.state', '[7:0]'), 'i2c1_tx'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_rx.state', '[7:0]'), 'i2s0_rx'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_tdm_0.state', '[7:0]'), 'i2s0_tdm_0'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_tdm_1.state', '[7:0]'), 'i2s0_tdm_1'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_tdm_2.state', '[7:0]'), 'i2s0_tdm_2'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_tdm_3.state', '[7:0]'), 'i2s0_tdm_3'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_tdm_4.state', '[7:0]'), 'i2s0_tdm_4'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_tdm_5.state', '[7:0]'), 'i2s0_tdm_5'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_tdm_6.state', '[7:0]'), 'i2s0_tdm_6'], - [tp.get('overview', 'sys.board.chip.soc.udma.i2s0_tdm_7.state', '[7:0]'), 'i2s0_tdm_7'], - [tp.get('overview', 'sys.board.chip.soc.udma.uart0_rx.state', '[7:0]'), 'uart0_rx'], - [tp.get('overview', 'sys.board.chip.soc.udma.uart0_tx.state', '[7:0]'), 'uart0_tx'], - [tp.get('overview', 'sys.board.chip.soc.udma.cpi0_rx.state', '[7:0]'), 'cpi0_rx'] - ]) - - gtkw.trace(tp.get('overview', 'sys.board.chip.soc_clock.period'), 'period') - gtkw.trace(tp.get('clock', 'sys.board.chip.soc_clock.cycles'), 'cycles') - - if nb_pe is not None: - with gtkw.group('cluster'): - check_user_traces(gtkw, tp, 'overview.cluster', user_traces) - for i in range(0, nb_pe): - gtkw.trace(tp.get('overview', 'sys.board.chip.cluster.pe%d.state' % i, '[7:0]'), 'pe_%d' % i, translate_filter_file=core_state_file) - - gen_gtkw_vector(gtkw, 'sys.board.chip.cluster', 'dma', trace_filter=core_state_file, traces=[ - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_0', '[7:0]'), 'channel_0'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_1', '[7:0]'), 'channel_1'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_2', '[7:0]'), 'channel_2'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_3', '[7:0]'), 'channel_3'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_4', '[7:0]'), 'channel_4'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_5', '[7:0]'), 'channel_5'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_6', '[7:0]'), 'channel_6'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_7', '[7:0]'), 'channel_7'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_8', '[7:0]'), 'channel_8'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_9', '[7:0]'), 'channel_9'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_10', '[7:0]'), 'channel_10'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_11', '[7:0]'), 'channel_11'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_12', '[7:0]'), 'channel_12'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_13', '[7:0]'), 'channel_13'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_14', '[7:0]'), 'channel_14'], - [tp.get('overview', 'sys.board.chip.cluster.dma.channel_15', '[7:0]'), 'channel_15'], - ]) - - gtkw.trace(tp.get('overview', 'sys.board.chip.cluster_clock.period'), 'period') - gtkw.trace(tp.get('clock', 'sys.board.chip.cluster_clock.cycles'), 'cycles') - - with gtkw.group('runtime', closed=True): - check_user_traces(gtkw, tp, 'overview.cluster.runtime', user_traces) - - with gtkw.group('stats', closed=True): - check_user_traces(gtkw, tp, 'overview.cluster.stats', user_traces) - for i in range(0, nb_pe): - gtkw.trace(tp.get('overview', 'sys.board.chip.cluster.pe%d.ipc_stat' % i), 'pe%d_ipc' % i, extraflags=['analog_step', 'analog_fullscale']) - - with gtkw.group('chip', closed=True): - check_user_traces(gtkw, tp, 'chip', user_traces) - with gtkw.group('fc', closed=True): - check_user_traces(gtkw, tp, 'chip.fc', user_traces) - gen_gtkw_core_traces(gtkw, tp, 'sys.board.chip.soc.fc') - - if config.get('**/fc_icache') is not None: - with gtkw.group('fc_icache', closed=True): - check_user_traces(gtkw, tp, 'chip.fc_icache', user_traces) - gen_gtkw_icache_traces(gtkw, tp, 'sys.board.chip.soc.fc_icache', 1< 0: - binary = binary[0] - else: - binary = None - - if plp_flash_stimuli.genFlashImage( - raw_stim=self.get_flash_preload_file(), - bootBinary=binary, - comps=comps, - raw_fs=raw_fs, - verbose=self.get_json().get('**/runner/verbose').get(), - archi=self.get_json().get('**/pulp_chip_family').get(), - flashType=self.get_json().get('**/runner/flash_type').get(), - encrypt=encrypted, aesKey=aes_key, aesIv=aes_iv): - return -1 - - if self.get_json().get('**/efuse') is not None: - efuse = runner.stim_utils.Efuse(self.get_json(), verbose=self.get_json().get('**/runner/verbose').get()) - efuse.gen_stim_txt('efuse_preload.data') - - autorun_conf = self.get_json().get('**/debug_bridge/autorun') - if autorun_conf is not None and autorun_conf.get_bool() and not self.config.getOption('reentrant'): - - with open('autorun_config.json', 'w') as file: - file.write(self.get_json().dump_to_string()) - - options = self.get_json().get_child_str('**/debug_bridge/options') - if options is None: - options = '' - - cmd_options = ['pulp-run-bridge', '--dir=%s' % self.config.getOption('dir'), '--config-file=%s/autorun_config.json' % self.config.getOption('dir'), '--options=%s' % options] - if self.get_json().get_child_bool('**/runner/wait_pulp_run'): - cmd_options.append('--wait-pulp-run') - - os.execlp(*cmd_options) - - - autorun = self.get_json().get('**/debug_bridge/autorun') - bridge_active = self.get_json().get('**/debug_bridge/active') - - self.get_json().set('**/debug_bridge/cable/type', 'jtag-proxy') - - bridge = autorun is not None and autorun.get_bool() or \ - self.get_json().get('**/gdb/active').get_bool() or \ - bridge_active is not None and bridge_active.get_bool() - - if bridge: - self.get_json().get('**/jtag_proxy').set('active', True) - self.get_json().get('gvsoc').set('use_external_bridge', True) - - if not self.get_json().get_child_bool('**/runner/wait_pulp_run'): - self.get_json().get('gvsoc').set('no_exit', True) - - if not bridge and self.get_json().get_child_str('**/runner/boot-mode') != 'bridge' and self.get_json().get_child_str('**/runner/boot-mode').find('rom') == -1 and self.get_json().get_child_str('**/runner/boot-mode') != 'jtag': - binaries = self.get_json().get('**/runner/binaries').get_dict() - for binary in binaries: - self.get_json().get('**/plt_loader').set('binaries', binary) - - if self.gen_rom_stimuli: - self.get_json().get('**/soc/rom').set('stim_file', 'stimuli/rom.bin') - - if self.get_json().get('**/efuse') is not None: - self.get_json().get('**/soc/efuse').set('stim_file', 'efuse_preload.data') - - if self.gen_flash_stimuli: - if self.get_json().get('**/spiflash') is not None: - self.get_json().get('**/spiflash').set('stim_file', self.get_flash_preload_file()) - if self.get_json().get('**/mram') is not None: - self.get_json().get('**/soc/mram').set('stim_file', self.get_flash_preload_file()) - - - if self.get_json().get_child_str('**/runner/boot-mode') != 'rom' and not bridge: - set_pc_addr = self.get_json().get_child_int('**/loader/set_pc_addr') - if set_pc_addr != None: - self.get_json().get('**/plt_loader').set('set_pc_addr', '0x%x' % set_pc_addr) - set_pc_offset = self.get_json().get_child_str('**/loader/set_pc_offset') - if set_pc_offset != None: - self.get_json().get('**/plt_loader').set('set_pc_offset', set_pc_offset) - start_addr = self.get_json().get_child_int('**/loader/start_addr') - if start_addr != None: - self.get_json().get('**/plt_loader').set('start_addr', '0x%x' % start_addr) - start_value = self.get_json().get_child_int('**/loader/start_value') - if start_value != None: - self.get_json().get('**/plt_loader').set('start_value', '0x%x' % start_value) - - files_conf = self.get_json().get('**/fs/files') - if self.get_json().get('**/flash/preload_file') is None and ((files_conf is not None and len(files_conf.get_dict())) or self.get_json().get_child_bool('**/runner/boot_from_flash')): - if self.get_json().get('**/flash') is not None: - self.get_json().get('**/flash').set('preload_file', self.get_flash_preload_file()) - - gvsoc_config = self.get_json().get('gvsoc') - - debug_mode = gvsoc_config.get_bool('traces/enabled') or gvsoc_config.get_bool('events/enabled') or len(gvsoc_config.get('traces/include_regex').get()) != 0 or len(gvsoc_config.get('events/include_regex').get()) != 0 - self.get_json().get('**/gvsoc').set('debug-mode', debug_mode) - - plt_config = os.path.join(os.getcwd(), 'plt_config.json') - os.environ['PULP_CONFIG_FILE'] = plt_config - - gen_gtkw_files(self.get_json(), gvsoc_config) - - with open('plt_config.json', 'w') as file: - file.write(self.get_json().dump_to_string()) - - return 0 - - def run(self): - - gvsoc_config = self.get_json().get('gvsoc') - - debug_mode = gvsoc_config.get_bool('traces/enabled') or gvsoc_config.get_bool('events/enabled') or len(gvsoc_config.get('traces/include_regex').get()) != 0 or len(gvsoc_config.get('events/include_regex').get()) != 0 - - if debug_mode: - launcher = 'gvsoc_launcher_debug' - else: - launcher = 'gvsoc_launcher' - - plt_config = os.path.join(os.getcwd(), 'plt_config.json') - - os.environ['PULP_CONFIG_FILE'] = plt_config - - if self.args.cmd: - print ('GVSOC command:') - print ('%s --config=%s' % (launcher, plt_config)) - return 0 - else: - return os.execvp(launcher, [launcher, '--config=' + plt_config]) - - - def power(self): - if os.system('power_report_extract --report=power_report.csv --dump --config=plt_config.json --output=power_synthesis.txt') != 0: - return -1 - - return 0 diff --git a/gvsoc/gvsoc/engine/src/power/component_power.cpp b/gvsoc/gvsoc/engine/src/power/component_power.cpp new file mode 100644 index 000000000..310a00b7a --- /dev/null +++ b/gvsoc/gvsoc/engine/src/power/component_power.cpp @@ -0,0 +1,152 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#include "vp/vp.hpp" +#include "vp/trace/trace.hpp" + + + +vp::power::component_power::component_power(vp::component &top) + : top(top) +{ +} + + + +void vp::power::component_power::build() +{ + this->new_power_trace("power_trace", &this->power_trace); + + this->engine = (vp::power::engine *)top.get_service("power"); + + for (auto trace : this->traces) + { + this->get_engine()->reg_trace(trace); + } +} + + + +int vp::power::component_power::new_power_trace(std::string name, vp::power::power_trace *trace, vp::power::power_trace *parent) +{ + if (trace->init(&top, name, parent)) + return -1; + + this->traces.push_back(trace); + + return 0; +} + + + +int vp::power::component_power::new_power_source(std::string name, power_source *source, js::config *config, vp::power::power_trace *trace) +{ + if (trace == NULL) + { + trace = &this->power_trace; + } + + if (source->init(&top, name, config, trace)) + return -1; + + source->setup(VP_POWER_DEFAULT_TEMP, VP_POWER_DEFAULT_VOLT, VP_POWER_DEFAULT_FREQ); + + return 0; +} + + + +double vp::power::component_power::get_power_from_childs() +{ + double result = 0.0; + for (auto &x : this->top.get_childs()) + { + result += x->power.get_power_from_self_and_childs(); + } + return result; +} + + +double vp::power::component_power::get_power_from_self_and_childs() +{ + double result = 0.0; + + for (auto &x : this->traces) + { + result += x->get_power(); + } + + result += this->get_power_from_childs(); + + return result; +} + + + +void vp::power::component_power::get_report_energy_from_childs(double *dynamic, double *leakage) +{ + for (auto &x : this->top.get_childs()) + { + x->power.get_report_energy_from_self_and_childs(dynamic, leakage); + } +} + + + +void vp::power::component_power::get_report_energy_from_self_and_childs(double *dynamic, double *leakage) +{ + for (auto &x : this->traces) + { + double trace_dynamic, trace_leakage; + x->get_report_energy(&trace_dynamic, &trace_leakage); + *dynamic += trace_dynamic; + *leakage += trace_leakage; + } + + this->get_report_energy_from_childs(dynamic, leakage); +} + + + +void vp::power::component_power::dump(FILE *file, double total) +{ + for (auto x:this->traces) + { + double dynamic, leakage; + x->get_report_power(&dynamic, &leakage); + double percentage = 0.0; + if (total != 0.0) + { + percentage = (dynamic + leakage) / total; + } + fprintf(file, "%s; %.12f; %.12f; %.12f; %.6f\n", x->trace.get_full_path().c_str(), dynamic, leakage, dynamic + leakage, percentage); + } +} + + + +void vp::power::component_power::dump_child_traces(FILE *file, double total) +{ + for (auto &x : this->top.get_childs()) + { + x->power.dump(file, total); + } +} diff --git a/gvsoc/gvsoc/engine/src/power/power.cpp b/gvsoc/gvsoc/engine/src/power/power.cpp deleted file mode 100644 index c08a39396..000000000 --- a/gvsoc/gvsoc/engine/src/power/power.cpp +++ /dev/null @@ -1,518 +0,0 @@ -/* - * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and - * University of Bologna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) - */ - -#include "vp/vp.hpp" -#include "vp/trace/trace.hpp" - -namespace vp { - - class Linear_volt_table - { - public: - Linear_volt_table(double temp, js::config *config); - inline double get(double frequency) { return any; } - - double volt; - - private: - double any; - }; - - - - class Linear_temp_table - { - public: - Linear_temp_table(double temp, js::config *config); - double get(double volt, double frequency); - - double temp; - - private: - std::vector volt_tables; - }; - - - - class Linear_table - { - public: - Linear_table(js::config *config); - double get(double temp, double volt, double frequency); - - private: - std::vector temp_tables; - }; - -}; - - - -vp::Linear_volt_table::Linear_volt_table(double volt, js::config *config) -{ - this->volt = volt; - - for (auto& x:config->get_childs()) - { - if (x.first == "any") - { - this->any = std::stod(x.second->get_str()); - } - else - { - throw std::logic_error("Only any frequency is allowed for now"); - } - } -} - -double vp::Linear_temp_table::get(double volt, double frequency) -{ - int low_index = -1, high_index = -1; - - // Go through the temperatures to find the one just below and the one - // just above - for (unsigned int i=0; ivolt_tables.size(); i++) - { - if (this->volt_tables[i]->volt == volt) - { - low_index = high_index = i; - break; - } - - if (this->volt_tables[i]->volt > volt) - { - high_index = i; - break; - } - - low_index = i; - } - - if (high_index == -1) - high_index = low_index; - - if (low_index == -1) - low_index = high_index; - - double value; - if (high_index == low_index) - { - value = this->volt_tables[low_index]->get(frequency); - } - else - { - double low_volt = this->volt_tables[low_index]->volt; - double high_volt = this->volt_tables[high_index]->volt; - - double value_at_low_volt = this->volt_tables[low_index]->get(frequency); - double value_at_high_volt = this->volt_tables[high_index]->get(frequency); - - double volt_ratio = (volt - low_volt) / (high_volt - low_volt); - value = (value_at_high_volt - value_at_low_volt)*volt_ratio + value_at_low_volt; - } - return value; -} - -vp::Linear_temp_table::Linear_temp_table(double temp, js::config *config) -{ - this->temp = temp; - - for (auto& x:config->get_childs()) - { - volt_tables.push_back(new Linear_volt_table(std::stod(x.first), x.second)); - } -} - -vp::Linear_table::Linear_table(js::config *config) -{ - for (auto& x:config->get_childs()) - { - temp_tables.push_back(new Linear_temp_table(std::stod(x.first), x.second)); - } -} - -double vp::Linear_table::get(double temp, double volt, double frequency) -{ - int low_temp_index = -1, high_temp_index = -1; - - // Go through the temperatures to find the one just below and the one - // just above - for (unsigned int i=0; itemp_tables.size(); i++) - { - if (this->temp_tables[i]->temp == temp) - { - low_temp_index = high_temp_index = i; - break; - } - - if (this->temp_tables[i]->temp > temp) - { - high_temp_index = i; - break; - } - - low_temp_index = i; - } - - if (high_temp_index == -1) - high_temp_index = low_temp_index; - - if (low_temp_index == -1) - low_temp_index = high_temp_index; - - double value; - - if (high_temp_index == low_temp_index) - { - value = this->temp_tables[low_temp_index]->get(volt, frequency); - } - else - { - double low_temp = this->temp_tables[low_temp_index]->temp; - double high_temp = this->temp_tables[high_temp_index]->temp; - - double value_at_low_temp = this->temp_tables[low_temp_index]->get(volt, frequency); - double value_at_high_temp = this->temp_tables[high_temp_index]->get(volt, frequency); - - double temp_ratio = (temp - low_temp) / (high_temp - low_temp); - value = (value_at_high_temp - value_at_low_temp)*temp_ratio + value_at_low_temp; - } - return value; -} - -vp::component_power::component_power(vp::component &top) -: top(top) -{ -} - - - -void vp::component_power::post_post_build() -{ - power_manager = (vp::power_engine *)top.get_service("power"); - top.reg_step_pre_start(std::bind(&component_power::pre_start, this)); -} - - -void vp::component_power::pre_start() -{ - for (auto trace: this->traces) - { - this->get_engine()->reg_trace(trace); - } -} - - -int vp::component_power::new_trace(std::string name, power_trace *trace) -{ - if (trace->init(&top, name)) - return -1; - - this->traces.push_back(trace); - - return 0; -} - - -int vp::component_power::new_event(std::string name, power_source *source, js::config *config, power_trace *trace, bool is_leakage) -{ - if (source->init(&top, name, config, trace, is_leakage)) - return -1; - - source->setup(VP_POWER_DEFAULT_TEMP, VP_POWER_DEFAULT_VOLT, VP_POWER_DEFAULT_FREQ); - - return 0; -} - - -int vp::power_trace::init(component *top, std::string name) -{ - this->top = top; - top->traces.new_trace_event_real(name, &this->trace); - this->value = 0; - this->total = 0; - this->total_leakage = 0; - this->timestamp = 0; - this->trace.event_real(0); - //this->top->power.get_engine()->reg_trace(this); - - this->current_power = 0; - this->current_power_timestamp = 0; - - this->current_leakage_power = 0; - this->current_leakage_power_timestamp = 0; - - return 0; -} - - -void vp::power_trace::clear() -{ - this->dumped = false; - this->total = this->get_value(); - this->total_leakage = 0; - this->last_clear_timestamp = this->top->get_time(); - this->current_power_timestamp = this->top->get_time(); - this->current_leakage_power_timestamp = this->top->get_time(); -} - -void vp::power_trace::get(double *dynamic, double *leakage) -{ - this->dumped = true; - - *dynamic = this->get_total() / (this->top->get_time() - this->last_clear_timestamp); - - *leakage = this->get_total_leakage() / (this->top->get_time() - this->last_clear_timestamp); -} - -void vp::power_trace::dump(FILE *file) -{ - for (auto x: child_traces) - { - x->flush(); - } - - - fprintf(file, "Trace path; Dynamic power (W); Leakage power (W); Total (W); Percentage\n"); - - double dynamic, leakage; - this->get(&dynamic, &leakage); - double total = dynamic + leakage; - - fprintf(file, "%s; %.12f; %.12f; %.12f; 1.0\n", this->trace.get_full_path().c_str(), dynamic, leakage, total); - - if (this->child_traces.size()) - { - for (auto x:this->child_traces) - { - x->get(&dynamic, &leakage); - - fprintf(file, "%s; %.12f; %.12f; %.12f; %.6f\n", x->trace.get_full_path().c_str(), dynamic, leakage, dynamic + leakage, (dynamic + leakage) / total); - } - } - fprintf(file, "\n"); - -} - -void vp::power_trace::incr(double quantum, bool is_leakage) -{ - this->get_value(); - - if (is_leakage) - { - this->total_leakage += quantum; - } - else - { - this->value += quantum; - this->total += quantum; - } - - if (this->top_trace) - this->top_trace->incr(quantum, is_leakage); - - if (this->top->get_clock()) - { - if (!is_leakage) - this->trace.event_real_pulse(this->top->get_period(), this->value, 0); - } -} - - -void vp::power_trace::collect() -{ - this->top->power.reg_top_trace(this); -} - -void vp::power_trace::reg_top_trace(vp::power_trace *trace) -{ - if (this->top_trace == NULL) - { - this->top_trace = trace; - trace->reg_child_trace(this); - } -} - -void vp::power_trace::account_power() -{ - int64_t diff = this->top->get_time() - this->current_power_timestamp; - if (diff > 0) - { - double energy = this->current_power * diff; - - if (this->top_trace) - { - this->top_trace->incr(energy); - } - this->total += energy; - this->current_power_timestamp = this->top->get_time(); - } -} - -void vp::power_trace::account_leakage_power() -{ - int64_t diff = this->top->get_time() - this->current_leakage_power_timestamp; - if (diff > 0) - { - double energy = this->current_leakage_power * diff; - if (this->top_trace) - { - this->top_trace->incr(energy, true); - } - this->total_leakage += energy; - this->current_leakage_power_timestamp = this->top->get_time(); - } -} - -void vp::power_trace::set_power(double quantum, bool is_leakage) -{ - if (is_leakage) - { - this->account_leakage_power(); - this->current_leakage_power += quantum; - } - else - { - this->account_power(); - this->current_power += quantum; - } -} - -void vp::power_trace::reg_child_trace(vp::power_trace *trace) -{ - this->child_traces.push_back(trace); -} - -vp::power_trace *vp::power_trace::get_top_trace() -{ - if (this->top_trace == NULL) - return this; - else - return this->top_trace; -} - - -void vp::power_source::setup(double temp, double volt, double freq) -{ - this->quantum = this->table->get(temp, volt, freq); -} - - - -int vp::power_source::init(component *top, std::string name, js::config *config, vp::power_trace *trace, bool is_leakage) -{ - - this->top = top; - this->trace = trace; - this->is_leakage = is_leakage; - - try - { - if (config == NULL) - { - //snprintf(vp_error, VP_ERROR_SIZE, "Didn't find power trace (name: %s)", name.c_str()); - return -1; - } - - js::config *type_cfg = config->get("type"); - if (type_cfg == NULL) - { - //snprintf(vp_error, VP_ERROR_SIZE, "Didn't find power trace type (name: %s)", name.c_str()); - return -1; - } - - js::config *unit_cfg = config->get("unit"); - if (unit_cfg == NULL) - { - //snprintf(vp_error, VP_ERROR_SIZE, "Didn't find power trace unit (name: %s)", name.c_str()); - return -1; - } - - - if (unit_cfg->get_str() == "pJ") - { - - } - else if (unit_cfg->get_str() == "W") - { - - } - else - { - snprintf(vp_error, VP_ERROR_SIZE, "Unknown unit (name: %s, unit: %s)", name.c_str(), unit_cfg->get_str().c_str()); - return -1; - } - - - if (type_cfg->get_str() == "linear") - { - js::config *values = config->get("values"); - if (values == NULL) - { - snprintf(vp_error, VP_ERROR_SIZE, "Didn't find any value for linear power model"); - return -1; - } - - this->table = new Linear_table(values); - } - else - { - snprintf(vp_error, VP_ERROR_SIZE, "%s", type_cfg->get_str().c_str()); - return -1; - } - } - catch (std::logic_error &e) - { - snprintf(vp_error, VP_ERROR_SIZE, "%s", e.what()); - return -1; - } - - return 0; -} - - -void vp::component_power::reg_top_trace(vp::power_trace *trace) -{ - for (auto& x: this->traces) - { - if (x != trace) - { - x->reg_top_trace(trace); - } - } - - for (auto& x: this->top.get_childs()) - { - x->power.reg_top_trace(trace); - } - -} - - -void vp::component::dump_traces_recursive(FILE *file) -{ - this->dump_traces(file); - - for (auto& x: this->get_childs()) - { - x->dump_traces_recursive(file); - } -} diff --git a/gvsoc/gvsoc/engine/src/power/power_engine.cpp b/gvsoc/gvsoc/engine/src/power/power_engine.cpp new file mode 100644 index 000000000..c7661f6a9 --- /dev/null +++ b/gvsoc/gvsoc/engine/src/power/power_engine.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#include "vp/vp.hpp" +#include "vp/trace/trace.hpp" + + + +void vp::power::engine::reg_trace(vp::power::power_trace *trace) +{ + this->traces.push_back(trace); +} + + + +void vp::power::engine::start_capture() +{ + // When capture is started, just broadcast to all traces so that they + // reset all current values + for (auto trace : this->traces) + { + trace->report_start(); + } +} + + + +void vp::power::engine::stop_capture() +{ + // When stopping, dump recursively all traces to a file + FILE *file = fopen("power_report.csv", "w"); + if (file == NULL) + { + // vp_warning_always(&this->warning, "Failed to open power report file (path: %s)\n", "power_report.csv"); + return; + } + + this->top->dump_traces_recursive(file); +} + + + +vp::power::engine::engine(vp::component *top) +{ + this->top = top; + + // Declare power service, each component will ask the connection to it + top->new_service("power", this); +} diff --git a/gvsoc/gvsoc/engine/src/power/power_source.cpp b/gvsoc/gvsoc/engine/src/power/power_source.cpp new file mode 100644 index 000000000..579e27f07 --- /dev/null +++ b/gvsoc/gvsoc/engine/src/power/power_source.cpp @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#include "vp/vp.hpp" +#include "vp/trace/trace.hpp" + + + +void vp::power::power_source::setup(double temp, double volt, double freq) +{ + // When temperature, voltage or frequency is modified, only impact dynamic energy quantum, + // dynamic background power or leakage if they are defined, which is the case if they are not -1 + if (this->quantum != -1) + { + this->quantum = this->table->get(temp, volt, freq); + } + if (this->background_power != -1) + { + this->background_power = this->table->get(temp, volt, freq); + } + if (this->leakage != -1) + { + this->leakage = this->table->get(temp, volt, freq); + } +} + + + +int vp::power::power_source::init(component *top, std::string name, js::config *source_config, vp::power::power_trace *trace) +{ + this->top = top; + this->trace = trace; + + this->quantum = -1; + this->background_power = -1; + this->leakage = -1; + + if (source_config == NULL) + { + //snprintf(vp_error, VP_ERROR_SIZE, "Didn't find power trace (name: %s)", name.c_str()); + return -1; + } + + // Parse the JSON config and extract power numbers + for (auto elem: source_config->get_childs()) + { + js::config *config = elem.second; + bool is_leakage = false; + + if (elem.first == "dynamic") + { + + } + else if (elem.first == "leakage") + { + is_leakage = true; + } + else + { + top->get_trace()->fatal("Unknown power source type: %s\n", elem.first.c_str()); + return -1; + } + + try + { + js::config *type_cfg = config->get("type"); + if (type_cfg == NULL) + { + //snprintf(vp_error, VP_ERROR_SIZE, "Didn't find power trace type (name: %s)", name.c_str()); + return -1; + } + + js::config *unit_cfg = config->get("unit"); + if (unit_cfg == NULL) + { + //snprintf(vp_error, VP_ERROR_SIZE, "Didn't find power trace unit (name: %s)", name.c_str()); + return -1; + } + + + if (unit_cfg->get_str() == "pJ") + { + // Setting it to 0 will make sure it is defined and the engine will properly maintain it + this->quantum = 0; + } + else if (unit_cfg->get_str() == "W") + { + if (is_leakage) + { + // Setting it to 0 will make sure it is defined and the engine will properly maintain it + this->leakage = 0; + } + else + { + // Setting it to 0 will make sure it is defined and the engine will properly maintain it + this->background_power = 0; + } + } + else + { + snprintf(vp_error, VP_ERROR_SIZE, "Unknown unit (name: %s, unit: %s)", name.c_str(), unit_cfg->get_str().c_str()); + return -1; + } + + + if (type_cfg->get_str() == "linear") + { + js::config *values = config->get("values"); + if (values == NULL) + { + snprintf(vp_error, VP_ERROR_SIZE, "Didn't find any value for linear power model"); + return -1; + } + + this->table = new Linear_table(values); + } + else + { + snprintf(vp_error, VP_ERROR_SIZE, "%s", type_cfg->get_str().c_str()); + return -1; + } + } + catch (std::logic_error &e) + { + snprintf(vp_error, VP_ERROR_SIZE, "%s", e.what()); + return -1; + } + } + + return 0; +} diff --git a/gvsoc/gvsoc/engine/src/power/power_table.cpp b/gvsoc/gvsoc/engine/src/power/power_table.cpp new file mode 100644 index 000000000..75cd79d08 --- /dev/null +++ b/gvsoc/gvsoc/engine/src/power/power_table.cpp @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#include "vp/vp.hpp" +#include "vp/trace/trace.hpp" + + + +vp::power::Linear_table::Linear_table(js::config *config) +{ + // Extract the power table from json file for each temperature + for (auto &x : config->get_childs()) + { + temp_tables.push_back(new Linear_temp_table(std::stod(x.first), x.second)); + } +} + + + +double vp::power::Linear_table::get(double temp, double volt, double frequency) +{ + int low_temp_index = -1, high_temp_index = -1; + + // We need to estimate the actual power value using interpolation on the existing tables. + // We first estimate it for the 2 temperatures surrounding the requested temperature, + // and then do an interpolation from these 2 values. + + // Go through the temperatures to find the one just below and the one + // just above + for (unsigned int i = 0; i < this->temp_tables.size(); i++) + { + if (this->temp_tables[i]->get_temp() == temp) + { + low_temp_index = high_temp_index = i; + break; + } + + if (this->temp_tables[i]->get_temp() > temp) + { + high_temp_index = i; + break; + } + + low_temp_index = i; + } + + // If we didn't find lower and upper temperature, just take the limit so that we don't do + // any estimation outside the given ranges + if (high_temp_index == -1) + high_temp_index = low_temp_index; + + if (low_temp_index == -1) + low_temp_index = high_temp_index; + + + double value; + + if (high_temp_index == low_temp_index) + { + // Case where we were outside the given ranges or we found the exact temperature, just return the value at given + // voltage and frequency. + value = this->temp_tables[low_temp_index]->get(volt, frequency); + } + else + { + // Otherwise get the power numbers for the 2 temperatures + double low_temp = this->temp_tables[low_temp_index]->get_temp(); + double high_temp = this->temp_tables[high_temp_index]->get_temp(); + + double value_at_low_temp = this->temp_tables[low_temp_index]->get(volt, frequency); + double value_at_high_temp = this->temp_tables[high_temp_index]->get(volt, frequency); + + // And do the interpolation + double temp_ratio = (temp - low_temp) / (high_temp - low_temp); + value = (value_at_high_temp - value_at_low_temp) * temp_ratio + value_at_low_temp; + } + return value; +} + + + +vp::power::Linear_temp_table::Linear_temp_table(double temp, js::config *config) +{ + this->temp = temp; + + for (auto &x : config->get_childs()) + { + volt_tables.push_back(new Linear_volt_table(std::stod(x.first), x.second)); + } +} + + + +double vp::power::Linear_temp_table::get(double volt, double frequency) +{ + int low_index = -1, high_index = -1; + + // We need to estimate the actual power value using interpolation on the existing tables. + // We first estimate it for the 2 voltages surrounding the requested voltage, + // and then do an interpolation from these 2 values. + + // Go through the temperatures to find the one just below and the one + // just above + for (unsigned int i = 0; i < this->volt_tables.size(); i++) + { + if (this->volt_tables[i]->get_volt() == volt) + { + low_index = high_index = i; + break; + } + + if (this->volt_tables[i]->get_volt() > volt) + { + high_index = i; + break; + } + + low_index = i; + } + + // If we didn't find lower and upper voltage, just take the limit so that we don't do + // any estimation outside the given ranges + if (high_index == -1) + high_index = low_index; + + if (low_index == -1) + low_index = high_index; + + double value; + if (high_index == low_index) + { + // Case where we were outside the given ranges or we found the exact voltage, just return the value at given + // frequency. + value = this->volt_tables[low_index]->get(frequency); + } + else + { + // Otherwise get the power numbers for the 2 voltages + double low_volt = this->volt_tables[low_index]->get_volt(); + double high_volt = this->volt_tables[high_index]->get_volt(); + + double value_at_low_volt = this->volt_tables[low_index]->get(frequency); + double value_at_high_volt = this->volt_tables[high_index]->get(frequency); + + // And do the interpolation + double volt_ratio = (volt - low_volt) / (high_volt - low_volt); + value = (value_at_high_volt - value_at_low_volt) * volt_ratio + value_at_low_volt; + } + return value; +} + + + +vp::power::Linear_volt_table::Linear_volt_table(double volt, js::config *config) +{ + this->volt = volt; + + // Depending on frequency is currently not supported, so we'll just return + // the power value + for (auto &x : config->get_childs()) + { + if (x.first == "any") + { + this->any = std::stod(x.second->get_str()); + } + else + { + throw std::logic_error("Only any frequency is allowed for now"); + } + } +} diff --git a/gvsoc/gvsoc/engine/src/power/power_trace.cpp b/gvsoc/gvsoc/engine/src/power/power_trace.cpp new file mode 100644 index 000000000..3bda6a8b4 --- /dev/null +++ b/gvsoc/gvsoc/engine/src/power/power_trace.cpp @@ -0,0 +1,255 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and + * University of Bologna + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#include "vp/vp.hpp" +#include "vp/trace/trace.hpp" + + + +int vp::power::power_trace::init(component *top, std::string name, vp::power::power_trace *parent) +{ + this->top = top; + top->traces.new_trace_event_real(name, &this->trace); + this->dynamic_energy_for_cycle = 0; + this->report_dynamic_energy = 0; + this->report_leakage_energy = 0; + this->curent_cycle_timestamp = 0; + + // If no trace parent is specified, take the default one of the parent component + if (parent == NULL) + { + vp::component *component = top->get_parent(); + if (component) + { + parent = component->power.get_power_trace(); + } + } + + this->parent = parent; + + this->trace.event_real(0); + + this->current_dynamic_power = 0; + this->current_dynamic_power_timestamp = 0; + + this->current_leakage_power = 0; + this->current_leakage_power_timestamp = 0; + + this->trace_event = this->top->event_new((void *)this, vp::power::power_trace::trace_handler); + + return 0; +} + + + +void vp::power::power_trace::trace_handler(void *__this, vp::clock_event *event) +{ + // This handler is used to resynchronize the VCD trace after a quantum of energy has been accounted, + // since it has to be somehow removed from vcd trace value in the next cycle + vp::power::power_trace *_this = (vp::power::power_trace *)__this; + // Just redump the VCD trace, this will recompute teh instant power and the quantum will automatically be removed + _this->dump_vcd_trace(); +} + + + +void vp::power::power_trace::report_start() +{ + // Since the report start may be triggered in the middle of several events + // for power consumptions, include what has already be accounted + // in the same cycle. + this->report_dynamic_energy = this->get_dynamic_energy_for_cycle(); + this->report_leakage_energy = 0; + this->report_start_timestamp = this->top->get_time(); +} + + + +void vp::power::power_trace::get_report_energy(double *dynamic, double *leakage) +{ + *dynamic = this->get_report_dynamic_energy(); + *leakage = this->get_report_leakage_energy(); +} + + + +void vp::power::power_trace::get_report_power(double *dynamic, double *leakage) +{ + double childs_dynamic = 0, childs_leakage = 0; + + // To get the power on the report window, we just get the total energy and divide by the window duration + this->top->power.get_report_energy_from_childs(&childs_dynamic, &childs_leakage); + *dynamic = (childs_dynamic + this->get_report_dynamic_energy()) / (this->top->get_time() - this->report_start_timestamp); + *leakage = (childs_leakage + this->get_report_leakage_energy()) / (this->top->get_time() - this->report_start_timestamp); +} + + + +void vp::power::power_trace::dump(FILE *file) +{ + fprintf(file, "Trace path; Dynamic power (W); Leakage power (W); Total (W); Percentage\n"); + + double dynamic, leakage; + this->get_report_power(&dynamic, &leakage); + double total = dynamic + leakage; + + fprintf(file, "%s; %.12f; %.12f; %.12f; 1.0\n", this->trace.get_full_path().c_str(), dynamic, leakage, total); + + this->top->power.dump_child_traces(file, total); + + fprintf(file, "\n"); +} + + + +void vp::power::power_trace::dump_vcd_trace() +{ + // TODO this is wasting time and should be removed once fake component such as time domain and trace domain + // are not in the component hierarchy anymore + if (this->top->get_path() == "") + return; + + double power = 0.0; + + // To dump the VCD trace, we need to compute the instant power, since this is what is reported. + // This is easy for background and leakage power. For enery quantum, we get the amount of energy for the current + // cycle and compute the instant power using the clock engine period. + + // Some component do not have clocks. They cannot use energy quantum but they can still use background + // power and leakage + if (this->top->get_clock()) + { + int64_t period = this->top->get_period(); + if (period != 0) + { + power += this->get_dynamic_energy_for_cycle() / period; + } + } + double power_background = this->current_dynamic_power + this->current_leakage_power; + + // Also account the power from childs since VCD traces are hierarchical + double childs_power = this->top->power.get_power_from_childs(); + this->current_power = power + power_background + childs_power; + + // Dump the instant power to trace + this->trace.event_real(current_power); + + // If there was a contribution from energy quantum, schedule an event in the next cycle so that we dump again + // the trace since teh quantum implicitely disappears and overal power is modified + if (!this->trace_event->is_enqueued() && power > 0) + { + this->top->event_enqueue(this->trace_event, 1); + } + + // Notify the parent that this trace was dumped so that the upper traces can be dumped as well + if (this->parent) + { + this->parent->dump_vcd_trace(); + } +} + + + +void vp::power::power_trace::account_dynamic_power() +{ + // We need to compute the energy spent on the current windows since we are starting a new one with different power. + + // First measure the duration of the windows + int64_t diff = this->top->get_time() - this->current_dynamic_power_timestamp; + + if (diff > 0) + { + // Then energy based on the current power. Note that this can work only if the + // power was constant over the period, which is the case, since this function is called + // before any modification to the power. + double energy = this->current_dynamic_power * diff; + this->report_dynamic_energy += energy; + + // And update the timestamp to the current one to start a new window + this->current_dynamic_power_timestamp = this->top->get_time(); + } +} + + + +void vp::power::power_trace::account_leakage_power() +{ + // We need to compute the energy spent on the current windows since we are starting a new one with different power. + + // First measure the duration of the windows + int64_t diff = this->top->get_time() - this->current_leakage_power_timestamp; + if (diff > 0) + { + // Then energy based on the current power. Note that this can work only if the + // power was constant over the period, which is the case, since this function is called + // before any modification to the power. + double energy = this->current_leakage_power * diff; + this->report_leakage_energy += energy; + + // And update the timestamp to the current one to start a new window + this->current_leakage_power_timestamp = this->top->get_time(); + } +} + + + +void vp::power::power_trace::inc_dynamic_energy(double quantum) +{ + // Since we need to account the energy for the current amount of the cycle, check if it needs to be flushed + this->flush_dynamic_energy_for_cycle(); + + // Then account it to both the total amount and to the cycle amount + this->dynamic_energy_for_cycle += quantum; + this->report_dynamic_energy += quantum; + + // Redump VCD trace since teh instant power is impacted + this->dump_vcd_trace(); +} + + + +void vp::power::power_trace::inc_dynamic_power(double power_incr) +{ + // Leakage and dynamic are handled differently since they are reported separately, + // In both cases, first compute the power on current period, start a new one, + // and change the power so that it is constant over the period, to properly + // compute the energy. + this->account_dynamic_power(); + this->current_dynamic_power += power_incr; + + // Redump VCD trace since teh instant power is impacted + this->dump_vcd_trace(); +} + + + +void vp::power::power_trace::inc_leakage_power(double power_incr) +{ + // Leakage and dynamic are handled differently since they are reported separately, + // In both cases, first compute the power on current period, start a new one, + // and change the power so that it is constant over the period, to properly + // compute the energy. + this->account_leakage_power(); + this->current_leakage_power += power_incr; + + // Redump VCD trace since teh instant power is impacted + this->dump_vcd_trace(); +} diff --git a/gvsoc/gvsoc/engine/src/vp.cpp b/gvsoc/gvsoc/engine/src/vp.cpp index 28fd586d3..271e0078a 100644 --- a/gvsoc/gvsoc/engine/src/vp.cpp +++ b/gvsoc/gvsoc/engine/src/vp.cpp @@ -163,10 +163,14 @@ void vp::component::reg_step_pre_start(std::function callback) this->pre_start_callbacks.push_back(callback); } +void vp::component::register_build_callback(std::function callback) +{ + this->build_callbacks.push_back(callback); +} + void vp::component::post_post_build() { traces.post_post_build(); - power.post_post_build(); } void vp::component::final_bind() @@ -1384,6 +1388,12 @@ void vp::component::build_instance(std::string name, vp::component *parent) this->pre_pre_build(); this->pre_build(); this->build(); + this->power.build(); + + for (auto x : build_callbacks) + { + x(); + } } @@ -1620,6 +1630,19 @@ void vp::component::create_comps() } } + + +void vp::component::dump_traces_recursive(FILE *file) +{ + this->dump_traces(file); + + for (auto& x: this->get_childs()) + { + x->dump_traces_recursive(file); + } +} + + vp::component *vp::__gv_create(std::string config_path, struct gv_conf *gv_conf) { setenv("PULP_CONFIG_FILE", config_path.c_str(), 1); @@ -1663,6 +1686,8 @@ vp::component *vp::__gv_create(std::string config_path, struct gv_conf *gv_conf) vp::component *instance = constructor(js_config); + new vp::power::engine(instance); + instance->set_vp_config(gv_config); instance->set_gv_conf(gv_conf); @@ -1768,12 +1793,6 @@ void Gvsoc_proxy::proxy_loop() std::sregex_token_iterator it{s.begin(), s.end(), regex, -1}; std::vector words{it, {}}; - - for (auto x: words) - { - printf("%s\n", x.c_str()); - } - if (words.size() > 0) { if (words[0] == "stopped") @@ -1795,6 +1814,9 @@ void Gvsoc_proxy::proxy_loop() this->cond.notify_all(); this->mutex.unlock(); } + else if (words[0] == "req=") + { + } else { printf("Ignoring invalid command: %s\n", words[0].c_str()); @@ -1849,7 +1871,7 @@ int Gvsoc_proxy::open() void Gvsoc_proxy::run() { - dprintf(this->req_pipe[1], "run\n"); + dprintf(this->req_pipe[1], "cmd=run\n"); } @@ -1857,7 +1879,7 @@ void Gvsoc_proxy::run() int64_t Gvsoc_proxy::pause() { int64_t result; - dprintf(this->req_pipe[1], "stop\n"); + dprintf(this->req_pipe[1], "cmd=stop\n"); std::unique_lock lock(this->mutex); while (this->running) { @@ -1872,14 +1894,14 @@ int64_t Gvsoc_proxy::pause() void Gvsoc_proxy::close() { - dprintf(this->req_pipe[1], "quit\n"); + dprintf(this->req_pipe[1], "cmd=quit\n"); } void Gvsoc_proxy::add_event_regex(std::string regex) { - dprintf(this->req_pipe[1], "event add %s\n", regex.c_str()); + dprintf(this->req_pipe[1], "cmd=event add %s\n", regex.c_str()); } @@ -1887,21 +1909,21 @@ void Gvsoc_proxy::add_event_regex(std::string regex) void Gvsoc_proxy::remove_event_regex(std::string regex) { - dprintf(this->req_pipe[1], "event remove %s\n", regex.c_str()); + dprintf(this->req_pipe[1], "cmd=event remove %s\n", regex.c_str()); } void Gvsoc_proxy::add_trace_regex(std::string regex) { - dprintf(this->req_pipe[1], "trace add %s\n", regex.c_str()); + dprintf(this->req_pipe[1], "cmd=trace add %s\n", regex.c_str()); } void Gvsoc_proxy::remove_trace_regex(std::string regex) { - dprintf(this->req_pipe[1], "trace remove %s\n", regex.c_str()); + dprintf(this->req_pipe[1], "cmd=trace remove %s\n", regex.c_str()); } @@ -2025,6 +2047,16 @@ int sc_main(int argc, char *argv[]) #endif +void vp::fatal(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + if (vfprintf(stderr, fmt, ap) < 0) {} + va_end(ap); + abort(); +} + + extern "C" void *gv_chip_pad_bind(void *handle, char *name, int ext_handle) { vp::component *instance = (vp::component *)handle; diff --git a/gvsoc/gvsoc/engine/vp/CMakeLists.txt b/gvsoc/gvsoc/engine/vp/CMakeLists.txt index c12a0edd6..b2e6d6a79 100644 --- a/gvsoc/gvsoc/engine/vp/CMakeLists.txt +++ b/gvsoc/gvsoc/engine/vp/CMakeLists.txt @@ -5,11 +5,6 @@ vp_model(NAME clock_domain_impl SOURCES "clock_domain_impl.cpp" ) -vp_model(NAME power_engine_impl - PREFIX ${VP_PREFIX} - SOURCES "power_engine_impl.cpp" - ) - vp_model(NAME time_domain_impl PREFIX ${VP_PREFIX} SOURCES "time_engine.cpp" diff --git a/gvsoc/gvsoc/engine/vp/Makefile b/gvsoc/gvsoc/engine/vp/Makefile index c0eb74ead..8e6a9053e 100644 --- a/gvsoc/gvsoc/engine/vp/Makefile +++ b/gvsoc/gvsoc/engine/vp/Makefile @@ -1,4 +1,4 @@ -IMPLEMENTATIONS += vp/clock_domain_impl vp/time_domain_impl vp/trace_domain_impl vp/power_engine_impl +IMPLEMENTATIONS += vp/clock_domain_impl vp/time_domain_impl vp/trace_domain_impl vp/clock_domain_impl_SRCS = vp/clock_domain_impl.cpp @@ -6,5 +6,3 @@ vp/time_domain_impl_SRCS = vp/time_engine.cpp vp/trace_domain_impl_SRCS = vp/trace_domain_impl.cpp vp/trace_domain_impl_LDFLAGS = -lpthread - -vp/power_engine_impl_SRCS = vp/power_engine_impl.cpp diff --git a/gvsoc/gvsoc/engine/vp/power_engine_impl.cpp b/gvsoc/gvsoc/engine/vp/power_engine_impl.cpp deleted file mode 100644 index 66a5e8415..000000000 --- a/gvsoc/gvsoc/engine/vp/power_engine_impl.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and - * University of Bologna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) - */ - -#include -#include -#include -#include -#include -#include - - - -class power_manager : public vp::power_engine -{ -public: - power_manager(js::config *config); - - void pre_pre_build(); - - int build(); - - void run(); - - int64_t step(int64_t timestamp); - - void quit(int status); - - void pause(); - - void req_stop_exec(); - - void register_exec_notifier(vp::Notifier *notifier); - - void stop_exec(); - - int join(); - - void start_capture(); - - void stop_capture(); - - void reg_trace(vp::power_trace *trace); - -private: - std::vector traces; - - vp::component *time_engine; -}; - - - -void power_manager::run() -{ - this->time_engine->run(); -} - - - -int64_t power_manager::step(int64_t timestamp) -{ - return this->time_engine->step(timestamp); -} - - - -void power_manager::quit(int status) -{ - this->time_engine->quit(status); -} - - - -void power_manager::pause() -{ - this->time_engine->pause(); -} - -void power_manager::stop_exec() -{ - this->time_engine->stop_exec(); -} - -void power_manager::req_stop_exec() -{ - this->time_engine->req_stop_exec(); -} - -void power_manager::register_exec_notifier(vp::Notifier *notifier) -{ - this->time_engine->register_exec_notifier(notifier); -} - - -int power_manager::join() -{ - return this->time_engine->join(); -} - - - -void power_manager::start_capture() -{ - for (auto trace : this->traces) - { - trace->clear(); - } -} - - - -void power_manager::stop_capture() -{ - FILE *file = fopen("power_report.csv", "w"); - if (file == NULL) - { - vp_warning_always(&this->warning, "Failed to open power report file (path: %s)\n", "power_report.csv"); - return; - } - - this->dump_traces_recursive(file); -} - - - -void power_manager::reg_trace(vp::power_trace *trace) -{ - this->traces.push_back(trace); -} - - - -vp::power_engine::power_engine(js::config *config) - : vp::component(config) -{ -} - - - -void power_manager::pre_pre_build() -{ - this->new_service("power", static_cast(this)); -} - - - -power_manager::power_manager(js::config *config) - : vp::power_engine(config) -{ -} - - - -int power_manager::build() -{ - this->time_engine = this->new_component("", this->get_js_config(), "vp.time_domain_impl"); - return 0; -} - - - -extern "C" vp::component *vp_constructor(js::config *config) -{ - return new power_manager(config); -} diff --git a/gvsoc/gvsoc/engine/vp/time_engine.cpp b/gvsoc/gvsoc/engine/vp/time_engine.cpp index 66e6f115d..e9b254d2b 100644 --- a/gvsoc/gvsoc/engine/vp/time_engine.cpp +++ b/gvsoc/gvsoc/engine/vp/time_engine.cpp @@ -181,6 +181,7 @@ vp::time_engine::time_engine(js::config *config) run_req = false; stop_req = false; + pause_req = false; } @@ -200,6 +201,7 @@ void vp::time_engine::run() } run_req = true; + pause_req = false; pthread_cond_broadcast(&cond); pthread_mutex_unlock(&mutex); @@ -365,11 +367,14 @@ void vp::time_engine::run_loop() { pthread_mutex_lock(&mutex); - while (!run_req) + while (!run_req || pause_req) { - for (auto x: this->exec_notifiers) + if (pause_req) { - x->notify_stop(); + for (auto x: this->exec_notifiers) + { + x->notify_stop(); + } } running = false; pthread_cond_broadcast(&cond); @@ -641,6 +646,7 @@ void vp::time_engine::stop_exec() { pthread_mutex_lock(&mutex); pthread_cond_broadcast(&cond); + this->pause_req = true; this->run_req = false; pthread_mutex_unlock(&mutex); } diff --git a/gvsoc/gvsoc/engine/vp/trace_domain_impl.cpp b/gvsoc/gvsoc/engine/vp/trace_domain_impl.cpp index c33a3effb..182e9a408 100644 --- a/gvsoc/gvsoc/engine/vp/trace_domain_impl.cpp +++ b/gvsoc/gvsoc/engine/vp/trace_domain_impl.cpp @@ -92,7 +92,7 @@ class trace_domain : public vp::trace_engine std::vector init_traces; std::unordered_map trace_files; - vp::component *power_engine; + vp::component *time_engine; FILE *trace_file; }; @@ -129,42 +129,42 @@ trace_domain::trace_domain(js::config *config) void trace_domain::run() { - this->power_engine->run(); + this->time_engine->run(); } int64_t trace_domain::step(int64_t timestamp) { - return this->power_engine->step(timestamp); + return this->time_engine->step(timestamp); } void trace_domain::quit(int status) { - this->power_engine->quit(status); + this->time_engine->quit(status); } void trace_domain::pause() { - this->power_engine->pause(); + this->time_engine->pause(); } void trace_domain::stop_exec() { - this->power_engine->stop_exec(); + this->time_engine->stop_exec(); } void trace_domain::req_stop_exec() { - this->power_engine->req_stop_exec(); + this->time_engine->req_stop_exec(); } void trace_domain::register_exec_notifier(vp::Notifier *notifier) { - this->power_engine->register_exec_notifier(notifier); + this->time_engine->register_exec_notifier(notifier); } int trace_domain::join() { - return this->power_engine->join(); + return this->time_engine->join(); } void trace_domain::check_trace_active(vp::trace *trace, int event) @@ -313,7 +313,7 @@ void trace_domain::pre_pre_build() int trace_domain::build() { - this->power_engine = this->new_component("", this->get_js_config(), "vp.power_engine_impl"); + this->time_engine = this->new_component("", this->get_js_config(), "vp.time_domain_impl"); js::config *config = get_js_config()->get("gvsoc"); diff --git a/gvsoc/gvsoc/models/cache/cache_impl.cpp b/gvsoc/gvsoc/models/cache/cache_impl.cpp index 378951a81..0eece0b31 100644 --- a/gvsoc/gvsoc/models/cache/cache_impl.cpp +++ b/gvsoc/gvsoc/models/cache/cache_impl.cpp @@ -258,7 +258,6 @@ cache_line_t *Cache::refill(int line_index, unsigned int addr, unsigned int tag, } else { - this->warning.force_warning("UNIMPLEMENTED AT %s %d\n", __FILE__, __LINE__); return NULL; } } diff --git a/gvsoc/gvsoc/models/cpu/iss/include/isa_lib/int.h b/gvsoc/gvsoc/models/cpu/iss/include/isa_lib/int.h index 6196941ce..6a3f4486a 100644 --- a/gvsoc/gvsoc/models/cpu/iss/include/isa_lib/int.h +++ b/gvsoc/gvsoc/models/cpu/iss/include/isa_lib/int.h @@ -1755,16 +1755,44 @@ static inline unsigned int lib_flexfloat_max(iss_cpu_state_t *s, unsigned int a, } static inline int64_t lib_flexfloat_cvt_w_ff_round(iss_cpu_state_t *s, unsigned int a, uint8_t e, uint8_t m, unsigned int round) { - int old = setFFRoundingMode(s, round); + int old; + bool neg = false; + unsigned int new_round = round == 4 ? 2 : round; + old = setFFRoundingMode(s, new_round); FF_INIT_1(a, e, m) + if (round == 4) + { + if (ff_a.value < 0) + { + ff_a.value = -ff_a.value; + neg = true; + } + ff_a.value += 0.5f; + } int32_t result_int = double_to_int(ff_a.value); - restoreFFRoundingMode(old); + if (neg) + { + result_int = -result_int; + } + restoreFFRoundingMode(new_round); return (int64_t) result_int; } static inline int64_t lib_flexfloat_cvt_wu_ff_round(iss_cpu_state_t *s, unsigned int a, uint8_t e, uint8_t m, unsigned int round) { - int old = setFFRoundingMode(s, round); + int old; + bool neg = false; + unsigned int new_round = round == 4 ? 2 : round; + old = setFFRoundingMode(s, new_round); FF_INIT_1(a, e, m) + if (round == 4) + { + if (ff_a.value < 0) + { + ff_a.value = -ff_a.value; + neg = true; + } + ff_a.value += 0.5f; + } int32_t result_int = double_to_uint(ff_a.value); restoreFFRoundingMode(old); return (int64_t) result_int; diff --git a/gvsoc/gvsoc/models/cpu/iss/isa_gen/isa_pulp_gen.py b/gvsoc/gvsoc/models/cpu/iss/isa_gen/isa_pulp_gen.py index 3628fae15..64abe4631 100644 --- a/gvsoc/gvsoc/models/cpu/iss/isa_gen/isa_pulp_gen.py +++ b/gvsoc/gvsoc/models/cpu/iss/isa_gen/isa_pulp_gen.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 - # # Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and # University of Bologna diff --git a/gvsoc/gvsoc/models/cpu/iss/isa_gen/isa_riscv_gen.py b/gvsoc/gvsoc/models/cpu/iss/isa_gen/isa_riscv_gen.py index 8ce7594df..54895995b 100644 --- a/gvsoc/gvsoc/models/cpu/iss/isa_gen/isa_riscv_gen.py +++ b/gvsoc/gvsoc/models/cpu/iss/isa_gen/isa_riscv_gen.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 - # # Copyright (C) 2020 GreenWaves Technologies, SAS, ETH Zurich and # University of Bologna @@ -17,7 +15,7 @@ # limitations under the License. # -# +# # Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) # @@ -84,19 +82,19 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N InReg (1, Range(20, 5)), ] - + # int64 formats elif format == 'R1x64_W64': self.args = [ OutReg64 (0, Range(7, 5)), InReg64 (0, Range(15, 5)), ] - + elif format == 'R2x64_W64': self.args = [ OutReg64 (0, Range(7, 5)), InReg64 (0, Range(15, 5)), InReg64 (1, Range(20, 5)), ] - + elif format == 'R1x64puImm_W64': self.args = [ OutReg64 (0, Range(7, 5)), InReg64 (0, Range(15, 5)), @@ -114,7 +112,7 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N InReg64 (0, Range(15, 5)), UnsignedImm (0, Range(20, 5)), ] - + elif format == 'R1x64psImm_W32': self.args = [ OutReg (0, Range(7, 5)), InReg64 (0, Range(15, 5)), @@ -131,7 +129,7 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N InReg64 (0, Range(15, 5)), InReg64 (1, Range(20, 5)), ] - + elif format == 'R1x32_W64': self.args = [ OutReg64 (0, Range(7, 5)), InReg (0, Range(15, 5)), @@ -156,7 +154,7 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N InReg64 (2, Range(7, 5)), ] - + elif format == 'BITREV': self.args = [ OutReg(0, Range(7, 5)), InReg (0, Range(15, 5)), @@ -729,7 +727,7 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N R5('flw', 'FL', '------- ----- ----- 010 ----- 0000111', tags=["load"]), R5('fsw', 'FS', '------- ----- ----- 010 ----- 0100111'), - + R5('fmadd.s', 'R4U','-----00 ----- ----- --- ----- 1000011', tags=['fmadd']), R5('fmsub.s', 'R4U','-----00 ----- ----- --- ----- 1000111', tags=['fmadd']), R5('fnmsub.s', 'R4U','-----00 ----- ----- --- ----- 1001011', tags=['fmadd']), @@ -778,7 +776,7 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N R5('flh', 'FL', '------- ----- ----- 001 ----- 0000111', tags=["load"]), R5('fsh', 'FS', '------- ----- ----- 001 ----- 0100111'), - + R5('fmadd.h', 'R4U','-----10 ----- ----- --- ----- 1000011', tags=['sfmadd']), R5('fmsub.h', 'R4U','-----10 ----- ----- --- ----- 1000111', tags=['sfmadd']), R5('fnmsub.h', 'R4U','-----10 ----- ----- --- ----- 1001011', tags=['sfmadd']), @@ -826,7 +824,7 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N ]) Xf16alt = IsaSubset('f16alt', [ - + R5('fmadd.ah', 'R4U','-----10 ----- ----- 101 ----- 1000011', tags=['sfmadd']), R5('fmsub.ah', 'R4U','-----10 ----- ----- 101 ----- 1000111', tags=['sfmadd']), R5('fnmsub.ah', 'R4U','-----10 ----- ----- 101 ----- 1001011', tags=['sfmadd']), @@ -881,7 +879,7 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N R5('flb', 'FL', '------- ----- ----- 000 ----- 0000111', tags=["load"]), R5('fsb', 'FS', '------- ----- ----- 000 ----- 0100111'), - + R5('fmadd.b', 'R4U','-----11 ----- ----- --- ----- 1000011', tags=['sfmadd']), R5('fmsub.b', 'R4U','-----11 ----- ----- --- ----- 1000111', tags=['sfmadd']), R5('fnmsub.b', 'R4U','-----11 ----- ----- --- ----- 1001011', tags=['sfmadd']), @@ -1271,7 +1269,7 @@ def __init__(self, label, format, encoding, decode=None, N=None, L=None, mapTo=N R5('vfdotpex.s.r.b','RVF', '1001011 ----- ----- 111 ----- 0110011', tags=['fmadd'], isa_tags=['f8auxvec']), R5('vfavg.b', 'RVF', '1010110 ----- ----- 011 ----- 0110011', tags=['fadd'], isa_tags=['f8auxvec']), R5('vfavg.r.b', 'RVF', '1010110 ----- ----- 111 ----- 0110011', tags=['fadd'], isa_tags=['f8auxvec']), - + ]) diff --git a/gvsoc/gvsoc/models/cpu/iss/iss.mk b/gvsoc/gvsoc/models/cpu/iss/iss.mk index 5af22726f..7a7e95763 100644 --- a/gvsoc/gvsoc/models/cpu/iss/iss.mk +++ b/gvsoc/gvsoc/models/cpu/iss/iss.mk @@ -4,7 +4,7 @@ COMMON_SRCS = $(GVSOC_ISS_PATH)/vp/src/iss_wrapper.cpp $(GVSOC_ISS_PATH)/src/iss $(GVSOC_ISS_PATH)/src/resource.c \ $(GVSOC_ISS_PATH)/flexfloat/flexfloat.c -COMMON_CFLAGS = -DRISCV=1 -DRISCY -I$(GVSOC_ISS_PATH)/include -I$(GVSOC_ISS_PATH)/vp/include -I$(GVSOC_ISS_PATH)/flexfloat -march=native -fno-strict-aliasing +COMMON_CFLAGS = -DRISCV=1 -DRISCY -I$(GVSOC_ISS_PATH)/include -I$(GVSOC_ISS_PATH)/vp/include -I$(GVSOC_ISS_PATH)/flexfloat -mtune=generic -fno-strict-aliasing ifdef USE_TRDB COMMON_CFLAGS += -DUSE_TRDB=1 diff --git a/gvsoc/gvsoc/models/cpu/iss/vp/include/iss_wrapper.hpp b/gvsoc/gvsoc/models/cpu/iss/vp/include/iss_wrapper.hpp index 321ac781c..ac739ef20 100644 --- a/gvsoc/gvsoc/models/cpu/iss/vp/include/iss_wrapper.hpp +++ b/gvsoc/gvsoc/models/cpu/iss/vp/include/iss_wrapper.hpp @@ -141,11 +141,9 @@ class iss_wrapper : public vp::component, vp::Gdbserver_core vp::reg_1 step_mode; vp::reg_1 do_step; - vp::power_trace power_trace; - - std::vector insn_groups_power; - vp::power_source clock_gated_power; - vp::power_source leakage_power; + std::vector insn_groups_power; + vp::power::power_source clock_gated_power; + vp::power::power_source leakage_power; vp::trace state_event; vp::trace pc_trace_event; diff --git a/gvsoc/gvsoc/models/cpu/iss/vp/include/platform_wrapper.hpp b/gvsoc/gvsoc/models/cpu/iss/vp/include/platform_wrapper.hpp index f1358d239..a386c3768 100644 --- a/gvsoc/gvsoc/models/cpu/iss/vp/include/platform_wrapper.hpp +++ b/gvsoc/gvsoc/models/cpu/iss/vp/include/platform_wrapper.hpp @@ -170,7 +170,7 @@ static inline int iss_fetch_req_common(iss_t *_this, uint64_t addr, uint8_t *dat if (err != vp::IO_REQ_OK) { if (err == vp::IO_REQ_INVALID) - _this->trace.force_warning("Invalid fetch request (addr: 0x%x, size: 0x%x)\n", addr, size); + _this->trace.fatal("Invalid fetch request (addr: 0x%x, size: 0x%x)\n", addr, size); else { iss_exec_insn_stall(_this); diff --git a/gvsoc/gvsoc/models/cpu/iss/vp/src/iss_wrapper.cpp b/gvsoc/gvsoc/models/cpu/iss/vp/src/iss_wrapper.cpp index 9c0aeb31e..4559223c9 100644 --- a/gvsoc/gvsoc/models/cpu/iss/vp/src/iss_wrapper.cpp +++ b/gvsoc/gvsoc/models/cpu/iss/vp/src/iss_wrapper.cpp @@ -21,7 +21,6 @@ #include #include -#include "archi/gvsoc/gvsoc.h" #include "iss.hpp" #include #include @@ -106,9 +105,9 @@ do { \ \ iss_insn_t *insn = _this->cpu.current_insn; \ int cycles = func(_this); \ - if (_this->power_trace.get_active()) \ + if (_this->power.get_power_trace()->get_active()) \ { \ - _this->insn_groups_power[_this->cpu.prev_insn->decoder_item->u.insn.power_group].account_event(); \ + _this->insn_groups_power[_this->cpu.prev_insn->decoder_item->u.insn.power_group].account_energy_quantum(); \ } \ trdb_record_instruction(_this, insn); \ if (cycles >= 0) \ @@ -1089,6 +1088,8 @@ void iss_wrapper::handle_ebreak() switch (id) { + // TODO deprecated, should be removed +#if 0 case GV_SEMIHOSTING_TRACE_OPEN: { int result = -1; std::string path = this->read_user_string(this->cpu.regfile.regs[11]); @@ -1129,7 +1130,8 @@ void iss_wrapper::handle_ebreak() break; } - + #endif + default: this->warning.force_warning("Unknown ebreak call (id: %d)\n", id); break; @@ -1302,8 +1304,6 @@ int iss_wrapper::build() traces.new_trace_event_real("ipc_stat", &ipc_stat_event); - power.new_trace("power_trace", &power_trace); - this->new_reg("bootaddr", &this->bootaddr_reg, get_config_int("boot_addr")); this->new_reg("fetch_enable", &this->fetch_enable_reg, get_js_config()->get("fetch_enable")->get_bool()); @@ -1321,16 +1321,16 @@ int iss_wrapper::build() this->insn_groups_power.resize(config->get_size()); for (int i=0; iget_size(); i++) { - power.new_event("power_insn_" + std::to_string(i), &this->insn_groups_power[i], config->get_elem(i), &power_trace); + power.new_power_source("power_insn_" + std::to_string(i), &this->insn_groups_power[i], config->get_elem(i)); } } else { this->insn_groups_power.resize(1); - power.new_event("power_insn", &this->insn_groups_power[0], this->get_js_config()->get("**/insn"), &power_trace); + power.new_power_source("power_insn", &this->insn_groups_power[0], this->get_js_config()->get("**/insn")); } - power.new_event("power_clock_gated", &clock_gated_power, this->get_js_config()->get("**/clock_gated"), &power_trace); - power.new_leakage_event("leakage", &leakage_power, this->get_js_config()->get("**/leakage"), &power_trace); + power.new_power_source("power_clock_gated", &clock_gated_power, this->get_js_config()->get("**/clock_gated")); + power.new_power_source("leakage", &leakage_power, this->get_js_config()->get("**/leakage")); data.set_resp_meth(&iss_wrapper::data_response); data.set_grant_meth(&iss_wrapper::data_grant); @@ -1431,7 +1431,7 @@ void iss_wrapper::start() INIT_LIST_HEAD(&this->trdb_packet_list); #endif - this->leakage_power.power_on(); + this->leakage_power.leakage_power_start(); this->gdbserver = (vp::Gdbserver_engine *)this->get_service("gdbserver"); diff --git a/gvsoc/gvsoc/models/devices/ble/nina_b112.cpp b/gvsoc/gvsoc/models/devices/ble/nina_b112.cpp index 65bd12774..66ffc3282 100644 --- a/gvsoc/gvsoc/models/devices/ble/nina_b112.cpp +++ b/gvsoc/gvsoc/models/devices/ble/nina_b112.cpp @@ -15,6 +15,8 @@ * limitations under the License. */ + + #include "nina_b112.hpp" #include diff --git a/gvsoc/gvsoc/models/devices/camera/CMakeLists.txt b/gvsoc/gvsoc/models/devices/camera/CMakeLists.txt index fa319bd66..1e164ba74 100644 --- a/gvsoc/gvsoc/models/devices/camera/CMakeLists.txt +++ b/gvsoc/gvsoc/models/devices/camera/CMakeLists.txt @@ -2,9 +2,11 @@ vp_model(NAME himax PREFIX "devices/camera" SOURCES "himax.cpp") +if(NOT DEFINED ENV{NO_IMAGE_MAGICK}) find_library(MAGICK_LIB GraphicsMagick++) if(MAGICK_LIB) vp_model_compile_options(NAME himax OPTIONS "-D__MAGICK__") vp_model_link_libraries(NAME himax LIBRARY GraphicsMagick++) else() endif() +endif() diff --git a/gvsoc/gvsoc/models/devices/camera/himax.cpp b/gvsoc/gvsoc/models/devices/camera/himax.cpp index dec46abca..45648c124 100644 --- a/gvsoc/gvsoc/models/devices/camera/himax.cpp +++ b/gvsoc/gvsoc/models/devices/camera/himax.cpp @@ -19,7 +19,6 @@ */ - #include #include #include diff --git a/gvsoc/gvsoc/models/devices/testbench/i2s_verif.cpp b/gvsoc/gvsoc/models/devices/testbench/i2s_verif.cpp index 54df1771b..289acf5a6 100644 --- a/gvsoc/gvsoc/models/devices/testbench/i2s_verif.cpp +++ b/gvsoc/gvsoc/models/devices/testbench/i2s_verif.cpp @@ -574,7 +574,7 @@ Tx_stream_raw_file::Tx_stream_raw_file(Slot *slot, std::string filepath, int wid this->slot->trace.msg(vp::trace::LEVEL_INFO, "Opening dumper (path: %s)\n", filepath.c_str()); if (this->outfile == NULL) { - this->slot->top->trace.fatal("Unable to open file (file: %s, error: %s)\n", filepath, strerror(errno)); + this->slot->top->trace.fatal("Unable to open output file (file: %s, error: %s)\n", filepath.c_str(), strerror(errno)); } } @@ -674,7 +674,7 @@ Rx_stream_raw_file::Rx_stream_raw_file(Slot *slot, std::string filepath, int wid this->infile = fopen(filepath.c_str(), "r"); if (this->infile == NULL) { - this->slot->top->trace.fatal("Unable to open file (file: %s, error: %s)\n", filepath, strerror(errno)); + this->slot->top->trace.fatal("Unable to open input file (file: %s, error: %s)\n", filepath.c_str(), strerror(errno)); } } diff --git a/gvsoc/gvsoc/models/devices/testbench/testbench.cpp b/gvsoc/gvsoc/models/devices/testbench/testbench.cpp index 6d6b474bd..2975e770d 100644 --- a/gvsoc/gvsoc/models/devices/testbench/testbench.cpp +++ b/gvsoc/gvsoc/models/devices/testbench/testbench.cpp @@ -734,6 +734,9 @@ void Testbench::handle_received_byte(uint8_t byte) this->uart_ctrl->itf.sync_full(1, 2, 0); this->uart_ctrl->send_byte(this->tx_buff[0]); break; + + default: + this->trace.fatal("Received unknown request: 0x%2.2x\n", this->cmd & 0xffff); } } else if (this->state == STATE_WAITING_REQUEST) diff --git a/gvsoc/gvsoc/models/memory/memory_impl.cpp b/gvsoc/gvsoc/models/memory/memory_impl.cpp index 2427f67f0..4f7b748d2 100644 --- a/gvsoc/gvsoc/models/memory/memory_impl.cpp +++ b/gvsoc/gvsoc/models/memory/memory_impl.cpp @@ -60,15 +60,14 @@ class memory : public vp::component bool power_trigger; bool powered_up; - vp::power_trace power_trace; - vp::power_source idle_power; - vp::power_source read_8_power; - vp::power_source read_16_power; - vp::power_source read_32_power; - vp::power_source write_8_power; - vp::power_source write_16_power; - vp::power_source write_32_power; - vp::power_source leakage_power; + vp::power::power_source idle_power; + vp::power::power_source read_8_power; + vp::power::power_source read_16_power; + vp::power::power_source read_32_power; + vp::power::power_source write_8_power; + vp::power::power_source write_16_power; + vp::power::power_source write_32_power; + vp::power::power_source leakage_power; vp::clock_event *power_event; int64_t last_access_timestamp; @@ -85,7 +84,7 @@ void memory::power_callback(void *__this, vp::clock_event *event) memory *_this = (memory *)__this; if (_this->last_access_timestamp < _this->get_time()) { - _this->idle_power.power_on(); + _this->idle_power.dynamic_power_start(); } } @@ -121,27 +120,27 @@ vp::io_req_status_e memory::req(void *__this, vp::io_req *req) _this->next_packet_start = MAX(_this->next_packet_start, cycles) + duration; } - if (_this->power_trace.get_active()) + if (_this->power.get_power_trace()->get_active()) { _this->last_access_timestamp = _this->get_time(); if (req->get_is_write()) { if (size == 1) - _this->write_8_power.account_event(); + _this->write_8_power.account_energy_quantum(); else if (size == 2) - _this->write_16_power.account_event(); + _this->write_16_power.account_energy_quantum(); else if (size == 4) - _this->write_32_power.account_event(); + _this->write_32_power.account_energy_quantum(); } else { if (size == 1) - _this->read_8_power.account_event(); + _this->read_8_power.account_energy_quantum(); else if (size == 2) - _this->read_16_power.account_event(); + _this->read_16_power.account_energy_quantum(); else if (size == 4) - _this->read_32_power.account_event(); + _this->read_32_power.account_energy_quantum(); } if (!_this->power_event->is_enqueued()) @@ -224,16 +223,14 @@ int memory::build() js::config *config = get_js_config()->get("power_trigger"); this->power_trigger = config != NULL && config->get_bool(); - if (power.new_trace("power_trace", &power_trace)) return -1; - - power.new_leakage_event("leakage", &leakage_power, this->get_js_config()->get("**/leakage"), &power_trace); - power.new_event("idle", &idle_power, this->get_js_config()->get("**/idle"), &power_trace); - power.new_event("read_8", &read_8_power, this->get_js_config()->get("**/read_8"), &power_trace); - power.new_event("read_16", &read_16_power, this->get_js_config()->get("**/read_16"), &power_trace); - power.new_event("read_32", &read_32_power, this->get_js_config()->get("**/read_32"), &power_trace); - power.new_event("write_8", &write_8_power, this->get_js_config()->get("**/write_8"), &power_trace); - power.new_event("write_16", &write_16_power, this->get_js_config()->get("**/write_16"), &power_trace); - power.new_event("write_32", &write_32_power, this->get_js_config()->get("**/write_32"), &power_trace); + power.new_power_source("leakage", &leakage_power, this->get_js_config()->get("**/leakage")); + power.new_power_source("idle", &idle_power, this->get_js_config()->get("**/idle")); + power.new_power_source("read_8", &read_8_power, this->get_js_config()->get("**/read_8")); + power.new_power_source("read_16", &read_16_power, this->get_js_config()->get("**/read_16")); + power.new_power_source("read_32", &read_32_power, this->get_js_config()->get("**/read_32")); + power.new_power_source("write_8", &write_8_power, this->get_js_config()->get("**/write_8")); + power.new_power_source("write_16", &write_16_power, this->get_js_config()->get("**/write_16")); + power.new_power_source("write_32", &write_32_power, this->get_js_config()->get("**/write_32")); power_event = this->event_new(memory::power_callback); @@ -290,8 +287,8 @@ void memory::start() } } - this->leakage_power.power_on(); - this->idle_power.power_on(); + this->leakage_power.leakage_power_start(); + this->idle_power.dynamic_power_start(); this->last_access_timestamp = -1; } diff --git a/gvsoc/gvsoc/models/utils/composite_impl.cpp b/gvsoc/gvsoc/models/utils/composite_impl.cpp index 4b8d41d62..907075e82 100644 --- a/gvsoc/gvsoc/models/utils/composite_impl.cpp +++ b/gvsoc/gvsoc/models/utils/composite_impl.cpp @@ -44,8 +44,6 @@ class composite : public vp::component private: void add_port(std::string name, vp::port *port); std::map ports; - - vp::power_trace power_trace; }; @@ -58,7 +56,7 @@ composite::composite(js::config *config) void composite::dump_traces(FILE *file) { - this->power_trace.dump(file); + this->power.get_power_trace()->dump(file); } @@ -68,19 +66,12 @@ int composite::build() this->create_ports(); this->create_bindings(); - if (this->power.new_trace("power_trace", &this->power_trace)) - return -1; - return 0; } void composite::start() { - //if (this->get_clock()) - { - this->power_trace.collect(); - } } diff --git a/gvsoc/gvsoc_gap/models/gap9/cpu/iss/gap9_cores.py b/gvsoc/gvsoc_gap/models/gap9/cpu/iss/gap9_cores.py index a9d630e39..b24549089 100644 --- a/gvsoc/gvsoc_gap/models/gap9/cpu/iss/gap9_cores.py +++ b/gvsoc/gvsoc_gap/models/gap9/cpu/iss/gap9_cores.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 - # # Copyright (C) 2020 GreenWaves Technologies # @@ -57,7 +55,7 @@ def __init__(self): class Gap9_cluster_core(Gap9_core): def __init__(self): - + super(Gap9_cluster_core, self).__init__() # Declare the 3 kind of shared resources with appropriate latency and bandwidth @@ -71,7 +69,7 @@ def __init__(self): # All float operations are handled by the same unit self.__attach_resource(insn, 'fpu_base', latency=1, bandwidth=1, tags=[ 'fmadd', 'fadd', 'fmul', 'fconv', 'fother', - 'sfmadd', 'sfadd', 'sfmul', 'sfconv', 'sfother', + 'sfmadd', 'sfadd', 'sfmul', 'sfconv', 'sfother', ]) # Except div, rem and sqrt which goes to the sqrt unit @@ -103,7 +101,7 @@ def __attach_resource(self, insn, resource, latency, bandwidth, tags=[]): class Gap9_fc_core(Gap9_core): def __init__(self): - + super(Gap9_fc_core, self).__init__() for insn in self.isa.get_insns(): diff --git a/gvsoc/gvsoc_gap/models/gap9/cpu/iss/gap9_iss_wrapper.cpp b/gvsoc/gvsoc_gap/models/gap9/cpu/iss/gap9_iss_wrapper.cpp index 710a6005e..bc3f450a3 100644 --- a/gvsoc/gvsoc_gap/models/gap9/cpu/iss/gap9_iss_wrapper.cpp +++ b/gvsoc/gvsoc_gap/models/gap9/cpu/iss/gap9_iss_wrapper.cpp @@ -22,7 +22,6 @@ #include #include -#include "archi/gvsoc/gvsoc.h" #include "iss.hpp" #include "gap9_iss_wrapper.hpp" diff --git a/gvsoc/gvsoc_gap/models/pulp/CMakeLists.txt b/gvsoc/gvsoc_gap/models/pulp/CMakeLists.txt index 3a92e349c..ecfc9adee 100644 --- a/gvsoc/gvsoc_gap/models/pulp/CMakeLists.txt +++ b/gvsoc/gvsoc_gap/models/pulp/CMakeLists.txt @@ -5,9 +5,6 @@ add_subdirectory(efuse) add_subdirectory(event_unit) add_subdirectory(fll) add_subdirectory(gpio) -add_subdirectory(hwacc) -add_subdirectory(hwce) -add_subdirectory(hwpe) add_subdirectory(icache_ctrl) add_subdirectory(itc) add_subdirectory(mchan) @@ -15,7 +12,6 @@ add_subdirectory(mram) add_subdirectory(ne16) add_subdirectory(padframe) add_subdirectory(pmu) -add_subdirectory(rtc) add_subdirectory(soc_eu) add_subdirectory(stdout) add_subdirectory(timer) diff --git a/gvsoc/gvsoc_gap/models/pulp/chips/CMakeLists.txt b/gvsoc/gvsoc_gap/models/pulp/chips/CMakeLists.txt index b6de6b1b7..a86290e0e 100644 --- a/gvsoc/gvsoc_gap/models/pulp/chips/CMakeLists.txt +++ b/gvsoc/gvsoc_gap/models/pulp/chips/CMakeLists.txt @@ -1,18 +1 @@ -add_subdirectory(arnold) -add_subdirectory(bigpulp) -add_subdirectory(gap) -add_subdirectory(gap8_revc) -add_subdirectory(gap9) add_subdirectory(gap9_v2) -add_subdirectory(gap_rev1) -add_subdirectory(multino) -add_subdirectory(oprecompkw) -add_subdirectory(oprecompkw_sa) -add_subdirectory(pulp) -add_subdirectory(pulpissimo) -add_subdirectory(pulpissimo_v1) -add_subdirectory(pulp_v1) -add_subdirectory(usoc_v1) -add_subdirectory(vega) -add_subdirectory(vivosoc3_1) -add_subdirectory(wolfe) diff --git a/gvsoc/gvsoc_gap/models/pulp/cluster/CMakeLists.txt b/gvsoc/gvsoc_gap/models/pulp/cluster/CMakeLists.txt index e9dcdebab..ed166a468 100644 --- a/gvsoc/gvsoc_gap/models/pulp/cluster/CMakeLists.txt +++ b/gvsoc/gvsoc_gap/models/pulp/cluster/CMakeLists.txt @@ -1,10 +1,5 @@ set(CLUSTER_PREFIX "pulp/cluster") -vp_model(NAME cluster_impl - PREFIX ${CLUSTER_PREFIX} - SOURCES "cluster_impl.cpp" - ) - vp_model(NAME l1_interleaver_impl PREFIX ${CLUSTER_PREFIX} SOURCES "l1_interleaver_impl.cpp" diff --git a/gvsoc/gvsoc_gap/models/pulp/cluster/Makefile b/gvsoc/gvsoc_gap/models/pulp/cluster/Makefile index 004fd11ca..56f08bc27 100644 --- a/gvsoc/gvsoc_gap/models/pulp/cluster/Makefile +++ b/gvsoc/gvsoc_gap/models/pulp/cluster/Makefile @@ -8,7 +8,4 @@ endif IMPLEMENTATIONS += pulp/cluster/l1_interleaver_impl pulp/cluster/l1_interleaver_impl_SRCS = pulp/cluster/l1_interleaver_impl.cpp -IMPLEMENTATIONS += pulp/cluster/cluster_impl -pulp/cluster/cluster_impl_SRCS = pulp/cluster/cluster_impl.cpp - endif diff --git a/gvsoc/gvsoc_gap/models/pulp/cluster/cluster_impl.cpp b/gvsoc/gvsoc_gap/models/pulp/cluster/cluster_impl.cpp deleted file mode 100644 index cdb81243d..000000000 --- a/gvsoc/gvsoc_gap/models/pulp/cluster/cluster_impl.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2020 GreenWaves Technologies, SAS - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -/* - * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) - */ - - -#include - - - -class cluster : public vp::component -{ - -public: - - cluster(js::config *config); - - int build(); - void start(); - -private: - - vp::power_trace power_trace; - -}; - -cluster::cluster(js::config *config) -: vp::component(config) -{ - -} - - -int cluster::build() -{ - if (this->power.new_trace("power_trace", &this->power_trace)) return -1; - - return 0; -} - - -void cluster::start() -{ - this->power_trace.collect(); -} - - - -extern "C" vp::component *vp_constructor(js::config *config) -{ - return new cluster(config); -} diff --git a/gvsoc/gvsoc_gap/models/pulp/mram/mram.hpp b/gvsoc/gvsoc_gap/models/pulp/mram/mram.hpp index 8b6064e67..9fcb5f5aa 100644 --- a/gvsoc/gvsoc_gap/models/pulp/mram/mram.hpp +++ b/gvsoc/gvsoc_gap/models/pulp/mram/mram.hpp @@ -19,25 +19,34 @@ * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) */ +#pragma once #include -#define MRAM_CMD_TRIM_CFG 0x01 -#define MRAM_CMD_NORMAL_TX 0x02 -#define MRAM_CMD_ERASE_CHIP 0x04 -#define MRAM_CMD_ERASE_SECT 0x08 -#define MRAM_CMD_ERASE_WORD 0x10 -#define MRAM_CMD_PWDN 0x20 -#define MRAM_CMD_READ_RX 0x40 -#define MRAM_CMD_REF_LINE_P 0x80 -#define MRAM_CMD_REF_LINE_AP 0xC0 - -class Mram_itf +typedef enum { -public: - void set_cmd(int cmd) { this->cmd = cmd; } + MRAM_OP_TRIM_CFG = 0x01, + MRAM_OP_NORMAL_TX = 0x02, + MRAM_OP_ERASE_CHIP = 0x04, + MRAM_OP_ERASE_SECT = 0x08, + MRAM_OP_ERASE_WORD = 0x10, + MRAM_OP_PWDN = 0x20, + MRAM_OP_READ_RX = 0x40, + MRAM_OP_REF_LINE_P = 0x80, + MRAM_OP_REF_LINE_AP = 0xC0, +} mram_op_e; + +typedef struct { + uint32_t div; +} mram_conf_t; -protected: - int cmd; +typedef struct { + mram_op_e operation; + uint32_t addr; + uint32_t size; +} mram_req_t; -}; +typedef struct { + uint8_t *data; + int size; +} mram_data_t; diff --git a/gvsoc/gvsoc_gap/models/pulp/mram/mram_impl.cpp b/gvsoc/gvsoc_gap/models/pulp/mram/mram_impl.cpp index 519a8a754..570c57e53 100644 --- a/gvsoc/gvsoc_gap/models/pulp/mram/mram_impl.cpp +++ b/gvsoc/gvsoc_gap/models/pulp/mram/mram_impl.cpp @@ -21,32 +21,70 @@ #include -#include +#include #include #include #include -class mram : public vp::component, public Mram_itf -{ -public: +#define MRAM_WORD_SIZE 16 +#define SECTOR_SIZE 8192 - mram(js::config *config); - int build(); - void start(); - void reset(bool active); +typedef enum +{ + MRAM_STATE_IDLE, + MRAM_STATE_HANDLE_TRIM, + MRAM_STATE_HANDLE_PROGRAM, + MRAM_STATE_HANDLE_READ, +} Mram_state_e; - static vp::io_req_status_e req(void *__this, vp::io_req *req); -private: +class mram : public vp::component +{ - vp::trace trace; - vp::io_slave in; +public: + + mram(js::config *config); - uint64_t size = 0; + int build(); + void start(); + void reset(bool active); - uint8_t *mem_data; +private: + + static void sync_req(void *__this, mram_req_t *req); + static void sync_data(void *__this, mram_data_t *req); + static void sync_conf(void *__this, mram_conf_t *req); + static void handle_erase(void *__this, vp::clock_event *event); + static void handle_read(void *__this, vp::clock_event *event); + static void handle_trim(void *__this, vp::clock_event *event); + static void handle_program(void *__this, vp::clock_event *event); + + void erase_chip(); + void erase_sect(uint32_t addr); + void erase_word(uint32_t addr, uint32_t size); + void req_read(); + int64_t get_cycle_count(int64_t cycles); + + vp::trace trace; + vp::wire_slave in_req; + vp::wire_slave in_data; + vp::wire_slave in_conf; + + uint64_t size = 0; + + uint8_t *mem_data; + Mram_state_e state; + int pending_size; + uint32_t pending_addr; + uint32_t div; + bool write_first; + + vp::clock_event *erase_event; + vp::clock_event *read_event; + vp::clock_event *trim_event; + vp::clock_event *program_event; }; mram::mram(js::config *config) @@ -55,86 +93,302 @@ mram::mram(js::config *config) } -vp::io_req_status_e mram::req(void *__this, vp::io_req *req) +int64_t mram::get_cycle_count(int64_t cycles) { - mram *_this = (mram *)__this; + if (this->div == 0) + { + return cycles; + } + else + { + return cycles * this->div; + } +} - uint64_t offset = req->get_addr(); - uint8_t *data = req->get_data(); - uint64_t size = req->get_size(); +void mram::sync_conf(void *__this, mram_conf_t *req) +{ + mram *_this = (mram *)__this; + _this->div = req->div; + _this->trace.msg(vp::trace::LEVEL_INFO, "Setting divider (value: 0x%x)\n", _this->div); +} - if (_this->cmd == MRAM_CMD_NORMAL_TX || !req->get_is_write()) - { - _this->trace.msg("MRAM access (offset: 0x%x, size: 0x%x, is_write: %d)\n", offset, size, req->get_is_write()); +void mram::sync_data(void *__this, mram_data_t *req) +{ + mram *_this = (mram *)__this; - if (offset + size > _this->size) { - _this->trace.warning("Received out-of-bound request (addr: 0x%x, size: 0x%x, mram_size: 0x%x)\n", offset, size, _this->size); - return vp::IO_REQ_INVALID; + switch (_this->state) + { + case MRAM_STATE_HANDLE_TRIM: + for (int i=0; isize; i++) + { + _this->trace.msg(vp::trace::LEVEL_DEBUG, "Received trim data (value: 0x%x)\n", req->data[i]); + } + _this->event_enqueue(_this->trim_event, _this->get_cycle_count(125)); + break; + + case MRAM_STATE_HANDLE_PROGRAM: + { + for (int i=0; isize; i++) + { + _this->trace.msg(vp::trace::LEVEL_DEBUG, "Received program data (value: 0x%x, addr: 0x%x)\n", req->data[i], _this->pending_addr+i); + } + memcpy(&_this->mem_data[_this->pending_addr], req->data, req->size); + _this->pending_addr += req->size; + int64_t cycles; + if (_this->write_first) + { + _this->write_first = false; + cycles = 917; + } + else + { + int64_t period = _this->get_period(); + if (_this->div != 0) + { + period = period * _this->div; + } + cycles = (330000 + period - 1) / period + 13; + } + + _this->event_enqueue(_this->program_event, _this->get_cycle_count(cycles)); + break; + } + + case MRAM_STATE_HANDLE_READ: + _this->event_enqueue(_this->read_event, _this->get_cycle_count(1)); + break; } +} + - if (req->get_is_write()) +void mram::erase_chip() +{ + this->trace.msg(vp::trace::LEVEL_DEBUG, "Erasing chip\n"); + int64_t period = this->get_period(); + if (this->div != 0) { - memcpy((void *)&_this->mem_data[offset], (void *)data, size); + period = period * this->div; } - else + int64_t cycles = (45050823000 + period - 1) / period; + this->event_enqueue(this->erase_event, this->get_cycle_count(cycles)); +} + + +void mram::erase_sect(uint32_t addr) +{ + this->trace.msg(vp::trace::LEVEL_DEBUG, "Erasing sect (addr: 0x%x)\n", addr); + int64_t period = this->get_period(); + if (this->div != 0) + { + period = period * this->div; + } + int64_t time = 920 * period + 330000 * (SECTOR_SIZE/16); + int64_t cycles = (time + period - 1) / period; + this->event_enqueue(this->erase_event, this->get_cycle_count(cycles)); +} + + +void mram::erase_word(uint32_t addr, uint32_t size) +{ + this->trace.msg(vp::trace::LEVEL_DEBUG, "Erasing word (addr: 0x%x, size: 0x%x)\n", addr, size * MRAM_WORD_SIZE); + int64_t period = this->get_period(); + if (this->div != 0) + { + period = period * this->div; + } + int64_t time = 920 * period + (330000 + 8 * period) * (size + 1); + int64_t cycles = (time + period - 1) / period; + + this->event_enqueue(this->erase_event, this->get_cycle_count(cycles)); +} + + +void mram::handle_erase(void *__this, vp::clock_event *event) +{ + + mram *_this = (mram *)__this; + _this->in_req.sync(NULL); +} + + + +void mram::handle_trim(void *__this, vp::clock_event *event) +{ + mram *_this = (mram *)__this; + _this->in_data.sync(NULL); +} + + +void mram::handle_program(void *__this, vp::clock_event *event) +{ + mram *_this = (mram *)__this; + _this->in_data.sync(NULL); +} + + +void mram::handle_read(void *__this, vp::clock_event *event) +{ + + mram *_this = (mram *)__this; + + if (_this->pending_size > 0) { - memcpy((void *)data, (void *)&_this->mem_data[offset], size); + if (_this->pending_addr >= _this->size) + { + _this->trace.force_warning("Received out-of-bound request (addr: 0x%x, mram_size: 0x%x)\n", _this->pending_addr, _this->size); + } + else + { + int size = MRAM_WORD_SIZE; + uint32_t misaligned_offset = _this->pending_addr & (MRAM_WORD_SIZE - 1); + + if (misaligned_offset > 0) + { + size = MRAM_WORD_SIZE - misaligned_offset; + } + + if (size > _this->pending_size) + { + size = _this->pending_size; + } + + mram_data_t mram_data = { .data=&_this->mem_data[_this->pending_addr], .size=size }; + _this->trace.msg(vp::trace::LEVEL_DEBUG, "Sending line (addr: 0x%x, size: 0x%x, remaining_size: 0x%x)\n", _this->pending_addr, size, _this->pending_size); + _this->pending_size -= size; + _this->pending_addr += size; + _this->in_data.sync(&mram_data); + } } - } +} + +void mram::req_read() +{ + if (!(read_event->is_enqueued())) + { + this->event_enqueue(this->read_event, this->get_cycle_count(13)); + } +} + + +void mram::sync_req(void *__this, mram_req_t *req) +{ + mram *_this = (mram *)__this; + std::string req_name = "UNDEF"; - return vp::IO_REQ_OK; + switch (req->operation) + { + case MRAM_OP_TRIM_CFG: + req_name = "TRIM CFG"; + _this->state = MRAM_STATE_HANDLE_TRIM; + break; + + case MRAM_OP_NORMAL_TX: + req_name = "PROGRAM"; + _this->state = MRAM_STATE_HANDLE_PROGRAM; + _this->pending_addr = req->addr; + _this->write_first = true; + break; + + case MRAM_OP_ERASE_CHIP: + req_name = "ERASE CHIP"; + _this->erase_chip(); + break; + + case MRAM_OP_ERASE_SECT: + req_name = "ERASE SECT"; + _this->erase_sect(req->addr); + break; + + case MRAM_OP_ERASE_WORD: + req_name = "ERASE WORD"; + _this->erase_word(req->addr, req->size); + break; + + case MRAM_OP_READ_RX: + req_name = "READ"; + _this->state = MRAM_STATE_HANDLE_READ; + _this->pending_size = req->size; + _this->pending_addr = req->addr; + _this->req_read(); + break; + + case MRAM_OP_PWDN: req_name = "PWDN"; break; + case MRAM_OP_REF_LINE_P: req_name = "REF LINE P"; break; + case MRAM_OP_REF_LINE_AP: req_name = "REF LINE AP"; break; + } + + _this->trace.msg(vp::trace::LEVEL_DEBUG, "Received request (op: %s)\n", req_name.c_str()); } void mram::reset(bool active) { + if (active) + { + this->state = MRAM_STATE_IDLE; + } } int mram::build() { - traces.new_trace("trace", &trace, vp::DEBUG); + traces.new_trace("trace", &trace, vp::DEBUG); - in.set_req_meth(&mram::req); - new_slave_port("input", &in); + this->in_req.set_sync_meth(&mram::sync_req); + new_slave_port("input_req", &this->in_req); - in.set_itf(static_cast(this)); + this->in_data.set_sync_meth(&mram::sync_data); + new_slave_port("input_data", &this->in_data); - return 0; + this->in_conf.set_sync_meth(&mram::sync_conf); + new_slave_port("input_conf", &this->in_conf); + + this->erase_event = this->event_new(this, mram::handle_erase); + this->read_event = this->event_new(this, mram::handle_read); + this->trim_event = this->event_new(this, mram::handle_trim); + this->program_event = this->event_new(this, mram::handle_program); + this->div = 0; + + return 0; } void mram::start() { - this->size = get_config_int("size"); + this->size = get_config_int("size"); - trace.msg("Building MRAM (size: 0x%x)\n", this->size); + trace.msg("Building MRAM (size: 0x%x)\n", this->size); - this->mem_data = new uint8_t[this->size]; + this->mem_data = new uint8_t[this->size]; - // Initialize the mram with a special value to detect uninitialized - // variables - memset(mem_data, 0x57, size); - // Preload the mram - js::config *stim_file_conf = this->get_js_config()->get("stim_file"); - if (stim_file_conf != NULL) - { - string path = stim_file_conf->get_str(); - trace.msg("Preloading mram with stimuli file (path: %s)\n", path.c_str()); - - FILE *file = fopen(path.c_str(), "rb"); - if (file == NULL) + // Initialize the mram with a special value to detect uninitialized + // variables + memset(mem_data, 0x57, size); + // Preload the mram + js::config *stim_file_conf = this->get_js_config()->get("stim_file"); + if (stim_file_conf == NULL) { - this->trace.fatal("Unable to open stim file: %s, %s\n", path.c_str(), strerror(errno)); - return; + stim_file_conf = this->get_js_config()->get("content/image"); } - if (fread(this->mem_data, 1, size, file) == 0) + + if (stim_file_conf != NULL) { - this->trace.fatal("Failed to read stim file: %s, %s\n", path.c_str(), strerror(errno)); - return; + string path = stim_file_conf->get_str(); + trace.msg("Preloading mram with stimuli file (path: %s)\n", path.c_str()); + + FILE *file = fopen(path.c_str(), "rb"); + if (file == NULL) + { + this->trace.fatal("Unable to open stim file: %s, %s\n", path.c_str(), strerror(errno)); + return; + } + if (fread(this->mem_data, 1, size, file) == 0) + { + this->trace.fatal("Failed to read stim file: %s, %s\n", path.c_str(), strerror(errno)); + return; + } } - } } extern "C" vp::component *vp_constructor(js::config *config) { - return new mram(config); + return new mram(config); } diff --git a/gvsoc/gvsoc_gap/models/pulp/ne16/Makefile b/gvsoc/gvsoc_gap/models/pulp/ne16/Makefile index fcf872bfd..d77deb643 100644 --- a/gvsoc/gvsoc_gap/models/pulp/ne16/Makefile +++ b/gvsoc/gvsoc_gap/models/pulp/ne16/Makefile @@ -13,7 +13,7 @@ pulp/ne16/ne16_SRCS = pulp/ne16/src/ne16.cpp \ pulp/ne16/src/ne16_normquant.cpp \ pulp/ne16/src/ne16_index.cpp \ pulp/ne16/src/ne16_debug.cpp -pulp/ne16/ne16_CFLAGS = -Ipulp/ne16/include -DXTENSOR_USE_XSIMD -isystem $(XTENSOR_INCLUDE_DIR) -march=native -std=c++14 +pulp/ne16/ne16_CFLAGS = -Ipulp/ne16/include -DXTENSOR_USE_XSIMD -isystem $(XTENSOR_INCLUDE_DIR) -mtune=generic -std=c++14 else IMPLEMENTATIONS += pulp/ne16/ne16 pulp/ne16/ne16_SRCS = pulp/ne16/src/ne16_empty.cpp diff --git a/gvsoc/gvsoc_gap/models/pulp/ne16/src/ne16_load.cpp b/gvsoc/gvsoc_gap/models/pulp/ne16/src/ne16_load.cpp index 854df6b47..b0b87c96f 100644 --- a/gvsoc/gvsoc_gap/models/pulp/ne16/src/ne16_load.cpp +++ b/gvsoc/gvsoc_gap/models/pulp/ne16/src/ne16_load.cpp @@ -129,46 +129,100 @@ void Ne16::load_do_padding() { // not linear // | BBL | BB | BBR | BBRR | // +-------+-------+-------+-------+ - // FIXME: non0-padding values do not work in mode16 in the model, see similar bug in NE16 RTL + if(!this->mode16) { - // top-left - if(this->padding_left > 0 && this->j_major==0 || this->padding_top > 0 && this->i_major==0) { - xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim)) = this->padding_value; - } - - // top - if(this->padding_top > 0 && this->i_major==0) { - xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(this->padding_left, right_lim), xt::range(0, this->load_k_in_lim)) = this->padding_value; - } + // top-left + if(this->padding_left > 0 && this->j_major==0 || this->padding_top > 0 && this->i_major==0) { + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim)) = this->padding_value; + } - // top-right - if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1 || this->padding_top > 0 && this->i_major==0) && (right_lim <= this->w_size_in_hw)) { - xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(right_lim, w_size_in_hw), xt::range(0, this->load_k_in_lim)) = this->padding_value; - } - - // right - if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1) && (right_lim <= this->w_size_in_hw)) { - xt::view(this->x_buffer, xt::range(this->padding_top, bottom_lim), xt::range(right_lim, this->w_size_in_hw), xt::range(0, this->load_k_in_lim)) = this->padding_value; - } + // top + if(this->padding_top > 0 && this->i_major==0) { + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(this->padding_left, right_lim), xt::range(0, this->load_k_in_lim)) = this->padding_value; + } + + // top-right + if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1 || this->padding_top > 0 && this->i_major==0) && (right_lim <= this->w_size_in_hw)) { + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(right_lim, w_size_in_hw), xt::range(0, this->load_k_in_lim)) = this->padding_value; + } + + // right + if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1) && (right_lim <= this->w_size_in_hw)) { + xt::view(this->x_buffer, xt::range(this->padding_top, bottom_lim), xt::range(right_lim, this->w_size_in_hw), xt::range(0, this->load_k_in_lim)) = this->padding_value; + } + + // bottom-right + if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1 || this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (right_lim <= this->w_size_in_hw) && (bottom_lim <= this->h_size_in_hw)) { + xt::view(this->x_buffer, xt::range(bottom_lim, h_size_in_hw), xt::range(right_lim, w_size_in_hw), xt::range(0, this->load_k_in_lim)) = this->padding_value; + } + + // bottom + if((this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (bottom_lim <= this->h_size_in_hw)) { + xt::view(this->x_buffer, xt::range(bottom_lim, this->h_size_in_hw), xt::range(this->padding_left, right_lim), xt::range(0, this->load_k_in_lim)) = this->padding_value; + } + + // bottom-left + if((this->padding_left > 0 && this->j_major==0 || this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (bottom_lim <= this->h_size_in_hw)) { + xt::view(this->x_buffer, xt::range(bottom_lim, this->h_size_in_hw), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim)) = this->padding_value; + } + + // left + if(this->padding_left > 0 && this->j_major==0) { + xt::view(this->x_buffer, xt::range(this->padding_top, bottom_lim), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim)) = this->padding_value; + } - // bottom-right - if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1 || this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (right_lim <= this->w_size_in_hw) && (bottom_lim <= this->h_size_in_hw)) { - xt::view(this->x_buffer, xt::range(bottom_lim, h_size_in_hw), xt::range(right_lim, w_size_in_hw), xt::range(0, this->load_k_in_lim)) = this->padding_value; } + else { - // bottom - if((this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (bottom_lim <= this->h_size_in_hw)) { - xt::view(this->x_buffer, xt::range(bottom_lim, this->h_size_in_hw), xt::range(this->padding_left, right_lim), xt::range(0, this->load_k_in_lim)) = this->padding_value; - } + // top-left + if(this->padding_left > 0 && this->j_major==0 || this->padding_top > 0 && this->i_major==0) { + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim, 2)) = this->padding_value & 0xff; + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(0, this->padding_left), xt::range(1, this->load_k_in_lim+1, 2)) = this->padding_value >> 8; + } + + // top + if(this->padding_top > 0 && this->i_major==0) { + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(this->padding_left, right_lim), xt::range(0, this->load_k_in_lim, 2)) = this->padding_value & 0xff; + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(this->padding_left, right_lim), xt::range(1, this->load_k_in_lim+1, 2)) = this->padding_value >> 8; + } + + // top-right + if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1 || this->padding_top > 0 && this->i_major==0) && (right_lim <= this->w_size_in_hw)) { + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(right_lim, w_size_in_hw), xt::range(0, this->load_k_in_lim, 2)) = this->padding_value & 0xff; + xt::view(this->x_buffer, xt::range(0, this->padding_top), xt::range(right_lim, w_size_in_hw), xt::range(1, this->load_k_in_lim+1, 2)) = this->padding_value >> 8; + } + + // right + if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1) && (right_lim <= this->w_size_in_hw)) { + xt::view(this->x_buffer, xt::range(this->padding_top, bottom_lim), xt::range(right_lim, this->w_size_in_hw), xt::range(0, this->load_k_in_lim, 2)) = this->padding_value & 0xff; + xt::view(this->x_buffer, xt::range(this->padding_top, bottom_lim), xt::range(right_lim, this->w_size_in_hw), xt::range(1, this->load_k_in_lim+1, 2)) = this->padding_value >> 8; + } + + // bottom-right + if((this->padding_right > 0 && this->j_major==this->subtile_nb_wo-1 || this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (right_lim <= this->w_size_in_hw) && (bottom_lim <= this->h_size_in_hw)) { + xt::view(this->x_buffer, xt::range(bottom_lim, h_size_in_hw), xt::range(right_lim, w_size_in_hw), xt::range(0, this->load_k_in_lim, 2)) = this->padding_value & 0xff; + xt::view(this->x_buffer, xt::range(bottom_lim, h_size_in_hw), xt::range(right_lim, w_size_in_hw), xt::range(1, this->load_k_in_lim+1, 2)) = this->padding_value >> 8; + } + + // bottom + if((this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (bottom_lim <= this->h_size_in_hw)) { + xt::view(this->x_buffer, xt::range(bottom_lim, this->h_size_in_hw), xt::range(this->padding_left, right_lim), xt::range(0, this->load_k_in_lim, 2)) = this->padding_value & 0xff; + xt::view(this->x_buffer, xt::range(bottom_lim, this->h_size_in_hw), xt::range(this->padding_left, right_lim), xt::range(1, this->load_k_in_lim+1, 2)) = this->padding_value >> 8; + } + + // bottom-left + if((this->padding_left > 0 && this->j_major==0 || this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (bottom_lim <= this->h_size_in_hw)) { + xt::view(this->x_buffer, xt::range(bottom_lim, this->h_size_in_hw), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim, 2)) = this->padding_value & 0xff; + xt::view(this->x_buffer, xt::range(bottom_lim, this->h_size_in_hw), xt::range(0, this->padding_left), xt::range(1, this->load_k_in_lim+1, 2)) = this->padding_value >> 8; + } + + // left + if(this->padding_left > 0 && this->j_major==0) { + xt::view(this->x_buffer, xt::range(this->padding_top, bottom_lim), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim, 2)) = this->padding_value & 0xff; + xt::view(this->x_buffer, xt::range(this->padding_top, bottom_lim), xt::range(0, this->padding_left), xt::range(1, this->load_k_in_lim+1, 2)) = this->padding_value >> 8; + } - // bottom-left - if((this->padding_left > 0 && this->j_major==0 || this->padding_bottom > 0 && this->i_major==this->subtile_nb_ho-1) && (bottom_lim <= this->h_size_in_hw)) { - xt::view(this->x_buffer, xt::range(bottom_lim, this->h_size_in_hw), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim)) = this->padding_value; - } - // left - if(this->padding_left > 0 && this->j_major==0) { - xt::view(this->x_buffer, xt::range(this->padding_top, bottom_lim), xt::range(0, this->padding_left), xt::range(0, this->load_k_in_lim)) = this->padding_value; } } diff --git a/gvsoc/gvsoc_gap/models/pulp/ne16/src/ne16_streamout.cpp b/gvsoc/gvsoc_gap/models/pulp/ne16/src/ne16_streamout.cpp index 9fd0450c7..e99aef247 100644 --- a/gvsoc/gvsoc_gap/models/pulp/ne16/src/ne16_streamout.cpp +++ b/gvsoc/gvsoc_gap/models/pulp/ne16/src/ne16_streamout.cpp @@ -76,7 +76,7 @@ void Ne16::streamout_setup() { xt::view(this->accum, xt::all()) = xt::clip(this->accum, -128, 127); } } - else if(this->use_relu) { + else if(this->use_relu && this->output_quant) { xt::view(this->accum, xt::all()) = xt::clip(this->accum, 0, 0xffffffff); } if(this->accum_traces) { diff --git a/gvsoc/gvsoc_gap/models/pulp/pmu/CMakeLists.txt b/gvsoc/gvsoc_gap/models/pulp/pmu/CMakeLists.txt index de791eb47..ef051522e 100644 --- a/gvsoc/gvsoc_gap/models/pulp/pmu/CMakeLists.txt +++ b/gvsoc/gvsoc_gap/models/pulp/pmu/CMakeLists.txt @@ -1,20 +1,5 @@ set(PMU_PREFIX "pulp/pmu") -vp_model(NAME pmu_v1_impl - PREFIX ${PMU_PREFIX} - SOURCES "pmu_v1_impl.cpp" - ) - -vp_model(NAME pmu_v2_impl - PREFIX ${PMU_PREFIX} - SOURCES "pmu_v2_impl.cpp" - ) - -vp_model(NAME pmu_v3_impl - PREFIX ${PMU_PREFIX} - SOURCES "pmu_v3_impl.cpp" - ) - vp_model(NAME pmu_v4_impl PREFIX ${PMU_PREFIX} SOURCES "pmu_v4_impl.cpp" diff --git a/gvsoc/gvsoc_gap/models/pulp/soc_eu/CMakeLists.txt b/gvsoc/gvsoc_gap/models/pulp/soc_eu/CMakeLists.txt index f7bbc2138..b08fc6587 100644 --- a/gvsoc/gvsoc_gap/models/pulp/soc_eu/CMakeLists.txt +++ b/gvsoc/gvsoc_gap/models/pulp/soc_eu/CMakeLists.txt @@ -1,15 +1,5 @@ set(SOC_EU_PREFIX "pulp/soc_eu") -vp_model(NAME soc_eu_v1_impl - PREFIX ${SOC_EU_PREFIX} - SOURCES "soc_eu_v1_impl.cpp" - ) - -vp_model(NAME soc_eu_v2_impl - PREFIX ${SOC_EU_PREFIX} - SOURCES "soc_eu_v2_impl.cpp" - ) - vp_model(NAME soc_eu_v3_impl PREFIX ${SOC_EU_PREFIX} SOURCES "soc_eu_v3_impl.cpp" diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/CMakeLists.txt b/gvsoc/gvsoc_gap/models/pulp/udma/CMakeLists.txt index 1ed0f7d38..aa0c8ab27 100644 --- a/gvsoc/gvsoc_gap/models/pulp/udma/CMakeLists.txt +++ b/gvsoc/gvsoc_gap/models/pulp/udma/CMakeLists.txt @@ -1,3 +1,6 @@ +if("${CONFIG_GVSOC_SKIP_UDMA_BUILD}" EQUAL "1") + message(NOTICE "GVSOC SKIP UDMA BUILD") +else() if("${TARGET_CHIP}" STREQUAL "GAP8") message(FATAL_ERROR "GAP8 compilation is not supported by GVSOC") elseif("${TARGET_CHIP}" STREQUAL "GAP8_V2") @@ -14,10 +17,12 @@ elseif("${TARGET_CHIP}" STREQUAL "GAP9_V2") set(UDMA_I2C_VERSION "4") set(UDMA_I2S_VERSION "3") set(UDMA_HYPER_VERSION "3") + set(UDMA_MRAM_VERSION "2") set(UDMA_SFU_VERSION "1") set(UDMA_SOURCES "udma_v4_impl.cpp" + "dc_fifo.cpp" "udma_v4_addrgens.cpp" "udma_v4_rx_channels.cpp" "udma_v4_tx_channels.cpp" @@ -171,4 +176,19 @@ if("${UDMA_HYPER_VERSION}" EQUAL "3") -DHAS_HYPER ) endif() +endif() + + +if("${UDMA_MRAM_VERSION}" EQUAL "2") + vp_model_sources( + NAME udma_model + SOURCES + "mram/udma_mram_v2.cpp" + ) + vp_model_compile_definitions( + NAME udma_model + DEFINITIONS + -DHAS_MRAM + ) +endif() diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/Makefile b/gvsoc/gvsoc_gap/models/pulp/udma/Makefile index 3f4875ae5..9fb6c5e0a 100644 --- a/gvsoc/gvsoc_gap/models/pulp/udma/Makefile +++ b/gvsoc/gvsoc_gap/models/pulp/udma/Makefile @@ -79,12 +79,6 @@ pulp/udma/udma_v$(udma/version)_$(pulp_chip_family)_impl_SRCS += pulp/udma/i2s/u endif - -ifeq '$(udma/mram/version)' '1' -pulp/udma/udma_v$(udma/version)_$(pulp_chip_family)_impl_CFLAGS += -DHAS_MRAM -pulp/udma/udma_v$(udma/version)_$(pulp_chip_family)_impl_SRCS += pulp/udma/mram/udma_mram_v1.cpp -endif - ifeq '$(udma/tcdm/version)' '1' pulp/udma/udma_v$(udma/version)_$(pulp_chip_family)_impl_CFLAGS += -DHAS_TCDM pulp/udma/udma_v$(udma/version)_$(pulp_chip_family)_impl_SRCS += pulp/udma/tcdm/udma_tcdm_v1.cpp diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/dc_fifo.cpp b/gvsoc/gvsoc_gap/models/pulp/udma/dc_fifo.cpp new file mode 100644 index 000000000..a03f54978 --- /dev/null +++ b/gvsoc/gvsoc_gap/models/pulp/udma/dc_fifo.cpp @@ -0,0 +1,211 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#include "udma_impl.hpp" +#include "dc_fifo.hpp" +#include "archi/utils.h" + + +Dc_fifo::Dc_fifo(int size, vp::component *top, std::string trace_path, + vp::clock_engine *snd_clock, vp::clock_engine *rcv_clock, + vp::clock_event *rcv_event, + vp::clock_event *unstall_event) +{ + this->top = top; + this->size = size; + this->rcv_fsm_event = top->event_new(this, Dc_fifo::handle_rcv_fsm); + this->snd_fsm_event = top->event_new(this, Dc_fifo::handle_snd_fsm); + this->snd_stall_event = top->event_new(this, Dc_fifo::handle_snd_stall); + this->snd_clock = snd_clock; + this->rcv_clock = rcv_clock; + this->rcv_event = rcv_event; + this->unstall_event = unstall_event; + + top->traces.new_trace(trace_path + "/dc_fifo", &this->trace, vp::DEBUG); + + if (size < 4) + { + this->trace.fatal("DC FIFO size should be at least 4\n"); + } +} + + +void Dc_fifo::reset(bool active) +{ + this->nb_elems = 0; + this->snd_div = 0; + this->stalled = false; + this->stalled_sync = false; + + this->rcv_clock->cancel(rcv_fsm_event); + this->snd_clock->cancel(snd_fsm_event); + this->snd_clock->cancel(snd_stall_event); + this->rcv_clock->cancel(rcv_event); + this->snd_clock->cancel(unstall_event); +} + + +int64_t Dc_fifo::get_snd_cycle_count(int64_t cycles) +{ + if (this->snd_div == 0) + { + return cycles; + } + else + { + return cycles * this->snd_div; + } +} + + +void Dc_fifo::push(uint8_t *data, int size) +{ + this->rcv_data_queue.push(data); + this->rcv_size_queue.push(size); + + this->trace.msg(vp::trace::LEVEL_DEBUG, "Pushing data to DC fifo (data: %p, size: %d, nb_elems: %d)\n", data, size, this->nb_elems); + + // Since the FIFO gets full when there is only 3 elements, check if we need to trigger the + // full signal resynchronization. + if (this->nb_elems == this->size - 4) + { + this->nb_elems_check = this->snd_clock->get_cycles(); + } + this->nb_elems++; + + this->check_state(); +} + + +uint8_t *Dc_fifo::pop(int *size) +{ + uint8_t *result = this->rcv_data_queue.front(); + *size = this->rcv_size_queue.front(); + this->rcv_data_queue.pop(); + this->rcv_size_queue.pop(); + + this->trace.msg(vp::trace::LEVEL_DEBUG, "Popping data from DC fifo (data: %p, size: %d, nb_elems: %d)\n", result, *size, this->nb_elems); + + this->nb_elems--; + + // Check if the FIFO can be unstalled. + // This happens when it is stalled and becomes empty + if (!this->snd_stall_event->is_enqueued() && this->stalled && this->nb_elems == 0) + { + // In this case we trigger the unstall signal resynchronization since it takes some time + // to propagate (1 clock cycle on sender side) + this->snd_clock->enqueue_ext(this->snd_stall_event, this->get_snd_cycle_count(1)); + } + + this->check_state(); + + return result; +} + + +bool Dc_fifo::is_full() +{ + return this->nb_elems >= this->size || this->stalled; +} + + +bool Dc_fifo::is_empty() +{ + return this->rcv_data_queue.empty(); +} + + + +void Dc_fifo::check_state() +{ + // To simplify we schedule receiver and sender FSM at every cycle as soon as there is + // at least one element in the FIFO + if (!this->rcv_fsm_event->is_enqueued() && this->nb_elems > 0) + { + this->rcv_clock->enqueue_ext(this->rcv_fsm_event, 1); + } + + if (!this->snd_fsm_event->is_enqueued() && this->nb_elems > 0) + { + this->snd_clock->enqueue_ext(this->snd_fsm_event, this->get_snd_cycle_count(1)); + } +} + + +void Dc_fifo::handle_rcv_fsm(void *__this, vp::clock_event *event) +{ + Dc_fifo *_this = (Dc_fifo *)__this; + _this->trace.msg(vp::trace::LEVEL_TRACE, "Receiver FSM handler\n"); + + // In the receiver FSM, we just have to check if we should scheduler a pop + // if the FIFO is not empty. + // This takes 4 cycles for a data to get ready for receiver once it is pushed. + if (!_this->rcv_event->is_enqueued() && !_this->rcv_data_queue.empty()) + { + _this->trace.msg(vp::trace::LEVEL_TRACE, "Enqueue pop\n"); + _this->rcv_clock->enqueue_ext(_this->rcv_event, 4); + } +} + + +void Dc_fifo::handle_snd_fsm(void *__this, vp::clock_event *event) +{ + Dc_fifo *_this = (Dc_fifo *)__this; + + // In the sender FSM, we just need to care about the handling of the stall signal. + + // The stall signal is resynchronized and take 2 cycles to take effect + // This one is the intermediate once + if (_this->stalled_sync) + { + // If true, stall the fifo + _this->stalled_sync = false; + _this->stalled = true; + _this->trace.msg(vp::trace::LEVEL_DEBUG, "Stalling fifo\n"); + + // Be carefull, since it takes some time to the stall signal to propagate, + // The FIFO might have become empty since it was triggered. + // In this case, immediatly unstall the FIFO (which takes 1 cycle) + if (!_this->snd_stall_event->is_enqueued() && _this->nb_elems == 0) + { + _this->snd_clock->enqueue_ext(_this->snd_stall_event, _this->get_snd_cycle_count(1)); + } + } + + // If we reach the number of cycles where the check of the number of elemets should be done, + // Check if we have more than 3 free slots, and if no, trigger the stall signal resync. + if (_this->nb_elems_check < _this->snd_clock->get_cycles() && _this->size - _this->nb_elems <= 3 && !_this->stalled && !_this->stalled_sync) + { + _this->trace.msg(vp::trace::LEVEL_DEBUG, "Fifo stall sync\n"); + _this->stalled_sync = true; + } + + _this->check_state(); +} + + +void Dc_fifo::handle_snd_stall(void *__this, vp::clock_event *event) +{ + Dc_fifo *_this = (Dc_fifo *)__this; + // Just enqueue the sender unstall event + _this->stalled = false; + _this->snd_clock->enqueue_ext(_this->unstall_event, _this->get_snd_cycle_count(1)); +} diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/dc_fifo.hpp b/gvsoc/gvsoc_gap/models/pulp/udma/dc_fifo.hpp new file mode 100644 index 000000000..7619ce4c7 --- /dev/null +++ b/gvsoc/gvsoc_gap/models/pulp/udma/dc_fifo.hpp @@ -0,0 +1,161 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#pragma once + + +/* + * Class used to model a DC fifo + * + * This class can be used to model a DC fifo, to exchange data between 2 clock domains. + * In particular, it models the timing behavior of the fifo due to the stages required + * for the synchronization of the 2 clock domains. + * + * Timing behavior + * The RTL of the fifo is full as soon as there is not more than 3 free elements, due + * to the synhcronization stages. However the full signal needs to bre resynchronized + * by the 2 cycles, so the sender see the fifo full actually 2 cycles after. + * If we take the extreme case where the fifo size if 4 (which is the minimal), + * when a data is pushed, if the data is not read during the same cycle, the fifo is + * considered full, even though the sender can still push 2 elemets, due to the resynchronization. + * Once the fifo is full, the sender can not push anymore until it is unstalled. The + * receiver takes 5 cycles (of the receiver domain) for the first pop and can then do a pop + * every 4 cycles. Once all the data has been popped, the fifo is considered unstalled at the first + * rising edge of the sender domain, and the sender can push a new data one cycle after. + * This means the fifo has a good behavior when receiver frequency is high enough to sustain the + * pop during the same cycle as the push (which is a ratio of x6), but bandwidth quickly decreases + * as soon as there is any stall, since the fifo needs to be empty before the sender can + * continue. + */ +class Dc_fifo +{ +public: + /** + * @brief Constructor + * + * @param size Size of the FIFO, should be at least 4. + * @param top Pointer to the component containing the FIFO. + * @param trace_path Prefix for traces declared by the FIFO. + * @param snd_clock Clock domain of the sender side. + * @param rcv_clock Clock domain of the receiver side. + * @param rcv_event Receiver event which must be enqueued when a new data is available. + * @param unstall_event Sender event which must be enqueued when the FIFO becomes available + * after it has been stalled because it was full. + */ + Dc_fifo(int size, vp::component *top, std::string trace_path, vp::clock_engine *snd_clock, + vp::clock_engine *rcv_clock, vp::clock_event *rcv_event, vp::clock_event *unstall_event); + + /** + * @brief Reset the FIFO. + * + * @param active True if the reset is active. + */ + void reset(bool active); + + /** + * @brief Push a data to the FIFO. + * + * The data is enqueued to the FIFO and made available to the receiver side, afer some time + * which depends on the ratio between the frequency of the receiver domain and the one + * of the sender domain. + * The FIFO must not be full when the data is pushed. + * Once the data is available on receiver side, the receiver event (rcv_event) will be + * executer. + * + * @param data Data to be pushed to the FIFO. + * @param size Size of the data to be pushed. + */ + void push(uint8_t *data, int size); + + /** + * @brief Pop a data from the FIFO. + * + * The data is removed from the FIFO and returned. + * At least one data must be available when this method is called. + * + * @param size Size of the data popped is returned here. + * + * @return Return the data popped from the FIFO. + */ + uint8_t *pop(int *size); + + /** + * @brief Tell if the FIFO is full. + * + * This method should be called by the sender to know if it can push a data. + * + * @return True if the FIFO is full otherwise false. + */ + bool is_full(); + + /** + * @brief Tell if the FIFO is empty. + * + * This method can be called by the receiver to know if it can pop a data. + * + * @return True if the FIFO is empty otherwise false. + */ + bool is_empty(); + + /** + * @brief Set the sender clock domain divider + * + * This can be used to set a divider which is applied to the number of cycles used + * to enqueue events to model the timing behavior of the FIFO. + * This is useful when the clock domain frequency does not reflect the real frequency but a + * multiple divided by the specified value. + * + * @param div divider value of the sender clock domain. + */ + void set_snd_div(int div) { this->snd_div = div; } + +private: + // Sender FSM + static void handle_snd_fsm(void *__this, vp::clock_event *event); + // Receiver FSM + static void handle_rcv_fsm(void *__this, vp::clock_event *event); + // Handler called when the FIFO is unstalled, to wakeup the sender + static void handle_snd_stall(void *__this, vp::clock_event *event); + // Called everytime something is changed to check what should be done next. + void check_state(); + // Return the real number of cycles, after the divider is applied + int64_t get_snd_cycle_count(int64_t cycles); + + vp::component *top; // Pointer to top component containing the FIFO + std::queue rcv_data_queue; // Queue for storing data + std::queue rcv_size_queue; // Queue for storing data size + int size; // Number of elements of the FIFO + int nb_elems; // Current number of data pushed to the FIFO + int64_t nb_elems_check; // Absolute cycle count where the number of elements + // should be checked to see of the FIFO is fulled + vp::clock_event *rcv_fsm_event; // Event for receiver FSM + vp::clock_event *snd_fsm_event; // Event for sender FSM + vp::clock_engine *snd_clock; // Sender clock domain + vp::clock_event *snd_stall_event; // Event used to unstall the sender + int snd_div; // Sender clock domain divider + vp::clock_engine *rcv_clock; // Receiver clock domain + vp::clock_event *rcv_event; // Receiver event called when a data is ready to be popped + vp::clock_event *unstall_event; // Sender event called when the FIFO is unstalled and the sender + // can push again data. + vp::trace trace; // DC FIFO trace. + bool stalled; // True when the FIFO is stalled and data can not be pushed anymore + bool stalled_sync; // Intermediate value for synchronizing the stall signal. +}; diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/hyper/udma_hyper_v3.cpp b/gvsoc/gvsoc_gap/models/pulp/udma/hyper/udma_hyper_v3.cpp index bca128335..135ddc6cb 100644 --- a/gvsoc/gvsoc_gap/models/pulp/udma/hyper/udma_hyper_v3.cpp +++ b/gvsoc/gvsoc_gap/models/pulp/udma/hyper/udma_hyper_v3.cpp @@ -629,7 +629,8 @@ void Hyper_periph::handle_push_data(void *__this, vp::clock_event *event) { Hyper_read_request *req = _this->read_req_waiting->get_first(); int iter_size = size > req->requested_size ? req->requested_size : size; - req->data |= (data) << (req->size * 8); + req->data = (req->data & ((1 << (req->size * 8)) - 1)) | (data << (req->size * 8)); + req->size += iter_size; req->requested_size -= iter_size; size -= iter_size; diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/mram/udma_mram_v2.cpp b/gvsoc/gvsoc_gap/models/pulp/udma/mram/udma_mram_v2.cpp new file mode 100644 index 000000000..d8d98a74c --- /dev/null +++ b/gvsoc/gvsoc_gap/models/pulp/udma/mram/udma_mram_v2.cpp @@ -0,0 +1,571 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#include "udma_mram_v2.hpp" +#include "../udma_impl.hpp" +#include "archi/utils.h" + + +using namespace std::placeholders; + + +Mram_periph::Mram_periph(udma *top, int id, int itf_id) : Udma_periph(top, id) +{ + std::string itf_name = "mram" + std::to_string(itf_id); + + top->traces.new_trace(itf_name, &trace, vp::DEBUG); + this->itf_name = itf_name; + + this->rx_channel = new Mram_rx_channel(top, this, itf_name + "_rx"); + this->tx_channel = new Mram_tx_channel(top, this, itf_name + "_tx"); + + this->out_req.set_sync_meth(&this->sync_req); + top->new_master_port(this, itf_name + "_req", &this->out_req); + this->out_data.set_sync_meth(&this->sync_data); + top->new_master_port(this, itf_name + "_data", &this->out_data); + top->new_master_port(this, itf_name + "_conf", &this->out_conf); + + this->event = top->event_new(this, Mram_periph::handle_pending_operation); + this->read_end_event = top->event_new(this, Mram_periph::handle_read_end); + this->read_2d_event = top->event_new(this, Mram_periph::handle_read_2d); + + this->regmap.build(top, &this->trace, itf_name); + + this->regmap.clk_div.register_callback(std::bind(&Mram_periph::clk_div_req, this, _1, _2, _3, _4)); + this->regmap.trans_cfg.register_callback(std::bind(&Mram_periph::trans_cfg_req, this, _1, _2, _3, _4)); + this->regmap.tx_dest.register_callback(std::bind(&Mram_periph::tx_dest_req, this, _1, _2, _3, _4)); + this->regmap.rx_dest.register_callback(std::bind(&Mram_periph::rx_dest_req, this, _1, _2, _3, _4)); + + js::config *config = this->top->get_js_config()->get("mram/events"); + this->erase_event = config->get("erase")->get_elem(itf_id)->get_int(); + this->tx_event = config->get("tx")->get_elem(itf_id)->get_int(); + this->trim_event = config->get("trim")->get_elem(itf_id)->get_int(); + this->rx_event = config->get("rx")->get_elem(itf_id)->get_int(); + + this->read_event = this->top->event_new(this, Mram_periph::handle_read_req); +} + + +int64_t Mram_periph::get_mram_cycle_count(int64_t cycles) +{ + if (this->regmap.clk_div.data_get() == 0) + { + return cycles; + } + else + { + return cycles * this->regmap.clk_div.data_get(); + } +} + + +void Mram_periph::start() +{ + this->rcv_event = this->top->event_new(this, Mram_periph::handle_rcv_data); + this->read_fifo = new Dc_fifo( + 4, this->top, this->itf_name, + this->top->get_periph_clock(), + this->top->get_clock(), this->rcv_event, + this->top->event_new(this, Mram_periph::handle_dc_fifo_unstall) + ); +} + + +// Called by the mram to acknoledge the erase +void Mram_periph::sync_req(void *__this, mram_req_t *req) +{ + Mram_periph *_this = (Mram_periph *)__this; + _this->top->trigger_event(_this->erase_event); + _this->state = MRAM_STATE_IDLE; +} + + +// Called by the mram to acknoledge data sent to mram or to receive data read from mram +void Mram_periph::sync_data(void *__this, mram_data_t *req) +{ + Mram_periph *_this = (Mram_periph *)__this; + + if (_this->state == MRAM_STATE_HANDLE_TRIM_ONGOING) + { + // For trim, we either go on with more data or trigger soc event + _this->pending_transfer_size -= _this->req_size; + if (_this->pending_transfer_size == 0) + { + _this->top->trigger_event(_this->trim_event); + _this->state = MRAM_STATE_IDLE; + } + else + { + _this->handle_trim(); + } + } + else if (_this->state == MRAM_STATE_HANDLE_PROGRAM_ONGOING) + { + // For program, we either go on with more data or trigger soc event + _this->pending_transfer_size -= _this->req_size; + if (_this->pending_transfer_size == 0) + { + _this->top->trigger_event(_this->tx_event); + _this->state = MRAM_STATE_IDLE; + } + else + { + _this->handle_program(); + } + } + else + { + // For read, see if we can push the data, otherwise just put it on hold + if (!_this->read_fifo->is_full()) + { + _this->read_fifo->push(req->data, req->size); + _this->out_data.sync(NULL); + } + else + { + _this->stalled = true; + _this->stalled_data = req->data; + _this->stalled_size = req->size; + } + } +} + + +void Mram_periph::clk_div_req(uint64_t reg_offset, int size, uint8_t *value, bool is_write) +{ + this->regmap.clk_div.update(reg_offset, size, value, is_write); + mram_conf_t conf = { .div=this->regmap.clk_div.data_get() }; + this->out_conf.sync(&conf); + this->read_fifo->set_snd_div(this->regmap.clk_div.data_get()); +} + + +void Mram_periph::trans_cfg_req(uint64_t reg_offset, int size, uint8_t *value, bool is_write) +{ + if (is_write && this->state == MRAM_STATE_IDLE) + { + this->regmap.trans_cfg.update(reg_offset, size, value, is_write); + + this->state = MRAM_STATE_HANDLE_OPERATION; + + this->check_state(); + } +} + + +void Mram_periph::tx_dest_req(uint64_t reg_offset, int size, uint8_t *value, bool is_write) +{ + this->regmap.tx_dest.update(reg_offset, size, value, is_write); + + if (is_write) + { + this->top->channel_register((*(uint32_t *)value) & 0xFF, this->tx_channel); + } +} + + +void Mram_periph::rx_dest_req(uint64_t reg_offset, int size, uint8_t *value, bool is_write) +{ + this->regmap.rx_dest.update(reg_offset, size, value, is_write); + + if (is_write) + { + this->top->channel_register((*(uint32_t *)value) & 0xFF, this->rx_channel); + } +} + + +// Called to setut a new transfer (1d or 2d line) to be handled +void Mram_periph::enqueue_read_req() +{ + mram_req_t req = { .operation=(mram_op_e)this->regmap.mode.operation_get() }; + + if (this->regmap.enable_2d.enable_get()) + { + this->read_pending_length = this->regmap.line_2d.get(); + if (this->read_pending_length > this->pending_transfer_size) + { + this->read_pending_length = this->pending_transfer_size; + } + } + else + { + this->read_pending_length = this->regmap.trans_size.get(); + } + + this->pending_trans_size = this->read_pending_length; + this->state = MRAM_STATE_SEND_ADDR; + this->next_state = MRAM_STATE_HANDLE_READ; + + this->check_state(); +} + + +// Called when a read transfer is starting +void Mram_periph::handle_read_req(void *__this, vp::clock_event *event) +{ + Mram_periph *_this = (Mram_periph *)__this; + _this->enqueue_read_req(); +} + + +// Called when there is data in the DC fifo to be popped +void Mram_periph::handle_rcv_data(void *__this, vp::clock_event *event) +{ + Mram_periph *_this = (Mram_periph *)__this; + + int size; + + // Check if data is available in the fifo + if (_this->read_pending_size == 0 && !_this->read_fifo->is_empty()) + { + // If so, pop it, and store it to the line data so that we can stream it to the udma core + uint8_t *data = _this->read_fifo->pop(&size); + + memcpy(_this->line_data, data, size); + _this->read_pending_size = size; + _this->read_pending_data = _this->line_data; + _this->check_state(); + } +} + + +// Called when the DC fifo gets unstalled to continue pushing data +void Mram_periph::handle_dc_fifo_unstall(void *__this, vp::clock_event *event) +{ + Mram_periph *_this = (Mram_periph *)__this; + if (_this->stalled) + { + _this->trace.msg(vp::trace::LEVEL_TRACE, "Unstalling\n"); + _this->stalled = false; + _this->read_fifo->push(_this->stalled_data, _this->stalled_size); + _this->out_data.sync(NULL); + } +} + + +// Called when a read transfer is done to trigger the soc event +void Mram_periph::handle_read_end(void *__this, vp::clock_event *event) +{ + Mram_periph *_this = (Mram_periph *)__this; + _this->top->trigger_event(_this->rx_event); + _this->state = MRAM_STATE_IDLE; + _this->check_state(); +} + + +// Called when a 2d line is done to start the next line +void Mram_periph::handle_read_2d(void *__this, vp::clock_event *event) +{ + Mram_periph *_this = (Mram_periph *)__this; + _this->pending_addr += _this->regmap.stride_2d.get(); + _this->enqueue_read_req(); +} + + +// FSM handler called when there is a pending operation to be handled +void Mram_periph::handle_pending_operation(void *__this, vp::clock_event *event) +{ + Mram_periph *_this = (Mram_periph *)__this; + Udma_channel *channel = _this->regmap.trans_cfg.rxtx_get() ? (Udma_channel *)_this->rx_channel : (Udma_channel *)_this->tx_channel; + uint32_t value; + + switch (_this->state) + { + case MRAM_STATE_HANDLE_OPERATION: + { + // A new operation has been pushed and needs to be handled + mram_req_t req = { .operation=(mram_op_e)_this->regmap.mode.operation_get() }; + + switch (req.operation) + { + case MRAM_OP_NORMAL_TX: + case MRAM_OP_TRIM_CFG: + { + // Operations requiring to load data from L2 (tx and trim) + // Initialize the transfer and let the FSM setup the udma core channel + req.addr = _this->regmap.ext_addr.get(); + req.size = _this->regmap.trans_size.get(); + _this->out_req.sync(&req); + _this->pending_transfer_size = _this->regmap.trans_size.get(); + _this->pending_trans_addr = _this->regmap.trans_addr.get(); + _this->pending_trans_size = _this->regmap.trans_size.get(); + _this->state = MRAM_STATE_SEND_ADDR; + _this->next_state = req.operation == MRAM_OP_TRIM_CFG ? MRAM_STATE_HANDLE_TRIM : MRAM_STATE_HANDLE_PROGRAM; + break; + } + + case MRAM_OP_READ_RX: + { + // Read operation + // Initialize the transfer and enqueue an event to delay the start of the mram operation + _this->pending_trans_addr = _this->regmap.trans_addr.get(); + _this->pending_addr = _this->regmap.ext_addr.get(); + _this->pending_transfer_size = _this->regmap.trans_size.get(); + _this->state = MRAM_STATE_PENDING_OP; + _this->top->event_enqueue(_this->read_event, _this->regmap.enable_2d.enable_get() ? 20 : 1); + break; + } + + case MRAM_OP_ERASE_CHIP: + case MRAM_OP_ERASE_SECT: + case MRAM_OP_ERASE_WORD: + { + // Erase operation, just forward to mram + mram_req_t req = { + .operation=(mram_op_e)_this->regmap.mode.operation_get(), + .addr=_this->regmap.erase_addr.get(), + .size=_this->regmap.erase_size.get() + }; + _this->out_req.sync(&req); + _this->state = MRAM_STATE_WAIT_SYNC_BACK; + break; + } + + default: + _this->next_state = MRAM_STATE_IDLE; + break; + } + + break; + } + + case MRAM_STATE_HANDLE_READ: + { + // UDMA core has just been setup, now send the request to mram, the data sync handler + // will do the rest + mram_req_t req = { .operation=(mram_op_e)_this->regmap.mode.operation_get() }; + req.addr = _this->pending_addr; + req.size = _this->read_pending_length; + _this->state = MRAM_STATE_PENDING_OP; + _this->out_req.sync(&req); + break; + } + + case MRAM_STATE_SEND_ADDR: + // UDMA core channel setup, addr part + value = _this->pending_trans_addr; + channel->access(UDMA_CORE_LIN_ADDRGEN_CFG_SA_BUF0_OFFSET, 4, (uint8_t *)&value, true); + _this->state = MRAM_STATE_SEND_SIZE; + break; + + case MRAM_STATE_SEND_SIZE: + // UDMA core channel setup, size part + value = _this->pending_trans_size; + channel->access(UDMA_CORE_LIN_ADDRGEN_CFG_SIZE_OFFSET, 4, (uint8_t *)&value, true); + _this->state = MRAM_STATE_SEND_CFG; + break; + + case MRAM_STATE_SEND_CFG: + // UDMA core channel setup, config part + value = 1<access(UDMA_CORE_LIN_ADDRGEN_CFG_CTRL_OFFSET, 4, (uint8_t *)&value, true); + _this->state = _this->next_state; + break; + + case MRAM_STATE_HANDLE_TRIM: + // UDMA core channel has been setup, now start sending to mram + _this->handle_trim(); + _this->state = MRAM_STATE_HANDLE_TRIM_ONGOING; + break; + + case MRAM_STATE_HANDLE_PROGRAM: + // UDMA core channel has been setup, now start sending to mram + _this->handle_program(); + _this->state = MRAM_STATE_HANDLE_PROGRAM_ONGOING; + break; + } + + // Check if a read operation is on-going and data needs to be sent to udma core + if (_this->read_pending_size > 0 && _this->rx_channel->is_ready()) + { + // Take the max between udma core word (4 bytes), remaining trnasfer size + // and line length + int size = 4; + if (size > _this->read_pending_length) + { + size = _this->read_pending_length; + } + if (size > _this->read_pending_size) + { + size = _this->read_pending_size; + } + + // Push the data to UDMA + _this->rx_channel->push_data(_this->read_pending_data, size); + + // And update the transfer + _this->read_pending_size -= size; + _this->read_pending_data += size; + _this->read_pending_length -= size; + _this->pending_transfer_size -= size; + _this->pending_trans_addr += size; + + // If we are done with the current data line, see if we can get another data from dc fifo + if (_this->read_pending_size == 0 && !_this->rcv_event->is_enqueued()) + { + _this->rcv_event->exec(); + } + + // If transfer is done, schedule the soc event trigger + if (_this->pending_transfer_size == 0) + { + _this->top->event_enqueue(_this->read_end_event, _this->get_mram_cycle_count(7)); + } + // If just a line of the 2d transfer is done, schedule the next line + else if (_this->read_pending_length == 0) + { + _this->top->event_enqueue(_this->read_2d_event, _this->get_mram_cycle_count(8)); + } + } + + _this->check_state(); +} + + +// Called to get data from the udma core to be sent to trim config +void Mram_periph::handle_trim() +{ + // Take the max size between max size (4 bytes for trim) and remaining size + int size = this->pending_transfer_size; + if (size > 4) + { + size = 4; + } + + // And get the data from L2 + this->tx_channel->get_data(size); +} + + +// Called to get data from the udma core to be written to mram +void Mram_periph::handle_program() +{ + // Take the max size between max size and remaining size + int size = this->pending_transfer_size; + if (size > MRAM_LINE_SIZE) + { + size = MRAM_LINE_SIZE; + } + + // Init all required fields to handle the write to mram once the data is read from l2 + this->req_size = size; + this->read_pending_data = this->line_data; + this->write_pending_size = size; + + // And get the data from L2 + this->tx_channel->get_data(size); +} + + + +void Mram_periph::check_state() +{ + // Check if there is any operation requiring the FSM handler to be called + if (!(this->event->is_enqueued())) + { + if (this->state != MRAM_STATE_PENDING_OP && + this->state != MRAM_STATE_HANDLE_TRIM_ONGOING && + this->state != MRAM_STATE_HANDLE_PROGRAM_ONGOING && + this->state != MRAM_STATE_IDLE || + (this->read_pending_size > 0 && this->rx_channel->is_ready())) + { + this->top->event_enqueue(this->event, 1); + } + } +} + + +vp::io_req_status_e Mram_periph::custom_req(vp::io_req *req, uint64_t offset) +{ + this->regmap.access(offset, req->get_size(), req->get_data(), req->get_is_write()); + + return vp::IO_REQ_OK; +} + + +void Mram_periph::reset(bool active) +{ + Udma_periph::reset(active); + + this->read_fifo->reset(active); + + if (!active) + { + this->pending_transfer_size = 0; + this->state = MRAM_STATE_IDLE; + this->read_pending_size = 0; + this->stalled = false; + this->write_pending_size = 0; + this->read_pending_size = 0; + } +} + + +// Called by the udma core to push data to mram +void Mram_periph::push_data(uint8_t *data, int size) +{ + switch (this->state) + { + case MRAM_STATE_HANDLE_TRIM_ONGOING: + { + // For trim config, the mram can accept data of any size, so just forward + // the data to the mram + mram_data_t mram_data = {.data=data, .size=size}; + this->req_size = size; + this->out_data.sync(&mram_data); + break; + } + + case MRAM_STATE_HANDLE_PROGRAM_ONGOING: + { + // For a program operation, data must be sent line by line to the mram. + // First gather the data into the line buffer + memcpy(this->read_pending_data, data, size); + this->read_pending_data += size; + this->write_pending_size -= size; + + // And once the line has been buffered, sent it to the mram + if (this->write_pending_size == 0) + { + mram_data_t mram_data = {.data=this->line_data, .size=this->req_size}; + this->out_data.sync(&mram_data); + } + break; + } + } +} + +Mram_tx_channel::Mram_tx_channel(udma *top, Mram_periph *periph, string name) + : Udma_tx_channel(top, name), periph(periph) +{ +} + + +void Mram_tx_channel::push_data(uint8_t *data, int size) +{ + this->periph->push_data(data, size); +} + + +Mram_rx_channel::Mram_rx_channel(udma *top, Mram_periph *periph, string name) : Udma_rx_channel(top, name), periph(periph) +{ +} diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/mram/udma_mram_v2.hpp b/gvsoc/gvsoc_gap/models/pulp/udma/mram/udma_mram_v2.hpp new file mode 100644 index 000000000..e14006e4e --- /dev/null +++ b/gvsoc/gvsoc_gap/models/pulp/udma/mram/udma_mram_v2.hpp @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies, SAS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/* + * Authors: Germain Haugou, GreenWaves Technologies (germain.haugou@greenwaves-technologies.com) + */ + +#ifndef __PULP_UDMA_UDMA_MRAM_V3_IMPL_HPP__ +#define __PULP_UDMA_UDMA_MRAM_V3_IMPL_HPP__ + +#include +#include "../udma_impl.hpp" +#include "../dc_fifo.hpp" +#include +#include +#include +#include +#include "pulp/mram/mram.hpp" +#include +#include +#include + + +#define MRAM_LINE_SIZE 16 + + +/* + * States of the UDMA MRAM peripheral + */ +typedef enum +{ + MRAM_STATE_IDLE, // No activity + MRAM_STATE_HANDLE_OPERATION, // The current operation should be handled + MRAM_STATE_SEND_ADDR, // Periph should send addr to udma core + MRAM_STATE_SEND_SIZE, // Periph should send size to udma core + MRAM_STATE_SEND_CFG, // Periph should send config to udma core + MRAM_STATE_HANDLE_TRIM, // Periph should send trim config + MRAM_STATE_HANDLE_TRIM_ONGOING, // Trim config being sent + MRAM_STATE_HANDLE_PROGRAM, // Periph should send data to be written to mram + MRAM_STATE_HANDLE_PROGRAM_ONGOING, // Data being sent to be written to mram + MRAM_STATE_WAIT_SYNC_BACK, // Periph waiting synchronization from mram + MRAM_STATE_HANDLE_READ, // Periph should read data from mram + MRAM_STATE_PENDING_OP // An operation is on-going +} Mram_state_e; + + + +class Mram_periph; + +/* + * Class used to model the UDMA MRAM periph rx channel + */ +class Mram_rx_channel : public Udma_rx_channel +{ +public: + Mram_rx_channel(udma *top, Mram_periph *periph, string name); + +private: + Mram_periph *periph; +}; + + +/* + * Class used to model the UDMA MRAM periph tx channel + */ +class Mram_tx_channel : public Udma_tx_channel +{ + friend class Mram_periph; + +public: + Mram_tx_channel(udma *top, Mram_periph *periph, string name); + void push_data(uint8_t *data, int size); + +protected: + +private: + Mram_periph *periph; +}; + + +/* + * Class used to model the UDMA MRAM periph + * + */ +class Mram_periph : public Udma_periph +{ + friend class Mram_tx_channel; + friend class Mram_rx_channel; + +public: + Mram_periph(udma *top, int id, int itf_id); + vp::io_req_status_e custom_req(vp::io_req *req, uint64_t offset); + void reset(bool active); + void start(); + +protected: + Mram_tx_channel *tx_channel; + Mram_rx_channel *rx_channel; + +private: + void clk_div_req(uint64_t reg_offset, int size, uint8_t *value, bool is_write); + void trans_cfg_req(uint64_t reg_offset, int size, uint8_t *value, bool is_write); + void tx_dest_req(uint64_t reg_offset, int size, uint8_t *value, bool is_write); + void rx_dest_req(uint64_t reg_offset, int size, uint8_t *value, bool is_write); + static void handle_pending_operation(void *__this, vp::clock_event *event); + static void handle_read_end(void *__this, vp::clock_event *event); + static void handle_read_2d(void *__this, vp::clock_event *event); + static void handle_rcv_data(void *__this, vp::clock_event *event); + static void handle_dc_fifo_unstall(void *__this, vp::clock_event *event); + void check_state(); + void push_data(uint8_t *data, int size); + static void sync_req(void *__this, mram_req_t *req); + static void sync_data(void *__this, mram_data_t *req); + void handle_program(); + void handle_trim(); + void enqueue_read_req(); + static void handle_read_req(void *__this, vp::clock_event *event); + int64_t get_mram_cycle_count(int64_t cycles); + + vp::wire_master out_req; // Output interface to mram for requests + vp::wire_master out_data; // Output interface to mram for data + vp::wire_master out_conf; // Output interface to mram for configuration + + vp_regmap_udma_mram regmap; // Register map + vp::clock_event *event; // Event for managing the FSM + int pending_transfer_size; // Remaining size of the whole transfer + int req_size; // Size of the last request sent to mram + Mram_state_e state; // State of the mram periph + Mram_state_e next_state; // Next state of the mram periph that should be set once + // the periph has setup the udma core + int write_pending_size; // Remaining size of the last program request sent to mram + int read_pending_size; // Remaining size of the last request sent to mram + int read_pending_length; // Remaining size of the current 2d line being read + uint32_t pending_addr; // Current mram address of the pending transfer + uint32_t pending_trans_addr; // Current L2 address of the pending transfer + uint32_t pending_trans_size; // L2 size of the current line + + int erase_event; // Soc event number of erase operation + int tx_event; // Soc event number of tx operation + int trim_event; // Soc event number of trim config operation + int rx_event; // Soc event number of rx operation + + uint8_t line_data[MRAM_LINE_SIZE]; // Current data line read from mram, to be sent to L2 + uint8_t *read_pending_data; // Pointer to the current data to be sent inside the data line + + Dc_fifo *read_fifo; // DC fifo for reading from mram. + + vp::trace trace; // Periph trace + std::string itf_name; // Name of the mram interface + + uint8_t *stalled_data; // Pending mram data to be sent when DC fifo is unstalled + int stalled_size; // Pending mram data size to be sent when DC fifo is unstalled + bool stalled; // Set to true when mram data could not be sent because the DC fifo was full + + vp::clock_event *read_end_event; // Event enqueued when the end of read event should be triggered + vp::clock_event *read_2d_event; // Event used to enqueue a new line in 2d mode + vp::clock_event *rcv_event; // Event enqueued by DC fifo when data is available in the FIFO + vp::clock_event *read_event; // Event enqueued to start a read request +}; + +#endif diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/udma_v4_impl.cpp b/gvsoc/gvsoc_gap/models/pulp/udma/udma_v4_impl.cpp index 42df1bae6..e58dad15b 100644 --- a/gvsoc/gvsoc_gap/models/pulp/udma/udma_v4_impl.cpp +++ b/gvsoc/gvsoc_gap/models/pulp/udma/udma_v4_impl.cpp @@ -71,6 +71,10 @@ #include "hyper/udma_hyper_v3.hpp" #endif +#ifdef HAS_MRAM +#include "mram/udma_mram_v2.hpp" +#endif + using namespace std::placeholders; @@ -445,7 +449,7 @@ int udma::build() new_slave_port("fast_clock", &this->fast_clock_itf); nb_periphs = get_config_int("nb_periphs"); - periphs.reserve(nb_periphs); + periphs.resize(nb_periphs); this->nb_channels = get_config_int("nb_channels"); this->channels.resize(this->nb_channels); @@ -566,6 +570,21 @@ int udma::build() } } #endif +#ifdef HAS_MRAM + else if (strcmp(name.c_str(), "mram") == 0) + { + trace.msg(vp::trace::LEVEL_INFO, "Instantiating MRAM channel (id: %d, offset: 0x%x)\n", id, offset); + if (version == 2) + { + Mram_periph *periph = new Mram_periph(this, id, j); + periphs[id] = periph; + } + else + { + throw logic_error("Non-supported udma version: " + std::to_string(version)); + } + } +#endif #ifdef HAS_I2S else if (strcmp(name.c_str(), "i2s") == 0) { @@ -679,6 +698,13 @@ int udma::build() void udma::start() { + for (auto x: this->periphs) + { + if (x) + { + x->start(); + } + } } void udma::reset(bool active) diff --git a/gvsoc/gvsoc_gap/models/pulp/udma/udma_v4_impl.hpp b/gvsoc/gvsoc_gap/models/pulp/udma/udma_v4_impl.hpp index 4198055f9..ac298fafb 100644 --- a/gvsoc/gvsoc_gap/models/pulp/udma/udma_v4_impl.hpp +++ b/gvsoc/gvsoc_gap/models/pulp/udma/udma_v4_impl.hpp @@ -417,6 +417,7 @@ class Udma_periph Udma_periph(udma *top, int id); vp::io_req_status_e req(vp::io_req *req, uint64_t offset); virtual void reset(bool active); + virtual void start() {} void clock_gate(bool is_on); int id; diff --git a/gvsoc/runner/bin/plp_power_estimate.py b/gvsoc/runner/bin/plp_power_estimate.py index 747e0d728..4da19141f 100755 --- a/gvsoc/runner/bin/plp_power_estimate.py +++ b/gvsoc/runner/bin/plp_power_estimate.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 import re, os import argparse @@ -17,7 +17,7 @@ help='Path to platform') args = parser.parse_args() - + if args.vcd == None: raise Exception('Path to VCD file must be specified through --vcd') diff --git a/gvsoc/runner/bin/pulp-run b/gvsoc/runner/bin/pulp-run old mode 100644 new mode 100755 diff --git a/gvsoc/runner/bin/s19toboot.py b/gvsoc/runner/bin/s19toboot.py index 92251dfd4..d14965f07 100755 --- a/gvsoc/runner/bin/s19toboot.py +++ b/gvsoc/runner/bin/s19toboot.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python2 # //////////////////////////////////////////////////////////////////////////////// # // Company: Multitherman Laboratory @ DEIS - University of Bologna // diff --git a/gvsoc/runner/bin/s19toboot_vivo3.py b/gvsoc/runner/bin/s19toboot_vivo3.py index b18949d23..4fdd4e7b7 100755 --- a/gvsoc/runner/bin/s19toboot_vivo3.py +++ b/gvsoc/runner/bin/s19toboot_vivo3.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python2 # //////////////////////////////////////////////////////////////////////////////// # // Company: Multitherman Laboratory @ DEIS - University of Bologna // diff --git a/gvsoc/runner/bin/s19toheader.py b/gvsoc/runner/bin/s19toheader.py index be40f1620..36a81047c 100755 --- a/gvsoc/runner/bin/s19toheader.py +++ b/gvsoc/runner/bin/s19toheader.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 # //////////////////////////////////////////////////////////////////////////////// # // Company: Multitherman Laboratory @ DEIS - University of Bologna // @@ -10,7 +10,7 @@ # // Additional contributions by: // # // Andreas Traber - atraber@student.ethz.ch // # // // -# // Create Date: 05/04/2013 // +# // Create Date: 05/04/2013 // # // Design Name: ULPSoC // # // Project Name: ULPSoC // # // Language: tcl, now python // @@ -169,7 +169,7 @@ def dump_bytes( filetoprint, addr, data_s): for i in range(len(section_data)): l2_sections.write("0x%s,\n" % section_data[i]) - + l2_sections.write("}; \n\n") ############################################################################### diff --git a/gvsoc/runner/python/runner/fpga/pulpissimo/elf_run_genesys2.sh b/gvsoc/runner/python/runner/fpga/pulpissimo/elf_run_genesys2.sh index 4f7c1ab81..215c92d7c 100755 --- a/gvsoc/runner/python/runner/fpga/pulpissimo/elf_run_genesys2.sh +++ b/gvsoc/runner/python/runner/fpga/pulpissimo/elf_run_genesys2.sh @@ -1,4 +1,4 @@ -#!/bin/bash -x +#!/usr/bin/env bash trap "exit" INT TERM trap "kill 0" EXIT diff --git a/gvsoc/runner/python/runner/plp_eeprom_stimuli.py b/gvsoc/runner/python/runner/plp_eeprom_stimuli.py index 59500c15d..02223d85c 100644 --- a/gvsoc/runner/python/runner/plp_eeprom_stimuli.py +++ b/gvsoc/runner/python/runner/plp_eeprom_stimuli.py @@ -1,6 +1,4 @@ -#!/usr/bin/env python3 - -# +# # Copyright (C) 2015 ETH Zurich and University of Bologna and # GreenWaves Technologies # All rights reserved. @@ -38,7 +36,7 @@ def __init__(self, elf=None): with open(path, 'rb') as file: elffile = ELFFile(file) - + self.entry = elffile['e_entry'] for segment in elffile.iter_segments(): @@ -63,7 +61,7 @@ def __init__(self, raw=None, verbose=True, encrypt=False, aesKey=None, aesIv=Non def add_boot_callback(self, callback): self.boot_callbacks.append(Boot_callback(elf=callback)) - + def __roundToNextBlock(self): nextOffset = (int)((self.eeprom_offset + self.blockSize - 1) / self.blockSize) * self.blockSize padding = nextOffset - self.eeprom_offset diff --git a/gvsoc/runner/python/runner/plp_flash_stimuli.py b/gvsoc/runner/python/runner/plp_flash_stimuli.py index 72e1b9af5..c48af789e 100644 --- a/gvsoc/runner/python/runner/plp_flash_stimuli.py +++ b/gvsoc/runner/python/runner/plp_flash_stimuli.py @@ -1,6 +1,4 @@ -#!/usr/bin/env python3 - -# +# # Copyright (C) 2015 ETH Zurich and University of Bologna # All rights reserved. # @@ -64,7 +62,7 @@ def __init__(self, elf=None): with open(elf, 'rb') as file: elffile = ELFFile(file) - + self.entry = elffile['e_entry'] for segment in elffile.iter_segments(): @@ -98,7 +96,7 @@ def __init__(self, raw=None, stimuli=None, verbose=True, archi=None, encrypt=Fal def appendBootBinary(self, elf=None): self.bootBinary = Binary(elf=elf) - + def appendComponent(self, dirname, name): self.compList.append(Comp(dirname, name)) @@ -227,7 +225,7 @@ def __dumpFlashHeader_v1(self): if segment.base > area.base + area.size: diff = segment.base - (area.base + area.size) area.size += diff - for i in range(0, diff): + for i in range(0, diff): area.data.append(0) area.data += segment.data @@ -338,21 +336,21 @@ def __dumpCompsToBuff(self): # # Flash address computation # - + if self.verbose: print ('Generating files (header offset: 0x%x)' % self.flashOffset) flashAddr = self.flashOffset headerSize = 0 - + # Compute the header size headerSize += 12 # Header size and number of components - + for comp in self.compList: headerSize += 12 # Flash address, size and path length headerSize += len(comp.name)+1 # Path - + flashAddr += headerSize - + # Now set the flash address for each component for comp in self.compList: comp.flashAddr = (flashAddr + 3) & ~3 @@ -362,28 +360,28 @@ def __dumpCompsToBuff(self): # Now create the raw image as a byte array - + # First header size self.__appendLongInt(headerSize) - + # Number of components self.__appendInt(len(self.compList)) - + # Then for each component for comp in self.compList: # The flash address self.__appendInt(comp.flashAddr) - + # Binary size self.__appendInt(comp.size) - + # The path length self.__appendInt(len(comp.name)+1) - + # And the path self.__appendBuffer(comp.name.encode('utf-8')) self.__appendByte(0) - + # Then dump all components for comp in self.compList: with open(comp.path, 'rb') as file: @@ -447,10 +445,10 @@ def genFlashImage(slmStim=None, raw_stim=None, bootBinary=None, comps=[], verbos if bootBinary != None: romBoot = ' --flash-boot-binary=%s' % bootBinary - + for comp in comps: compsList += ' --comp=%s' % comp - + if slmStim is not None: cmd = "plp_mkflash %s %s --stimuli=%s --flash-type=%s" % (romBoot, compsList, slmStim, flashType) else: diff --git a/gvsoc/runner/python/runner/plp_flash_stimuli_vivo3.py b/gvsoc/runner/python/runner/plp_flash_stimuli_vivo3.py index f6dcfcbb2..95adb0505 100644 --- a/gvsoc/runner/python/runner/plp_flash_stimuli_vivo3.py +++ b/gvsoc/runner/python/runner/plp_flash_stimuli_vivo3.py @@ -1,6 +1,4 @@ -#!/usr/bin/env python3 - -# +# # Copyright (C) 2015 ETH Zurich and University of Bologna # All rights reserved. # @@ -64,7 +62,7 @@ def __init__(self, elf=None): with open(elf, 'rb') as file: elffile = ELFFile(file) - + self.entry = elffile['e_entry'] for segment in elffile.iter_segments(): @@ -115,7 +113,7 @@ def __init__(self, raw=None, sysDescr=None, binDescr=None, stimuli=None, verbose def appendBootBinary(self, elf=None): self.bootBinary = Binary(elf=elf) - + def appendComponent(self, dirname, name): self.compList.append(Comp(dirname, name)) @@ -254,7 +252,7 @@ def __dumpFlashHeader_v1(self): if segment.base > area.base + area.size: diff = segment.base - (area.base + area.size) area.size += diff - for i in range(0, diff): + for i in range(0, diff): area.data.append(0) area.data += segment.data @@ -381,7 +379,7 @@ def __createBinDescr(self): print (" Number of sections: %d" % len(self.bootBinary.segments)) if len(self.bootBinary.segments) > self.binMaxSect: - raise Exception('Too many (%d) sections in binary, currently only max. %d supported.' % (len(self.bootBinary.segments), self.binMaxSect)) + raise Exception('Too many (%d) sections in binary, currently only max. %d supported.' % (len(self.bootBinary.segments), self.binMaxSect)) tempBuff = [] tempBuff += struct.pack("I",len(self.bootBinary.segments)) @@ -430,21 +428,21 @@ def __dumpCompsToBuff(self): # # Flash address computation # - + if self.verbose: print ('Generating files (header offset: 0x%x)' % self.flashOffset) flashAddr = self.flashOffset headerSize = 0 - + # Compute the header size headerSize += 12 # Header size and number of components - + for comp in self.compList: headerSize += 12 # Flash address, size and path length headerSize += len(comp.name)+1 # Path - + flashAddr += headerSize - + # Now set the flash address for each component for comp in self.compList: comp.flashAddr = (flashAddr + 3) & ~3 @@ -454,28 +452,28 @@ def __dumpCompsToBuff(self): # Now create the raw image as a byte array - + # First header size self.__appendLongInt(headerSize) - + # Number of components self.__appendInt(len(self.compList)) - + # Then for each component for comp in self.compList: # The flash address self.__appendInt(comp.flashAddr) - + # Binary size self.__appendInt(comp.size) - + # The path length self.__appendInt(len(comp.name)+1) - + # And the path self.__appendBuffer(comp.name.encode('utf-8')) self.__appendByte(0) - + # Then dump all components for comp in self.compList: with open(comp.path, 'rb') as file: @@ -557,7 +555,7 @@ def generate(self): for i in range(0, len(self.buffBinDescr)): dumpByteToSlm(file, i+nand_model_stretch_fact*self.sysBinPtrs[1][1], self.buffBinDescr[i]) - + nbPages = len(self.buffSect) // self.blockSize for j in range(0, nbPages): for i in range(0, self.blockSize): @@ -575,10 +573,10 @@ def genFlashImage(slmStim=None, rawStim=None, sysDescr=None, binDescr=None, boot if bootBinary != None: romBoot = ' --flash-boot-binary=%s' % bootBinary - + for comp in comps: compsList += ' --comp=%s' % comp - + if slmStim is not None: cmd = "plp_mkflash_vivo3 %s %s --stimuli=%s --flash-type=%s" % (romBoot, compsList, slmStim, flashType) else: diff --git a/libs/gap_lib/.gitmodules b/libs/gap_lib/.gitmodules new file mode 100644 index 000000000..e69de29bb diff --git a/libs/gap_lib/testbench/CMakeLists.txt b/libs/gap_lib/testbench/CMakeLists.txt new file mode 100644 index 000000000..04bbbe071 --- /dev/null +++ b/libs/gap_lib/testbench/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 3.16) + +if (NOT CONFIG_TESTBENCH_UART_ID) + set(CONFIG_TESTBENCH_UART_ID 1) +endif() + +if (NOT CONFIG_TESTBENCH_UART_BAUDRATE) + set(CONFIG_TESTBENCH_UART_BAUDRATE 20000000) +endif() + +set(testbench_flags + "-DCONFIG_TESTBENCH_UART_ID=${CONFIG_TESTBENCH_UART_ID}" + "-DCONFIG_TESTBENCH_UART_BAUDRATE=${CONFIG_TESTBENCH_UART_BAUDRATE}") + +set(C_SRCS + testbench.c + testlib.c + ) + +add_library(testbench OBJECT ${C_SRCS}) + +target_link_libraries(testbench PRIVATE freertos) + +target_include_directories(testbench PUBLIC .) + +target_compile_options(testbench PUBLIC $<$:${testbench_flags}>) + +set(GWT_PMSIS_BSP ${CONFIG_GAP_SDK_HOME}/rtos/pmsis/pmsis_bsp) +target_include_directories(testbench PRIVATE ${GWT_PMSIS_BSP}/include) + +#=================================================================================================== +# gapy config arguments +#=================================================================================================== +if (NOT CONFIG_BOARD_PATH) + set(CONFIG_BOARD_PATH target) +endif() + +if (NOT GAPY_CONFIG_ARGS) + set(GAPY_CONFIG_ARGS "") +endif() + +list(APPEND GAPY_CONFIG_ARGS --config-opt=${CONFIG_BOARD_PATH}/addon_testbench_enabled=true) +list(APPEND GAPY_CONFIG_ARGS --config-opt=**/runner/gvsoc_dpi/enabled=true) +list(APPEND GAPY_CONFIG_ARGS --config-opt=**/testbench/testbench/uart_id=${CONFIG_TESTBENCH_UART_ID}) +list(APPEND GAPY_CONFIG_ARGS --config-opt=**/testbench/testbench/uart_baudrate=${CONFIG_TESTBENCH_UART_BAUDRATE}) + +set(GAPY_CONFIG_ARGS ${GAPY_CONFIG_ARGS} PARENT_SCOPE) diff --git a/libs/openmp/tests/atomic/gaptest.yml b/libs/openmp/tests/atomic/gaptest.yml new file mode 100644 index 000000000..2c84d21ef --- /dev/null +++ b/libs/openmp/tests/atomic/gaptest.yml @@ -0,0 +1,24 @@ +name: openmp_atomic +boards: [] +platforms: + - gvsoc +os: + - freertos + - pulpos +chips: + - gap8 + - gap9 +variants: + std: + name: standard + tags: + - integration + - release + duration: standard + os: + - pulpos + - freertos + chips: + - gap8 + - gap9 + flags: ~ diff --git a/libs/openmp/tests/barrier/gaptest.yml b/libs/openmp/tests/barrier/gaptest.yml new file mode 100644 index 000000000..755382435 --- /dev/null +++ b/libs/openmp/tests/barrier/gaptest.yml @@ -0,0 +1,24 @@ +name: openmp_barrier +boards: [] +platforms: + - gvsoc +os: + - freertos + - pulpos +chips: + - gap8 + - gap9 +variants: + std: + name: standard + tags: + - integration + - release + duration: standard + os: + - pulpos + - freertos + chips: + - gap8 + - gap9 + flags: ~ diff --git a/libs/openmp/tests/benchmark/bench.c b/libs/openmp/tests/benchmark/bench.c index 860bc17a3..9220ef8f4 100644 --- a/libs/openmp/tests/benchmark/bench.c +++ b/libs/openmp/tests/benchmark/bench.c @@ -11,32 +11,32 @@ #define PRINTF(...) //#define PRINTF(...) printf(__VA_ARGS__) -static void start_timer() +static void test_start_timer() { pi_perf_cl_reset(); pi_perf_conf(1<:${asm_flags}> +# ) +#add_compile_options( +# ${freertos_flags} ${common_flags} ${archi_flags}> +# ) +set(ld_script ${CMAKE_CURRENT_SOURCE_DIR}/vendors/gwt/gap9/src/device/ld/GAP9.ld) +set(linker_opt -nostartfiles -nostdlib -T${ld_script} -MD -MP -MT ${archi_flags} -Wl,--gc-sections,-Map=$@.map,-static,-lgcc -lgcc ) +#add_link_options(${linker_opt}) + + +add_subdirectory(vendors/gwt) +add_subdirectory(demos/gwt/config/gap9) +add_subdirectory(freertos_kernel) +add_subdirectory(freertos_kernel/portable) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../pmsis/pmsis_api ${CMAKE_CURRENT_BINARY_DIR}/pmsis_api) + + + +set_source_files_properties(${GCC_CRT_OBJS} PROPERTIES EXTERNAL_OBJECT TRUE GENERATED TRUE) +add_library(freertos STATIC ${ASM_SRCS} ${SRCS} ) + +#target_compile_options(freertos PUBLIC +# $<$:${asm_flags}>) +target_compile_options(freertos PUBLIC + $<$:${asm_flags}> + ) +target_compile_options(freertos PUBLIC + $<$:${freertos_flags} ${common_flags} ${archi_flags}> + ) +target_link_options(freertos PUBLIC ${linker_opt}) + message("Linker option ${linker_opt}") +target_include_directories(freertos PUBLIC "freertos_kernel/include") + +target_link_libraries(freertos PUBLIC ri5cy-gap9) +target_link_libraries(freertos PUBLIC freertos_gap9) +target_link_libraries(freertos PUBLIC pmsis_implem_gap9) +target_link_libraries(freertos PUBLIC pmsis_freertos) +target_link_libraries(freertos PUBLIC freertos_libs) +target_link_libraries(freertos PUBLIC pmsis_api) +target_link_libraries(freertos PUBLIC freertos_printf) +target_link_libraries(freertos PUBLIC freertos_kernel) +target_link_libraries(freertos PUBLIC freertos_config_gap9) +target_link_libraries(freertos PUBLIC pmsis_rtos) +target_link_libraries(freertos PUBLIC freertos_pmsis_backend) +if(CONFIG_USE_BSP) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../pmsis/pmsis_bsp ${CMAKE_CURRENT_BINARY_DIR}/pmsis_bsp) + target_link_libraries(freertos PUBLIC bsp) +endif() + +if(CONFIG_USE_BSP) +install(TARGETS freertos ri5cy-gap9 freertos_gap9 pmsis_implem_gap9 pmsis_freertos + freertos_libs pmsis_api freertos_printf freertos_kernel freertos_config_gap9 + pmsis_rtos freertos_pmsis_backend bsp + EXPORT freertosTargets) +else() +install(TARGETS freertos ri5cy-gap9 freertos_gap9 pmsis_implem_gap9 pmsis_freertos + freertos_libs pmsis_api freertos_printf freertos_kernel freertos_config_gap9 + pmsis_rtos freertos_pmsis_backend + EXPORT freertosTargets) + +endif() +export(EXPORT freertosTargets + FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/freertosTargets.cmake" + NAMESPACE freertos:: + ) diff --git a/rtos/freeRTOS/demos/gwt/config/CMakeLists.txt b/rtos/freeRTOS/demos/gwt/config/CMakeLists.txt new file mode 100644 index 000000000..e69de29bb diff --git a/rtos/freeRTOS/demos/gwt/config/gap8/FreeRTOS_util.h b/rtos/freeRTOS/demos/gwt/config/gap8/FreeRTOS_util.h index 96a6e8daa..1afc64ad4 100644 --- a/rtos/freeRTOS/demos/gwt/config/gap8/FreeRTOS_util.h +++ b/rtos/freeRTOS/demos/gwt/config/gap8/FreeRTOS_util.h @@ -40,7 +40,7 @@ #include "event_groups.h" /* GAP8 handler includes. */ -#include "gap8_it.h" +#include "device/gap8_it.h" #include "stdio.h" #include "stdlib.h" #include "printf.h" diff --git a/rtos/freeRTOS/demos/gwt/config/gap9/CMakeLists.txt b/rtos/freeRTOS/demos/gwt/config/gap9/CMakeLists.txt new file mode 100644 index 000000000..bc58e6228 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/config/gap9/CMakeLists.txt @@ -0,0 +1,6 @@ +add_library(freertos_config_gap9 INTERFACE) + +target_include_directories(freertos_config_gap9 INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}") + +#target_link_libraries(freertos_config_gap9 PRIVATE freertos_kernel) +#target_link_libraries(freertos_config_gap9 PRIVATE ri5cy-gap9) diff --git a/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOSConfig.h b/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOSConfig.h new file mode 100644 index 000000000..e994a1d7e --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOSConfig.h @@ -0,0 +1,189 @@ +/* + * FreeRTOS Kernel V10.0.1 + * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * 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 furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://aws.amazon.com/freertos + * http://www.FreeRTOS.org + */ + + +#ifndef FREERTOS_CONFIG_H +#define FREERTOS_CONFIG_H + +/*----------------------------------------------------------- +* Application specific definitions. +* +* These definitions should be adjusted for your particular hardware and +* application requirements. +* +* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE +* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. +* +* See http://www.freertos.org/a00110.html. +*----------------------------------------------------------*/ + +/* Ensure stdint is only used by the compiler, and not the assembler. */ +#if defined( __ICCARM__ ) || defined( __CC_ARM ) || defined( __GNUC__ ) + #include +#endif + +/* GAP8 specifics. */ +//#include "pmsis/targets/target.h" + +extern volatile uint32_t SystemCoreClock; +extern void vPrvAssertFailed( const char *filename, uint32_t line, const char *expr ); + +/* + * Use standard malloc instead of those offered(heap_X). + * To use other malloc implementations, include heap_X file, + * and define heap regions, see FreeRTOS_util files. + * Call vPortDefineHeapRegions( xHeapRegions ) in the main function in order to + * allocate memeory. + */ +//#define malloc ( pmsis_malloc ) +//#define free ( pmsis_malloc_free ) +#define pvPortMalloc ( pi_malloc ) +#define vPortFree ( pi_free ) + +/* Thread local storage. */ +#define configNUM_THREAD_LOCAL_STORAGE_POINTERS ( 0 ) + +/* To disable notfications set to 0. */ +#define configUSE_TASK_NOTIFICATIONS ( 1 ) +/* To get MPU working set to 1. */ +#define INCLUDE_xQueueGetMutexHolder ( 1 ) + +/* Disable when not necessary -> Save 25KB. Used by uxTimerStack. */ +#define configSUPPORT_STATIC_ALLOCATION ( 1 ) +#define configSUPPORT_DYNAMIC_ALLOCATION ( 1 ) + +#ifdef PREEMPTION +#define configUSE_PREEMPTION ( 1 ) +#else +#define configUSE_PREEMPTION ( 0 ) +#endif +#define configUSE_TIME_SLICING ( 1 ) + +/* Time slice. Quantum a task can execute on CPU. */ +#define configPREEMPTION_QUANTUM ( 50 ) + +#define configIDLE_SHOULD_YIELD ( 1 ) +#define configUSE_IDLE_HOOK ( 1 ) +#define configUSE_TICK_HOOK ( 0 ) +#define configUSE_TICKLESS_IDLE ( 0 ) +#define configUSE_DAEMON_TASK_STARTUP_HOOK ( 0 ) +#define configCPU_CLOCK_HZ ( SystemCoreClock ) +#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) +#define configMAX_PRIORITIES ( 3 ) +#define configMINIMAL_STACK_SIZE ( ( uint16_t ) ( 128 ) ) +#define configSTACK_DEPTH_TYPE uint32_t + +#define configMAX_TASK_NAME_LEN ( 16 ) +#define configUSE_TRACE_FACILITY ( 0 ) +#define configUSE_16_BIT_TICKS ( 0 ) + +#define configUSE_MUTEXES ( 1 ) +#define configQUEUE_REGISTRY_SIZE ( 8 ) +#define configCHECK_FOR_STACK_OVERFLOW ( 1 ) +#define configUSE_RECURSIVE_MUTEXES ( 1 ) +#define configUSE_MALLOC_FAILED_HOOK ( 0 ) +#define configUSE_APPLICATION_TASK_TAG ( 0 ) +#define configUSE_COUNTING_SEMAPHORES ( 1 ) +#define configGENERATE_RUN_TIME_STATS ( 0 ) +#define configOVERRIDE_DEFAULT_TICK_CONFIGURATION ( 1 ) +#define configRECORD_STACK_HIGH_ADDRESS ( 0 ) + +/* Co-routine definitions. */ +#define configUSE_CO_ROUTINES ( 0 ) +#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) + +/* Software timer definitions. */ +#ifndef configUSE_TIMERS +#define configUSE_TIMERS ( 0 ) +#else +#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) +#define configTIMER_QUEUE_LENGTH ( 10 ) +#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) +#endif + +/* Set the following definitions to 1 to include the API function, or zero + * to exclude the API function. */ +#define INCLUDE_vTaskPrioritySet ( 1 ) +#define INCLUDE_uxTaskPriorityGet ( 1 ) +#define INCLUDE_vTaskDelete ( 1 ) +#define INCLUDE_vTaskCleanUpResources ( 0 ) +#define INCLUDE_vTaskSuspend ( 1 ) +#define INCLUDE_vTaskDelayUntil ( 1 ) +#define INCLUDE_vTaskDelay ( 1 ) +#define INCLUDE_xTaskGetSchedulerState ( 1 ) +#define INCLUDE_xTaskGetIdleTaskHandle ( 1 ) +#define INCLUDE_eTaskGetState ( 1 ) + +/* Cortex-M specific definitions. */ +#ifdef __NVIC_PRIO_BITS + /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */ + #define configPRIO_BITS __NVIC_PRIO_BITS +#else + #define configPRIO_BITS 4 /* 15 priority levels. */ +#endif + +/* The lowest interrupt priority that can be used in a call to a "set priority" + * function. */ +#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf + +/* The highest interrupt priority that can be used by any interrupt service + * routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL + * INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER + * PRIORITY THAN THIS! (higher priorities are lower numeric values. */ +#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 + +/* Interrupt priorities used by the kernel port layer itself. These are generic +* to all Cortex-M ports, and do not rely on any particular library functions. */ +#define configKERNEL_INTERRUPT_PRIORITY \ + ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << ( 8 - configPRIO_BITS ) ) + +/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! + * See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ +#define configMAX_SYSCALL_INTERRUPT_PRIORITY \ + ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << ( 8 - configPRIO_BITS ) ) + +/* Normal assert() semantics without relying on the provision of an assert.h + * header file. */ +#ifndef NDEBUG +#define configASSERT( x ) \ + if( ( x ) == 0 ) { vPrvAssertFailed( __FILE__, __LINE__, #x ); } +#else +#define configASSERT( x ) ( void ) ( x ) +#endif + +/* Map the FreeRTOS printf() to the logging task printf. */ +#define configPRINTF( x ) printf( x ) + +/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS + * standard names. */ +#define vPortSVCHandler ecall_handler +#define xPortPendSVHandler pendSV_handler +#define vHardFault_Handler HardFault_Handler + +/* IMPORTANT: This define MUST be commented when used with STM32Cube firmware, + * to prevent overwriting SysTick_Handler defined within STM32Cube HAL. */ +#define xPortSysTickHandler systick_handler + +#endif /* FREERTOS_CONFIG_H */ diff --git a/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOS_util.c b/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOS_util.c new file mode 100644 index 000000000..54fd8c248 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOS_util.c @@ -0,0 +1,202 @@ +/****************************************************************************************** + * + * Copyright (c) 2018 , GreenWaves Technologies, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of GreenWaves Technologies, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************/ + + +/****************************************************************************/ + +/* FreeRTOS functions includes. */ +#include "FreeRTOS_util.h" +#include "pmsis/implem/hal/hal.h" +#include "pmsis.h" + +/****************************************************************************/ + +/* Variables used. */ +#ifdef NOSTDMALLOC +/* + * Using heap_5 for memory management : need to define memory regions to + * allocate memory. + */ +extern uint8_t __heapl2ram_start; +extern uint8_t __heapl2ram_size; + +HeapRegion_t xHeapRegions[] = +{ + { ( uint8_t * ) &__heapl2ram_start, ( uint32_t ) &__heapl2ram_size }, + { NULL, 0 } +}; +#endif + +/****************************************************************************/ + +#if configUSE_IDLE_HOOK == 1 +void vApplicationIdleHook( void ) +{ + int irq = disable_irq(); + hal_itc_wait_for_interrupt(); + restore_irq(irq); +} +#endif //configUSE_IDLE_HOOK +/*-----------------------------------------------------------*/ + +#if configSUPPORT_DYNAMIC_ALLOCATION == 1 +#if configUSE_MALLOC_FAILED_HOOK == 1 +void vApplicationMallocFailedHook( void ) +{ + /* + vApplicationMallocFailedHook() will only be called if + configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook + function that will get called if a call to pvPortMalloc() fails. + pvPortMalloc() is called internally by the kernel whenever a task, queue, + timer or semaphore is created. It is also called by various parts of the + demo application. If heap_1.c or heap_2.c are used, then the size of the + heap available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in + FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used + to query the size of free heap space that remains (although it does not + provide information on how the remaining heap might be fragmented). + */ + printf("Memory Allocation failed! Exiting !\n"); + exit(-4322); + /* + taskDISABLE_INTERRUPTS(); + for( ;; ); + */ +} +#endif //configUSE_MALLOC_FAILED_HOOK +#endif //configSUPPORT_DYNAMIC_ALLOCATION +/*-----------------------------------------------------------*/ + +#if ( configCHECK_FOR_STACK_OVERFLOW == 1 ) || ( configCHECK_FOR_STACK_OVERFLOW == 2 ) +void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) +{ + ( void ) pcTaskName; + ( void ) pxTask; + + /* + Run time stack overflow checking is performed if + configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook + function is called if a stack overflow is detected. + */ + printf("Stack Overflow : %s ! Exiting !\n", pcTaskName); + exit(-4321); + /* + taskDISABLE_INTERRUPTS(); + for( ;; ); + */ +} +#endif //configCHECK_FOR_STACK_OVERFLOW +/*-----------------------------------------------------------*/ + +#if configSUPPORT_STATIC_ALLOCATION == 1 +PI_FC_L1 static StaticTask_t xIdleTaskTCB; +PI_FC_L1 static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ]; +void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, + StackType_t **ppxIdleTaskStackBuffer, + uint32_t *pulIdleTaskStackSize ) +{ + /* + If the buffers to be provided to the Idle task are declared inside this + function then they must be declared static - otherwise they will be allocated on + the stack and so not exists after this function exits. + */ + + /* + Pass out a pointer to the StaticTask_t structure in which the Idle task's + state will be stored. + */ + *ppxIdleTaskTCBBuffer = &xIdleTaskTCB; + + /* Pass out the array that will be used as the Idle task's stack. */ + *ppxIdleTaskStackBuffer = uxIdleTaskStack; + + /* + Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer. + Note that, as the array is necessarily of type StackType_t, + configMINIMAL_STACK_SIZE is specified in words, not bytes. + */ + *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE; +} +#endif //configSUPPORT_STATIC_ALLOCATION +/*-----------------------------------------------------------*/ + + +#if configUSE_TIMERS == 1 + +#if configUSE_DAEMON_TASK_STARTUP_HOOK == 1 +void vApplicationDaemonTaskStartupHook( void ) +{ + /* + This function is executed once when schedular starts. + */ +} +#endif //configUSE_DAEMON_TASK_STARTUP_HOOK +/*-----------------------------------------------------------*/ + +#if configSUPPORT_STATIC_ALLOCATION == 1 +void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, + StackType_t **ppxTimerTaskStackBuffer, + uint32_t *pulTimerTaskStackSize ) +{ + /* + If the buffers to be provided to the Timer task are declared inside this + function then they must be declared static - otherwise they will be allocated on + the stack and so not exists after this function exits. + */ + static StaticTask_t xTimerTaskTCB; + static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ]; + + /* + Pass out a pointer to the StaticTask_t structure in which the Timer + task's state will be stored. + */ + *ppxTimerTaskTCBBuffer = &xTimerTaskTCB; + + /* Pass out the array that will be used as the Timer task's stack. */ + *ppxTimerTaskStackBuffer = uxTimerTaskStack; + + /* + Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer. + Note that, as the array is necessarily of type StackType_t, + configTIMER_TASK_STACK_DEPTH is specified in words, not bytes. + */ + *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH; +} +#endif //configSUPPORT_STATIC_ALLOCATION + +#endif //configUSE_TIMERS + +#ifndef NDEBUG +void vPrvAssertFailed( const char *filename, uint32_t line, const char *expr ) +{ + printf("Assertion failed in %s at line %d : %s\n", filename, line, expr); +} +#endif +/****************************************************************************/ diff --git a/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOS_util.h b/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOS_util.h new file mode 100644 index 000000000..eaab902c1 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/config/gap9/FreeRTOS_util.h @@ -0,0 +1,102 @@ +/****************************************************************************************** + * + * Copyright (c) 2018 , GreenWaves Technologies, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of GreenWaves Technologies, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *******************************************************************************************/ + + +/****************************************************************************/ +/* FreeRTOS Kernel includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +#include "timers.h" +#include "semphr.h" +#include "event_groups.h" + +/* GAP9 handler includes. */ +#include "device/gap9_it.h" +#include "stdio.h" +#include "stdlib.h" +//#include "printf.h" + +/****************************************************************************/ + +/* Utilities to control tasks. */ +#define NBCORES ( 8 ) +#define NBTASKS ( 1 ) + +extern TaskHandle_t tasks[]; +extern uint8_t taskSuspended; + +/****************************************************************************/ + +/* Variables used. */ +#ifdef NOSTDMALLOC +extern HeapRegion_t xHeapRegions[]; +#endif + +/****************************************************************************/ + +#if configUSE_IDLE_HOOK == 1 +void vApplicationIdleHook( void ); +#endif //configUSE_IDLE_HOOK + +#if configSUPPORT_DYNAMIC_ALLOCATION == 1 +#if configUSE_MALLOC_FAILED_HOOK == 1 +void vApplicationMallocFailedHook( void ); +#endif //configUSE_MALLOC_FAILED_HOOK +#endif //configSUPPORT_DYNAMIC_ALLOCATION + +#if ( configCHECK_FOR_STACK_OVERFLOW == 1 ) || ( configCHECK_FOR_STACK_OVERFLOW == 2 ) +void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); +#endif // configCHECK_FOR_STACK_OVERFLOW + +#if configSUPPORT_STATIC_ALLOCATION == 1 +void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, + StackType_t **ppxIdleTaskStackBuffer, + uint32_t *pulIdleTaskStackSize ); +#endif //configSUPPORT_STATIC_ALLOCATION + +#if configUSE_TIMERS == 1 +#if configUSE_DAEMON_TASK_STARTUP_HOOK == 1 +void vApplicationDaemonTaskStartupHook( void ); +#endif //configUSE_DAEMON_TASK_STARTUP_HOOK + +#if configSUPPORT_STATIC_ALLOCATION == 1 +void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, + StackType_t **ppxTimerTaskStackBuffer, + uint32_t *pulTimerTaskStackSize ); +#endif //configSUPPORT_STATIC_ALLOCATION + +#endif //configUSE_TIMERS + +#ifndef NDEBUG +void vPrvAssertFailed( const char *filename, uint32_t line, const char *expr ); +#endif +/****************************************************************************/ diff --git a/rtos/freeRTOS/demos/gwt/config/vega/FreeRTOS_util.h b/rtos/freeRTOS/demos/gwt/config/vega/FreeRTOS_util.h index 0b0eb226f..931111e20 100644 --- a/rtos/freeRTOS/demos/gwt/config/vega/FreeRTOS_util.h +++ b/rtos/freeRTOS/demos/gwt/config/vega/FreeRTOS_util.h @@ -40,7 +40,7 @@ #include "event_groups.h" /* GAP9 handler includes. */ -#include "vega_it.h" +#include "device/vega_it.h" #include "stdio.h" #include "stdlib.h" #include "printf.h" diff --git a/rtos/freeRTOS/demos/gwt/examples/hello_world/CMakeLists.txt b/rtos/freeRTOS/demos/gwt/examples/hello_world/CMakeLists.txt index 3d49eb058..ae74ab1dd 100644 --- a/rtos/freeRTOS/demos/gwt/examples/hello_world/CMakeLists.txt +++ b/rtos/freeRTOS/demos/gwt/examples/hello_world/CMakeLists.txt @@ -320,7 +320,7 @@ SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS) # Create executable with demo code files -set_source_files_properties(${GCC_CRT_OBJS} PROPERTIES EXTERNAL_OBJECT TRUE GENERATED TRUE) +set_source_files_properties(${GCC_CRT_OBJS} PROPERTIES EXTERNAL_STATIC TRUE GENERATED TRUE) add_executable(${TARGET} ${GCC_CRT_OBJS} ${FREERTOS_SOURCES_ASM} ${FREERTOS_SOURCES} ${APP_SRCS}) diff --git a/rtos/freeRTOS/demos/gwt/examples/hello_world/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/hello_world/gaptest.yml new file mode 100644 index 000000000..d1c4d0045 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/hello_world/gaptest.yml @@ -0,0 +1,21 @@ +name: freertos_helloworld +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + std: + name: standard + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: ~ diff --git a/rtos/freeRTOS/demos/gwt/examples/kernel/eventgroup/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/kernel/eventgroup/gaptest.yml new file mode 100644 index 000000000..fe7acc88f --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/kernel/eventgroup/gaptest.yml @@ -0,0 +1,21 @@ +name: freertos_kernel_eventgroup +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + std: + name: standard + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: ~ diff --git a/rtos/freeRTOS/demos/gwt/examples/kernel/mutex/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/kernel/mutex/gaptest.yml new file mode 100644 index 000000000..43414de0b --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/kernel/mutex/gaptest.yml @@ -0,0 +1,129 @@ +name: freertos_kernel_mutex +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + preempt_O0: + name: preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O0" + preempt_O1: + name: preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O1" + preempt_O2: + name: preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O2" + preempt_O3: + name: preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O3" + preempt_Os: + name: preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-Os" + no_preempt_O0: + name: no_preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O0" + no_preempt_O1: + name: no_preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O1" + no_preempt_O2: + name: no_preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O2" + no_preempt_O3: + name: no_preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O3" + no_preempt_Os: + name: no_preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-Os" diff --git a/rtos/freeRTOS/demos/gwt/examples/kernel/notification/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/kernel/notification/gaptest.yml new file mode 100644 index 000000000..d001294d7 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/kernel/notification/gaptest.yml @@ -0,0 +1,129 @@ +name: freertos_kernel_notification +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + preempt_O0: + name: preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O0" + preempt_O1: + name: preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O1" + preempt_O2: + name: preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O2" + preempt_O3: + name: preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O3" + preempt_Os: + name: preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-Os" + no_preempt_O0: + name: no_preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O0" + no_preempt_O1: + name: no_preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O1" + no_preempt_O2: + name: no_preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O2" + no_preempt_O3: + name: no_preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O3" + no_preempt_Os: + name: no_preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-Os" diff --git a/rtos/freeRTOS/demos/gwt/examples/kernel/queue/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/kernel/queue/gaptest.yml new file mode 100644 index 000000000..fbc48f483 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/kernel/queue/gaptest.yml @@ -0,0 +1,129 @@ +name: freertos_kernel_queue +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + preempt_O0: + name: preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O0" + preempt_O1: + name: preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O1" + preempt_O2: + name: preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O2" + preempt_O3: + name: preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O3" + preempt_Os: + name: preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-Os" + no_preempt_O0: + name: no_preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O0" + no_preempt_O1: + name: no_preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O1" + no_preempt_O2: + name: no_preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O2" + no_preempt_O3: + name: no_preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O3" + no_preempt_Os: + name: no_preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-Os" diff --git a/rtos/freeRTOS/demos/gwt/examples/kernel/semaphore/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/kernel/semaphore/gaptest.yml new file mode 100644 index 000000000..9c4f6267c --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/kernel/semaphore/gaptest.yml @@ -0,0 +1,129 @@ +name: freertos_kernel_semaphore +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + preempt_O0: + name: preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O0" + preempt_O1: + name: preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O1" + preempt_O2: + name: preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O2" + preempt_O3: + name: preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O3" + preempt_Os: + name: preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-Os" + no_preempt_O0: + name: no_preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O0" + no_preempt_O1: + name: no_preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O1" + no_preempt_O2: + name: no_preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O2" + no_preempt_O3: + name: no_preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O3" + no_preempt_Os: + name: no_preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-Os" diff --git a/rtos/freeRTOS/demos/gwt/examples/kernel/sw_irq/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/kernel/sw_irq/gaptest.yml new file mode 100644 index 000000000..e706821f3 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/kernel/sw_irq/gaptest.yml @@ -0,0 +1,21 @@ +name: freertos_kernel_sw_irq +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + std: + name: standard + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: ~ diff --git a/rtos/freeRTOS/demos/gwt/examples/kernel/sw_timer/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/kernel/sw_timer/gaptest.yml new file mode 100644 index 000000000..ad0d3f2d9 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/kernel/sw_timer/gaptest.yml @@ -0,0 +1,21 @@ +name: freertos_kernel_sw_timer +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + std: + name: standard + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: ~ diff --git a/rtos/freeRTOS/demos/gwt/examples/kernel/tasks/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/kernel/tasks/gaptest.yml new file mode 100644 index 000000000..7d8a3cf32 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/kernel/tasks/gaptest.yml @@ -0,0 +1,129 @@ +name: freertos_kernel_tasks +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + preempt_O0: + name: preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O0" + preempt_O1: + name: preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O1" + preempt_O2: + name: preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O2" + preempt_O3: + name: preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-O3" + preempt_Os: + name: preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=true APP_CFLAGS=-Os" + no_preempt_O0: + name: no_preempt_O0 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O0" + no_preempt_O1: + name: no_preempt_O1 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O1" + no_preempt_O2: + name: no_preempt_O2 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O2" + no_preempt_O3: + name: no_preempt_O3 + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-O3" + no_preempt_Os: + name: no_preempt_Os + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: "NO_PREEMPTION=false APP_CFLAGS=-Os" diff --git a/rtos/freeRTOS/demos/gwt/examples/periph/timer/gaptest.yml b/rtos/freeRTOS/demos/gwt/examples/periph/timer/gaptest.yml new file mode 100644 index 000000000..48c052047 --- /dev/null +++ b/rtos/freeRTOS/demos/gwt/examples/periph/timer/gaptest.yml @@ -0,0 +1,21 @@ +name: freertos_periph_timer +platforms: + - gvsoc +os: + - freertos +chips: + - gap8 + - gap9 +variants: + std: + name: standard + tags: + - integration + - release + duration: standard + os: + - freertos + chips: + - gap8 + - gap9 + flags: ~ diff --git a/rtos/freeRTOS/freertos_kernel/CMakeLists.txt b/rtos/freeRTOS/freertos_kernel/CMakeLists.txt new file mode 100644 index 000000000..3bb58036a --- /dev/null +++ b/rtos/freeRTOS/freertos_kernel/CMakeLists.txt @@ -0,0 +1,3 @@ +add_library(freertos_kernel INTERFACE) +target_include_directories(freertos_kernel INTERFACE "include") +target_include_directories(freertos_kernel INTERFACE "portable/GCC/RI5CY-GAP9") diff --git a/rtos/freeRTOS/freertos_kernel/include/semphr.h b/rtos/freeRTOS/freertos_kernel/include/semphr.h index 525a8ec16..977865e07 100644 --- a/rtos/freeRTOS/freertos_kernel/include/semphr.h +++ b/rtos/freeRTOS/freertos_kernel/include/semphr.h @@ -33,6 +33,10 @@ #include "queue.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef QueueHandle_t SemaphoreHandle_t; #define semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( uint8_t ) 1U ) @@ -293,7 +297,7 @@ typedef QueueHandle_t SemaphoreHandle_t; * \defgroup xSemaphoreTake xSemaphoreTake * \ingroup Semaphores */ -#define xSemaphoreTake( xSemaphore, xBlockTime ) xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) ) +#define xSemaphoreTake( xSemaphore, xBlockTime ) xQueueSemaphoreTake( ( (QueueHandle_t) xSemaphore ), ( xBlockTime ) ) /** * semphr. h @@ -1170,4 +1174,7 @@ typedef QueueHandle_t SemaphoreHandle_t; */ #define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) ) +#ifdef __cplusplus +} +#endif #endif /* SEMAPHORE_H */ diff --git a/rtos/freeRTOS/freertos_kernel/portable/CMakeLists.txt b/rtos/freeRTOS/freertos_kernel/portable/CMakeLists.txt new file mode 100644 index 000000000..149ebb6bc --- /dev/null +++ b/rtos/freeRTOS/freertos_kernel/portable/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(GCC/RI5CY-GAP9) diff --git a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP8/port.c b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP8/port.c index 89627bc75..6ab8d5ded 100644 --- a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP8/port.c +++ b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP8/port.c @@ -32,7 +32,7 @@ /* Scheduler includes. */ #include "FreeRTOS.h" #include "task.h" -#include "system_gap8.h" +#include "device/system_gap8.h" /* Macro definitions. */ #include "chip_specific_extensions/gap8/freertos_risc_v_chip_specific_extensions.h" diff --git a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/CMakeLists.txt b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/CMakeLists.txt new file mode 100644 index 000000000..5a59c6506 --- /dev/null +++ b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/CMakeLists.txt @@ -0,0 +1,21 @@ + +FILE(GLOB SRCS + port.c + ) + + +FILE(GLOB ASM_SRCS + port_asm.S + ) + + +add_library(ri5cy-gap9 STATIC ${ASM_SRCS} ${SRCS}) + +#target_link_libraries(ri5cy-gap9 PRIVATE freertos) +target_link_libraries(ri5cy-gap9 PRIVATE freertos_kernel) +target_link_libraries(ri5cy-gap9 PRIVATE freertos_gap9) +target_link_libraries(ri5cy-gap9 PRIVATE freertos_config_gap9) +target_link_libraries(ri5cy-gap9 PRIVATE pmsis_implem_gap9) +target_link_libraries(ri5cy-gap9 PRIVATE pmsis_freertos) +target_link_libraries(ri5cy-gap9 PRIVATE freertos) +target_include_directories(ri5cy-gap9 PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/chip_specific_extensions/gap9/freertos_risc_v_chip_specific_extensions.h b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/chip_specific_extensions/gap9/freertos_risc_v_chip_specific_extensions.h new file mode 100644 index 000000000..cba495e48 --- /dev/null +++ b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/chip_specific_extensions/gap9/freertos_risc_v_chip_specific_extensions.h @@ -0,0 +1,79 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * 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 furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#if !defined(ASSEMBLY_LANGUAGE) + +/* Control and Status Registers reset values. */ +/* Machine mode with IRQ disabled, after MRET stay in MM. */ +#define portINITIAL_MSTATUS ( 0x1880 ) +/* Retrieve MTVEC address from linker script. */ +extern uint8_t __irq_vector_base_m__; +#define portINITIAL_MEPC ( &__irq_vector_base_m__ ) +#define portINITIAL_MCAUSE ( 0x00000000 ) + +#endif /* ASSEMBLY_LANGUAGE */ + +/* Size of a word, in bytes. */ +#define portWORD_SIZE ( 4 ) +/* Number of chip specific additional extensions. */ +#define portGAP9_ADDITIONAL_EXTENSIONS ( 6 ) + +/* a0 - a7 */ +#define portGAP9_ARGS_REGS ( 8 ) +/* t0 - t6 */ +#define portGAP9_TEMP_REGS ( 7 ) +/* s0 - s11 */ +#define portGAP9_SAVE_REGS ( 12 ) +/* Minimal context size to save for irq handler. */ +/* a0-a7 + t0-t6 + ra */ +#define portGAP9_MINIMAL_CONTEXT_SIZE ( portGAP9_ARGS_REGS + portGAP9_TEMP_REGS + 1 ) +/* General context size. */ +/* ra + a0-a7 + t0-t6 + s0-s11 + mstatus + mepc */ +#define portGAP9_CONTEXT_SIZE ( portGAP9_MINIMAL_CONTEXT_SIZE + portGAP9_SAVE_REGS + 2 ) +/* Chip's additional extensions to save. */ +#define portGAP9_ADDITIONAL_CONTEXT_SIZE ( portGAP9_ADDITIONAL_EXTENSIONS ) +/* GAP8 core total context size. */ +#define portGAP9_FULL_CONTEXT_SIZE ( portGAP9_CONTEXT_SIZE + portGAP9_ADDITIONAL_CONTEXT_SIZE ) + +/* Additionnal extensions. */ +/* Hardware loops. */ +#define LP_START_0 ( 0x7C0 ) +#define LP_END_0 ( 0x7C1 ) +#define LP_COUNT_0 ( 0x7C2 ) +#define LP_START_1 ( 0x7C4 ) +#define LP_END_1 ( 0x7C5 ) +#define LP_COUNT_1 ( 0x7C6 ) + +/* Registers position on stack. */ +#define portGAP9_REG_RA_POS ( 0 ) +#define portGAP9_REG_A0_POS ( 1 ) +#define portGAP9_REG_MSTATUS_POS ( 28 ) +#define portGAP9_REG_MEPC_POS ( 29 ) + +/* Stack alignment. */ +#define portGAP9_STACKALIGN_BYTE ( 16 ) +#define portGAP9_STACKALIGN_MASK ( portGAP9_STACKALIGN_BYTE - 1 ) diff --git a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/port.c b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/port.c new file mode 100644 index 000000000..dd9b00e3d --- /dev/null +++ b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/port.c @@ -0,0 +1,209 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * 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 furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/*----------------------------------------------------------- + * Implementation of functions defined in portable.h for the RI5CY-GAP8 port. + *----------------------------------------------------------*/ + +/* Scheduler includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "pmsis/targets/target.h" +#include "device/system_gap9.h" + +/* Macro definitions. */ +#include "chip_specific_extensions/gap9/freertos_risc_v_chip_specific_extensions.h" + +/* Internal Functions. */ + +/* Setup timer to enable Systick interruptions. */ +void prvSetupTimerInterrupt( void ); + +#if (portUSING_MPU_WRAPPERS == 1) +/* Setup MPU. */ +void prvSetupMPU( void ) PRIVILEGED_FUNCTION; + +/* + * Checks to see if being called from the context of an unprivileged task, and + * if so raises the privilege level and returns false - otherwise does nothing + * other than return true. + */ +BaseType_t xPortRaisePrivilege( void ); + +/* Reset privilege level after call to xPortRaisePrivilege(). */ +void vPortResetPrivilege( BaseType_t xRunningPrivileged ); +#endif /* portUSING_MPU_WRAPPERS == 1 */ + +/* Scheduler utilities. */ + +/* Critical sections management. */ +void vPortEnter_Critical( void ); +void vPortExit_Critical( void ); +uint32_t uPortSet_Interrupt_Mask_From_ISR( void ); +void vPortClear_Interrupt_Mask_From_ISR( uint32_t irqSet ); + +/* FreeRTOS Handlers in gap8_it.c. */ + +/* Variables. */ +volatile uint32_t ulCriticalNesting = 0ul; + +/*-----------------------------------------------------------*/ +/* See header file for description. */ +StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, + TaskFunction_t pxCode, + void *pvParameters ) +{ + uint32_t stack_size = ( uint32_t ) portGAP9_FULL_CONTEXT_SIZE; + + /* Few bytes on the bottom of the stack. May be useful for debugging. */ + *pxTopOfStack = ( uint32_t ) 0xFEED51AC; + pxTopOfStack--; + pxTopOfStack = ( StackType_t *) ( (uint32_t) pxTopOfStack & (uint32_t) ~portGAP9_STACKALIGN_MASK ); + pxTopOfStack -= stack_size; + for (uint32_t reg = 0; reg < stack_size; reg++) + { + /* GAP9 extensions : Hardware Loop registers. + * Control and status registers saved if R/W. + * General purpose registers saved : ra + a0-a7 + t0-t6 + s0-11. + * sp reg stored in Task Control Block. + */ + pxTopOfStack[reg] = 0x0; + } + pxTopOfStack[portGAP9_REG_RA_POS] = ( StackType_t ) pxCode; /* RA */ + pxTopOfStack[portGAP9_REG_A0_POS] = ( StackType_t ) pvParameters; /* A0 */ + pxTopOfStack[portGAP9_REG_MSTATUS_POS] = ( StackType_t ) portINITIAL_MSTATUS; /* MSTATUS */ + pxTopOfStack[portGAP9_REG_MEPC_POS] = ( StackType_t ) pxCode; /* MEPC */ + +/* + * Task's stack view. + * LOW + * ************* <------ pxTopOfStack + * * ra * + * * a0 * <------ Parameters sent to task + * * a1 * + * * -- * + * * a7 * + * * t0 * + * * -- * + * * t6 * + * * s0 * + * * -- * + * * s11 * + * *-----------* + * * MSTATUS * <------ Initial mstatus for the task + * * MEPC * <------ MEPC contains address of task's function, jump to it after mret. + * *-----------* + * * HW loop * + * *===========* + * * ALIGN * + * *===========* + * * FEED51AC * + * ************* + * HIGH + */ + return pxTopOfStack; +} +/*-----------------------------------------------------------*/ + +void vPortEndScheduler( void ) +{ + /* Do not implement. */ +} +/*-----------------------------------------------------------*/ + +/* Setup Systick timer to generate tick interrupts. */ +void prvSetupTimerInterrupt( void ) +{ + /* Compared value. */ + /* SysTick->CMP_LO = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1ul; */ + system_setup_systick((uint32_t) configTICK_RATE_HZ); +} +/*-----------------------------------------------------------*/ + +#if portUSING_MPU_WRAPPERS == 1 +void prvSetupMPU( void ) +{ +} +/*-----------------------------------------------------------*/ + +void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, + const struct xMEMORY_REGION * const xRegions, + StackType_t *pxBottomOfStack, + uint32_t ulStackDepth ) +{ +} +/*-----------------------------------------------------------*/ + +BaseType_t xPortRaisePrivilege( void ) +{ + return 1; +} +/*-----------------------------------------------------------*/ + +void vPortResetPrivilege( BaseType_t xRunningPrivileged ) +{ + ( void ) xRunningPrivileged; +} +#endif /* portUSING_MPU_WRAPPERS == 1 */ +/*-----------------------------------------------------------*/ + +void vPortEnter_Critical( void ) +{ + portDISABLE_INTERRUPTS(); + /* Increment nesting value everytime a critical section is entered. */ + ulCriticalNesting++; +} +/*-----------------------------------------------------------*/ + +void vPortExit_Critical( void ) +{ + /* Decrement nesting value everytime a critical section is exit. */ + if( ulCriticalNesting > 0 ) + { + ulCriticalNesting--; + if( ulCriticalNesting == 0 ) + { + /* If no more in any critical sections, enable interruptions. */ + portENABLE_INTERRUPTS(); + } + } +} +/*-----------------------------------------------------------*/ + +uint32_t uPortSet_Interrupt_Mask_From_ISR( void ) +{ + /* No nested IRQ, so IRQ are either enabled or disabled. */ + return __disable_irq(); +} +/*-----------------------------------------------------------*/ + +void vPortClear_Interrupt_Mask_From_ISR( uint32_t irqSet ) +{ + __restore_irq(irqSet); + /* No nested IRQ, so IRQ are either enabled or disabled. */ +} +/*-----------------------------------------------------------*/ diff --git a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/port_asm.S b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/port_asm.S new file mode 100644 index 000000000..d1fe0460b --- /dev/null +++ b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/port_asm.S @@ -0,0 +1,250 @@ +/* + * Copyright (c) 2018, GreenWaves Technologies, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * o Neither the name of GreenWaves Technologies, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + .file "port_asm.S" + +#include "chip_specific_extensions/gap9/freertos_risc_v_chip_specific_extensions.h" +/******************************************************************************* + This file contains some macro definitions and functions defined in ASM. + Functions : + *xPortStartScheduler +********************************************************************************/ + +/******************************************************************************* + EXTERNAL VARIABLES & FUNCTIONS +*******************************************************************************/ + .extern pxCurrentTCB + .extern prvSetupTimerInterrupt + .extern ulCriticalNesting +/******************************************************************************/ + + +/******************************************************************************* + MACRO DEFINITION +*******************************************************************************/ + +/******************************************************************************/ + .macro DECLARE Routine + .global \Routine + .func \Routine + .type \Routine, %function + \Routine: + .endm +/******************************************************************************/ + +/******************************************************************************/ + .macro portGAP9_SAVE_ADDITIONAL_CONTEXT + + addi sp, sp, -(portGAP9_ADDITIONAL_CONTEXT_SIZE * portWORD_SIZE) + + /* HW Loop regs. */ + csrr t0, LP_START_0 + sw t0, 0*portWORD_SIZE(sp) + csrr t1, LP_END_0 + sw t1, 1*portWORD_SIZE(sp) + csrr t2, LP_COUNT_0 + sw t2, 2*portWORD_SIZE(sp) + csrr t0, LP_START_1 + sw t0, 3*portWORD_SIZE(sp) + csrr t1, LP_END_1 + sw t1, 4*portWORD_SIZE(sp) + csrr t2, LP_COUNT_1 + sw t2, 5*portWORD_SIZE(sp) + + .endm +/******************************************************************************/ + +/******************************************************************************/ + .macro portGAP9_RESTORE_ADDITIONAL_CONTEXT + + /* HW Loop regs. */ + lw t2, 5*portWORD_SIZE(sp) + csrw LP_COUNT_1, t2 + lw t1, 4*portWORD_SIZE(sp) + csrw LP_END_1, t1 + lw t0, 3*portWORD_SIZE(sp) + csrw LP_START_1, t0 + lw t2, 2*portWORD_SIZE(sp) + csrw LP_COUNT_0, t2 + lw t1, 1*portWORD_SIZE(sp) + csrw LP_END_0, t1 + lw t0, 0*portWORD_SIZE(sp) + csrw LP_START_0, t0 + + addi sp, sp, +(portGAP9_ADDITIONAL_CONTEXT_SIZE * portWORD_SIZE) + + .endm +/******************************************************************************/ + +/******************************************************************************/ + .macro portGAP9_SAVE_CONTEXT + + addi sp, sp, -(portGAP9_CONTEXT_SIZE * portWORD_SIZE) + + /* General purpose registers. */ + sw ra, 0*portWORD_SIZE(sp) + sw a0, 1*portWORD_SIZE(sp) + sw a1, 2*portWORD_SIZE(sp) + sw a2, 3*portWORD_SIZE(sp) + sw a3, 4*portWORD_SIZE(sp) + sw a4, 5*portWORD_SIZE(sp) + sw a5, 6*portWORD_SIZE(sp) + sw a6, 7*portWORD_SIZE(sp) + sw a7, 8*portWORD_SIZE(sp) + sw t0, 9*portWORD_SIZE(sp) + sw t1, 10*portWORD_SIZE(sp) + sw t2, 11*portWORD_SIZE(sp) + sw t3, 12*portWORD_SIZE(sp) + sw t4, 13*portWORD_SIZE(sp) + sw t5, 14*portWORD_SIZE(sp) + sw t6, 15*portWORD_SIZE(sp) + sw s0, 16*portWORD_SIZE(sp) + sw s1, 17*portWORD_SIZE(sp) + sw s2, 18*portWORD_SIZE(sp) + sw s3, 19*portWORD_SIZE(sp) + sw s4, 20*portWORD_SIZE(sp) + sw s5, 21*portWORD_SIZE(sp) + sw s6, 22*portWORD_SIZE(sp) + sw s7, 23*portWORD_SIZE(sp) + sw s8, 24*portWORD_SIZE(sp) + sw s9, 25*portWORD_SIZE(sp) + sw s10, 26*portWORD_SIZE(sp) + sw s11, 27*portWORD_SIZE(sp) + + /* MSTATUS */ + csrr t0, mstatus + sw t0, 28*portWORD_SIZE(sp) + + /* MEPC */ + csrr t0, mepc + sw t0, 29*portWORD_SIZE(sp) + + .endm +/******************************************************************************/ + +/******************************************************************************/ + .macro portGAP9_RESTORE_CONTEXT + + /* MEPC */ + lw t0, 29*portWORD_SIZE(sp) + csrw mepc, t0 + + /* MSTATUS */ + lw t0, 28*portWORD_SIZE(sp) + csrw mstatus, t0 + + /* General purpose registers. */ + lw s11, 27*portWORD_SIZE(sp) + lw s10, 26*portWORD_SIZE(sp) + lw s9, 25*portWORD_SIZE(sp) + lw s8, 24*portWORD_SIZE(sp) + lw s7, 23*portWORD_SIZE(sp) + lw s6, 22*portWORD_SIZE(sp) + lw s5, 21*portWORD_SIZE(sp) + lw s4, 20*portWORD_SIZE(sp) + lw s3, 19*portWORD_SIZE(sp) + lw s2, 18*portWORD_SIZE(sp) + lw s1, 17*portWORD_SIZE(sp) + lw s0, 16*portWORD_SIZE(sp) + lw t6, 15*portWORD_SIZE(sp) + lw t5, 14*portWORD_SIZE(sp) + lw t4, 13*portWORD_SIZE(sp) + lw t3, 12*portWORD_SIZE(sp) + lw t2, 11*portWORD_SIZE(sp) + lw t1, 10*portWORD_SIZE(sp) + lw t0, 9*portWORD_SIZE(sp) + lw a7, 8*portWORD_SIZE(sp) + lw a6, 7*portWORD_SIZE(sp) + lw a5, 6*portWORD_SIZE(sp) + lw a4, 5*portWORD_SIZE(sp) + lw a3, 4*portWORD_SIZE(sp) + lw a2, 3*portWORD_SIZE(sp) + lw a1, 2*portWORD_SIZE(sp) + lw a0, 1*portWORD_SIZE(sp) + lw ra, 0*portWORD_SIZE(sp) + + addi sp, sp, +(portGAP9_CONTEXT_SIZE * portWORD_SIZE) + + .endm +/******************************************************************************/ + +/******************************************************************************/ + .macro portGAP9_SAVE_EPC + + csrr t0, mepc + sw t0, 29*4(sp) + + .endm +/******************************************************************************/ + +/******************************************************************************/ + .macro portGAP9_SAVE_RA + + sw ra, 29*4(sp) + + .endm +/******************************************************************************/ + +/******************************************************************************/ + .macro portSAVE_CONTEXT + + portGAP9_SAVE_ADDITIONAL_CONTEXT + portGAP9_SAVE_CONTEXT + lw tp, pxCurrentTCB + sw sp, 0*0(tp) + + .endm +/******************************************************************************/ + +/******************************************************************************/ + .macro portRESTORE_CONTEXT + + lw tp, pxCurrentTCB + lw sp, 0*0(tp) + portGAP9_RESTORE_CONTEXT + portGAP9_RESTORE_ADDITIONAL_CONTEXT + mret + .endm +/******************************************************************************/ + + +/******************************************************************************* + FUNCTION DEFINITION +*******************************************************************************/ + + /* xPortStartScheduler Function. */ + DECLARE xPortStartScheduler + jal ra, prvSetupTimerInterrupt + ;; la t0, ulCriticalNesting + ;; sw zero, 0*0(t0) + portRESTORE_CONTEXT + .endfunc + +/******************************************************************************/ diff --git a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/portmacro.h b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/portmacro.h new file mode 100644 index 000000000..231a6f501 --- /dev/null +++ b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-GAP9/portmacro.h @@ -0,0 +1,113 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * 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 furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#ifndef PORTMACRO_H +#define PORTMACRO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------- + * Port specific definitions. + * + * The settings in this file configure FreeRTOS correctly for the + * given hardware and compiler. + * + * These settings should not be altered. + *----------------------------------------------------------- + */ + +/* Type definitions. */ +#define portSTACK_TYPE uint32_t +#define portBASE_TYPE int32_t +#define portUBASE_TYPE uint32_t + +typedef portSTACK_TYPE StackType_t; +typedef portBASE_TYPE BaseType_t; +typedef portUBASE_TYPE UBaseType_t; + +#if( configUSE_16_BIT_TICKS == 1 ) +typedef uint16_t TickType_t; +#define portMAX_DELAY ( ( TickType_t ) 0xffff ) +#else +typedef uint32_t TickType_t; +#define portMAX_DELAY ( ( TickType_t ) 0xffffffffUL ) + +/* 32-bit tick type on a 32-bit architecture, so reads of the tick count do + not need to be guarded with a critical section. */ +#define portTICK_TYPE_IS_ATOMIC ( 1 ) +#endif +/*-----------------------------------------------------------*/ + +/* Architecture specifics. */ +#define portSTACK_GROWTH ( -1 ) +#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) +#define portBYTE_ALIGNMENT ( 1 ) +/*-----------------------------------------------------------*/ + +/* Scheduler utilities. */ +extern void vSetPendSV(); + +#define portYIELD() ( vSetPendSV() ) +#define portEND_SWITCHING_ISR( xSwitchRequired ) { if( xSwitchRequired != pdFALSE ) vSetPendSV(); } +#define portYIELD_FROM_ISR( x ) ( portEND_SWITCHING_ISR( x ) ) + +#define portYIELD_WITHIN_API() ( vSetPendSV() ) +/*-----------------------------------------------------------*/ + +/* Critical section management. */ +extern void vPortEnter_Critical( void ); +extern void vPortExit_Critical( void ); +extern uint32_t uPortSet_Interrupt_Mask_From_ISR( void ); +extern void vPortClear_Interrupt_Mask_From_ISR( uint32_t irqSet ); + +#define portSET_INTERRUPT_MASK_FROM_ISR() ( uPortSet_Interrupt_Mask_From_ISR() ) +#define portCLEAR_INTERRUPT_MASK_FROM_ISR( x ) ( vPortClear_Interrupt_Mask_From_ISR( x ) ) + +#define portDISABLE_INTERRUPTS() { __asm__ volatile("csrci mstatus, (0x1 << 3)"); } +#define portENABLE_INTERRUPTS() { __asm__ volatile("csrsi mstatus, (0x1 << 3)"); } + +#define portENTER_CRITICAL() ( vPortEnter_Critical() ) +#define portEXIT_CRITICAL() ( vPortExit_Critical() ) + +/*-----------------------------------------------------------*/ + +/* Task function macros as described on the FreeRTOS.org WEB site. These are +not necessary for to use this port. They are defined so the common demo files +(which build with all the ports) will build. */ +#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) +#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) + +/*-----------------------------------------------------------*/ +#ifdef __cplusplus +} +#endif + +#endif /* PORTMACRO_H */ + diff --git a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-VEGA/port.c b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-VEGA/port.c index d3380c1f0..171269a74 100644 --- a/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-VEGA/port.c +++ b/rtos/freeRTOS/freertos_kernel/portable/GCC/RI5CY-VEGA/port.c @@ -32,7 +32,7 @@ /* Scheduler includes. */ #include "FreeRTOS.h" #include "task.h" -#include "system_vega.h" +#include "device/system_vega.h" /* Macro definitions. */ #include "chip_specific_extensions/vega/freertos_risc_v_chip_specific_extensions.h" diff --git a/rtos/freeRTOS/vendors/gwt/CMakeLists.txt b/rtos/freeRTOS/vendors/gwt/CMakeLists.txt new file mode 100644 index 000000000..ebde141f4 --- /dev/null +++ b/rtos/freeRTOS/vendors/gwt/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(gap9) +add_subdirectory(pmsis) +add_subdirectory(libs) diff --git a/rtos/freeRTOS/vendors/gwt/gap8/src/device/gap8_it.c b/rtos/freeRTOS/vendors/gwt/gap8/src/device/gap8_it.c index e8ff4b232..33a27853f 100644 --- a/rtos/freeRTOS/vendors/gwt/gap8/src/device/gap8_it.c +++ b/rtos/freeRTOS/vendors/gwt/gap8/src/device/gap8_it.c @@ -28,7 +28,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "gap8_it.h" +#include "device/gap8_it.h" #include "pmsis/implem/hal/hal.h" #include "printf.h" #include "pmsis.h" diff --git a/rtos/freeRTOS/vendors/gwt/gap8/src/device/system_gap8.c b/rtos/freeRTOS/vendors/gwt/gap8/src/device/system_gap8.c index 89fb2e129..da84e0e9e 100644 --- a/rtos/freeRTOS/vendors/gwt/gap8/src/device/system_gap8.c +++ b/rtos/freeRTOS/vendors/gwt/gap8/src/device/system_gap8.c @@ -28,7 +28,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "system_gap8.h" +#include "device/system_gap8.h" /* PMSIS includes. */ #include "pmsis.h" diff --git a/rtos/freeRTOS/vendors/gwt/libs/CMakeLists.txt b/rtos/freeRTOS/vendors/gwt/libs/CMakeLists.txt new file mode 100644 index 000000000..bb1533a7a --- /dev/null +++ b/rtos/freeRTOS/vendors/gwt/libs/CMakeLists.txt @@ -0,0 +1,18 @@ +FILE(GLOB SRCS + src/errno.c + src/stdlib.c + src/string.c + ) + + +FILE(GLOB ASM_SRCS + ) + +add_library(freertos_libs STATIC ${ASM_SRCS} ${SRCS}) + +add_subdirectory(printf) + +target_include_directories(freertos_libs PUBLIC "include") +target_link_libraries(freertos_libs PRIVATE freertos_gap9) +target_link_libraries(freertos_libs PRIVATE freertos_printf) + diff --git a/rtos/freeRTOS/vendors/gwt/libs/printf/CMakeLists.txt b/rtos/freeRTOS/vendors/gwt/libs/printf/CMakeLists.txt new file mode 100644 index 000000000..a4d01558b --- /dev/null +++ b/rtos/freeRTOS/vendors/gwt/libs/printf/CMakeLists.txt @@ -0,0 +1,23 @@ + +FILE(GLOB SRCS + printf.c + ) + + +FILE(GLOB ASM_SRCS + ) + +add_library(freertos_printf STATIC ${ASM_SRCS} ${SRCS}) + +target_include_directories(freertos_printf PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") +target_link_libraries(freertos_printf PRIVATE freertos) + +if(NOT "${CMAKE_BUILD_TYPE}" EQUAL "Release") + target_link_libraries(freertos_printf PRIVATE -lgcc) +else() + target_compile_options(freertos_printf PRIVATE + "-DPRINTF_DISABLE_SUPPORT_FLOAT -DPRINTF_DISABLE_SUPPORT_EXPONENTIAL") +endif() + +#target_compile_options(freertos_printf PRIVATE -O3) + diff --git a/rtos/freeRTOS/vendors/gwt/libs/printf/printf.c b/rtos/freeRTOS/vendors/gwt/libs/printf/printf.c index 8a700add4..eee207e4c 100644 --- a/rtos/freeRTOS/vendors/gwt/libs/printf/printf.c +++ b/rtos/freeRTOS/vendors/gwt/libs/printf/printf.c @@ -58,12 +58,14 @@ #define PRINTF_FTOA_BUFFER_SIZE 32U #endif +//#define PRINTF_DISABLE_SUPPORT_FLOAT // support for the floating point type (%f) // default: activated #ifndef PRINTF_DISABLE_SUPPORT_FLOAT #define PRINTF_SUPPORT_FLOAT #endif +//#define PRINTF_DISABLE_SUPPORT_EXPONENTIAL // support for exponential floating point notation (%e/%g) // default: activated #ifndef PRINTF_DISABLE_SUPPORT_EXPONENTIAL @@ -82,6 +84,7 @@ #define PRINTF_MAX_FLOAT 1e9 #endif +#define PRINTF_DISABLE_SUPPORT_LONG_LONG // support for the long long types (%llu or %p) // default: activated #ifndef PRINTF_DISABLE_SUPPORT_LONG_LONG diff --git a/rtos/freeRTOS/vendors/gwt/libs/src/stdlib.c b/rtos/freeRTOS/vendors/gwt/libs/src/stdlib.c index 58569c04d..b182fd1eb 100644 --- a/rtos/freeRTOS/vendors/gwt/libs/src/stdlib.c +++ b/rtos/freeRTOS/vendors/gwt/libs/src/stdlib.c @@ -30,12 +30,12 @@ #include "stdlib.h" #if defined(__GAP8__) -#include "system_gap8.h" +#include "device/system_gap8.h" #else #if defined(__VEGA__) -#include "system_vega.h" +#include "device/system_vega.h" #else -#include "system_gap9.h" +#include "device/system_gap9.h" #endif #endif /* __GAP8__ */ diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/CMakeLists.txt b/rtos/freeRTOS/vendors/gwt/pmsis/CMakeLists.txt new file mode 100644 index 000000000..36fd8d5c6 --- /dev/null +++ b/rtos/freeRTOS/vendors/gwt/pmsis/CMakeLists.txt @@ -0,0 +1,20 @@ +# Driver sources +FILE(GLOB SRCS + ) + + +FILE(GLOB ASM_SRCS + ) + +add_library(pmsis_freertos INTERFACE) + +target_include_directories(pmsis_freertos INTERFACE "include") +#target_include_directories(pmsis_freertos INTERFACE "rtos/include") + +#target_link_libraries(pmsis_freertos PRIVATE pmsis_api) +#target_link_libraries(pmsis_freertos PRIVATE freertos_kernel) +#target_link_libraries(pmsis_freertos PRIVATE freertos_config_gap9) +#target_link_libraries(pmsis_freertos PRIVATE ri5cy-gap9) + +add_subdirectory(rtos) +add_subdirectory(backend) diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/backend/CMakeLists.txt b/rtos/freeRTOS/vendors/gwt/pmsis/backend/CMakeLists.txt new file mode 100644 index 000000000..500a71d20 --- /dev/null +++ b/rtos/freeRTOS/vendors/gwt/pmsis/backend/CMakeLists.txt @@ -0,0 +1,7 @@ +add_library(freertos_pmsis_backend pmsis_backend_native_task_api.c) + +target_link_libraries(freertos_pmsis_backend PRIVATE pmsis_freertos) +target_link_libraries(freertos_pmsis_backend PRIVATE freertos_config_gap9) +target_link_libraries(freertos_pmsis_backend PRIVATE freertos_kernel) +target_link_libraries(freertos_pmsis_backend PRIVATE freertos_gap9) +target_link_libraries(freertos_pmsis_backend PRIVATE freertos) diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/backend/implementation_specific_defines.h b/rtos/freeRTOS/vendors/gwt/pmsis/backend/implementation_specific_defines.h deleted file mode 100644 index a507f2d51..000000000 --- a/rtos/freeRTOS/vendors/gwt/pmsis/backend/implementation_specific_defines.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef __IMPLEMENTATION_SPECIFIC_DEFINES_H__ -#define __IMPLEMENTATION_SPECIFIC_DEFINES_H__ - -#include "stdlib.h" -#include "string.h" - -#if defined(__GAP8__) -#include "system_gap8.h" -#else -#if defined(__VEGA__) -#include "system_vega.h" -#else -#include "system_gap9.h" -#endif -#endif /* __GAP8__ */ - -#define __INC_TO_STRING(x) #x - -#define PMSIS_TASK_EVENT_KERNEL_PRIORITY 2 -#define DEFAULT_MALLOC_INC __INC_TO_STRING(pmsis/rtos/malloc/l2_malloc.h) - -// default malloc for driver structs etc (might not be compatible with udma!) -#define pi_default_malloc(x) pi_fc_l1_malloc(x) -#define pi_default_free(x,y) pi_fc_l1_free(x,y) -#define pi_data_malloc(x) pmsis_l2_malloc(x) -#define pi_data_free(x,y) pmsis_l2_malloc_free(x,y) - -#define PI_TASK_IMPLEM \ - uint8_t destroy; - -#define PI_TASK_IMPLEM_NB_DATA 9 - -#define CLUSTER_TASK_IMPLEM \ - uint32_t cluster_team_mask; - -#define PMSIS_APP_MAIN int main(int argc, char *argv[]) - -#define PREEMPT_DISABLE\ - uint32_t __xx_irq = disable_irq(); - -#define PREEMPT_RESTORE\ - restore_irq(__xx_irq); - -#define PREEMPT_ENABLE\ - enable_irq(); - -//#define PI_INLINE_OCTOSPI_LVL 1 -#if defined(PI_INLINE_OCTOSPI_LVL) && (PI_INLINE_OCTOSPI_LVL != 0) -#define PI_INLINE_OCTOSPI_LVL_0 static inline -#endif /* PI_INLINE_OCTOSPI_LVL */ - -#endif /* __IMPLEMENTATION_SPECIFIC_DEFINES_H__ */ diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_task_api.c b/rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_task_api.c index 80d966cff..48aaa506f 100644 --- a/rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_task_api.c +++ b/rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_task_api.c @@ -1,6 +1,6 @@ -#include "pmsis_backend_native_types.h" +#include "pmsis/backend/pmsis_backend_native_types.h" #include "pmsis.h" -#include "gap_io.h" +#include "driver/gap_io.h" /** * Kickoff the first "main" os task and scheduler diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/implementation_specific_defines.h b/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/implementation_specific_defines.h new file mode 100644 index 000000000..c18724f57 --- /dev/null +++ b/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/implementation_specific_defines.h @@ -0,0 +1,66 @@ +#ifndef __IMPLEMENTATION_SPECIFIC_DEFINES_H__ +#define __IMPLEMENTATION_SPECIFIC_DEFINES_H__ + +#include "stdlib.h" +#include "string.h" + +#if defined(__GAP8__) +#include "device/system_gap8.h" +#else +#if defined(__VEGA__) +#include "device/system_vega.h" +#else +#include "device/system_gap9.h" +#endif +#endif /* __GAP8__ */ + +#define __INC_TO_STRING(x) #x + +#define PMSIS_TASK_EVENT_KERNEL_PRIORITY 2 +#define DEFAULT_MALLOC_INC __INC_TO_STRING(pmsis/rtos/malloc/l2_malloc.h) + +// default malloc for driver structs etc (might not be compatible with udma!) +#define pi_default_malloc(x) pi_fc_l1_malloc(x) +#define pi_default_free(x,y) pi_fc_l1_free(x,y) +#define pi_data_malloc(x) pmsis_l2_malloc(x) +#define pi_data_free(x,y) pmsis_l2_malloc_free(x,y) + +#define PI_TASK_IMPLEM \ + uint8_t destroy; + +#define PI_TASK_IMPLEM_NB_DATA 9 + +#define CLUSTER_TASK_IMPLEM \ + uint32_t cluster_team_mask; + +#define PMSIS_APP_MAIN int main(int argc, char *argv[]) + +#define PREEMPT_DISABLE\ + uint32_t __xx_irq = disable_irq(); + +#define PREEMPT_RESTORE\ + restore_irq(__xx_irq); + +#define PREEMPT_ENABLE\ + enable_irq(); + +//#define PI_INLINE_OCTOSPI_LVL 1 +#if defined(PI_INLINE_OCTOSPI_LVL) && (PI_INLINE_OCTOSPI_LVL != 0) +#define PI_INLINE_OCTOSPI_LVL_0 static inline +#endif /* PI_INLINE_OCTOSPI_LVL */ + +/* Define this flag to enable assert, args check. */ + +#if defined(DEBUG_ASSERT) +#define IMPLEM_SPECIFIC_ASSERT(test) \ + if (!(test)) \ + { \ + printf("PI assertion error in func %s, %s:%d : %s.\n", \ + __func__, __FILE__, (unsigned int)__LINE__, #test); \ + pmsis_exit(-187); \ + } +#else +#define IMPLEM_SPECIFIC_ASSERT(test) ((void) 0) +#endif /* DEBUG_ASSERT */ + +#endif /* __IMPLEMENTATION_SPECIFIC_DEFINES_H__ */ diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_pmu_api.h b/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/pmsis_backend_native_pmu_api.h similarity index 100% rename from rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_pmu_api.h rename to rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/pmsis_backend_native_pmu_api.h diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_task_api.h b/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/pmsis_backend_native_task_api.h similarity index 97% rename from rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_task_api.h rename to rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/pmsis_backend_native_task_api.h index 106fd58ec..3fc2f7763 100644 --- a/rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_task_api.h +++ b/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/pmsis_backend_native_task_api.h @@ -3,7 +3,7 @@ #include "pmsis/pmsis_types.h" #include "FreeRTOS_util.h" -#include "gap_common.h" +#include "driver/gap_common.h" #include "pmsis_gcc.h" #include "pmsis_backend_native_types.h" @@ -74,7 +74,7 @@ static inline void __os_native_api_sem_give(void *sem_object) static inline int __os_native_api_sem_init(pi_sem_t *sem) { sem->sem_object = &sem->sem_object_static; - xSemaphoreCreateCountingStatic(0xFFu, 0, sem->sem_object); + xSemaphoreCreateCountingStatic(0xFFu, 0, (StaticQueue_t*) sem->sem_object); if(sem->sem_object==NULL) { printf("OUT of SEMA\n"); @@ -161,7 +161,7 @@ static inline void __os_native_api_sync_obj_release(void *sync_obj) { uint32_t irq = __disable_irq(); BaseType_t higher_priority_task_woken = pdFALSE; - TaskHandle_t task_handler = sync_obj; + TaskHandle_t task_handler = (TaskHandle_t) sync_obj; vTaskNotifyGiveFromISR(task_handler, &higher_priority_task_woken); portYIELD_FROM_ISR(higher_priority_task_woken); __restore_irq(irq); diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_types.h b/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/pmsis_backend_native_types.h similarity index 100% rename from rtos/freeRTOS/vendors/gwt/pmsis/backend/pmsis_backend_native_types.h rename to rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis/backend/pmsis_backend_native_types.h diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis_types.h b/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis_types.h index 92af19853..496e7e13a 100644 --- a/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis_types.h +++ b/rtos/freeRTOS/vendors/gwt/pmsis/include/pmsis_types.h @@ -34,27 +34,27 @@ #include "pmsis/pmsis_types.h" #include "FreeRTOS_util.h" -#ifndef IMPLEM_MUTEX_OBJECT_TYPE -#define IMPLEM_MUTEX_OBJECT_TYPE \ +#ifndef IMPLEM_MUTEX_STATIC_TYPE +#define IMPLEM_MUTEX_STATIC_TYPE \ void* mutex_object; #endif struct pi_mutex { - IMPLEM_MUTEX_OBJECT_TYPE + IMPLEM_MUTEX_STATIC_TYPE __pmsis_mutex_func take; __pmsis_mutex_func release; }; -#ifndef IMPLEM_SEM_OBJECT_TYPE -#define IMPLEM_SEM_OBJECT_TYPE \ +#ifndef IMPLEM_SEM_STATIC_TYPE +#define IMPLEM_SEM_STATIC_TYPE \ StaticSemaphore_t sem_object_static;\ void* sem_object; #endif struct pi_sem { - IMPLEM_SEM_OBJECT_TYPE + IMPLEM_SEM_STATIC_TYPE __pi_sem_func take; __pi_sem_func give; }; diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/rtos/.gitignore b/rtos/freeRTOS/vendors/gwt/pmsis/rtos/.gitignore new file mode 100644 index 000000000..3f80a0a6b --- /dev/null +++ b/rtos/freeRTOS/vendors/gwt/pmsis/rtos/.gitignore @@ -0,0 +1,13 @@ +!.gitignore +*~ +*BUILD +*build +*.log +*.swp +tags +*CMakeFiles* +**CMakeCache.txt +**.a +*CMakeCache.txt +**cmake_install.cmake +*cmake_install.cmake diff --git a/rtos/freeRTOS/vendors/gwt/pmsis/rtos/CMakeLists.txt b/rtos/freeRTOS/vendors/gwt/pmsis/rtos/CMakeLists.txt new file mode 100644 index 000000000..f16d4e686 --- /dev/null +++ b/rtos/freeRTOS/vendors/gwt/pmsis/rtos/CMakeLists.txt @@ -0,0 +1,45 @@ +# Find GAP RISCV GCC compiler +find_program(GAP_RISCV_CC riscv32-unknown-elf-gcc) +find_program(GAP_RISCV_CXX riscv32-unknown-elf-g++) +find_program(GAP_RISCV_AR riscv32-unknown-elf-ar) +find_program(GAP_RISCV_OBJDUMP riscv32-unknown-elf-objdump) +find_program(GAP_RISCV_NM riscv32-unknown-elf-nm) +find_program(GAP_RISCV_SIZE riscv32-unknown-elf-size) + +if(NOT GAP_RISCV_CC) + message("Error : could not find GAP RISCV GCC toolchain ! Source sourceme.sh in SDK !") +else() + set(GAP_RISCV_ASM ${GAP_RISCV_CC}) + # message("GAP RISCV GCC=" ${GAP_RISCV_CC}) +endif() + +# Driver sources +FILE(GLOB SRCS + event_kernel/event_kernel.c + malloc/cl_l1_malloc.c + malloc/fc_l1_malloc.c + malloc/l2_malloc.c + malloc/malloc_external.c + malloc/malloc_internal.c + malloc/pi_malloc.c + mem_slab/mem_slab.c + os/device.c + os/pmsis_task.c + pi_log.c + ) + + +FILE(GLOB ASM_SRCS + ) + +add_library(pmsis_rtos STATIC ${ASM_SRCS} ${SRCS}) + + +target_link_libraries(pmsis_rtos PRIVATE pmsis_freertos) +target_link_libraries(pmsis_rtos PRIVATE freertos) +target_link_libraries(pmsis_rtos PRIVATE pmsis_api) +target_link_libraries(pmsis_rtos PRIVATE freertos_config_gap9) +target_link_libraries(pmsis_rtos PRIVATE ri5cy-gap9) + +target_include_directories(pmsis_rtos PUBLIC "include") +target_include_directories(pmsis_rtos PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/rtos/freeRTOS/vendors/gwt/rules/freeRTOS_rules.mk b/rtos/freeRTOS/vendors/gwt/rules/freeRTOS_rules.mk index 6693f5c5d..96a66c543 100644 --- a/rtos/freeRTOS/vendors/gwt/rules/freeRTOS_rules.mk +++ b/rtos/freeRTOS/vendors/gwt/rules/freeRTOS_rules.mk @@ -13,7 +13,9 @@ TRC_MAKE= endif # VERBOSE platform ?= board +PRINTF_FLOAT ?= ENABLE +printf_float = $(PRINTF_FLOAT) chip=$(TARGET_CHIP_FAMILY) TARGET_CHIP_VERSION= ifeq ($(TARGET_CHIP), GAP8) @@ -40,7 +42,7 @@ GWT_PMSIS = $(GWT_TARGET)/pmsis GWT_LIBS = $(GWT_TARGET)/libs GWT_DEVICE = $(GWT_TARGET)/$(chip_lowercase)/src/device GWT_DRIVER = $(GWT_TARGET)/$(chip_lowercase)/src/driver -GWT_DEVICE_INC = $(GWT_TARGET)/$(chip_lowercase)/include/device +GWT_DEVICE_INC = $(GWT_TARGET)/$(chip_lowercase)/include GWT_DRIVER_INC = $(GWT_TARGET)/$(chip_lowercase)/include/driver GWT_PMSIS_BACKEND = $(GWT_PMSIS)/backend GWT_PMSIS_IMPLEM = $(GWT_TARGET)/$(chip_lowercase)/pmsis @@ -66,6 +68,10 @@ FREERTOS_FLAGS += -D__riscv__ -D__GAP__ -D__$(chip)__ -D__RISCV_ARCH_GAP__= -DCHIP_VERSION=$(TARGET_CHIP_VERSION) +ifneq ($(printf_float), ENABLE) + FREERTOS_FLAGS += -DPRINTF_DISABLE_SUPPORT_FLOAT -DPRINTF_DISABLE_SUPPORT_EXPONENTIAL +endif + # Main stack size in Bytes. MAIN_STACK_SIZE ?= 2048 MAIN_APP_STACK_SIZE = $(MAIN_STACK_SIZE) @@ -259,7 +265,7 @@ PRINTF_SRC = $(GWT_LIBS)/printf/printf.c INC_PATH = $(FREERTOS_SOURCE_DIR)/include INC_PATH += $(FREERTOS_CONFIG_DIR) $(PORT_DIR) -INC_PATH += $(GWT_TARGET) $(GWT_DEVICE_INC) $(GWT_DRIVER_INC) +INC_PATH += $(GWT_TARGET) $(GWT_TARGET)/$(chip_lowercase)/include $(GWT_DEVICE_INC) $(GWT_DRIVER_INC) INC_PATH += $(GWT_LIBS)/include INC_PATH += $(GWT_LIBS)/printf @@ -275,7 +281,7 @@ PMSIS_SRC += $(PMSIS_BSP_SRCS) PMSIS_SRC += $(PMSIS_RTOS_SRCS) PMSIS_INC_PATH = $(GWT_PMSIS)/include/ $(GWT_PMSIS_API)/include/ -PMSIS_INC_PATH += $(GWT_PMSIS_BACKEND) +PMSIS_INC_PATH += $(GWT_PMSIS_BACKEND)/include PMSIS_INC_PATH += $(PMSIS_IMPLEM_DIR) $(PMSIS_IMPLEM_CHIP_INC) PMSIS_INC_PATH += $(PMSIS_BSP_INC) PMSIS_INC_PATH += $(PMSIS_RTOS_INC) diff --git a/rtos/pmsis/pmsis_api/CMakeLists.txt b/rtos/pmsis/pmsis_api/CMakeLists.txt new file mode 100644 index 000000000..6e9f713db --- /dev/null +++ b/rtos/pmsis/pmsis_api/CMakeLists.txt @@ -0,0 +1,5 @@ +add_library(pmsis_api INTERFACE) + +target_include_directories(pmsis_api INTERFACE "include") +target_include_directories(pmsis_api INTERFACE "include/pmsis/chips") +target_include_directories(pmsis_api INTERFACE "include/pmsis/chips/gap9") diff --git a/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/gap9.h b/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/gap9.h new file mode 100644 index 000000000..abab90ea8 --- /dev/null +++ b/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/gap9.h @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __PMSIS_CHIPS_GAP9_GAP9_H__ +#define __PMSIS_CHIPS_GAP9_GAP9_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +void pi_soc_idle_us(int count); + +void pi_l2_ret_ctrl(void *chunk, int size, int retentive); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/gpio.h b/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/gpio.h new file mode 100644 index 000000000..ed0677989 --- /dev/null +++ b/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/gpio.h @@ -0,0 +1,177 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __PMSIS_CHIPS_GAP9_GPIO_H__ +#define __PMSIS_CHIPS_GAP9_GPIO_H__ + +#include "pmsis/chips/gap9/pad.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \ingroup groupChips + */ + +/** + * \addtogroup GAP9 + * @{ + */ + + +/** + * \defgroup GAP9_Padframe GAP9 Padframe + * + * This part enumerates available GPIOs name on GAP9 chip. + * There are a total of 96 GPIOs. + * + * @} + */ + +#define PI_GPIO_NUM_SHIFT 0 +#define PI_GPIO_NUM_MASK 0xFF +#define PI_GPIO_PAD_SHIFT 8 +#define PI_GPIO_PAD_MASK 0xFF00 +#define PI_GPIO_IS_GPIO_SHIFT 31 +#define PI_GPIO_IS_GPIO_MASK 0x80000000 + +/** + * \addtogroup GAP9_Padframe + * @{ + */ + +/** + * \enum pi_pad_e + * \brief Pad numbers. + * + * List of available GPIO pins. + * This is used to identify pads. + * + * GPIO : + * + * | 31 | |15 8|7 0| + * |---------|---------|---------|----------| + * | IS_GPIO | | PAD_NUM | GPIO_NUM | + */ +typedef enum +{ + PI_GPIO_A00 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_000 << PI_GPIO_PAD_SHIFT) | 0), + PI_GPIO_A01 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_001 << PI_GPIO_PAD_SHIFT) | 1), + PI_GPIO_A02 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_002 << PI_GPIO_PAD_SHIFT) | 2), + PI_GPIO_A03 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_003 << PI_GPIO_PAD_SHIFT) | 3), + PI_GPIO_A04 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_004 << PI_GPIO_PAD_SHIFT) | 4), + PI_GPIO_A05 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_005 << PI_GPIO_PAD_SHIFT) | 5), + PI_GPIO_A06 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_006 << PI_GPIO_PAD_SHIFT) | 6), + PI_GPIO_A07 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_007 << PI_GPIO_PAD_SHIFT) | 7), + PI_GPIO_A08 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_008 << PI_GPIO_PAD_SHIFT) | 8), + PI_GPIO_A09 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_009 << PI_GPIO_PAD_SHIFT) | 9), + PI_GPIO_A10 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_010 << PI_GPIO_PAD_SHIFT) | 10), + PI_GPIO_A11 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_011 << PI_GPIO_PAD_SHIFT) | 11), + PI_GPIO_A12 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_012 << PI_GPIO_PAD_SHIFT) | 12), + PI_GPIO_A13 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_013 << PI_GPIO_PAD_SHIFT) | 13), + PI_GPIO_A14 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_014 << PI_GPIO_PAD_SHIFT) | 14), + PI_GPIO_A15 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_015 << PI_GPIO_PAD_SHIFT) | 15), + PI_GPIO_A16 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_016 << PI_GPIO_PAD_SHIFT) | 16), + PI_GPIO_A17 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_017 << PI_GPIO_PAD_SHIFT) | 17), + PI_GPIO_A18 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_018 << PI_GPIO_PAD_SHIFT) | 18), + PI_GPIO_A19 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_019 << PI_GPIO_PAD_SHIFT) | 19), + PI_GPIO_A20 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_020 << PI_GPIO_PAD_SHIFT) | 20), + PI_GPIO_A21 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_021 << PI_GPIO_PAD_SHIFT) | 21), + PI_GPIO_A22 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_022 << PI_GPIO_PAD_SHIFT) | 22), + PI_GPIO_A23 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_023 << PI_GPIO_PAD_SHIFT) | 23), + PI_GPIO_A24 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_024 << PI_GPIO_PAD_SHIFT) | 24), + PI_GPIO_A25 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_025 << PI_GPIO_PAD_SHIFT) | 25), + PI_GPIO_A26 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_026 << PI_GPIO_PAD_SHIFT) | 26), + PI_GPIO_A27 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_027 << PI_GPIO_PAD_SHIFT) | 27), + PI_GPIO_A28 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_028 << PI_GPIO_PAD_SHIFT) | 28), + PI_GPIO_A29 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_029 << PI_GPIO_PAD_SHIFT) | 29), + PI_GPIO_A30 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_030 << PI_GPIO_PAD_SHIFT) | 30), + PI_GPIO_A31 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_031 << PI_GPIO_PAD_SHIFT) | 31), + PI_GPIO_A32 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_032 << PI_GPIO_PAD_SHIFT) | 32), + PI_GPIO_A33 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_033 << PI_GPIO_PAD_SHIFT) | 33), + PI_GPIO_A34 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_034 << PI_GPIO_PAD_SHIFT) | 34), + PI_GPIO_A35 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_035 << PI_GPIO_PAD_SHIFT) | 35), + PI_GPIO_A36 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_036 << PI_GPIO_PAD_SHIFT) | 36), + PI_GPIO_A37 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_037 << PI_GPIO_PAD_SHIFT) | 37), + PI_GPIO_A38 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_038 << PI_GPIO_PAD_SHIFT) | 38), + PI_GPIO_A39 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_039 << PI_GPIO_PAD_SHIFT) | 39), + PI_GPIO_A40 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_040 << PI_GPIO_PAD_SHIFT) | 40), + PI_GPIO_A41 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_041 << PI_GPIO_PAD_SHIFT) | 41), + PI_GPIO_A42 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_042 << PI_GPIO_PAD_SHIFT) | 42), + PI_GPIO_A43 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_043 << PI_GPIO_PAD_SHIFT) | 43), + PI_GPIO_A44 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_044 << PI_GPIO_PAD_SHIFT) | 44), + PI_GPIO_A45 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_045 << PI_GPIO_PAD_SHIFT) | 45), + PI_GPIO_A46 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_046 << PI_GPIO_PAD_SHIFT) | 46), + PI_GPIO_A47 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_047 << PI_GPIO_PAD_SHIFT) | 47), + PI_GPIO_A48 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_048 << PI_GPIO_PAD_SHIFT) | 48), + PI_GPIO_A49 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_049 << PI_GPIO_PAD_SHIFT) | 49), + PI_GPIO_A50 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_050 << PI_GPIO_PAD_SHIFT) | 50), + PI_GPIO_A51 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_051 << PI_GPIO_PAD_SHIFT) | 51), + PI_GPIO_A52 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_052 << PI_GPIO_PAD_SHIFT) | 52), + PI_GPIO_A53 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_053 << PI_GPIO_PAD_SHIFT) | 53), + PI_GPIO_A54 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_054 << PI_GPIO_PAD_SHIFT) | 54), + PI_GPIO_A55 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_055 << PI_GPIO_PAD_SHIFT) | 55), + PI_GPIO_A56 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_056 << PI_GPIO_PAD_SHIFT) | 56), + PI_GPIO_A57 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_057 << PI_GPIO_PAD_SHIFT) | 57), + PI_GPIO_A58 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_058 << PI_GPIO_PAD_SHIFT) | 58), + PI_GPIO_A59 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_059 << PI_GPIO_PAD_SHIFT) | 59), + PI_GPIO_A60 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_060 << PI_GPIO_PAD_SHIFT) | 60), + PI_GPIO_A61 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_061 << PI_GPIO_PAD_SHIFT) | 61), + PI_GPIO_A62 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_062 << PI_GPIO_PAD_SHIFT) | 62), + PI_GPIO_A63 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_063 << PI_GPIO_PAD_SHIFT) | 63), + PI_GPIO_A64 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_064 << PI_GPIO_PAD_SHIFT) | 64), + PI_GPIO_A65 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_065 << PI_GPIO_PAD_SHIFT) | 65), + PI_GPIO_A66 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_066 << PI_GPIO_PAD_SHIFT) | 66), + PI_GPIO_A67 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_067 << PI_GPIO_PAD_SHIFT) | 67), + PI_GPIO_A68 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_068 << PI_GPIO_PAD_SHIFT) | 68), + PI_GPIO_A69 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_069 << PI_GPIO_PAD_SHIFT) | 69), + PI_GPIO_A70 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_070 << PI_GPIO_PAD_SHIFT) | 70), + PI_GPIO_A71 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_071 << PI_GPIO_PAD_SHIFT) | 71), + PI_GPIO_A72 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_072 << PI_GPIO_PAD_SHIFT) | 72), + PI_GPIO_A73 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_073 << PI_GPIO_PAD_SHIFT) | 73), + PI_GPIO_A74 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_074 << PI_GPIO_PAD_SHIFT) | 74), + PI_GPIO_A75 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_075 << PI_GPIO_PAD_SHIFT) | 75), + PI_GPIO_A76 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_076 << PI_GPIO_PAD_SHIFT) | 76), + PI_GPIO_A77 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_077 << PI_GPIO_PAD_SHIFT) | 77), + PI_GPIO_A78 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_078 << PI_GPIO_PAD_SHIFT) | 78), + PI_GPIO_A79 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_079 << PI_GPIO_PAD_SHIFT) | 79), + PI_GPIO_A80 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_080 << PI_GPIO_PAD_SHIFT) | 80), + PI_GPIO_A81 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_081 << PI_GPIO_PAD_SHIFT) | 81), + PI_GPIO_A82 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_082 << PI_GPIO_PAD_SHIFT) | 82), + PI_GPIO_A83 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_083 << PI_GPIO_PAD_SHIFT) | 83), + PI_GPIO_A84 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_084 << PI_GPIO_PAD_SHIFT) | 84), + PI_GPIO_A85 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_085 << PI_GPIO_PAD_SHIFT) | 85), + PI_GPIO_A86 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_086 << PI_GPIO_PAD_SHIFT) | 86), + PI_GPIO_A87 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_087 << PI_GPIO_PAD_SHIFT) | 87), + PI_GPIO_A88 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_088 << PI_GPIO_PAD_SHIFT) | 88), + PI_GPIO_A89 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_089 << PI_GPIO_PAD_SHIFT) | 89), + PI_GPIO_A90 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_090 << PI_GPIO_PAD_SHIFT) | 90), + PI_GPIO_A91 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_091 << PI_GPIO_PAD_SHIFT) | 91), + PI_GPIO_A92 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_092 << PI_GPIO_PAD_SHIFT) | 92), + PI_GPIO_A93 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_093 << PI_GPIO_PAD_SHIFT) | 93), + PI_GPIO_A94 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_094 << PI_GPIO_PAD_SHIFT) | 94), + PI_GPIO_A95 = ((1 << PI_GPIO_IS_GPIO_SHIFT) | (PI_PAD_095 << PI_GPIO_PAD_SHIFT) | 95) +} pi_gpio_e; + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif +#endif /* __PMSIS_CHIPS_GPIO_PAD_H__ */ diff --git a/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/pad.h b/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/pad.h new file mode 100644 index 000000000..e4202cf79 --- /dev/null +++ b/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/pad.h @@ -0,0 +1,282 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __PMSIS_CHIPS_GAP9_PAD_H__ +#define __PMSIS_CHIPS_GAP9_PAD_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \ingroup groupChips + */ + +/** + * \addtogroup GAP9 + * @{ + */ + + +/** + * \defgroup GAP9_Padframe GAP9 Padframe + * + * This part enumerates GAP9 padframe. + * There are 96 configurable pads. + * + * \addtogroup GAP9_Padframe + * @{ + */ + +/** + * \enum pi_pad_e + * \brief Pad numbers. + * + * This is used to identify pads. + */ +typedef enum +{ + PI_PAD_000 = 0, + PI_PAD_001 = 1, + PI_PAD_002 = 2, + PI_PAD_003 = 3, + PI_PAD_004 = 4, + PI_PAD_005 = 5, + PI_PAD_006 = 6, + PI_PAD_007 = 7, + PI_PAD_008 = 8, + PI_PAD_009 = 9, + PI_PAD_010 = 10, + PI_PAD_011 = 11, + PI_PAD_012 = 12, + PI_PAD_013 = 13, + PI_PAD_014 = 14, + PI_PAD_015 = 15, + PI_PAD_016 = 16, + PI_PAD_017 = 17, + PI_PAD_018 = 18, + PI_PAD_019 = 19, + PI_PAD_020 = 20, + PI_PAD_021 = 21, + PI_PAD_022 = 22, + PI_PAD_023 = 23, + PI_PAD_024 = 24, + PI_PAD_025 = 25, + PI_PAD_026 = 26, + PI_PAD_027 = 27, + PI_PAD_028 = 28, + PI_PAD_029 = 29, + PI_PAD_030 = 30, + PI_PAD_031 = 31, + PI_PAD_032 = 32, + PI_PAD_033 = 33, + PI_PAD_034 = 34, + PI_PAD_035 = 35, + PI_PAD_036 = 36, + PI_PAD_037 = 37, + PI_PAD_038 = 38, + PI_PAD_039 = 39, + PI_PAD_040 = 40, + PI_PAD_041 = 41, + PI_PAD_042 = 42, + PI_PAD_043 = 43, + PI_PAD_044 = 44, + PI_PAD_045 = 45, + PI_PAD_046 = 46, + PI_PAD_047 = 47, + PI_PAD_048 = 48, + PI_PAD_049 = 49, + PI_PAD_050 = 50, + PI_PAD_051 = 51, + PI_PAD_052 = 52, + PI_PAD_053 = 53, + PI_PAD_054 = 54, + PI_PAD_055 = 55, + PI_PAD_056 = 56, + PI_PAD_057 = 57, + PI_PAD_058 = 58, + PI_PAD_059 = 59, + PI_PAD_060 = 60, + PI_PAD_061 = 61, + PI_PAD_062 = 62, + PI_PAD_063 = 63, + PI_PAD_064 = 64, + PI_PAD_065 = 65, + PI_PAD_066 = 66, + PI_PAD_067 = 67, + PI_PAD_068 = 68, + PI_PAD_069 = 69, + PI_PAD_070 = 70, + PI_PAD_071 = 71, + PI_PAD_072 = 72, + PI_PAD_073 = 73, + PI_PAD_074 = 74, + PI_PAD_075 = 75, + PI_PAD_076 = 76, + PI_PAD_077 = 77, + PI_PAD_078 = 78, + PI_PAD_079 = 79, + PI_PAD_080 = 80, + PI_PAD_081 = 81, + PI_PAD_082 = 82, + PI_PAD_083 = 83, + PI_PAD_084 = 84, + PI_PAD_085 = 85, + PI_PAD_086 = 86, + PI_PAD_087 = 87, + PI_PAD_088 = 88, + PI_PAD_089 = 89, + PI_PAD_090 = 90, + PI_PAD_091 = 91, + PI_PAD_092 = 92, + PI_PAD_093 = 93, + PI_PAD_094 = 94, + PI_PAD_095 = 95, + PI_PAD_096 = 96, + PI_PAD_097 = 97, + PI_PAD_098 = 98, + PI_PAD_099 = 99, + PI_PAD_100 = 100 +} pi_pad_e; + +/** + * \cond IMPLEM + */ +/* Default pad function, alternate 2. */ +#define PI_PAD_036_UART3_CTS_FUNC2 ( 2 ) +#define PI_PAD_037_UART3_RTS_FUNC2 ( 2 ) +#define PI_PAD_082_UART4_RX_FUNC2 ( 2 ) +#define PI_PAD_083_UART4_TX_FUNC2 ( 2 ) +#define PI_PAD_084_UART4_CTS_FUNC2 ( 2 ) +#define PI_PAD_085_UART4_RTS_FUNC2 ( 2 ) + +/** + * \endcond IMPLEM + */ + + +/** + * \enum pi_pad_mux_group_sel_e + * \brief Pad mux groups values. + * + * This is used to configure the mux group for customizable pads. + */ +typedef enum +{ + PI_PAD_MUX_GROUP_SPI0_CS0 = 0x00, + PI_PAD_MUX_GROUP_SPI0_CS1 = 0x01, + PI_PAD_MUX_GROUP_SPI0_CS2 = 0x02, + PI_PAD_MUX_GROUP_SPI0_CS3 = 0x03, + PI_PAD_MUX_GROUP_SPI1_CS0 = 0x04, + PI_PAD_MUX_GROUP_UART3_TX = 0x05, + PI_PAD_MUX_GROUP_SPI1_CS1 = 0x06, + PI_PAD_MUX_GROUP_UART3_RX = 0x07, + PI_PAD_MUX_GROUP_I2C0_SDA = 0x08, + PI_PAD_MUX_GROUP_I2C0_SCL = 0x09, + PI_PAD_MUX_GROUP_I2C1_SDA = 0x0A, + PI_PAD_MUX_GROUP_CSI2_SDA = 0x0B, + PI_PAD_MUX_GROUP_I2C1_SCL = 0x0C, + PI_PAD_MUX_GROUP_CSI2_SCL = 0x0D, + PI_PAD_MUX_GROUP_I2C2_SDA = 0x0E, + PI_PAD_MUX_GROUP_UART2_CTS = 0x0F, + PI_PAD_MUX_GROUP_I2C2_SCL = 0x10, + PI_PAD_MUX_GROUP_UART2_RTS = 0x11, + PI_PAD_MUX_GROUP_UART0_RX = 0x12, + PI_PAD_MUX_GROUP_UART0_TX = 0x13, + PI_PAD_MUX_GROUP_UART0_CTS = 0x14, + PI_PAD_MUX_GROUP_UART2_RX = 0x15, + PI_PAD_MUX_GROUP_UART0_RTS = 0x16, + PI_PAD_MUX_GROUP_UART2_TX = 0x17, + PI_PAD_MUX_GROUP_UART1_RX = 0x18, + PI_PAD_MUX_GROUP_PWM2 = 0x19, + PI_PAD_MUX_GROUP_PWM4 = 0x1A, + PI_PAD_MUX_GROUP_UART1_TX = 0x1B, + PI_PAD_MUX_GROUP_PWM3 = 0x1C, + PI_PAD_MUX_GROUP_PWM5 = 0x1D, + PI_PAD_MUX_GROUP_PWM0 = 0x1E, + PI_PAD_MUX_GROUP_UART1_CTS = 0x1F, + PI_PAD_MUX_GROUP_PWM6 = 0x20, + PI_PAD_MUX_GROUP_PWM1 = 0x21, + PI_PAD_MUX_GROUP_UART1_RTS = 0x22, + PI_PAD_MUX_GROUP_PWM7 = 0x23, +} pi_pad_mux_group_sel_e; + + +/** + * \brief Set the mux group of one pad. + * + * This function can be used to configure the mux group of the specified pad + * in the case that it supports several mux groups. + * + * \param pad Pad number. + * \param function Pad mux group. + */ +void pi_pad_set_mux_group(pi_pad_e pad, pi_pad_mux_group_sel_e group_value); + + + +/** + * \enum pi_pad_sleep_e + * \brief Pad identifiers for configuring sleep configuration. + * + * This is used to configure the pads in sleep mode. + */ +typedef enum +{ + PI_PAD_SLEEP_CFG_PULL_DOWN = (1 << 0), + PI_PAD_SLEEP_CFG_PULL_UP = (1 << 1), + PI_PAD_SLEEP_CFG_DRIVER_STRENGTH_0 = (0 << 2), + PI_PAD_SLEEP_CFG_DRIVER_STRENGTH_1 = (1 << 2), + PI_PAD_SLEEP_CFG_DRIVER_STRENGTH_2 = (2 << 2), + PI_PAD_SLEEP_CFG_DRIVER_STRENGTH_3 = (3 << 2), + PI_PAD_SLEEP_CFG_OUTPUT_VALUE_0 = (0 << 4), + PI_PAD_SLEEP_CFG_OUTPUT_VALUE_1 = (1 << 4), + PI_PAD_SLEEP_CFG_OUTPUT_DISABLED = (1 << 5), + PI_PAD_SLEEP_CFG_OUTPUT_ENABLED = (0 << 5), +} pi_pad_sleep_cfg_e; + + +/** + * \brief Set a pad configuration in deep sleep mode. + * + * This function can be used to configure the pad + * when the chip is in deep sleep mode. + * + * \param pad Pad number. + * \param cfg Pad config. + */ +void pi_pad_set_sleep_cfg(pi_pad_e pad, pi_pad_sleep_cfg_e cfg); + + +/** + * \brief Force the pads deep sleep mode configuration also in normal mode + * + * This function can be used to keep the pads sleep configuration also applied + * when the chip is not in deep sleep mode. This allows keeping the settings + * until the pads are configured again after wakeup. + * + * \param enabled Force deep sleep configuration if it is 1 + */ +void pi_pad_sleep_cfg_force(int enabled); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif +#endif /* __PMSIS_CHIPS_GAP9_PAD_H__ */ diff --git a/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/pmu.h b/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/pmu.h new file mode 100644 index 000000000..f5d5e48fd --- /dev/null +++ b/rtos/pmsis/pmsis_api/include/pmsis/chips/gap9/pmu.h @@ -0,0 +1,236 @@ +/* + * Copyright (C) 2020 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __PI_CHIPS_GAP9_PMU_H__ +#define __PI_CHIPS_GAP9_PMU_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \ingroup groupChips + */ + +/** + * \addtogroup GAP9 + * @{ + */ + +/** + * \defgroup GAP9_PMU GAP9 PMU + * + * This part enumerates GAP8 power domains and other elements needed to configure + * PMU. + * + * 3 devices can be used to wake up the chip form deep sleep or retentive deep sleep: + * * RTC + * * GPIO(16 available from GPIO_00 to GPIO_15. + * * SPI slave + * + * \addtogroup GAP9_PMU + * \{ + */ + +/** + * \cond IMPLEM + */ +/* Wakeup mode. */ +#define PI_PMU_WAKEUP_MODE_RTC_OFF ( 0 ) +#define PI_PMU_WAKEUP_MODE_GPIO_OFF ( 1 ) +#define PI_PMU_WAKEUP_MODE_SPIS_OFF ( 2 ) +#define PI_PMU_WAKEUP_MODE(mode) ( 1 << (mode) ) + +/* Wakeup sequence. */ +#define PI_PMU_WAKEUP_MRAM_OFF ( 0 ) +#define PI_PMU_WAKEUP_CL_OFF ( 1 ) +#define PI_PMU_WAKEUP_SFU_OFF ( 26 ) +#define PI_PMU_WAKEUP_SEQUENCE(mram, cl, sfu) ((((mram) << PI_PMU_WAKEUP_MRAM_OFF) | \ + ((cl) << PI_PMU_WAKEUP_CL_OFF)) + \ + ((sfu) * PI_PMU_WAKEUP_SFU_OFF)) +/** + * \endcond IMPLEM + */ + +/** + * \enum pi_pmu_domain_e + * + * \brief PMU domains. + * + * This is used to identify power domains on GAP9. + */ +typedef enum +{ + PI_PMU_DOMAIN_SOC = 0, /*!< SOC power domain. */ + PI_PMU_DOMAIN_CL = 1, /*!< Cluster power domain. */ + PI_PMU_DOMAIN_CSI = 2, /*!< CSI power domain. */ + PI_PMU_DOMAIN_MRAM = 3, /*!< MRAM power domain. */ + PI_PMU_DOMAIN_SFU = 4 /*!< SFU power domain. */ +} pi_pmu_domain_e; + + +/** + * \enum pi_pmu_boot_state_e + * + * \brief Wakeup boot state + */ +typedef enum _pi_pmu_boot_state +{ + PI_PMU_BOOT_COLD = 0, /*!< Cold boot : reset boot, powerup boot. */ + PI_PMU_BOOT_DEEP_SLEEP = 1, /*!< Warm boot : boot after sleep, cold boot after. */ + PI_PMU_BOOT_RET_DEEP_SLEEP = 2 /*!< Warm boot : boot after deep sleep, saved FLL and PMU config are restored. */ +} pi_pmu_boot_state_e; + +/** + * \enum pi_pmu_sleep_mode_e + * + * \brief Sleep mode + */ +typedef enum _pi_pmu_sleep_mode +{ + PI_PMU_SLEEP_MODE_DS = 0, /*!< Deep sleep. Cold boot at reboot. */ + PI_PMU_SLEEP_MODE_RET_DS = 1 /*!< Sleep/retentive mode. Memories can be saved. */ +} pi_pmu_sleep_mode_e; + +/** + * \enum pi_pmu_domain_state_e + * + * \brief Domain state. + */ +typedef enum _pi_pmu_domain_state +{ + PI_PMU_DOMAIN_STATE_OFF = 0, /*!< Domain is off. */ + PI_PMU_DOMAIN_STATE_ON = 1 /*!< Domain is on. */ +} pi_pmu_domain_state_e; + +/** + * \enum pi_pmu_gpio_wakeup_event_e + * + * \brief GPIO wake up event + */ +typedef enum _pi_pmu_gpio_wakeup_event +{ + PI_PMU_GPIO_DISABLED = 0x00, /*!< GPIO disabled. */ + PI_PMU_GPIO_HIGH = 0x01, /*!< Wake up on high signal. */ + PI_PMU_GPIO_LOW = 0x02 /*!< Wake up on low signal. */ +} pi_pmu_gpio_wakeup_event_e; + +/** + * \enum pi_pmu_wakeup_mode_e + * + * \brief External wake up device. + */ +typedef enum _pi_pmu_wakeup_mode +{ + PI_PMU_WAKEUP_RTC = PI_PMU_WAKEUP_MODE(PI_PMU_WAKEUP_MODE_RTC_OFF), /*!< Wake up by RTC. */ + PI_PMU_WAKEUP_GPIO = PI_PMU_WAKEUP_MODE(PI_PMU_WAKEUP_MODE_GPIO_OFF), /*!< Wake up by GPIO. */ + PI_PMU_WAKEUP_SPISLAVE = PI_PMU_WAKEUP_MODE(PI_PMU_WAKEUP_MODE_SPIS_OFF) /*!< Wake up by SPI Slave. */ +} pi_pmu_wakeup_mode_e; + +/** + * \enum pi_pmu_wakeup_state_e + * + * \brief PMU wakeup domains state after DS or DS_RET. + * + * This is used to identify power domains turned on/off at wakeup after + * a deep sleep or deep sleep retentive. + */ +typedef enum _pi_pmu_wakeup_state +{ + PI_PMU_WAKEUP_SEQUENCE_SOC_ON = 0x0, /*!< ON: SOC | OFF: MRAM, CL, SFU. */ + PI_PMU_WAKEUP_SEQUENCE_SOC_MRAM_ON = 0x1, /*!< ON: SOC, MRAM | OFF: CL, SFU. */ + PI_PMU_WAKEUP_SEQUENCE_SOC_CL_ON = 0x2, /*!< ON: SOC, CL | OFF: MRAM, SFU. */ + PI_PMU_WAKEUP_SEQUENCE_SOC_CL_MRAM_ON = 0x3, /*!< ON: SOC, MRAM, CL | OFF: SFU. */ + PI_PMU_WAKEUP_SEQUENCE_SOC_SFU_ON = 0x4, /*!< ON: SOC, SFU | OFF: MRAM, CL. */ + PI_PMU_WAKEUP_SEQUENCE_SOC_SFU_MRAM_ON = 0x5, /*!< ON: SOC, SFU, MRAM | OFF: CL. */ + PI_PMU_WAKEUP_SEQUENCE_SOC_SFU_CL_ON = 0x6, /*!< ON: SOC, SFU, CL | OFF: MRAM. */ + PI_PMU_WAKEUP_SEQUENCE_SOC_SFU_CL_MRAM_ON = 0x7 /*!< ON: SOC, SFU, MRAM, CL | OFF:. */ +} pi_pmu_wakeup_state_e; + +/** + * \struct pi_pmu_sleep_conf_s + * + * \brief Sleep config structure. + */ +struct pi_pmu_sleep_conf_s +{ + uint32_t gpio_mask; /*!< GPIO pin used for wake up. */ + uint8_t fll_on; /*!< Restore fll settings. */ + pi_pmu_sleep_mode_e sleep_mode; /*!< Sleep mode. */ + pi_pmu_wakeup_mode_e wakeup_mode; /*!< Wakeup mode RTC, GPIO or SPI slave. */ + pi_pmu_wakeup_state_e wakeup_state; /*!< Wakeup sequence. */ +}; + + +/** + * \brief Change power domain state. + * + * This function is used to power on/off a power domain(cf \ref pi_pmu_domain_e). + * + * \param pd Power domain. + * \param state Power ON/OF. + */ +void pi_pmu_power_domain_change(pi_pmu_domain_e domain, pi_pmu_domain_state_e state); + +/** + * \brief Change power domain state. + * + * This function is used to power on/off a power domain(cf \ref pi_pmu_domain_e). + * Same as pi_pmu_power_domain_change(), with this function, user has the possibilty + * to do other things while waiting for the end of power domain change. + * + * \param pd Power domain. + * \param state Power ON/OF. + * \param task Event task used to notify when action is completed. + */ +void pi_pmu_power_domain_change_async(pi_pmu_domain_e domain, pi_pmu_domain_state_e state, + pi_task_t *task); + +/** + * \brief Get event that woke up SoC. + * + * This function is used to know which event woke up the chip from deep sleep. + * + * \param domain Power domain(SoC). + * + * \return WAKEUP_EVENT Event that woke up the chip(\ref pi_pmu_wakeup_mode_e). + */ +pi_pmu_wakeup_mode_e pi_pmu_wakeup_event_get(pi_pmu_domain_e domain); + +/** + * \brief Get external wakeup pins. + * + * This function returns the GPIO pin number that has been used to wakeup the + * chip, in case chip has been woken up by a GPIO. + * + * \param domain Power domain(SoC). + * + * \return GPIO_ID GPIO pin number. + */ +uint32_t pi_pmu_wakeup_ext_event_get(pi_pmu_domain_e domain); + +/** + * \} + */ + +/** + * \} + */ + +#ifdef __cplusplus +} +#endif +#endif /* __PI_CHIPS_GAP9_PMU_H__ */ diff --git a/rtos/pmsis/pmsis_api/include/pmsis/rtos/assert.h b/rtos/pmsis/pmsis_api/include/pmsis/rtos/assert.h index a2e59ed95..14e28db83 100644 --- a/rtos/pmsis/pmsis_api/include/pmsis/rtos/assert.h +++ b/rtos/pmsis/pmsis_api/include/pmsis/rtos/assert.h @@ -24,13 +24,8 @@ extern "C" { #endif -#define pi_assert(test) \ - if (!(test)) \ - { \ - printf("PMSIS assertion error in %s, %s:%d :\n",__func__, __FILE__, (unsigned int)__LINE__); \ - printf("%s\n", #test); \ - pmsis_exit(-1); \ - } +/** Assert used throughout all PMSIS functions. Must be implemented before use. */ +#define pi_assert(test) IMPLEM_SPECIFIC_ASSERT(test) #ifdef __cplusplus } diff --git a/rtos/pmsis/pmsis_bsp/.gitmodules b/rtos/pmsis/pmsis_bsp/.gitmodules new file mode 100644 index 000000000..e69de29bb diff --git a/rtos/pmsis/pmsis_bsp/CMakeLists.txt b/rtos/pmsis/pmsis_bsp/CMakeLists.txt new file mode 100644 index 000000000..77c951b92 --- /dev/null +++ b/rtos/pmsis/pmsis_bsp/CMakeLists.txt @@ -0,0 +1,174 @@ +set(BSP_READFS_SRC fs/read_fs/read_fs.c) +set(BSP_HOSTFS_SRC fs/host_fs/semihost.c fs/host_fs/host_fs.c) +set(BSP_LFS_SRC fs/lfs/lfs.c fs/lfs/lfs_util.c fs/lfs/pi_lfs.c) +set(BSP_FS_SRC fs/fs.c) +set(BSP_FLASH_SRC + flash/flash.c partition/partition.c partition/flash_partition.c crc/md5.c + ) +set(BSP_HYPERFLASH_SRC flash/hyperflash/hyperflash.c) +set(BSP_SPIFLASH_SRC flash/spiflash/spiflash.c) +set(BSP_HYPERRAM_SRC ram/hyperram/hyperram.c) +set(BSP_SPIRAM_SRC ram/spiram/spiram.c) +set(BSP_RAM_SRC ram/ram.c ram/alloc_extern.c) +set(BSP_OTA_SRC ota/ota.c ota/ota_utility.c ota/updater.c) +set(BSP_BOOTLOADER_SRC bootloader/bootloader_utility.c) +set(BSP_NINA_SRC transport/transport.c transport/nina_w10/nina_w10.c) +set(BSP_24XX1025_SRC eeprom/24XX1025.c) +set(BSP_VIRTUAL_EEPROM_SRC eeprom/virtual_eeprom.c) +set(BSP_MRAM_SRC flash/mram/mram-v2.c) +set(BSP_OSPI_FLASH_SRC flash/spiflash/atxp032.c) +set(BSP_OSPI_RAM_SRC ram/spiram/aps25xxxn.c) +set(BSP_CAMERA_SRC camera/camera.c) +set(BSP_HIMAX_SRC camera/himax/himax.c) +set(BSP_HM0360_SRC camera/hm0360/hm0360.c) +set(BSP_BLE_NINA_B112_SRC ble/ble.c ble/nina_b112/nina_b112.c ble/nina_b112/nina_b112_old.c) + +set(COMMON_SRC + ${BSP_FLASH_SRC} + ${BSP_FS_SRC} + ${BSP_LFS_SRC} + ${BSP_READFS_SRC} + ${BSP_HOSTFS_SRC} + ${BSP_OTA_SRC} + ${BSP_BOOTLOADER_SRC} + ) + +set(VEGA_SRC + ${COMMON_SRC} + bsp/vega.c + ${BSP_CAMERA_SRC} + ${BSP_HIMAX_SRC} + ${BSP_HYPERFLASH_SRC} + ${BSP_HYPERRAM_SRC} + ${BSP_SPIRAM_SRC} + ${BSP_SPIFLASH_SRC} + ${BSP_RAM_SRC} + eeprom/m24c02.c + ${BSP_24XX1025_SRC} +) + +set(GAP9_SRC + ${COMMON_SRC} + eeprom/24XX1025.c + ${BSP_VIRTUAL_EEPROM_SRC} + bsp/gap9_v2.c + ${BSP_CAMERA_SRC} + ${BSP_HIMAX_SRC} + ${BSP_HYPERFLASH_SRC} + ${BSP_HYPERRAM_SRC} + ${BSP_RAM_SRC} + ${BSP_MRAM_SRC} + ${BSP_OSPI_FLASH_SRC} + ${BSP_OSPI_RAM_SRC} + ${BSP_BLE_NINA_B112_SRC} +) + +set(GAPUINO_SRC + ${COMMON_SRC} + bsp/gapuino.c + ${BSP_CAMERA_SRC} + ${BSP_HIMAX_SRC} + ${BSP_HM0360_SRC} + camera/ov7670/ov7670.c + camera/gc0308/gc0308.c + camera/ov5640/ov5640.c + camera/pixart/pixart.c + display/display.c + display/ili9341/ili9341.c + ${BSP_HYPERFLASH_SRC} + ${BSP_HYPERRAM_SRC} + ${BSP_SPIRAM_SRC} + ${BSP_SPIFLASH_SRC} + ${BSP_NINA_SRC} + ${BSP_RAM_SRC} +) + +set(AI_DECK_SRC + ${COMMON_SRC} + bsp/ai_deck.c + ${BSP_CAMERA_SRC} + ${BSP_HIMAX_SRC} + ${BSP_HYPERFLASH_SRC} + ${BSP_NINA_SRC} + ${BSP_HYPERRAM_SRC} + ${BSP_SPIRAM_SRC} + ${BSP_SPIFLASH_SRC} + ${BSP_RAM_SRC} +) + +set(GAPOC_A_SRC = + ${COMMON_SRC} + bsp/gapoc_a.c + ${BSP_CAMERA_SRC} + camera/mt9v034/mt9v034.c + ${BSP_HYPERFLASH_SRC} + transport/transport.c + transport/nina_w10/nina_w10.c + display/display.c + display/ili9341/ili9341.c + ${BSP_SPIRAM_SRC} + ${BSP_SPIFLASH_SRC} + ${BSP_HYPERRAM_SRC} + ${BSP_RAM_SRC} + ${BSP_BLE_NINA_B112_SRC} +) + +if(${CHIP} STREQUAL "GAP8" AND ${TARGET_CHIP_VERSION} STREQUAL "1") + set(GAPOC_B_SRC + ${COMMON_SRC} + bsp/gapoc_b.c + ${BSP_HYPERFLASH_SRC} + display/display.c + display/ili9341/ili9341.c + ${BSP_HYPERRAM_SRC} + ${BSP_SPIRAM_SRC} + ${BSP_SPIFLASH_SRC} + ${BSP_RAM_SRC} + ${BSP_BLE_NINA_B112_SRC} + camera/pixart/pixart.c + ) +else() + set(GAPOC_B_SRC + ${COMMON_SRC} + bsp/gapoc_b_v2.c + ${BSP_CAMERA_SRC} + ${BSP_HYPERFLASH_SRC} + transport/transport.c + display/display.c + display/ili9341/ili9341.c + ${BSP_HYPERRAM_SRC} + ${BSP_SPIRAM_SRC} + ${BSP_SPIFLASH_SRC} + ${BSP_RAM_SRC} + ${BSP_BLE_NINA_B112_SRC} + camera/thermeye/thermeye.c + camera/ov5640/ov5640.c + ) +endif() # TARGET_CHIP + + + + +if(${BOARD} STREQUAL "gapuino") + set(C_SRCS ${GAPUINO_SRC}) +elseif(${BOARD} STREQUAL "gapoc_a") + set(C_SRCS ${GAPOC_A_SRC}) +elseif(${BOARD} STREQUAL "gapoc_a_revb") + set(C_SRCS ${GAPOC_A_SRC}) +elseif(${BOARD} STREQUAL "gapoc_b") + set(C_SRCS ${GAPOC_B_SRC}) +elseif(${BOARD} STREQUAL "gapoc_b_revb") + set(C_SRCS ${GAPOC_B_SRC}) +elseif(${BOARD} STREQUAL "vega") + set(C_SRCS ${VEGA_SRC}) +elseif(${BOARD} STREQUAL "gap9_v2") + set(C_SRCS ${GAP9_SRC}) +elseif(${BOARD} STREQUAL "ai_deck") + set(C_SRCS ${AI_DECK_SRC}) +endif() + +add_library(bsp STATIC ${C_SRCS}) +target_link_libraries(bsp PRIVATE freertos) + +target_include_directories(bsp PUBLIC include) + diff --git a/rtos/pmsis/pmsis_bsp/bsp/gap9.c b/rtos/pmsis/pmsis_bsp/bsp/gap9.c new file mode 100644 index 000000000..1777081e4 --- /dev/null +++ b/rtos/pmsis/pmsis_bsp/bsp/gap9.c @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2019 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "pmsis.h" + +#include "bsp/bsp.h" +#include "bsp/gap9.h" +#include "bsp/camera/himax.h" +#include "bsp/flash/hyperflash.h" +#include "bsp/ram/hyperram.h" + + +static int __bsp_init_pads_done = 0; + +static void __bsp_init_pads() +{ + if (!__bsp_init_pads_done) + { + __bsp_init_pads_done = 1; + } +} + + +void bsp_hyperram_conf_init(struct pi_hyperram_conf *conf) +{ + conf->ram_start = CONFIG_HYPERRAM_START; + conf->ram_size = CONFIG_HYPERRAM_SIZE; + conf->skip_pads_config = 0; + conf->hyper_itf = CONFIG_HYPERRAM_HYPER_ITF; + conf->hyper_cs = CONFIG_HYPERRAM_HYPER_CS; +} + +int bsp_hyperram_open(struct pi_hyperram_conf *conf) +{ + __bsp_init_pads(); + return 0; +} + + + +void bsp_hyperflash_conf_init(struct pi_hyperflash_conf *conf) +{ + conf->hyper_itf = CONFIG_HYPERFLASH_HYPER_ITF; + conf->hyper_cs = CONFIG_HYPERFLASH_HYPER_CS; +} + +int bsp_hyperflash_open(struct pi_hyperflash_conf *conf) +{ + __bsp_init_pads(); + return 0; +} + + + +void bsp_himax_conf_init(struct pi_himax_conf *conf) +{ + conf->i2c_itf = CONFIG_HIMAX_I2C_ITF; + conf->cpi_itf = CONFIG_HIMAX_CPI_ITF; +} + +int bsp_himax_open(struct pi_himax_conf *conf) +{ + __bsp_init_pads(); + return 0; +} + + + +void bsp_init() +{ +} + + +void pi_bsp_init_profile(int profile) +{ +} + + + +void pi_bsp_init() +{ + pi_bsp_init_profile(PI_BSP_PROFILE_DEFAULT); +} \ No newline at end of file diff --git a/rtos/pmsis/pmsis_bsp/bsp/gap9_v2.c b/rtos/pmsis/pmsis_bsp/bsp/gap9_v2.c new file mode 100644 index 000000000..ddbeee60e --- /dev/null +++ b/rtos/pmsis/pmsis_bsp/bsp/gap9_v2.c @@ -0,0 +1,197 @@ +/* + * Copyright (C) 2019 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "pmsis.h" + +#include "bsp/bsp.h" +#include "bsp/gap9_v2.h" +#include "bsp/camera/himax.h" +#include "bsp/flash/hyperflash.h" +#include "bsp/ram/hyperram.h" +#include "bsp/ram/spiram.h" +#include "bsp/eeprom/24xx1025.h" +#include "bsp/eeprom/virtual_eeprom.h" + +static int __bsp_init_pads_done = 0; + +static void __bsp_init_pads() +{ + if (!__bsp_init_pads_done) + { + __bsp_init_pads_done = 1; + } +} + + +int bsp_24xx1025_open(struct pi_24xx1025_conf *conf) +{ + pi_pad_set_function(CONFIG_24XX1025_I2C_SCL_PAD, CONFIG_24XX1025_I2C_SCL_PADFUN); + pi_pad_set_function(CONFIG_24XX1025_I2C_SDA_PAD, CONFIG_24XX1025_I2C_SDA_PADFUN); + +#ifdef CONFIG_24XX1025_I2C_SCL_PADMUX_GROUP + pi_pad_set_mux_group(CONFIG_24XX1025_I2C_SCL_PAD, CONFIG_24XX1025_I2C_SCL_PADMUX_GROUP); +#endif + +#ifdef CONFIG_24XX1025_I2C_SDA_PADMUX_GROUP + pi_pad_set_mux_group(CONFIG_24XX1025_I2C_SDA_PAD, CONFIG_24XX1025_I2C_SDA_PADMUX_GROUP); +#endif + + return 0; +} + +void bsp_24xx1025_conf_init(struct pi_24xx1025_conf *conf) +{ + conf->i2c_addr = CONFIG_24XX1025_I2C_ADDR; + conf->i2c_itf = CONFIG_24XX1025_I2C_ITF; +} + +void bsp_virtual_eeprom_conf_init(struct pi_virtual_eeprom_conf *conf) +{ + conf->i2c_addr = CONFIG_VIRTUAL_EEPROM_I2C_ADDR; + conf->i2c_itf = CONFIG_VIRTUAL_EEPROM_I2C_ITF; +} + +void bsp_hyperram_conf_init(struct pi_hyperram_conf *conf) +{ + conf->ram_start = CONFIG_HYPERRAM_START; + conf->ram_size = CONFIG_HYPERRAM_SIZE; + conf->skip_pads_config = 0; + conf->hyper_itf = CONFIG_HYPERRAM_HYPER_ITF; + conf->hyper_cs = CONFIG_HYPERRAM_HYPER_CS; +} + + +int bsp_hyperram_open(struct pi_hyperram_conf *conf) +{ + __bsp_init_pads(); + return 0; +} + + +void bsp_spiram_conf_init(struct pi_spiram_conf *conf) +{ + conf->ram_start = CONFIG_SPIRAM_START; + conf->ram_size = CONFIG_SPIRAM_SIZE; + conf->skip_pads_config = 0; + conf->spi_itf = CONFIG_SPIRAM_SPI_ITF; + conf->spi_cs = CONFIG_SPIRAM_SPI_CS; +} + +int bsp_spiram_open(struct pi_spiram_conf *conf) +{ + return 0; +} + + +void bsp_aps25xxxn_conf_init(struct pi_aps25xxxn_conf *conf) +{ + conf->ram_start = CONFIG_APS25XXXN_START; + conf->ram_size = CONFIG_APS25XXXN_SIZE; + conf->spi_itf = CONFIG_APS25XXXN_SPI_ITF; + conf->spi_cs = CONFIG_APS25XXXN_SPI_CS; +} + +int bsp_aps25xxxn_open(struct pi_aps25xxxn_conf *conf) +{ + return 0; +} + + +void bsp_atxp032_conf_init(struct pi_atxp032_conf *conf) +{ + conf->spi_itf = CONFIG_ATXP032_SPI_ITF; + conf->spi_cs = CONFIG_ATXP032_SPI_CS; + conf->baudrate = 200000000; +} + +int bsp_atxp032_open(struct pi_atxp032_conf *conf) +{ + return 0; +} + + +void bsp_spiflash_conf_init(struct pi_spiflash_conf *conf) +{ + conf->size = CONFIG_SPIFLASH_SIZE; + // sector size is in number of KB + conf->sector_size = CONFIG_SPIFLASH_SECTOR_SIZE; + conf->spi_itf = CONFIG_SPIFLASH_SPI_ITF; + conf->spi_cs = CONFIG_SPIFLASH_SPI_CS; +} + +int bsp_spiflash_open(struct pi_spiflash_conf *conf) +{ + return 0; +} + + +void bsp_hyperflash_conf_init(struct pi_hyperflash_conf *conf) +{ + conf->hyper_itf = CONFIG_HYPERFLASH_HYPER_ITF; + conf->hyper_cs = CONFIG_HYPERFLASH_HYPER_CS; +} + +int bsp_hyperflash_open(struct pi_hyperflash_conf *conf) +{ + __bsp_init_pads(); + return 0; +} + + + +void bsp_himax_conf_init(struct pi_himax_conf *conf) +{ + conf->i2c_itf = CONFIG_HIMAX_I2C_ITF; + conf->cpi_itf = CONFIG_HIMAX_CPI_ITF; +} + +int bsp_himax_open(struct pi_himax_conf *conf) +{ + __bsp_init_pads(); + return 0; +} + +void bsp_nina_b112_conf_init(struct pi_nina_b112_conf *conf) +{ + conf->uart_itf = (uint8_t) CONFIG_NINA_B112_UART_ID; +} + +int bsp_nina_b112_open(struct pi_nina_b112_conf *conf) +{ + return 0; +} + +int bsp_nina_b112_open_old() +{ + __bsp_init_pads(); + return 0; +} + +void bsp_init() +{ +} + + +void pi_bsp_init_profile(int profile) +{ +} + + + +void pi_bsp_init() +{ + pi_bsp_init_profile(PI_BSP_PROFILE_DEFAULT); +} diff --git a/rtos/pmsis/pmsis_bsp/camera/epeas_cis001/epeas_cis001.c b/rtos/pmsis/pmsis_bsp/camera/epeas_cis001/epeas_cis001.c new file mode 100644 index 000000000..60e90bd7b --- /dev/null +++ b/rtos/pmsis/pmsis_bsp/camera/epeas_cis001/epeas_cis001.c @@ -0,0 +1,517 @@ + +#include "pmsis.h" +#include "pmsis/rtos/os_frontend_api/pmsis_time.h" +#include "bsp/bsp.h" +#include "bsp/camera/epeas_cis001.h" +#include "epeas_cis001.h" +//#include + + + +PI_L2 uint8_t tx_buffer[4] __attribute__((aligned(32))); // alignment is a requirement for SPI +PI_L2 uint8_t rx_buffer[4] __attribute__((aligned(32))); // alignment is a requirement for SPI + + +typedef struct { + uint8_t addr ; + uint8_t value ; +} spi_req_t; + + +typedef struct { + struct pi_epeas_cis001_conf conf; + + struct pi_device cpi_device; + struct pi_device spi_device; + struct pi_device pwm_device; + struct pi_device gpio_port; + + spi_req_t spi_req; + uint8_t spi_read_value; + + int is_awake; +} epeas_cis001_t; + + + +typedef struct { + uint8_t addr; + uint8_t data; +} epeas_cis001_reg_init_t; + + + +static epeas_cis001_reg_init_t __epeas_cis001_reg_init[] = +{ + {EPEAS_CIS001_SOFT_RESET,1}, + {EPEAS_CIS001_MODE,1}, + {EPEAS_CIS001_PMODE,1}, + {EPEAS_CIS001_PCLK_MODE,1}, + {EPEAS_CIS001_EXPOSURE_B0,0}, + {EPEAS_CIS001_EXPOSURE_B1,3}, + {EPEAS_CIS001_RESOLUTION,0}, + {EPEAS_CIS001_FLIP,3}, + {EPEAS_CIS001_ANALOG_GAIN,6}, + {EPEAS_CIS001_CCLK_CAL,22}, + {EPEAS_CIS001_ABB_EN,0} +}; + + + +static inline int is_spi_active() +{ +#if (defined(__PLATFORM__) && (__PLATFORM__ == ARCHI_PLATFORM_RTL)) || defined(__PLATFORM_RTL__) || defined(__PLATFORM_GVSOC__) + + return 0; + +#else + + return 1; + +#endif +} + + + +static void __epeas_cis001_reg_write(epeas_cis001_t *epeas_cis001, uint8_t addr, uint8_t value) +{ + if (is_spi_active()) + { + tx_buffer[0] = addr; + tx_buffer[1] = value; + pi_spi_send(&epeas_cis001->spi_device, tx_buffer, 8*2 ,PI_SPI_CS_AUTO | PI_SPI_LINES_SINGLE); + + } +} + + + +static uint8_t __epeas_cis001_reg_read(epeas_cis001_t *epeas_cis001, uint8_t addr) +{ + if (is_spi_active()) + { + tx_buffer[0] = addr + 0x80; + pi_spi_transfer(&epeas_cis001->spi_device, tx_buffer, rx_buffer,8*2,PI_SPI_CS_AUTO | PI_SPI_LINES_SINGLE); + return rx_buffer[1]; + } + else + { + return 0; + } +} + + + +static void __epeas_cis001_init_regs(epeas_cis001_t *epeas_cis001) +{ + int32_t i; + for(i=0; i<(int32_t)(sizeof(__epeas_cis001_reg_init)/sizeof(epeas_cis001_reg_init_t)); i++) + { + __epeas_cis001_reg_write(epeas_cis001, __epeas_cis001_reg_init[i].addr, __epeas_cis001_reg_init[i].data); + } +} + +static void __pi_epeas_cis001_stby(epeas_cis001_t *epeas_cis001) +{ + __epeas_cis001_reg_write(epeas_cis001, EPEAS_CIS001_PMODE, 0x01); +} + +static void __pi_epeas_cis001_sleep(epeas_cis001_t *epeas_cis001) +{ + __epeas_cis001_reg_write(epeas_cis001, EPEAS_CIS001_PMODE, 0x02); +} + +static void __pi_epeas_cis001_start(epeas_cis001_t *epeas_cis001) +{ + pi_gpio_pin_write(&epeas_cis001->gpio_port, epeas_cis001->conf.gpio_reset, 1); + pi_pwm_timer_start(&epeas_cis001->pwm_device); +} + +static void __pi_epeas_cis001_stop(epeas_cis001_t *epeas_cis001) +{ + //pi_pwm_timer_stop(&epeas_cis001->pwm_device); + __pi_epeas_cis001_sleep(epeas_cis001); +} + +static void __pi_epeas_cis001_launch_capture(epeas_cis001_t *epeas_cis001) +{ + __epeas_cis001_reg_write(epeas_cis001, (uint8_t) EPEAS_CIS001_CAPTURE, 0x01); +} + + +static void __epeas_cis001_reset(epeas_cis001_t *epeas_cis001) +{ + pi_gpio_pin_write(&epeas_cis001->gpio_port, epeas_cis001->conf.gpio_reset, 0); + pi_time_wait_us(1000); + pi_gpio_pin_write(&epeas_cis001->gpio_port, epeas_cis001->conf.gpio_reset, 1); + pi_time_wait_us(1000); + +} + +static void __epeas_cis001_set_vga(epeas_cis001_t *epeas_cis001) +{ + __epeas_cis001_reg_write(epeas_cis001, EPEAS_CIS001_RESOLUTION, 0x00); +} + + +static void __epeas_cis001_set_qvga(epeas_cis001_t *epeas_cis001) +{ + __epeas_cis001_reg_write(epeas_cis001, EPEAS_CIS001_RESOLUTION, 0x01); +} + + +static void __epeas_cis001_set_qqvga(epeas_cis001_t *epeas_cis001) +{ + __epeas_cis001_reg_write(epeas_cis001, EPEAS_CIS001_RESOLUTION, 0x02); +} + + +static void __epeas_cis001_set_mode(epeas_cis001_t *epeas_cis001, uint8_t mode) +{ + __epeas_cis001_reg_write(epeas_cis001, EPEAS_CIS001_MODE, mode); +} + + +int32_t __epeas_cis001_open(struct pi_device *device) +{ + struct pi_epeas_cis001_conf *conf = (struct pi_epeas_cis001_conf *)device->config; + + epeas_cis001_t *epeas_cis001 = (epeas_cis001_t *)pmsis_l2_malloc(sizeof(epeas_cis001_t)); + if (epeas_cis001 == NULL) return -1; + memcpy(&epeas_cis001->conf, conf, sizeof(*conf)); + + device->data = (void *)epeas_cis001; + + if (bsp_epeas_cis001_open(conf)) + goto error1; + + struct pi_cpi_conf cpi_conf; + pi_cpi_conf_init(&cpi_conf); + cpi_conf.itf = conf->cpi_itf; + pi_open_from_conf(&epeas_cis001->cpi_device, &cpi_conf); + + if (pi_cpi_open(&epeas_cis001->cpi_device)) + goto error1; + + pi_cpi_set_format(&epeas_cis001->cpi_device, PI_CPI_FORMAT_BYPASS_BIGEND); + + struct pi_spi_conf spi_conf; + pi_spi_conf_init(&spi_conf); + spi_conf.itf = conf->spi_itf; + spi_conf.cs = conf->spi_cs; + spi_conf.wordsize = PI_SPI_WORDSIZE_8; + spi_conf.big_endian = 0; + spi_conf.max_baudrate = 1000000; + spi_conf.polarity = 0; + spi_conf.phase = 0; + + pi_open_from_conf(&epeas_cis001->spi_device, &spi_conf); + if (pi_spi_open(&epeas_cis001->spi_device)) + goto error2; + + struct pi_pwm_conf pwm_conf; + pi_pwm_conf_init(&pwm_conf); + pwm_conf.pwm_id = conf->pwm_id; + pwm_conf.ch_id = conf->pwm_channel; //gapA13 + pwm_conf.timer_conf &= ~PI_PWM_CLKSEL_REFCLK_32K; + pwm_conf.timer_conf |= PI_PWM_CLKSEL_FLL; + pi_open_from_conf(&epeas_cis001->pwm_device, &pwm_conf); + + if (pi_pwm_open(&epeas_cis001->pwm_device)) + goto error3; + + pi_pwm_duty_cycle_set(&epeas_cis001->pwm_device, 12000000, 50); + pi_pwm_timer_start(&epeas_cis001->pwm_device); + + + struct pi_gpio_conf gpio_conf; + pi_gpio_conf_init(&gpio_conf); + pi_open_from_conf(&epeas_cis001->gpio_port, &gpio_conf); + if (pi_gpio_open(&epeas_cis001->gpio_port)) + goto error4; + + /*RSTB pin*/ + pi_pad_set_function(PI_PAD_16_A44_RF_PACTRL4,PI_PAD_FUNC1); + pi_gpio_pin_configure(&epeas_cis001->gpio_port, conf->gpio_reset, PI_GPIO_OUTPUT); + pi_gpio_pin_write(&epeas_cis001->gpio_port,conf->gpio_reset,1); + + + /*Capture pin */ + pi_pad_set_function(PI_PAD_31_B11_TIMER0_CH0,PI_PAD_FUNC1); + pi_gpio_pin_configure(&epeas_cis001->gpio_port, conf->gpio_capture, PI_GPIO_OUTPUT); + pi_gpio_pin_write(&epeas_cis001->gpio_port,conf->gpio_capture,0); + + + +#ifdef __GAP9__ + // The rowlen, ur_x and ll_x need to be div by 2 when pixel size is 1 byte. + uint8_t div = 1; +#else + // The rowlen, ur_x and ll_x need to be div by 2 and -1 when pixel size is 1 byte. + // The div and -1 has been integrated in gap8 cpi driver. + uint8_t div = 0; +#endif + uint16_t rowlen=0; + + // If it's not the predefined format + if(epeas_cis001->conf.format>PI_CAMERA_QQVGA){ + rowlen = epeas_cis001->conf.format; + }else if(epeas_cis001->conf.format==PI_CAMERA_QQVGA){ + rowlen = 160+2; + }else{ + rowlen = 320+4; + } + + pi_cpi_set_rowlen(&epeas_cis001->cpi_device, rowlen>>div); + + if (epeas_cis001->conf.roi.slice_en != 0) + pi_cpi_set_slice(&epeas_cis001->cpi_device, epeas_cis001->conf.roi.x>>div, + epeas_cis001->conf.roi.y, + epeas_cis001->conf.roi.w>>div, + epeas_cis001->conf.roi.h); + +#ifdef __GAP9__ + // Reverse the vsync, since the vsync of epeas_cis001 is always 1 during one frame. +#if (defined(__PLATFORM__) && (__PLATFORM__ != ARCHI_PLATFORM_RTL)) || !defined(__PLATFORM_RTL__) + pi_cpi_set_sync_polarity(&epeas_cis001->cpi_device, 1, 0); +#endif +#endif + + epeas_cis001->is_awake = 0; + + __epeas_cis001_reset(epeas_cis001); + + __epeas_cis001_init_regs(epeas_cis001); + + if(epeas_cis001->conf.format==PI_CAMERA_QVGA){ + __epeas_cis001_set_qvga(epeas_cis001); + } + else if(epeas_cis001->conf.format==PI_CAMERA_QQVGA){ + __epeas_cis001_set_qqvga(epeas_cis001); + } + + return 0; + +error4: + pi_cpi_close(&epeas_cis001->cpi_device); + pi_spi_close(&epeas_cis001->spi_device); + pi_pwm_close(&epeas_cis001->pwm_device); + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); + return -4; +error3: + pi_cpi_close(&epeas_cis001->cpi_device); + pi_spi_close(&epeas_cis001->spi_device); + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); + return -3; +error2: + pi_cpi_close(&epeas_cis001->cpi_device); + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); + return -2; +error1: + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); + return -1; +} + + +//This is a copy of open with an additional argument, not very nice but effective +//Otherwise we would need to add an argument to open anche change all user code + +int32_t __epeas_cis001_reopen(struct pi_device *device, pi_camera_opts_e opts) +{ + struct pi_epeas_cis001_conf *conf = (struct pi_epeas_cis001_conf *)device->config; + + epeas_cis001_t *epeas_cis001 = (epeas_cis001_t *)pmsis_l2_malloc(sizeof(epeas_cis001_t)); + if (epeas_cis001 == NULL) return -1; + memcpy(&epeas_cis001->conf, conf, sizeof(*conf)); + + device->data = (void *)epeas_cis001; + + if (bsp_epeas_cis001_open(conf)) + goto error1; + + struct pi_cpi_conf cpi_conf; + pi_cpi_conf_init(&cpi_conf); + cpi_conf.itf = conf->cpi_itf; + pi_open_from_conf(&epeas_cis001->cpi_device, &cpi_conf); + + if (pi_cpi_open(&epeas_cis001->cpi_device)) + goto error1; + + pi_cpi_set_format(&epeas_cis001->cpi_device, PI_CPI_FORMAT_BYPASS_BIGEND); + + + struct pi_spi_conf spi_conf; + pi_spi_conf_init(&spi_conf); + spi_conf.itf = conf->spi_itf; + spi_conf.cs = conf->spi_cs; + spi_conf.wordsize = PI_SPI_WORDSIZE_8; + spi_conf.big_endian = 0; + spi_conf.max_baudrate = 1000000; + spi_conf.polarity = 0; + spi_conf.phase = 0; + + pi_open_from_conf(&epeas_cis001->spi_device, &spi_conf); + if (pi_spi_open(&epeas_cis001->spi_device)) + goto error2; + + struct pi_pwm_conf pwm_conf; + pi_pwm_conf_init(&pwm_conf); + pwm_conf.pwm_id = conf->pwm_id; + pwm_conf.ch_id = conf->pwm_channel; //gapA13 + pwm_conf.timer_conf &= ~PI_PWM_CLKSEL_REFCLK_32K; + pwm_conf.timer_conf |= PI_PWM_CLKSEL_FLL; + pi_open_from_conf(&epeas_cis001->pwm_device, &pwm_conf); + + if (pi_pwm_open(&epeas_cis001->pwm_device)) + goto error3; + + pi_pwm_duty_cycle_set(&epeas_cis001->pwm_device, 12000000, 50); + pi_pwm_timer_start(&epeas_cis001->pwm_device); + + struct pi_gpio_conf gpio_conf; + pi_gpio_conf_init(&gpio_conf); + pi_open_from_conf(&epeas_cis001->gpio_port, &gpio_conf); + if (pi_gpio_open(&epeas_cis001->gpio_port)) + goto error4; + + /*RSTB pin*/ + pi_pad_set_function(PI_PAD_16_A44_RF_PACTRL4,PI_PAD_FUNC1); + pi_gpio_pin_configure(&epeas_cis001->gpio_port, conf->gpio_reset, PI_GPIO_OUTPUT); + pi_gpio_pin_write(&epeas_cis001->gpio_port,conf->gpio_reset,1); + + + /*GPIO B11 for capture pin */ + pi_pad_set_function(PI_PAD_31_B11_TIMER0_CH0,PI_PAD_FUNC1); + pi_gpio_pin_configure(&epeas_cis001->gpio_port, conf->gpio_capture, PI_GPIO_OUTPUT); + pi_gpio_pin_write(&epeas_cis001->gpio_port,conf->gpio_capture,0); + + + epeas_cis001->is_awake = 0; + + if(opts != PI_CAMERA_OPT_NO_REG_INIT){ + __epeas_cis001_reset(epeas_cis001); + __epeas_cis001_init_regs(epeas_cis001); + } + + if(epeas_cis001->conf.format==PI_CAMERA_QVGA){ + __epeas_cis001_set_qvga(epeas_cis001); + } + else if(epeas_cis001->conf.format==PI_CAMERA_QQVGA){ + __epeas_cis001_set_qqvga(epeas_cis001); + } + + return 0; + +error4: + pi_cpi_close(&epeas_cis001->cpi_device); + pi_spi_close(&epeas_cis001->spi_device); + pi_pwm_close(&epeas_cis001->pwm_device); + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); + return -4; +error3: + pi_cpi_close(&epeas_cis001->cpi_device); + pi_spi_close(&epeas_cis001->spi_device); + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); + return -3; +error2: + pi_cpi_close(&epeas_cis001->cpi_device); + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); + return -2; +error1: + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); + return -1; +} + + + +static void __epeas_cis001_close(struct pi_device *device) +{ + epeas_cis001_t *epeas_cis001 = (epeas_cis001_t *)device->data; + + pi_cpi_close(&epeas_cis001->cpi_device); + pi_spi_close(&epeas_cis001->spi_device); + pi_pwm_close(&epeas_cis001->pwm_device); + + pmsis_l2_malloc_free(epeas_cis001, sizeof(epeas_cis001_t)); +} + + +static int32_t __epeas_cis001_control(struct pi_device *device, pi_camera_cmd_e cmd, void *arg) +{ + int irq = disable_irq(); + pi_camera_opts_e open_opt = (pi_camera_opts_e) arg; + + epeas_cis001_t *epeas_cis001 = (epeas_cis001_t *)device->data; + + switch (cmd) + { + + case PI_CAMERA_CMD_START: + __pi_epeas_cis001_start(epeas_cis001); + pi_cpi_control_start(&epeas_cis001->cpi_device); + __pi_epeas_cis001_launch_capture(epeas_cis001); + break; + + case PI_CAMERA_CMD_STOP: + pi_cpi_control_stop(&epeas_cis001->cpi_device); + __pi_epeas_cis001_stop(epeas_cis001); + break; + + + default: + break; + } + + restore_irq(irq); + + return 0; +} + + + +void __epeas_cis001_capture_async(struct pi_device *device, void *buffer, uint32_t bufferlen, pi_task_t *task) +{ + epeas_cis001_t *epeas_cis001 = (epeas_cis001_t *)device->data; + + pi_cpi_capture_async(&epeas_cis001->cpi_device, buffer, bufferlen, task); +} + + + +int32_t __epeas_cis001_reg_set(struct pi_device *device, uint32_t addr, uint8_t *value) +{ + epeas_cis001_t *epeas_cis001 = (epeas_cis001_t *)device->data; + __epeas_cis001_reg_write(epeas_cis001, addr, *value); + return 0; +} + + + +int32_t __epeas_cis001_reg_get(struct pi_device *device, uint32_t addr, uint8_t *value) +{ + epeas_cis001_t *epeas_cis001 = (epeas_cis001_t *)device->data; + *value = __epeas_cis001_reg_read(epeas_cis001, addr); + return 0; +} + + + +static pi_camera_api_t epeas_cis001_api = +{ + .open = &__epeas_cis001_open, + .close = &__epeas_cis001_close, + .control = &__epeas_cis001_control, + .capture_async = &__epeas_cis001_capture_async, + .reg_set = &__epeas_cis001_reg_set, + .reg_get = &__epeas_cis001_reg_get +}; + +void pi_epeas_cis001_conf_init(struct pi_epeas_cis001_conf *conf) +{ + conf->camera.api = &epeas_cis001_api; + conf->skip_pads_config = 0; + conf->format = PI_CAMERA_VGA; //By Default VGA + conf->roi.slice_en = 0; //Disable the ROI by default. + bsp_epeas_cis001_conf_init(conf); + __camera_conf_init(&conf->camera); +} \ No newline at end of file diff --git a/rtos/pmsis/pmsis_bsp/camera/epeas_cis001/epeas_cis001.h b/rtos/pmsis/pmsis_bsp/camera/epeas_cis001/epeas_cis001.h new file mode 100644 index 000000000..e2c1364a3 --- /dev/null +++ b/rtos/pmsis/pmsis_bsp/camera/epeas_cis001/epeas_cis001.h @@ -0,0 +1,46 @@ + + + + +#ifndef __BSP_CAMERA_EPEAS_CIS001_EPEAS_CIS001_H__ +#define __BSP_CAMERA_EPEAS_CIS001_EPEAS_CIS001_H__ + + +/* + * EPEAS_CIS001 camera macros + */ + +// Register address +// Read only registers +#define EPEAS_CIS001_STATUS 0x06 +#define EPEAS_CIS001_IRQ_FLAG 0x0E +#define EPEAS_CIS001_CAL_CLK_BUFF_B0 0x35 +#define EPEAS_CIS001_CAL_CLK_BUFF_B1 0x36 +#define EPEAS_CIS001_CAL_RAMP_COUNT_B0 0x37 +#define EPEAS_CIS001_CAL_RAMP_COUNT_B1 0x38 +#define EPEAS_CIS001_CAL_RAMP_COUNT_B2 0x39 +#define EPEAS_CIS001_VERSION 0x7F +// Write only registers +#define EPEAS_CIS001_CAPTURE 0x00 +#define EPEAS_CIS001_SOFT_RESET 0x07 +#define EPEAS_CIS001_IRQCLR 0x0F +// R&W registers +// Sensor mode control +#define EPEAS_CIS001_MODE 0x01 +#define EPEAS_CIS001_PMODE 0x02 +#define EPEAS_CIS001_PCLK_MODE 0x03 +#define EPEAS_CIS001_FLIP 0x1A +#define EPEAS_CIS001_RESOLUTION 0x15 +// Sensor exposure and gain control +#define EPEAS_CIS001_ANALOG_GAIN 0x30 +#define EPEAS_CIS001_EXPOSURE_B0 0x04 +#define EPEAS_CIS001_EXPOSURE_B1 0x05 + +//Calibration +#define EPEAS_CIS001_CCLK_CAL 0x31 + +#define EPEAS_CIS001_ABB_EN 0x3B + +//useful register values + +#endif \ No newline at end of file diff --git a/rtos/pmsis/pmsis_bsp/flash/mram/mram-v2.c b/rtos/pmsis/pmsis_bsp/flash/mram/mram-v2.c index e4a9ed2a3..5bd728cce 100644 --- a/rtos/pmsis/pmsis_bsp/flash/mram/mram-v2.c +++ b/rtos/pmsis/pmsis_bsp/flash/mram/mram-v2.c @@ -122,6 +122,7 @@ static int pos_get_div(pos_mram_t *mram, int freq) } + static void mram_set_baudrate(struct pi_device *device, int frequency) { pos_mram_t *mram = (pos_mram_t *)device->data; @@ -740,6 +741,12 @@ static int mram_copy_2d_async(struct pi_device *device, uint32_t flash_addr, voi { mram->pending_copy = task; + unsigned int base = mram->base; + + udma_mram_mode_t mode = { .raw = udma_mram_mode_get(base) }; + mode.operation = MRAM_CMD_READ; + udma_mram_mode_set(base, mode.raw); + udma_mram_trans_addr_set(mram->base, (uint32_t)buffer); udma_mram_trans_size_set(mram->base, size); udma_mram_ext_addr_set(mram->base, flash_addr); @@ -814,7 +821,7 @@ static inline int mram_reg_get(struct pi_device *device, uint32_t pi_flash_addr, static inline int mram_copy(struct pi_device *device, uint32_t flash_addr, void *buffer, uint32_t size, int ext2loc) { struct pi_task task; - //mram_async(device, flash_addr, buffer, size, ext2loc, pi_task_block(&task)); + mram_copy_async(device, flash_addr, buffer, size, ext2loc, pi_task_block(&task)); pi_task_wait_on(&task); return 0; } diff --git a/rtos/pmsis/pmsis_bsp/include/bsp/bsp.h b/rtos/pmsis/pmsis_bsp/include/bsp/bsp.h index cb8aeaa40..8606c8e7b 100644 --- a/rtos/pmsis/pmsis_bsp/include/bsp/bsp.h +++ b/rtos/pmsis/pmsis_bsp/include/bsp/bsp.h @@ -72,6 +72,12 @@ void bsp_hm0360_conf_init(struct pi_hm0360_conf *conf); int bsp_hm0360_open(struct pi_hm0360_conf *conf); #endif +#if defined(CONFIG_EPEAS_CIS001) +#include "bsp/camera/epeas_cis001.h" +void bsp_epeas_cis001_conf_init(struct pi_epeas_cis001_conf *conf); +int bsp_epeas_cis001_open(struct pi_epeas_cis001_conf *conf); +#endif + #if defined(CONFIG_OV7670) #include "bsp/camera/ov7670.h" void bsp_ov7670_conf_init(struct pi_ov7670_conf *conf); diff --git a/rtos/pmsis/pmsis_bsp/include/bsp/camera/epeas_cis001.h b/rtos/pmsis/pmsis_bsp/include/bsp/camera/epeas_cis001.h new file mode 100644 index 000000000..97e8217e2 --- /dev/null +++ b/rtos/pmsis/pmsis_bsp/include/bsp/camera/epeas_cis001.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2019 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __BSP_CAMERA_EPEAS_CIS001_H__ +#define __BSP_CAMERA_EPEAS_CIS001_H__ + +#include "pmsis.h" +#include "bsp/camera.h" + +/** + * @addtogroup Camera + * @{ + */ + +/** + * @defgroup epeas_cis001 epeas_cis001 + */ + +/** + * @addtogroup epeas_cis001 + * @{ + */ + +/** \struct pi_epeas_cis001_conf + * \brief epeas_cis001 configuration structure. + * + * This structure is used to pass the desired epeas_cis001 configuration to the + * runtime when opening the device. + */ + +struct pi_epeas_cis001_conf +{ + struct pi_camera_conf camera; /*!< Generic camera configuration. */ + int cpi_itf; /*!< CPI interface where the camera is connected. */ + int spi_itf; /*!< SPI interface where the camera control */ + int spi_cs; + int pwm_id; + int pwm_channel; + pi_gpio_e gpio_reset; /*!< GPIO number for reset the epeas_cis001 camera */ + pi_gpio_e gpio_capture; + char skip_pads_config; /*!< Skip pads configuration if set to 1. */ + pi_camera_format_e format; /*!< Camera image resolution. */ + pi_camera_slicing_conf_t roi; /*!< ROI (region of interest) of an image. */ +}; + + +/** \brief Initialize a camera configuration with default values. + * + * The structure containing the configuration must be kept alive until the + * camera device is opened. + * Can only be called from fabric-controller side. + * + * \param conf A pointer to the camera configuration. + */ +void pi_epeas_cis001_conf_init(struct pi_epeas_cis001_conf *conf); + +//!@} + +/** + * @} end of epeas_cis001 + */ + +/** + * @} end of Camera + */ + + + + +#endif diff --git a/rtos/pmsis/pmsis_bsp/include/bsp/gap9.h b/rtos/pmsis/pmsis_bsp/include/bsp/gap9.h new file mode 100644 index 000000000..a4afd2f80 --- /dev/null +++ b/rtos/pmsis/pmsis_bsp/include/bsp/gap9.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2019 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __BSP__GAP9_H__ +#define __BSP__GAP9_H__ + +#define CONFIG_HIMAX +#define CONFIG_HYPERFLASH +#define CONFIG_HYPERRAM +#define CONFIG_SPIRAM +#define CONFIG_SPIFLASH +#define CONFIG_24XX1025 + +#define CONFIG_HIMAX_CPI_ITF 0 +#define CONFIG_HIMAX_I2C_ITF 1 + +#define CONFIG_HYPERFLASH_HYPER_ITF 0 +#define CONFIG_HYPERFLASH_HYPER_CS 1 + +#define CONFIG_HYPERRAM_HYPER_ITF 0 +#define CONFIG_HYPERRAM_HYPER_CS 0 +#define CONFIG_HYPERRAM_START 0 +#define CONFIG_HYPERRAM_SIZE (8<<20) + +#define CONFIG_SPIRAM_SPI_ITF 0 +#define CONFIG_SPIRAM_SPI_CS 1 +#define CONFIG_SPIRAM_START 0 +#define CONFIG_SPIRAM_SIZE (1<<20) + +#define CONFIG_SPIFLASH_SPI_ITF 0 +#define CONFIG_SPIFLASH_SPI_CS 0 +#define CONFIG_SPIFLASH_START 0 +#define CONFIG_SPIFLASH_SIZE (1<<24) +#define CONFIG_SPIFLASH_SECTOR_SIZE (1<<12) + +#endif diff --git a/rtos/pmsis/pmsis_bsp/include/bsp/gap9_v2.h b/rtos/pmsis/pmsis_bsp/include/bsp/gap9_v2.h new file mode 100644 index 000000000..e935802f3 --- /dev/null +++ b/rtos/pmsis/pmsis_bsp/include/bsp/gap9_v2.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2019 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __BSP__GAP9_V2_H__ +#define __BSP__GAP9_V2_H__ + +#define CONFIG_HIMAX +#define CONFIG_HYPERFLASH +#define CONFIG_MRAM +#define CONFIG_HYPERRAM +#define CONFIG_SPIRAM +#define CONFIG_SPIFLASH +#define CONFIG_24XX1025 +#define CONFIG_APS25XXXN +#define CONFIG_VIRTUAL_EEPROM +#define CONFIG_ATXP032 +#define CONFIG_NINA_B112 + +#define CONFIG_HIMAX_CPI_ITF 0 +#define CONFIG_HIMAX_I2C_ITF 0 + +#define CONFIG_HYPERFLASH_HYPER_ITF 0 +#define CONFIG_HYPERFLASH_HYPER_CS 1 + +#define CONFIG_HYPERRAM_HYPER_ITF 0 +#define CONFIG_HYPERRAM_HYPER_CS 0 +#define CONFIG_HYPERRAM_START 0 +#define CONFIG_HYPERRAM_SIZE (8<<20) + +#define CONFIG_SPIRAM_SPI_ITF 0 +#define CONFIG_SPIRAM_SPI_CS 0 +#define CONFIG_SPIRAM_START 0 +#define CONFIG_SPIRAM_SIZE (1<<20) + +#define CONFIG_APS25XXXN_SPI_ITF 1 +#define CONFIG_APS25XXXN_SPI_CS 0 +#define CONFIG_APS25XXXN_START 0 +#define CONFIG_APS25XXXN_SIZE (1<<25) + +#define CONFIG_ATXP032_SPI_ITF 1 +#define CONFIG_ATXP032_SPI_CS 1 + +#define CONFIG_SPIFLASH_SPI_ITF 0 +#define CONFIG_SPIFLASH_SPI_CS 0 +#define CONFIG_SPIFLASH_START 0 +#define CONFIG_SPIFLASH_SIZE (1<<24) +#define CONFIG_SPIFLASH_SECTOR_SIZE (1<<12) + +#define CONFIG_24XX1025_I2C_ADDR 0xA0 +#define CONFIG_24XX1025_I2C_ITF 0 +#define CONFIG_24XX1025_I2C_SCL_PAD PI_PAD_040 +#define CONFIG_24XX1025_I2C_SCL_PADFUN PI_PAD_FUNC0 +#define CONFIG_24XX1025_I2C_SDA_PAD PI_PAD_041 +#define CONFIG_24XX1025_I2C_SDA_PADFUN PI_PAD_FUNC0 + +#define CONFIG_VIRTUAL_EEPROM_I2C_ADDR 0x14 +#define CONFIG_VIRTUAL_EEPROM_I2C_ITF 0 + +#define CONFIG_NINA_B112_UART_ID ( 1 ) +/* BLE Nina. */ +#define GPIOA2_NINA_RST ( PI_PAD_040) +#define GPIOA21_NINA17 ( PI_PAD_041) +#define GPIO_NINA_PWRON ( PI_PAD_042) +#define GPIO_NINA17_DSR ( PI_PAD_043) + +#endif diff --git a/rtos/pulp/Makefile b/rtos/pulp/Makefile deleted file mode 100644 index 56ae0ed1f..000000000 --- a/rtos/pulp/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -DEFAULT_EXCLUDES=--exclude=".git*" --exclude="BUILD*" --exclude="build*" --exclude="_build*" --exclude="__pycache__/" --exclude=junit-reports - -pulp_configs: - $(MAKE) -C $(GAP_SDK_HOME)/utils/gap_configs all_scons INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(TARGET_INSTALL_DIR) - -do.archi: pulp_configs - if [ -e archi_pulp ]; then \ - cd archi_pulp && \ - export INSTALL_DIR=$(GAP_SDK_HOME)/rtos/pulp/archi/workstation && \ - export TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/rtos/pulp/archi/target && \ - make build; \ - fi - -build.archi: do.archi - cd $(GAP_SDK_HOME)/rtos/pulp/archi/target && rsync -avR * $(TARGET_INSTALL_DIR) - cd $(GAP_SDK_HOME)/rtos/pulp/archi/workstation && rsync -avR * $(INSTALL_DIR) - -artifact.archi: do.archi - mkdir -p $(ARTIFACT_PATH)/rtos/pulp/archi - rsync -avR $(DEFAULT_EXCLUDES) archi $(ARTIFACT_PATH)/rtos/pulp - -do.hal: pulp_configs - if [ -e hal_pulp ]; then \ - cd hal_pulp && \ - export TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/rtos/pulp/hal/target && \ - make build; \ - fi - -build.hal: do.hal - cd $(GAP_SDK_HOME)/rtos/pulp/hal/target && rsync -avR * $(TARGET_INSTALL_DIR) - -build.gap_archi: -ifeq '$(TARGET_CHIP)' 'GAP9_V2' - cd $(GAP_SDK_HOME)/rtos/pulp/gap_archi && make build -endif - -artifact.hal: do.hal - mkdir -p $(ARTIFACT_PATH)/rtos/pulp/hal - rsync -avR $(DEFAULT_EXCLUDES) hal $(ARTIFACT_PATH)/rtos/pulp - -artifact.pulpos: - mkdir -p $(ARTIFACT_PATH)/rtos/pulp/pulp-os - rsync -avR $(DEFAULT_EXCLUDES) pulp-os $(ARTIFACT_PATH)/rtos/pulp - -artifact: artifact.archi artifact.hal artifact.pulpos - -build.pulprt: build.archi -ifneq '$(TARGET_CHIP)' 'GAP9_V2' - $(MAKE) -C pulp-os -f gap_sdk.mk $(TARGET_NAME) -endif - -build: build.archi build.hal build.gap_archi build.pulprt diff --git a/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/efuse.h b/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/efuse.h new file mode 100644 index 000000000..431f6c6d9 --- /dev/null +++ b/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/efuse.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2018 GreenWaves Technologies + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __HAL_VEGA_EFUSE_H__ +#define __HAL_VEGA_EFUSE_H__ + +#include "hal/pulp.h" + +// TODO OLD fields to put back + + //unsigned int signature:1; + //unsigned int flash_reset:1; + //unsigned int flash_wait:1; + //unsigned int flash_wakeup:1; + //unsigned int flash_init:1; + //unsigned int flash_reset_wait:1; + //unsigned int flash_id:1; + // unsigned int flash_cmd:1; + // unsigned int flash_cmd_ds:1; + // unsigned int flash_cmd2:1; + // unsigned int flash_cmd2_ds:1; + // unsigned int flash_cmd3:1; + // unsigned int flash_cmd3_ds:1; + // unsigned int flash_cmd4:1; + // unsigned int flash_cmd4_ds:1; + //uint8_t Key[4][4]; + //uint8_t IV[2][4]; + + +#define PLP_EFUSE_PLT_OTHER 0 +#define PLP_EFUSE_PLT_FPGA 1 +#define PLP_EFUSE_PLT_RTL 2 +#define PLP_EFUSE_PLT_VP 3 +#define PLP_EFUSE_PLT_CHIP 4 + + +#define EFUSE_BOOT_JTAG_STOP 0 +#define EFUSE_BOOT_HYPERFLASH 1 +#define EFUSE_BOOT_SPIFLASH 2 +#define EFUSE_BOOT_MRAM 3 +#define EFUSE_BOOT_SPISLAVE 4 +#define EFUSE_BOOT_JTAG_STOP_CLUSTER_ON 5 + +#define EFUSE_BOOT_CLUSTER_ON (1<<7) + + +static inline unsigned int plp_efuse_readShort(int lsb, int msb) { + return plp_efuse_readByte(lsb) | (plp_efuse_readByte(msb) << 8); +} + +#endif diff --git a/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/pulp.h b/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/pulp.h new file mode 100644 index 000000000..b38eb3fb1 --- /dev/null +++ b/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/pulp.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2015 ETH Zurich and University of Bologna + * All rights reserved. + * + * This software may be modified and distributed under the terms + * of the BSD license. See the LICENSE file for details. + * + */ + +#ifndef __HAL_GAP9_PULP_H__ +#define __HAL_GAP9_PULP_H__ + +#include "archi/chips/gap9_v2/pulp_archi.h" + +#include "hal/riscv/riscv_v5.h" +#include "hal/eu/eu_v4.h" +#include "hal/itc/itc_v1.h" +#include "hal/dma/mchan_v7.h" +#include "hal/timer/timer_v2.h" +#include "hal/soc_eu/soc_eu_v2.h" +#include "hal/udma/udma_v4.h" +#include "hal/cluster_ctrl/cluster_ctrl_v2.h" +#include "hal/icache/icache_ctrl_v2.h" +#include "hal/maestro/pmu_v3.h" +#include "hal/rom/rom_v2.h" +//#include "hal/gpio/gpio_v3.h" +#include "hal/efuse/efuse_v1.h" +#include "hal/chips/gap9_v2/efuse.h" + +#include "hal/vendors/iid/quiddikey_v1.h" + +//#include "hal/udma/cpi/udma_cpi_v1.h" +//#include "hal/udma/hyper/udma_hyper_v2.h" +//#include "hal/udma/i2c/udma_i2c_v2.h" +//#include "hal/udma/spim/udma_spim_v3.h" +//#include "hal/udma/uart/udma_uart_v1.h" +#include "hal/vendors/dolphin/rtc.h" + +#endif diff --git a/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/udma/udma_v4.h b/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/udma/udma_v4.h new file mode 120000 index 000000000..5ef6206de --- /dev/null +++ b/rtos/pulp/gap_archi/include/hal/chips/gap9_v2/udma/udma_v4.h @@ -0,0 +1 @@ +../../../udma/udma_v4.h \ No newline at end of file diff --git a/rtos/pulp/pulp-os/gap_sdk.mk b/rtos/pulp/pulp-os/gap_sdk.mk deleted file mode 100644 index fff41baab..000000000 --- a/rtos/pulp/pulp-os/gap_sdk.mk +++ /dev/null @@ -1,103 +0,0 @@ -ifndef GAP_SDK_HOME - $(error Please run 'source sourceme.sh' in gap_sdk first) -endif - -CD = cd -CP = cp -rf -RM = rm -rf -MKDIR = mkdir - -# The C program compiler. -CXX = riscv32-unknown-elf-g++ -CC = riscv32-unknown-elf-gcc -AR = riscv32-unknown-elf-ar -OBJDUMP = riscv32-unknown-elf-objdump - -LDFLAGS = -T$(GAP_SDK_HOME)/tools/ld/link.gap8.ld - -# The pre-processor and compiler options. -# Users can override those variables from the command line. -COMMON = -march=rv32imcxgap8 -mPE=8 -mFC=1 -D__riscv__ -Os -g -fno-jump-tables -Werror -fno-tree-loop-distribute-patterns -Wextra -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wundef -fdata-sections -ffunction-sections - -ASMFLAGS = $(COMMON) -DLANGUAGE_ASSEMBLY -MMD -MP -c - -CFLAGS = $(COMMON) -MMD -MP -c -DCONFIG_GAP - -# Final binary -#------------------------------------------ -RT_LIB = $(TARGET_INSTALL_DIR)/libs/librt.a -IO_LIB = $(TARGET_INSTALL_DIR)/libs/libio.a - -HEADER_DIR = $(TARGET_INSTALL_DIR)/include -BUILD_RT ?= $(BUILD_DIR)/rt -COMMON_SRC += $(RUNTIME_PATH)/pulp-rt/rt_conf.c $(RUNTIME_PATH)/pulp-rt/rt_pad_conf.c - -HEADERS = $(wildcard $(shell find $(RUNTIME_PATH)/include -name "*.h")) - -RT_S_OBJECTS = $(patsubst %.S, $(BUILD_RT)/%.o, $(wildcard $(shell find $(RUNTIME_PATH)/pulp-rt -name "*.S" | sort))) - -RT_C_OBJECTS = $(patsubst %.c, $(BUILD_RT)/%.o, $(wildcard $(shell find $(RUNTIME_PATH)/pulp-rt/kernel -name "*.c") $(shell find $(RUNTIME_PATH)/pulp-rt/drivers -name "*.c") $(COMMON_SRC))) - -RT_OBJECTS = $(RT_S_OBJECTS) $(RT_C_OBJECTS) - -IO_C_OBJECTS = $(patsubst %.c, $(BUILD_RT)/%.o, $(wildcard $(shell find $(RUNTIME_PATH)/pulp-rt/libs/io -name "*.c"))) - -INC_DEFINE = -include $(TARGET_INSTALL_DIR)/include/rt/chips/$(TARGET_NAME)/config.h - -INC = $(TARGET_INSTALL_DIR)/include/ \ - $(TARGET_INSTALL_DIR)/include/io \ - $(INSTALL_DIR)/include - -INC_PATH = $(foreach d, $(INC), -I$d) $(INC_DEFINE) - -$(HEADER_DIR): - mkdir -p $@ - -install_headers: $(HEADER_DIR) - make -C $(GAP_SDK_HOME)/tools/pulp_tools/pulp-configs all_scons INSTALL_DIR=$(INSTALL_DIR) TARGET_INSTALL_DIR=$(TARGET_INSTALL_DIR) - if [ -e $(GAP_SDK_HOME)/rtos/pulp/archi ]; then \ - cd $(GAP_SDK_HOME)/rtos/pulp/archi && \ - export INSTALL_DIR=$(GAP_SDK_HOME)/rtos/pulp/archi_gap/workstation && \ - export TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/rtos/pulp/archi_gap/target && \ - make build; \ - fi - if [ -e $(GAP_SDK_HOME)/rtos/pulp/hal ]; then \ - cd $(GAP_SDK_HOME)/rtos/pulp/hal && \ - export TARGET_INSTALL_DIR=$(GAP_SDK_HOME)/rtos/pulp/hal_gap/target && \ - make build; \ - fi - cd $(GAP_SDK_HOME)/rtos/pulp/archi_gap/target && rsync -avR * $(TARGET_INSTALL_DIR) - cd $(GAP_SDK_HOME)/rtos/pulp/archi_gap/workstation && rsync -avR * $(INSTALL_DIR) - cd $(GAP_SDK_HOME)/rtos/pulp/hal_gap/target && rsync -avR * $(TARGET_INSTALL_DIR) - -install_rt_gap8: - make -C $(GAP_SDK_HOME)/rtos/pulp/pulp-os MK_ROOT=$(GAP_SDK_HOME)/rtos/pulp/pulp-os/mk/gap header build install - -install_rt_vega: - make -C $(GAP_SDK_HOME)/rtos/pulp/pulp-os MK_ROOT=$(GAP_SDK_HOME)/rtos/pulp/pulp-os/mk/vega header build install - -# Rules for creating the libs. -#------------------------------------------ -gap: install_rt_gap8 - -gap_rev1: install_rt_gap8 - -gap8_revc: install_rt_gap8 - -vega: install_rt_vega - -clean: - rm -rf $(GAP_SDK_HOME)/rtos/pulp/archi_gap $(GAP_SDK_HOME)/rtos/pulp/hal_gap - -DEFAULT_EXCLUDES=--exclude=".git*" --exclude="BUILD*" --exclude="build*" --exclude="_build*" --exclude="__pycache__/" --exclude=junit-reports - -artifact: - mkdir -p $(PULPOS_ARTIFACT_PATH) - rsync -avR $(DEFAULT_EXCLUDES) * $(PULPOS_ARTIFACT_PATH) - -#all: install_headers $(TARGET_CHIP) - - - - - diff --git a/rtos/pulp/pulpos-2/include/pmsis.h b/rtos/pulp/pulpos-2/include/pmsis.h index 9efa9aadc..830a86669 100644 --- a/rtos/pulp/pulpos-2/include/pmsis.h +++ b/rtos/pulp/pulpos-2/include/pmsis.h @@ -50,6 +50,7 @@ #include "pmsis/task.h" #include "pmsis/cluster/cluster_sync/fc_to_cl_delegate.h" #include "pmsis/cluster/cl_malloc.h" +#include "pmsis/rtos/assert.h" #include "pmsis/rtos/os_frontend_api/pmsis_time.h" #include "pmsis/rtos/os_frontend_api/freq.h" #include "pmsis/rtos/os_frontend_api/os.h" diff --git a/rtos/pulp/pulpos-2/include/pos/implem/implem.h b/rtos/pulp/pulpos-2/include/pos/implem/implem.h index 7208b3bf7..5484ca05d 100644 --- a/rtos/pulp/pulpos-2/include/pos/implem/implem.h +++ b/rtos/pulp/pulpos-2/include/pos/implem/implem.h @@ -185,4 +185,18 @@ extern unsigned char __l1_heap_size; #define rt_platform() __PLATFORM__ -#endif \ No newline at end of file +/* Define this flag to enable assert, args check. */ + +#if defined(DEBUG_ASSERT) +#define IMPLEM_SPECIFIC_ASSERT(test) \ + if (!(test)) \ + { \ + printf("PI assertion error in func %s, %s:%d : %s.\n", \ + __func__, __FILE__, (unsigned int)__LINE__, #test); \ + pmsis_exit(-187); \ + } +#else +#define IMPLEM_SPECIFIC_ASSERT(test) ((void) 0) +#endif /* DEBUG_ASSERT */ + +#endif diff --git a/rtos/pulp/pulpos-2/kernel/irq.c b/rtos/pulp/pulpos-2/kernel/irq.c index 6a2cc609f..a72b2dd97 100644 --- a/rtos/pulp/pulpos-2/kernel/irq.c +++ b/rtos/pulp/pulpos-2/kernel/irq.c @@ -68,6 +68,8 @@ void pos_irq_set_handler(int irq, void (*handler)()) *(volatile unsigned int *)jmpAddr = pos_irq_get_itvec(base, irq, (unsigned int)handler); + fc_icache_ctrl_flush_set(ARCHI_FC_ICACHE_ADDR, -1); + #ifdef ARCHI_FC_HAS_ICACHE fc_icache_ctrl_flush_set(ARCHI_FC_ICACHE_ADDR, -1); #endif diff --git a/rtos/pulp/pulpos-2/kernel/time.c b/rtos/pulp/pulpos-2/kernel/time.c index 075227350..45cc54cb5 100644 --- a/rtos/pulp/pulpos-2/kernel/time.c +++ b/rtos/pulp/pulpos-2/kernel/time.c @@ -26,10 +26,6 @@ static PI_FC_L1 pos_cbsys_t pos_time_cbsys_poweroff; static PI_FC_L1 pos_cbsys_t pos_time_cbsys_poweron; -#ifndef CONFIG_REF_CLOCK -#define CONFIG_REF_CLOCK ARCHI_REF_CLOCK -#endif - #ifndef CONFIG_NO_FAST_OSC #define TIMER_CLOCK CONFIG_REF_CLOCK #define TIMER_SOURCE 1 diff --git a/tools/autotiler_v3/Autotiler/AutoTilerLib.h b/tools/autotiler_v3/Autotiler/AutoTilerLib.h index 8d9e9ae94..a252b5092 100644 --- a/tools/autotiler_v3/Autotiler/AutoTilerLib.h +++ b/tools/autotiler_v3/Autotiler/AutoTilerLib.h @@ -251,6 +251,7 @@ KernelLib_T *KerLibMatch( int ParallelFeatures, /**< If 0 one feature is evaluated by several cores, if not each core evaluates a different feature */ int FloatKer, /**< If 1 kernel uses float arithmetic, int otherwise */ int HWCKer, /**< If 1 kernel is based on HWC tensor, otherwise CHW */ + int NE16Ker, /**< If 1 kernel uses the NE16 */ int I1_Type, /**< Input1 data size in bytes or 0 if to be ignored */ int I2_Type, /**< Input2 data size in bytes or 0 if to be ignored */ int I3_Type, /**< Input3 data size in bytes or 0 if to be ignored */ diff --git a/tools/autotiler_v3/Autotiler/AutoTilerLibTypes.h b/tools/autotiler_v3/Autotiler/AutoTilerLibTypes.h index bc8646838..b5bdac14e 100644 --- a/tools/autotiler_v3/Autotiler/AutoTilerLibTypes.h +++ b/tools/autotiler_v3/Autotiler/AutoTilerLibTypes.h @@ -59,6 +59,8 @@ typedef enum { KOP_GLOBAL_MAXPOOL_REDUCT, KOP_GLOBAL_AVGPOOL, KOP_GLOBAL_AVGPOOL_REDUCT, + KOP_GLOBAL_SUMPOOL, + KOP_GLOBAL_SUMPOOL_REDUCT, KOP_SCALE, KOP_ACT_NONE, KOP_RELU, @@ -82,7 +84,11 @@ typedef enum { KOP_MATMUL_SM1, KOP_MATMUL_SCALE, KOP_MATMUL_SCALE_SCALAR, + KOP_MATMUL_NOBIAS_SCALE_SCALAR, KOP_MATMUL_TRANSPOSED, + KOP_MATMUL_NOBIAS_TRANSPOSED, + KOP_MATMUL_SCALE_SCALAR_TRANSPOSED, + KOP_MATMUL_NOBIAS_SCALE_SCALAR_TRANSPOSED, KOP_MATMUL_SCALE_SM1, KOP_MATMUL_SCALE_SCALAR_SM1, KOP_MATSCALE_VECTOR, @@ -296,7 +302,8 @@ typedef enum { CALL_MASK=3, /**< To extract what is related to call nature */ CALL_FLOAT_KER=4, /**< Attribute, this kernel uses float arithmetic */ CALL_HWC_KER=8, /**< Attribute, this kernel assumes HWC tensor order, default is CHW */ - CALL_LAST_ATTRIBUTE=8 + CALL_NE16_KER=16, /**< Attribute, this kernel uses NE16 */ + CALL_LAST_ATTRIBUTE=16 } KernelCallTypeT; /** @@ -549,38 +556,38 @@ typedef enum { #define O_NALIAS ((uint64_t) ((uint64_t)1<<15)) /**< Argument tile size is adjusted dynamically */ #define O_DYNTILE ((uint64_t) ((uint64_t)1<<16)) -/** + ) + +target_link_libraries(cnn_lib PUBLIC tiler) +includeos(cnn_lib) +target_include_directories(cnn_lib PRIVATE ${GWT_PMSIS_BSP}/include) + +add_subdirectory(${TILER_DSP_KERNEL_PATH} ${CMAKE_CURRENT_BINARY_DIR}/DSP_libraries) + +#--------------------------------------------------------------------------------------------------- +# cnn_lib: MODEL_POW2 option +if (MODEL_POW2 EQUAL 1) + add_subdirectory(CNN_Libraries) + target_link_libraries(cnn_lib PUBLIC model_lib_pow2) + target_sources(cnn_lib PUBLIC + $ + ) +endif() + +#--------------------------------------------------------------------------------------------------- +# cnn_lib: MODEL_SQ8 option +if (MODEL_SQ8 EQUAL 1) + add_subdirectory(CNN_Libraries_SQ8) + target_link_libraries(cnn_lib PUBLIC model_lib_sq8) + target_sources(cnn_lib PUBLIC + $ + ) +endif() + +#--------------------------------------------------------------------------------------------------- +# cnn_lib: MODEL_FP16 option +if (MODEL_FP16 EQUAL 1) + add_subdirectory(CNN_Libraries_fp16) + target_link_libraries(cnn_lib PUBLIC model_lib_fp16) + target_sources(cnn_lib PUBLIC + $ + ) +endif() + +#--------------------------------------------------------------------------------------------------- +# cnn_lib: MODEL_NE16 option +if (MODEL_NE16 EQUAL 1) + add_subdirectory(CNN_Libraries_NE16) + target_link_libraries(cnn_lib PUBLIC model_lib_ne16) + target_sources(cnn_lib PUBLIC + $ + ) +endif() + +#=================================================================================================== +# cnn_gen +# - not a library, just set of variables exposed to the parent scope +#=================================================================================================== + +# cnn_gen: Common sources/includes +set(CNN_GEN ${TILER_CNN_GENERATOR_PATH}/CNN_Generator_Util.c ${TILER_CNN_GENERATOR_PATH}/CNN_Copy_Generators.c ${TILER_CNN_GENERATOR_PATH}/SSD_Generators.c ${TILER_BILINEAR_RESIZE_GENERATOR_PATH}/ResizeGenerator.c ${TILER_DSP_GENERATOR_PATH}/DSP_Generators.c) +set(CNN_GEN_INCLUDE -I${TILER_CNN_GENERATOR_PATH} -I${TILER_BILINEAR_RESIZE_GENERATOR_PATH} -I${TILER_CNN_KERNEL_PATH} -I${TILER_CNN_KERNEL_PATH_FP16} -I${TILER_DSP_GENERATOR_PATH}) + +# cnn_gen: Additional sources for POW2 +if (MODEL_POW2 EQUAL 1) + set(MODEL_GEN_POW2 + ${TILER_CNN_GENERATOR_PATH}/CNN_Generators.c + ) + set(CNN_GEN ${CNN_GEN} ${MODEL_GEN_POW2}) + set(CNN_GEN_INCLUDE ${CNN_GEN_INCLUDE} -I${TILER_CNN_GENERATOR_PATH}) +endif() + +# cnn_gen: Additional sources for SQ8 +if (MODEL_SQ8 EQUAL 1) + set(MODEL_GEN_SQ8 + ${TILER_CNN_KERNEL_PATH_SQ8}/CNN_Generators_SQ8.c + ${TILER_CNN_KERNEL_PATH_SQ8}/RNN_Generators_SQ8.c + ) + set(CNN_GEN ${CNN_GEN} ${MODEL_GEN_SQ8}) + set(CNN_GEN_INCLUDE ${CNN_GEN_INCLUDE} -I${TILER_CNN_GENERATOR_PATH_SQ8}) +endif() + +# cnn_gen: Additional sources for NE16 +if (MODEL_NE16 EQUAL 1) + set(MODEL_GEN_NE16 + ${TILER_CNN_KERNEL_PATH_NE16}/CNN_Generators_NE16.c + ${TILER_CNN_KERNEL_PATH_NE16}/RNN_Generators_NE16.c + ) + set(CNN_GEN ${CNN_GEN} ${MODEL_GEN_NE16}) + set(CNN_GEN_INCLUDE ${CNN_GEN_INCLUDE} -I${TILER_CNN_GENERATOR_PATH_NE16}) +endif() + +# cnn_gen: Additional sources for FP16 +if (MODEL_FP16 EQUAL 1) + set(MODEL_GEN_FP16 + ${TILER_CNN_KERNEL_PATH_FP16}/CNN_Generators_fp16.c + ${TILER_CNN_KERNEL_PATH_FP16}/RNN_Generators_fp16.c + ${TILER_CNN_KERNEL_PATH_FP16}/SSD_Generators_fp16.c + ) + set(CNN_GEN ${CNN_GEN} ${MODEL_GEN_FP16}) + set(CNN_GEN_INCLUDE ${CNN_GEN_INCLUDE} -I${TILER_CNN_GENERATOR_PATH_FP16}) +endif() + +set(CNN_GEN ${CNN_GEN} PARENT_SCOPE) +set(CNN_GEN_INCLUDE ${CNN_GEN_INCLUDE} PARENT_SCOPE) diff --git a/tools/autotiler_v3/CNN_Generators/CNN_Generators.c b/tools/autotiler_v3/CNN_Generators/CNN_Generators.c index 97b9bb5f0..ccfd1e9ed 100644 --- a/tools/autotiler_v3/CNN_Generators/CNN_Generators.c +++ b/tools/autotiler_v3/CNN_Generators/CNN_Generators.c @@ -879,6 +879,10 @@ void LoadCNNLibrary() 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); LibKernel("KerParMatMul_fpd_fp", CALL_PARALLEL, 0, "KerMatMul_fpd_fp_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(3, KOP_RELU, KOP_RELUN, KOP_NONE), 1, CNN_Type(2,2,4,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposed_fpd_fp", CALL_PARALLEL, 0, "KerMatMul_fpd_fp_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(3, KOP_RELU, KOP_RELUN, KOP_NONE), + 1, CNN_Type(2,2,4,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBias_fp", CALL_PARALLEL, 0, "KerMatMul_fpd_fp_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(3, KOP_RELU, KOP_RELUN, KOP_NONE), + 1, CNN_Type(2,2,0,0,2), 0,0,0,0,1,1)); LibKernel("KerParMatMulSxSy_fpd_fp", CALL_PARALLEL, 0, "KerMatMul_fpd_fp_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(3, KOP_RELU, KOP_RELUN, KOP_NONE), 1, CNN_Type(2,2,4,0,2), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSmallFeat_fp", CALL_PARALLEL, 0, "KerMatMul_fp_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(3, KOP_RELU, KOP_RELUN, KOP_NONE), @@ -4494,12 +4498,16 @@ int CNN_MatMul( int OutLB, OutUB, ReluN = 6; int ConsT0 = Scx; int Nbuff; - Bias_DataSize = (MatMulOper == KOP_MATMUL_NOBIAS)?0:Bias_DataSize; + Bias_DataSize = ((MatMulOper==KOP_MATMUL_NOBIAS) || (MatMulOper==KOP_MATMUL_NOBIAS_TRANSPOSED))?0:Bias_DataSize; + int Transposed = (MatMulOper == KOP_MATMUL_TRANSPOSED) || (MatMulOper == KOP_MATMUL_NOBIAS_TRANSPOSED); + int SAxis = (MatMulOper == KOP_MATMUL)?LineO:ColO; + int TA = (MatMulOper == KOP_MATMUL)?T0:T1; + int TB = (MatMulOper == KOP_MATMUL)?T1:T0; if (Ctrl) { if (Ctrl->ReluN != -1) ReluN = Ctrl->ReluN; } - if (!(MatMulOper == KOP_MATMUL||MatMulOper == KOP_MATMUL_NOBIAS)) GenTilingError("CNN_MatMul Kernel: %s, MatMulOper should be KOP_MATMUL or KOP_MATMUL_NOBIAS", Name); + if (!(MatMulOper == KOP_MATMUL || MatMulOper == KOP_MATMUL_NOBIAS || MatMulOper == KOP_MATMUL_NOBIAS_TRANSPOSED || MatMulOper == KOP_MATMUL_TRANSPOSED)) GenTilingError("CNN_MatMul Kernel: %s, MatMulOper should be KOP_MATMUL or KOP_MATMUL_NOBIAS or KOP_MATMUL_TRANSPOSED or KOP_MATMUL_NOBIAS_TRANSPOSED", Name); if (!(ReLUOper == KOP_NONE || ReLUOper == KOP_RELU || ReLUOper == KOP_RELUN || ReLUOper == KOP_HSWISH || ReLUOper == KOP_HSIGMOID || ReLUOper == KOP_LEAKYRELU)) GenTilingError("CNN_MatMul Kernel: %s, ReLUOper should be KOP_NONE, KOP_RELU, KOP_RELUN, KOP_HSWISH, KOP_HSIGMOID or KOP_LEAKYRELU", Name); @@ -4550,6 +4558,10 @@ int CNN_MatMul( // printf("Nb Oper : %lld\n", LayerOp); } + int ObjCons = !Transposed?OBJ_CONSTRAINTS_TILE_VER:0; + if (Transposed) { + LineM2 = ColM2; ColM2 = ColM1; + } Kernel_T *Kernel = UserKernel(Name, KernelIterSpace(2, IterTiledSpace(T1), IterTiledSpace(T0)), TILE_HOR, @@ -4563,10 +4575,10 @@ int CNN_MatMul( Call(MatMulKerName, LOC_LOOP, Bindings(21, K_Arg("In1", KER_ARG_TILE), K_Arg("In1", KER_ARG_TILE_W), K_Arg("In1", KER_ARG_TILE_H), - K_Arg("In2", KER_ARG_TILE), K_Arg("In2", KER_ARG_TILE_W), + K_Arg("In2", KER_ARG_TILE), Transposed?K_Arg("In2", KER_ARG_TILE_H):K_Arg("In2", KER_ARG_TILE_W), Bias_DataSize?K_Arg("Bias",KER_ARG_TILE):AT_IGNORE_ARG_BINDING, AT_IGNORE_ARG_BINDING, K_Arg("Out", KER_ARG_TILE), K_Arg("Out", KER_ARG_TILE_W), K_Arg(ColFirst?"In1":"In2", KER_ARG_TILE_BASE), - K_Arg("KerBuff", KER_ARG_TILE), + !Transposed?K_Arg("KerBuff", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, Imm(OutLB), (ReLUOper==KOP_HSWISH||ReLUOper==KOP_HSIGMOID)? Imm(Out_Q): /* Output fixed point format */ @@ -4584,17 +4596,17 @@ int CNN_MatMul( ), ColFirst? KerArgs(5, - KerArg("KerBuff",KerArgSpace(1, T1), O_BUFF|O_NTILED, Nbuff*ColM1, 1, In2_DataSize, 0, 0, 0, 0), + !Transposed?KerArg("KerBuff",KerArgSpace(1, T1), O_BUFF|O_NTILED, Nbuff*ColM1, 1, In2_DataSize, 0, 0, 0, 0):AT_NO_KER_ARG, KerArg("In1", KerArgSpace(1, T0), O_IN|O_DB|O_CONST|In1L3, ColM1, LineM1, In1_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 8, "In1"), - KerArg("In2", KerArgSpace(1, T1), O_IN|O_DB|In2L3, ColM2, LineM2, In2_DataSize, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), - Bias_DataSize?KerArg("Bias", KerArgSpace(1, T0), O_IN|O_DB|O_CONST|BiasL3, 1, LineO, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, + KerArg("In2", KerArgSpace(1, T1), O_IN|O_DB|In2L3, ColM2, LineM2, In2_DataSize, 0, ObjCons|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), + Bias_DataSize?KerArg("Bias", KerArgSpace(1, TA), O_IN|O_DB|O_CONST|BiasL3, 1, SAxis, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, KerArg("Out", KerArgSpace(1, T1), O_OUT|O_DB|OutL3, ColO, LineO, Out_DataSize, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, 0, "Out") ): KerArgs(5, - KerArg("KerBuff",KerArgSpace(1, T0), O_BUFF|O_NTILED, Nbuff*ColM1, 1, In2_DataSize, 0, 0, 0, 0), + !Transposed?KerArg("KerBuff",KerArgSpace(1, T0), O_BUFF|O_NTILED, Nbuff*ColM1, 1, In2_DataSize, 0, 0, 0, 0):AT_NO_KER_ARG, KerArg("In1", KerArgSpace(1, T1), O_IN|O_DB|O_CONST|In1L3, ColM1, LineM1, In1_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 8, "In1"), - KerArg("In2", KerArgSpace(1, T0), O_IN|O_DB|In2L3, ColM2, LineM2, In2_DataSize, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), - Bias_DataSize?KerArg("Bias", KerArgSpace(1, T1), O_IN|O_DB|O_CONST|BiasL3, 1, LineO, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, + KerArg("In2", KerArgSpace(1, T0), O_IN|O_DB|In2L3, ColM2, LineM2, In2_DataSize, 0, ObjCons|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), + Bias_DataSize?KerArg("Bias", KerArgSpace(1, TB), O_IN|O_DB|O_CONST|BiasL3, 1, SAxis, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, KerArg("Out", KerArgSpace(1, T1), O_OUT|O_DB|OutL3, ColO, LineO, Out_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Out") ) ); diff --git a/tools/autotiler_v3/CNN_Generators/SSD_Generators.c b/tools/autotiler_v3/CNN_Generators/SSD_Generators.c index 599e3335f..90643135b 100644 --- a/tools/autotiler_v3/CNN_Generators/SSD_Generators.c +++ b/tools/autotiler_v3/CNN_Generators/SSD_Generators.c @@ -97,7 +97,7 @@ int CNN_SSD_PostProcess_SQ8( TCArg("int8_t *" , "class_out" ), TCArg("int8_t *" , "scores_out"), TCArg("uint8_t * " , "in_scales" ), - TCArg("uint8_t * " , "in_norms" ) + TCArg("int8_t * " , "in_norms" ) ), Calls(3, Call("Ker_SSD_Init", LOC_LOOP_PROLOG, diff --git a/tools/autotiler_v3/CNN_Generators_NE16/CMakeLists.txt b/tools/autotiler_v3/CNN_Generators_NE16/CMakeLists.txt new file mode 100644 index 000000000..9f316fd84 --- /dev/null +++ b/tools/autotiler_v3/CNN_Generators_NE16/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.16) + +add_library(model_lib_ne16 OBJECT + CNN_BasicKernels_NE16.c + RNN_BasicKernels_NE16.c + ) + +target_link_libraries(model_lib_ne16 PRIVATE freertos) + +target_include_directories(model_lib_ne16 PRIVATE ${GWT_PMSIS_BSP}/include) + +target_include_directories(model_lib_ne16 PUBLIC + ${TILER_EMU_INC} + . + ) diff --git a/tools/autotiler_v3/CNN_Generators_NE16/CNN_Generators_NE16.c b/tools/autotiler_v3/CNN_Generators_NE16/CNN_Generators_NE16.c index 6db2b5c1f..bc010a175 100644 --- a/tools/autotiler_v3/CNN_Generators_NE16/CNN_Generators_NE16.c +++ b/tools/autotiler_v3/CNN_Generators_NE16/CNN_Generators_NE16.c @@ -183,6 +183,23 @@ void LoadCNN_NE16_SQ8_Library() TCArg("unsigned int", "Default_NE16_Job_Cfg") ) ); + LibKernelTemplate("KerMatMul_NE16_T", + CArgs(13, + TCArg("unsigned char * __restrict__", "In1"), + TCArg("unsigned short int", "W_In1"), + TCArg("unsigned short int", "H_In1"), + TCArg("signed char * __restrict__", "In2"), + TCArg("unsigned short int", "W_In2"), + TCArg("void * __restrict__", "Bias"), + TCArg("unsigned char * __restrict__", "Scale"), + TCArg("unsigned char * __restrict__", "ScaleN"), + TCArg("signed char * __restrict__", "Out"), + TCArg("unsigned char * __restrict__", "Buff"), + TCArg("signed char * __restrict__", "Infos"), + TCArg("int", "W_Offset"), + TCArg("unsigned int", "Default_NE16_Job_Cfg") + ) + ); LibKernelTemplate("WeightsExpandLastTile_T", CArgs(7, TCArg("unsigned short int *__restrict__", "Filter"), @@ -204,29 +221,41 @@ void LoadCNN_NE16_SQ8_Library() /* Convolution or Linear output reduction with per channel scaling and optional activation. Out != In and In Place (IO) */ /* Activation wth tensor centric scaling */ - LibKernel("KerConv3x3Stride1_NE16", CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerConv_NE16_T", + LibKernel("KerConv3x3Stride1_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV), 0, -1, CNN_Type(0,0,0,0,4), 3, 3, 1, 1, 1, 1)); - LibKernel("KerConv3x3Stride2_NE16", CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerConv_NE16_T", + LibKernel("KerConv3x3Stride2_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV), 0, -1, CNN_Type(0,0,0,0,4), 3, 3, 1, 1, 2, 2)); - LibKernel("KerConv1x1Stride1_NE16", CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerConv_NE16_T", + LibKernel("KerConv1x1Stride1_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV), 0, -1, CNN_Type(0,0,0,0,4), 1, 1, 1, 1, 1, 1)); - LibKernel("KerConv1x1StrideS_NE16", CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerConv_NE16_T", + LibKernel("KerConv1x1StrideS_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV), 0, -1, CNN_Type(0,0,0,0,4), 1, 1, 1, 1,-1,-1)); - LibKernel("KerConv1x1_SmallHW_StrideS_NE16",CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerConv_NE16_T", + LibKernel("KerConv1x1_SmallHW_StrideS_NE16",CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV), 0, -1, CNN_Type(0,0,0,0,4), 1, 1, 1, 1,-1,-1)); - LibKernel("KerConv1D_StrideS_NE16", CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER,0, "KerConv_NE16_T", + LibKernel("KerConv1D_StrideS_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER,0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV1D),0,-1, CNN_Type(0,0,0,0,4), -1, 1,-1, 1,-1, 1)); - LibKernel("KerConvNxMDxDy_StrideSxSy_NE16",CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerConv_NE16_T", + LibKernel("KerConvNxMDxDy_StrideSxSy_NE16",CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV), 0, -1, CNN_Type(0,0,0,0,4), -1,-1,-1,-1,-1,-1)); - LibKernel("KerConvDW3x3Stride1_NE16", CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerConv_NE16_T", + LibKernel("KerConvDW3x3Stride1_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV_DW), 0, -1, CNN_Type(0,0,0,0,4), 3,3,1,1,1,1)); - LibKernel("KerConvDW3x3Stride2_NE16", CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerConv_NE16_T", + LibKernel("KerConvDW3x3Stride2_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerConv_NE16_T", CNN_Match(CNN_OperList(1, KOP_CONV_DW), 0, -1, CNN_Type(0,0,0,0,4), 3,3,1,1,2,2)); - LibKernel("KerLinear_NE16", CALL_SEQUENTIAL_STRUCT|CALL_HWC_KER, 0, "KerLinear_NE16_T", - CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_NONE), -1, CNN_Type(0,0,4,0,1), 0,0,0,0,0,0)); - LibKernel("Ker_MM_Conv2D_NE16", CALL_PARALLEL_CC|CALL_HWC_KER, 0, "Ker_MM_Conv_NE16_T", + LibKernel("KerLinear_8a_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerLinear_NE16_T", + CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_NONE), -1, CNN_Type(1,0,4,0,0), 0,0,0,0,0,0)); + LibKernel("KerLinear_16a_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerLinear_NE16_T", + CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_NONE), -1, CNN_Type(2,0,4,0,0), 0,0,0,0,0,0)); + LibKernel("Ker_MM_Conv2D_NE16", CALL_PARALLEL_CC|CALL_NE16_KER, 0, "Ker_MM_Conv_NE16_T", CNN_Match(CNN_OperList(1, KOP_MM_CONV), 0, -1, CNN_Type(1,1,0,0,4), -1,-1,1,1,-1,-1)); + + LibKernel("KerMatMul_8a_NE16", CALL_PARALLEL_CC|CALL_NE16_KER, 0, "KerMatMul_NE16_T", + CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_NONE), 0, CNN_Type(1,0,4,0,0), 0,0,0,0,0,0)); + LibKernel("KerMatMul_8aFast_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerMatMul_NE16_T", + CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,0,4,0,0), 0,0,0,0,0,0)); + + LibKernel("KerMatMul_16a_NE16", CALL_PARALLEL_CC|CALL_NE16_KER, 0, "KerMatMul_NE16_T", + CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_NONE), 0, CNN_Type(2,0,4,0,0), 0,0,0,0,0,0)); + LibKernel("KerMatMul_16aFast_NE16", CALL_SEQUENTIAL_STRUCT|CALL_NE16_KER, 0, "KerMatMul_NE16_T", + CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(2,0,4,0,0), 0,0,0,0,0,0)); } @@ -303,8 +332,8 @@ int CNN_MM_ConvolutionNE16( GenTilingError("CNN_MM_ConvolutionNE16 Kernel: %s, ConvOper, expecting KOP_CONV", Name); if (!(PoolOper == KOP_NONE || PoolOper == KOP_MAXPOOL || PoolOper == KOP_AVGPOOL)) // || PoolOper == KOP_AVGPOOL)) GenTilingError("CNN_MM_ConvolutionNE16 Kernel: %s, PoolOper, expecting KOP_NONE, KOP_MAXPOOL, KOP_AVGPOOL", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_RELUM || ActOper == KOP_HSIGMOID || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_MM_ConvolutionNE16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_RELUM, KOP_HSIGMOID, KOP_HSWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_RELUM || ActOper == KOP_HSIGMOID || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU || ActOper == KOP_SIGMOID || ActOper == KOP_TANH)) + GenTilingError("CNN_MM_ConvolutionNE16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_RELUM, KOP_HSIGMOID, KOP_HSWISH, KOP_LEAKYRELU, KOP_SIGMOID or KOP_TANH", Name); Wa |= O_NE16_RNN; /* When there is a special activation (not supported by the accelerator itself), you need to streamout 32bits and do the act in the cluster but the ((*S) >> N) is done in the accelerator (KOP_DP_REDUCT_NOSCALE) */ @@ -349,7 +378,7 @@ int CNN_MM_ConvolutionNE16( LayerBandwidth += (Fcx*Fcy*Filter_DataSizeBits*InFeat*(OutFeat)+7)/8; LayerBandwidth += Bias_DataSize*OutFeat; - ConvKerName = CNN_FindMatchingKernelAttr(KOP_MM_CONV, KOP_NONE, ParFeat, CALL_HWC_KER, Abs(In_DataSize), Abs(Out_DataSize), Bias_DataSize, 0, 4, Fcx, Fcy, Dcx, Dcy, Scx, Scy, + ConvKerName = CNN_FindMatchingKernelAttr(KOP_MM_CONV, KOP_NONE, ParFeat, CALL_NE16_KER, Abs(In_DataSize), Abs(Out_DataSize), Bias_DataSize, 0, 4, Fcx, Fcy, Dcx, Dcy, Scx, Scy, &NeedFcx, &NeedFcy, &NeedDcx, &NeedDcy, &NeedScx, &NeedScy, 0); if (ConvKerName==0) GenTilingError("CNN_MM_ConvolutionNE16 Kernel: %s, Can't find a matching Convolution basic kernel", Name); if (PoolOper==KOP_MAXPOOL) { @@ -409,7 +438,7 @@ int CNN_MM_ConvolutionNE16( KCArgs[Ca++] = TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"); KCArgs[Ca++] = TCArg(Out_DataSize>0?CNN_ArgDataType(Out_DataSize,1,1):CNN_ArgDataTypeUns(-Out_DataSize,1,1), "Out"); KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "Scale"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "ScaleN"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "ScaleN"); KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Infos"); Kernel = UserKernel(Name, @@ -599,8 +628,8 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, ConvOper, expecting KOP_NONE, KOP_CONV or KOP_CONV_DW", Name); if (!(PoolOper == KOP_NONE || PoolOper == KOP_MAXPOOL || PoolOper == KOP_AVGPOOL)) // || PoolOper == KOP_AVGPOOL)) GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, PoolOper, expecting KOP_NONE, KOP_MAXPOOL, KOP_AVGPOOL", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_RELUM || ActOper == KOP_HSIGMOID || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_RELUM, KOP_HSIGMOID, KOP_HSWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_RELUM || ActOper == KOP_HSIGMOID || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU || ActOper == KOP_SIGMOID || ActOper == KOP_TANH)) + GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_RELUM, KOP_HSIGMOID, KOP_HSWISH, KOP_LEAKYRELU, KOP_SIGMOID or KOP_TANH", Name); if (DWConv && (InFeat != OutFeat)) GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, Depth wise convolution requested with InFeat:%d != OutFeat:%d", Name, InFeat, OutFeat); @@ -610,7 +639,6 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( int Mode16 = (Abs(In_DataSize) == 2); if (Mode16) { Wa |= O_NE16_MODE16; - printf("HERE %ld\n", O_IN|O_DB|O_CONST|Wa); } unsigned int InTileCons = Mode16?8:16; @@ -653,12 +681,12 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( LayerBandwidth += Bias_DataSize*OutFeat; if (ConvOper == KOP_CONV && Height == 1 && Fcx != 1 && Fcy == 1) ConvOper = KOP_CONV1D; - ConvKerName = CNN_FindMatchingKernelAttr(ConvOper, KOP_NONE, ParFeat, CALL_HWC_KER, Abs(In_DataSize), Abs(Out_DataSize), Bias_DataSize, 0, 4, Fcx, Fcy, Dcx, Dcy, Scx, Scy, + ConvKerName = CNN_FindMatchingKernelAttr(ConvOper, KOP_NONE, ParFeat, CALL_NE16_KER, Abs(In_DataSize), Abs(Out_DataSize), Bias_DataSize, 0, 4, Fcx, Fcy, Dcx, Dcy, Scx, Scy, &NeedFcx, &NeedFcy, &NeedDcx, &NeedDcy, &NeedScx, &NeedScy, 0); if (ConvKerName==0) GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, Can't find a matching Convolution basic kernel", Name); int BasicNE16Mode = 0; // if ((Fcx==1 && Fcy==1) || (Fcx==3 && Fcy==3 && Scx==1 && Scy==1)) {BasicNE16Mode = 1; printf("BASIC MODE\n");} - if (PoolOper==KOP_MAXPOOL) { + if (PoolOper==KOP_MAXPOOL || PoolOper==KOP_AVGPOOL) { PoolKerName = CNN_FindMatchingKernelAttr(PoolOper, KOP_NONE, 1, CALL_HWC_KER, In_DataSize, 0, 0, 0, Out_DataSize, Fpx, Fpy, Dpx, Dpy, Spx, Spy, &NeedFpx, &NeedFpy, &NeedDpx, &NeedDpy, &NeedSpx, &NeedSpy, 0); if (PoolKerName==0) GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, Can't find a matching Pooling basic kernel", Name); @@ -681,7 +709,7 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( printf("InFeat: %d%s, OutFeat: %d, InFeatCons: %d\n", InFeat, InFeatOneTile?" (FULL)":"(PART)", OutFeat, InTileCons); printf("Conv => W: %4d, Pad:[%d,%d] PadT:[%d,%d] => Wc: %d, Filter:[%d,%d]x%d Bits\n", Width, PadInc[0], PadInc[1], PadIncT[0], PadIncT[1], Wc, Fcx, Fcy, Filter_DataSizeBits); printf(" => H: %4d, Pad:[%d,%d] PadT:[%d,%d] => Hc: %d\n", Height, PadInc[2], PadInc[3], PadIncT[2], PadIncT[3], Hc); - printf(" ConvOut_DataSize: %d\n", Cos); + printf("%s -- >ConvOut_DataSize: %d\n", NeedConvout?"NeedConvOut":"NoConvOut", Cos); printf("Pool => Wc: %4d, Pad:[%d,%d] => Wo: %d, Filter:[%d,%d] %d\n", UsedWc, PadInp[0], PadInp[1], Wo, Fpx, Fpy, Mode16); printf(" => Hc: %4d, Pad:[%d,%d] => Ho: %d\n", UsedHc, PadInp[2], PadInp[3], Ho); printf("OverlapC: %d\n", OverlapC); @@ -722,11 +750,11 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( KCArgs[Ca++] = TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"); KCArgs[Ca++] = TCArg(Out_DataSize>0?CNN_ArgDataType(Out_DataSize,1,1):CNN_ArgDataTypeUns(-Out_DataSize,1,1), "Out"); KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "Scale"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "ScaleN"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "ScaleN"); KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Infos"); /* User kernel kernel arguments */ - Object_T **KArgs = AllocateKerArgs(NeedConvout?8:7); + Object_T **KArgs = AllocateKerArgs(NeedConvout?(PoolKerName?9:8):7); int Ka=0; KArgs[Ka++] = KerArgPV("In", KerArgSpace(2,T0,D0), O_IN|O_DB|O_HWC, Width, Height, UsedWidth, UsedHeight, PadIncT, PadInc, PadValue, Abs(In_DataSize), OverlapC, 0, TileCons, "In"); if (MinTileDim && (MinTileDim > TileCons)) SetKerArgMinTileSize(KArgs[Ka-1], MinTileDim); @@ -740,6 +768,8 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( } if (NeedConvout) KArgs[Ka++] = KerArgP("ConvOut",KerArgSpace(2,T0,Os), O_BUFF|O_ONETILE|O_HWC, Wc, Hc, UsedWc, UsedHc, PadInp, PadInp, Cos, OverlapP, 0, 0, ""); + if (NeedConvout && PoolKerName) + KArgs[Ka++] = KerArgP("ActOut", KerArgSpace(2,T0,Os), O_BUFF|O_ONETILE|O_HWC, Wc, Hc, UsedWc, UsedHc, PadInp, PadInp, 1, OverlapP, 0, 0, ""); KArgs[Ka++] = KerArg ("Out", KerArgSpace(2,T0,Os), O_OUT|O_DB|O_HWC, Wo, Ho, Abs(Out_DataSize),0,0, 0, "Out"); KArgs[Ka++] = KerArg ("Infos", KerArgSpace(1,T0), O_IN|O_BUFF|O_NTILED|O_CONST, AT_INF_NE16_DIM, 1, 1, 0, 0, 0, "Infos"); @@ -778,7 +808,7 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( Imm(0) ) ):AT_NO_CALL, - SetBiasKerName?Call(SetBiasKerName, DWConv?LOC_D0_PROLOG:LOC_D1_PROLOG, + SetBiasKerName?Call(SetBiasKerName, DWConv?LOC_LOOP:LOC_D0, Bindings(6, K_Arg("ConvOut", KER_ARG_TILE), /* SetBias output tile */ K_Arg("ConvOut", KER_ARG_TILE_W), /* SetBias output tile width */ @@ -848,7 +878,7 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( Call(DPReductionKerName, DWConv?LOC_LOOP_EPILOG:LOC_D0_EPILOG, /* DP Reduction also take care of optional activation */ Bindings(8, K_Arg("ConvOut", KER_ARG_TILE), /* Double precision input tile */ - K_Arg(PoolOper?"ConvOut":"Out", KER_ARG_TILE), /* Single precision output tile, warning use IO kernel when In=Out */ + K_Arg(PoolOper?"ActOut":"Out", KER_ARG_TILE), /* Single precision output tile, warning use IO kernel when In=Out */ ParFeat?K_ArgPar("ConvOut", KER_ARG_PARTILE_SIZE, Os):Imm(1), /* Input tile Number of features */ K_Arg("ConvOut", KER_ARG_TILE_W), /* Input tile width */ K_Arg("ConvOut", KER_ARG_TILE_H), /* Input tile height */ @@ -860,17 +890,17 @@ static Kernel_T *CNN_ConvolutionNE16_Internal( (PoolKerName==0)?AT_NO_CALL: Call(PoolKerName, DWConv?LOC_LOOP:LOC_D0_EPILOG, Bindings(13, - K_Arg("ConvOut", KER_ARG_TILE), - K_Arg("ConvOut", KER_ARG_TILE_W), - K_Arg("ConvOut", KER_ARG_TILE_H), + K_Arg(NeedReduct?"ActOut":"ConvOut", KER_ARG_TILE), + K_Arg(NeedReduct?"ActOut":"ConvOut", KER_ARG_TILE_W), + K_Arg(NeedReduct?"ActOut":"ConvOut", KER_ARG_TILE_H), NeedFpx?Imm(Fpx):AT_IGNORE_ARG_BINDING, /* Pool Fx */ NeedFpy?Imm(Fpy):AT_IGNORE_ARG_BINDING, /* Pool Fy */ NeedSpx?Imm(Spx):AT_IGNORE_ARG_BINDING, /* Pool Stridex */ NeedSpy?Imm(Spy):AT_IGNORE_ARG_BINDING, /* Pool Stridey */ - K_ArgPred("ConvOut", KER_ARG_TILEFIRST, T0), /* First Tile */ - K_Arg("ConvOut", KER_ARG_TILE_PAD), /* Pool Padding */ + K_ArgPred(NeedReduct?"ActOut":"ConvOut", KER_ARG_TILEFIRST, T0), /* First Tile */ + K_Arg(NeedReduct?"ActOut":"ConvOut", KER_ARG_TILE_PAD), /* Pool Padding */ K_Arg("Out", KER_ARG_TILE), /* Pooling output tile */ - K_ArgPar("ConvOut", KER_ARG_PARTILE_SIZE, D1), /* In Features */ + K_ArgPar(NeedReduct?"ActOut":"ConvOut", KER_ARG_PARTILE_SIZE, D1), /* In Features */ K_Arg("Out", KER_ARG_TILE_W), /* Output tile width */ K_Arg("Out", KER_ARG_TILE_H) /* Output tile height */ ) @@ -1069,12 +1099,14 @@ static Kernel_T *CNN_LinearAct_NE16_Internal( { if (Abs(In_DataSize)!=1 && Abs(In_DataSize)!=2) GenTilingError("Node: %s Input DataSize %d not supported in NE16", Name, In_DataSize); int Ws = Filter_DataSizeBits; - unsigned int Wp = 0; //SPACE_PROP_PAD2PREF; + unsigned long int Wp = SPACE_PROP_PAD2PREF; unsigned int Bs = Bias_DataSize; - unsigned int Wa = 0; + unsigned long int Wa = 0; + int Mode16 = (Abs(In_DataSize) == 2); if (((Ws%8)!=0)) Wa = O_BIT; else Ws = Ws/8; - Wa |= O_NE16_LIN; - unsigned int InTileCons = 16; + Wa |= O_NE16_LIN | O_LINEAR; + if (Mode16) Wa |= O_NE16_MODE16; + unsigned int InTileCons = Mode16?32:16; unsigned int InFeatProp = (InFeatOneTile!=0)?SPACE_PROP_ONE_TILE:0; int Log = 1; @@ -1086,15 +1118,16 @@ static Kernel_T *CNN_LinearAct_NE16_Internal( unsigned long long int LayerBandwidth = 0; /* First try to map on Linear Kernel without reduction, for that In and one full line of Weights must fit into L1 */ - if (LinearOper != KOP_LINEAR) GenTilingError("CNN_LinearAct_SQ8 Kernel: %s, only KOP_LINEAR should be used as LinearOper argument", Name); + if (LinearOper != KOP_LINEAR) GenTilingError("CNN_LinearAct_NE16 Kernel: %s, only KOP_LINEAR should be used as LinearOper argument", Name); - LinearKerName = "KerLinear_NE16"; + LinearKerName = CNN_FindMatchingKernelAttr(LinearOper, KOP_NONE, 0, CALL_NE16_KER, Abs(In_DataSize), 0, Bias_DataSize, 0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0); + if (LinearKerName==0) GenTilingError("CNN_LinearAct_NE16 Kernel: %s, Can't find a matching Linear basic kernel: %d %d", Name, Abs(In_DataSize), Bias_DataSize); if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_RELUM || ActOper == KOP_HSIGMOID || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_RELUM, KOP_HSIGMOID, KOP_HSWISH or KOP_LEAKYRELU", Name); /* Also when in/out are 16bits you need to streamout 32bits but here the reduction step will be done in the cluster (KOP_DP_REDUCT) */ - int NeedReductScale = Abs(In_DataSize) == 2; //Abs(Out_DataSize) == 2; - int NeedSetBias = Abs(In_DataSize) == 2; + int NeedReductScale = Mode16; //Abs(Out_DataSize) == 2; + int NeedSetBias = Mode16; int NeedReductNoScale = ((InTileCons < InDim) && !InFeatOneTile) || NeedSetBias; int NeedReduct = NeedReductNoScale || NeedReductScale; @@ -1108,6 +1141,7 @@ static Kernel_T *CNN_LinearAct_NE16_Internal( SetBiasKerName = CNN_FindMatchingKernelAttr(KOP_SETBIAS, KOP_NONE, ParFeat, CALL_HWC_KER, Bias_DataSize,0,0,0,4, 0,0,0,0,0,0, 0,0,0,0,0,0, 0); if (SetBiasKerName==0) GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, Can't find a matching SetBias basic kernel", Name); } + NeedLinOut = NeedLinOut || ActKerName; LayerOp += InDim*OutDim; if (ActOper) LayerOp += OutDim; @@ -1116,18 +1150,17 @@ static Kernel_T *CNN_LinearAct_NE16_Internal( LayerBandwidth += InDim*OutDim*1; LayerBandwidth += Bs*OutDim; - int StreamoutMode = 1; - int Mode16 = (Abs(In_DataSize) == 2); - int Streamin = 0; // Streamin initialized at 0, set to 1 in the basic kernel if multiple chin tile + int StreamoutMode = !Mode16; + int Streamin = Mode16; // Streamin initialized at 0, set to 1 in the basic kernel if multiple chin tile int FilterMode = 3; int LinearMode = 1; int StridedMode = 0; int NormBits = 0; int WOffsetCfg = 1; int QuantRightShift = 0; - int QuantBits = (NeedLinOut||ActKerName)?2:((Abs(Out_DataSize)==1)?0:1); // 00: 8bit, 01: 16bit, 10: 32bit - int QuantNoRect = (Out_DataSize>0)?1:0; - int NormBias = 1; + int QuantBits = NeedLinOut?2:((Abs(Out_DataSize)==1)?0:1); // 00: 8bit, 01: 16bit, 10: 32bit + int QuantNoRect = (Out_DataSize>0 || Mode16)?1:0; + int NormBias = !Mode16; int NormShift = 1; unsigned int DEFAULT_NE16_JOB_CFG = NE16_DefaultConfig(Filter_DataSizeBits, Mode16, StreamoutMode, FilterMode, LinearMode, StridedMode, NormBits, Streamin, \ WOffsetCfg, QuantRightShift, QuantBits, QuantNoRect, NormShift, NormBias); @@ -1147,15 +1180,15 @@ static Kernel_T *CNN_LinearAct_NE16_Internal( KCArgs[Ca++] = TCArg(CNN_ArgDataType(Bs,1,1), "Bias"); KCArgs[Ca++] = TCArg(Out_DataSize>0?CNN_ArgDataType(Out_DataSize,1,1):CNN_ArgDataTypeUns(-Out_DataSize,1,1), "Out"); KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1,1,1), "Scale"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1,1,1), "ScaleN"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "ScaleN"); KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Infos"); - Object_T **KArgs = AllocateKerArgs(7+(NeedLinOut||ActKerName)); + Object_T **KArgs = AllocateKerArgs(7+NeedLinOut); int Ka=0; - KArgs[Ka++] = KerArg("In", KerArgSpace(1,D0), OBJ_IN_DB, 1, 1, Abs(In_DataSize), 0, 0, 0, "In"); + KArgs[Ka++] = KerArg("In", KerArgSpace(1,D0|SPACE_PROP_PAD2PREF), OBJ_IN_DB, 1, 1, Abs(In_DataSize), 0, 0, 0, "In"); KArgs[Ka++] = KerArg("Filter", KerArgSpace(2,D1,D0|Wp), OBJ_IN_DB|O_CONST|Wa, 1, 1, Ws, 0, 0, 0, "Filter"); KArgs[Ka++] = KerArg("Bias", KerArgSpace(1,D1), OBJ_IN_DB|O_CONST, 1, 1, Bs, 0, 0, 0, "Bias"); - if (NeedLinOut||ActKerName) + if (NeedLinOut) KArgs[Ka++] = KerArg("LinOut", KerArgSpace(1,D1), O_BUFF|O_ONETILE, 1, 1, Ls, 0, 0, 0, ""); KArgs[Ka++] = KerArg("Out", KerArgSpace(1,D1), OBJ_OUT_DB, 1, 1, Abs(Out_DataSize), 0, 0, 0, "Out"); KArgs[Ka++] = KerArg("Scale", KerArgSpace(1,D1), OBJ_IN_DB|O_CONST, 1, 1, 1, 0, 0, 0, "Scale"); @@ -1168,14 +1201,14 @@ static Kernel_T *CNN_LinearAct_NE16_Internal( KCArgs, Calls(6, Call("NE16_Enable", LOC_PROLOG, Bindings(0)), - SetBiasKerName?Call(SetBiasKerName, LOC_PROLOG, + SetBiasKerName?Call(SetBiasKerName, LOC_D0_PROLOG, Bindings(6, K_Arg("LinOut", KER_ARG_TILE), /* SetBias output tile */ - K_Arg("LinOut", KER_ARG_TILE_W), /* SetBias output tile width */ - K_Arg("LinOut", KER_ARG_TILE_H), /* SetBias output tile height */ + Imm(1), /* SetBias output tile width */ + Imm(1), /* SetBias output tile height */ ParFeat?K_ArgPar("LinOut", KER_ARG_PARTILE_SIZE, D1):Imm(1), /* Number of output features in this tile */ - K_Arg("Bias", KER_ARG_TILE), /* SetBias Bias tile */ - K_TileOper("Infos", "char *", '@', AT_INF_BIASN) /* Bias Norm */ + K_Arg("Bias", KER_ARG_TILE), /* SetBias Bias tile */ + K_TileOper("Infos", "char *", '@', AT_INF_BIASN) /* Bias Norm */ ) ):AT_NO_CALL, Call("NE16_SoftReset", LOC_D0, Bindings(0)), @@ -1184,27 +1217,26 @@ static Kernel_T *CNN_LinearAct_NE16_Internal( K_Arg("In", KER_ARG_TILE), /* Conv input tile */ K_Arg("Filter", KER_ARG_TILE), /* Conv filter */ K_Arg("Bias", KER_ARG_TILE), /* Conv Bias when depth wise conv*/ - K_Arg(NeedLinOut?"LinOut":"Out", KER_ARG_TILE), /* Conv output */ + K_Arg(NeedLinOut?"LinOut":"Out", KER_ARG_TILE), /* Conv output */ K_Arg("Scale", KER_ARG_TILE), /* Per channel scale tile */ K_Arg("ScaleN", KER_ARG_TILE), /* Per channel scale normalization tile */ - K_ArgPar("In", KER_ARG_PARTILE_SIZE, D0), /* Number of input features in this tile */ - K_ArgPar(NeedLinOut?"LinOut":"Out", KER_ARG_PARTILE_SIZE, D1), /* Number of output features in this tile */ - K_ArgPred("In", KER_ARG_TILELAST, D0), /* First In Tile */ - K_ArgPred("In", KER_ARG_TILEFIRST, D0), /* Last In Tile */ + K_ArgPar("In", KER_ARG_PARTILE_SIZE, D0), /* Number of input features in this tile */ + K_ArgPar(NeedLinOut?"LinOut":"Out", KER_ARG_PARTILE_SIZE, D1), /* Number of output features in this tile */ + K_ArgPred("In", KER_ARG_TILELAST, D0), /* First In Tile */ + K_ArgPred("In", KER_ARG_TILEFIRST, D0), /* Last In Tile */ K_TileOper("Infos", "int *", '@', AT_INF_NE16_WOFFSET/4), /* W_Offset */ Imm(Filter_DataSizeBits), Imm(DEFAULT_NE16_JOB_CFG) /* MOVE TO INFOS !!!! */ - //K_TileOper("Infos", "unsigned int *", '@', AT_INF_NE16_DEF_CFG), /* Default NE16 config */ ) ), (ActKerName==0)?AT_NO_CALL: - Call(ActKerName, LOC_D0_EPILOG, /* DP Reduction also take care of optional activation */ + Call(ActKerName, LOC_D0, /* DP Reduction also take care of optional activation */ Bindings(8, - K_Arg("LinOut", KER_ARG_TILE), /* Double precision input tile */ - K_Arg("Out", KER_ARG_TILE), /* Single precision output tile, warning use IO kernel when In=Out */ - ParFeat?K_ArgPar("LinOut", KER_ARG_PARTILE_SIZE, D1):Imm(1), /* Input tile Number of features */ - Imm(1), /* Input tile width */ - Imm(1), /* Input tile height */ + K_Arg("LinOut", KER_ARG_TILE), /* Double precision input tile */ + K_Arg("Out", KER_ARG_TILE), /* Single precision output tile, warning use IO kernel when In=Out */ + ParFeat?K_ArgPar("LinOut", KER_ARG_PARTILE_SIZE, D1):Imm(1), /* Input tile Number of features */ + Imm(1), /* Input tile width */ + Imm(1), /* Input tile height */ K_Arg("Scale", KER_ARG_TILE), /* Per channel scale tile */ K_Arg("ScaleN", KER_ARG_TILE), /* Per channel scale normalization tile */ K_Arg("Infos", KER_ARG_TILE) /* Infos */ @@ -1300,3 +1332,227 @@ int CNN_LinearAct_NE16( return 1; } + + +/********************************************************************************************************************************************************************* + Generator for Matrix Multiplication layers with channel centric scaling followed by an optional Activation. + + Can be used for 1x1 convolutions with Filters in In1 [OutFeat x InFeat] and Features in In2 [InFeat x W*H] + When non unit strides are used they apply to In2, produced output is [OutFeat x Floor((W+Scx-1)/Scx)*Floor((H+Scy-1)/Scy)] + Bias [OutFeat x 1] is added to each individual features + Line x Col sum of products are evaluated on 32 bits therefore, when used for 1x1 convolution, this generator is equivalent to KOP_CONV_DP + + Template: + Name: Name of the generated user kernel + + Ctrl: Overide generator default options + + Bias_DataSize: 1: byte, 2: half word, + Scale_DataSize: 1: byte, 2: half word, 4: word + + ColM1: Number of colums for matrix In1, for 1x1 convolution this is InFeat + LineM1: Number of lines for matrix In1, for 1x1 convolution this is OutFeat + ColM2: Number of colums for matrix In2, for 1x1 convolution this is W*H + LineM2: Number of lines for matrix In2, for 1x1 convolution this is InFeat + + MatMulOper: Should always be KOP_MATMUL + + ActOper: Optionnal Activation (KOP_RELU, KOP_RELUN, KOP_HSWISH, KOP_HSIGMOID, KOP_LEAKYRELU) + + Signature: Name(In2, In1, Bias, Out, Scale, ScaleN, Infos) + + CNN_MatMulAct_SQ8 + +*********************************************************************************************************************************************************************/ + +int CNN_MatMulAct_NE16( + char *Name, + + CNN_GenControl_T *Ctrl, + + int In_DataSize, + int Out_DataSize, + int Bias_DataSize, + int Filter_DataSizeBits, + + int ColM1, + int LineM1, + int ColM2, + int LineM2, + + KernelOper_T MatMulOper, + KernelOper_T ActOper + ) + +{ + int Log=1; + if (Abs(In_DataSize)!=1 && Abs(In_DataSize)!=2) GenTilingError("Node: %s Input DataSize %d not supported in NE16", Name, In_DataSize); + + unsigned long int Wp = SPACE_PROP_PAD2PREF; + int LineO = LineM1, ColO = ColM2; + int ConsT0 = 32; + int ColFirst = ((LineM1*ColM1)<(LineM2*ColM2)); + char *MatMulKerName=0, *ActKerName=0, *SetBiasKerName=0; + int StandAloneAct = (ActOper!=KOP_NONE); + Bias_DataSize = (MatMulOper == KOP_MATMUL_NOBIAS)?0:Bias_DataSize; + int ScaleScalar = (MatMulOper == KOP_MATMUL_SCALE_SCALAR) || (MatMulOper == KOP_MATMUL_SCALE_SCALAR_TRANSPOSED) || (MatMulOper == KOP_MATMUL_NOBIAS); + int Transposed = (MatMulOper == KOP_MATMUL_TRANSPOSED) || (MatMulOper == KOP_MATMUL_SCALE_SCALAR_TRANSPOSED); + unsigned long int Wa = O_NE16_LIN | O_LINEAR; + int Mode16 = Abs(In_DataSize)==2; + if (Mode16) Wa |= O_NE16_MODE16; + int PaddedLineM2 = PAD(LineM2, (Mode16?32:16)); + unsigned int Bs = Bias_DataSize; + unsigned int Is = Abs(In_DataSize); + + int Ws = Filter_DataSizeBits; + if (((Ws%8)!=0)) Wa |= O_BIT; else Ws = Ws/8; + + if (!(MatMulOper == KOP_MATMUL) && !(MatMulOper == KOP_MATMUL) && !(MatMulOper == KOP_MATMUL_NOBIAS) && !(MatMulOper == KOP_MATMUL_SCALE_SCALAR_TRANSPOSED) && !(MatMulOper == KOP_MATMUL_SCALE_SCALAR) && !(MatMulOper == KOP_MATMUL_TRANSPOSED)) + GenTilingError("CNN_MatMulAct_SQ8 Kernel: %s, MatMulOper should be KOP_MATMUL", Name); + + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_RELUM || ActOper == KOP_RELUMN || ActOper == KOP_HSIGMOID || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU || ActOper == KOP_SIGMOID || ActOper == KOP_TANH)) + GenTilingError("CNN_MatMulAct_SQ8 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_HSIGMOID, KOP_TANH, KOP_HSWISH or KOP_LEAKYRELU", Name); + + unsigned long long int LayerOp = 0; + unsigned long long int LayerBandwidth = 0; + + if (ColM1 != LineM2) GenTilingError("CNN_MatMulAct_NE16: %s, Incorrect input matrices dimensions for a matrix multiplication: [%d x %d]*[%d x %d]", Name, LineM1, ColM1, LineM2, ColM2); + + MatMulKerName = CNN_FindMatchingKernelAttr(MatMulOper, KOP_NONE, PaddedLineM2==LineM2, CALL_NE16_KER, Is, 1, Bias_DataSize, 0, Abs(Out_DataSize), 0,0,0,0,0,0, 0,0,0,0, 0,0, 0); + if (MatMulKerName==0) GenTilingError("CNN_MatMulAct_NE16 Kernel: %s, Can't find a matching basic kernel for MatMul", Name); + + if (ActOper != KOP_NONE) { + ActKerName = CNN_FindMatchingKernelAttr(ActOper, KOP_NONE, 0, CALL_HWC_KER, 0, 0, 0, 0, Out_DataSize, 0,0,0,0,0,0, 0,0,0,0, 0, 0, 0); + if (ActKerName==0) GenTilingError("CNN_MatMulAct_NE16 Kernel: %s, Can't find a matching basic kernel for Activation", Name); + } + + /* Also when in/out are 16bits you need to streamout 32bits but here the reduction step will be done in the cluster (KOP_DP_REDUCT) */ + int NeedReductScale = Mode16; + int NeedSetBias = Mode16; + int NeedReduct = NeedSetBias || NeedReductScale; + + int NeedLinOut = NeedReduct || NeedSetBias; + unsigned int Ls = NeedLinOut?4:1; + if (NeedReduct) { + ActKerName = CNN_FindMatchingKernelAttr(NeedReductScale?KOP_DP_REDUCT:KOP_DP_REDUCT_NOSCALE, ActOper, 1, CALL_HWC_KER, 4, 0, 0, 0, Out_DataSize, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + if (ActKerName==0) GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, Can't find a matching Reduction basic kernel %d", Name, Out_DataSize); + } + if (NeedSetBias) { + SetBiasKerName = CNN_FindMatchingKernelAttr(KOP_SETBIAS, KOP_NONE, 1, CALL_HWC_KER, Bias_DataSize,0,0,0,4, 0,0,0,0,0,0, 0,0,0,0,0,0, 0); + if (SetBiasKerName==0) GenTilingError("CNN_ConvolutionPoolAct_NE16 Kernel: %s, Can't find a matching SetBias basic kernel", Name); + } + NeedLinOut = NeedLinOut || ActKerName; + + LayerOp += (int64_t) ColM1*ColO*LineM1; + LayerBandwidth += (int64_t) LineM1*(ColM1*ColM2*(1+1)); + LayerBandwidth += (int64_t) LineM1*ColM2*1; + LayerBandwidth += (int64_t) LineM1*Bias_DataSize; + + if (Log) { + printf("CNN_MatMul_SQ8: %s\n", Name); + printf("In1 => W: %4d, H: %4d %s\n", ColM1, LineM1, Transposed?"(TRANSPOSED)":""); + printf("In2 => W: %4d, H: %4d Padded To: %4d\n", ColM2, LineM2, PaddedLineM2); + printf("Out => W: %4d, H: %4d => %s\n", ColO, LineO, ColFirst?"Column first":"Line First"); + if (MatMulKerName) printf("%20s: %s\n", "MatMulKerName", MatMulKerName); + if (ActKerName) printf("%20s: %s\n", "ActKerName", ActKerName); + // printf("Nb Oper : %lld\n", LayerOp); + } + + int StreamoutMode = !Mode16; + int Streamin = Mode16; // Streamin initialized at 0, set to 1 in the basic kernel if multiple chin tile + int FilterMode = 3; + int LinearMode = 1; + int StridedMode = 0; + int NormBits = 0; + int WOffsetCfg = 1; + int QuantRightShift = 0; + int QuantBits = NeedLinOut?2:((Abs(Out_DataSize)==1)?0:1); // 00: 8bit, 01: 16bit, 10: 32bit + int QuantNoRect = (Out_DataSize>0 || Mode16)?1:0; + int NormBias = !Mode16; + int NormShift = 1; + unsigned int DEFAULT_NE16_JOB_CFG = NE16_DefaultConfig(Filter_DataSizeBits, Mode16, StreamoutMode, FilterMode, LinearMode, StridedMode, NormBits, Streamin, \ + WOffsetCfg, QuantRightShift, QuantBits, QuantNoRect, NormShift, NormBias); + + Kernel_T *Kernel = UserKernel(Name, + KernelIterSpace(3, IterParSpace(D1, ColM2, 32), IterTiledSpace(T0), IterParSpace(D0|SPACE_PROP_ONE_TILE, ColM1, 16)), + TILE_HOR, + CArgs(7, + TCArg(CNN_ArgDataTypeUns(1,1,1), "In2"), + TCArg((In_DataSize)>0?CNN_ArgDataType(Is,1,1):CNN_ArgDataTypeUns(Is,1,1), "In1"), + Bias_DataSize?TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"):AT_NO_C_ARG, + TCArg((Out_DataSize)>0?CNN_ArgDataType(Out_DataSize,1,1):CNN_ArgDataTypeUns(-Out_DataSize,1,1), "Out"), + !ScaleScalar?TCArg(CNN_ArgDataTypeUns(1,1,1),"Scale"):AT_NO_C_ARG, + !ScaleScalar?TCArg(CNN_ArgDataType(1,1,1),"ScaleN"):AT_NO_C_ARG, + TCArg(CNN_ArgDataType(1,1,1), "Infos") + ), + Calls(6, + Call("NE16_Enable", LOC_PROLOG, Bindings(0)), + SetBiasKerName?Call(SetBiasKerName, LOC_D0_PROLOG, + Bindings(6, + K_Arg("LinOut", KER_ARG_TILE), /* SetBias output tile */ + Imm(1), /* SetBias output tile width */ + K_Arg("In1", KER_ARG_TILE_H), /* Input tile height */ + K_ArgPar("LinOut", KER_ARG_PARTILE_SIZE, D1), /* Number of output features in this tile */ + K_Arg("Bias", KER_ARG_TILE), /* SetBias Bias tile */ + K_TileOper("Infos", "char *", '@', AT_INF_BIASN) /* Bias Norm */ + ) + ):AT_NO_CALL, + Call("NE16_SoftReset", LOC_D0, Bindings(0)), + Call(MatMulKerName, LOC_D0, + Bindings(13, + K_Arg("In1", KER_ARG_TILE), /* Conv input tile */ + K_ArgPar("In1", KER_ARG_PARTILE_SIZE, D0), + K_Arg("In1", KER_ARG_TILE_H), + K_Arg("In2", KER_ARG_TILE), + K_ArgPar("In2", KER_ARG_PARTILE_SIZE, D1), + K_Arg("Bias", KER_ARG_TILE), /* Conv Bias when depth wise conv*/ + K_Arg("Scale", KER_ARG_TILE), /* Per channel scale tile */ + K_Arg("ScaleN", KER_ARG_TILE), /* Per channel scale normalization tile */ + K_Arg(NeedLinOut?"LinOut":"Out", KER_ARG_TILE), /* Conv output */ + K_Arg("Buff", KER_ARG_TILE), + K_Arg("Infos", KER_ARG_TILE), + K_TileOper("Infos", "signed char *", '@', AT_INF_NE16_WOFFSET), /* W_Offset */ + Imm(DEFAULT_NE16_JOB_CFG) + ) + ), + (ActKerName==0)?AT_NO_CALL: + Call(ActKerName, LOC_D0, /* DP Reduction also take care of optional activation */ + Bindings(8, + K_Arg("LinOut", KER_ARG_TILE), /* Double precision input tile */ + K_Arg("Out", KER_ARG_TILE), /* Single precision output tile, warning use IO kernel when In=Out */ + K_ArgPar("LinOut", KER_ARG_PARTILE_SIZE, D1), /* Input tile Number of features */ + Imm(1), /* Input tile width */ + K_Arg("In1", KER_ARG_TILE_H), /* Input tile height */ + K_Arg("Scale", KER_ARG_TILE), /* Per channel scale tile */ + K_Arg("ScaleN", KER_ARG_TILE), /* Per channel scale normalization tile */ + K_Arg("Infos", KER_ARG_TILE) /* Infos */ + ) + ), + Call("NE16_Disable", LOC_EPILOG, Bindings(0)) + ), + KerArgs(9, + KerArg("In1", KerArgSpace(2,T0,D0), OBJ_IN_DB, 1, LineM1, Abs(Is), 0, 0, 0, "In1"), + KerArg("In2", KerArgSpace(2,D1,D0|SPACE_PROP_PAD2PREF), OBJ_IN_DB|O_CONST|Wa, 1, 1, Ws, 0, 0, 0, "In2"), + KerArg("Bias", KerArgSpace(1,D1), OBJ_IN_DB|O_CONST|O_ONETILE, 1, 1, Bs, 0, 0, 0, "Bias"), + NeedLinOut?KerArg("LinOut", KerArgSpace(2,T0,D1), O_BUFF|O_ONETILE, 1, LineM1, Ls, 0, 0, 0, ""):AT_NO_KER_ARG, + KerArg("Out", KerArgSpace(2,T0,D1), OBJ_OUT_DB, 1, LineM1, Abs(Out_DataSize), 0, 0, 0, "Out"), + KerArg("Scale", KerArgSpace(1,D1), OBJ_IN_DB|O_CONST, 1, 1, 1, 0, 0, 0, "Scale"), + KerArg("ScaleN", KerArgSpace(1,D1), OBJ_IN_DB|O_CONST, 1, 1, 1, 0, 0, 0, "ScaleN"), + KerArg("Infos", KerArgSpace(1,T0), O_IN|O_BUFF|O_NTILED, 1, 1, AT_INF_NE16_DIM*1, 0, 0, 0, "Infos"), + KerArg("Buff", KerArgSpace(1,T0), O_BUFF|O_NTILED, 1, 1, 2*PaddedLineM2*Abs(Is), 0, 0, 0, "") + ) + ); + if (Kernel) { + AddKernelInfos(Name, AT_KERINFO_OPER, LayerOp, 0); + AddKernelInfos(Name, AT_KERINFO_BANDWIDTH, LayerBandwidth, 0); + + AddKernelArgDim(Name, "In1", 3, LineM1, ColM1, Abs(Is)); + AddKernelArgDim(Name, "In2", 3, LineM2, ColM2, 1); + AddKernelArgDim(Name, "Bias", 2, ColO, Bias_DataSize); + AddKernelArgDim(Name, "Out", 3, LineO, ColO, Abs(Out_DataSize)); + AddKernelArgDim(Name, "Scale", 2, ColO, 1); + AddKernelArgDim(Name, "ScaleN", 2, ColO, 1); + AddKernelArgDim(Name, "Infos", 2, AT_INF_DIM, 1); + } + return Kernel!=0; +} \ No newline at end of file diff --git a/tools/autotiler_v3/CNN_Generators_NE16/CNN_Generators_NE16.h b/tools/autotiler_v3/CNN_Generators_NE16/CNN_Generators_NE16.h index 6302a836e..ac6285a00 100644 --- a/tools/autotiler_v3/CNN_Generators_NE16/CNN_Generators_NE16.h +++ b/tools/autotiler_v3/CNN_Generators_NE16/CNN_Generators_NE16.h @@ -96,6 +96,7 @@ int CNN_MM_ConvolutionNE16( KernelOper_T ActOper ); + int CNN_LinearAct_NE16( char *Name, @@ -114,4 +115,23 @@ int CNN_LinearAct_NE16( KernelOper_T ActOper ); +int CNN_MatMulAct_NE16( + char *Name, + + CNN_GenControl_T *Ctrl, + + int In_DataSize, + int Out_DataSize, + int Bias_DataSize, + int Filter_DataSizeBits, + + int ColM1, + int LineM1, + int ColM2, + int LineM2, + + KernelOper_T MatMulOper, + KernelOper_T ActOper + ); + #endif diff --git a/tools/autotiler_v3/CNN_Generators_SQ8/CNN_Generators_SQ8.c b/tools/autotiler_v3/CNN_Generators_SQ8/CNN_Generators_SQ8.c index 2a9b7a242..edc19bab0 100644 --- a/tools/autotiler_v3/CNN_Generators_SQ8/CNN_Generators_SQ8.c +++ b/tools/autotiler_v3/CNN_Generators_SQ8/CNN_Generators_SQ8.c @@ -45,8 +45,11 @@ #define AT_INF_BIASN 5 #define AT_INF_IN1SCALE 5 #define AT_INF_SCALEN 5 +#define AT_INF_GLOBAL_SUM_SCALE 5 #define AT_INF_IN1SCALEN 6 +#define AT_INF_GLOBAL_SUM_SCALEN 6 + #define AT_INF_OUTSCALE 7 #define AT_INF_OUTSCALEN 8 @@ -614,6 +617,30 @@ void LoadCNN_SQ8_Library() LibKernel("KerParGlobalAvgPool_Reduct_ReLUMN_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T",CNN_Match(CNN_OperList(1, KOP_GLOBAL_AVGPOOL_REDUCT), CNN_OperList(1, KOP_RELUMN), 1, CNN_Type(1,0,0,0,4), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPoolFullFeat_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T", CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL), CNN_OperList(1, KOP_NONE), 1, + CNN_Type(1,0,0,0,1), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPoolFullFeat_ReLU_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T", CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL), CNN_OperList(1, KOP_RELU), 1, + CNN_Type(1,0,0,0,1), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPoolFullFeat_ReLUN_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T", CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL), CNN_OperList(1, KOP_RELUN), 1, + CNN_Type(1,0,0,0,1), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPoolFullFeat_ReLUM_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T", CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL), CNN_OperList(1, KOP_RELUM), 1, + CNN_Type(1,0,0,0,1), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPoolFullFeat_ReLUMN_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T", CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL), CNN_OperList(1, KOP_RELUMN), 1, + CNN_Type(1,0,0,0,1), 0,0,0,0,0,0)); + + LibKernel("KerParGlobalSumPool_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T", CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL), CNN_OperList(1, KOP_NONE), 1, + CNN_Type(1,0,0,0,4), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPool_Reduct_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T", CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL_REDUCT), CNN_OperList(1, KOP_NONE), 1, + CNN_Type(1,0,0,0,4), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPool_Reduct_ReLU_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T",CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL_REDUCT), CNN_OperList(1, KOP_RELU), 1, + CNN_Type(1,0,0,0,4), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPool_Reduct_ReLUN_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T",CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL_REDUCT), CNN_OperList(1, KOP_RELUN), 1, + CNN_Type(1,0,0,0,4), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPool_Reduct_ReLUM_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T",CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL_REDUCT), CNN_OperList(1, KOP_RELUM), 1, + CNN_Type(1,0,0,0,4), 0,0,0,0,0,0)); + LibKernel("KerParGlobalSumPool_Reduct_ReLUMN_SQ8", CALL_PARALLEL, 0, "KerGlobalPool_SQ8_T",CNN_Match(CNN_OperList(1, KOP_GLOBAL_SUMPOOL_REDUCT), CNN_OperList(1, KOP_RELUMN), 1, + CNN_Type(1,0,0,0,4), 0,0,0,0,0,0)); + /* Matrix Algebra */ /* Matrix Addition with tensor centric scaling and optional activation */ @@ -632,10 +659,6 @@ void LoadCNN_SQ8_Library() /* Matrix Multiplication for 1x1 convolutions with channel scaling and optional ReLU or ReLUN activation */ /* 8b Bias */ - LibKernel("KerParMatMulNoBias_2x4_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); - LibKernel("KerParMatMulNoBias_2x4_ReLU_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); - LibKernel("KerParMatMulNoBias_2x4_ReLUN_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); - LibKernel("KerParMatMulB8_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,1,0,1), 0,0,0,0,1,1)); LibKernel("KerParMatMulB8_ReLU_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELU), 1, CNN_Type(1,1,1,0,1), 0,0,0,0,1,1)); LibKernel("KerParMatMulB8_ReLUN_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(1,1,1,0,1), 0,0,0,0,1,1)); @@ -658,14 +681,30 @@ void LoadCNN_SQ8_Library() LibKernel("KerParMatMulB32_2x4_ReLU_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELU), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); LibKernel("KerParMatMulB32_ReLUN_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); - LibKernel("KerParMatMulTransposedB32_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); - LibKernel("KerParMatMulTransposedB32_ReLU_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_RELU), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); - LibKernel("KerParMatMulTransposedB32_ReLUN_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedB32_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedB32_ReLU_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_RELU), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedB32_ReLUN_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + + LibKernel("KerParMatMulTransposedNoBias_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBias_ReLU_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_RELU), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBias_ReLUN_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); - LibKernel("KerParMatMulB32_2x4_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SCALE_SCALAR), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulB32_2x4_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SCALE_SCALAR), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); LibKernel("KerParMatMulB32_2x4_ReLU_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SCALE_SCALAR), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); LibKernel("KerParMatMulB32_2x4_ReLUN_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SCALE_SCALAR), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBias_2x4_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_SCALE_SCALAR), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBias_2x4_ReLU_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_SCALE_SCALAR), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBias_2x4_ReLUN_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_SCALE_SCALAR), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); + + LibKernel("KerParMatMulTransposedB32_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SCALE_SCALAR_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedB32_ReLU_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SCALE_SCALAR_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedB32_ReLUN_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SCALE_SCALAR_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,1,1)); + + LibKernel("KerParMatMulTransposedNoBias_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_SCALE_SCALAR_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBias_ReLU_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_SCALE_SCALAR_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBias_ReLUN_PL_SQ8", CALL_PARALLEL, 0, "KerMatMul_PL_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_SCALE_SCALAR_TRANSPOSED), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,0,0,1), 0,0,0,0,1,1)); + LibKernel("KerParMatMulSxSyB32_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_NONE), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSxSyB32_ReLU_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELU), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSxSyB32_ReLUN_SQ8", CALL_PARALLEL, 0, "KerMatMul_SQ8_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(1,1,4,0,1), 0,0,0,0,-1,-1)); @@ -1153,6 +1192,7 @@ int CNN_MM_ConvolutionPoolAct_SQ8( Fpx=1; Dpx=1; Spx=1; Fpy=1; Dpy=1; Spy=1; } if (Ctrl) { + if (Ctrl->TileOrientation != -1) TileOrientation = (Ctrl->TileOrientation==0)?TILE_HOR:TILE_VER; if (Ctrl->PadType != -1) PadType = Ctrl->PadType; if (Ctrl->HWC) HWC = 1; if (Ctrl->ParallelFeatures != -1) ParFeatConv = Ctrl->ParallelFeatures; @@ -1277,14 +1317,14 @@ int CNN_MM_ConvolutionPoolAct_SQ8( TileFirst? KernelIterSpace(3, IterTiledSpace(T0), IterParSpace(D1, OutFeat, OutTileCons), IterParSpace(D0|SPACE_PROP_ONE_TILE, InFeat, InFeat)): KernelIterSpace(3, IterParSpace(D1, OutFeat, OutTileCons), IterTiledSpace(T0), IterParSpace(D0|SPACE_PROP_ONE_TILE, InFeat, InFeat)), - TILE_HOR, + TileOrientation, CArgs(7, TCArg(CNN_ArgDataType(1,1,1), "In"), TCArg(CNN_ArgDataType(1,1,1), "Filter"), TCArg(CNN_ArgDataType(Bs,1,1), "Bias"), TCArg(CNN_ArgDataType(1,1,1), "Out"), TCArg(CNN_ArgDataTypeUns(1,1,1),"Scale"), - TCArg(CNN_ArgDataTypeUns(1,1,1),"ScaleN"), + TCArg(CNN_ArgDataType(1,1,1),"ScaleN"), TCArg(CNN_ArgDataType(1,1,1), "Infos") ), Calls(3, @@ -1467,6 +1507,7 @@ int CNN_HWC_DWConvolutionPoolAct_SQ8( Fpx=1; Dpx=1; Spx=1; Fpy=1; Dpy=1; Spy=1; } if (Ctrl) { + if (Ctrl->TileOrientation != -1) TileOrientation = (Ctrl->TileOrientation==0)?TILE_HOR:TILE_VER; if (Ctrl->PadType != -1) PadType = Ctrl->PadType; } unsigned int Bs = Bias_DataSize; @@ -1586,14 +1627,14 @@ int CNN_HWC_DWConvolutionPoolAct_SQ8( int OutTileCons = 8; Kernel_T *Kernel = UserKernel(Name, KernelIterSpace(2, IterTiledSpace(T0), IterParSpace(D0, InFeat, 8)), - TILE_HOR, + TileOrientation, CArgs(7, TCArg(CNN_ArgDataType(1,1,1), "In"), TCArg(CNN_ArgDataType(1,1,1), "Filter"), TCArg(CNN_ArgDataType(Bs,1,1), "Bias"), TCArg(CNN_ArgDataType(1,1,1), "Out"), TCArg(CNN_ArgDataTypeUns(1,1,1),"Scale"), - TCArg(CNN_ArgDataTypeUns(1,1,1),"ScaleN"), + TCArg(CNN_ArgDataType(1,1,1), "ScaleN"), TCArg(CNN_ArgDataType(1,1,1), "Infos") ), Calls(5, @@ -1974,10 +2015,10 @@ int CNN_ConvolutionPoolAct_SQ8( KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "In"); KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Filter"); KCArgs[Ca++] = TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Out"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "Scale"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "ScaleN"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Infos"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Out"); + KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "Scale"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "ScaleN"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Infos"); /* User kernel kernel arguments */ Object_T **KArgs = AllocateKerArgs(8); @@ -2235,13 +2276,13 @@ int CNN_GroupedConvolutionPoolAct_SQ8( CKernel_Arg_T **KCArgs = AllocateCArgs(7); int Ca=0; - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "In"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Filter"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Out"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "Scale"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "ScaleN"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Infos"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "In"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Filter"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Out"); + KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1, 1,1), "Scale"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "ScaleN"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1, 1,1), "Infos"); Object_T **KArgs = AllocateKerArgs(7); int Ka=0; @@ -2639,8 +2680,8 @@ int CNN_GlobalPoolAct_SQ8( } int KerLayout = HWC?CALL_HWC_KER:0; - if (!(PoolOper == KOP_GLOBAL_MAXPOOL || PoolOper == KOP_GLOBAL_AVGPOOL)) - GenTilingError("CNN_GlobalPoolAct_SQ8 Kernel: %s, PoolOper should be KOP_GLOBAL_MAXPOOL or KOP_GLOBAL_AVGPOOL", Name); + if (!(PoolOper == KOP_GLOBAL_MAXPOOL || PoolOper == KOP_GLOBAL_AVGPOOL || PoolOper == KOP_GLOBAL_SUMPOOL)) + GenTilingError("CNN_GlobalPoolAct_SQ8 Kernel: %s, PoolOper should be KOP_GLOBAL_MAXPOOL or KOP_GLOBAL_AVGPOOL or KOP_GLOBAL_SUMPOOL", Name); if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_RELUM || ActOper == KOP_RELUMN || ActOper == KOP_HSIGMOID || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) GenTilingError("CNN_GlobalPoolAct_SQ8 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_HSIGMOID, KOP_TANH, KOP_HSWISH or KOP_LEAKYRELU", Name); @@ -2716,7 +2757,7 @@ int CNN_GlobalPoolAct_SQ8( if (Kernel == 0) { char *PoolKerName=0, *PoolReductKerName=0, *ActKerName=0; int StandAloneAct = (ActOper!=KOP_NONE); - KernelOper_T ReductOper = (PoolOper==KOP_GLOBAL_MAXPOOL)?KOP_GLOBAL_MAXPOOL_REDUCT:KOP_GLOBAL_AVGPOOL_REDUCT; + KernelOper_T ReductOper = (PoolOper==KOP_GLOBAL_MAXPOOL)?KOP_GLOBAL_MAXPOOL_REDUCT:((PoolOper==KOP_GLOBAL_AVGPOOL)?KOP_GLOBAL_AVGPOOL_REDUCT:KOP_GLOBAL_SUMPOOL_REDUCT); PoolKerName = CNN_FindMatchingKernel(PoolOper, KOP_NONE, ParFeat, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (PoolKerName==0) GenTilingError("CNN_GlobalPoolAct_SQ8 Kernel: %s, Can't find a matching global pooling basic kernel", Name); @@ -2887,13 +2928,13 @@ int CNN_LinearAct_SQ8( CKernel_Arg_T **KCArgs = AllocateCArgs(7); int Ca=0; - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "In"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Filter"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Out"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1,1,1), "Scale"); - KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1,1,1), "ScaleN"); - KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Infos"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "In"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Filter"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Out"); + KCArgs[Ca++] = TCArg(CNN_ArgDataTypeUns(1,1,1), "Scale"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "ScaleN"); + KCArgs[Ca++] = TCArg(CNN_ArgDataType(1,1,1), "Infos"); AT_SetKernelCtrl(AT_KERNEL_NOSOLUTION_ERROR, AT_OPT_OFF); @@ -3704,20 +3745,20 @@ int CNN_MatMulAct_SQ8( int ColFirst = ((LineM1*ColM1)<(LineM2*ColM2)); char *MatMulKerName=0, *ActKerName=0; int StandAloneAct = (ActOper!=KOP_NONE); - Bias_DataSize = (MatMulOper == KOP_MATMUL_NOBIAS)?0:Bias_DataSize; - int ScaleScalar = (MatMulOper == KOP_MATMUL_SCALE_SCALAR || MatMulOper == KOP_MATMUL_NOBIAS); - int Transposed = (MatMulOper == KOP_MATMUL_TRANSPOSED); + Bias_DataSize = (MatMulOper == KOP_MATMUL_NOBIAS_SCALE_SCALAR || MatMulOper == KOP_MATMUL_NOBIAS_TRANSPOSED)?0:Bias_DataSize; + int ScaleScalar = (MatMulOper == KOP_MATMUL_SCALE_SCALAR) || (MatMulOper == KOP_MATMUL_SCALE_SCALAR_TRANSPOSED) || (MatMulOper == KOP_MATMUL_NOBIAS_SCALE_SCALAR_TRANSPOSED) || (MatMulOper == KOP_MATMUL_NOBIAS_SCALE_SCALAR); + int Transposed = (MatMulOper == KOP_MATMUL_TRANSPOSED) || (MatMulOper == KOP_MATMUL_NOBIAS_TRANSPOSED) || (MatMulOper == KOP_MATMUL_SCALE_SCALAR_TRANSPOSED) || (MatMulOper == KOP_MATMUL_NOBIAS_SCALE_SCALAR_TRANSPOSED); + int SAxis = (MatMulOper == KOP_MATMUL)?LineO:ColO; + int TA = (MatMulOper == KOP_MATMUL)?T0:T1; + int TB = (MatMulOper == KOP_MATMUL)?T1:T0; - if (!(MatMulOper == KOP_MATMUL) && !(MatMulOper == KOP_MATMUL_NOBIAS) && !(MatMulOper == KOP_MATMUL_SCALE_SCALAR) && !(MatMulOper == KOP_MATMUL_TRANSPOSED)) - GenTilingError("CNN_MatMulAct_SQ8 Kernel: %s, MatMulOper should be KOP_MATMUL", Name); + if (!(MatMulOper == KOP_MATMUL) && !(MatMulOper == KOP_MATMUL_NOBIAS_SCALE_SCALAR) && !(MatMulOper == KOP_MATMUL_SCALE_SCALAR_TRANSPOSED) && !(MatMulOper == KOP_MATMUL_NOBIAS_SCALE_SCALAR_TRANSPOSED) && !(MatMulOper == KOP_MATMUL_SCALE_SCALAR) && !(MatMulOper == KOP_MATMUL_TRANSPOSED) && !(MatMulOper == KOP_MATMUL_NOBIAS_TRANSPOSED)) + GenTilingError("CNN_MatMulAct_SQ8 Kernel: %s, MatMulOper should be KOP_MATMUL or KOP_MATMUL_NOBIAS_SCALE_SCALAR or KOP_MATMUL_SCALE_SCALAR_TRANSPOSED or KOP_MATMUL_NOBIAS_SCALE_SCALAR_TRANSPOSED or KOP_MATMUL_SCALE_SCALAR or KOP_MATMUL_TRANSPOSED or KOP_MATMUL_NOBIAS_TRANSPOSED", Name); if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_RELUM || ActOper == KOP_RELUMN || ActOper == KOP_HSIGMOID || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU || ActOper == KOP_SIGMOID || ActOper == KOP_TANH)) GenTilingError("CNN_MatMulAct_SQ8 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_HSIGMOID, KOP_TANH, KOP_HSWISH or KOP_LEAKYRELU", Name); if (ColM1 != LineM2) GenTilingError("CNN_MatMulAct_SQ8: %s, Incorrect input matrices dimensions for a matrix multiplication: [%d x %d]*[%d x %d]", Name, LineM1, ColM1, LineM2, ColM2); - if (Transposed) { - ColM1 = LineM1; LineM1 = LineM2; - } if (Width==0||Height==0) { Width = ColM2; Height=1; Scx = 1; Scy = 1; } @@ -3754,6 +3795,10 @@ int CNN_MatMulAct_SQ8( Kernel_T *Kernel; + int ObjCons = !Transposed?OBJ_CONSTRAINTS_TILE_VER:0; + if (Transposed) { + LineM2 = ColM2; ColM2 = ColM1; + } /* First try buffering small objects */ Kernel = UserKernel(Name, KernelIterSpace(2, IterTiledSpace(T1), IterTiledSpace(T0)), @@ -3764,14 +3809,14 @@ int CNN_MatMulAct_SQ8( Bias_DataSize?TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"):AT_NO_C_ARG, TCArg(CNN_ArgDataType(1,1,1), "Out"), !ScaleScalar?TCArg(CNN_ArgDataTypeUns(1,1,1),"Scale"):AT_NO_C_ARG, - !ScaleScalar?TCArg(CNN_ArgDataTypeUns(1,1,1),"ScaleN"):AT_NO_C_ARG, + !ScaleScalar?TCArg(CNN_ArgDataType(1,1,1),"ScaleN"):AT_NO_C_ARG, TCArg(CNN_ArgDataType(1,1,1), "Infos") ), Calls(2, Call(MatMulKerName, LOC_LOOP, Bindings(19, K_Arg("In1", KER_ARG_TILE), K_Arg("In1", KER_ARG_TILE_W), K_Arg("In1", KER_ARG_TILE_H), - K_Arg("In2", KER_ARG_TILE), K_Arg("In2", KER_ARG_TILE_W), + K_Arg("In2", KER_ARG_TILE), Transposed?K_Arg("In2", KER_ARG_TILE_H):K_Arg("In2", KER_ARG_TILE_W), Bias_DataSize?K_Arg("Bias", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, !ScaleScalar?K_Arg("Scale", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, !ScaleScalar?K_Arg("ScaleN", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, @@ -3802,88 +3847,21 @@ int CNN_MatMulAct_SQ8( KerArgs(8, !Transposed?KerArg("KerBuff",KerArgSpace(1, T1), O_BUFF|O_NTILED, Nbuff*ColM1, 1, 1, 0, 0, 0, 0):AT_NO_KER_ARG, KerArg("In1", KerArgSpace(1, T0), O_IN|O_DB|O_CONST, ColM1, LineM1, 1, 0, OBJ_CONSTRAINTS_PAD_REM, 8, "In1"), - KerArg("In2", KerArgSpace(1, T1), O_IN|O_DB, ColM2, LineM2, 1, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), - Bias_DataSize?KerArg("Bias", KerArgSpace(1, T0), O_BUFF|O_IN|O_CONST, 1, LineO, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, + KerArg("In2", KerArgSpace(1, T1), O_IN|O_DB, ColM2, LineM2, 1, 0, ObjCons|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), + Bias_DataSize?KerArg("Bias", KerArgSpace(1, TA), O_BUFF|O_IN|O_CONST, 1, SAxis, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, KerArg("Out", KerArgSpace(1, T1), O_OUT|O_DB, ColO, LineO, 1, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, 0, "Out"), - !ScaleScalar?KerArg("Scale", KerArgSpace(1, T0), O_BUFF|O_IN|O_CONST, 1, LineO, 1, 0, 0, 0, "Scale"):AT_NO_KER_ARG, - !ScaleScalar?KerArg("ScaleN", KerArgSpace(1, T0), O_BUFF|O_IN|O_CONST, 1, LineO, 1, 0, 0, 0, "ScaleN"):AT_NO_KER_ARG, + !ScaleScalar?KerArg("Scale", KerArgSpace(1, TA), O_BUFF|O_IN|O_CONST, 1, SAxis, 1, 0, 0, 0, "Scale"):AT_NO_KER_ARG, + !ScaleScalar?KerArg("ScaleN", KerArgSpace(1, TA), O_BUFF|O_IN|O_CONST, 1, SAxis, 1, 0, 0, 0, "ScaleN"):AT_NO_KER_ARG, KerArg("Infos", KerArgSpace(1, T1), O_IN|O_BUFF|O_NTILED, 1, 1, AT_INF_DIM*1, 0, 0, 0, "Infos") ): KerArgs(8, !Transposed?KerArg("KerBuff",KerArgSpace(1, T0), O_BUFF|O_NTILED, Nbuff*ColM1, 1, 1, 0, 0, 0, 0):AT_NO_KER_ARG, KerArg("In1", KerArgSpace(1, T1), O_IN|O_DB|O_CONST, ColM1, LineM1, 1, 0, OBJ_CONSTRAINTS_PAD_REM, 8, "In1"), - KerArg("In2", KerArgSpace(1, T0), O_IN|O_DB, ColM2, LineM2, 1, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), - Bias_DataSize?KerArg("Bias", KerArgSpace(1, T1), O_BUFF|O_IN|O_CONST, 1, LineO, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, - KerArg("Out", KerArgSpace(1, T1), O_OUT|O_DB, ColO, LineO, 1, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Out"), - !ScaleScalar?KerArg("Scale", KerArgSpace(1, T1), O_BUFF|O_IN|O_CONST, 1, LineO, 1, 0, 0, 0, "Scale"):AT_NO_KER_ARG, - !ScaleScalar?KerArg("ScaleN", KerArgSpace(1, T1), O_BUFF|O_IN|O_CONST, 1, LineO, 1, 0, 0, 0, "ScaleN"):AT_NO_KER_ARG, - KerArg("Infos", KerArgSpace(1, T0), O_IN|O_BUFF|O_NTILED, 1, 1, AT_INF_DIM*1, 0, 0, 0, "Infos") - ) - ); - /* If no solution found roll back to tiled approach for small objects */ - if (Kernel==0) - Kernel = UserKernel(Name, - KernelIterSpace(2, IterTiledSpace(T1), IterTiledSpace(T0)), - TILE_HOR, - CArgs(7, - TCArg(CNN_ArgDataType(1,1,1), "In2"), - TCArg(CNN_ArgDataType(1,1,1), "In1"), - Bias_DataSize?TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"):AT_NO_C_ARG, - TCArg(CNN_ArgDataType(1,1,1), "Out"), - !ScaleScalar?TCArg(CNN_ArgDataTypeUns(1,1,1),"Scale"):AT_NO_C_ARG, - !ScaleScalar?TCArg(CNN_ArgDataTypeUns(1,1,1),"ScaleN"):AT_NO_C_ARG, - TCArg(CNN_ArgDataType(1,1,1), "Infos") - ), - Calls(2, - Call(MatMulKerName, LOC_LOOP, - Bindings(19, - K_Arg("In1", KER_ARG_TILE), K_Arg("In1", KER_ARG_TILE_W), K_Arg("In1", KER_ARG_TILE_H), - K_Arg("In2", KER_ARG_TILE), K_Arg("In2", KER_ARG_TILE_W), - Bias_DataSize?K_Arg("Bias", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, - !ScaleScalar?K_Arg("Scale", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, - !ScaleScalar?K_Arg("ScaleN", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, - K_Arg("Out", KER_ARG_TILE), K_Arg("Out", KER_ARG_TILE_W), K_Arg(ColFirst?"In1":"In2", KER_ARG_TILE_BASE), - Transposed?K_Arg("KerBuff", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, - Bias_DataSize?K_TileOper("Infos", "char *", '@', AT_INF_BIASN):AT_IGNORE_ARG_BINDING, - Imm(ColFirst), - NeedScx?Imm(Scx):AT_IGNORE_ARG_BINDING, - NeedScy?Imm(Scy):AT_IGNORE_ARG_BINDING, - (NeedScx||NeedScy)?Imm(Width):AT_IGNORE_ARG_BINDING, - (NeedScx||NeedScy)?Imm(Height):AT_IGNORE_ARG_BINDING, - K_Arg("Infos", KER_ARG_TILE) - ) - ), - (ActKerName==0)?AT_NO_CALL: - Call(ActKerName, LOC_LOOP_EPILOG, - Bindings(6, /* Uses feature par form with W: Out.W, H: Out.H given the fact that H is feat and W is w*h */ - K_Arg("Out", KER_ARG_TILE), /* Input tile */ - K_Arg("Out", KER_ARG_TILE), /* Output tile */ - Imm(1), /* Input of features in this tile */ - K_Arg("Out", KER_ARG_TILE_W), /* Input tile width */ - K_Arg("Out", KER_ARG_TILE_H), /* Input tile height */ - K_Arg("Infos", KER_ARG_TILE) /* Infos */ - ) - ) - ), - ColFirst? - KerArgs(8, - Transposed?KerArg("KerBuff",KerArgSpace(1, T1), O_BUFF|O_NTILED, Nbuff*ColM1, 1, 1, 0, 0, 0, 0):AT_NO_KER_ARG, - KerArg("In1", KerArgSpace(1, T0), O_IN|O_DB|O_CONST, ColM1, LineM1, 1, 0, OBJ_CONSTRAINTS_PAD_REM, 8, "In1"), - KerArg("In2", KerArgSpace(1, T1), O_IN|O_DB, ColM2, LineM2, 1, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), - Bias_DataSize?KerArg("Bias", KerArgSpace(1, T0), O_IN|O_DB|O_CONST, 1, LineO, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, - KerArg("Out", KerArgSpace(1, T1), O_OUT|O_DB, ColO, LineO, 1, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, 0, "Out"), - !ScaleScalar?KerArg("Scale", KerArgSpace(1, T0), OBJ_IN_DB|O_CONST, 1, LineO, 1, 0, 0, 0, "Scale"):AT_NO_KER_ARG, - !ScaleScalar?KerArg("ScaleN", KerArgSpace(1, T0), OBJ_IN_DB|O_CONST, 1, LineO, 1, 0, 0, 0, "ScaleN"):AT_NO_KER_ARG, - KerArg("Infos", KerArgSpace(1, T1), O_IN|O_BUFF|O_NTILED, 1, 1, AT_INF_DIM*1, 0, 0, 0, "Infos") - ): - KerArgs(8, - Transposed?KerArg("KerBuff",KerArgSpace(1, T0), O_BUFF|O_NTILED, Nbuff*ColM1, 1, 1, 0, 0, 0, 0):AT_NO_KER_ARG, - KerArg("In1", KerArgSpace(1, T1), O_IN|O_DB|O_CONST, ColM1, LineM1, 1, 0, OBJ_CONSTRAINTS_PAD_REM, 8, "In1"), - KerArg("In2", KerArgSpace(1, T0), O_IN|O_DB, ColM2, LineM2, 1, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), - Bias_DataSize?KerArg("Bias", KerArgSpace(1, T1), O_IN|O_DB|O_CONST, 1, LineO, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, + KerArg("In2", KerArgSpace(1, T0), O_IN|O_DB, ColM2, LineM2, 1, 0, ObjCons|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), + Bias_DataSize?KerArg("Bias", KerArgSpace(1, TB), O_BUFF|O_IN|O_CONST, 1, SAxis, Bias_DataSize, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, KerArg("Out", KerArgSpace(1, T1), O_OUT|O_DB, ColO, LineO, 1, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Out"), - !ScaleScalar?KerArg("Scale", KerArgSpace(1, T1), OBJ_IN_DB|O_CONST, 1, LineO, 1, 0, 0, 0, "Scale"):AT_NO_KER_ARG, - !ScaleScalar?KerArg("ScaleN", KerArgSpace(1, T1), OBJ_IN_DB|O_CONST, 1, LineO, 1, 0, 0, 0, "ScaleN"):AT_NO_KER_ARG, + !ScaleScalar?KerArg("Scale", KerArgSpace(1, TB), O_BUFF|O_IN|O_CONST, 1, SAxis, 1, 0, 0, 0, "Scale"):AT_NO_KER_ARG, + !ScaleScalar?KerArg("ScaleN", KerArgSpace(1, TB), O_BUFF|O_IN|O_CONST, 1, SAxis, 1, 0, 0, 0, "ScaleN"):AT_NO_KER_ARG, KerArg("Infos", KerArgSpace(1, T0), O_IN|O_BUFF|O_NTILED, 1, 1, AT_INF_DIM*1, 0, 0, 0, "Infos") ) ); @@ -3893,10 +3871,10 @@ int CNN_MatMulAct_SQ8( AddKernelArgDim(Name, "In1", 3, LineM1, ColM1, 1); AddKernelArgDim(Name, "In2", 4, LineM2, Height, Width, 1); - if (Bias_DataSize) AddKernelArgDim(Name, "Bias", 2, LineO, Bias_DataSize); + if (Bias_DataSize) AddKernelArgDim(Name, "Bias", 2, SAxis, Bias_DataSize); AddKernelArgDim(Name, "Out", 3, LineO, ColO, 1); - if (!ScaleScalar) AddKernelArgDim(Name, "Scale", 2, LineO, 1); - if (!ScaleScalar) AddKernelArgDim(Name, "ScaleN", 2, LineO, 1); + if (!ScaleScalar) AddKernelArgDim(Name, "Scale", 2, SAxis, 1); + if (!ScaleScalar) AddKernelArgDim(Name, "ScaleN", 2, SAxis, 1); AddKernelArgDim(Name, "Infos", 2, AT_INF_DIM, 1); AT_PrepareForTest_SQ8(Name, ColM1,LineM1,Width,Height, Bias_DataSize, MatMulOper, 1,1,1,1,Scx,Scy,(v4s)0, 0, 0,0,0,0,0,0,(v4s)0, ActOper); @@ -4029,7 +4007,7 @@ int CNN_MatMulSmallM1Act_SQ8( TCArg(CNN_ArgDataType(Bias_DataSize,1,1), "Bias"), TCArg(CNN_ArgDataType(1,1,1), "Out"), TCArg(CNN_ArgDataTypeUns(1,1,1),"Scale"), - TCArg(CNN_ArgDataTypeUns(1,1,1),"ScaleN"), + TCArg(CNN_ArgDataType(1,1,1),"ScaleN"), TCArg(CNN_ArgDataType(1,1,1), "Infos") ), Calls(3, diff --git a/tools/autotiler_v3/CNN_Generators_fp16/CNN_Generators_fp16.c b/tools/autotiler_v3/CNN_Generators_fp16/CNN_Generators_fp16.c index 4ded406e0..40ca2284c 100644 --- a/tools/autotiler_v3/CNN_Generators_fp16/CNN_Generators_fp16.c +++ b/tools/autotiler_v3/CNN_Generators_fp16/CNN_Generators_fp16.c @@ -253,8 +253,11 @@ void LoadCNNLibrary_fp16() LibKernel("KerParReLU_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_RELU), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); LibKernel("KerParReLUN_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_RELUN), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); LibKernel("KerParSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_SWISH), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); + LibKernel("KerParHSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_HSWISH), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); LibKernel("KerParSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_SIGMOID), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); + LibKernel("KerParHSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_HSIGMOID), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); LibKernel("KerParTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_TANH), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); + LibKernel("KerParHTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_HTANH), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); LibKernel("KerParLeakyReLU_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerActivation_fp16_T", CNN_Match(CNN_OperList(1, KOP_LEAKYRELU), 0, -1, CNN_Type(2,0,0,0,2), 0,0,0,0,0,0)); /* Linear layer followed by an optional activation, don't use when partial evaluation of the output is needed */ @@ -266,10 +269,16 @@ void LoadCNNLibrary_fp16() CNN_Type(2,2,2,0,2), 0,0,0,0,0,0)); LibKernel("KerParLinearLayerSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerLinear_fp16_T", CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_SWISH), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,0,0)); + LibKernel("KerParLinearLayerHSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerLinear_fp16_T", CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_HSWISH), 1, + CNN_Type(2,2,2,0,2), 0,0,0,0,0,0)); LibKernel("KerParLinearLayerSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerLinear_fp16_T", CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_SIGMOID), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,0,0)); + LibKernel("KerParLinearLayerHSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerLinear_fp16_T", CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_HSIGMOID), 1, + CNN_Type(2,2,2,0,2), 0,0,0,0,0,0)); LibKernel("KerParLinearLayerTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerLinear_fp16_T", CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_TANH), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,0,0)); + LibKernel("KerParLinearLayerHTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerLinear_fp16_T", CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_HTANH), 1, + CNN_Type(2,2,2,0,2), 0,0,0,0,0,0)); LibKernel("KerParLinearLayerLeakyReLU_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerLinear_fp16_T", CNN_Match(CNN_OperList(1, KOP_LINEAR), CNN_OperList(1, KOP_LEAKYRELU), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,0,0)); @@ -284,6 +293,12 @@ void LoadCNNLibrary_fp16() /* Matrix multiplication */ LibKernel("KerParMatMul_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), 0, 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBias_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), 0, + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposed_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), 0, + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBias_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), 0, + 1, CNN_Type(2,2,0,0,2), 0,0,0,0,1,1)); LibKernel("KerParMatMulSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), 0, 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSmallFeat_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), 0, 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); @@ -291,6 +306,12 @@ void LoadCNNLibrary_fp16() /* Matrix multiplication with ReLU reduction */ LibKernel("KerParMatMulReLU_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELU), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasReLU_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_RELU), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedReLU_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_RELU), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBiasReLU_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_RELU), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); LibKernel("KerParMatMulReLUSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELU), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSmallFeatReLU_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_RELU), @@ -299,38 +320,110 @@ void LoadCNNLibrary_fp16() /* Matrix multiplication with ReLUN reduction */ LibKernel("KerParMatMulReLUN_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasReLUN_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_RELUN), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedReLUN_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_RELUN), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBiasReLUN_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_RELUN), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); LibKernel("KerParMatMulReLUNSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSmallFeatReLUN_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_RELUN), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); - /* Matrix multiplication with H Swish reduction */ + /* Matrix multiplication with Swish reduction */ LibKernel("KerParMatMulSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_SWISH), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_SWISH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_SWISH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBiasSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_SWISH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); LibKernel("KerParMatMulSwishSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_SWISH), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSmallFeatSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_SWISH), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); - /* Matrix multiplication with H Sigmoid reduction */ + /* Matrix multiplication with Sigmoid reduction */ LibKernel("KerParMatMulSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_SIGMOID), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_SIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_SIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBiasSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_SIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); LibKernel("KerParMatMulSigmoidSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_SIGMOID), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSmallFeatSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_SIGMOID), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); /* Matrix multiplication with Tanh reduction */ - LibKernel("KerParMatMulTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_TANH), + LibKernel("KerParMatMulTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_TANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_TANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_TANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBiasTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_TANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTanhSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_TANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); + LibKernel("KerParMatMulSmallFeatTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_TANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + + /* Matrix multiplication with H Swish reduction */ + LibKernel("KerParMatMulHSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_HSWISH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasHSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_HSWISH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedHSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_HSWISH), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); - LibKernel("KerParMatMulTanhSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_TANH), + LibKernel("KerParMatMulTransposedNoBiasHSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_HSWISH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulHSwishSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_HSWISH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); + LibKernel("KerParMatMulSmallFeatHSwish_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_HSWISH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + + /* Matrix multiplication with H Sigmoid reduction */ + LibKernel("KerParMatMulHSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_HSIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasHSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_HSIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedHSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_HSIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBiasHSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_HSIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulHSigmoidSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_HSIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); + LibKernel("KerParMatMulSmallFeatHSigmoid_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_HSIGMOID), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + + /* Matrix multiplication with H Tanh reduction */ + LibKernel("KerParMatMulHTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_HTANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasHTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_HTANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedHTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_HTANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBiasHTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_HTANH), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulHTanhSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_HTANH), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); - LibKernel("KerParMatMulSmallFeatTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_TANH), + LibKernel("KerParMatMulSmallFeatHTanh_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_HTANH), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); /* Matrix multiplication with Leaky ReLU reduction */ LibKernel("KerParMatMulLeakyrelu_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_LEAKYRELU), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulNoBiasLeakyrelu_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS), CNN_OperList(1, KOP_LEAKYRELU), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedLeakyrelu_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_TRANSPOSED), CNN_OperList(1, KOP_LEAKYRELU), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); + LibKernel("KerParMatMulTransposedNoBiasLeakyrelu_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T",CNN_Match(CNN_OperList(1, KOP_MATMUL_NOBIAS_TRANSPOSED), CNN_OperList(1, KOP_LEAKYRELU), + 1, CNN_Type(2,2,2,0,2), 0,0,0,0,1,1)); LibKernel("KerParMatMulLeakyreluSxSy_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL), CNN_OperList(1, KOP_LEAKYRELU), 1, CNN_Type(2,2,2,0,2), 0,0,0,0,-1,-1)); LibKernel("KerParMatMulSmallFeatLeakyrelu_fp16", CALL_PARALLEL|CALL_FLOAT_KER, 0, "KerMatMul_fp16_T", CNN_Match(CNN_OperList(1, KOP_MATMUL_SM1), CNN_OperList(1, KOP_LEAKYRELU), @@ -543,8 +636,8 @@ int CNN_MM_ConvolutionPoolAct_fp16( } int ParFeat = 1, HWC = 0, ParFeatConv = 2; - float UB = 6.0; - Tile_Orientation_T TileOrientation = TILE_HOR; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) + Tile_Orientation_T TileOrientation = Height>1?TILE_HOR:TILE_VER; AT_PadType PadType = PAD_BALANCED_LEFT; if (PoolOper==KOP_NONE) { Fpx=1; Dpx=1; Spx=1; Fpy=1; Dpy=1; Spy=1; @@ -579,8 +672,8 @@ int CNN_MM_ConvolutionPoolAct_fp16( GenTilingError("CNN_MM_ConvolutionPoolAct_fp16 Kernel: %s, ConvOper, expecting KOP_CONV", Name); if (!(PoolOper == KOP_NONE || PoolOper == KOP_MAXPOOL || PoolOper == KOP_AVGPOOL)) GenTilingError("CNN_MM_ConvolutionPoolAct_fp16 Kernel: %s, PoolOper, expecting KOP_NONE, KOP_MAXPOOL or KOP_AVGPOOL", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_MM_ConvolutionPoolAct_fp16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_MM_ConvolutionPoolAct_fp16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_LEAKYRELU", Name); CNN_LayerOutputDim(Width, Height, ConvOper, Fcx, Fcy, Dcx, Dcy, Scx, Scy, ConvPad, PoolOper, Fpx, Fpy, Dpx, Dpy, Spx, Spy, PoolPad, &Wc, &Hc, &Wo, &Ho, &PadCw, &PadCh, &PadPw, &PadPh); @@ -608,6 +701,7 @@ int CNN_MM_ConvolutionPoolAct_fp16( int BuffS = ALIGN(InFeat*Fcx*Fcy, 2); if (HWC) { + //if (Fcx==1&&Fcy==1&&Scx==1&&Scy==1) return CNN_MatMulAct_fp16(Name, 0, InFeat, Width*Height, OutFeat, InFeat, 0, 0, 1, 1, KOP_MATMUL_TRANSPOSED, ActOper); if (Fcx==1&&Fcy==1) BuffS = 1; else if (ParFeatConv) BuffS = ALIGN(InFeat*Fcx*Fcy, 2); else BuffS = 2 * InFeat*Fcx*Fcy*8; @@ -671,7 +765,7 @@ int CNN_MM_ConvolutionPoolAct_fp16( TileFirst? KernelIterSpace(3, IterTiledSpace(T0), IterParSpace(D1, OutFeat, OutTileCons), IterParSpace(D0|SPACE_PROP_ONE_TILE, InFeat, InFeat)): KernelIterSpace(3, IterParSpace(D1, OutFeat, OutTileCons), IterTiledSpace(T0), IterParSpace(D0|SPACE_PROP_ONE_TILE, InFeat, InFeat)), - TILE_HOR, + TileOrientation, CArgs(4, TCArg(CNN_ArgDataTypeF(2,1,1), "In"), TCArg(CNN_ArgDataTypeF(2,1,1), "Filter"), @@ -832,7 +926,7 @@ int CNN_HWC_DWConvolutionPoolAct_fp16( } int ParFeat = 1, HWC = 1; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) Tile_Orientation_T TileOrientation = TILE_HOR; AT_PadType PadType = PAD_BALANCED_LEFT; if (PoolOper==KOP_NONE) { @@ -862,8 +956,8 @@ int CNN_HWC_DWConvolutionPoolAct_fp16( GenTilingError("CNN_HWC_DWConvolutionPoolAct_fp16: %s, ConvOper, expecting KOP_CONV", Name); if (!(PoolOper == KOP_NONE || PoolOper == KOP_MAXPOOL || PoolOper == KOP_AVGPOOL)) GenTilingError("CNN_HWC_DWConvolutionPoolAct_fp16: %s, PoolOper, expecting KOP_NONE, KOP_MAXPOOL or KOP_AVGPOOL", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_HWC_DWConvolutionPoolAct_fp16: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_HWC_DWConvolutionPoolAct_fp16: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_LEAKYRELU", Name); if (InFeat != OutFeat) GenTilingError("CNN_HWC_DWConvolutionPoolAct_fp16: %s, Depth wise convolution requested with InFeat:%d != OutFeat:%d", Name, InFeat, OutFeat); CNN_LayerOutputDim(Width, Height, ConvOper, Fcx, Fcy, Dcx, Dcy, Scx, Scy, ConvPad, PoolOper, Fpx, Fpy, Dpx, Dpy, Spx, Spy, PoolPad, @@ -1136,7 +1230,7 @@ int CNN_ConvolutionPoolAct_fp16( { int Log=1; int ParFeat = 1, HWC = 0; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) Tile_Orientation_T TileOrientation = TILE_HOR; AT_PadType PadType = PAD_BALANCED_LEFT; @@ -1181,7 +1275,7 @@ int CNN_ConvolutionPoolAct_fp16( PoolOper, Fpx, Fpy, Dpx, Dpy, Spx, Spy, PoolPad, ActOper); AT_SetKernelCtrl(AT_KERNEL_NOSOLUTION_ERROR, AT_OPT_ON); if (Ok) return Ok; - if (Log) printf("Mapping this convolution to imm2col scheme, reverting to standard implementation\n"); + if (Log) printf("Mapping this convolution to im2col scheme failed, reverting to standard implementation\n"); } @@ -1208,8 +1302,8 @@ int CNN_ConvolutionPoolAct_fp16( GenTilingError("CNN_ConvolutionPoolAct_fp16 Kernel: %s, ConvOper, expecting KOP_NONE, KOP_CONV or KOP_CONV_DW", Name); if (!(PoolOper == KOP_NONE || PoolOper == KOP_MAXPOOL || PoolOper == KOP_AVGPOOL)) GenTilingError("CNN_ConvolutionPoolAct_fp16 Kernel: %s, PoolOper, expecting KOP_NONE, KOP_MAXPOOL or KOP_AVGPOOL", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_ConvolutionPoolAct_fp16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_ConvolutionPoolAct_fp16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_LEAKYRELU", Name); if (DWConv && (InFeat != OutFeat)) GenTilingError("CNN_ConvolutionPoolAct_fp16 Kernel: %s, Depth wise convolution requested with InFeat:%d != OutFeat:%d", Name, InFeat, OutFeat); @@ -1514,8 +1608,8 @@ int CNN_GroupedConvolutionPoolAct_fp16( GenTilingError("CNN_GroupedConvolutionPoolAct_fp16: Kernel: %s, ConvOper, expecting KOP_NONE, KOP_CONV or KOP_CONV_DW", Name); if (!(PoolOper == KOP_NONE || PoolOper == KOP_MAXPOOL || PoolOper == KOP_AVGPOOL)) GenTilingError("CNN_GroupedConvolutionPoolAct_fp16: Kernel: %s, PoolOper, expecting KOP_NONE, KOP_MAXPOOL or KOP_AVGPOOL", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_GroupedConvolutionPoolAct_fp16: Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_GroupedConvolutionPoolAct_fp16: Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_LEAKYRELU", Name); CNN_LayerOutputDim(Width, Height, ConvOper, Fcx, Fcy, Dcx, Dcy, Scx, Scy, ConvPad, PoolOper, Fpx, Fpy, Dpx, Dpy, Spx, Spy, PoolPad, @@ -1625,7 +1719,7 @@ int CNN_PoolAct_fp16( Tile_Orientation_T TileOrientation = TILE_HOR; int ParFeat = 1, HWC = 0; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) AT_PadType PadType = PAD_BALANCED_LEFT; if (Ctrl) { if (Ctrl->TileOrientation != -1) TileOrientation = (Ctrl->TileOrientation==0)?TILE_HOR:TILE_VER; @@ -1650,8 +1744,8 @@ int CNN_PoolAct_fp16( if (!(PoolOper == KOP_MAXPOOL || PoolOper == KOP_AVGPOOL)) GenTilingError("CNN_Pool_fp16 Kernel: %s, PoolOper, expecting KOP_MAXPOOL or KOP_AVGPOOL", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_Pool_fp16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_Pool_fp16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_LEAKYRELU", Name); /* Set Kernel characteristics */ CNN_LayerOutputDim(Width, Height, KOP_NONE, 1, 1, 1, 1, 1, 1, 1, PoolOper, Fpx, Fpy, Dpx, Dpy, Spx, Spy, PoolPad, 0, 0, &Wo, &Ho, 0, 0, &PadPw, &PadPh); @@ -1827,7 +1921,7 @@ int CNN_GlobalPoolAct_fp16( int F = O_FLOAT; int Wo, Ho; char *PoolKerName=0, *ActKerName=0; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) KernelOper_T KernelOper = CNN_CompositeKernel(PoolOper, KOP_NONE, KOP_NONE); int StandAloneAct = (ActOper!=0); unsigned long long int LayerOp = 0; @@ -1848,8 +1942,8 @@ int CNN_GlobalPoolAct_fp16( else if (StandAloneAct) PoolKerName = CNN_FindMatchingKernelAttr(PoolOper, KOP_NONE, ParFeat, CALL_FLOAT_KER, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (PoolKerName==0) GenTilingError("CNN_GlobalPoolAct_fp16 Kernel: %s, Can't find a matching Pooling basic kernel", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_GlobalPoolAct_fp16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_GlobalPoolAct_fp16 Kernel: %s, ActOper, expecting KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_LEAKYRELU", Name); if (StandAloneAct) { ActKerName = CNN_FindMatchingKernelAttr(ActOper, KOP_NONE, 0, CALL_FLOAT_KER, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (ActKerName==0) GenTilingError("CNN_GlobalPoolAct_fp16 Kernel: %s, Can't find a matching Activation basic kernel", Name); @@ -1961,7 +2055,7 @@ int CNN_Act_fp16( { Tile_Orientation_T TileOrientation = TILE_HOR; int ParFeat = 1; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) if (Ctrl) { if (Ctrl->TileOrientation != -1) TileOrientation = (Ctrl->TileOrientation==0)?TILE_HOR:TILE_VER; if (Ctrl->ParallelFeatures != -1) ParFeat = Ctrl->ParallelFeatures; @@ -1975,8 +2069,8 @@ int CNN_Act_fp16( int StandAloneAct = (ActOper!=KOP_NONE); int Log=1; - if (!(ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_Act_fp16 Kernel: %s, ActOper, expecting KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_Act_fp16 Kernel: %s, ActOper, expecting KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_LEAKYRELU", Name); ActKerName = CNN_FindMatchingKernelAttr(ActOper, KOP_NONE, 0, CALL_FLOAT_KER, 2, 0, 0, 0, 2, 0,0,0,0,0,0, 0,0,0,0,0,0, 0); if (ActKerName==0) GenTilingError("CNN_Act_fp16 Kernel: %s, Can't find a matching Activation basic kernel", Name); @@ -2077,7 +2171,7 @@ int CNN_LinearAct_fp16( int Iter; Tile_Orientation_T TileOrientation = TILE_HOR; int ParFeat = 1; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) if (Ctrl) { if (Ctrl->TileOrientation != -1) TileOrientation = (Ctrl->TileOrientation==0)?TILE_HOR:TILE_VER; if (Ctrl->ParallelFeatures != -1) ParFeat = Ctrl->ParallelFeatures; @@ -2474,7 +2568,7 @@ int CNN_MatAddAct_fp16( int F = O_FLOAT; unsigned long long int LayerOp = 0; unsigned long long int LayerBandwidth = 0; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) KernelOper_T KernelOper = CNN_CompositeKernel(AddMatOper, ActOper, KOP_NONE); char *MatAddKerName = CNN_FindMatchingKernelAttr(AddMatOper, ActOper, ParFeat, CALL_FLOAT_KER, 2, 2, 0, 0, 2, 0,0,0,0,0,0, 0,0,0,0,0,0, 0); @@ -2732,20 +2826,25 @@ int CNN_MatMulAct_fp16( unsigned long long int LayerOp = 0; unsigned long long int LayerBandwidth = 0; int LineO = LineM1, ColO = ColM2; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) int ConsT0 = Scx; int Nbuff; + int NoBias = (MatMulOper == KOP_MATMUL_NOBIAS || MatMulOper == KOP_MATMUL_NOBIAS_TRANSPOSED); + int SAxis = (MatMulOper == KOP_MATMUL)?LineO:ColO; + int Transposed = (MatMulOper == KOP_MATMUL_TRANSPOSED); + int TA = (MatMulOper == KOP_MATMUL)?T0:T1; + int TB = (MatMulOper == KOP_MATMUL)?T1:T0; if (Ctrl) { if (Ctrl->ReluN != -1) UB = Ctrl->ReluN; } - if (!(MatMulOper == KOP_MATMUL)) GenTilingError("CNN_MatMulAct_fp16 Kernel: %s, MatMulOper should be KOP_MATMUL", Name); + if (!(MatMulOper == KOP_MATMUL) && !(MatMulOper == KOP_MATMUL_TRANSPOSED) && !(MatMulOper == KOP_MATMUL_NOBIAS) && !(MatMulOper == KOP_MATMUL_NOBIAS_TRANSPOSED)) GenTilingError("CNN_MatMulAct_fp16 Kernel: %s, MatMulOper should be KOP_MATMUL or KOP_MATMUL_TRANSPOSED or KOP_MATMUL_NOBIAS or KOP_MATMUL_NOBIAS_TRANSPOSED", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SWISH || ActOper == KOP_SIGMOID || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_MatMulAct_fp16 Kernel: %s, ActOper should be KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SWISH, KOP_SIGMOID or KOP_LEAKYRELU", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_MatMulAct_fp16 Kernel: %s, ActOper should be KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_LEAKYRELU", Name); KernelOper_T KernelOper = CNN_CompositeKernel(MatMulOper, ActOper, KOP_NONE); - if (ColM1 != LineM2) GenTilingError("CNN_MatMulAct_fp16: %s, Incorrect input matrices dimensions for a matrix multiplication: [%d x %d]*[%d x %d] %s", Name, LineM1, ColM1, LineM2, ColM2); + if (ColM1 != LineM2) GenTilingError("CNN_MatMulAct_fp16: %s, Incorrect input matrices dimensions for a matrix multiplication: [%d x %d]*[%d x %d]", Name, LineM1, ColM1, LineM2, ColM2); if (Width==0||Height==0) { Width = ColM2; Height=1; Scx = 1; Scy = 1; } @@ -2762,7 +2861,7 @@ int CNN_MatMulAct_fp16( int ColFirst = ((LineM1*ColM1)<(LineM2*ColM2)); - Nbuff = 1; + Nbuff = 4; ColO = ((Width+Scx-1)/Scx) * ((Height+Scy-1)/Scy); LayerOp += ColM1*ColO*LineM1; @@ -2783,6 +2882,10 @@ int CNN_MatMulAct_fp16( // printf("Nb Oper : %lld\n", LayerOp); } + int ObjCons = !Transposed?OBJ_CONSTRAINTS_TILE_VER:0; + if (Transposed) { + LineM2 = ColM2; ColM2 = ColM1; + } UserSymbols(1, US_Float("UB", UB)); Kernel_T *Kernel = UserKernel(Name, KernelIterSpace(2, IterTiledSpace(T1), IterTiledSpace(T0)), @@ -2790,18 +2893,18 @@ int CNN_MatMulAct_fp16( CArgs(4, TCArg(CNN_ArgDataTypeF(2,1,1), "In2"), TCArg(CNN_ArgDataTypeF(2,1,1), "In1"), - TCArg(CNN_ArgDataTypeF(2,1,1), "Bias"), + !NoBias?TCArg(CNN_ArgDataTypeF(2,1,1), "Bias"):AT_NO_C_ARG, TCArg(CNN_ArgDataTypeF(2,1,1), "Out") ), Calls(2, Call(MatMulKerName, LOC_LOOP, Bindings(16, K_Arg("In1", KER_ARG_TILE), K_Arg("In1", KER_ARG_TILE_W), K_Arg("In1", KER_ARG_TILE_H), - K_Arg("In2", KER_ARG_TILE), K_Arg("In2", KER_ARG_TILE_W), - K_Arg("Bias", KER_ARG_TILE), + K_Arg("In2", KER_ARG_TILE), Transposed?K_Arg("In2", KER_ARG_TILE_H):K_Arg("In2", KER_ARG_TILE_W), + !NoBias?K_Arg("Bias", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, K_Arg("Out", KER_ARG_TILE), K_Arg("Out", KER_ARG_TILE_W), K_Arg(ColFirst?"In1":"In2", KER_ARG_TILE_BASE), - K_Arg("KerBuff", KER_ARG_TILE), + !Transposed?K_Arg("KerBuff", KER_ARG_TILE):AT_IGNORE_ARG_BINDING, Imm(ColFirst), NeedScx?Imm(Scx):AT_IGNORE_ARG_BINDING, NeedScy?Imm(Scy):AT_IGNORE_ARG_BINDING, @@ -2815,7 +2918,7 @@ int CNN_MatMulAct_fp16( Bindings(6, K_Arg("Out", KER_ARG_TILE), /* Input tile */ K_Arg("Out", KER_ARG_TILE), /* Output tile */ - K_Arg("Bias", KER_ARG_TILE_H), /* Number of features */ + K_Arg("Out", KER_ARG_TILE_H), /* Number of features */ K_Arg("Out", KER_ARG_TILE_W), /* Tile width */ Imm(1), /* Tile height */ BindKExpr("UB") /* Activation upper bound, if ReLUN */ @@ -2824,17 +2927,17 @@ int CNN_MatMulAct_fp16( ), ColFirst? KerArgs(5, - KerArg("KerBuff",KerArgSpace(1, T1), F|O_BUFF|O_NTILED, Nbuff*ColM1,1, 2, 0, 0, 0, 0), + !Transposed?KerArg("KerBuff",KerArgSpace(1, T1), F|O_BUFF|O_NTILED, Nbuff*ColM1,1, 2, 0, 0, 0, 0):AT_NO_KER_ARG, KerArg("In1", KerArgSpace(1, T0), F|O_IN|O_DB|O_CONST, ColM1, LineM1, 2, 0, OBJ_CONSTRAINTS_PAD_REM, 8, "In1"), - KerArg("In2", KerArgSpace(1, T1), F|O_IN|O_DB, ColM2, LineM2, 2, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), - KerArg("Bias", KerArgSpace(1, T0), F|O_IN|O_DB|O_CONST, 1, LineO, 2, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"), + KerArg("In2", KerArgSpace(1, T1), F|O_IN|O_DB, ColM2, LineM2, 2, 0, ObjCons|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), + !NoBias?KerArg("Bias", KerArgSpace(1, TA), F|O_IN|O_DB|O_CONST, 1, SAxis, 2, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, KerArg("Out", KerArgSpace(1, T1), F|O_OUT|O_DB, ColO, LineO, 2, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, 0, "Out") ): KerArgs(5, - KerArg("KerBuff",KerArgSpace(1, T0), F|O_BUFF|O_NTILED, Nbuff*ColM1,1, 2, 0, 0, 0, 0), + !Transposed?KerArg("KerBuff",KerArgSpace(1, T0), F|O_BUFF|O_NTILED, Nbuff*ColM1,1, 2, 0, 0, 0, 0):AT_NO_KER_ARG, KerArg("In1", KerArgSpace(1, T1), F|O_IN|O_DB|O_CONST, ColM1, LineM1, 2, 0, OBJ_CONSTRAINTS_PAD_REM, 8, "In1"), - KerArg("In2", KerArgSpace(1, T0), F|O_IN|O_DB, ColM2, LineM2, 2, 0, OBJ_CONSTRAINTS_TILE_VER|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), - KerArg("Bias", KerArgSpace(1, T1), F|O_IN|O_DB|O_CONST, 1, LineO, 2, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"), + KerArg("In2", KerArgSpace(1, T0), F|O_IN|O_DB, ColM2, LineM2, 2, 0, ObjCons|OBJ_CONSTRAINTS_PAD_REM, ConsT0, "In2"), + !NoBias?KerArg("Bias", KerArgSpace(1, TB), F|O_IN|O_DB|O_CONST, 1, SAxis, 2, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Bias"):AT_NO_KER_ARG, KerArg("Out", KerArgSpace(1, T1), F|O_OUT|O_DB, ColO, LineO, 2, 0, OBJ_CONSTRAINTS_PAD_REM, 0, "Out") ) ); @@ -2844,7 +2947,7 @@ int CNN_MatMulAct_fp16( AddKernelFloatArgDim(Name, "In1", 3, LineM1, ColM1, 2); AddKernelFloatArgDim(Name, "In2", 4, LineM2, Height, Width, 2); - AddKernelFloatArgDim(Name, "Bias", 2, LineO, 2); + if (!NoBias) AddKernelFloatArgDim(Name, "Bias", 2, SAxis, 2); AddKernelFloatArgDim(Name, "Out", 3, LineO, ColO, 2); AT_PrepareForTest(Name, @@ -2918,7 +3021,7 @@ int CNN_MatMulSmallM1Act_fp16( unsigned long long int LayerOp = 0; unsigned long long int LayerBandwidth = 0; int LineO = LineM1, ColO = ColM2; - float UB = 6.0; + float UB = (ActOper==KOP_HSIGMOID)?3.0:6.0; // In Case of HSIGMOID, UB is the Offset (default: 3.0) int ConsT0 = Scx; int TileCons = 8; int F = O_FLOAT; @@ -2928,8 +3031,8 @@ int CNN_MatMulSmallM1Act_fp16( } if (!(MatMulOper == KOP_MATMUL_SM1)) GenTilingError("CNN_MatMulSmallM1Act_fp16 Kernel: %s, MatMulOper should be KOP_MATMUL_SM1_fp16", Name); - if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SWISH || ActOper == KOP_SIGMOID || ActOper == KOP_LEAKYRELU)) - GenTilingError("CNN_MatMulSmallM1Act_fp16 Kernel: %s, ActOper should be KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SWISH, KOP_SIGMOID or KOP_RELUN", Name); + if (!(ActOper == KOP_NONE || ActOper == KOP_RELU || ActOper == KOP_RELUN || ActOper == KOP_SIGMOID || ActOper == KOP_TANH || ActOper == KOP_SWISH || ActOper == KOP_HSIGMOID || ActOper == KOP_HTANH || ActOper == KOP_HSWISH || ActOper == KOP_LEAKYRELU)) + GenTilingError("CNN_MatMulSmallM1Act_fp16 Kernel: %s, ActOper should be KOP_NONE, KOP_RELU, KOP_RELUN, KOP_SIGMOID, KOP_TANH, KOP_SWISH, KOP_HSIGMOID, KOP_HTANH, KOP_HSWISH or KOP_RELUN", Name); KernelOper_T KernelOper = CNN_CompositeKernel(MatMulOper, ActOper, KOP_NONE); if (ColM1 != LineM2) GenTilingError("CNN_MatMulSmallM1Act_fp16: %s, Incorrect input matrices dimensions for a matrix multiplication: [%d x %d]*[%d x %d] %s", Name, LineM1, ColM1, LineM2, ColM2); diff --git a/tools/autotiler_v3/CNN_Libraries/CMakeLists.txt b/tools/autotiler_v3/CNN_Libraries/CMakeLists.txt new file mode 100644 index 000000000..c34b5d981 --- /dev/null +++ b/tools/autotiler_v3/CNN_Libraries/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.16) + +add_library(model_lib_pow2 OBJECT + CNN_BiasReLULinear_BasicKernels.c + CNN_Conv_BasicKernels.c + CNN_Conv_DP_BasicKernels.c + CNN_Conv_DW_BasicKernels.c + CNN_Conv_DW_DP_BasicKernels.c + CNN_Pooling_BasicKernels.c + CNN_MatAlgebra.c + CNN_SoftMax.c + ) + +target_link_libraries(model_lib_pow2 PRIVATE freertos) + +target_include_directories(model_lib_pow2 PRIVATE ${GWT_PMSIS_BSP}/include) + +target_include_directories(model_lib_pow2 PUBLIC + ${TILER_EMU_INC} + ${TILER_CNN_KERNEL_PATH_FP16} + . + ) diff --git a/tools/autotiler_v3/CNN_Libraries/CNN_BasicKernels.h b/tools/autotiler_v3/CNN_Libraries/CNN_BasicKernels.h index 94c4f6060..e1d8faafd 100644 --- a/tools/autotiler_v3/CNN_Libraries/CNN_BasicKernels.h +++ b/tools/autotiler_v3/CNN_Libraries/CNN_BasicKernels.h @@ -1518,6 +1518,8 @@ extern void KerParMatMulLeakyrelu_NoBias_fp(KerMatMul_fp_T *Arg); extern void KerParMatMulLeakyreluSxSy_NoBias_fp(KerMatMul_fp_T *Arg); extern void KerParMatMul_fpd_fp(KerMatMul_fpd_fp_T *Arg); +extern void KerParMatMulTransposed_fpd_fp(KerMatMul_fpd_fp_T *Arg); +extern void KerParMatMulTransposedNoBias_fp(KerMatMul_fpd_fp_T *Arg); extern void KerParMatMulSxSy_fpd_fp(KerMatMul_fpd_fp_T *Arg); diff --git a/tools/autotiler_v3/CNN_Libraries/CNN_Copy.c b/tools/autotiler_v3/CNN_Libraries/CNN_Copy.c index 50167af13..3ccdeccf2 100644 --- a/tools/autotiler_v3/CNN_Libraries/CNN_Copy.c +++ b/tools/autotiler_v3/CNN_Libraries/CNN_Copy.c @@ -28,17 +28,12 @@ static int CoreCountDynamic = 1; static int ActiveCore = gap_ncore(); #ifdef __EMUL__ -#include float to_float(unsigned short v) { float res = 0; unsigned short * q = ((unsigned short *)&res); q[1] = v; return res; } -#define MaxF2(a, b) gap_pack2f16(fmax((a)[0], (b)[0]), fmax((a)[1], (b)[1])) -#define MinF2(a, b) gap_pack2f16(fmin((a)[0], (b)[0]), fmin((a)[1], (b)[1])) -#define ClipF2(a, upper, lower) gap_pack2f16(fmax(fmin((a)[0], (upper)[0]), (lower)[0]), fmax(fmin((a)[1], (upper)[1]), (lower)[1])) -#define ClipF(a, upper, lower) fmax(fmin((a), (upper)), (lower)) #ifndef TO_FLOAT #define TO_FLOAT(x) to_float(*((unsigned short *)&x)) #endif @@ -46,13 +41,6 @@ float to_float(unsigned short v) { #ifndef TO_FLOAT #define TO_FLOAT(x) *((F16 *)&x) #endif -#define AbsF2(a) __builtin_pulp_f16altabs2((a)) -#define MaxF2(a, b) __builtin_pulp_f16altmax2((a), (b)) -#define MinF2(a, b) __builtin_pulp_f16altmin2((a), (b)) -#define MaxF(a, b) __builtin_pulp_f16altmax((a), (b)) -#define MinF(a, b) __builtin_pulp_f16altmin((a), (b)) -#define ClipF2(a, upper, lower) ((F16V)MaxF2(MinF2((a), (upper)), (lower))) -#define ClipF(a, upper, lower) ((F16) MaxF(MinF((a), (upper)), (lower))) #endif static inline unsigned int __attribute__((always_inline)) ChunkSize(unsigned int X) @@ -1901,7 +1889,8 @@ void CNN_Float16Fps(CNN_Float16Fps_T * Arg) signed char * pcOut = ((signed char *) pOut); F16 * pcIn = (F16 *)(pIn); for (int i=0; iIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + short int * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + int * __restrict__ Bias = Arg->Bias; + short int * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + unsigned int Norm = Arg->Norm; + unsigned int NormBias = Arg->NormBias; + int LB = Arg->LB, UB = Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + short int * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=First; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + short int * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + short int * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + unsigned int Norm = Arg->Norm; + int LB = Arg->LB, UB = Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + short int * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=First; LineScale; unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; unsigned char * InPointer; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; + int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW, Tile_InH = Arg->Tile_InH; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } + int PadL = Arg->Pad[0], PadR = Arg->Pad[1], PadT = Arg->Pad[2], PadB = Arg->Pad[3]; int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); int Nb_LoadedKI = Arg->TotalInFeatures/16 + (Arg->TotalInFeatures%16?1:0); @@ -223,14 +253,10 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho int Rem_H_Subtiles = (Ho_L - Ho_F) % 3, H_SubTiles = (Ho_L - Ho_F) / 3 + (Rem_H_Subtiles?1:0); int Rem_W_Subtiles = (Wo_L - Wo_F) % 3, W_SubTiles = (Wo_L - Wo_F) / 3 + (Rem_W_Subtiles?1:0); unsigned int res_quant_out_flag, set_quant_out_flag, streamin_flag, Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } + res_quant_out_flag = ~(NE16_MASK_OUTQUANT << NE16_SHIFT_OUTQUANT); res_quant_out_flag &= ~(NE16_MASK_NORM_SHIFT << NE16_SHIFT_NORM_SHIFT); res_quant_out_flag &= ~(NE16_MASK_NORM_BIAS << NE16_SHIFT_NORM_BIAS); @@ -263,7 +289,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_InPointer ((void *) Max((unsigned int) In, (unsigned int) InPointer + Tile_InFeat*(subfilter_i*Dx + w*Sx-PadL + Tile_InW*(Ho_F*Sy-PadT + subfilter_j*Dy)))); SetNE16_OutPointer (Out + Tile_OutFeat*(w + Ho_F*Tile_OutW)); // TODO - checkme I think here you need the total number of loaded chin - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i + Tile_OutFeat*16*Nb_LoadedKI*Fx*subfilter_j); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*Fx*subfilter_j); SetNE16_Reminders (1, Rem_H_Subtiles, Rem_KI, Rem_KO, 1, Rem_H_Subtiles); SetNE16_Dim (Nb_KI, Nb_KO, 1, H_SubTiles); SetNE16_GenConfig (Gen_Cfg); @@ -272,7 +298,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {DoPad, DoPad, DoPad, DoPad}, Arg->Pad_Val); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -306,7 +332,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_InPointer (InPointer + Tile_InFeat*(w*Sx-PadL + subfilter_i*Dx + Tile_InW*(Ho_F*Sy-PadT + subfilter_j*Dy))); SetNE16_OutPointer (Out + Tile_OutFeat*(w + Ho_F*Tile_OutW)); // TODO - checkme I think here you need the total number of loaded chin - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i + Tile_OutFeat*16*Nb_LoadedKI*Fx*subfilter_j); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*Fx*subfilter_j); SetNE16_Reminders (1, Rem_H_Subtiles, Rem_KI, Rem_KO, 1, Rem_H_Subtiles); SetNE16_Dim (Nb_KI, Nb_KO, 1, H_SubTiles); SetNE16_GenConfig (Gen_Cfg); @@ -315,7 +341,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {DoPad, DoPad, DoPad, DoPad}, Arg->Pad_Val); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -349,7 +375,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_InPointer ((void *) Max((unsigned int) InPointer, (unsigned int) InPointer + Tile_InFeat*(Wo_F*Sx-PadL + subfilter_i*Dx + (subfilter_j*Dy+h*Sy-PadT)*Tile_InW))); SetNE16_OutPointer (Out + Tile_OutFeat*(Wo_F + h*Tile_OutW)); // TODO - checkme I think here you need the total number of loaded chin - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i + Tile_OutFeat*16*Nb_LoadedKI*Fx*subfilter_j); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*Fx*subfilter_j); SetNE16_Reminders (Rem_W_Subtiles, 1, Rem_KI, Rem_KO, Rem_W_Subtiles, 1); SetNE16_Dim (Nb_KI, Nb_KO, W_SubTiles, 1); SetNE16_GenConfig (Gen_Cfg); @@ -358,7 +384,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {DoPad, DoPad, DoPad, DoPad}, Arg->Pad_Val); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -392,7 +418,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_InPointer (InPointer + Tile_InFeat*(Wo_F*Sx-PadL + subfilter_i*Dx + (subfilter_j*Dy+h*Sy-PadT)*Tile_InW)); SetNE16_OutPointer (Out + Tile_OutFeat*(Wo_F + h*Tile_OutW)); // TODO - checkme I think here you need the total number of loaded chin - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i + Tile_OutFeat*16*Nb_LoadedKI*Fx*subfilter_j); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*Fx*subfilter_j); SetNE16_Reminders (Rem_W_Subtiles, 1, Rem_KI, Rem_KO, Rem_W_Subtiles, 1); SetNE16_Dim (Nb_KI, Nb_KO, W_SubTiles, 1); SetNE16_GenConfig (Gen_Cfg); @@ -401,7 +427,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {DoPad, DoPad, DoPad, DoPad}, Arg->Pad_Val); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -437,7 +463,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_InPointer ((void *) Max((unsigned int) In, (unsigned int) InPointer + Tile_InFeat*(subfilter_i*Dx + w*Sx - PadL + (subfilter_j*Dy+h*Sy-PadT)*Tile_InW))); SetNE16_OutPointer (Out + Tile_OutFeat*(w + h*Tile_OutW)); // TODO - checkme I think here you need the total number of loaded chin - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i + Tile_OutFeat*16*Nb_LoadedKI*Fx*subfilter_j); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*Fx*subfilter_j); SetNE16_Reminders (1, 1, Rem_KI, Rem_KO, 1, 1); SetNE16_Dim (Nb_KI, Nb_KO, 1, 1); SetNE16_GenConfig (Gen_Cfg); @@ -446,7 +472,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {DoPad, DoPad, DoPad, DoPad}, Arg->Pad_Val); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -483,7 +509,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_InPointer ((void *) Max((unsigned int) In, (unsigned int) InPointer + Tile_InFeat*(subfilter_i*Dx + (w*Sx-PadL) + (subfilter_j*Dy+h*Sy-PadT)*Tile_InW))); SetNE16_OutPointer (Out + Tile_OutFeat*(w + h*Tile_OutW)); // TODO - checkme I think here you need the total number of loaded chin - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i + Tile_OutFeat*16*Nb_LoadedKI*Fx*subfilter_j); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*Fx*subfilter_j); SetNE16_Reminders (1, 1, Rem_KI, Rem_KO, 1, 1); SetNE16_Dim (Nb_KI, Nb_KO, 1, 1); SetNE16_GenConfig (Gen_Cfg); @@ -492,7 +518,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {DoPad, DoPad, DoPad, DoPad}, Arg->Pad_Val); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -529,7 +555,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_InPointer ((void *) Max((unsigned int) In, (unsigned int) InPointer + Tile_InFeat*(subfilter_i*Dx + w*Sx - PadL + (subfilter_j*Dy+h*Sy-PadT)*Tile_InW))); SetNE16_OutPointer (Out + Tile_OutFeat*(h*Tile_OutW + w)); // TODO - checkme I think here you need the total number of loaded chin - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i + Tile_OutFeat*16*Nb_LoadedKI*Fx*subfilter_j); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*Fx*subfilter_j); SetNE16_Reminders (1, 1, Rem_KI, Rem_KO, 1, 1); SetNE16_Dim (Nb_KI, Nb_KO, 1, 1); SetNE16_GenConfig (Gen_Cfg); @@ -538,7 +564,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {DoPad, DoPad, DoPad, DoPad}, Arg->Pad_Val); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -575,7 +601,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_InPointer (InPointer + Tile_InFeat*(subfilter_i*Dx + w*Sx-PadL + (subfilter_j*Dy+h*Sy-PadT)*Tile_InW)); SetNE16_OutPointer (Out + Tile_OutFeat*(h*Tile_OutW + w)); // TODO - checkme I think here you need the total number of loaded chin - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i + Tile_OutFeat*16*Nb_LoadedKI*Fx*subfilter_j); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*Fx*subfilter_j); SetNE16_Reminders (1, 1, Rem_KI, Rem_KO, 1, 1); SetNE16_Dim (Nb_KI, Nb_KO, 1, 1); SetNE16_GenConfig (Gen_Cfg); @@ -584,7 +610,7 @@ void NE16_ComputeBorders(KerConv_NE16_T *Arg, int Wo_F, int Wo_L, int Wo, int Ho SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {DoPad, DoPad, DoPad, DoPad}, Arg->Pad_Val); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -671,6 +697,12 @@ void NE16_PrepareJob(Ker_NE16_Job_T *Arg) void KerConv3x3Stride1_NE16(KerConv_NE16_T *Arg) { int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW, Tile_InH = Arg->Tile_InH; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); int Rem_KI = Tile_InFeat%16?Tile_InFeat%16:16; @@ -683,19 +715,12 @@ void KerConv3x3Stride1_NE16(KerConv_NE16_T *Arg) { int Rem_WI = Rem_WO?(Rem_WO+2):0; int Rem_HI = Rem_HO?(Rem_HO+2):0; int W_Stride1 = 2*3*3*Arg->Qw*Nb_KI; - unsigned int Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; + unsigned int Gen_Cfg = Default_cfg; int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); int PadL = Arg->Pad[0], PadT = Arg->Pad[2], PadR = Arg->Pad[1]?((Rem_WI?(5 - Rem_WI):0) + Arg->Pad[1]):0, PadB = Arg->Pad[3]?((Rem_HI?(5 - Rem_HI):0) + Arg->Pad[3]):0; - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } - - Gen_Cfg = Default_cfg; if (!Arg->LastD0){ // Do not apply reduction if not last Gen_Cfg = (Gen_Cfg & RESET_QUANTOUT) | (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); @@ -718,7 +743,7 @@ void KerConv3x3Stride1_NE16(KerConv_NE16_T *Arg) { SetNE16_ScaleNPointer (Arg->ScaleN); SetNE16_Strides (Tile_InFeat, Tile_InFeat * Tile_InW, 5*5*Tile_InFeat, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes * Tile_OutFeat, OutBytes * Tile_OutFeat * Tile_OutW, // Out_D0, Out_D1, Out_D2 - 2*3*3, W_Stride1, 0); + (Mode16?1:2)*3*3, (Mode16?1:2)*3*3*Arg->Qw*Nb_KI, 0); SetNE16_Reminders (Rem_WI, Rem_HI, Rem_KI, Rem_KO, Rem_WO, Rem_HO); SetNE16_Dim (Nb_KI, Nb_KO, Nb_WO, Nb_HO); SetNE16_ConfigPad ((v4s) {PadL, PadR, PadT, PadB}, Arg->Pad_Val); @@ -744,6 +769,7 @@ void KerConvDW3x3Stride1_NE16(KerConv_NE16_T *Arg) unsigned short int * __restrict__ Filter = (unsigned short int *) Arg->Filter; unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW, Tile_InH = Arg->Tile_InH; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; @@ -760,16 +786,10 @@ void KerConvDW3x3Stride1_NE16(KerConv_NE16_T *Arg) int Rem_HI = Rem_HO?(Rem_HO+2):0; int W_Stride1 = 0; unsigned int quant_out_flag, streamin_flag, Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); int PadL = Arg->Pad[0], PadT = Arg->Pad[2], PadR = (Rem_WI?(5 - Rem_WI):0) + Arg->Pad[1], PadB = (Rem_HI?(5 - Rem_HI):0) + Arg->Pad[3]; - - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } Gen_Cfg = Default_cfg; volatile int job_id; @@ -813,10 +833,16 @@ void KerConv3x3Stride1_DxDy_NE16(KerConv_NE16_T *Arg) unsigned short int * __restrict__ Filter = (unsigned short int *) Arg->Filter; unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW, Tile_InH = Arg->Tile_InH; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } int Dx = Arg->Dx; int Dy = Arg->Dy; int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); @@ -830,16 +856,10 @@ void KerConv3x3Stride1_DxDy_NE16(KerConv_NE16_T *Arg) int W_Stride1 = 2*3*3*Arg->Qw*Nb_KI; unsigned int Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } - Gen_Cfg = Default_cfg; if (!Arg->LastD0){ // Do not apply reduction if not last @@ -877,7 +897,7 @@ void KerConv3x3Stride1_DxDy_NE16(KerConv_NE16_T *Arg) // Strides consider dilation, i.e. 2 consecutive pixels in the W dimension will be at Dx*Chin stride SetNE16_Strides (Dx * Tile_InFeat, Dy * Tile_InFeat * Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, Dx * OutBytes * Tile_OutFeat, Dy * OutBytes * Tile_OutFeat * Tile_OutW, // Out_D0, Out_D1, Out_D2 - 2*3*3, W_Stride1, 0); + (Mode16?1:2)*3*3, (Mode16?1:2)*3*3*Arg->Qw*Nb_KI, 0); // load configuration for the layer SetNE16_Reminders (wo==(Nb_WO_Subtiles-1)?Last_Rem_WI:0, ho==(Nb_HO_Subtiles-1)?Last_Rem_HI:0, Rem_KI, Rem_KO, wo==(Nb_WO_Subtiles-1)?Last_Rem_WO:0, ho==(Nb_HO_Subtiles-1)?Last_Rem_HO:0); @@ -909,10 +929,16 @@ void KerConv3x3Stride2_NE16(KerConv_NE16_T *Arg) unsigned short int * __restrict__ Filter = (unsigned short int *) Arg->Filter; unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW, Tile_InH = Arg->Tile_InH; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } // In each subtile we compute 2 output pixel in both spatial dimensions int H_subtiles = Tile_OutH / 2 + (Tile_OutH % 2); int W_subtiles = Tile_OutW / 2 + (Tile_OutW % 2); @@ -936,17 +962,11 @@ void KerConv3x3Stride2_NE16(KerConv_NE16_T *Arg) int TilePadL = PadL, TilePadT = PadT; int PadR = 0, PadB = 0; unsigned int Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); int ApplyRect = (Default_cfg & (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT)) == 0; - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } - Gen_Cfg = Default_cfg; if (!Arg->LastD0){ // Do not apply reduction if not last @@ -1006,7 +1026,7 @@ void KerConv3x3Stride2_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat, Tile_InFeat * Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes * Tile_OutFeat / 2, OutBytes * Tile_OutFeat * Tile_OutW / 2, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*3*3, W_Stride1, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*3*3, (Mode16?1:2)*3*3*Arg->Qw*Nb_KI, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_Dim (Nb_KI, Nb_KO, Nb_WO, Nb_HO); // Assume first subtile no need for right/bottom pad SetNE16_ConfigPad ((v4s) {PadL, IsLastSubtileW?PadR:0, PadT, IsLastSubtileH?PadB:0}, Arg->Pad_Val); @@ -1074,7 +1094,7 @@ void KerConv3x3Stride2_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat, Tile_InFeat * Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes * Tile_OutFeat / 2, OutBytes * Tile_OutFeat * Tile_OutW / 2, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*3*3, W_Stride1, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*3*3, (Mode16?1:2)*3*3*Arg->Qw*Nb_KI, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_Dim (Nb_KI, Nb_KO, Nb_WO, Nb_HO); // Moving to next spatial subtile means consider less padding (2 because of the stride) PadL = Max(0, TilePadL-2*subtile_j_major); @@ -1174,6 +1194,7 @@ void KerConvDW3x3Stride2_NE16(KerConv_NE16_T *Arg) unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW, Tile_InH = Arg->Tile_InH; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; @@ -1199,17 +1220,11 @@ void KerConvDW3x3Stride2_NE16(KerConv_NE16_T *Arg) int PadL = Arg->Pad[0], PadR = Arg->Pad[1], PadT = Arg->Pad[2], PadB = Arg->Pad[3]; int TilePadL = PadL, TilePadT = PadT; unsigned int res_quant_out_flag, streamin_flag, Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); Gen_Cfg = Default_cfg; - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } - volatile int job_id; NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA @@ -1260,7 +1275,7 @@ void KerConvDW3x3Stride2_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat, Tile_InFeat * Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes * Tile_OutFeat / 2, OutBytes * Tile_OutFeat * Tile_OutW / 2, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*3*3, W_Stride1, 0); // Weights_D0, Weights_D1, Weights_D2 + 2*3*3, 2*3*3*Arg->Qw*Nb_KI, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_Dim (Nb_KI, Nb_KO, Nb_WO, Nb_HO); // Assume first subtile no need for right/bottom pad SetNE16_ConfigPad ((v4s) {PadL, IsLastSubtileW?PadR:0, PadT, IsLastSubtileH?PadB:0}, Arg->Pad_Val); @@ -1328,7 +1343,7 @@ void KerConvDW3x3Stride2_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat, Tile_InFeat * Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes * Tile_OutFeat / 2, OutBytes * Tile_OutFeat * Tile_OutW / 2, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*3*3, W_Stride1, 0); // Weights_D0, Weights_D1, Weights_D2 + 2*3*3, 2*3*3*Arg->Qw*Nb_KI, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_Dim (Nb_KI, Nb_KO, Nb_WO, Nb_HO); // Moving to next spatial subtile means consider less padding (2 because of the stride) PadL = Max(0, TilePadL-2*subtile_j_major); @@ -1427,6 +1442,7 @@ void KerConv1D_StrideS_NE16(KerConv_NE16_T *Arg) unsigned char * __restrict__ Filter = (unsigned char *__restrict__) Arg->Filter; unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = 3; int Sx = Arg->Sx, Fx = Arg->Fx, Dx = Arg->Dx; @@ -1434,8 +1450,13 @@ void KerConv1D_StrideS_NE16(KerConv_NE16_T *Arg) int Wo = (Tile_InW-Fx+Arg->Pad[0]+Arg->Pad[1])/Sx + 1; int Wo_F = Min(Wo, FirstDefinedOutput(Fx, Arg->Pad[0], Sx)), Wo_L = Max(Wo_F, LastDefinedOutput(Tile_InW, Fx, Arg->Pad[0], Sx, Dx)); + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); - int Nb_LoadedKI = Arg->TotalInFeatures/16 + (Arg->TotalInFeatures%16?1:0); + int Nb_LoadedKI = Arg->TotalInFeatures/(Mode16?8:16) + (Arg->TotalInFeatures%(Mode16?8:16)?1:0); int Rem_KI = Tile_InFeat%16?Tile_InFeat%16:16; int Nb_KO = Tile_OutFeat/32 + (Tile_OutFeat%32?1:0); int Rem_KO = Tile_OutFeat%32?Tile_OutFeat%32:32; @@ -1447,16 +1468,9 @@ void KerConv1D_StrideS_NE16(KerConv_NE16_T *Arg) int LastSubtileSize = LastSubtileHeight?(LastSubtileHeight*3):9; int Rem_WI = 0, Rem_HI = 0; - int W_Stride1 = 2*Arg->Fx*Arg->Qw*Nb_KI; - - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; unsigned int Gen_Cfg = Default_cfg; int ApplyRect = (Default_cfg & (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT)) == 0; - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } if (!Arg->LastD0){ // Do not apply reduction if not last Gen_Cfg = (Gen_Cfg & RESET_QUANTOUT) | (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); @@ -1484,7 +1498,7 @@ void KerConv1D_StrideS_NE16(KerConv_NE16_T *Arg) int LastSubfilterW = subfilter_i >= (Fx-1); if (Arg->LastD0 && LastSubfilterW){ // Do not apply reduction if not last - Gen_Cfg |= SET_QUANTOUT; + if (!Mode16) Gen_Cfg |= SET_QUANTOUT; if (ApplyRect) Gen_Cfg &= ~(NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); } else { Gen_Cfg = (Gen_Cfg & RESET_QUANTOUT) | (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); @@ -1494,7 +1508,7 @@ void KerConv1D_StrideS_NE16(KerConv_NE16_T *Arg) unsigned char *pIn = In + Tile_InFeat*(w*Sx - Arg->Pad[0] + subfilter_i*Dx); unsigned char *pOut = Out + OutBytes*Tile_OutFeat*w; - unsigned char *pFilt = Filter + Tile_OutFeat*16*Nb_LoadedKI*subfilter_i; + unsigned char *pFilt = Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*subfilter_i; if (LastSubtileW) { Rem_HI = LastSubtileHeight; w += LastSubtileSize; @@ -1523,7 +1537,7 @@ void KerConv1D_StrideS_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sx*3, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*3, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*2*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -1563,6 +1577,11 @@ void KerConvNxMDxDy_StrideSxSy_NE16(KerConv_NE16_T *Arg) if (!Arg->FirstD0){ Gen_Cfg |= SET_STREAMIN; } + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } int OutBytes = 4; int Out_Stride0 = 32; int SubTileCount = 0; @@ -1574,7 +1593,7 @@ void KerConvNxMDxDy_StrideSxSy_NE16(KerConv_NE16_T *Arg) int Wo = (Tile_InW-Dx*(Fx-1)-1+Arg->Pad[0]+Arg->Pad[1])/Sx + 1; int Wo_F = Min(Wo, FirstDefinedOutput(Fx, Arg->Pad[0], Sx)), Wo_L = Max(Wo_F, LastDefinedOutput(Tile_InW, Fx, Arg->Pad[0], Sx, Dx)); int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); - int Nb_LoadedKI = Arg->TotalInFeatures/16 + (Arg->TotalInFeatures%16?1:0); + int Nb_LoadedKI = Arg->TotalInFeatures/(Mode16?8:16) + (Arg->TotalInFeatures%(Mode16?8:16)?1:0); int Rem_KI = Tile_InFeat%16?Tile_InFeat%16:16; int Nb_KO = Tile_OutFeat/32 + (Tile_OutFeat%32?1:0); int Rem_KO = Tile_OutFeat%32?Tile_OutFeat%32:32; @@ -1583,11 +1602,6 @@ void KerConvNxMDxDy_StrideSxSy_NE16(KerConv_NE16_T *Arg) int Rem_HO = (Ho_L - Ho_F) % 3; int Nb_HO = (Ho_L - Ho_F) / 3 + (Rem_HO?1:0); - if((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Rem_KI = Tile_InFeat/32 + (Tile_InFeat%32?1:0); - Nb_KI = Tile_InFeat%32?Tile_InFeat%32:32; - Nb_LoadedKI = Arg->TotalInFeatures/32 + (Arg->TotalInFeatures%32?1:0); - } volatile int job_id; NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA @@ -1600,7 +1614,7 @@ void KerConvNxMDxDy_StrideSxSy_NE16(KerConv_NE16_T *Arg) int LastSubfilterW = subfilter_i >= (Fx-1); if (Arg->LastD0 && LastSubfilterW && LastSubfilterH){ // Do not apply reduction if not last - Gen_Cfg |= SET_QUANTOUT; + if (!Mode16) Gen_Cfg |= SET_QUANTOUT; if (ApplyRect) Gen_Cfg &= ~(NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); } else { Gen_Cfg = (Gen_Cfg & RESET_QUANTOUT) | (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); @@ -1614,7 +1628,7 @@ void KerConvNxMDxDy_StrideSxSy_NE16(KerConv_NE16_T *Arg) // update input / output pointers SetNE16_InPointer (In + Tile_InFeat*(Wo_F*Sx - Arg->Pad[0] + subfilter_i*Dx + Tile_InW*(Ho_F*Sy - Arg->Pad[2] + subfilter_j*Dy))); SetNE16_OutPointer (Out + OutBytes*Tile_OutFeat*(Wo_F + Tile_OutW*Ho_F)); - SetNE16_WeightsPointer(Filter + Tile_OutFeat*16*Nb_LoadedKI*(subfilter_i + Fx*subfilter_j)); + SetNE16_WeightsPointer(Filter + Tile_OutFeat*(Mode16?8:16)*Nb_LoadedKI*(subfilter_i + Fx*subfilter_j)); SetNE16_Reminders (Rem_WO, Rem_HO, Rem_KI, Rem_KO, Rem_WO, Rem_HO); SetNE16_Dim (Nb_KI, Nb_KO, Nb_WO, Nb_HO); SetNE16_GenConfig (Gen_Cfg); @@ -1624,7 +1638,7 @@ void KerConvNxMDxDy_StrideSxSy_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Tile_InW*Sy, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*Tile_OutW, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*2*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -1650,9 +1664,16 @@ void KerConv1x1Stride1_NE16(KerConv_NE16_T *Arg) unsigned short int * __restrict__ Filter = (unsigned short int *) Arg->Filter; unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + unsigned int Gen_Cfg; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW, Tile_InH = Arg->Tile_InH; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); int Rem_KI = Tile_InFeat%16?Tile_InFeat%16:16; @@ -1664,16 +1685,10 @@ void KerConv1x1Stride1_NE16(KerConv_NE16_T *Arg) int Nb_HO = Tile_OutH / 3 + (Rem_HO?1:0); int Rem_WI = Tile_InW % 3; int Rem_HI = Tile_InH % 3; - unsigned int Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } Gen_Cfg = Default_cfg; if (!Arg->LastD0){ // Do not apply reduction if not last @@ -1698,7 +1713,7 @@ void KerConv1x1Stride1_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat, Tile_InFeat * Tile_InW, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes * Tile_OutFeat, OutBytes * Tile_OutFeat * Tile_OutW, // Out_D0, Out_D1, Out_D2 - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_Reminders (Rem_WI, Rem_HI, Rem_KI, Rem_KO, Rem_WO, Rem_HO); SetNE16_Dim (Nb_KI, Nb_KO, Nb_WO, Nb_HO); SetNE16_WOffset (Arg->W_Offset); @@ -1726,9 +1741,15 @@ void KerConv1x1StrideS_NE16(KerConv_NE16_T *Arg) unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; int Sx = Arg->Sx; int Sy = Arg->Sy; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat, Tile_InW = Arg->Tile_InW, Tile_InH = Arg->Tile_InH; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); int Rem_KI = Tile_InFeat%16?Tile_InFeat%16:16; @@ -1739,15 +1760,11 @@ void KerConv1x1StrideS_NE16(KerConv_NE16_T *Arg) int Rem_HO = Tile_OutH % 3; int Nb_HO = Tile_OutH / 3 + (Rem_HO?1:0); unsigned int Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } + Gen_Cfg = Default_cfg; if (!Arg->LastD0){ // Do not apply reduction if not last @@ -1772,7 +1789,7 @@ void KerConv1x1StrideS_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Tile_InW*Sy, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes * Tile_OutFeat, OutBytes * Tile_OutFeat * Tile_OutW, // Out_D0, Out_D1, Out_D2 - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_Reminders (Rem_WO, Rem_HO, Rem_KI, Rem_KO, Rem_WO, Rem_HO); SetNE16_Dim (Nb_KI, Nb_KO, Nb_WO, Nb_HO); SetNE16_WOffset (Arg->W_Offset); @@ -1802,9 +1819,16 @@ void KerConv1x1_SmallHW_Stride1_NE16(KerConv_NE16_T *Arg) unsigned char * __restrict__ InPointer; unsigned char * __restrict__ OutPointer; unsigned char * __restrict__ FilterPointer; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat; //Tile_InW = Arg->Tile_InW / 3, Tile_InH = 3; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } + int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); int Rem_KI = Tile_InFeat%16?Tile_InFeat%16:16; int Nb_KO = Tile_OutFeat/32 + (Tile_OutFeat%32?1:0); @@ -1819,14 +1843,7 @@ void KerConv1x1_SmallHW_Stride1_NE16(KerConv_NE16_T *Arg) int Rem_HI = 0; int W_Stride1 = 2*Arg->Fx*1*Arg->Qw*Nb_KI; - unsigned int Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; - - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } - Gen_Cfg = Default_cfg; + unsigned int Gen_Cfg = Default_cfg; if (!Arg->LastD0){ // Do not apply reduction if not last Gen_Cfg = (Gen_Cfg & RESET_QUANTOUT) | (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); @@ -1879,7 +1896,7 @@ void KerConv1x1_SmallHW_Stride1_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat, Tile_InFeat*3, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*3, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -1910,9 +1927,15 @@ void KerConv1x1_SmallHW_StrideS_NE16(KerConv_NE16_T *Arg) unsigned char * __restrict__ InPointer; unsigned char * __restrict__ OutPointer; unsigned char * __restrict__ FilterPointer; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; int Tile_InFeat = Arg->Tile_InFeat; //Tile_InW = Arg->Tile_InW / 3, Tile_InH = 3; int Tile_OutFeat = Arg->Tile_OutFeat, Tile_OutW = Arg->Tile_OutW, Tile_OutH = Arg->Tile_OutH; + int Mode16 = 0; + if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { + Tile_InFeat *= 2; + Mode16 = 1; + } int Nb_KI = Tile_InFeat/16 + (Tile_InFeat%16?1:0); int Rem_KI = Tile_InFeat%16?Tile_InFeat%16:16; int Nb_KO = Tile_OutFeat/32 + (Tile_OutFeat%32?1:0); @@ -1929,14 +1952,7 @@ void KerConv1x1_SmallHW_StrideS_NE16(KerConv_NE16_T *Arg) int Rem_HI = 0; int W_Stride1 = 2*Arg->Fx*1*Arg->Qw*Nb_KI; - unsigned int Gen_Cfg; - unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; - - if ((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Nb_KI = (2*Tile_InFeat)/16 + ((2*Tile_InFeat)%16?1:0); - Rem_KI = (2*Tile_InFeat)%16?(2*Tile_InFeat)%16:16; - } - Gen_Cfg = Default_cfg; + unsigned int Gen_Cfg = Default_cfg; if (!Arg->LastD0){ // Do not apply reduction if not last Gen_Cfg = (Gen_Cfg & RESET_QUANTOUT) | (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); @@ -1989,7 +2005,7 @@ void KerConv1x1_SmallHW_StrideS_NE16(KerConv_NE16_T *Arg) SetNE16_ScaleNPointer (ScaleN); SetNE16_Strides (Tile_InFeat*Sx, Tile_InFeat*Sy*3, 0, // In_D0, In_D1, In_D2 - unused Out_Stride0, OutBytes*Tile_OutFeat, OutBytes*Tile_OutFeat*3, // Out_D0, Out_D1, Out_D2 div 2 to take into account strideness - 2*Arg->Qw, Nb_KI*16*Arg->Qw/8, 0); // Weights_D0, Weights_D1, Weights_D2 + (Mode16?1:2)*Arg->Qw, Nb_KI*(Mode16?1:2)*Arg->Qw, 0); // Weights_D0, Weights_D1, Weights_D2 SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); SetNE16_WOffset (Arg->W_Offset); @@ -2009,7 +2025,76 @@ void KerConv1x1_SmallHW_StrideS_NE16(KerConv_NE16_T *Arg) NE16_SETPRIORITY_CORE(); } -void KerLinear_NE16(KerLinear_NE16_T *Arg) +void KerLinear_8a_NE16(KerLinear_NE16_T *Arg) +{ + unsigned char * __restrict__ In = (unsigned char *) Arg->In; + unsigned char * __restrict__ Out = (unsigned char *) Arg->Out; + int * __restrict__ Bias = (int *) Arg->Bias; + unsigned char * __restrict__ Filter = (unsigned char *) Arg->Filter; + unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; + unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + + int Tile_InFeat = Arg->Tile_InFeat; + int UsedKI = Tile_InFeat; + int Tile_OutFeat = Arg->Tile_OutFeat; + + int Nb_KO = Tile_OutFeat/32 + (Tile_OutFeat%32?1:0); + int Rem_KO = Tile_OutFeat%32?Tile_OutFeat%32:32; // Check different wrt simulator + unsigned int res_quant_out_flag, streamin_flag, Gen_Cfg; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; + int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; + int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); + int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); + // int Weights_KI = Tile_InFeat / 16 + (Tile_InFeat%16?1:0); + + if (Tile_InFeat % 16) { + UsedKI = (Tile_InFeat/16+1)*16; + for (int i=Tile_InFeat; iLastD0){ + // Do not apply reduction if not last + Gen_Cfg = (Gen_Cfg & RESET_QUANTOUT) | (NE16_MASK_QUANT_NORECT << NE16_SHIFT_QUANT_NORECT); + } + if (!Arg->FirstD0){ + Gen_Cfg |= SET_STREAMIN; + } + volatile int job_id; + NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA + + // acquire job + NE16_BARRIER_ACQUIRE(job_id); + // load configuration for the layer + SetNE16_OutPointer (Out); + SetNE16_WeightsPointer(Filter); + SetNE16_BiasPointer (Bias); + SetNE16_ScalePointer (Scale); + SetNE16_ScaleNPointer (ScaleN); + SetNE16_Reminders (0, 0, Rem_KI, Rem_KO, 0, 0); + SetNE16_InPointer (In); + SetNE16_Strides (16, 0, 0, // In_D0, In_D1 - unused, In_D2 - unused + Out_Stride0, 0, 0, // Out_D0, Out_D1 - unused, Out_D2 - unused + UsedKI*2/16, Arg->Qw*UsedKI*2/16, Arg->Qw*UsedKI*2); // Weights_D0, Weights_D1, Weights_D2 + SetNE16_Dim (Nb_KI, Nb_KO, 1, 1); + SetNE16_WOffset (Arg->W_Offset); + SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); + SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); + SetNE16_GenConfig (Gen_Cfg); + + // commit and trigger NE16 computation + NE16_WRITE_CMD(NE16_COMMIT_AND_TRIGGER, NE16_TRIGGER_CMD); + + // wait for end of computation + NE16_BARRIER(); + + // set priority to core side + NE16_SETPRIORITY_CORE(); +} + +void KerLinear_16a_NE16(KerLinear_NE16_T *Arg) { unsigned char * __restrict__ In = (unsigned char *) Arg->In; unsigned char * __restrict__ Out = (unsigned char *) Arg->Out; @@ -2019,10 +2104,9 @@ void KerLinear_NE16(KerLinear_NE16_T *Arg) unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; int Tile_InFeat = Arg->Tile_InFeat; + int UsedKI = Tile_InFeat; int Tile_OutFeat = Arg->Tile_OutFeat; - int Nb_KI = Tile_InFeat / 256 + (Tile_InFeat % 256 ? 1 : 0); - int Rem_KI = ((Tile_InFeat % 256) / 16) == 0 ? 16 : (Tile_InFeat % 256) / 16; int Nb_KO = Tile_OutFeat/32 + (Tile_OutFeat%32?1:0); int Rem_KO = Tile_OutFeat%32?Tile_OutFeat%32:32; // Check different wrt simulator @@ -2033,10 +2117,12 @@ void KerLinear_NE16(KerLinear_NE16_T *Arg) int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); // int Weights_KI = Tile_InFeat / 16 + (Tile_InFeat%16?1:0); - if((Default_cfg >> NE16_SHIFT_MODE16) & NE16_MASK_MODE16) { - Rem_KI = ((Tile_InFeat % 512) / 16) == 0 ? 16 : (Tile_InFeat % 512) / 16; - Nb_KI = Tile_InFeat / 512 + (Tile_InFeat % 512 ? 1 : 0); - } + if (Tile_InFeat % 32) { + UsedKI = (Tile_InFeat/32+1)*32; + for (int i=Tile_InFeat; iLastD0){ @@ -2049,29 +2135,62 @@ void KerLinear_NE16(KerLinear_NE16_T *Arg) volatile int job_id; NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA - for (int subtile_ko=0; subtile_koQw*InFeatSubTile*2/16, Arg->Qw*InFeatSubTile*2); // Weights_D0, Weights_D1, Weights_D2 + // //Tile_InFeat/Arg->Qw, Tile_InFeat, Tile_InFeat); // Weights_D0, Weights_D1, Weights_D2 + // SetNE16_Dim (1, 1, 1, 1); + // SetNE16_WOffset (Arg->W_Offset); + // SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); + // SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); + // SetNE16_GenConfig (Gen_Cfg); + // } + + // // commit and trigger NE16 computation + // NE16_WRITE_CMD(NE16_COMMIT_AND_TRIGGER, NE16_TRIGGER_CMD); + // } + // } + + int Offset = 0; + for (int subtile_ki=0; subtile_kiQw*Tile_InFeat*2/16, Arg->Qw*Tile_InFeat*4); // Weights_D0, Weights_D1, Weights_D2 - //Tile_InFeat/Arg->Qw, Tile_InFeat, Tile_InFeat); // Weights_D0, Weights_D1, Weights_D2 - SetNE16_Dim (Nb_KI, 1, 1, 1); - SetNE16_WOffset (Arg->W_Offset); - SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); - SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); - SetNE16_GenConfig (Gen_Cfg); - } + SetNE16_OutPointer (Out); + SetNE16_WeightsPointer(Filter+subtile_ki*256*Tile_OutFeat); + SetNE16_BiasPointer (Bias); + SetNE16_ScalePointer (Scale); + SetNE16_ScaleNPointer (ScaleN); + SetNE16_Reminders (0, 0, IsLastKI?Rem_KI:0, Rem_KO, 0, 0); + SetNE16_InPointer (In+256*subtile_ki*2); + SetNE16_Strides (16, 0, 0, // In_D0, In_D1 - unused, In_D2 - unused + Out_Stride0, 0, 0, // Out_D0, Out_D1 - unused, Out_D2 - unused + InFeatSubTile*2/16, Arg->Qw*InFeatSubTile*2/16, Arg->Qw*InFeatSubTile*2); // Weights_D0, Weights_D1, Weights_D2 + //Tile_InFeat/Arg->Qw, Tile_InFeat, Tile_InFeat); // Weights_D0, Weights_D1, Weights_D2 + SetNE16_Dim (1, Nb_KO, 1, 1); + SetNE16_WOffset (Arg->W_Offset); + SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); + SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); + SetNE16_GenConfig (Gen_Cfg); // commit and trigger NE16 computation NE16_WRITE_CMD(NE16_COMMIT_AND_TRIGGER, NE16_TRIGGER_CMD); @@ -2083,242 +2202,235 @@ void KerLinear_NE16(KerLinear_NE16_T *Arg) // set priority to core side NE16_SETPRIORITY_CORE(); } -/* -void KerLinear_NE16fp(KerLinear_NE16fp_T *Arg) + +void KerMatMul_8aFast_NE16(KerMatMul_NE16_T *Arg) { - unsigned short * __restrict__ In = (unsigned short *) Arg->In; - unsigned int * __restrict__ Out = (unsigned int *) Arg->Out; + unsigned char * __restrict__ In = (unsigned char *) Arg->In1; + unsigned char * __restrict__ Out = (unsigned char *) Arg->Out; int * __restrict__ Bias = (int *) Arg->Bias; - unsigned char * __restrict__ Filter = (unsigned char *) Arg->Filter; + unsigned char * __restrict__ In2 = (unsigned char *) Arg->In2; unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; - unsigned char * __restrict__ Infos = (unsigned char *__restrict__) Arg->Infos; - int Tile_OutFeat = Arg->Tile_OutFeat; - int Nb_KO = Tile_OutFeat/32 + (Tile_OutFeat%32?1:0); - int Rem_KO = Tile_OutFeat%32?Tile_OutFeat%32:32; - unsigned int CoreId = gap_coreid(); + int W_In1 = Arg->W_In1; + int W_In2 = Arg->W_In2; - if (Arg->FirstD0) { - // First Input Tile - Copy Biases - unsigned int ChunkCell = ChunkSize(Tile_OutFeat, 1); - unsigned int First = CoreId * ChunkCell; - unsigned int Last = Min(First + ChunkCell, Tile_OutFeat); - for (int o = First; oLastD0) { - // First Last Tile - Process output - unsigned int PerCycle = 32 / gap_ncore(); - unsigned int First = CoreId * PerCycle; - unsigned int Last = Min(First + PerCycle, 32); - unsigned int ChunkCell = ChunkSize(Rem_KO, 0); - unsigned int FinalFirst = 32 * (Nb_KO-1) + CoreId * ChunkCell; - unsigned int FinalLast = Min(FinalFirst + ChunkCell, Rem_KO); - gap_waitbarrier_cc(); - while(Nb_KO--) { - if (CoreId==0) pi_cl_sem_dec(Arg->Sem); - gap_waitbarrier(); - int ThisFirst, ThisLast; - if (Nb_KO) { - ThisFirst = First; - ThisLast = Last; - First += PerCycle; - Last += PerCycle; - } else { - ThisFirst = FinalFirst; - ThisLast = FinalLast; - } - for (int o = ThisFirst; oTile_InFeat; + int Nb_KO = W_In2/32 + (W_In2%32?1:0); + int Rem_KO = W_In2%32?W_In2%32:32; // Check different wrt simulator + unsigned int res_quant_out_flag, streamin_flag, Gen_Cfg; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; + int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; + int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); + int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); + int Qw = ((Default_cfg >> NE16_SHIFT_WBITS_M1) & NE16_MASK_WBITS_M1) + 1; - int Nb_KI, Rem_KI; - unsigned int Cfg = Arg->Default_NE16_Job_Cfg; + int Nb_KI = W_In1 / 256 + (W_In1 % 256 ? 1 : 0); + int Rem_KI = ((W_In1 % 256) / 16) == 0 ? 16 : (W_In1 % 256) / 16; - Rem_KI = ((Tile_InFeat % 512) / 16) == 0 ? 16 : (Tile_InFeat % 512) / 16; - Nb_KI = Tile_InFeat / 512 + (Tile_InFeat % 512 ? 1 : 0); + Gen_Cfg = Default_cfg; + volatile int job_id; + NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA - if (Arg->FirstD0) { - if (Arg->FirstD1) - Arg->Sem = pi_cl_sem_alloc(); - gap_waitbarrier_cc(); - } - if (Arg->LastD0) { - pi_cl_sem_set(Arg->Sem, 0); - gap_waitbarrier_cc(); - } - volatile int job_id; - NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA + for (int Line=0; LineH_In1; Line++) { + // acquire job + NE16_BARRIER_ACQUIRE(job_id); + // load configuration for the layer + SetNE16_InPointer (In + W_In1*Line); + //SetNE16_OutPointer (Out + W_In2*(i + OutFirstCol)); + SetNE16_OutPointer (Out + W_In2*Line); + SetNE16_WeightsPointer(In2); + SetNE16_BiasPointer (Bias); + SetNE16_ScalePointer (Scale); + SetNE16_ScaleNPointer (ScaleN); + SetNE16_Reminders (0, 0, Rem_KI, Rem_KO, 0, 0); + SetNE16_Strides (16, 0, 0, // In_D0, In_D1 - unused, In_D2 - unused + Out_Stride0, 0, 0, // Out_D0, Out_D1 - unused, Out_D2 - unused + W_In1*2/16, Qw*W_In1*2/16, Qw*W_In1*2); // Weights_D0, Weights_D1, Weights_D2 + SetNE16_Dim (Nb_KI, Nb_KO, 1, 1); + SetNE16_WOffset (Arg->W_Offset); + SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); + SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); + SetNE16_GenConfig (Gen_Cfg); + + // commit and trigger NE16 computation + NE16_WRITE_CMD(NE16_COMMIT_AND_TRIGGER, NE16_TRIGGER_CMD); + } + + // wait for end of computation + NE16_BARRIER(); - for (int subtile_ko=0; subtile_koIn1; + int * __restrict__ Out = (int *) Arg->Out; + int * __restrict__ Bias = (int *) Arg->Bias; + unsigned char * __restrict__ In2 = (unsigned char *) Arg->In2; + unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; + unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + + int W_In1 = Arg->W_In1; + int W_In2 = Arg->W_In2; + + int Nb_KO = W_In2/32 + (W_In2%32?1:0); + int Rem_KO = W_In2%32?W_In2%32:32; // Check different wrt simulator + unsigned int res_quant_out_flag, streamin_flag, Gen_Cfg; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; + int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; + int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); + int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); + int Qw = ((Default_cfg >> NE16_SHIFT_WBITS_M1) & NE16_MASK_WBITS_M1) + 1; + + int Nb_KI = W_In1 / 256 + (W_In1 % 256 ? 1 : 0); + int Rem_KI = ((W_In1 % 256) / 16) == 0 ? 16 : (W_In1 % 256) / 16; + + Gen_Cfg = Default_cfg; + volatile int job_id; + NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA + + for (int Line=0; LineH_In1; Line++) { + for (int subtile_ki=0; subtile_kiLastD0&&subtile_ko>2) { - pi_cl_sem_inc(Arg->Sem, 1); - } - int IsLastKO = subtile_ko == (Nb_KO-1); // load configuration for the layer - SetNE16_OutPointer (Out+subtile_ko*32*4); - SetNE16_WeightsPointer(Filter+subtile_ko*32*Tile_InFeat); - SetNE16_Reminders (0, 0, Rem_KI, IsLastKO?Rem_KO:32, 0, 0); - if (subtile_ko<2){ - SetNE16_InPointer (In); - SetNE16_Strides (16, 0, 0, // In_D0, In_D1 - unused, In_D2 - unused - 32, 0, 0, // Out_D0, Out_D1 - unused, Out_D2 - unused - Tile_InFeat*2/16, Arg->Qw*Tile_InFeat*2/16, Arg->Qw*Tile_InFeat*4); // Weights_D0, Weights_D1, Weights_D2 - //Tile_InFeat/Arg->Qw, Tile_InFeat, Tile_InFeat); // Weights_D0, Weights_D1, Weights_D2 - SetNE16_Dim (Nb_KI, 1, 1, 1); - SetNE16_WOffset (Infos[NE16_FC_WOFF]); - SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); - SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); - SetNE16_GenConfig (Cfg); - } + SetNE16_InPointer (In + W_In1*Line +256*subtile_ki*2); + SetNE16_OutPointer (Out + W_In2*Line); + SetNE16_WeightsPointer(In2+subtile_ki*256*W_In2); + SetNE16_BiasPointer (Bias); + SetNE16_ScalePointer (Scale); + SetNE16_ScaleNPointer (ScaleN); + SetNE16_Reminders (0, 0, IsLastKI?Rem_KI:0, Rem_KO, 0, 0); + SetNE16_Strides (16, 0, 0, // In_D0, In_D1 - unused, In_D2 - unused + Out_Stride0, 0, 0, // Out_D0, Out_D1 - unused, Out_D2 - unused + InFeatSubTile*2/16, Qw*InFeatSubTile*2/16, Qw*InFeatSubTile*2); // Weights_D0, Weights_D1, Weights_D2 + //Tile_InFeat/Qw, Tile_InFeat, Tile_InFeat); // Weights_D0, Weights_D1, Weights_D2 + SetNE16_Dim (1, Nb_KO, 1, 1); + SetNE16_WOffset (Arg->W_Offset); + SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); + SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); + SetNE16_GenConfig (Gen_Cfg); // commit and trigger NE16 computation NE16_WRITE_CMD(NE16_COMMIT_AND_TRIGGER, NE16_TRIGGER_CMD); } + } - // wait for end of computation - NE16_BARRIER(); + // wait for end of computation + NE16_BARRIER(); - // set priority to core side - NE16_SETPRIORITY_CORE(); - if (Arg->LastD0) - pi_cl_sem_inc(Arg->Sem, 2); - } - gap_waitbarrier_cc(); - if (Arg->LastD0&&Arg->LastD1) { - if (CoreId == 8) pi_cl_sem_free(Arg->Sem); - gap_waitbarrier_cc(); - } + // set priority to core side + NE16_SETPRIORITY_CORE(); } -void KerLinearReLU_NE16fp(KerLinear_NE16fp_T *Arg) +void KerMatMul_8a_NE16(KerMatMul_NE16_T *Arg) { - unsigned short * __restrict__ In = (unsigned short *) Arg->In; - unsigned short * __restrict__ Out = (unsigned short *) Arg->Out; - unsigned int * __restrict__ Buf = (unsigned int *) Arg->Buf; - int * __restrict__ Bias = (int *) Arg->Bias; - unsigned char * __restrict__ Filter = (unsigned char *) Arg->Filter; - unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; - unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; - unsigned char * __restrict__ Infos = (unsigned char *__restrict__) Arg->Infos; - - int Tile_OutFeat = Arg->Tile_OutFeat; - int Nb_KO = Tile_OutFeat/32 + (Tile_OutFeat%32?1:0); - int Rem_KO = Tile_OutFeat%32?Tile_OutFeat%32:32; + unsigned char * __restrict__ In = (unsigned char *) Arg->In1; + int W_In1 = Arg->W_In1; + int UsedKI = (W_In1%16)?((W_In1/16+1)*16):W_In1; + unsigned char * __restrict__ Buff1 = (unsigned char *__restrict__) Arg->Buff; + unsigned char * __restrict__ Buff2 = Buff1 + UsedKI; + unsigned char * __restrict__ CurBuff = Buff1; unsigned int CoreId = gap_coreid(); + unsigned int *Semaphores = Arg->Semaphores; - if (Arg->FirstD0) { - // First Input Tile - Copy Biases - unsigned int ChunkCell = ChunkSize(Tile_OutFeat, 1); - unsigned int First = CoreId * ChunkCell; - unsigned int Last = Min(First + ChunkCell, Tile_OutFeat); - for (int o = First; oLastD0) { - // First Last Tile - Process output - unsigned int PerCycle = 32 / gap_ncore(); - unsigned int First = CoreId * PerCycle; - unsigned int Last = Min(First + PerCycle, 32); - unsigned int ChunkCell = ChunkSize(Rem_KO, 0); - unsigned int FinalFirst = 32 * (Nb_KO-1) + CoreId * ChunkCell; - unsigned int FinalLast = Min(FinalFirst + ChunkCell, Rem_KO); - gap_waitbarrier_cc(); - while(Nb_KO--) { - if (CoreId==0) pi_cl_sem_dec(Arg->Sem); - gap_waitbarrier(); - int ThisFirst, ThisLast; - if (Nb_KO) { - ThisFirst = First; - ThisLast = Last; - First += PerCycle; - Last += PerCycle; - } else { - ThisFirst = FinalFirst; - ThisLast = FinalLast; - } - for (int o = ThisFirst; oTile_InFeat; + if (CoreId == 0) { + Semaphores[0] = pi_cl_sem_alloc(); + Semaphores[1] = pi_cl_sem_alloc(); + pi_cl_sem_set(Semaphores[0], 0); + pi_cl_sem_set(Semaphores[1], 2); + for (int i=W_In1; iDefault_NE16_Job_Cfg; + for (int Line=0; LineH_In1; Line++) { + if (CoreId != 8) { + /* Producer */ + if (CoreId == 0) + pi_cl_sem_dec(Semaphores[1]); + gap_waitbarrier(0); - Rem_KI = ((Tile_InFeat % 512) / 16) == 0 ? 16 : (Tile_InFeat % 512) / 16; - Nb_KI = Tile_InFeat / 512 + (Tile_InFeat % 512 ? 1 : 0); + /* --- */ + Copy(CurBuff, In+W_In1*Line, W_In1, CoreId); + CurBuff = (CurBuff==Buff1)?Buff2:Buff1; + gap_waitbarrier(0); - if (Arg->FirstD0) { - if (Arg->FirstD1) - Arg->Sem = pi_cl_sem_alloc(); - gap_waitbarrier_cc(); - } - if (Arg->LastD0) { - pi_cl_sem_set(Arg->Sem, 0); - gap_waitbarrier_cc(); - } - volatile int job_id; - NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA + if (CoreId == 0) + pi_cl_sem_inc(Semaphores[0], 1); + gap_waitbarrier(0); + + } else { + /* Consumer */ + unsigned char * __restrict__ Out = (unsigned char *) Arg->Out; + int * __restrict__ Bias = (int *) Arg->Bias; + unsigned char * __restrict__ In2 = (unsigned char *) Arg->In2; + unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; + unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + + int W_In2 = Arg->W_In2; + int Nb_KO = W_In2/32 + (W_In2%32?1:0); + int Rem_KO = W_In2%32?W_In2%32:32; + + unsigned int res_quant_out_flag, streamin_flag, Gen_Cfg; + unsigned int Default_cfg = Arg->Default_NE16_Job_Cfg; + int QuantBitsFlag = (Default_cfg >> NE16_SHIFT_QUANT_BITS) & NE16_MASK_QUANT_BITS; + int OutBytes = (QuantBitsFlag==2)?4: ((QuantBitsFlag==1)?2:1); + int Out_Stride0 = (QuantBitsFlag==2)?32:((QuantBitsFlag==1)?16:0); + int Qw = ((Default_cfg >> NE16_SHIFT_WBITS_M1) & NE16_MASK_WBITS_M1) + 1; + + int Nb_KI = UsedKI / 256 + (UsedKI % 256 ? 1 : 0); + int Rem_KI = ((UsedKI % 256) / 16) == 0 ? 16 : (UsedKI % 256) / 16; + + Gen_Cfg = Default_cfg; + volatile int job_id; + NE16_SETPRIORITY_NE16(); // priority to NE16 w.r.t. cores, DMA - for (int subtile_ko=0; subtile_koLastD0&&subtile_ko>2) { - pi_cl_sem_inc(Arg->Sem, 1); - } - int IsLastKO = subtile_ko == (Nb_KO-1); + + pi_cl_sem_dec(Semaphores[0]); + // load configuration for the layer - SetNE16_OutPointer (Buf+subtile_ko*32*4); - SetNE16_WeightsPointer(Filter+subtile_ko*32*Tile_InFeat); - SetNE16_Reminders (0, 0, Rem_KI, IsLastKO?Rem_KO:32, 0, 0); - if (subtile_ko<2){ - SetNE16_InPointer (In); - SetNE16_Strides (16, 0, 0, // In_D0, In_D1 - unused, In_D2 - unused - 32, 0, 0, // Out_D0, Out_D1 - unused, Out_D2 - unused - Tile_InFeat*2/16, Arg->Qw*Tile_InFeat*2/16, Arg->Qw*Tile_InFeat*4); // Weights_D0, Weights_D1, Weights_D2 - //Tile_InFeat/Arg->Qw, Tile_InFeat, Tile_InFeat); // Weights_D0, Weights_D1, Weights_D2 - SetNE16_Dim (Nb_KI, 1, 1, 1); - SetNE16_WOffset (Infos[NE16_FC_WOFF]); - SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); - SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); - SetNE16_GenConfig (Cfg); - } + SetNE16_InPointer (CurBuff); + //SetNE16_OutPointer (Out + W_In2*(i + OutFirstCol)); + SetNE16_OutPointer (Out + W_In2*Line); + SetNE16_WeightsPointer(In2); + SetNE16_BiasPointer (Bias); + SetNE16_ScalePointer (Scale); + SetNE16_ScaleNPointer (ScaleN); + SetNE16_Reminders (0, 0, Rem_KI, Rem_KO, 0, 0); + SetNE16_Strides (16, 0, 0, // In_D0, In_D1 - unused, In_D2 - unused + Out_Stride0, 0, 0, // Out_D0, Out_D1 - unused, Out_D2 - unused + UsedKI*2/16, Qw*UsedKI*2/16, Qw*UsedKI*2); // Weights_D0, Weights_D1, Weights_D2 + SetNE16_Dim (Nb_KI, Nb_KO, 1, 1); + SetNE16_WOffset (Arg->W_Offset); + SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); + SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); + SetNE16_GenConfig (Gen_Cfg); // commit and trigger NE16 computation NE16_WRITE_CMD(NE16_COMMIT_AND_TRIGGER, NE16_TRIGGER_CMD); - } - // wait for end of computation - NE16_BARRIER(); + // wait for end of computation + NE16_BARRIER(); - // set priority to core side - NE16_SETPRIORITY_CORE(); - if (Arg->LastD0) - pi_cl_sem_inc(Arg->Sem, 2); - } - gap_waitbarrier_cc(); - if (Arg->LastD0&&Arg->LastD1) { - if (CoreId == 8) pi_cl_sem_free(Arg->Sem); - gap_waitbarrier_cc(); + // set priority to core side + NE16_SETPRIORITY_CORE(); + CurBuff = (CurBuff==Buff1)?Buff2:Buff1; + + pi_cl_sem_inc(Semaphores[1], 1); + } } } -*/ void Ker_MM_Conv2D_NE16( Ker_MM_Conv_NE16_T *Arg @@ -2353,6 +2465,7 @@ void Ker_MM_Conv2D_NE16( pi_cl_sem_set(Semaphores[0], 0); pi_cl_sem_set(Semaphores[1], 2); } + gap_waitbarrier_cc(); int ColBuffSize = ((W_In1+15)/16)*16; int Tail = ColBuffSize / 4; @@ -2363,7 +2476,7 @@ void Ker_MM_Conv2D_NE16( int Iter1 = Iter*FS; unsigned int Gen_Cfg, Default_cfg = Arg->Default_NE16_Job_Cfg; - int Nb_KI, Rem_KI, Nb_KO, Rem_KO, OutBytes, Out_Stride0; + int Nb_KI=0, Rem_KI=0, Nb_KO=0, Rem_KO=0, OutBytes=0, Out_Stride0=0; if (CoreId == 8) { Nb_KO = OutFeat/32 + (OutFeat%32?1:0); Rem_KO = OutFeat%32?OutFeat%32:32; // Check different wrt simulator @@ -2448,32 +2561,27 @@ void Ker_MM_Conv2D_NE16( /* Consumer: Master core set the job and trigger NE16 on the prepared buffers */ pi_cl_sem_dec(Semaphores[0]); - for (int subtile_ko=0; subtile_koQw*FS*InFeat*2/16, Arg->Qw*FS*InFeat*4); // Weights_D0, Weights_D1, Weights_D2 - SetNE16_Dim (Nb_KI, 1, 1, 1); - SetNE16_WOffset (Arg->W_Offset); - SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); - SetNE16_ConfigFMask((v4s) {0, 0, 0, 0}); - SetNE16_GenConfig (Gen_Cfg); - } + // load configuration for the layer + SetNE16_InPointer (ColBuff); + //SetNE16_OutPointer (Out + W_In2*(i + OutFirstCol)); + SetNE16_OutPointer (Out + ((l*Wo+c)*OutFeat)*OutBytes); + SetNE16_WeightsPointer(Filter); + SetNE16_BiasPointer (Bias); + SetNE16_ScalePointer (Scale); + SetNE16_ScaleNPointer (ScaleN); + SetNE16_Reminders (0, 0, Rem_KI, Rem_KO, 0, 0); + SetNE16_Strides (16, 0, 0, // In_D0, In_D1 - unused, In_D2 - unused + Out_Stride0, 0, 0, // Out_D0, Out_D1 - unused, Out_D2 - unused + FS*InFeat*2/16, Arg->Qw*FS*InFeat*2/16, Arg->Qw*FS*InFeat*4); // Weights_D0, Weights_D1, Weights_D2 + SetNE16_Dim (Nb_KI, Nb_KO, 1, 1); + SetNE16_WOffset (Arg->W_Offset); + SetNE16_ConfigPad ((v4s) {0, 0, 0, 0}, 0); + SetNE16_ConfigFMask ((v4s) {0, 0, 0, 0}); + SetNE16_GenConfig (Gen_Cfg); + + // commit and trigger NE16 computation + NE16_WRITE_CMD(NE16_COMMIT_AND_TRIGGER, NE16_TRIGGER_CMD); - // commit and trigger NE16 computation - NE16_WRITE_CMD(NE16_COMMIT_AND_TRIGGER, NE16_TRIGGER_CMD); - } NE16_BARRIER(); ColBuff = (ColBuff==ColBuff1)?ColBuff2:ColBuff1; diff --git a/tools/autotiler_v3/CNN_Libraries_NE16/CNN_BasicKernels_NE16.h b/tools/autotiler_v3/CNN_Libraries_NE16/CNN_BasicKernels_NE16.h index ba4cacbc3..38311e356 100644 --- a/tools/autotiler_v3/CNN_Libraries_NE16/CNN_BasicKernels_NE16.h +++ b/tools/autotiler_v3/CNN_Libraries_NE16/CNN_BasicKernels_NE16.h @@ -86,7 +86,7 @@ typedef struct { } Ker_MM_Conv_NE16_T; typedef struct { - unsigned char * __restrict__ In; + void * __restrict__ In; unsigned short * __restrict__ Filter; int * __restrict__ Bias; void * __restrict__ Out; @@ -131,6 +131,23 @@ typedef struct { signed char * Infos; } KerLinear_NE16fp_T; +typedef struct { + void * __restrict__ In1; + unsigned short int W_In1; + unsigned short int H_In1; + void * __restrict__ In2; + unsigned short int W_In2; + void * __restrict__ Bias; + unsigned char * __restrict__ Scale; + unsigned char * __restrict__ ScaleN; + void * __restrict__ Out; + void * __restrict__ Buff; + signed char * __restrict__ Infos; + int W_Offset; + unsigned int Semaphores[2]; + unsigned int Default_NE16_Job_Cfg; +} KerMatMul_NE16_T; + typedef struct { unsigned char * __restrict__ In; @@ -224,7 +241,12 @@ void KerConv1x1_SmallHW_Stride1_NE16(KerConv_NE16_T *Arg); void KerConv1D_StrideS_NE16(KerConv_NE16_T *Arg); void KerConvNxMDxDy_StrideSxSy_NE16(KerConv_NE16_T *Arg); void KerConv3x3Stride1_DxDy_NE16(KerConv_NE16_T *Arg); -void KerLinear_NE16(KerLinear_NE16_T *Arg); +void KerLinear_8a_NE16(KerLinear_NE16_T *Arg); +void KerLinear_16a_NE16(KerLinear_NE16_T *Arg); void Ker_MM_Conv2D_NE16(Ker_MM_Conv_NE16_T *Arg); +void KerMatMul_8a_NE16(KerMatMul_NE16_T *Arg); +void KerMatMul_8aFast_NE16(KerMatMul_NE16_T *Arg); +void KerMatMul_16a_NE16(KerMatMul_NE16_T *Arg); +void KerMatMul_16aFast_NE16(KerMatMul_NE16_T *Arg); #endif \ No newline at end of file diff --git a/tools/autotiler_v3/CNN_Libraries_SQ8/CMakeLists.txt b/tools/autotiler_v3/CNN_Libraries_SQ8/CMakeLists.txt new file mode 100644 index 000000000..78b32075d --- /dev/null +++ b/tools/autotiler_v3/CNN_Libraries_SQ8/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.16) + +add_library(model_lib_sq8 OBJECT + CNN_Activation_SQ8.c + CNN_Activation_HWC_SQ8.c + CNN_Bias_Linear_SQ8.c + CNN_Conv_SQ8.c + CNN_MatMul_Conv_SQ8.c + CNN_Pooling_SQ8.c + CNN_Conv_DW_SQ8.c + CNN_MatAlgebra_SQ8.c + CNN_SoftMax_SQ8.c + RNN_SQ8.c + ) + +target_link_libraries(model_lib_sq8 PRIVATE freertos) + +target_include_directories(model_lib_sq8 PRIVATE ${GWT_PMSIS_BSP}/include) + +target_include_directories(model_lib_sq8 PRIVATE + ${TILER_EMU_INC} + . + ) diff --git a/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_Activation_HWC_SQ8.c b/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_Activation_HWC_SQ8.c index 8226b9aef..91c6be453 100644 --- a/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_Activation_HWC_SQ8.c +++ b/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_Activation_HWC_SQ8.c @@ -101,6 +101,29 @@ static void KerReductIO_Compact_HWC_SQ8_1(char *__restrict__ To, char *__restric } } +void KerParReduct_CC_HWC_SQ8(KerConvLinReduct_SQ8_T *Arg) + +{ + int Feat = Arg->Feat; + int W = Arg->W; + int H = Arg->H; + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H*W), First = CoreId*ChunkCell, Last = Min(First+ChunkCell, H*W); + int * __restrict__ In = (int *__restrict__) Arg->In; + unsigned char * __restrict__ Scale = (unsigned char *__restrict__) Arg->Scale; + unsigned char * __restrict__ ScaleN = (unsigned char *__restrict__) Arg->ScaleN; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char * __restrict__ Infos = (signed char *__restrict__) Arg->Infos; + unsigned int ActScale = ((unsigned char *)Infos)[AT_INF_ACTSCALE], ActScaleN = ((unsigned char *)Infos)[AT_INF_ACTSCALEN]; + int A0 = Infos[AT_INF_A0], B0 = Infos[AT_INF_B0], C0 = Infos[AT_INF_C0]; + + for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + for (int c=0; c>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); } gap_waitbarrier(0); } @@ -434,14 +455,14 @@ void KerParReduct_CC_ReLU_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(Max(0, Acc0), ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(Max(0, Acc1), ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(Max(0, Acc0), ActScale, ActScaleN), 15); } } @@ -466,14 +487,14 @@ void KerParReduct_CC_ReLUN_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc0, A0), ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc1, A0), ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc0, A0), ActScale, ActScaleN), 15); } } @@ -499,14 +520,14 @@ void KerParReduct_CC_ReLUM_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(Max(A0, Acc0), ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(Max(A0, Acc1), ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(Max(A0, Acc0), ActScale, ActScaleN), 15); } } @@ -532,14 +553,14 @@ void KerParReduct_CC_ReLUMN_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(Min(B0, Max(A0, Acc0)), ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(Min(B0, Max(A0, Acc1)), ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(Min(B0, Max(A0, Acc0)), ActScale, ActScaleN), 15); } } @@ -565,14 +586,14 @@ void KerParReduct_CC_HSigmoid_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc0 + B0, A0) * C0, ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc1 + B0, A0) * C0, ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc0 + B0, A0) * C0, ActScale, ActScaleN), 15); } } @@ -597,14 +618,14 @@ void KerParReduct_CC_HSwish_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc0 + B0, A0) * C0 * Acc0, ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc1 + B0, A0) * C0 * Acc1, ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(AT_CLIP_POS(Acc0 + B0, A0) * C0 * Acc0, ActScale, ActScaleN), 15); } } @@ -629,8 +650,8 @@ void KerParReduct_CC_LeakyReLU_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); int Neg0 = gap_bitextractu(Acc0, 1, 31), Pos0 = !Neg0; @@ -641,7 +662,7 @@ void KerParReduct_CC_LeakyReLU_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE((Neg1*Acc1N+Pos1*Acc1), ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); int Neg0 = gap_bitextractu(Acc0, 1, 31), Pos0 = !Neg0; int Acc0N = AT_NORM(Acc0 * A0, 7); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE((Neg0*Acc0N+Pos0*Acc0), ActScale, ActScaleN), 15); @@ -668,14 +689,14 @@ void KerParReduct_CC_Sigmoid_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(Sigmoid(Acc0 << 8), ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(Sigmoid(Acc1 << 8), ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(Sigmoid(Acc0 << 8) >> 8, ActScale, ActScaleN), 15); } } @@ -700,14 +721,14 @@ void KerParReduct_CC_Tanh_HWC_SQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(Tanh(Acc0 << 8), ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(Tanh(Acc1 << 8), ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(Tanh(Acc0 << 8) >> 8, ActScale, ActScaleN), 15); } } @@ -733,10 +754,10 @@ void KerParReduct_CC_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 16); - Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + Out[i*Feat + 2*c ] = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 16); + Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); } - Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); } gap_waitbarrier(0); } @@ -759,14 +780,14 @@ void KerParReduct_CC_ReLU_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 16); - int Acc1 = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 16); + int Acc1 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); Out[i*Feat + 2*c ] = gap_clipu(AT_SCALE(Max(0, Acc0), ActScale, ActScaleN), 16); Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(Max(0, Acc1), ActScale, ActScaleN), 16); } if (Feat&0x1) { - int Acc0 = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(Max(0, Acc0), ActScale, ActScaleN), 16); } } @@ -791,14 +812,14 @@ void KerParReduct_CC_ReLUN_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 16); - int Acc1 = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 16); + int Acc1 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); Out[i*Feat + 2*c ] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc0, A0), ActScale, ActScaleN), 16); Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc1, A0), ActScale, ActScaleN), 16); } if (Feat&0x1) { - int Acc0 = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc0, A0), ActScale, ActScaleN), 16); } } @@ -824,14 +845,14 @@ void KerParReduct_CC_ReLUM_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 16); - int Acc1 = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 16); + int Acc1 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); Out[i*Feat + 2*c ] = gap_clipu(AT_SCALE(Max(A0, Acc0), ActScale, ActScaleN), 16); Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(Max(A0, Acc1), ActScale, ActScaleN), 16); } if (Feat&0x1) { - int Acc0 = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(Max(A0, Acc0), ActScale, ActScaleN), 16); } } @@ -857,14 +878,14 @@ void KerParReduct_CC_ReLUMN_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 16); - int Acc1 = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 16); + int Acc1 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); Out[i*Feat + 2*c ] = gap_clipu(AT_SCALE(Min(B0, Max(A0, Acc0)), ActScale, ActScaleN), 16); Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(Min(B0, Max(A0, Acc1)), ActScale, ActScaleN), 16); } if (Feat&0x1) { - int Acc0 = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(Min(B0, Max(A0, Acc0)), ActScale, ActScaleN), 16); } } @@ -890,14 +911,14 @@ void KerParReduct_CC_HSigmoid_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c], ScaleN[2*c ]-Prenorm), 16); - int Acc1 = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c], ScaleN[2*c ]), 16); + int Acc1 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); Out[i*Feat + 2*c ] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc0 + B0, A0) * C0, ActScale, ActScaleN), 16); Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc1 + B0, A0) * C0, ActScale, ActScaleN), 16); } if (Feat&0x1) { - int Acc0 = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc0 + B0, A0) * C0, ActScale, ActScaleN), 16); } } @@ -922,14 +943,14 @@ void KerParReduct_CC_HSwish_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 16); - int Acc1 = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 16); + int Acc1 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); Out[i*Feat + 2*c ] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc0 + B0, A0) * C0 * Acc0, ActScale, ActScaleN), 16); Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc1 + B0, A0) * C0 * Acc1, ActScale, ActScaleN), 16); } if (Feat&0x1) { - int Acc0 = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(AT_CLIP_POS(Acc0 + B0, A0) * C0 * Acc0, ActScale, ActScaleN), 16); } } @@ -954,8 +975,8 @@ void KerParReduct_CC_LeakyReLU_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 16); - int Acc1 = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 16); + int Acc1 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); int Neg0 = gap_bitextractu(Acc0, 1, 31), Pos0 = !Neg0; @@ -966,7 +987,7 @@ void KerParReduct_CC_LeakyReLU_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE((Neg1*Acc1N+Pos1*Acc1), ActScale, ActScaleN), 16); } if (Feat&0x1) { - int Acc0 = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); int Neg0 = gap_bitextractu(Acc0, 1, 31), Pos0 = !Neg0; int Acc0N = AT_NORM(Acc0 * A0, 7); Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE((Neg0*Acc0N+Pos0*Acc0), ActScale, ActScaleN), 16); @@ -993,14 +1014,14 @@ void KerParReduct_CC_Sigmoid_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 16); - int Acc1 = gap_clipu(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 16); + int Acc1 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 16); Out[i*Feat + 2*c ] = gap_clipu(AT_SCALE(Sigmoid(Acc0 << 8), ActScale, ActScaleN), 16); Out[i*Feat + 2*c+1] = gap_clipu(AT_SCALE(Sigmoid(Acc1 << 8), ActScale, ActScaleN), 16); } if (Feat&0x1) { - int Acc0 = gap_clipu(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 16); + int Acc0 = gap_clipu(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 16); Out[i*Feat + Feat-1] = gap_clipu(AT_SCALE(Sigmoid(Acc0 << 8) >> 8, ActScale, ActScaleN), 16); } } @@ -1025,14 +1046,14 @@ void KerParReduct_CC_Tanh_HWC_USQ16(KerConvLinReduct_SQ8_T *Arg) for (int i=First; i>Prenorm, Scale[2*c ], ScaleN[2*c ]-Prenorm), 15); - int Acc1 = gap_clip(AT_SCALE(In[i*Feat + 2*c+1]>>Prenorm, Scale[2*c+1], ScaleN[2*c+1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+0], Prenorm), Scale[2*c ], ScaleN[2*c ]), 15); + int Acc1 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + 2*c+1], Prenorm), Scale[2*c+1], ScaleN[2*c+1]), 15); Out[i*Feat + 2*c ] = gap_clip(AT_SCALE(Tanh(Acc0 << 8), ActScale, ActScaleN), 15); Out[i*Feat + 2*c+1] = gap_clip(AT_SCALE(Tanh(Acc1 << 8), ActScale, ActScaleN), 15); } if (Feat&0x1) { - int Acc0 = gap_clip(AT_SCALE(In[i*Feat + Feat-1]>>Prenorm, Scale[Feat-1], ScaleN[Feat-1]-Prenorm), 15); + int Acc0 = gap_clip(AT_SCALE(AT_NORM(In[i*Feat + Feat-1], Prenorm), Scale[Feat-1], ScaleN[Feat-1]), 15); Out[i*Feat + Feat-1] = gap_clip(AT_SCALE(Tanh(Acc0 << 8) >> 8, ActScale, ActScaleN), 15); } } diff --git a/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_BasicKernels_SQ8.h b/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_BasicKernels_SQ8.h index 5b0f4a0b2..eb5fdb638 100644 --- a/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_BasicKernels_SQ8.h +++ b/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_BasicKernels_SQ8.h @@ -38,9 +38,11 @@ #define AT_INF_BIASN 5 #define AT_INF_IN1SCALE 5 #define AT_INF_SCALE 5 +#define AT_INF_GLOBAL_SUM_SCALE 5 #define AT_INF_SCALEN 6 #define AT_INF_IN1SCALEN 6 +#define AT_INF_GLOBAL_SUM_SCALEN 6 #define AT_INF_OUTSCALE 7 #define AT_INF_OUTSCALEN 8 @@ -909,6 +911,7 @@ extern void KerReductIO_CC_Sigmoid_SQ8(KerConvLinReduct_SQ8_T *Arg); extern void KerReductIO_CC_Tanh_SQ8(KerConvLinReduct_SQ8_T *Arg); /* HWC Layout */ +extern void KerParReduct_CC_HWC_SQ8(KerConvLinReduct_SQ8_T *Arg); extern void KerParReduct_CC_ReLU_HWC_SQ8(KerConvLinReduct_SQ8_T *Arg); extern void KerParReduct_CC_ReLUN_HWC_SQ8(KerConvLinReduct_SQ8_T *Arg); extern void KerParReduct_CC_ReLUM_HWC_SQ8(KerConvLinReduct_SQ8_T *Arg); @@ -1048,6 +1051,13 @@ extern void KerParGlobalAvgPool_Reduct_ReLUN_SQ8(KerGlobalPool_SQ8_T *Arg); extern void KerParGlobalAvgPool_Reduct_ReLUM_SQ8(KerGlobalPool_SQ8_T *Arg); extern void KerParGlobalAvgPool_Reduct_ReLUMN_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPool_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPool_Reduct_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPool_Reduct_ReLU_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPool_Reduct_ReLUN_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPool_Reduct_ReLUM_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPool_Reduct_ReLUMN_SQ8(KerGlobalPool_SQ8_T *Arg); + extern void KerParGlobalMaxPoolFullFeat_SQ8(KerGlobalPool_SQ8_T *Arg); extern void KerParGlobalMaxPoolFullFeat_ReLU_SQ8(KerGlobalPool_SQ8_T *Arg); extern void KerParGlobalMaxPoolFullFeat_ReLUN_SQ8(KerGlobalPool_SQ8_T *Arg); @@ -1060,6 +1070,12 @@ extern void KerParGlobalAvgPoolFullFeat_ReLUN_SQ8(KerGlobalPool_SQ8_T *Arg); extern void KerParGlobalAvgPoolFullFeat_ReLUM_SQ8(KerGlobalPool_SQ8_T *Arg); extern void KerParGlobalAvgPoolFullFeat_ReLUMN_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPoolFullFeat_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPoolFullFeat_ReLU_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPoolFullFeat_ReLUN_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPoolFullFeat_ReLUM_SQ8(KerGlobalPool_SQ8_T *Arg); +extern void KerParGlobalSumPoolFullFeat_ReLUMN_SQ8(KerGlobalPool_SQ8_T *Arg); + /* Pooling Basic Kernels for HWC Layers layout */ extern void KerParMaxPoolNxMStrideSxSy_HWC_USQ8(Ker_MM_Pool_USQ8_T *Arg); extern void KerParAvgPoolNxMStrideSxSy_HWC_USQ8(Ker_MM_Pool_USQ8_T *Arg); @@ -1132,19 +1148,36 @@ extern void KerParMatMulSxSyB16_ReLU_SQ8(KerMatMul_SQ8_T *Arg); extern void KerParMatMulSxSyB16_ReLUN_SQ8(KerMatMul_SQ8_T *Arg); extern void KerParMatMulB32_SQ8(KerMatMul_SQ8_T *Arg); -extern void KerParMatMulB32_2x4_SQ8(KerMatMul_SQ8_T *Arg); extern void KerParMatMulB32_ReLU_SQ8(KerMatMul_SQ8_T *Arg); -extern void KerParMatMulB32_2x4_ReLU_SQ8(KerMatMul_SQ8_T *Arg); extern void KerParMatMulB32_ReLUN_SQ8(KerMatMul_SQ8_T *Arg); -extern void KerParMatMulTransposedB32_SQ8(KerMatMul_SQ8_T *Arg); -extern void KerParMatMulTransposedB32_ReLU_SQ8(KerMatMul_SQ8_T *Arg); -extern void KerParMatMulTransposedB32_ReLUN_SQ8(KerMatMul_SQ8_T *Arg); + +extern void KerParMatMulB32_2x4_SQ8(KerMatMul_SQ8_T *Arg); +extern void KerParMatMulB32_2x4_ReLU_SQ8(KerMatMul_SQ8_T *Arg); + extern void KerParMatMulB32_2x4_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); extern void KerParMatMulB32_2x4_ReLU_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); extern void KerParMatMulB32_2x4_ReLUN_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); -extern void KerParMatMulNoBias_2x4_SQ8(KerMatMul_PL_SQ8_T *Arg); -extern void KerParMatMulNoBias_2x4_ReLU_SQ8(KerMatMul_PL_SQ8_T *Arg); -extern void KerParMatMulNoBias_2x4_ReLUN_SQ8(KerMatMul_PL_SQ8_T *Arg); + +extern void KerParMatMulNoBias_2x4_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); +extern void KerParMatMulNoBias_2x4_ReLU_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); +extern void KerParMatMulNoBias_2x4_ReLUN_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); + +extern void KerParMatMulTransposedB32_SQ8(KerMatMul_SQ8_T *Arg); +extern void KerParMatMulTransposedB32_ReLU_SQ8(KerMatMul_SQ8_T *Arg); +extern void KerParMatMulTransposedB32_ReLUN_SQ8(KerMatMul_SQ8_T *Arg); + +extern void KerParMatMulTransposedNoBias_SQ8(KerMatMul_SQ8_T *Arg); +extern void KerParMatMulTransposedNoBias_ReLU_SQ8(KerMatMul_SQ8_T *Arg); +extern void KerParMatMulTransposedNoBias_ReLUN_SQ8(KerMatMul_SQ8_T *Arg); + +extern void KerParMatMulTransposedB32_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); +extern void KerParMatMulTransposedB32_ReLU_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); +extern void KerParMatMulTransposedB32_ReLUN_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); + +extern void KerParMatMulTransposedNoBias_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); +extern void KerParMatMulTransposedNoBias_ReLU_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); +extern void KerParMatMulTransposedNoBias_ReLUN_PL_SQ8(KerMatMul_PL_SQ8_T *Arg); + extern void KerParMatMulSxSyB32_SQ8(KerMatMul_SQ8_T *Arg); extern void KerParMatMulSxSyB32_ReLU_SQ8(KerMatMul_SQ8_T *Arg); extern void KerParMatMulSxSyB32_ReLUN_SQ8(KerMatMul_SQ8_T *Arg); diff --git a/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_MatAlgebra_SQ8.c b/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_MatAlgebra_SQ8.c index 12e4a3c17..6f713b20b 100644 --- a/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_MatAlgebra_SQ8.c +++ b/tools/autotiler_v3/CNN_Libraries_SQ8/CNN_MatAlgebra_SQ8.c @@ -3870,7 +3870,7 @@ void KerParMatVectMul_LeakyReLU_SQ8(KerMat3_SQ8_T *Arg) gap_waitbarrier(0); } -void KerParMatMulNoBias_2x4_SQ8(KerMatMul_PL_SQ8_T *Arg) +void KerParMatMulNoBias_2x4_PL_SQ8(KerMatMul_PL_SQ8_T *Arg) { /* @@ -4030,7 +4030,7 @@ void KerParMatMulNoBias_2x4_SQ8(KerMatMul_PL_SQ8_T *Arg) gap_waitbarrier(0); } } -void KerParMatMulNoBias_2x4_ReLU_SQ8(KerMatMul_PL_SQ8_T *Arg) +void KerParMatMulNoBias_2x4_ReLU_PL_SQ8(KerMatMul_PL_SQ8_T *Arg) { /* @@ -4191,7 +4191,7 @@ void KerParMatMulNoBias_2x4_ReLU_SQ8(KerMatMul_PL_SQ8_T *Arg) } } -void KerParMatMulNoBias_2x4_ReLUN_SQ8(KerMatMul_PL_SQ8_T *Arg) +void KerParMatMulNoBias_2x4_ReLUN_PL_SQ8(KerMatMul_PL_SQ8_T *Arg) { /* @@ -4405,8 +4405,8 @@ void KerParMatMulB32_2x4_PL_SQ8(KerMatMul_PL_SQ8_T *Arg) int l1 = 2*Line + First; v4s *VIn1 = (v4s *) (&In1[(l1)*W_In1 + 0]); v4s *VIn2 = (v4s *) (&In1[(l1+1)*W_In1 + 0]); - int S0 = (Bias[l1]<First)?(Last-First):0; int OffLine = 0, OffCol = 0; if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; ColFirst)?(Last-First):0; int OffLine = 0, OffCol = 0; if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; ColFirst)?(Last-First):0; int OffLine = 0, OffCol = 0; if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char * __restrict__ Scale = Arg->Scale; + unsigned char * __restrict__ ScaleN = Arg->ScaleN; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char * __restrict__ Scale = Arg->Scale; + unsigned char * __restrict__ ScaleN = Arg->ScaleN; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char * __restrict__ Scale = Arg->Scale; + unsigned char * __restrict__ ScaleN = Arg->ScaleN; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + int A0 = Arg->Infos[AT_INF_A0]; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + int * __restrict__ Bias = Arg->Bias; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char Scale = (unsigned char) Arg->Infos[AT_INF_OUTSCALE]; + unsigned char ScaleN = (unsigned char) Arg->Infos[AT_INF_OUTSCALEN]; + unsigned int NormBias = Arg->NormBias; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + int * __restrict__ Bias = Arg->Bias; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char Scale = (unsigned char) Arg->Infos[AT_INF_OUTSCALE]; + unsigned char ScaleN = (unsigned char) Arg->Infos[AT_INF_OUTSCALEN]; + unsigned int NormBias = Arg->NormBias; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + int * __restrict__ Bias = Arg->Bias; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char Scale = (unsigned char) Arg->Infos[AT_INF_OUTSCALE]; + unsigned char ScaleN = (unsigned char) Arg->Infos[AT_INF_OUTSCALEN]; + unsigned int NormBias = Arg->NormBias; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + int A0 = Arg->Infos[AT_INF_A0]; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char Scale = (unsigned char) Arg->Infos[AT_INF_OUTSCALE]; + unsigned char ScaleN = (unsigned char) Arg->Infos[AT_INF_OUTSCALEN]; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char Scale = (unsigned char) Arg->Infos[AT_INF_OUTSCALE]; + unsigned char ScaleN = (unsigned char) Arg->Infos[AT_INF_OUTSCALEN]; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + signed char * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; + signed char * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned char Scale = (unsigned char) Arg->Infos[AT_INF_OUTSCALE]; + unsigned char ScaleN = (unsigned char) Arg->Infos[AT_INF_OUTSCALEN]; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + int A0 = Arg->Infos[AT_INF_A0]; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(), ChunkCell = ChunkSize(H_In1), First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + signed char *pOut = Out + W_Out*OffLine + OffCol; + for (Line=0; LineIn; +// int W = Arg->W, H = Arg->H; +// signed char *__restrict__ Filter = Arg->Filter; +// int Fx = Arg->Fx, Sx = Arg->Sx, Sy = Arg->Sy; +// int PadL = Arg->Pad[0]; +// int InFeat = Arg->InFeat, OutFeat = Arg->OutFeat; + +// int * __restrict__ Bias = Arg->Bias; +// int NormBias = Arg->Infos[AT_INF_BIASN]; +// signed char * __restrict__ Out = Arg->Out; +// unsigned char * __restrict__ Scale = Arg->Scale; +// unsigned char * __restrict__ ScaleN = Arg->ScaleN; + +// int Wo = Arg->Wo, Ho = Arg->Ho; + +// /* ColBuff must be large enough to accomodate Align(Fx*InFeat, 8) elements */ +// unsigned int W_In1 = InFeat*Fx; +// unsigned int CoreId = gap_coreid(), C = ChunkSize(InFeat), F = Min(CoreId*C, InFeat), L = Min(InFeat, F+C); +// unsigned int ChunkCell = ChunkSize(OutFeat), First = CoreId*ChunkCell, Last = Min(OutFeat, First+ChunkCell); +// unsigned int Iter = (Last>First)?(Last-First):0; + +// int PosL = 0; +// int PosC = -PadL; +// for (int c=0; cIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + int * __restrict__ Out = (int *__restrict__) Arg->Out; + int FirstTile = Arg->FirstTile; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char *__restrict__ Infos = Arg->Infos; + int DoScale = Arg->DoScale; + unsigned int ActScale = ((unsigned char *)Infos)[AT_INF_ACTSCALE], ActScaleN = ((unsigned char *)Infos)[AT_INF_ACTSCALEN]; + unsigned int Scale = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALE], ScaleN = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALEN]; + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + if (DoScale && ActScale) for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char *__restrict__ Infos = Arg->Infos; + unsigned int ActScale = ((unsigned char *)Infos)[AT_INF_ACTSCALE], ActScaleN = ((unsigned char *)Infos)[AT_INF_ACTSCALEN]; + unsigned int Scale = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALE], ScaleN = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALEN]; + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + if (ActScale) for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char *__restrict__ Infos = Arg->Infos; + unsigned int ActScale = ((unsigned char *)Infos)[AT_INF_ACTSCALE], ActScaleN = ((unsigned char *)Infos)[AT_INF_ACTSCALEN]; + unsigned int Scale = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALE], ScaleN = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALEN]; + int A0 = Infos[AT_INF_A0]; + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + if (ActScale) for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char *__restrict__ Infos = Arg->Infos; + unsigned int ActScale = ((unsigned char *)Infos)[AT_INF_ACTSCALE], ActScaleN = ((unsigned char *)Infos)[AT_INF_ACTSCALEN]; + unsigned int Scale = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALE], ScaleN = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALEN]; + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + int A0 = Infos[AT_INF_A0]; + + if (ActScale) for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char *__restrict__ Infos = Arg->Infos; + unsigned int ActScale = ((unsigned char *)Infos)[AT_INF_ACTSCALE], ActScaleN = ((unsigned char *)Infos)[AT_INF_ACTSCALEN]; + unsigned int Scale = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALE], ScaleN = ((unsigned char *)Infos)[AT_INF_GLOBAL_SUM_SCALEN]; + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + int A0 = Infos[AT_INF_A0], B0 = Infos[AT_INF_B0]; + + if (ActScale) for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + int DoScale = Arg->DoScale; + signed char * __restrict__ Infos = Arg->Infos; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char * __restrict__ Infos = Arg->Infos; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char * __restrict__ Infos = Arg->Infos; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char * __restrict__ Infos = Arg->Infos; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + for (unsigned int of=First; ofIn; + unsigned int W = Arg->W, H = Arg->H; + unsigned int Feat = Arg->Feat; + signed char * __restrict__ Out = (signed char *__restrict__) Arg->Out; + signed char * __restrict__ Infos = Arg->Infos; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(Feat), First = Chunk*CoreId, Last = Min(First+Chunk, Feat); + + for (unsigned int of=First; ofFy, Sy = Arg->Sy; int PadL = Arg->Pad[0], PadT = Arg->Pad[2]; int Feat = Arg->Feat; - signed char * __restrict__ Out = Arg->Out; + unsigned char * __restrict__ Out = Arg->Out; int Wo = Arg->Wo, Ho = Arg->Ho; v4u M_Init = (v4u) {0, 0, 0, 0}; @@ -3064,19 +3296,19 @@ void KerParMaxPoolNxMStrideSxSy_HWC_USQ8(Ker_MM_Pool_USQ8_T *Arg) } ((int *)(Out+l*Wo*Feat + c*Feat+First))[f] = (int) M; } - if (Iter&0x2) { - v4u M = M_Init; - for (int j=Tb; jIn; + unsigned int W = Arg->W; + unsigned int H = Arg->H; + unsigned int OutFeatures = Arg->Feat; + F16 * __restrict__ Out = Arg->Out; + F16 Offset = (F16) 3.0; + F16V Offsetv = (F16V) {Offset, Offset}; + + unsigned int S = OutFeatures*W*H, CoreId = gap_coreid(), Chunk = ChunkSize(S), First = Chunk*CoreId, Last = Min(First+Chunk, S), Iter = Last-First; + F16V * VectIn = (F16V *) (In+First); + F16V * VectOut = (F16V *) (Out+First); + + F16V LBv = (F16V) {0.0, 0.0}; + F16V UBv = (F16V) {6.0, 6.0}; + + for (unsigned int i=0; iIn; + unsigned int W = Arg->W; + unsigned int H = Arg->H; + unsigned int OutFeatures = Arg->Feat; + F16 * __restrict__ Out = Arg->Out; + F16 Offset = Arg->UB; + F16V Offsetv = (F16V) {Offset, Offset}; + + unsigned int S = OutFeatures*W*H, CoreId = gap_coreid(), Chunk = ChunkSize(S), First = Chunk*CoreId, Last = Min(First+Chunk, S), Iter = Last-First; + F16V * VectIn = (F16V *) (In+First); + F16V * VectOut = (F16V *) (Out+First); + + F16V LBv = (F16V) {0.0, 0.0}; + F16V UBv = (F16V) {6.0, 6.0}; + + for (unsigned int i=0; iIn; + unsigned int W = Arg->W; + unsigned int H = Arg->H; + unsigned int OutFeatures = Arg->Feat; + F16 * __restrict__ Out = Arg->Out; + + unsigned int S = OutFeatures*W*H, CoreId = gap_coreid(), Chunk = ChunkSize(S), First = Chunk*CoreId, Last = Min(First+Chunk, S), Iter = Last-First; + F16V * VectIn = (F16V *) (In+First); + F16V * VectOut = (F16V *) (Out+First); + + F16V LBv = (F16V) {-1.0, -1.0}; + F16V UBv = (F16V) { 1.0, 1.0}; + + for (unsigned int i=0; iIn; + int TotalInDim = Arg->TotalInDim; + int InDim = Arg->InDim; + int Init = Arg->TileIndex==0; + const F16 * __restrict__ Filter = Arg->Filter; + const F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + + int OutDim = Arg->OutDim; + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(OutDim); + unsigned int First = CoreId*ChunkCell; + unsigned int Last = Min(First+ChunkCell, OutDim); + int i,j; + F16V * __restrict__ VectIn = (F16V *) In; + + for (i=First; iIn; + int TotalInDim = Arg->TotalInDim; + int InDim = Arg->InDim; + int Init = Arg->TileIndex==0; + const F16 * __restrict__ Filter = Arg->Filter; + const F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + F16 Offset = Arg->UB; + + int OutDim = Arg->OutDim; + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(OutDim); + unsigned int First = CoreId*ChunkCell; + unsigned int Last = Min(First+ChunkCell, OutDim); + int i,j; + F16V * __restrict__ VectIn = (F16V *) In; + + for (i=First; iIn; + int TotalInDim = Arg->TotalInDim; + int InDim = Arg->InDim; + int Init = Arg->TileIndex==0; + const F16 * __restrict__ Filter = Arg->Filter; + const F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + + int OutDim = Arg->OutDim; + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(OutDim); + unsigned int First = CoreId*ChunkCell; + unsigned int Last = Min(First+ChunkCell, OutDim); + int i,j; + F16V * __restrict__ VectIn = (F16V *) In; + + for (i=First; iFirst)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 Offset = Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 Offset = Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + F16 Offset = Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + F16 Offset = Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 Offset = 3.0; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 Offset = 3.0; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + F16 Offset = 3.0; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + F16 Offset = 3.0; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + F16 LB = (F16) 0.0; + F16 UB = (F16) Arg->UB; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + F16 *BufferColIn2 = Arg->BufferColIn2; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; unsigned int CoreId = gap_coreid(); unsigned int ChunkCell = ChunkSize(H_In1); unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); - unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); + unsigned int Iter = (Last>First)?(Last-First):0; int OffLine = 0, OffCol = 0; if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; ColIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; + unsigned int Line, Col, i; + + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; @@ -144,7 +5449,6 @@ void KerParMatMulReLU_fp16(KerMatMul_fp16_T *Arg) unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ F16 * __restrict__ Bias = Arg->Bias; F16 * __restrict__ Out = Arg->Out; - F16 LB = (F16) 0.0; unsigned int W_Out = Arg->W_Out; unsigned int OutFirstCol = Arg->OutFirstCol; F16 *BufferColIn2 = Arg->BufferColIn2; @@ -153,34 +5457,137 @@ void KerParMatMulReLU_fp16(KerMatMul_fp16_T *Arg) unsigned int H_In2 = W_In1; unsigned int H_Out = H_In1; unsigned int Line, Col, i; - F16V *VBuff = (F16V *) BufferColIn2; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); unsigned int CoreId = gap_coreid(); unsigned int ChunkCell = ChunkSize(H_In1); unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); int OffLine = 0, OffCol = 0; if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; ColIn1; @@ -190,8 +5597,6 @@ void KerParMatMulReLUN_fp16(KerMatMul_fp16_T *Arg) unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ F16 * __restrict__ Bias = Arg->Bias; F16 * __restrict__ Out = Arg->Out; - F16 LB = (F16) 0.0; - F16 UB = (F16) Arg->UB; unsigned int W_Out = Arg->W_Out; unsigned int OutFirstCol = Arg->OutFirstCol; F16 *BufferColIn2 = Arg->BufferColIn2; @@ -200,42 +5605,139 @@ void KerParMatMulReLUN_fp16(KerMatMul_fp16_T *Arg) unsigned int H_In2 = W_In1; unsigned int H_Out = H_In1; unsigned int Line, Col, i; - F16V *VBuff = (F16V *) BufferColIn2; + F16V *VBuff1 = (F16V *) (&BufferColIn2[0]); + F16V *VBuff2 = (F16V *) (&BufferColIn2[1*H_In2]); + F16V *VBuff3 = (F16V *) (&BufferColIn2[2*H_In2]); + F16V *VBuff4 = (F16V *) (&BufferColIn2[3*H_In2]); unsigned int CoreId = gap_coreid(); unsigned int ChunkCell = ChunkSize(H_In1); unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); int OffLine = 0, OffCol = 0; if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; ColIn1; unsigned int W_In1 = Arg->W_In1; unsigned int H_In1 = Arg->H_In1; @@ -244,55 +5746,292 @@ void KerParMatMulSxSy_fp16(KerMatMul_fp16_T *Arg) F16 * __restrict__ Bias = Arg->Bias; F16 * __restrict__ Out = Arg->Out; unsigned int W_Out = Arg->W_Out; - int Pi = Arg->OutFirstCol; - F16 *BufferColIn2 = Arg->BufferColIn2; - int Wi = Arg->W, Hi = Arg->H; - int Sx = Arg->Sx, Sy = Arg->Sy; + unsigned int OutFirstCol = Arg->OutFirstCol; int ColFirst = Arg->ColFirst; unsigned int H_In2 = W_In1; unsigned int H_Out = H_In1; + unsigned int Line, Col, i; - int Wo = (Wi+Sx-1)/Sx, Ho = (Hi+Sy-1)/Sy; - int Oo, OffLine; - int At, F=0, L = W_In2; + unsigned int CoreId = gap_coreid(); + unsigned int ChunkCell = ChunkSize(H_In1); + unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; + + if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; + F16 * pOut = Out + (OffLine+First)*W_Out + OffCol; + for (Line=0; LineIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int W_In2 = Arg->W_In2; /* H_In2 = W_In1 by construction */ + F16 * __restrict__ Out = Arg->Out; + unsigned int W_Out = Arg->W_Out; + unsigned int OutFirstCol = Arg->OutFirstCol; + int ColFirst = Arg->ColFirst; + unsigned int H_In2 = W_In1; + unsigned int H_Out = H_In1; unsigned int Line, Col, i; - F16V *VBuff = (F16V *) BufferColIn2; unsigned int CoreId = gap_coreid(); unsigned int ChunkCell = ChunkSize(H_In1); unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); - unsigned int Ci = ChunkSize(H_In2), Fi = CoreId*Ci, Li = Min(H_In2, Fi+Ci); + unsigned int Iter = (Last>First)?(Last-First):0; + int OffLine = 0, OffCol = 0; - At=0; OffLine=0; Oo=0; - if (ColFirst) OffLine=Pi; else Oo=Pi; - while (L>0) { - for (i=Fi;iBufferColIn2; int Wi = Arg->W, Hi = Arg->H; int Sx = Arg->Sx, Sy = Arg->Sy; - F16 LB = (F16) 0.0; int ColFirst = Arg->ColFirst; unsigned int H_In2 = W_In1; @@ -345,7 +6083,7 @@ void KerParMatMulSxSyReLU_fp16(KerMatMul_fp16_T *Arg) } F16 s = S[0]+S[1]; for (i=(W_In1/4)*4; iW, Hi = Arg->H; int Sx = Arg->Sx, Sy = Arg->Sy; F16 LB = (F16) 0.0; - F16 UB = Arg->UB; int ColFirst = Arg->ColFirst; unsigned int H_In2 = W_In1; @@ -412,7 +6149,7 @@ void KerParMatMulSxSyReLUN_fp16(KerMatMul_fp16_T *Arg) } F16 s = S[0]+S[1]; for (i=(W_In1/4)*4; iIn1; unsigned int W_In1 = Arg->W_In1; unsigned int H_In1 = Arg->H_In1; @@ -438,41 +6179,57 @@ void KerParMatMulSigmoid_fp16(KerMatMul_fp16_T *Arg) F16 * __restrict__ Bias = Arg->Bias; F16 * __restrict__ Out = Arg->Out; unsigned int W_Out = Arg->W_Out; - unsigned int OutFirstCol = Arg->OutFirstCol; + int Pi = Arg->OutFirstCol; F16 *BufferColIn2 = Arg->BufferColIn2; + int Wi = Arg->W, Hi = Arg->H; + int Sx = Arg->Sx, Sy = Arg->Sy; + F16 LB = (F16) 0.0; + F16 UB = Arg->UB; int ColFirst = Arg->ColFirst; unsigned int H_In2 = W_In1; unsigned int H_Out = H_In1; + + int Wo = (Wi+Sx-1)/Sx, Ho = (Hi+Sy-1)/Sy; + int Oo, OffLine; + int At, F=0, L = W_In2; + unsigned int Line, Col, i; F16V *VBuff = (F16V *) BufferColIn2; unsigned int CoreId = gap_coreid(); unsigned int ChunkCell = ChunkSize(H_In1); unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); - unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); - int OffLine = 0, OffCol = 0; + unsigned int Ci = ChunkSize(H_In2), Fi = CoreId*Ci, Li = Min(H_In2, Fi+Ci); - if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; Col0) { + for (i=Fi;iIn1; unsigned int W_In1 = Arg->W_In1; unsigned int H_In1 = Arg->H_In1; @@ -551,41 +6312,56 @@ void KerParMatMulSwish_fp16(KerMatMul_fp16_T *Arg) F16 * __restrict__ Bias = Arg->Bias; F16 * __restrict__ Out = Arg->Out; unsigned int W_Out = Arg->W_Out; - unsigned int OutFirstCol = Arg->OutFirstCol; + int Pi = Arg->OutFirstCol; F16 *BufferColIn2 = Arg->BufferColIn2; + int Wi = Arg->W, Hi = Arg->H; + int Sx = Arg->Sx, Sy = Arg->Sy; int ColFirst = Arg->ColFirst; + F16 Offset = Arg->UB; unsigned int H_In2 = W_In1; unsigned int H_Out = H_In1; + + int Wo = (Wi+Sx-1)/Sx, Ho = (Hi+Sy-1)/Sy; + int Oo, OffLine; + int At, F=0, L = W_In2; + unsigned int Line, Col, i; F16V *VBuff = (F16V *) BufferColIn2; unsigned int CoreId = gap_coreid(); unsigned int ChunkCell = ChunkSize(H_In1); unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); - unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); - int OffLine = 0, OffCol = 0; + unsigned int Ci = ChunkSize(H_In2), Fi = CoreId*Ci, Li = Min(H_In2, Fi+Ci); - if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; Col0) { + for (i=Fi;iIn1; unsigned int W_In1 = Arg->W_In1; unsigned int H_In1 = Arg->H_In1; @@ -664,38 +6444,51 @@ void KerParMatMulTanh_fp16(KerMatMul_fp16_T *Arg) F16 * __restrict__ Bias = Arg->Bias; F16 * __restrict__ Out = Arg->Out; unsigned int W_Out = Arg->W_Out; - unsigned int OutFirstCol = Arg->OutFirstCol; + int Pi = Arg->OutFirstCol; F16 *BufferColIn2 = Arg->BufferColIn2; + int Wi = Arg->W, Hi = Arg->H; + int Sx = Arg->Sx, Sy = Arg->Sy; int ColFirst = Arg->ColFirst; unsigned int H_In2 = W_In1; unsigned int H_Out = H_In1; + + int Wo = (Wi+Sx-1)/Sx, Ho = (Hi+Sy-1)/Sy; + int Oo, OffLine; + int At, F=0, L = W_In2; + unsigned int Line, Col, i; F16V *VBuff = (F16V *) BufferColIn2; unsigned int CoreId = gap_coreid(); unsigned int ChunkCell = ChunkSize(H_In1); unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); - unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); - int OffLine = 0, OffCol = 0; + unsigned int Ci = ChunkSize(H_In2), Fi = CoreId*Ci, Li = Min(H_In2, Fi+Ci); - if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; Col0) { + for (i=Fi;iIn1; unsigned int W_In1 = Arg->W_In1; unsigned int H_In1 = Arg->H_In1; @@ -778,41 +6574,55 @@ void KerParMatMulLeakyrelu_fp16(KerMatMul_fp16_T *Arg) F16 * __restrict__ Bias = Arg->Bias; F16 * __restrict__ Out = Arg->Out; unsigned int W_Out = Arg->W_Out; - unsigned int OutFirstCol = Arg->OutFirstCol; + int Pi = Arg->OutFirstCol; F16 *BufferColIn2 = Arg->BufferColIn2; + int Wi = Arg->W, Hi = Arg->H; + int Sx = Arg->Sx, Sy = Arg->Sy; int ColFirst = Arg->ColFirst; unsigned int H_In2 = W_In1; unsigned int H_Out = H_In1; + + int Wo = (Wi+Sx-1)/Sx, Ho = (Hi+Sy-1)/Sy; + int Oo, OffLine; + int At, F=0, L = W_In2; + unsigned int Line, Col, i; F16V *VBuff = (F16V *) BufferColIn2; unsigned int CoreId = gap_coreid(); unsigned int ChunkCell = ChunkSize(H_In1); unsigned int First = CoreId*ChunkCell, Last = Min(H_In1, First+ChunkCell); - unsigned int C = ChunkSize(H_In2), F = CoreId*C, L = Min(H_In2, F+C); - int OffLine = 0, OffCol = 0; + unsigned int Ci = ChunkSize(H_In2), Fi = CoreId*Ci, Li = Min(H_In2, Fi+Ci); - if (ColFirst) OffLine = OutFirstCol; else OffCol = OutFirstCol; - for (Col=0; Col0) { + for (i=Fi;iIn1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int H_In2 = Arg->W_In2; + unsigned int W_In2 = W_In1; + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(H_In2), First = Chunk*CoreId, Last = Min(First+Chunk, H_In2); + // for (int l2=0; l2In1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int H_In2 = Arg->W_In2; + unsigned int W_In2 = W_In1; + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + F16 Offset = Arg->UB; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(H_In2), First = Chunk*CoreId, Last = Min(First+Chunk, H_In2); + // for (int l2=0; l2In1; + unsigned int W_In1 = Arg->W_In1; + unsigned int H_In1 = Arg->H_In1; + F16 * __restrict__ In2 = Arg->In2; + unsigned int H_In2 = Arg->W_In2; + unsigned int W_In2 = W_In1; + F16 * __restrict__ Bias = Arg->Bias; + F16 * __restrict__ Out = Arg->Out; + + unsigned int CoreId = gap_coreid(), Chunk = ChunkSize(H_In2), First = Chunk*CoreId, Last = Min(First+Chunk, H_In2); + // for (int l2=0; l2(float)(b)[0])?((float)(a)[0]):((float)(b)[0]), \ + #define MaxF2(a, b) ((v2h) {((float)(a)[0]>(float)(b)[0])?((float)(a)[0]):((float)(b)[0]), \ ((float)(a)[1]>(float)(b)[1])?((float)(a)[1]):((float)(b)[1])}) #define Absv2h AbsF2 #define Absv2ah AbsF2 diff --git a/tools/autotiler_v3/DSP_Libraries/LUT_Tables/gen_scripts/GenMFCCLUT.py b/tools/autotiler_v3/DSP_Libraries/LUT_Tables/gen_scripts/GenMFCCLUT.py index c37369e8f..6581ab8ef 100644 --- a/tools/autotiler_v3/DSP_Libraries/LUT_Tables/gen_scripts/GenMFCCLUT.py +++ b/tools/autotiler_v3/DSP_Libraries/LUT_Tables/gen_scripts/GenMFCCLUT.py @@ -1,3 +1,4 @@ +#!/usr/bin/python import json import numpy as np import math @@ -10,7 +11,7 @@ def array_to_def_c_file(arr, name, data_type, size, elem_in_rows=2): # Window Out_str += "PI_L2 {} {}[{}] = {{\n\t".format(data_type, name, size) for i, elem in enumerate(arr): - Out_str += str(elem) + ", " + Out_str += f"{elem:>6}, " if (i+1)%elem_in_rows == 0: Out_str += "\n\t" Out_str += "\n}; \n" @@ -34,6 +35,8 @@ def create_parser(): help="step in number of samples between two consecutive frames") parser.add_argument('--win_func', default="hanning", type=str, help="numpy window function (e.g. hanning)") + parser.add_argument('--gen_inv', action="store_true", + help="generate the inverse window lut") parser.add_argument('--n_fft', default=None, type=int, help="number of fft bins") parser.add_argument('--fmin', default=20.0, type=float, @@ -84,6 +87,7 @@ def main(): frame_size = args.frame_size if not "frame_size" in models_params else models_params["frame_size"] frame_step = args.frame_step if not "frame_step" in models_params else models_params["frame_step"] window_fn = args.win_func if not "win_func" in models_params else models_params["win_func"] + gen_inv = args.gen_inv if not "gen_inv" in models_params else models_params["gen_inv"] name_suffix = args.name_suffix if not "name_suffix" in models_params else models_params["name_suffix"] n_fft = args.n_fft if not "n_fft" in models_params else models_params["n_fft"] @@ -117,10 +121,22 @@ def main(): print(lut_dtype, name_suffix, n_fft_int) win_func = getattr(np, window_fn) + win_lut = win_func(frame_size) if lut_dtype == "int": - Window = (win_func(frame_size) * 2**(15)).astype(np.int16) + Window = (win_lut * 2**(15)).astype(np.int16) else: - Window = win_func(frame_size).astype(np.float16) + Window = win_lut.astype(np.float32) + + if gen_inv: + inv_win_lut = win_lut / (win_lut ** 2 + 1e-8) + if lut_dtype == "int": + base, exp = np.frexp(inv_win_lut) + InvWindow = np.empty(base.size + exp.size) + InvWindow[0::2] = np.round(base*2**8).astype(np.uint8) + InvWindow[1::2] = exp.astype(np.uint8) + InvWindow = InvWindow.astype(np.int32) + else: + InvWindow = inv_win_lut.astype(np.float32) Twiddles_cos, Twiddles_sin = SetupTwiddlesLUT(n_fft_int, dtype=lut_dtype) if round(math.log(n_fft_int, 4)) == math.log(n_fft_int, 4): @@ -144,6 +160,11 @@ def main(): ################################ WRITE TO FILE ####################################### Out_str = array_to_def_c_file(Window, f"WindowLUT{name_suffix}", data_type, frame_size, elem_in_rows=12) + if gen_inv: + if dtype == "int": + Out_str += array_to_def_c_file(InvWindow, f"InvWindowLUT{name_suffix}", "unsigned char", 2*frame_size, elem_in_rows=12) + else: + Out_str += array_to_def_c_file(InvWindow, f"InvWindowLUT{name_suffix}", data_type, frame_size, elem_in_rows=12) if round(math.log(n_fft_int, 4)) == math.log(n_fft_int, 4) and not dtype == "fix32_scal": Out_str += array_to_def_c_file(SwapTableR4.astype(np.int16), f"SwapTable{name_suffix}", "short int", n_fft_int, elem_in_rows=2) @@ -155,22 +176,22 @@ def main(): # only rad2 for fix32_scale Out_str += "PI_L2 {} TwiddlesLUT{}[{}] = {{\n".format(data_type, name_suffix, 2*len(Twiddles_cosR2)) for i in range(len(Twiddles_cosR2)): - Out_str += "\t {}, {}, \n".format(Twiddles_cosR2[i], Twiddles_sinR2[i]) + Out_str += "\t {:>6}, {:>6}, \n".format(Twiddles_cosR2[i], Twiddles_sinR2[i]) Out_str += "\n};\n\n" else: if round(math.log(n_fft_int, 4)) == math.log(n_fft_int, 4): Out_str += "PI_L2 {} TwiddlesLUT{}[{}] = {{\n".format(data_type, name_suffix, 2*len(Twiddles_cosR4)) for i in range(len(Twiddles_cosR4)): - Out_str += "\t {}, {}, \n".format(Twiddles_cosR4[i], Twiddles_sinR4[i]) + Out_str += "\t {:>6}, {:>6}, \n".format(Twiddles_cosR4[i], Twiddles_sinR4[i]) Out_str += "\n};\n\n" else: Out_str += "PI_L2 {} TwiddlesLUT{}[{}] = {{\n".format(data_type, name_suffix, 2*len(Twiddles_cosR2)) for i in range(len(Twiddles_cosR2)): - Out_str += "\t {}, {}, \n".format(Twiddles_cosR2[i], Twiddles_sinR2[i]) + Out_str += "\t {:>6}, {:>6}, \n".format(Twiddles_cosR2[i], Twiddles_sinR2[i]) Out_str += "\n};\n\n" Out_str += "PI_L2 {} RFFTTwiddlesLUT{}[{}] = {{\n".format(data_type, name_suffix, 2*len(RFFTTwiddles_real)) for i in range(len(RFFTTwiddles_real)): - Out_str += "\t {}, {}, \n".format(RFFTTwiddles_real[i], RFFTTwiddles_imag[i]) + Out_str += "\t {:>6}, {:>6}, \n".format(RFFTTwiddles_real[i], RFFTTwiddles_imag[i]) Out_str += "\n};\n\n" # DCT diff --git a/tools/autotiler_v3/DSP_Libraries/LUT_Tables/gen_scripts/GenWinLUT.py b/tools/autotiler_v3/DSP_Libraries/LUT_Tables/gen_scripts/GenWinLUT.py index 4eeae212c..41d92c6c4 100644 --- a/tools/autotiler_v3/DSP_Libraries/LUT_Tables/gen_scripts/GenWinLUT.py +++ b/tools/autotiler_v3/DSP_Libraries/LUT_Tables/gen_scripts/GenWinLUT.py @@ -1,3 +1,4 @@ +#!/usr/bin/python import os import json import numpy as np @@ -18,6 +19,8 @@ def create_parser(): help="numpy window function (e.g. hanning)") parser.add_argument('--frame_size', required="--params_json" not in sys.argv, type=int, help="size in number of samples of one frame") + parser.add_argument('--gen_inv', action="store_true", + help="generate the inverse window lut") parser.add_argument('--dtype', default="int") return parser @@ -35,6 +38,7 @@ def main(): win_lut_file = args.win_lut_file if not "win_lut_file" in models_params else models_params["win_lut_file"] frame_size = args.frame_size if not "frame_size" in models_params else models_params["frame_size"] window_fn = args.win_func if not "win_func" in models_params else models_params["win_func"] + gen_inv = args.gen_inv if not "gen_inv" in models_params else models_params["gen_inv"] dtype = args.dtype if not "dtype" in models_params else models_params["dtype"] if dtype == "int": @@ -48,10 +52,24 @@ def main(): print(dtype) win_func = getattr(np, window_fn) + win_lut = win_func(frame_size) if dtype == "int": - Window = (win_func(frame_size) * 2**(15)).astype(np.int16) + Window = (win_lut * 2**(15)).astype(np.int16) else: - Window = win_func(frame_size).astype(np.float16) + Window = win_lut.astype(np.float32) + + if gen_inv: + inv_win_lut = win_lut / (win_lut ** 2 + 1e-8) + if dtype == "int": + base, exp = np.frexp(inv_win_lut) + InvWindow = np.empty(base.size + exp.size) + InvWindow[0::2] = base.astype(np.uint8) + InvWindow[1::2] = exp.astype(np.int8) + print(InvWindow) + InvWindow = InvWindow.astype(np.int32) + else: + InvWindow = inv_win_lut.astype(np.float32) + ################################ WRITE TO FILE ####################################### Out_str = "" @@ -64,6 +82,18 @@ def main(): Out_str += "\n\t" Out_str += "\n}; \n" + if gen_inv: + win_name = "Inv" + os.path.splitext(os.path.split(win_lut_file)[1])[0] + if dtype == "int": + data_type = "unsigned char" + frame_size *= 2 + Out_str += f"PI_L2 {data_type} {win_name}[{frame_size}] = {{\n\t" + for i, elem in enumerate(InvWindow): + Out_str += str(elem) + ", " + if (i+1)%12 == 0: + Out_str += "\n\t" + Out_str += "\n}; \n" + with open(win_lut_file, 'w') as f: f.write(Out_str) diff --git a/tools/autotiler_v3/DSP_Libraries/PreProcessing.c b/tools/autotiler_v3/DSP_Libraries/PreProcessing.c index 2eb7d8dca..8d39cca00 100644 --- a/tools/autotiler_v3/DSP_Libraries/PreProcessing.c +++ b/tools/autotiler_v3/DSP_Libraries/PreProcessing.c @@ -162,6 +162,30 @@ void PreEmphasis_f32(PreEmphasis_f32_T *Arg) #endif } +void InvWindowing_Fix16(Windowing_T *Arg) +{ + short int *__restrict__ Frame = (short int *) Arg->Frame; + short int *__restrict__ OutFrame = (short int *) Arg->OutFrame; + unsigned char *__restrict__ InvWindow = (unsigned char *) Arg->Window; + int FrameSize = Arg->FrameSize; + int FFT_Dim = Arg->FFT_Dim; + unsigned int i, Chunk, First, Last, CoreId=gap_coreid(); + Chunk = ChunkSize(FrameSize); + First = CoreId*Chunk; Last = Min(First + Chunk, FrameSize); + + for (i=First; i 0) OutFrame[i] = (Frame[i] * InvSample) >> (+Shift); + else OutFrame[i] = (Frame[i] * InvSample) << (-Shift); + } + gap_waitbarrier(0); +#ifdef PRINTDEB + if (CoreId==0) { + printf("out_window_c = np.array([\n\t\t"); for(int i=0; iFrame; diff --git a/tools/autotiler_v3/Emulation/at_api_emul.h b/tools/autotiler_v3/Emulation/at_api_emul.h index 90a962bdb..ce57b8ecf 100644 --- a/tools/autotiler_v3/Emulation/at_api_emul.h +++ b/tools/autotiler_v3/Emulation/at_api_emul.h @@ -416,6 +416,116 @@ static inline void __at_qspiflash_fs_copy_2d(FILE *file, unsigned int ext, void #define AT_QSPIFLASH_FS_CL_WAIT(file,event) +/* + * EMRAMflash + */ + +#define AT_EMRAMFLASH_TYPE 1 + +typedef int AT_EMRAMFLASH_CONF_T; +typedef int AT_EMRAMFLASH_T; +typedef int AT_EMRAMFLASH_EXT_ADDR_TYPE; +typedef int AT_EMRAMFLASH_LOC_ADDR_TYPE; +typedef int AT_EMRAMFLASH_EVENT; + +#define AT_EMRAMFLASH_EXT2LOC 0 +#define AT_EMRAMFLASH_LOC2EXT 1 + +// TODO not yet supported +#define AT_EMRAMFLASH_CONF_INIT(dev,type,name) + +// TODO not yet supported +#define AT_EMRAMFLASH_OPEN(dev,conf,err) + +// TODO not yet supported +#define AT_EMRAMFLASH_CLOSE(dev) + +// TODO not yet supported +#define AT_EMRAMFLASH_COPY(dev,ext,loc,size,dir,event) + +// TODO not yet supported +#define AT_EMRAMFLASH_COPY2D(dev,ext,loc,size,stride,len,dir,event) + +// TODO not yet supported +#define AT_EMRAMFLASH_WAIT(dev,event) + + + +/* + * EMRAMflash FS + */ + +#define AT_EMRAMFLASH_FS_TYPE 1 + +typedef int AT_EMRAMFLASH_FS_CONF_T; +typedef FILE* AT_EMRAMFLASH_FS_T; +typedef unsigned int AT_EMRAMFLASH_FS_EXT_ADDR_TYPE; +typedef void * AT_EMRAMFLASH_FS_INT_ADDR_TYPE; +typedef int AT_EMRAMFLASH_FS_FC_EVENT; +typedef int AT_EMRAMFLASH_FS_CL_EVENT; + +#define AT_EMRAMFLASH_FS_EXT2LOC 0 +#define AT_EMRAMFLASH_FS_LOC2EXT 1 + +static inline void __at_emramflash_fs_copy(FILE *file, unsigned int ext, void *loc, int size, int dir) +{ + fseek(file, ext, SEEK_SET); + if (dir==AT_EMRAMFLASH_FS_EXT2LOC) { + fwrite(loc, 1, size, file); __L3_Read += size; + } else { + fread(loc, 1, size, file); __L3_Write += size; + } +} + +static inline void __at_emramflash_fs_copy_2d(FILE *file, unsigned int ext, void *loc, int size, int stride, int length, int dir) +{ + int Chunk; + for (Chunk=0; Chunk size) + length = size; + + fseek(file, ext, SEEK_SET); + if (dir==AT_EMRAMFLASH_FS_EXT2LOC) fread(loc, 1, length, file); + else fwrite(loc, 1, length, file); + + loc = ((char *)loc) + length; + ext += stride; + } +} + + +#define AT_EMRAMFLASH_FS_CONF_INIT(dev,type,name) + +#define AT_EMRAMFLASH_FS_OPEN(file,conf,filename,err) \ + do { *(file) = fopen(filename, "r"); *(err) = *(file) == NULL; } while(0) + +#define AT_EMRAMFLASH_FS_OPEN_WRITE(file,conf,filename,err) \ + do { *(file) = fopen(filename, "w"); *(err) = *(file) == NULL; } while(0) + +#define AT_EMRAMFLASH_FS_OPEN_SET_SIZE(file, size) + +#define AT_EMRAMFLASH_FS_CLOSE(file) \ + fclose(*file) + +#define AT_EMRAMFLASH_FS_FC_COPY(file,ext,loc,size,dir,event) \ + __at_emramflash_fs_copy(*(file), ext, loc, size, dir) + +#define AT_EMRAMFLASH_FS_FC_COPY2D(file, dev,ext,loc,size,stride,len,dir,event) \ + __at_emramflash_fs_copy_2d(*(file), ext, loc, size, stride, len, dir) + +#define AT_EMRAMFLASH_FS_FC_WAIT(file,event) + +#define AT_EMRAMFLASH_FS_CL_COPY(file,ext,loc,size,dir,event) \ + __at_emramflash_fs_copy(*(file), ext, loc, size, dir) + +#define AT_EMRAMFLASH_FS_CL_COPY2D(file, dev,ext,loc,size,stride,len,dir,event) \ + __at_emramflash_fs_copy_2d(*(file), ext, loc, size, stride, len, dir) + +#define AT_EMRAMFLASH_FS_CL_WAIT(file,event) + + + /* * DMA */ diff --git a/tools/autotiler_v3/Emulation/at_api_pmsis.h b/tools/autotiler_v3/Emulation/at_api_pmsis.h index 23ee587d9..733992315 100644 --- a/tools/autotiler_v3/Emulation/at_api_pmsis.h +++ b/tools/autotiler_v3/Emulation/at_api_pmsis.h @@ -22,6 +22,9 @@ #include "bsp/ram/spiram.h" #include "bsp/flash/hyperflash.h" #include "bsp/flash/spiflash.h" +#ifdef __GAP9__ +#include "bsp/flash/mram.h" +#endif #include "bsp/fs.h" @@ -460,7 +463,143 @@ static inline void __at_qspiflash_fs_close(AT_QSPIFLASH_FS_T *file) #define AT_QSPIFLASH_FS_CL_WAIT(file,event) \ pi_cl_fs_wait(event) +#ifdef __GAP9__ + +/* + * EMRAM + */ + +#define AT_EMRAMFLASH_TYPE 1 + +typedef struct pi_mram_conf AT_EMRAMFLASH_CONF_T; +typedef struct pi_device AT_EMRAMFLASH_T; +typedef uint32_t AT_EMRAMFLASH_EXT_ADDR_TYPE; +typedef void * AT_EMRAMFLASH_LOC_ADDR_TYPE; +typedef pi_cl_ram_req_t AT_EMRAMFLASH_EVENT; + +#define AT_EMRAMFLASH_EXT2LOC 0 +#define AT_EMRAMFLASH_LOC2EXT 1 + +#define AT_EMRAMFLASH_CONF_INIT(dev,type,name) \ + pi_mram_conf_init(dev) + +#define AT_EMRAMFLASH_OPEN(dev,conf,err) \ + do { pi_open_from_conf((dev), (conf)); *(err) = pi_flash_open(dev); } while(0) + +#define AT_EMRAMFLASH_CLOSE(dev) \ + pi_flash_close(dev) + +// TODO not yet supported +#define AT_EMRAMFLASH_COPY(dev,ext,loc,size,dir,event) + +// TODO not yet supported +#define AT_EMRAMFLASH_COPY2D(dev,ext,loc,size,stride,len,dir,event) + +// TODO not yet supported +#define AT_EMRAMFLASH_WAIT(dev,event) + + +/* + * EMRAM FS + */ +#define AT_QSPIFLASH_FS_TYPE 1 + +typedef struct pi_mram_conf AT_EMRAMFLASH_FS_CONF_T; + +typedef struct +{ + struct pi_device fs; + struct pi_device emramflash; + pi_fs_file_t *file; +} AT_EMRAMFLASH_FS_T; + +typedef unsigned int AT_EMRAMFLASH_FS_EXT_ADDR_TYPE; +typedef void *AT_EMRAMFLASH_FS_INT_ADDR_TYPE; +typedef pi_task_t AT_EMRAMFLASH_FS_FC_EVENT; +typedef pi_cl_fs_req_t AT_EMRAMFLASH_FS_CL_EVENT; + +static inline void __at_emramflash_fs_open(AT_EMRAMFLASH_FS_T *file, int is_write, struct pi_fs_conf *conf, const char *filename, int *err) +{ + struct pi_mram_conf emramflash_conf; + pi_mram_conf_init(&emramflash_conf); + pi_open_from_conf(&file->emramflash, &emramflash_conf); + if (pi_flash_open(&file->emramflash)) + { + *err = -1; + return; + } + conf->flash = &file->emramflash; + if (is_write) + conf->type = PI_FS_HOST; + else + conf->type = PI_FS_READ_ONLY; + + pi_open_from_conf(&file->fs, conf); + if (pi_fs_mount(&file->fs)) + { + pi_flash_close(&file->emramflash); + *err = -1; + return; + } + file->file = pi_fs_open(&file->fs, filename, is_write ? PI_FS_FLAGS_WRITE : 0); + if (file->file == NULL) + { + pi_fs_unmount(&file->fs); + pi_flash_close(&file->emramflash); + *err = -1; + return; + } + *err = 0; + + if (is_write) + file->file->size = 3*512*1024; +} + +static inline void __at_emramflash_fs_close(AT_EMRAMFLASH_FS_T *file) +{ + pi_fs_close(file->file); + pi_fs_unmount(&file->fs); + pi_flash_close(&file->emramflash); +} + +#define AT_EMRAMFLASH_FS_EXT2LOC 0 +#define AT_EMRAMFLASH_FS_LOC2EXT 1 + +#define AT_EMRAMFLASH_FS_CONF_INIT(dev,type,name) \ + pi_fs_conf_init(dev) + +#define AT_EMRAMFLASH_FS_OPEN(file,conf,filename,err) \ + __at_emramflash_fs_open(file, 0, conf, filename, err) + +#define AT_EMRAMFLASH_FS_OPEN_WRITE(file,conf,filename,err) \ + __at_emramflash_fs_open(file, 1, conf, filename, err) + +#define AT_EMRAMFLASH_FS_OPEN_SET_SIZE(file, size) \ + file->file->size = size + +#define AT_EMRAMFLASH_FS_CLOSE(file) \ + __at_emramflash_fs_close(file) + +#define AT_EMRAMFLASH_FS_FC_COPY(fs,ext,loc,size,dir,event) \ + pi_fs_copy_async((fs)->file, ext, loc, size, !(dir), pi_task_block(event)) + +#define AT_EMRAMFLASH_FS_FC_COPY2D(file, dev,ext,loc,size,stride,len,dir,event) \ + pi_fs_copy_2d_async(file->file, ext, loc, size, stride, len, !(dir), pi_task_block(event)) + +#define AT_EMRAMFLASH_FS_FC_WAIT(file,event) \ + pi_task_wait_on(event) + +#define AT_EMRAMFLASH_FS_CL_COPY(fs,ext,loc,size,dir,event) \ + pi_cl_fs_copy((fs)->file, ext, loc, size, !(dir), event) + +#define AT_EMRAMFLASH_FS_CL_COPY2D(file, dev,ext,loc,size,stride,len,dir,event) \ + pi_cl_fs_copy_2d(file->file, ext, loc, size, stride, len, !(dir), event) + +#define AT_EMRAMFLASH_FS_CL_WAIT(file,event) \ + pi_cl_fs_wait(event) + +#endif /* * DMA diff --git a/tools/autotiler_v3/Generators/MFCC/GenLUT.py b/tools/autotiler_v3/Generators/MFCC/GenLUT.py index 6f5b813fa..0687fa9e9 100644 --- a/tools/autotiler_v3/Generators/MFCC/GenLUT.py +++ b/tools/autotiler_v3/Generators/MFCC/GenLUT.py @@ -1,3 +1,4 @@ +#!/usr/bin/python import json import numpy as np import sys @@ -150,7 +151,7 @@ def main(): Out_str += "\n\t" Out_str += "\n}; \n" - # FFT + # FFT Out_str += "PI_L2 {} TwiddlesLUT[{}] = {{\n".format(data_type, 2*len(Twiddles_cos)) for i in range(len(Twiddles_cos)): Out_str += "\t {}, {}, \n".format(Twiddles_cos[i], Twiddles_sin[i]) @@ -217,7 +218,7 @@ def main(): Out_str += "\t{{{:>4},{:>4},{:>4}}},\n".format(Start, Items, Base) HeadCoeff += Items Out_str += "};\n\n" - + Out_str += "PI_L2 {} MFCC_Coeffs[{}] = {{\n\t".format(data_type, HeadCoeff+1) for i, coeff in enumerate(MFCC_Coeff): Out_str += "{:>5}".format(str(coeff)) + ", " @@ -250,7 +251,7 @@ def main(): f.write("#define\t{:21}{:>10}\n".format("OUTPUT_MELSPECTROGRAM", 1 if out_melspectr else 0)) f.write("#define\t{:21}{:>10}\n".format("LIFTER_COEFF", lifter_coeff)) f.write("#define\t{:21}{:>10}\n".format("USE_DB", 1 if use_db else 0)) - + if __name__ == "__main__": main() diff --git a/tools/autotiler_v3/Makefile b/tools/autotiler_v3/Makefile index c6f308357..25a7ce5dd 100644 --- a/tools/autotiler_v3/Makefile +++ b/tools/autotiler_v3/Makefile @@ -1,4 +1,4 @@ -TILER_VER=4.1.0 +TILER_VER=4.2.0 export TILER_LIB=libtile.${TILER_VER}.a ifdef GAP_SDK_HOME export TILER_URL=$(GAP_SDK_HOME)/.tiler_url diff --git a/tools/autotiler_v3/version.cfg b/tools/autotiler_v3/version.cfg index 35034be40..22bf7a2cf 100644 --- a/tools/autotiler_v3/version.cfg +++ b/tools/autotiler_v3/version.cfg @@ -3,7 +3,7 @@ { "version": "autotiler-v3", "magicNum": 718930176, - "git-hash": "4619888684d5e411964f823769c2a3adfd4dc7d6" + "git-hash": "29855c78d247eb5b3b3b0758b10dfc08306d06c9" } ] } \ No newline at end of file diff --git a/tools/autotiler_v3_get/LICENSE b/tools/autotiler_v3_get/LICENSE new file mode 100644 index 000000000..e8567dbda --- /dev/null +++ b/tools/autotiler_v3_get/LICENSE @@ -0,0 +1,204 @@ +LICENSE AGREEMENT FOR USE OF THE AUTOTILER + +Definitions +“Affiliate(s)” of a person means any entity that Controls, is Controlled by, or +is under common Control with such person, where “Control” of a person or +entity (for purposes of this definition only) means the possession, directly +or indirectly, of the power to direct or cause the direction of the +management, operating policies, or assets of that person or entity, whether by +way of ownership of more than 50% of its voting or equity securities or +assets or by way of contract, management agreement, voting trust, or +otherwise. +“Authorized User(s)” means the individuals You authorize to access the Software, +including Your employees or third parties that access the Software solely on +Your behalf for Your internal and/or personal operations. +“GreenWaves Technologies” “we,” “our” or “us” means GreenWaves Technologies SAS, +a company incorporated under the laws of France, and registered with the Trade +and Companies Registry of Grenoble, under number 808 076 582, having its +principal place of business at 28 cours Jean Jaurès, 38000 Grenoble, France. +“Documentation” means the GreenWaves Technologies user or technical manuals, +specifications, privacy data sheets or other information applicable to the +Software. +“Personal Data” means any information that can be used to identify an individual +and is required in order to enable You to download the Software, i.e Your name +and email address, as well as Your company name. +“Software” means Greenwaves Technologies’ software Autotiler which is a +downloadable file enabling easier programming of GreenWaves Technologies’ GAP +products by automatic generation of code for memory tiling and transfers between +memory levels. +“You” and “Your” means the individual or legal entity downloading the Software. + +1. Delivery +The Software is deemed to be delivered and accepted by You at the date it is +made available for download by You. By downloading the Software, You agree to +be bound by the terms of this EULA. If You do not have the authority to enter +into this EULA or You do not agree with its terms, do not Use the Software and +uninstall it. + +2. Scope of the license +Subject to Your compliance with this EULA, GreenWaves Technologies grants You a +worldwide, non-exclusive and non-transferable license to use the Software and +related Documentation, as well as the code automatically generated by the +Software for memory tiling and transfers between memory levels, for Your +internal and/or personal use in accordance with the terms set forth, solely +in order to program GreenWaves Technologies’ products, or to execute or simulate +software on another system with a final objective of developing code to be used +on GreenWaves Technologies' product. GreenWaves Technologies also grants You a +worldwide, non-exclusive and non-transferable license to compile the code +automatically generated by the Software, for the exclusive purpose of being run +on a GreenWaves Technologies’ product as embedded in Your product. Free or open +source software not owned by GreenWaves Technologies is subject to separate +license terms made available with the Software Development Kit or at +https://github.com/GreenWaves-Technologies/gap_sdk. + +3. Ownership +GreenWaves Technologies retains exclusive ownership in all intellectual property +rights in and to the Software and all underlying technologies and associated +Documentation related thereto. + +4. Limitations and Restrictions +Unless expressly authorized by GreenWaves Technologies in writing or otherwise +permitted under applicable law, You shall not: +sell, resell, transfer, sublicense, or assign Your rights under this license; +modify, adapt or create derivative works; +reverse engineer, decompile, decrypt, disassemble or otherwise attempt to derive +the source code; +make the functionality available to third parties, whether as an application +service provider, or on an outsourcing, membership or subscription, rental, +service bureau, cloud service, managed or hosted service, or other similar +basis; +use Software that is licensed for the development of code to run products other +than GreenWaves Technologies’ GAP products; +remove, modify, or conceal any product identification, copyright, proprietary, +intellectual property notices or other marks from the Software and related +Documentation, as well as from the code automatically generated by the Software. + +5. Use by Authorized Users +You may allow Authorized Users to use the Software solely on Your behalf for +Your internal and/or personal operations. You are responsible for ensuring that +Authorized Users comply with the terms of this EULA and You are liable for any +breach of the same by such Authorized Users. + +6. Limited Warranty +To the extent permitted by applicable law, You expressly acknowledge and agree +that the Software, as well as the code it automatically generates, are provided +“AS-IS”, used at Your sole risk and without support or any express or implied +warranty of any kind or indemnity for any problems or issues. GreenWaves +Technologies hereby disclaims all warranties and conditions with respect to the +Software, either express, implied or statutory, including, but not limited to, +the implied warranties and/or conditions of merchantability, satisfactory +quality, fitness for a particular purpose, accuracy, quiet enjoyment, and +non-infringement of third party rights. +GreenWaves Technologies does not warrant against interference with your +enjoyment of the Software, that the functions contained in, or services +performed or provided by, the Software will meet your requirements, that the +operation of the Software will be uninterrupted or error-free, that defects in +the Software will be corrected, or that the Software will be compatible or work +with any third party software, applications or third party services other than +those expressly identified by GreenWaves Technologies. +You further acknowledge that the Software is not intended or suitable for use +in situations or environments where the failure or time delays of, or errors or +inaccuracies in, the content, data or information provided by the Software could +lead to death, personal injury, or severe physical or environmental damage, +including without limitation the operation of nuclear facilities, aircraft +navigation or communication systems, air traffic control, life support or +weapons systems. + +7. Limitations of Liability +To the extent not prohibited by applicable law, in no event shall GreenWaves +Technologies, its Affiliates, agents, employees or principals, be liable for the +following, regardless of the theory of liability or whether relating to or +arising out of this EULA, the Software or otherwise, even if a party has been +advised of the possibility of such damages: +indirect, incidental, exemplary, special or consequential damages; +loss or corruption of data or interrupted or loss of business; or +loss of revenue, profits, goodwill or anticipated sales or savings. +Some jurisdictions do not allow the exclusion or limitation of liability for +personal injury, or of incidental or consequential damages, so this limitation +may not apply to You. +To the extent permitted by applicable law, all liability of GreenWaves +Technologies, its Affiliates, agents, employees, collectively, to You, whether +based in warranty, contract, tort (including negligence), or otherwise (other +than as may be required by applicable law in cases involving personal injury), +shall not exceed, in the aggregate, the total amount of one thousand euros +(€1,000). This limitation of liability for the Software is cumulative and not +per incident. +Nothing in this EULA limits or excludes any liability that cannot be limited or +excluded under applicable law. + +8. Term and Termination +Your license begins on the date the Software is downloaded and continues until +terminated. +To the extent permitted under applicable law, GreenWaves Technologies has +the right to immediately suspend or terminate Your use of the Software if +You breach Section 2, 4 or 5 of this EULA. Upon termination of the EULA, +You must cease any further use of the Software, and destroy any copies of +Software within Your control. + +9. Personal Data +GreenWaves Technologies processes and uses Personal Data in order to enable You +to download the Software and keep a track record of the persons who are bound +by the present EULA. If You have accepted to receive news on GreenWaves +Technologies products, You will receive emails with updates, new versions and +new products available. +Your Personal Data is not sold or otherwise transmitted to any third party. It +is stored by GreenWaves Technologies for a period of 10 years further to Your +download of the Software. If You have subscribed to GreenWaves Technologies +newsletter, Your Personal Data will be stored as long as You do not unsubscribe +from this service. +GreenWaves Technologies will maintain appropriate administrative, physical and +technical safeguards, which are designed to protect the security, +confidentiality and integrity of Personal Data processed by GreenWaves +Technologies. +To the extent required by applicable law, in particular EU Regulation 2016/679 +relating to General Data Protection Rules, You may have the right to access +certain Personal Data we process, request that we update or modify such Personal +Data when inaccurate, object or restrict to our use of You Personal Data, +withdraw Your consent at any time when GreenWaves Technologies processes Your +Personal Data based on your consent, and request that we delete You Personal +Data, by writing to websales@greenwaves-technologies.com. +If You think that the way GreenWaves Technologies processes Your Personal Data +does not comply with applicable data protection laws, you can contact the +relevant competent data protection authority. You can obtain the information by +contacting EU data protection authorities at +http://ec.europa.eu/justice/article-29/structure/data-protection-authorities/index_en.htm. + +10. Export Controls +You may not use or otherwise export or re-export the Software except as +authorized by applicable laws and the laws of the jurisdictions in which the +Software was obtained. + +11. Force Majeure +Neither party will be responsible for failure of performance due to an event +that is unforeseeable and beyond the affected party’s reasonable control, +including accidents, severe weather events, acts of God, actions of any +government agency, pandemic, acts of terrorism, or the stability or availability +of the Internet or portions thereof. + +12. Complete Agreement +If any portion of this EULA is found to be void or unenforceable, the remaining +provisions of the EULA shall remain in full force and effect. Except as +expressly stated or as expressly amended in a signed agreement, the EULA is the +complete agreement between the parties with respect to the Software and +supersedes all prior or contemporaneous communications, understandings or +agreements (whether written or oral) regarding this subject matter. +To the extent permitted by applicable law, the parties agree that the English +version of the EULA will govern in the event of a conflict between it and any +version translated into another language. + + + +13. Notices +GreenWaves Technologies may provide You with notice via email and/or postings on +the GreenWaves Technologies.com website. +Notices to GreenWaves Technologies should be sent to GreenWaves Technologies, 28 +cours Jean Jaurès, 38000 GRENOBLE websales@greenwaves-technologies.com. + +14. Dispute Settlement and Governing Laws +The validation, interpretation, modification, fulfillment, and dispute +settlement of this EULA are governed by the laws of France, without regard +to conflict of law principles. If any dispute arises concerning the content or +performance of this EULA, the dispute shall be settled through amicable +settlement. In the event that the dispute cannot be settled through negotiation, +either party could submit the dispute to the French courts. + diff --git a/tools/autotiler_v3_get/Makefile b/tools/autotiler_v3_get/Makefile new file mode 100644 index 000000000..c6f308357 --- /dev/null +++ b/tools/autotiler_v3_get/Makefile @@ -0,0 +1,25 @@ +TILER_VER=4.1.0 +export TILER_LIB=libtile.${TILER_VER}.a +ifdef GAP_SDK_HOME +export TILER_URL=$(GAP_SDK_HOME)/.tiler_url +else +export TILER_URL=.tiler_url +endif + +all: Autotiler/LibTile.a + +clean: + rm -rf Autotiler/LibTile* + rm -f $(TILER_URL) + +ifeq (,$(wildcard $(TILER_URL))) +$(TILER_URL): get_tiler.py + python3 get_tiler.py +endif + +Autotiler/LibTile.a: $(TILER_URL) + mkdir -p Autotiler + rm -rf Autotiler/LibTile* + ./download_tiler.sh + +.PHONY: all clean diff --git a/tools/autotiler_v3_get/download_tiler.sh b/tools/autotiler_v3_get/download_tiler.sh new file mode 100755 index 000000000..0ca2e7b46 --- /dev/null +++ b/tools/autotiler_v3_get/download_tiler.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +if [ -z "$TILER_LICENSE_AGREED" ] +then + echo "Please read carefully the autotiler agreement before proceeding with the download." + read -n 1 -s -r -p "Press enter when you are ready to display the license." + + more LICENSE + + while [ true ] ; do + read -n 1 -p "Do you agree with the license (y/n) ? " key + + echo + + if [ "$key" == "y" ] + then + break + fi + + if [ "$key" == "n" ] + then + exit 0 + fi + + done +fi + +echo ${TILER_LIB} | wget --no-use-server-timestamps --base=`cat $TILER_URL` --input-file=- -O Autotiler/LibTile.a +if [ $? != 0 ]; then + rm $TILER_URL + rm -f Autotiler/LibTile.a + exit 1 +fi diff --git a/tools/autotiler_v3_get/get_tiler.py b/tools/autotiler_v3_get/get_tiler.py new file mode 100644 index 000000000..34f1ec57c --- /dev/null +++ b/tools/autotiler_v3_get/get_tiler.py @@ -0,0 +1,335 @@ +import requests, json, sys, re, os + +class bcolors: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + ENDC = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + +Countries = [ + ('US', 'United States'), + ('AF', 'Afghanistan'), + ('AL', 'Albania'), + ('DZ', 'Algeria'), + ('AS', 'American Samoa'), + ('AD', 'Andorra'), + ('AO', 'Angola'), + ('AI', 'Anguilla'), + ('AQ', 'Antarctica'), + ('AG', 'Antigua And Barbuda'), + ('AR', 'Argentina'), + ('AM', 'Armenia'), + ('AW', 'Aruba'), + ('AU', 'Australia'), + ('AT', 'Austria'), + ('AZ', 'Azerbaijan'), + ('BS', 'Bahamas'), + ('BH', 'Bahrain'), + ('BD', 'Bangladesh'), + ('BB', 'Barbados'), + ('BY', 'Belarus'), + ('BE', 'Belgium'), + ('BZ', 'Belize'), + ('BJ', 'Benin'), + ('BM', 'Bermuda'), + ('BT', 'Bhutan'), + ('BO', 'Bolivia'), + ('BA', 'Bosnia And Herzegowina'), + ('BW', 'Botswana'), + ('BV', 'Bouvet Island'), + ('BR', 'Brazil'), + ('BN', 'Brunei Darussalam'), + ('BG', 'Bulgaria'), + ('BF', 'Burkina Faso'), + ('BI', 'Burundi'), + ('KH', 'Cambodia'), + ('CM', 'Cameroon'), + ('CA', 'Canada'), + ('CV', 'Cape Verde'), + ('KY', 'Cayman Islands'), + ('CF', 'Central African Rep'), + ('TD', 'Chad'), + ('CL', 'Chile'), + ('CN', 'China'), + ('CX', 'Christmas Island'), + ('CC', 'Cocos Islands'), + ('CO', 'Colombia'), + ('KM', 'Comoros'), + ('CG', 'Congo'), + ('CK', 'Cook Islands'), + ('CR', 'Costa Rica'), + ('CI', 'Cote D`ivoire'), + ('HR', 'Croatia'), + ('CU', 'Cuba'), + ('CY', 'Cyprus'), + ('CZ', 'Czech Republic'), + ('DK', 'Denmark'), + ('DJ', 'Djibouti'), + ('DM', 'Dominica'), + ('DO', 'Dominican Republic'), + ('TP', 'East Timor'), + ('EC', 'Ecuador'), + ('EG', 'Egypt'), + ('SV', 'El Salvador'), + ('GQ', 'Equatorial Guinea'), + ('ER', 'Eritrea'), + ('EE', 'Estonia'), + ('ET', 'Ethiopia'), + ('FK', 'Falkland Islands (Malvinas)'), + ('FO', 'Faroe Islands'), + ('FJ', 'Fiji'), + ('FI', 'Finland'), + ('FR', 'France'), + ('GF', 'French Guiana'), + ('PF', 'French Polynesia'), + ('TF', 'French S. Territories'), + ('GA', 'Gabon'), + ('GM', 'Gambia'), + ('GE', 'Georgia'), + ('DE', 'Germany'), + ('GH', 'Ghana'), + ('GI', 'Gibraltar'), + ('GR', 'Greece'), + ('GL', 'Greenland'), + ('GD', 'Grenada'), + ('GP', 'Guadeloupe'), + ('GU', 'Guam'), + ('GT', 'Guatemala'), + ('GN', 'Guinea'), + ('GW', 'Guinea-bissau'), + ('GY', 'Guyana'), + ('HT', 'Haiti'), + ('HN', 'Honduras'), + ('HK', 'Hong Kong'), + ('HU', 'Hungary'), + ('IS', 'Iceland'), + ('IN', 'India'), + ('ID', 'Indonesia'), + ('IR', 'Iran'), + ('IQ', 'Iraq'), + ('IE', 'Ireland'), + ('IL', 'Israel'), + ('IT', 'Italy'), + ('JM', 'Jamaica'), + ('JP', 'Japan'), + ('JO', 'Jordan'), + ('KZ', 'Kazakhstan'), + ('KE', 'Kenya'), + ('KI', 'Kiribati'), + ('KP', 'Korea (North)'), + ('KR', 'Korea (South)'), + ('KW', 'Kuwait'), + ('KG', 'Kyrgyzstan'), + ('LA', 'Laos'), + ('LV', 'Latvia'), + ('LB', 'Lebanon'), + ('LS', 'Lesotho'), + ('LR', 'Liberia'), + ('LY', 'Libya'), + ('LI', 'Liechtenstein'), + ('LT', 'Lithuania'), + ('LU', 'Luxembourg'), + ('MO', 'Macau'), + ('MK', 'Macedonia'), + ('MG', 'Madagascar'), + ('MW', 'Malawi'), + ('MY', 'Malaysia'), + ('MV', 'Maldives'), + ('ML', 'Mali'), + ('MT', 'Malta'), + ('MH', 'Marshall Islands'), + ('MQ', 'Martinique'), + ('MR', 'Mauritania'), + ('MU', 'Mauritius'), + ('YT', 'Mayotte'), + ('MX', 'Mexico'), + ('FM', 'Micronesia'), + ('MD', 'Moldova'), + ('MC', 'Monaco'), + ('MN', 'Mongolia'), + ('MS', 'Montserrat'), + ('MA', 'Morocco'), + ('MZ', 'Mozambique'), + ('MM', 'Myanmar'), + ('NA', 'Namibia'), + ('NR', 'Nauru'), + ('NP', 'Nepal'), + ('NL', 'Netherlands'), + ('AN', 'Netherlands Antilles'), + ('NC', 'New Caledonia'), + ('NZ', 'New Zealand'), + ('NI', 'Nicaragua'), + ('NE', 'Niger'), + ('NG', 'Nigeria'), + ('NU', 'Niue'), + ('NF', 'Norfolk Island'), + ('MP', 'Northern Mariana Islands'), + ('NO', 'Norway'), + ('OM', 'Oman'), + ('PK', 'Pakistan'), + ('PW', 'Palau'), + ('PA', 'Panama'), + ('PG', 'Papua New Guinea'), + ('PY', 'Paraguay'), + ('PE', 'Peru'), + ('PH', 'Philippines'), + ('PN', 'Pitcairn'), + ('PL', 'Poland'), + ('PT', 'Portugal'), + ('PR', 'Puerto Rico'), + ('QA', 'Qatar'), + ('RE', 'Reunion'), + ('RO', 'Romania'), + ('RU', 'Russian Federation'), + ('RW', 'Rwanda'), + ('KN', 'Saint Kitts And Nevis'), + ('LC', 'Saint Lucia'), + ('VC', 'St Vincent/Grenadines'), + ('WS', 'Samoa'), + ('SM', 'San Marino'), + ('ST', 'Sao Tome'), + ('SA', 'Saudi Arabia'), + ('SN', 'Senegal'), + ('SC', 'Seychelles'), + ('SL', 'Sierra Leone'), + ('SG', 'Singapore'), + ('SK', 'Slovakia'), + ('SI', 'Slovenia'), + ('SB', 'Solomon Islands'), + ('SO', 'Somalia'), + ('ZA', 'South Africa'), + ('ES', 'Spain'), + ('LK', 'Sri Lanka'), + ('SH', 'St. Helena'), + ('PM', 'St.Pierre'), + ('SD', 'Sudan'), + ('SR', 'Suriname'), + ('SZ', 'Swaziland'), + ('SE', 'Sweden'), + ('CH', 'Switzerland'), + ('SY', 'Syrian Arab Republic'), + ('TW', 'Taiwan'), + ('TJ', 'Tajikistan'), + ('TZ', 'Tanzania'), + ('TH', 'Thailand'), + ('TG', 'Togo'), + ('TK', 'Tokelau'), + ('TO', 'Tonga'), + ('TT', 'Trinidad And Tobago'), + ('TN', 'Tunisia'), + ('TR', 'Turkey'), + ('TM', 'Turkmenistan'), + ('TV', 'Tuvalu'), + ('UG', 'Uganda'), + ('UA', 'Ukraine'), + ('AE', 'United Arab Emirates'), + ('UK', 'United Kingdom'), + ('UY', 'Uruguay'), + ('UZ', 'Uzbekistan'), + ('VU', 'Vanuatu'), + ('VA', 'Vatican City State'), + ('VE', 'Venezuela'), + ('VN', 'Viet Nam'), + ('VG', 'Virgin Islands (British)'), + ('VI', 'Virgin Islands (U.S.)'), + ('EH', 'Western Sahara'), + ('YE', 'Yemen'), + ('YU', 'Yugoslavia'), + ('ZR', 'Zaire'), + ('ZM', 'Zambia'), + ('ZW', 'Zimbabwe') +] + +def fatal_error(error): + print (bcolors.FAIL + 'FATAL ERROR: ' + str(error) + bcolors.ENDC) + sys.exit(1) + +def download_file(url): + local_filename = url.split('/')[-1] + r = requests.get(url, stream=True, timeout=3) + r.raise_for_status() + with open(local_filename, 'wb') as f: + for chunk in r.iter_content(chunk_size=1024): + if chunk: + f.write(chunk) + return local_filename + +ri = vars(__builtins__).get('raw_input',input) +print("Registration is required to load the GAP8 AutoTiler library\n") + +print("In case you have already registered, you can directly enter the link") +print("to the AutoTiler library that you received from an email.") +print("Otherwise just press Enter.") +url = ri("Enter URL from email: ") + +if url == '': + print("You will be prompted for your name, company and email address and the") + print("link for the AutoTiler libray will be sent to your email address.") + print("This information is used uniquely to keep track of AutoTiler users.") + forename = ri("Enter your first name: ") + surname = ri("Enter your last name: ") + company = ri("Enter your company name: ") + + while True: + country = ri("Enter your country: ") + country = country.upper() + matches = [] + for c in Countries: + if c[0] == country or c[1].upper() == country: + matches = [c] + break + elif c[1].upper().startswith(country): + matches.append(c) + if len(matches) == 1: + country = matches[0][0] + break + elif len(matches) > 1: + print("Do you mean:") + for c in matches: + print("{} ({})".format(c[1], c[0])) + print() + else: + print("I don't know that country. Please enter a valid country name or ISO code.") + + print("Country ", country) + + while True: + email = ri("Enter your email address: ") + if re.match(r"[^@]+@[^@]+\.[^@]+", email): + break + else: + print("Please enter a valid email address") + + url = 'https://hooks.zapier.com/hooks/catch/2624512/e6qico/' + payload = { 'forename': forename, 'surname': surname, 'company': company, 'email': email, 'country': country } + headers = { 'content-type': 'application/json' } + + print("Triggering email ... please wait") + try: + response = requests.post(url, data=json.dumps(payload), headers=headers, timeout=3) + response.raise_for_status() + except requests.exceptions.RequestException as ex: + fatal_error(ex) + + + print("Please check your email and copy and paste the URL in the email below") + print("Please keep this URL, you will ask to enter it in case you") + print("install again the SDK.") + url = ri("Enter URL from email: ") +try: + while True: + if re.match(r"^https://.*/$", url): + break + else: + print("Please enter a valid URL, it must start with https:// and") + print("end with /.") + url = ri("Enter URL from email: ") + f = open(os.environ.get('TILER_URL'),"w+") + f.write(url) + f.close() +except: + fatal_error("problem writing file " + os.environ.get('TILER_URL')) \ No newline at end of file diff --git a/tools/jenkins/gap_sdk_version.txt b/tools/jenkins/gap_sdk_version.txt index 1d7808993..642d57e4b 100644 --- a/tools/jenkins/gap_sdk_version.txt +++ b/tools/jenkins/gap_sdk_version.txt @@ -1 +1 @@ -8713401e6ac6800c34a6aa42fbd4cd09e7205c29 +c6603c58b94f3ac80ade4370c2b3c4e558f246f2 diff --git a/tools/nntool/Makefile b/tools/nntool/Makefile index 94bd5a7a3..437032eaa 100644 --- a/tools/nntool/Makefile +++ b/tools/nntool/Makefile @@ -1,5 +1,4 @@ - -NPROC := $(shell nproc) +NPROC := 4 SCHEMA_V3=schema_v3 SCHEMA_HEAD=schema SCHEMA_HEAD_NAME=schema_head @@ -26,14 +25,9 @@ build/.flatbuffers_clone: $(PACKAGES) (cd $(PACKAGES); git clone https://github.com/google/flatbuffers.git; cd flatbuffers; git checkout $(FLAT_TAG)) touch build/.flatbuffers_clone -$(FLAT_BUILD): build/.flatbuffers_clone - mkdir -p $@ - -$(FLAT_BUILD)/Makefile: $(FLAT_BUILD) - (cd $(FLAT_BUILD); cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF ..) - -$(FLAT_BUILD)/flatc: $(FLAT_BUILD)/Makefile - make -C $(FLAT_BUILD) -j$(NPROC) +$(FLAT_BUILD)/flatc: build/.flatbuffers_clone + cmake -S $(FLAT_SRC) -B $(FLAT_BUILD) -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF + cmake --build $(FLAT_BUILD) flatbuffers/__init__.py: $(FLAT_BUILD)/flatc cp -r $(FLAT_SRC)/python/flatbuffers . diff --git a/tools/nntool/execution/quantization_mode.py b/tools/nntool/execution/quantization_mode.py index 54176cecf..34fa765f5 100644 --- a/tools/nntool/execution/quantization_mode.py +++ b/tools/nntool/execution/quantization_mode.py @@ -17,6 +17,7 @@ from graph.types import Parameters from utils.node_id import NodeId + class QuantizationMode(): def __init__(self, qlevel: str = "all", qstep: Optional[Union[int, NodeId]] = None, dequantize=False): self._qlevel = qlevel @@ -56,6 +57,14 @@ def get_quantized(self, node: Parameters, step_idx: int): return node == self._qstep return step_idx == self._qstep + @property + def qlevel(self): + return self._qlevel + + @property + def qstep(self): + return self._qstep + @property def is_float_q_deq(self): return self._qlevel == "float_q_deq" @@ -80,6 +89,12 @@ def is_none(self): def dequantize(self): return (self.is_step or self.is_all) and self._dequantize + def __eq__(self, o: object) -> bool: + if isinstance(o, QuantizationMode): + return (self.qlevel == o.qlevel and self.qstep == o.qstep and + self.dequantize == o.dequantize) + return False + def __str__(self): if self.is_none or self.is_all: return self._qlevel diff --git a/tools/nntool/expressions/symbolic/assignments.py b/tools/nntool/expressions/symbolic/assignments.py new file mode 100644 index 000000000..3cadfaf6f --- /dev/null +++ b/tools/nntool/expressions/symbolic/assignments.py @@ -0,0 +1,277 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + + +from functools import reduce +from typing import Mapping + +import numpy as np +from generation.code_block import CodeBlock + +from .iteration_space import IterationSpace +from .symbol import Constant, Symbol, Variable, copy_props +from .variable_container import VariableContainerAndAssigner + + +@copy_props('var') +class Assignment(VariableContainerAndAssigner, Symbol): + def __init__(self, arg, name="", var=None, **kwargs): + if var is None: + self._var = Variable(name, shape=arg.shape, symbol_binding=arg) + else: + name = var.name + self._var = var + super(Assignment, self).__init__(arg, name=name, **kwargs) + + @property + def unbound_variables(self): + return self.contents[0].unbound_variables + + @property + def var(self): + return self._var + + def find(self, name): + for elem in [self._var, self.contents[0]]: + res = elem.find(name) + if res: + return res + return None + + @property + def var_shapes(self): + shapes = {self.name: self.contents[0].shape} + shapes.update(zip(self.contents[0].unbound_variables, self.contents[0].unbound_shapes)) + return shapes + + def _resolve(self, **kwargs): + """Given a set of substitions for variable in kwargs resolve all variables""" + return self._contents[0].resolve(**kwargs) + + def _resolve_assignment(self, substitute_all=False, **kwargs) -> Mapping[str, Symbol]: + return {self.name: self._contents[0].resolve(**kwargs)} + + def _calculate(self, calculate_ranges=False, **kwargs): + res = self._contents[0].resolve(**kwargs) + if not isinstance(res, Constant): + raise ValueError( + f"unable to calculate {self.name}") + if calculate_ranges: + self.control.add_stat(self, res.value) + return res.value + + def _calculate_assignment(self, **kwargs) -> Mapping[str, np.ndarray]: + return {self.name: self._calculate(**kwargs)} + + def c_block(self, code_block: CodeBlock = None, iteration_space: IterationSpace = None): + if code_block is None: + code_block = CodeBlock() + if iteration_space: + if self.var.name in iteration_space.temporary_variables: + code_block.write( + f"{self.var.c_expr(declare=True, dtype=self.contents[0].dtype)}" + f" = {self.contents[0].c_expr(iteration_space=iteration_space)};") + else: + code_block.write( + f"{self.var.c_expr(dtype=self.contents[0].dtype)}{iteration_space.c_index(self.var.name)}" + f" = {self.contents[0].c_expr(iteration_space=iteration_space)};") + else: + code_block.write(f'{self.var.name} = {self.contents[0].c_expr()};') + return code_block + + @property + def returned_variables(self): + return [self.name] + + @property + def shape(self): + return self._contents[0].shape + + def _py_expr(self, *args, **kwargs): + return self._contents[0].py_expr(*args, **kwargs) + + def _c_expr(self, *args, **kwargs): + return self._contents[0].c_expr(*args, **kwargs) + + def __repr__(self) -> str: + return f"{{{self.var.name} <- {self.contents[0].__repr__()}}}" + + +@copy_props('preconditions', 'returned_variables') +class Let(VariableContainerAndAssigner, Symbol): + def __init__(self, *args, preconditions=None, returned_variables=None, name="", **kwargs): + args = [Assignment(arg[1], name=arg[0]) if isinstance( + arg, tuple) else arg for arg in args] + super(Let, self).__init__(*args, name=name, **kwargs) + if preconditions is None: + preconditions = [] + else: + preconditions = [Assignment(arg[1], name=arg[0]) if isinstance( + arg, tuple) else arg for arg in preconditions] + self._preconditions = preconditions + self._returned_variables = returned_variables + +# pylint: disable=invalid-name + def In(self, *expressions): + return Let(*expressions, preconditions=[self]) + + def Return(self, *variable_names): + produced = self.produced_variables + if not all(variable in produced for variable in variable_names): + raise ValueError('not all variables are produced') + return Let(*self.contents, preconditions=self.preconditions, name=self.name, returned_variables=variable_names) + + @property + def unbound_variables(self): + resolution = self.resolve_assignment() + _vars = reduce(lambda s, x: s | set( + x.unbound_variables.values()), resolution.values(), set()) + return {var.name: var for var in _vars if var.name not in set(resolution.keys())} + + @property + def produced_variables(self): + resolution = self.resolve_assignment() + return set(resolution.keys()) + + @property + def preconditions(self): + return self._preconditions + + @property + def returned_variables(self): + return self._returned_variables + + @staticmethod + def substitute_variables(assignments): + res = {} + substitutions = {} + for var_name, val in assignments.items(): + if isinstance(val, (Constant, np.ndarray, int, float)): + substitutions[var_name] = val + else: + substitutions[var_name] = Variable(var_name, shape=val.shape) + res[var_name] = val + return res, substitutions + + def find(self, name): + for elem in list(self._preconditions) + list(self.contents): + res = elem.find(name) + if res: + return res + return None + + def _resolve_assignment(self, substitute_all=False, **kwargs) -> Mapping[str, Symbol]: + """Given a set of substitions for variable in kwargs resolve all variables - return a dictionary of variables""" + preconditions = self._resolve_contents( + contents=self._preconditions, substitute_all=substitute_all, **kwargs) + return self._resolve_contents(contents=self.contents, substitute_all=substitute_all, **preconditions) + + def _calculate_assignment(self, **kwargs) -> Mapping[str, np.ndarray]: + preconditions = self._calculate_contents( + contents=self._preconditions, **kwargs) + res = self._calculate_contents(contents=self.contents, **preconditions) + if self.returned_variables: + res = {vname: val for vname, val in res.items( + ) if vname in self.returned_variables} + return res + + @staticmethod + def _resolve_contents(contents=None, substitute_all=False, **kwargs): + if substitute_all: + substitutions = kwargs + res = kwargs + else: + res, substitutions = Let.substitute_variables(kwargs) + for elem in contents: + elem_res = elem.resolve_assignment( + substitute_all=substitute_all, **substitutions) + if substitute_all: + substitutions.update(elem_res) + res.update(elem_res) + else: + elem_res, elem_substitutions = Let.substitute_variables( + elem_res) + res.update(elem_res) + substitutions.update(elem_substitutions) + return res + + @staticmethod + def _calculate_contents(contents=None, **kwargs): + for elem in contents: + kwargs.update(elem.calculate_assignment(**kwargs)) + return kwargs + + def _resolve(self, **kwargs): + """Given a set of substitions for variable in kwargs resolve all variables - return a single symbol""" + preconditions = self._resolve_contents( + contents=self._preconditions, substitute_all=True, **kwargs) + resolution = self._resolve_contents( + contents=self.contents, substitute_all=True, **preconditions) + return Assignment(resolution[self.contents[-1].name], name=self.contents[-1].name) + + def _calculate(self, calculate_ranges=False, **kwargs): + res = self._resolve(**kwargs) + if not isinstance(res.contents[0], Constant): + raise ValueError( + f"unable to calculate {self.name}") + if calculate_ranges: + self.control.add_stat(self, res.value) + return res.contents[0].value + + @property + def var_shapes(self): + shapes = {} + for var_name, elem in self.resolve_assignment().items(): + shapes[var_name] = elem.shape + shapes.update(dict(zip(elem.unbound_variables, elem.unbound_shapes))) + return shapes + + @property + def shape(self): + return self._contents[-1].shape + + def _py_expr(self, *args, **kwargs): + return self._contents[0].py_expr(*args, **kwargs) + + def c_block(self, code_block: CodeBlock = None, iteration_space: IterationSpace = None, with_loops=False): + if code_block is None: + code_block = CodeBlock() + if with_loops: + assert iteration_space, "must have space" + for idx, _ in enumerate(iteration_space.axis_shape): + if idx in iteration_space.fixed_spaces: + continue + code_block.write(f"{iteration_space.c_for(idx)} {{") + code_block.indent() + for precondition in self.preconditions: + precondition.c_block(code_block=code_block, + iteration_space=iteration_space) + for item in self.contents: + item.c_block(code_block=code_block, + iteration_space=iteration_space) + if with_loops: + for idx, _ in enumerate(iteration_space.axis_shape): + if idx in iteration_space.fixed_spaces: + continue + code_block.deindent() + code_block.write("}") + return code_block + + def _c_expr(self, *args, **kwargs): + return self._contents[0].c_expr(*args, **kwargs) + + def __repr__(self) -> str: + return (f"Let({','.join([elem.__repr__() for elem in self.preconditions])})" + f".In({','.join([elem.__repr__() for elem in self.contents])})") diff --git a/tools/nntool/expressions/symbolic/basic.py b/tools/nntool/expressions/symbolic/basic.py index c43300ae2..c7917ff48 100644 --- a/tools/nntool/expressions/symbolic/basic.py +++ b/tools/nntool/expressions/symbolic/basic.py @@ -19,8 +19,8 @@ from scipy.special import expit from .function import Function -from .symbol import (Constant, Rational, c_headers, environment, handles, - handlesr, nargs) +from .symbol import (Constant, Rational, c_headers, copy_props, environment, + handles, handlesr, nargs) @nargs(2) @@ -77,6 +77,7 @@ def _c_expr(self, *args, **kwargs): @handles('__floordiv__', is_floor=True) @handlesr('__rdiv__') @handlesr('__rfloordiv__', is_floor=True) +@copy_props('is_floor') class Div(Function): def __init__(self, *args, is_floor=False, **kwargs) -> None: super(Div, self).__init__(*args, **kwargs) @@ -177,6 +178,18 @@ class GapAbs(Abs): def _c_expr(self, *args, **kwargs): return "gap_abs(%s)" % (args[0]) +@nargs(1) +class Round(Function): + + def _impl(self, *args, **kwargs): + return np.floor(args[0], dtype=self.dtype) + + def _py_expr(self, *args, **kwargs): + return "np.round(%s)" % args[0] + + def _c_expr(self, *args, **kwargs): + return "round(%s)" % args[0] + @nargs(1) class Floor(Function): @@ -403,11 +416,16 @@ def _c_expr(self, *args, **kwargs): @nargs(1) +@copy_props('cast_dtype') class Cast(Function): def __init__(self, *args, dtype=None, **kwargs): self._cast_dtype = dtype super().__init__(*args, dtype=dtype, **kwargs) + @property + def cast_dtype(self): + return self._cast_dtype + def _eval(self, *args, **kwargs): if isinstance(args[0], Constant): return Constant(args[0].value.astype(self._cast_dtype)) @@ -469,7 +487,7 @@ def _impl(self, *args, **kwargs): raise ValueError('should not be called') def _py_expr(self, *args, **kwargs): - return self._inner_function.py_expr + return self._inner_function.py_expr(*args, **kwargs) def _c_expr(self, *args, **kwargs): return self._inner_function.c_expr(*args, **kwargs) @@ -490,12 +508,21 @@ def _eval(self, *args, **kwargs): @nargs(1) +@copy_props('upper_bound', 'lower_bound') class Relu(CompoundFunction): def __init__(self, *args, upper_bound=None, lower_bound=0, **kwargs): self._upper_bound = upper_bound self._lower_bound = lower_bound super().__init__(*args, **kwargs) + @property + def upper_bound(self): + return self._upper_bound + + @property + def lower_bound(self): + return self._lower_bound + def _eval(self, *args, **kwargs): if self._upper_bound is not None: if self._lower_bound is not None: @@ -510,12 +537,21 @@ def _eval(self, *args, **kwargs): @nargs(1) +@copy_props('_from_qrec', '_to_qrec') class ConvertFloatScaled(CompoundFunction): def __init__(self, *args, from_qrec=None, to_qrec=None, **kwargs): self._from_qrec = from_qrec self._to_qrec = to_qrec super().__init__(*args, **kwargs) + @property + def from_qrec(self): + return self._from_qrec + + @property + def to_qrec(self): + return self._to_qrec + def _eval_float_to_quant(self, *args, **kwargs): raise NotImplementedError() diff --git a/tools/nntool/expressions/symbolic/function.py b/tools/nntool/expressions/symbolic/function.py index 9068257a3..e09fabecb 100644 --- a/tools/nntool/expressions/symbolic/function.py +++ b/tools/nntool/expressions/symbolic/function.py @@ -17,27 +17,26 @@ import numpy as np from .symbol import Constant, Symbol, Variable, environment +from .variable_container import VariableContainer @environment({'np': np}) -class Function(Symbol): +class Function(VariableContainer, Symbol): - def __init__(self, *args, **kwargs): + def __init__(self, *args, props=None, q=None, **kwargs): super(Function, self).__init__(*args, **kwargs) - self.unbound_variables = self._init_unbound_variables(*args) - self._q = None + self._q = q + if props is None: + props = {} + self._props = props @property - def q(self): - return self._q + def props(self): + return self._props @property - def unbound_variables(self): - return self._unbound_variables - - @unbound_variables.setter - def unbound_variables(self, val): - self._unbound_variables = val + def q(self): + return self._q @property def variable_quantization(self): @@ -52,52 +51,35 @@ def ops(self): ops = sum(sym.ops for sym in self._contents) return ops + 1 - @staticmethod - def _init_unbound_variables(*args): - unbound_variables = {} - for arg in args: - if isinstance(arg, Variable): - if arg.name in unbound_variables: - if unbound_variables[arg.name] != arg: - raise ValueError('there is more than one variable called %s' % arg.name) - else: - unbound_variables[arg.name] = arg - elif isinstance(arg, Function): - unbound_variables.update(arg.unbound_variables) - elif isinstance(arg, str): - if arg in unbound_variables: - raise ValueError('there is more than one variable called %s' % arg) - else: - unbound_variables[arg] = Variable(arg) - - return unbound_variables - def _eval(self, *args, **kwargs): if all(isinstance(arg, Constant) for arg in args): val = self._impl(*[arg.value for arg in args]) if val.dtype != self.dtype: - raise ArithmeticError("Expression evaluated to incorrect dtype") + raise ArithmeticError( + "Expression evaluated to incorrect dtype") return Constant(val, dtype=val.dtype, shape=val.shape, name=self.name, qrec=self.qrec, **kwargs) - return self + return self.clone_with(*args) @property def is_constant(self): return all(sym.is_constant for sym in self._contents) + def _equivalent(self, other) -> bool: + # function is probably equivalent if it has the same class + return True + def _impl(self, *args, **kwargs): raise NotImplementedError('_impl has not been overriden') def _resolve(self, **kwargs): contents = [elem.resolve(**kwargs) for elem in self._contents] - self._contents = contents - self.unbound_variables = self._init_unbound_variables(*self._contents) - return self._eval(*self._contents, **kwargs) + return self._eval(*contents, **kwargs) def _calculate(self, calculate_ranges=False, track_results=None, **kwargs): contents = [elem.calculate(calculate_ranges=calculate_ranges, @@ -109,7 +91,8 @@ def _calculate(self, calculate_ranges=False, track_results=None, **kwargs): self.control.add_stat(self, res.value) if track_results is not None: if self.qrec is not None: - track_results[self.name] = self.qrec.dequantize(res.value.copy()) + track_results[self.name] = self.qrec.dequantize( + res.value.copy()) else: track_results[self.name] = res.value.copy() return res @@ -127,12 +110,12 @@ def call_with_constants(self, *args): @property def shape(self): if not self._shape: - self._shape = self.broadcast(*(elem.shape for elem in self._contents)) + self._shape = self.broadcast( + *(elem.shape for elem in self._contents)) return self._shape - @property - def py_expr(self) -> str: - return self._py_expr(*(arg.py_expr for arg in self._contents)) + def py_expr(self, *args, **kwargs) -> str: + return self._py_expr(*(arg.py_expr(**kwargs) for arg in self._contents), **kwargs) def _collect_globals(self) -> dict: global_dict = self.ENVIRONMENT or {} @@ -147,7 +130,7 @@ def c_expr_func(self): @property def py_compiled_lambda(self): global_dict = self.collect_globals() -#pylint: disable=eval-used +# pylint: disable=eval-used return eval(self.py_lambda, global_dict) def c_expr(self, *args, **kwargs) -> str: @@ -155,7 +138,7 @@ def c_expr(self, *args, **kwargs) -> str: @property def py_lambda(self) -> str: - return "lambda %s: %s" % (",".join("%s=None" % (var) for var in self.unbound_variables), self.py_expr) + return "lambda %s: %s" % (",".join("%s=None" % (var) for var in self.unbound_variables), self.py_expr()) def c_assignment(self, var_name) -> str: return "%s=%s;" % (var_name, self.c_expr()) diff --git a/tools/nntool/expressions/symbolic/function_collection.py b/tools/nntool/expressions/symbolic/function_collection.py index d05a3496d..d4c7e9774 100644 --- a/tools/nntool/expressions/symbolic/function_collection.py +++ b/tools/nntool/expressions/symbolic/function_collection.py @@ -31,7 +31,7 @@ class FunctionCollection(): def __init__(self, functions: Sequence[Tuple[Variable, Symbol]], qrecs=None) -> None: self._qrecs = qrecs # save map from produced variable to function - self._functions = {var: symbol for var, symbol in functions} + self._functions = {k: v for k, v in functions} # now create a map with producted variable name to free variables in function self._freevars = {var.name: set([name for name in func.unbound_variables.keys()]) for var, func in self._functions.items()} @@ -59,6 +59,9 @@ def __init__(self, functions: Sequence[Tuple[Variable, Symbol]], qrecs=None) -> raise ValueError('%s points to more than one variable' % res_symbol.name) else: self._vars[res_symbol.name] = res_symbol + self.init_indexes() + + def init_indexes(self): # iterators contains list of iterators self._iterators = None self._variable_indexes = None @@ -239,7 +242,7 @@ def create_kernel(self, parallel_iterator, fixed_iterators, code_block=None): produced_idx, execution_order, index_dependencies, depth, code_block) code_block.deindent() - code_block.write('}}') + code_block.write('}') else: produced_idx = self.produce_functions( produced_idx, execution_order, index_dependencies, 0, code_block) diff --git a/tools/nntool/expressions/symbolic/iteration_space.py b/tools/nntool/expressions/symbolic/iteration_space.py new file mode 100644 index 000000000..fe07dea7b --- /dev/null +++ b/tools/nntool/expressions/symbolic/iteration_space.py @@ -0,0 +1,299 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from functools import partial, reduce +from itertools import groupby +from operator import itemgetter +from typing import List, Sequence + +import numpy as np +from quantization.qtype import DTYPE_GAP_CTYPE + +from .symbol import Symbol +from .variable_container import VariableContainerAndAssigner + + +def split_list(sequence: Sequence): + return [list(map(itemgetter(1), g)) for k, g in groupby(enumerate(sequence), lambda x: x[0]-x[1])] + + +class IterationSpace(): + def __init__(self, assigner: VariableContainerAndAssigner, min_interior_space=1000) -> None: + self._assigner = assigner + self._var_shapes = None + self._var_axes = None + self._spaces = None + self._min_interior_space = min_interior_space + self._num_workers = 8 + self._var_strides = {} + + @staticmethod + def _var_name(idx): + return f"i{idx}" + + @staticmethod + def _var_max_name(idx): + return f"I{idx}" + + @staticmethod + def _par_name(idx): + return f"d{idx}" + + @staticmethod + def _par_first_name(idx): + return f"D{idx}First" + + @staticmethod + def _par_last_name(idx): + return f"D{idx}Last" + + @staticmethod + def _par_max_name(idx): + return f"D{idx}" + + def set_var_stride(self, vname, stride): + self._var_shapes = None + self._var_axes = None + self._spaces = None + self._var_strides[vname] = stride + + @property + def shape(self): + return max(zip(*Symbol.extend_shapes(*self._assigner.unbound_shapes))) + + @property + def full_rank(self): + return len(self.shape) + + @property + def extended_strides(self): + full_len = self.full_rank + if not self._var_strides: + return [frozenset([1])] * full_len + vstrides = self._var_strides.copy() + vshapes = self.var_shapes + for vname in self.variables: + if vname not in vstrides: + vstrides[vname] = [{} if dim == 1 else {1} + for dim in vshapes[vname]] + else: + vstrides[vname] = [{dim} if vshapes[vname][idx] != 1 else { + } for idx, dim in enumerate(vstrides[vname])] + vstrides[vname] = ( + [{}] * (full_len - len(vstrides[vname]))) + list(vstrides[vname]) + return tuple(reduce(lambda state, x: state + [frozenset(set.union(*x))], zip(*tuple(vstrides.values())), [])) + + @property + def produced_variables(self): + return set(self._assigner.returned_variables) + + @property + def consumed_variables(self): + return set(self._assigner.unbound_variables) + + @property + def temporary_variables(self): + return set(self.variables) - self.produced_variables - self.consumed_variables + + def space_for_axis(self, axis): + return next((axes for axes in self.spaces if axis in axes), None) + + @property + def var_axes(self): + """Map of variable name to tuple of axes of iteration space used + + Returns: + dict: Map of variable name to tuple of axes of iteration space used + """ + if self._var_axes is None: + self._var_axes = {vname: tuple(sorted(set(self.space_for_axis(axis) + for axis, dim in enumerate(shape) if dim != 1))) + for vname, shape in self.var_shapes.items()} + return self._var_axes + + @property + def variables(self): + """Set of variable names + """ + return set(self.var_shapes) + + @property + def spaces(self): + """Set of disjoint iteration spaces that have the same set of strides + """ + if self._spaces is None: + spaces = self._assigner.axes + # here we modify grouped spaces so that continuous spaces have the same stride + if self._var_strides: + final_spaces = list(spaces) + for var_stride in self._var_strides.values(): + # expand the stride to the full shape + # The [1] may be wrong when we expand to supporting non unit strides + # perhaps set to None and then remove and add back to the largest space in the reduction? + var_stride = ( + [1] * (self.full_rank - len(var_stride))) + list(var_stride) + + def reduction(var_stride, state: List, space): + space_strides = {} + for dim in space: + space_strides.setdefault(var_stride[dim], []).append(dim) + for space_group in space_strides.values(): + state.extend(split_list(space_group)) + return state + + final_spaces = reduce(partial(reduction, var_stride), final_spaces, []) + self._spaces = tuple(sorted(tuple(sorted(space)) + for space in final_spaces)) + else: + self._spaces = spaces + + return self._spaces + + @property + def var_shapes(self): + if self._var_shapes is None: + self._var_shapes = self._assigner.var_shapes.copy() + self._var_shapes = dict( + zip(self._var_shapes.keys(), Symbol.extend_shapes(*self._var_shapes.values()))) + + return self._var_shapes + + @property + def axis_shape(self): + return tuple(np.prod([self.shape[axis] for axis in axis_set]) for axis_set in self.spaces) + + @property + def iterator_names(self): + return [self._var_name(idx) for idx in range(len(self.spaces))] + + @property + def interior_space(self): + """This provides the minimum tile space if it is more than one axis""" + dims = [] + shape = list(self.axis_shape) + total = 1 + while len(shape) > 1 and total < self._min_interior_space: + dims.append(len(shape) - 1) + total *= shape[-1] + shape = shape[0:-1] + return tuple(reversed(dims)) + + @property + def interior_shape(self): + shape = list(self.axis_shape) + return tuple(shape[idx] for idx in self.interior_space) + + @property + def exterior_spaces(self): + return tuple(range(len(self.axis_shape) - len(self.interior_space))) + + @property + def exterior_space_names(self): + return tuple(self._par_name(idx) for idx in range(len(self.exterior_spaces))) + + @property + def exterior_shape(self): + shape = list(self.axis_shape) + num_ext_spaces = len(self.exterior_spaces) + return tuple(shape[:num_ext_spaces - 1] + [shape[num_ext_spaces - 1] * np.prod(self.interior_shape)]) + + @property + def parameteric_spaces(self): + return tuple(self.exterior_spaces[-2:]) + + @property + def interior_shape_size(self): + return np.prod(self.interior_shape) + + @property + def fixed_spaces(self): + return tuple(self.exterior_spaces[:-2]) + + def preferred_divisor(self, space): + if space == 0: + if len(self.exterior_shape) == 1: + return self.interior_shape_size * self._num_workers + else: + return self._num_workers + elif space == len(self.exterior_shape) - 1: + return self.interior_shape_size + return 1 + + def c_indexed_var(self, var_name, declare=False, assignment=False): + if var_name in self.temporary_variables: + if declare or assignment: + dtype = self._assigner.find(var_name).dtype + return f"{DTYPE_GAP_CTYPE[dtype]} {var_name}" + return var_name + if declare: + dtype = self._assigner.find(var_name).dtype + return f"{DTYPE_GAP_CTYPE[dtype]} *{var_name}" + return f'{var_name}{self.c_index(var_name)}' + + def c_index(self, var_name): + var_spaces = [self.spaces.index(space) + for space in self.var_axes[var_name]] + var_ext_shape = self.var_shapes[var_name] + var_shape = [np.prod([var_ext_shape[dim] for dim in space]) + for space in self.var_axes[var_name]] + if var_name in self._var_strides: + var_stride = self._var_strides[var_name] + var_stride_in_space = [] + for space in self.var_axes[var_name]: + var_stride_in_space.append(var_stride[space[0]]) + assert all(var_stride_in_space[-1] == + var_stride[dim] for dim in space[1:]) + else: + var_stride_in_space = [1] * len(var_spaces) + + def reduction(state, x): + var_space, space_dim, var_stride = x + # fixed spaces are iterated by tiler code + if var_space in self.fixed_spaces: + return state + space_size = str( + space_dim) if var_space in self.interior_space else self._var_max_name(var_space) + assert abs(var_stride) == 1, "non unit strides not supported yet" + if var_stride < 0: + if var_space == 0: + index = f'(Last-1-{self._var_name(var_space)})' + else: + index = f'({space_size}-1-{self._var_name(var_space)})' + else: + index = f'{self._var_name(var_space)}' + if state[0]: + state[1].insert( + 0, f"({index}*{'*'.join(state[0])})") + else: + state[1].insert(0, index) + + state[0].insert(0, str( + space_dim) if var_space in self.interior_space else self._var_max_name(var_space)) + return state + index = reduce(reduction, zip(reversed(var_spaces), + reversed(var_shape), + reversed(var_stride_in_space)), ([], []))[1] + return f"[{'+'.join(index)}]" + + def c_for(self, space): + if space in self.fixed_spaces: + raise ValueError( + "space is fixed so not iterated and requires no for loop") + var_name = self._var_name(space) + if space in self.interior_space: + return f"for (int {var_name}=0; {var_name}<{self.shape[space]}; {var_name}++)" + if space == 0: + return f"for (int {var_name}=First; {var_name}{1};', kerarg_type, kerarg_name) @@ -268,13 +269,13 @@ def gen_function(self, kernel_name, kernel_arg_type_name, code=None): self._func_col.create_kernel(self.parallel_iterator, self.fixed_iterators, code) code.write('gap_waitbarrier(0);') code.deindent() - code.write('}}') + code.write('}') return code def kernel_arg_type_codegen(self, type_name, code=None): if code is None: code = CodeBlock() - code.write('typedef struct {{') + code.write('typedef struct {') code.indent() for kerarg_name, kerarg_type in self.kernel_args: code.write('{} {};', kerarg_type, kerarg_name) diff --git a/tools/nntool/expressions/symbolic/q15_quantization/clip_norm.py b/tools/nntool/expressions/symbolic/q15_quantization/clip_norm.py index 35a4163ef..b3fd805e7 100644 --- a/tools/nntool/expressions/symbolic/q15_quantization/clip_norm.py +++ b/tools/nntool/expressions/symbolic/q15_quantization/clip_norm.py @@ -19,31 +19,42 @@ from expressions.symbolic.basic import Add from ..function import Function -from ..symbol import c_headers, nargs +from ..symbol import c_headers, nargs, copy_props @nargs(1) @c_headers('"Gap.h"') +@copy_props('clip_dtype') class Clip(Function): def __init__(self, *args, clip_dtype=None, **kwargs): - iinfo = np.iinfo(clip_dtype) - self._clip_max = iinfo.max - self._clip_min = iinfo.min + self._clip_dtype = clip_dtype super().__init__(*args, **kwargs) + @property + def clip_dtype(self): + return self._clip_dtype + + def get_clip_min_max(self): + iinfo = np.iinfo(self._clip_dtype) + return iinfo.min, iinfo.max + def _impl(self, *args, **kwargs): - return np.maximum(np.minimum(args[0], self._clip_max, dtype=self.dtype), self._clip_min, dtype=self.dtype) + clip_min, clip_max = self.get_clip_min_max() + return np.maximum(np.minimum(args[0], clip_max, dtype=self.dtype), clip_min, dtype=self.dtype) def _py_expr(self, *args, **kwargs): - return "np.maximum(np.minimum(%s, %s), %s)" % (args[0], self._clip_max, self._clip_min) + clip_min, clip_max = self.get_clip_min_max() + return "np.maximum(np.minimum(%s, %s), %s)" % (args[0], clip_max, clip_min) def _c_expr(self, *args, **kwargs): + _, clip_max = self.get_clip_min_max() if np.issubdtype(self.dtype, np.signedinteger): - return "gap_clip((%s), (%s))" % (args[0], math.ceil(math.log2(self._clip_max))) - return "gap_clipu((%s), (%s))" % (args[0], math.ceil(math.log2(self._clip_max))) + return "gap_clip((%s), (%s))" % (args[0], math.ceil(math.log2(clip_max))) + return "gap_clipu((%s), (%s))" % (args[0], math.ceil(math.log2(clip_max))) def __repr__(self) -> str: - return "Clip(%s, %s, %s)" % (self.contents[0], self._clip_max, self._clip_min) + clip_min, clip_max = self.get_clip_min_max() + return "Clip(%s, %s, %s)" % (self.contents[0], clip_max, clip_min) @nargs(2) @@ -67,6 +78,7 @@ def _c_expr(self, *args, **kwargs): try: num = int(args[1]) if num: + assert num <= 31, "Numeric overflow in shift" if np.issubdtype(self.dtype, np.signedinteger): return f"gap_roundnorm({args[0]}, {num})" return f"gap_roundnormu({args[0]}, {num})" diff --git a/tools/nntool/expressions/symbolic/q15_quantization/handlers.py b/tools/nntool/expressions/symbolic/q15_quantization/handlers.py index e890e0b14..530f5f8b8 100644 --- a/tools/nntool/expressions/symbolic/q15_quantization/handlers.py +++ b/tools/nntool/expressions/symbolic/q15_quantization/handlers.py @@ -51,7 +51,7 @@ def _quantize(cls, max_val = np.max(sym.value) min_val = np.max(sym.value) return (sym, Q15ScaleQRec(sym.dtype, 1, 0, min_val=min_val, max_val=max_val)) - if sym.is_zero: + if sym.is_zero(qrec): return (sym, Q15ScaleQRec(sym.dtype, 1, 15, min_val=0, max_val=0)) if len(sym.value) == 1: max_val = np.max(sym.value) @@ -91,7 +91,7 @@ def _quantize(cls, # see if an nntool quantizer qtype is available if not qrec and qtypes and sym.name in qtypes: - qrec = cls.qrec_from_qtype(qtypes[sym.name]) + sym, qrec = cls.qrec_from_qtype(sym, qtypes[sym.name]) if qrec: sym.qrec = qrec return (sym, qrec) @@ -102,7 +102,7 @@ def _quantize(cls, qdtype = qrec.dtype if qrec and qrec.dtype else np.int8 q = cls.get_maxq_from_dtype(qdtype) qrec = Q15ScaleQRec.inherit( - qrec, np.int8, max_val, q, max_val=max_val, min_val=-max_val) + qrec, np.int8, max_val, q, max_val=max_val, min_val=-max_val, zero_point=0) # tag the variable with its quantization sym.qrec = qrec if quantize_inputs: @@ -110,21 +110,41 @@ def _quantize(cls, return (sym, qrec) @classmethod - def qrec_from_qtype(cls, qtype): + def qrec_from_qtype(cls, sym, qtype): if qtype.dtype == np.int8: if len(qtype.scale) > 1: - return None - q = 7 - dtype = np.int8 + return sym, None + max_val = qtype.scale[0] * (math.pow(2, 7) - qtype.zero_point[0]) + min_val = -qtype.scale[0] * (math.pow(2, 7) + qtype.zero_point[0]) + return sym, Q15ScaleQRec(np.int8, max_val, 7, + max_val=max_val, min_val=min_val, + zero_point=qtype.zero_point[0]) elif qtype.dtype == np.int16: if len(qtype.scale) > 1: - return None - q = 15 - dtype = np.int16 + return sym, None + max_val = qtype.scale[0] * (math.pow(2, 15) - qtype.zero_point[0]) + min_val = -qtype.scale[0] * (math.pow(2, 15) + qtype.zero_point[0]) + return sym, Q15ScaleQRec(np.int16, max_val, 15, + max_val=max_val, min_val=min_val, + zero_point=qtype.zero_point[0]) + elif qtype.dtype == np.uint8: + if len(qtype.scale) > 1: + return sym, None + max_val = qtype.scale[0] * (math.pow(2, 8) - qtype.zero_point[0]) + min_val = qtype.scale[0] * -qtype.zero_point[0] + return sym, Q15ScaleQRec(np.uint8, max_val, 8, + max_val=max_val, min_val=min_val, + zero_point=qtype.zero_point[0]) + elif qtype.dtype == np.uint16: + if len(qtype.scale) > 1: + return sym, None + max_val = qtype.scale[0] * (math.pow(2, 16) - qtype.zero_point[0]) + min_val = qtype.scale[0] * -qtype.zero_point[0] + return sym, Q15ScaleQRec(np.uint16, max_val, 16, + max_val=max_val, min_val=min_val, + zero_point=qtype.zero_point[0]) else: return None - max_val = qtype.scale[0] * math.pow(2, q) - return Q15ScaleQRec(dtype, max_val, q, max_val=max_val, min_val=-max_val) @qhandler("Q15Scale", QuantizedValue) @@ -151,14 +171,20 @@ def _quantize(cls, @staticmethod def cast_symbols(in_syms, qrecs, dtype=np.int32): - return zip(*[(Cast(sym, dtype=dtype), Q15ScaleQRec.override(qrec, dtype=dtype)) - if qrec.dtype != dtype else (sym, qrec) - for sym, qrec in zip(in_syms, qrecs)]) + return zip(*[ + ( + ScaleQuantized( + sym, + from_qrec=qrec, + to_qrec=Q15ScaleQRec.override(qrec, dtype=dtype, zero_point=0)), + Q15ScaleQRec.override(qrec, dtype=dtype, zero_point=0) + ) + if qrec.dtype != dtype else (sym, qrec) + for sym, qrec in zip(in_syms, qrecs)]) def find_range(sym, qrecs): - assert np.all( - qrec.min_val is not None and qrec.max_val is not None for qrec in qrecs), 'all values must be set' + assert all(qrec.min_val is not None and qrec.max_val is not None for qrec in qrecs), 'all values must be set' val_range = np.array([ sym.call_with_constants(qrecs[0].min_val, qrecs[1].min_val), sym.call_with_constants(qrecs[0].max_val, qrecs[1].min_val), @@ -192,7 +218,8 @@ def _quantize(cls, max_val = find_range(sym, in_qrecs) out_qrec = Q15ScaleQRec(np.int32, max_val, 15, min_val=-max_val, max_val=max_val) - is_zero = list(in_sym.is_zero for in_sym in in_syms) + is_zero = list(in_sym.is_zero(in_qrec) + for in_sym, in_qrec in zip(in_syms, in_qrecs)) in_syms, in_qrecs = cls.cast_symbols(in_syms, in_qrecs) # scale to the larger Q but not more than Q15 calc_qrec = None @@ -252,7 +279,7 @@ def _quantize(cls, for inner_sym in sym.contents]) sym_cls = sym.__class__ # eliminate multiply by zero - if any(in_sym.is_zero for in_sym in in_syms): + if any(in_sym.is_zero(in_qrec) for in_sym, in_qrec in zip(in_syms, in_qrecs)): return (QuantizedConstant(0), Q15ScaleQRec(np.int32, 1, 15)) # TODO - This caused regression issues that I did not have time to track down # # eliminate multiply by one @@ -267,7 +294,8 @@ def _quantize(cls, out_qrec = Q15ScaleQRec(np.int32, prod_scale, min( prod_q, 15), max_val=prod_scale, min_val=-prod_scale) if prod_q > 15: - qsym = Norm(sym_cls(*in_syms, dtype=np.int32), QuantizedConstant(prod_q - 15)) + qsym = Norm(sym_cls(*in_syms, dtype=np.int32), + QuantizedConstant(prod_q - 15)) else: qsym = sym_cls(*in_syms) return (qsym, out_qrec) @@ -294,7 +322,8 @@ def _quantize(cls, Mul( QuantizedValue( in_syms[0], qrec=in_qrecs[0], name=in_syms[0].name), - Constant(value, name=in_syms[1].name, shape=in_syms[1].shape), + Constant( + value, name=in_syms[1].name, shape=in_syms[1].shape), name=sym.name, dtype=np.int32), sym_ctrl) @@ -363,13 +392,16 @@ def _quantize(cls, in_syms, in_qrecs = cls.cast_symbols(in_syms, in_qrecs) in_sym = in_syms[0] if in_qrec.q < 15: - in_sym = LShift(in_sym, QuantizedConstant(15 - in_qrec.q), dtype=in_sym.dtype) + in_sym = LShift(in_sym, QuantizedConstant( + 15 - in_qrec.q), dtype=in_sym.dtype) elif in_qrec.q > 15: - in_sym = Norm(in_sym, QuantizedConstant(in_qrec.q - 15), dtype=in_sym.dtype) + in_sym = Norm(in_sym, QuantizedConstant( + in_qrec.q - 15), dtype=in_sym.dtype) out_qrec = Q15ScaleQRec(np.int32, new_scale, 15) return (Cast(Sqrt1715(in_sym, dtype=np.uint32), dtype=np.int32), out_qrec) + @nargs(1) @c_headers('"math_funcs.h"') @environment({ @@ -420,6 +452,7 @@ def _quantize(cls, out_qrec = Q15ScaleQRec(np.int32, new_scale, 15) return (Cast(Norm(RSqrt1616(in_sym, dtype=np.uint32), QuantizedConstant(norm), dtype=np.uint32), dtype=np.int32), out_qrec) + @nargs(1) @environment({ 'logn_17_15': logn_17_15, @@ -454,9 +487,11 @@ def _quantize(cls, in_syms, in_qrecs = cls.cast_symbols(in_syms, in_qrecs) in_sym = in_syms[0] if in_qrec.q < 15: - in_sym = LShift(in_sym, QuantizedConstant(15 - in_qrec.q), dtype=np.int32) + in_sym = LShift(in_sym, QuantizedConstant( + 15 - in_qrec.q), dtype=np.int32) elif in_qrec.q > 15: - in_sym = Norm(in_sym, QuantizedConstant(in_qrec.q - 15), dtype=np.int32) + in_sym = Norm(in_sym, QuantizedConstant( + in_qrec.q - 15), dtype=np.int32) # log(Qx * scale) = log(Qx) + log(scale) max_val = sym_ctrl.get_max(sym) @@ -523,15 +558,15 @@ def _quantize(cls, raise NotImplementedError( "power is currently only supported with fractional constants, 2, 1, & 0") - val = np.round(rhs.value.astype(np.float) * - in_qrecs[1].scaledq, decimals=4) + val = np.round(in_qrecs[1].dequantize(rhs.value), decimals=4) lhs, lhs_qrec = cls.cast_symbols(in_syms[:1:], in_qrecs[:1:]) lhs, lhs_qrec = lhs[0], lhs_qrec[0] if lhs_qrec.q < 15: lhs = LShift(lhs, QuantizedConstant( 15 - lhs_qrec.q, dtype=np.int8), dtype=np.int32) elif lhs_qrec.q > 15: - lhs = Norm(lhs, QuantizedConstant(lhs_qrec.q - 15, dtype=np.int8), dtype=np.int32) + lhs = Norm(lhs, QuantizedConstant( + lhs_qrec.q - 15, dtype=np.int8), dtype=np.int32) if val == 2: out_qrec = Q15ScaleQRec(np.int32, np.power(lhs_qrec.scale, 2), 15) @@ -743,9 +778,10 @@ def _quantize(cls, in_syms, in_qrecs = zip(*[cls.quantize(inner_sym, sym_ctrl, **kwargs) for inner_sym in sym.contents]) # scale to Q12 + func = 'tanh' if isinstance(sym, TanH) else 'sigmoid' calc_qrec = Q15ScaleQRec(np.int32, 1, 12) # output is Q15 * 1 - out_qrec = Q15ScaleQRec(np.int32, 1, 15) + out_qrec = Q15ScaleQRec(np.int32, 1, 15, min_val=-1.0 if func == 'tanh' else 0.0, max_val=1.0) in_syms, in_qrecs = cls.cast_symbols(in_syms, in_qrecs) lhs = ScaleQuantized( in_syms[0], from_qrec=in_qrecs[0], to_qrec=calc_qrec) diff --git a/tools/nntool/expressions/symbolic/q15_quantization/q15_scale_float.py b/tools/nntool/expressions/symbolic/q15_quantization/q15_scale_float.py index 02614b60d..3f74d95de 100644 --- a/tools/nntool/expressions/symbolic/q15_quantization/q15_scale_float.py +++ b/tools/nntool/expressions/symbolic/q15_quantization/q15_scale_float.py @@ -14,15 +14,20 @@ # along with this program. If not, see . from ..function import Function -from ..symbol import nargs, Constant, c_headers +from ..symbol import nargs, Constant, c_headers, copy_props @nargs(1) @c_headers('"Gap.h"') +@copy_props('to_qrec') class Q15ScaleFloat(Function): def __init__(self, *args, to_qrec=None, **kwargs): self._to_qrec = to_qrec super().__init__(*args, **kwargs) + @property + def to_qrec(self): + return self._to_qrec + def _eval(self, *args, **kwargs): if isinstance(args[0], Constant): return Constant(self._to_qrec.quantize_and_clip(args[0].value)) diff --git a/tools/nntool/expressions/symbolic/q15_quantization/q15_scale_q_rec.py b/tools/nntool/expressions/symbolic/q15_quantization/q15_scale_q_rec.py index aa6a3753f..5e43157ba 100644 --- a/tools/nntool/expressions/symbolic/q15_quantization/q15_scale_q_rec.py +++ b/tools/nntool/expressions/symbolic/q15_quantization/q15_scale_q_rec.py @@ -22,30 +22,33 @@ class Q15ScaleQRec(QRecBase): - def __init__(self, dtype: np.dtype, scale: float, q: int, min_val=None, max_val=None) -> None: + def __init__(self, dtype: np.dtype, scale: float, q: int, min_val=None, max_val=None, zero_point=0) -> None: super(Q15ScaleQRec, self).__init__(dtype) self._scale = scale self._q = q self._min_val = min_val self._max_val = max_val + self._zero_point = zero_point def __repr__(self) -> str: return f"{self._dtype.__name__} {self.scale} Q{self._q}" @classmethod - def inherit(cls, rec, dtype: np.dtype = None, scale: float = None, q: int = None, max_val=None, min_val=None): + def inherit(cls, rec, dtype: np.dtype = None, scale: float = None, q: int = None, max_val=None, min_val=None, zero_point=None): if rec is None: - return cls(dtype, scale, q, max_val=max_val, min_val=min_val) + return cls(dtype, scale, q, max_val=max_val, min_val=min_val, zero_point=zero_point) if rec.q is None: rec.q = q if rec.dtype is None: rec.dtype = dtype if rec.scale is None: rec.scale = scale + if rec.zero_point is None: + rec.zero_point = zero_point return rec @classmethod - def override(cls, rec, dtype: np.dtype = None, scale: float = None, q: int = None): + def override(cls, rec, dtype: np.dtype = None, scale: float = None, q: int = None, zero_point=None): rec = deepcopy(rec) if q is not None: rec.q = q @@ -53,6 +56,8 @@ def override(cls, rec, dtype: np.dtype = None, scale: float = None, q: int = Non rec.dtype = dtype if scale is not None: rec.scale = scale + if zero_point is not None: + rec.zero_point = zero_point return rec @classmethod @@ -78,6 +83,15 @@ def min_val(self): def max_val(self): return self._max_val + @property + def zero_point(self): + return self._zero_point + + @zero_point.setter + def zero_point(self, val): + self._zero_point = val + + @property def scale(self): return self._scale @@ -97,25 +111,26 @@ def q(self, val): def quantize(self, val): if np.all(val == 0): return val - return np.round(np.power(2, self.q) * val/self.scale, 0).astype(self.dtype) + return (np.round(np.power(2, self.q) * val/self.scale, 0) + self.zero_point).astype(self.dtype) def quantize_and_clip(self, val): if np.all(val == 0): return val.astype(self.dtype) iinfo = np.iinfo(self.dtype) - return np.clip(np.round(np.power(2, self.q) * val/self.scale, 0), iinfo.min, iinfo.max).astype(self.dtype) + return np.clip((np.round(np.power(2, self.q) * val/self.scale, 0) + self.zero_point), iinfo.min, iinfo.max).astype(self.dtype) def quantize_py_expr(self, val): if np.all(val == 0): return f"{val}.astype(np.{self.dtype.__name__})" - return f"np.round(np.power(2, {self.q}) * ({val})/{self.scale}, 0).astype(np.{self.dtype.__name__})" + return f"np.round((np.power(2, {self.q}) * ({val})/{self.scale}, 0) + {self.zero_point}).astype(np.{self.dtype.__name__})" def quantize_and_clip_py_expr(self, val): if np.all(val == 0): return f"{val}.astype(np.{self.dtype.__name__})" iinfo = np.iinfo(self.dtype) - return f"np.clip(np.round(np.power(2, {self.q}) * ({val})/{self.scale}, 0), {iinfo.min}, {iinfo.max}).astype(np.{self.dtype.__name__})" + return f"np.clip((np.round(np.power(2, {self.q}) * ({val})/{self.scale}, 0) + {self.zero_point}), {iinfo.min}, {iinfo.max}).astype(np.{self.dtype.__name__})" + #TODO - handle zero point here def quantize_c_expr(self, val): return "((%s)round(2^(%s) * (%s)/(%s), 0))" % (self.ctype, self.q, val, self.scale) @@ -125,7 +140,7 @@ def quantize_and_clip_c_expr(self, val): return "gap_clip(((%s)round(2^(%s) * (%s)/(%s), 0)), %s)" % (self.ctype, self.q, val, self.scale, bits) def dequantize(self, val): - return val.astype(np.float) * self.scale * math.pow(2, -self.q) + return (val.astype(np.float) - self.zero_point) * self.scale * math.pow(2, -self.q) def dequantize_py_expr(self, val): return "%s.astype(np.float) * %s * math.pow(2, -%s)" % (val, self.scale, self.q) @@ -141,4 +156,4 @@ def __str__(self) -> str: return self.__repr__() def __eq__(self, o: object) -> bool: - return self.q == o.q and self.scale == o.scale + return self.q == o.q and self.scale == o.scale and self.dtype == o.dtype and self.zero_point == o.zero_point diff --git a/tools/nntool/expressions/symbolic/q15_quantization/q15_scaled_quantization.py b/tools/nntool/expressions/symbolic/q15_quantization/q15_scaled_quantization.py index 355b31f26..5f5f81185 100644 --- a/tools/nntool/expressions/symbolic/q15_quantization/q15_scaled_quantization.py +++ b/tools/nntool/expressions/symbolic/q15_quantization/q15_scaled_quantization.py @@ -13,7 +13,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from typing import Tuple +from typing import Tuple, cast import numpy as np import math @@ -75,15 +75,18 @@ def _quantize_output(cls, qtypes = kwargs.get('qtypes', {}) # first see if this has already been quantized by nntool # note that the qtype will be stored against the name of the output symbol - max_val, out_dtype, out_q = cls._get_scale_dtype_from_qtypes( + max_val, out_dtype, out_q, zero_point = cls._get_scale_dtype_from_qtypes( osym, qtypes) if max_val is None: - max_val = sym_ctrl.get_max(sym) + max_val = math.fabs(sym_ctrl.get_max(sym)) out_dtype = np.int8 out_q = 7 + zero_point = 0 - qrec_scale = Q15ScaleQRec(np.int32, max_val, out_q) - qrec_out = Q15ScaleQRec(out_dtype, max_val, out_q) +#pylint: disable=invalid-unary-operand-type + min_val = -max_val + qrec_scale = Q15ScaleQRec(np.int32, max_val, out_q, min_val=min_val, max_val=max_val, zero_point=zero_point) + qrec_out = Q15ScaleQRec(out_dtype, max_val, out_q, min_val=min_val, max_val=max_val, zero_point=zero_point) # scale clip and cast to output type return ( Cast( @@ -98,15 +101,23 @@ def _quantize_output(cls, @classmethod def _get_scale_dtype_from_qtypes(cls, sym, qtypes): if not qtypes or sym.name not in qtypes: - return None, None, None + return None, None, None, None qtype = qtypes[sym.name] if qtype.dtype == np.int8: if len(qtype.scale) > 1: - return None, None, None - return qtype.scale[0] * math.pow(2, 7), np.int8, 7 + return None, None, None, None + return qtype.scale[0] * math.pow(2, 7), np.int8, 7, qtype.zero_point + if qtype.dtype == np.uint8: + if len(qtype.scale) > 1: + return None, None, None, None + return qtype.scale[0] * math.pow(2, 8), np.uint8, 8, qtype.zero_point elif qtype.dtype == np.int16: if len(qtype.scale) > 1: return None, None, None - return qtype.scale[0] * math.pow(2, 15), np.int16, 15 + return qtype.scale[0] * math.pow(2, 15), np.int16, 15, qtype.zero_point + if qtype.dtype == np.uint16: + if len(qtype.scale) > 1: + return None, None, None, None + return qtype.scale[0] * math.pow(2, 16), np.uint16, 16, qtype.zero_point else: - return None, None, None + return None, None, None, None diff --git a/tools/nntool/expressions/symbolic/q15_quantization/scale_quantized.py b/tools/nntool/expressions/symbolic/q15_quantization/scale_quantized.py index 0aa0bcfea..76a4d77bd 100644 --- a/tools/nntool/expressions/symbolic/q15_quantization/scale_quantized.py +++ b/tools/nntool/expressions/symbolic/q15_quantization/scale_quantized.py @@ -16,9 +16,10 @@ import math import numpy as np +from numpy.core.getlimits import iinfo from expressions.symbolic.function import Function -from ..basic import Cast, CompoundFunction, LShift, Mul +from ..basic import Add, Cast, CompoundFunction, LShift, Mul, Sub, copy_props from ..symbol import c_headers, nargs from .clip_norm import Norm from .q15_scale_q_rec import Q15ScaleQRec @@ -27,11 +28,16 @@ @nargs(2) @c_headers('"Gap.h"') +@copy_props('norm') class MulRN(Function): def __init__(self, *args, norm=0, **kwargs): self._norm = norm super().__init__(*args, **kwargs) + @property + def norm(self): + return self._norm + def _impl(self, *args, **kwargs): factor = int(math.pow(2, self._norm - 1)) si_args = [arg.astype(np.int16) for arg in args] @@ -46,6 +52,7 @@ def _c_expr(self, *args, **kwargs): @nargs(1) @c_headers('"Gap.h"') +@copy_props('from_qrec', 'to_qrec', 'num_bits') class ScaleQuantized(CompoundFunction): def __init__(self, *args, from_qrec=None, to_qrec=None, num_bits=15, **kwargs): self._from_qrec = from_qrec @@ -85,16 +92,17 @@ def _eval(self, *args, **kwargs): if self._from_qrec == self._to_qrec: return sym - if sym.is_zero: - if self._from_qrec.dtype != self._to_qrec.dtype: - return Cast(sym, dtype=self._to_qrec.dtype) - return sym + if sym.is_zero(self._from_qrec): + return QuantizedConstant(self._to_qrec.zero_point, dtype=self._to_qrec.dtype) qbias, qnorm = self._calc_bias() # make sure we are in int32 before doing these operations if self._from_qrec.dtype != np.int32: sym = Cast(sym, dtype=np.int32) + if self._from_qrec.zero_point != 0: + sym = Sub(sym, QuantizedConstant(self._from_qrec.zero_point, dtype=np.int32)) + if qbias == 1: # its a left shift if qnorm < 0: @@ -141,6 +149,12 @@ def _eval(self, *args, **kwargs): name=self.name, dtype=self._to_qrec.dtype ) + + if self._to_qrec.zero_point != 0: + sym = Add(sym, QuantizedConstant(self._to_qrec.zero_point, dtype=np.int32)) + + # TODO - Check if we need to clip here!! + if self._to_qrec.dtype != np.int32: sym = Cast(sym, dtype=self._to_qrec.dtype) return sym diff --git a/tools/nntool/expressions/symbolic/symbol.py b/tools/nntool/expressions/symbolic/symbol.py index d173c0969..0480073bc 100644 --- a/tools/nntool/expressions/symbolic/symbol.py +++ b/tools/nntool/expressions/symbolic/symbol.py @@ -18,6 +18,7 @@ import numpy as np from bfloat16 import bfloat16 +from generation.code_block import CodeBlock from quantization.qtype import DTYPE_GAP_CTYPE @@ -66,6 +67,9 @@ class QRecBase(): np.int8: 'int8_t', np.int16: 'int16_t', np.int32: 'int32_t', + np.uint8: 'uint8_t', + np.uint16: 'uint16_t', + np.uint32: 'uint32_t', np.float32: 'float', bfloat16: 'F16', np.float16: 'F16' @@ -91,6 +95,7 @@ class Symbol(): ENVIRONMENT = None COUNTS = {} C_HEADERS = [] + COPY_PROPS = tuple() #pylint: disable=unused-argument def __init__(self, *args, name="", shape=None, dtype=np.float32, qrec: QRecBase = None, **kwargs): @@ -125,12 +130,11 @@ def contents(self): def is_constant(self): return False - @property - def is_zero(self): + def is_zero(self, qrec): return False @property - def is_one(self): + def is_one(self, qrec): return False @property @@ -177,12 +181,20 @@ def ops(self): def set_default_control(cls, control): cls.CURRENT_CONTROL = control + @staticmethod + def extend_shapes(*shapes): + if len(shapes) == 1: + return list(shapes) + max_length = max(len(x) for x in shapes) + return [tuple([1] * (max_length - len(x)) + list(x)) for x in shapes] + @staticmethod def broadcast(*shapes): if len(shapes) == 1: return shapes[0] - max_length = max(len(x) for x in shapes) - extended_shapes = [tuple([1] * (max_length - len(x)) + list(x)) for x in shapes] + if any(shape is None for shape in shapes): + return None + extended_shapes = Symbol.extend_shapes(*shapes) base = tuple([max([dim for dim in dims]) for dims in zip(*extended_shapes)]) if any(any(dim != 1 and base[idx] != dim for idx, dim in enumerate(shape)) for shape in extended_shapes): raise ValueError('shapes cannot be broadcast') @@ -221,6 +233,23 @@ def collect_globals(self) -> dict: can be attached to a subclass of symbol using the @environment decorator.""" return self._collect_globals() + def clone_with(self, *args): + return self.__class__(*args, + dtype=self.dtype, + name=self.name, + qrec=self.qrec, + shape=self._shape, # access private property to pick up None value + **{k: getattr(self, k) for k in self.COPY_PROPS}) + + def find(self, name): + if name == self.name: + return self + for elem in self.contents: + res = elem.find(name) + if res: + return res + return None + @staticmethod def environment(globals_dict): return Symbol.property_register("ENVIRONMENT", globals_dict) @@ -282,19 +311,40 @@ def handler(*args): return cls return decorator + @staticmethod + def copy_props(*props): + def decorator(cls): + setattr(cls, 'COPY_PROPS', tuple(list(cls.COPY_PROPS) + list(props))) + return cls + return decorator + def _py_expr(self, *args, **kwargs): raise ValueError('no python representation is available') def _c_expr(self, *args, **kwargs): return self._py_expr(*args, **kwargs) - @property - def py_expr(self): - return self._py_expr([]) + def py_expr(self, *args, **kwargs): + return self._py_expr(*args, **kwargs) def c_expr(self, *args, **kwargs): return self._c_expr([], **kwargs) + def c_block(self, code_block=None, **kwargs): + if code_block is None: + code_block = CodeBlock + code_block.write(self.c_expr) + + def _equivalent(self, other) -> bool: + pass + + def equivalent(self, other) -> bool: + if not isinstance(other, self.__class__): + return False + if not all(getattr(self, prop) == getattr(other, prop) for prop in self.COPY_PROPS): + return False + return self._equivalent(other) + def __call__(self, *args, **kwargs): if self.NARGS is not None and len(args) != self.NARGS: raise ValueError("incorrect number of arguments") @@ -316,6 +366,7 @@ def __str__(self) -> str: handlesr = Symbol.handlesr environment = Symbol.environment c_headers = Symbol.c_headers +copy_props = Symbol.copy_props def print_float_constant(val): val = float(val) @@ -363,13 +414,15 @@ def sym_c_headers(self): def is_constant(self): return True - @property - def is_zero(self): - return np.all(self.value == 0) + def is_zero(self, qrec): + if qrec is None: + return np.all(self.value == 0) + return np.all(self.value == qrec.zero_point) - @property - def is_one(self): - return np.all(self.value == 1) + def is_one(self, qrec): + if qrec is None: + return np.all(self.value == 1) + raise NotImplementedError() @property def is_scalar(self): @@ -381,6 +434,9 @@ def shape(self): return self._value.shape return self._shape + def _equivalent(self, other) -> bool: + return np.all(self.value == other.value) + @property def _c_expr_func(self): return self._c_expr @@ -460,14 +516,34 @@ def __repr__(self) -> str: class Variable(Symbol): # pylint: disable=super-init-not-called - def __init__(self, var_name, shape=None, name="", **kwargs): + def __init__(self, var_name, shape=None, symbol_binding=None, name="", **kwargs): if not name: name = var_name super(Variable, self).__init__(name=name, **kwargs) + self._symbol_binding = symbol_binding self._shape = shape self._index_vars = None self._ispointer = False + @property + def shape(self): + if self._symbol_binding: + return self._symbol_binding.shape + return super().shape + + @shape.setter + def shape(self, val): + if self._symbol_binding: + self._symbol_binding.shape = val + else: + self._shape = val + + @property + def dtype(self): + if self._symbol_binding: + return self._symbol_binding.dtype + return super().dtype + @property def sym_c_headers(self): if self.qrec and self.qrec.ctype == "F16": @@ -523,6 +599,13 @@ def _impl(self, *args, **kwargs): def _resolve(self, **kwargs): """Given a set of substitions for variable in kwargs resolve all variables""" if self.name in kwargs: + # if substituting for another variable just return that variable + if isinstance(kwargs[self.name], Variable): + return kwargs[self.name] + # if substituting for a symbol then try to resolve that + if isinstance(kwargs[self.name], Symbol): + return kwargs[self.name].resolve(**kwargs) + # try to resolve to a constant return Constant(self._impl(**kwargs), shape=self.shape) return self @@ -540,6 +623,17 @@ def _py_expr(self, *args, **kwargs): return "np.reshape(np.array(%s), %s)" % (self.name, self.shape) return "np.array(%s)" % self.name + def _equivalent(self, other) -> bool: + return self.shape == other.shape and self.dtype == other.dtype + + def __eq__(self, o: object) -> bool: + if isinstance(o, Variable): + return o.name == self.name + return False + + def __hash__(self) -> int: + return self.name.__hash__() + @staticmethod def gen_index(index_vars): # generates d0*D1*D2+d1*D2+d2 from d0, d1, d2 and so on @@ -550,21 +644,25 @@ def gen_index(index_vars): lambda s, x: [[x]+[s[0][0].upper()]+s[0][1::]] + s, reversed(names[0:-1:]), [[names[-1]]])) #pylint: disable=arguments-differ - def _c_expr(self, *args, declare=False, dtype=None, **kwargs): + def _c_expr(self, *args, declare=False, dtype=None, pointer=None, iteration_space=None, **kwargs): + if iteration_space: + return iteration_space.c_indexed_var(self.name) + if pointer is None: + pointer = self._ispointer if declare: if dtype: - return "%s %s%s"%(DTYPE_GAP_CTYPE[dtype], "*" if self._ispointer else "", self.name) + return "%s %s%s"%(DTYPE_GAP_CTYPE[dtype], "*" if pointer else "", self.name) else: - return "%s %s%s"%(DTYPE_GAP_CTYPE[self.dtype], "*" if self._ispointer else "", self.name) + return "%s %s%s"%(DTYPE_GAP_CTYPE[self.dtype], "*" if pointer else "", self.name) if self._index_vars is not None: if self._index_vars: return f"{self.name}[{self.gen_index(self._index_vars)}]" # return "%s[%s]"%(self.name, "+".join("%s*%s"%(v[0].name, v[1]) for v in self._index_vars)) else: - if self._ispointer: + if pointer: return "(*%s)"%self.name return self.name return self.name def __repr__(self) -> str: - return str(self.name) + return f'{self.name}' diff --git a/tools/nntool/expressions/symbolic/variable_container.py b/tools/nntool/expressions/symbolic/variable_container.py new file mode 100644 index 000000000..3647509d2 --- /dev/null +++ b/tools/nntool/expressions/symbolic/variable_container.py @@ -0,0 +1,148 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from abc import ABC, abstractmethod, abstractproperty +from typing import Mapping + +import numpy as np +from utils.disjoint_reduction import disjoint_reduction + +from .symbol import Symbol, Variable + + +class VariableAssigner(ABC): + @abstractmethod + def _resolve_assignment(self, substitute_all=False, **kwargs) -> Mapping[str, Symbol]: + """ Resolves an container that is one or more assigments substituting values contained in + **kwargs into unresolved variables + + Args: + substitute_all (bool, optional): If False only expressions that resolve to constants will be substituted. + Defaults to False. + + Returns: + Mapping[str, Symbol]: A map of the variable names and their values (Symbols) + """ + + def resolve_assignment(self, substitute_all=False, **kwargs) -> Mapping[str, Symbol]: + return self._resolve_assignment(substitute_all=substitute_all, **kwargs) + + @abstractmethod + def _calculate_assignment(self, **kwargs) -> Mapping[str, np.ndarray]: + """ Attempts to resolve a series of assignments to a map of values + + Returns: + Mapping[str, np.ndarray]: Map of resolved values + """ + + def calculate_assignment(self, **kwargs) -> Mapping[str, np.ndarray]: + return self._calculate_assignment(**kwargs) + + @abstractproperty + def returned_variables(self): + pass + + @abstractproperty + def var_shapes(self): + pass + +class VariableContainer(): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._unbound_variables = self._init_unbound_variables(*args) + + @property + def unbound_variables(self): + return self._unbound_variables + + @unbound_variables.setter + def unbound_variables(self, val): + self._unbound_variables = val + + @property + def unbound_shapes(self): + return (var.shape + for var in self.unbound_variables.values()) + + @property + def extended_unbound_var_shapes(self): + max_length = max(len(var.shape) + for var in self.unbound_variables.values()) + return {vname: tuple(([1] * (max_length - len(var.shape))) + list(var.shape)) + for vname, var in self.unbound_variables.items()} + + + @staticmethod + def adjust(axes, adjust): + return tuple(tuple(dim+adjust for dim in axes_group) for axes_group in axes) + + + @property + def axes(self): + var_shapes = Symbol.extend_shapes(*self.unbound_shapes) + axes = disjoint_reduction(set(frozenset(idx for idx, dim in enumerate( + shape) if dim != 1) for shape in var_shapes)) + return tuple(sorted([tuple(x) for x in axes])) + + @staticmethod + def _init_unbound_variables(*args): + unbound_variables = {} + for arg in args: + if isinstance(arg, Variable): + if arg.name in unbound_variables: + if unbound_variables[arg.name].shape != arg.shape: + raise ValueError( + 'there is more than one variable called %s with different shapes' % arg.name) + else: + unbound_variables[arg.name] = arg + elif isinstance(arg, VariableContainer): + unbound_variables.update(arg.unbound_variables) + elif isinstance(arg, str): + if arg in unbound_variables: + raise ValueError( + 'there is more than one variable called %s' % arg) + else: + unbound_variables[arg] = Variable(arg) + + return unbound_variables + + def vars_to_axes(self, axes=None): + if axes is None: + axes = self.axes + return {vname: tuple(axis for axis in axes if all(shape[dim] > 1 for dim in axis)) + for vname, shape in self.extended_unbound_var_shapes.items()} + + def axes_sizes(self, axes=None): + if axes is None: + axes = self.axes + shape = Symbol.broadcast(*self.unbound_shapes) + return {axis: int(np.prod([shape[x] for x in axis])) for axis in axes} + + +class VariableContainerAndAssigner(VariableContainer, VariableAssigner): + @property + def var_axes(self): + elems = self.resolve_assignment(substitute_all=True) + max_axis_groups = np.array( + [max(max(x) for x in elem.axes) for elem in elems.values()]) + max_axis = np.max(max_axis_groups) + axis_adjust = max_axis - max_axis_groups + + axes = {} + for elem_idx, (elem_name, elem) in enumerate(elems.items()): + axes[elem_name] = self.adjust(elem.axes, axis_adjust[elem_idx]) + for vname, vaxes in elem.vars_to_axes().items(): + axes[vname] = self.adjust(vaxes, axis_adjust[elem_idx]) + return axes diff --git a/tools/nntool/generation/at_types/at_params.py b/tools/nntool/generation/at_types/at_params.py index 243e24a5e..0d08c3026 100644 --- a/tools/nntool/generation/at_types/at_params.py +++ b/tools/nntool/generation/at_types/at_params.py @@ -178,8 +178,16 @@ def gen_pool_at_params(params, pad_compatibilities): ]) def gen_globalpool_at_params(params): + if params.pool_type == "average": + pop = "KOP_GLOBAL_AVGPOOL" + elif params.pool_type == "max": + pop = "KOP_GLOBAL_MAXPOOL" + elif params.pool_type == "sum": + pop = "KOP_GLOBAL_SUMPOOL" + else: + raise NotImplementedError() return GlobalPoolATParam( - GlobalPoolOper="KOP_GLOBAL_AVGPOOL" if params.pool_type == "average" else "KOP_GLOBAL_MAXPOOL" + GlobalPoolOper=pop ) # LINEAR diff --git a/tools/nntool/generation/bindings.py b/tools/nntool/generation/bindings.py index be3b675af..c921e3941 100644 --- a/tools/nntool/generation/bindings.py +++ b/tools/nntool/generation/bindings.py @@ -35,8 +35,17 @@ def gen_imm_arg(symbol): def gen_at_bindings(name, binding_list, code_block): - code_block.write('AddNode("{0}", Bindings({1}, {2}));' - .format(name, len(binding_list), ", ".join(binding_list))) + code_block.write(f'AddNode("{name}",') + code_block.indent() + code_block.write(f'Bindings({len(binding_list)},') + code_block.indent() + for bind in binding_list[:-1]: + code_block.write(f'{bind},') + code_block.write(f'{binding_list[-1]}') + code_block.deindent() + code_block.write(")") + code_block.deindent() + code_block.write(");") def gen_at_func_bindings(name, func_name, where, binding_list, code_block): diff --git a/tools/nntool/generation/code_block.py b/tools/nntool/generation/code_block.py index 34d99f063..b072c79bd 100644 --- a/tools/nntool/generation/code_block.py +++ b/tools/nntool/generation/code_block.py @@ -43,7 +43,10 @@ def append_last(self, fmt, *args): def write(self, fmt, *args): fmt = self.get_indent() + fmt - self._lines.append(fmt.format(*args)) + if args: + self._lines.append(fmt.format(*args)) + else: + self._lines.append(fmt) return self def write_lines(self, lines): diff --git a/tools/nntool/generation/code_generator.py b/tools/nntool/generation/code_generator.py index cd1b750f4..378885bb5 100644 --- a/tools/nntool/generation/code_generator.py +++ b/tools/nntool/generation/code_generator.py @@ -20,8 +20,7 @@ from expressions.symbolic.kernel_codegen import BasicKernel from graph.types import (ConcatParameters, ConstantInputParameters, InputParameters, OutputParameters, ReshapeParameters, - SplitParameters, SSDDetectorParameters, - TransposeParameters) + SplitParameters, TransposeParameters) from graph.types.lstm import LSTMParameters from graph.types.others import CopyParameters, QuantizeParameters from graph.types.rnn import RNNBaseParameters @@ -151,7 +150,8 @@ def force_relu(self): @property def flash_pointer(self): - return "AT_HYPERFLASH_FS_EXT_ADDR_TYPE" if self.opts["l3_flash_device"] == "AT_MEM_L3_HFLASH" else "AT_QSPIFLASH_FS_EXT_ADDR_TYPE" + return ("AT_HYPERFLASH_FS_EXT_ADDR_TYPE" if self.opts["l3_flash_device"] == "AT_MEM_L3_HFLASH" + else "AT_QSPIFLASH_FS_EXT_ADDR_TYPE") def get_edge_name(self, eparams): return self.name_cache[eparams]['edge'] @@ -212,7 +212,10 @@ def real_down_connection(G, eparams): eparams.creating_node_idx] while isinstance(oedge.to_node, ReshapeParameters) or \ (isinstance(oedge.to_node, TransposeParameters) and oedge.to_node.does_nothing()): - assert len(G.out_edges(oedge.to_node.name)) <= 1 + # TODO - This assert is removed but there are some corner cases where this will break + # it would be better to create an edge alias map before code gen + # need a test for x -> reshape -> y and output and y -> z -> another output + # assert len(G.indexed_out_edges(oedge.to_node.name)) <= 1 oedge = G.out_edges(oedge.to_node.name)[0] return oedge @@ -596,7 +599,8 @@ def header_generator(self, indent=0): if any(qrec.ktype == "symmetric" for qrec in self.G.quantization.values()): for out_q in qrec.out_qs: - code_block.write("#define {}_{}_Q\t{}".format(self.G.name, cname, out_q.q)) + code_block.write("#define {}_{}_Q\t{}".format( + self.G.name, cname, out_q.q)) return str(code_block) def expressions_kernel_header_includes_generator(self, indent=0): @@ -694,7 +698,8 @@ def generate_main_appl_inout_def(self, test_inputs=None, test_outputs=None, inde 'L2_MEM {} {}[] = {{{}}};', dtype2ctype(inp), node.name.capitalize(), - ",".join(f'{elem}{dtype2typesuffix(inp)}' if not np.isposinf(elem) else "INFINITY" for elem in inp.flatten())) + ",".join(f'{elem}{dtype2typesuffix(inp)}' if not np.isposinf(elem) else "INFINITY" + for elem in inp.flatten())) else: code_block.write( f"L2_MEM {CTYPE[nodeq.ctype]} {node.name.capitalize()}[{node.out_dims[0].size()}];") @@ -712,7 +717,8 @@ def generate_main_appl_inout_def(self, test_inputs=None, test_outputs=None, inde 'L2_MEM {} {}_gt[] = {{{}}};', dtype2ctype(outp), out_n.name.capitalize(), - ",".join(f'{elem}{dtype2typesuffix(outp)}' if not np.isposinf(elem) else "INFINITY" for elem in outp.flatten())) + ",".join(f'{elem}{dtype2typesuffix(outp)}' if not np.isposinf(elem) else "INFINITY" + for elem in outp.flatten())) return str(code_block) def gen_inout_list(self): @@ -739,21 +745,30 @@ def generate_output_check(self, tol=0.0, indent=0): nodeq = self.G.quantization[NodeId(out_node, None)].out_qs[0] dtype = "%f" if nodeq.is_floating else "%d" code.write('errors = 0;') - code.write('for (int j=0; j<{}; j++) {{', out_sz) + if tol: + code.write(f"{dtype2ctype(nodeq)} max_diff = 0;") + code.write(f'for (int j=0; j<{out_sz}; j++) {{') code.indent() if tol: - code.write(f"{dtype2ctype(nodeq)} diff = {out_node.name.capitalize()}[j] - {out_node.name.capitalize()}_gt[j];") - code.write(f'if (diff > {nodeq.quantize(np.array(tol)).item()} || diff < -{nodeq.quantize(np.array(tol)).item()}) ' + '{{') + code.write( + f"{dtype2ctype(nodeq)} diff = {out_node.name.capitalize()}[j] - " + f"{out_node.name.capitalize()}_gt[j];") + code.write("diff = (diff>0)?diff:(-diff);") + code.write(f"if (diff > max_diff) max_diff = diff;") + code.write(f'if (diff > {nodeq.quantize(np.array(tol)).item()}) {{') else: - code.write(f'if ({out_node.name.capitalize()}[j] != {out_node.name.capitalize()}_gt[j]) ' + '{{') + code.write( + f'if ({out_node.name.capitalize()}[j] != {out_node.name.capitalize()}_gt[j]) {{') code.indent() code.write('errors++;') - code.write( - f'printf("Error @ %d: {dtype} instead of {dtype}\\n", j, {out_node.name.capitalize()}[j], {out_node.name.capitalize()}_gt[j]);') + code.write(f'printf("Error @ %d: {dtype} instead of {dtype}\\n", j, ' + f'{out_node.name.capitalize()}[j], {out_node.name.capitalize()}_gt[j]);') code.deindent() - code.write("}}") + code.write("}") code.deindent() - code.write('}}') + code.write('}') code.write( f'printf("{out_node.name.capitalize()}: %d/{out_sz} errors\\n", errors);') + if tol: + code.write(f'printf("Max error: {dtype}\\n", max_diff);') return str(code) diff --git a/tools/nntool/generation/default_appl_main_template.py b/tools/nntool/generation/default_appl_main_template.py index deb930bd2..c6493a947 100644 --- a/tools/nntool/generation/default_appl_main_template.py +++ b/tools/nntool/generation/default_appl_main_template.py @@ -17,7 +17,7 @@ @stringfunction # pylint: disable=unused-argument -def generate_main_appl_template(G, gen, test_inputs=None, test_outputs=None): +def generate_main_appl_template(G, gen, test_inputs=None, test_outputs=None, tolerance=0.0): ''' ${GWT_HEADER} @@ -47,7 +47,7 @@ def generate_main_appl_template(G, gen, test_inputs=None, test_outputs=None): ${gen.project_name}CNN(${gen.gen_inout_list()}); printf("Runner completed\\n"); -${gen.generate_output_check(indent=1) if test_outputs else ""} +${gen.generate_output_check(tolerance, indent=1) if test_outputs else ""} } int test_${gen.project_name}(void) @@ -176,7 +176,7 @@ def generate_main_appl_make(G, gen, quantized, open_args=""): NNTOOL=nntool ${"MODEL_SQ8=1" if gen.G.has_expressions or "SQ8" in gen.G.quantization.schemes_present or any(qrec.cache.get("ne16") for qrec in G.quantization.values()) else "# MODEL_SQ8=1"} ${"MODEL_POW2=1" if "POW2" in gen.G.quantization.schemes_present else "# MODEL_POW2=1"} -${"MODEL_FP16=1" if "FLOAT" in gen.G.quantization.schemes_present else "# MODEL_FP16=1"} +${"MODEL_FP16=1" if any(qrec.ktype == "float" for qrec in G.quantization.values()) else "# MODEL_FP16=1"} ${"MODEL_NE16=1" if any(qrec.cache.get("ne16") for qrec in G.quantization.values()) else "# MODEL_NE16=1"} MODEL_SUFFIX?= diff --git a/tools/nntool/generation/generators/bindings/mult8/conv_bindings_generator.py b/tools/nntool/generation/generators/bindings/mult8/conv_bindings_generator.py index 1eb363f1d..bcb13fd9c 100644 --- a/tools/nntool/generation/generators/bindings/mult8/conv_bindings_generator.py +++ b/tools/nntool/generation/generators/bindings/mult8/conv_bindings_generator.py @@ -1,78 +1,78 @@ -# Copyright (C) 2020 GreenWaves Technologies, SAS +# # Copyright (C) 2020 GreenWaves Technologies, SAS -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# # This program is free software: you can redistribute it and/or modify +# # it under the terms of the GNU Affero General Public License as +# # published by the Free Software Foundation, either version 3 of the +# # License, or (at your option) any later version. -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# # This program is distributed in the hope that it will be useful, +# # but WITHOUT ANY WARRANTY; without even the implied warranty of +# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# # GNU Affero General Public License for more details. +# # You should have received a copy of the GNU Affero General Public License +# # along with this program. If not, see . -from generation.bindings import (CommentBindingList, GNodeArgEdge, - GNodeArgNode, NodeBindingList) -from generation.generator_decorators import QREC_MULT8, generation_function -from generation.generators.globals.global_names import (INFOS, MULSCALE, - MULSHIFT) -from graph.types import (ActivationParameters, Conv2DParameters, - ConvFusionParameters) -from utils.node_id import NodeId +# from generation.bindings import (CommentBindingList, GNodeArgEdge, +# GNodeArgNode, NodeBindingList) +# from generation.generator_decorators import QREC_MULT8, generation_function +# from generation.generators.globals.global_names import (INFOS, MULSCALE, +# MULSHIFT) +# from graph.types import (ActivationParameters, Conv2DParameters, +# ConvFusionParameters) +# from utils.node_id import NodeId -@generation_function("bindings", (Conv2DParameters, ConvFusionParameters, ActivationParameters), qrec_types=(QREC_MULT8,)) -def conv_bindings_generator(gen, node, qrec, in_eparams, out_eparams, cname) -> bool: - step_idx = node.step_idx - if isinstance(node, ActivationParameters): - set_act_bindings(gen, step_idx, in_eparams, out_eparams, cname, node, qrec) - elif isinstance(node, Conv2DParameters): - set_conv_bindings(gen, step_idx, in_eparams, out_eparams, cname, node, qrec) - elif isinstance(node, ConvFusionParameters): - cnodes = node.contained_nodes() - quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] - if node.fusion_type in ("conv_active_pool", "conv_active", "conv_pool"): - set_conv_bindings(gen, step_idx, in_eparams, out_eparams, - cname, cnodes[0], quants[0], out_q=quants[1]) - elif node.fusion_type == "conv_pool_active": - set_conv_bindings(gen, step_idx, in_eparams, out_eparams, - cname, cnodes[0], quants[0], out_q=quants[2]) - else: - return False - else: - return False - return True +# @generation_function("bindings", (Conv2DParameters, ConvFusionParameters, ActivationParameters), qrec_types=(QREC_MULT8,)) +# def conv_bindings_generator(gen, node, qrec, in_eparams, out_eparams, cname) -> bool: +# step_idx = node.step_idx +# if isinstance(node, ActivationParameters): +# set_act_bindings(gen, step_idx, in_eparams, out_eparams, cname, node, qrec) +# elif isinstance(node, Conv2DParameters): +# set_conv_bindings(gen, step_idx, in_eparams, out_eparams, cname, node, qrec) +# elif isinstance(node, ConvFusionParameters): +# cnodes = node.contained_nodes() +# quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] +# if node.fusion_type in ("conv_active_pool", "conv_active", "conv_pool"): +# set_conv_bindings(gen, step_idx, in_eparams, out_eparams, +# cname, cnodes[0], quants[0], out_q=quants[1]) +# elif node.fusion_type == "conv_pool_active": +# set_conv_bindings(gen, step_idx, in_eparams, out_eparams, +# cname, cnodes[0], quants[0], out_q=quants[2]) +# else: +# return False +# else: +# return False +# return True -def set_conv_bindings(gen, step_idx, in_eparams, out_eparams, cname, - conv_params, conv_q, out_q=None): - del step_idx - if out_q is None: - out_q = conv_q - gen.bindings.append( - CommentBindingList("Node {} inq {} weightsq {} outq {} biasesq {}", cname, - conv_q.in_qs[0], conv_q.in_qs[1], out_q.out_qs[0], conv_q.in_qs[2]) - ) - gen.bindings.append( - NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), - GNodeArgEdge(in_eparams[1]), - GNodeArgEdge(in_eparams[2]), - GNodeArgEdge(out_eparams[0], "GNA_OUT"), - GNodeArgNode(conv_params, MULSCALE), - GNodeArgNode(conv_params, MULSHIFT), - GNodeArgNode(conv_params, INFOS) - )) +# def set_conv_bindings(gen, step_idx, in_eparams, out_eparams, cname, +# conv_params, conv_q, out_q=None): +# del step_idx +# if out_q is None: +# out_q = conv_q +# gen.bindings.append( +# CommentBindingList("Node {} inq {} weightsq {} outq {} biasesq {}", cname, +# conv_q.in_qs[0], conv_q.in_qs[1], out_q.out_qs[0], conv_q.in_qs[2]) +# ) +# gen.bindings.append( +# NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), +# GNodeArgEdge(in_eparams[1]), +# GNodeArgEdge(in_eparams[2]), +# GNodeArgEdge(out_eparams[0], "GNA_OUT"), +# GNodeArgNode(conv_params, MULSCALE), +# GNodeArgNode(conv_params, MULSHIFT), +# GNodeArgNode(conv_params, INFOS) +# )) -def set_act_bindings(gen, step_idx, in_eparams, out_eparams, cname, - act_params, act_qrec): - del step_idx - gen.bindings.append( - CommentBindingList("Node {} inq {} outq {}", cname, - act_qrec.in_qs[0], act_qrec.out_qs[0]) - ) - gen.bindings.append( - NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), - GNodeArgEdge(out_eparams[0], "GNA_OUT"), - GNodeArgNode(act_params, INFOS) - )) +# def set_act_bindings(gen, step_idx, in_eparams, out_eparams, cname, +# act_params, act_qrec): +# del step_idx +# gen.bindings.append( +# CommentBindingList("Node {} inq {} outq {}", cname, +# act_qrec.in_qs[0], act_qrec.out_qs[0]) +# ) +# gen.bindings.append( +# NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), +# GNodeArgEdge(out_eparams[0], "GNA_OUT"), +# GNodeArgNode(act_params, INFOS) +# )) diff --git a/tools/nntool/generation/generators/bindings/mult8/fc_binding_generator.py b/tools/nntool/generation/generators/bindings/mult8/fc_binding_generator.py index fffe13849..4bafff1f3 100644 --- a/tools/nntool/generation/generators/bindings/mult8/fc_binding_generator.py +++ b/tools/nntool/generation/generators/bindings/mult8/fc_binding_generator.py @@ -1,58 +1,58 @@ -# Copyright (C) 2020 GreenWaves Technologies, SAS - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - - -from generation.bindings import (CommentBindingList, GNodeArgEdge, - GNodeArgNode, NodeBindingList) -from generation.generator_decorators import QREC_MULT8, generation_function -from generation.generators.globals.global_names import (INFOS, MULSCALE, - MULSHIFT) -from graph.types import LinearFusionParameters, FcParameters -from utils.node_id import NodeId - - -@generation_function("bindings", (LinearFusionParameters, FcParameters), qrec_types=(QREC_MULT8, )) -def fc_bindings_generator(gen, node, qrec, in_eparams, out_eparams, cname) -> bool: - step_idx = node.step_idx - if isinstance(node, FcParameters): - set_fc_bindings(gen, step_idx, in_eparams, - out_eparams, cname, node, qrec) - elif isinstance(node, LinearFusionParameters): - cnodes = node.contained_nodes() - quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] - set_fc_bindings(gen, step_idx, in_eparams, out_eparams, - cname, cnodes[0], quants[0], out_q=quants[1]) - else: - return False - return True - - -def set_fc_bindings(gen, step_idx, in_eparams, out_eparams, cname, - params, linear_q, out_q=None): - del step_idx - if out_q is None: - out_q = linear_q - gen.bindings.append( - CommentBindingList("Node {} inq {} weightsq {} outq {}", params.name, - linear_q.in_qs[0], linear_q.in_qs[1], out_q.out_qs[0]) - ) - gen.bindings.append( - NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), - GNodeArgEdge(in_eparams[1]), - GNodeArgEdge(in_eparams[2]), - GNodeArgEdge(out_eparams[0], "GNA_OUT"), - GNodeArgNode(params, MULSCALE), - GNodeArgNode(params, MULSHIFT), - GNodeArgNode(params, INFOS) - )) +# # Copyright (C) 2020 GreenWaves Technologies, SAS + +# # This program is free software: you can redistribute it and/or modify +# # it under the terms of the GNU Affero General Public License as +# # published by the Free Software Foundation, either version 3 of the +# # License, or (at your option) any later version. + +# # This program is distributed in the hope that it will be useful, +# # but WITHOUT ANY WARRANTY; without even the implied warranty of +# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# # GNU Affero General Public License for more details. +# # You should have received a copy of the GNU Affero General Public License +# # along with this program. If not, see . + + +# from generation.bindings import (CommentBindingList, GNodeArgEdge, +# GNodeArgNode, NodeBindingList) +# from generation.generator_decorators import QREC_MULT8, generation_function +# from generation.generators.globals.global_names import (INFOS, MULSCALE, +# MULSHIFT) +# from graph.types import LinearFusionParameters, FcParameters +# from utils.node_id import NodeId + + +# @generation_function("bindings", (LinearFusionParameters, FcParameters), qrec_types=(QREC_MULT8, )) +# def fc_bindings_generator(gen, node, qrec, in_eparams, out_eparams, cname) -> bool: +# step_idx = node.step_idx +# if isinstance(node, FcParameters): +# set_fc_bindings(gen, step_idx, in_eparams, +# out_eparams, cname, node, qrec) +# elif isinstance(node, LinearFusionParameters): +# cnodes = node.contained_nodes() +# quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] +# set_fc_bindings(gen, step_idx, in_eparams, out_eparams, +# cname, cnodes[0], quants[0], out_q=quants[1]) +# else: +# return False +# return True + + +# def set_fc_bindings(gen, step_idx, in_eparams, out_eparams, cname, +# params, linear_q, out_q=None): +# del step_idx +# if out_q is None: +# out_q = linear_q +# gen.bindings.append( +# CommentBindingList("Node {} inq {} weightsq {} outq {}", params.name, +# linear_q.in_qs[0], linear_q.in_qs[1], out_q.out_qs[0]) +# ) +# gen.bindings.append( +# NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), +# GNodeArgEdge(in_eparams[1]), +# GNodeArgEdge(in_eparams[2]), +# GNodeArgEdge(out_eparams[0], "GNA_OUT"), +# GNodeArgNode(params, MULSCALE), +# GNodeArgNode(params, MULSHIFT), +# GNodeArgNode(params, INFOS) +# )) diff --git a/tools/nntool/generation/generators/globals/mult8_filter_generator.py b/tools/nntool/generation/generators/globals/mult8_filter_generator.py index 4fdac9f07..d32b24867 100644 --- a/tools/nntool/generation/generators/globals/mult8_filter_generator.py +++ b/tools/nntool/generation/generators/globals/mult8_filter_generator.py @@ -1,39 +1,39 @@ -# Copyright (C) 2020 GreenWaves Technologies, SAS +# # Copyright (C) 2020 GreenWaves Technologies, SAS -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# # This program is free software: you can redistribute it and/or modify +# # it under the terms of the GNU Affero General Public License as +# # published by the Free Software Foundation, either version 3 of the +# # License, or (at your option) any later version. -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# # This program is distributed in the hope that it will be useful, +# # but WITHOUT ANY WARRANTY; without even the implied warranty of +# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# # GNU Affero General Public License for more details. +# # You should have received a copy of the GNU Affero General Public License +# # along with this program. If not, see . -from generation.generator_decorators import QREC_MULT8, generation_function -from generation.helpers.gen_scales import gen_scales -from graph.types import ConvFusionParameters, FilterParameters, LinearFusionParameters -from utils.node_id import NodeId +# from generation.generator_decorators import QREC_MULT8, generation_function +# from generation.helpers.gen_scales import gen_scales +# from graph.types import ConvFusionParameters, Conv2DParameters +# from utils.node_id import NodeId -# pylint: disable=wildcard-import, unused-wildcard-import -from .global_names import * +# # pylint: disable=wildcard-import, unused-wildcard-import +# from .global_names import * -@generation_function("globals", (FilterParameters, ConvFusionParameters, LinearFusionParameters), qrec_types=(QREC_MULT8,)) -def mult8_filter_globals_generator(gen, node, qrec, pnode, fnode) -> bool: - if fnode is not None: - return False - if isinstance(pnode, FilterParameters): - gen_scales(gen, pnode, pnode, qrec) - elif isinstance(pnode, (ConvFusionParameters, LinearFusionParameters)): - cnodes = node.contained_nodes() - quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] - if node.fusion_type in ("conv_active_pool", "conv_active", "linear_active", "conv_pool_active", "conv_pool"): - gen_scales(gen, pnode, cnodes[0], quants[0]) - else: - return False - else: - return False - return True +# @generation_function("globals", (Conv2DParameters, ConvFusionParameters), qrec_types=(QREC_MULT8,)) +# def mult8_filter_globals_generator(gen, node, qrec, pnode, fnode) -> bool: +# if fnode is not None: +# return False +# if isinstance(pnode, Conv2DParameters): +# gen_scales(gen, pnode, pnode, qrec) +# elif isinstance(pnode, ConvFusionParameters): +# cnodes = node.contained_nodes() +# quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] +# if node.fusion_type in ("conv_active_pool", "conv_active", "linear_active", "conv_pool_active", "conv_pool"): +# gen_scales(gen, pnode, cnodes[0], quants[0]) +# else: +# return False +# else: +# return False +# return True diff --git a/tools/nntool/generation/generators/globals/mult8_infos_generator.py b/tools/nntool/generation/generators/globals/mult8_infos_generator.py index ba845fed2..2628e34ea 100644 --- a/tools/nntool/generation/generators/globals/mult8_infos_generator.py +++ b/tools/nntool/generation/generators/globals/mult8_infos_generator.py @@ -12,6 +12,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from graph.types.conv2d import Conv2DParameters +from quantization.multiplicative.scaling_qtypes import MultMulBiasScaleQType from graph.types.activations import HTanHActivationParameters, TanHActivationParameters import math import numpy as np @@ -31,8 +33,7 @@ PaddedAddFusionParameters, PoolingParameters, QuantizeParameters, ReluActivationParameters, SigmoidActivationParameters, SoftMaxParameters) -from quantization.multiplicative.mulbias import (compute_in_out_scale, - set_add_in_scale) +from quantization.multiplicative.mulbias import (compute_in_out_scale, set_add_in_scale) from quantization.qtype import QType from quantization.symmetric.kernels.activations import ( hsigmoid_mult_gen_factors, hswish_mult_gen_factors, @@ -44,69 +45,48 @@ @generation_function("globals", - (FilterParameters, ConvFusionParameters, LinearFusionParameters, ActivationParameters, - GlobalAveragePoolParameters, GlobalMaxPoolParameters, GlobalSumPoolParameters, MatrixMulParameters, - ActivationFusionBase, PoolingParameters, SoftMaxParameters, PaddedAddFusionParameters, - MatMulOpFusionParameters, MatMulOpParameters), + (ActivationParameters, + MatrixMulParameters, + ActivationFusionBase, SoftMaxParameters, PaddedAddFusionParameters), qrec_types=(QREC_MULT8,)) def mult8_infos_generator(gen, node, qrec, pnode, fnode) -> bool: if fnode is not None: return False - if isinstance(pnode, FilterParameters): - for_ne16 = qrec.cache.get('ne16') - in_zero_point = qrec.in_qs[0].zero_point - act_infos(gen, pnode, pnode, None, None, extra1=0, - for_ne16=for_ne16, in_zero_point=in_zero_point) - elif isinstance(pnode, (GlobalPoolingParameters, PoolingParameters)): - compute_in_out_scale(qrec) - act_infos(gen, pnode, pnode, None, qrec) + # if isinstance(pnode, Conv2DParameters): + # for_ne16 = qrec.cache.get('ne16') + # in_zero_point = qrec.in_qs[0].zero_point + # conv_mul_bias = qrec.cache.get('mul_biases_q') + # prenorm = conv_mul_bias.pre_normalization if isinstance(conv_mul_bias, MultMulBiasScaleQType) else 0 + # act_infos(gen, pnode, pnode, None, None, prenorm=prenorm, extra1=0, + # for_ne16=for_ne16, in_zero_point=in_zero_point) + # elif isinstance(pnode, (GlobalPoolingParameters, PoolingParameters)): + # compute_in_out_scale(qrec) + # act_infos(gen, pnode, pnode, None, qrec) elif isinstance(pnode, ActivationParameters): act_infos(gen, pnode, pnode, pnode, gen.G.quantization[NodeId(pnode)]) - elif isinstance(pnode, (ConvFusionParameters, LinearFusionParameters)): - cnodes = node.contained_nodes() - quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] - for_ne16 = any([qrec.cache.get('ne16') for qrec in quants]) - in_zero_point = quants[0].in_qs[0].zero_point - for qrec in quants: - compute_in_out_scale(qrec) - if node.fusion_type.startswith('linear') or node.fusion_type.startswith('conv') or node.fusion_type.startswith('pool'): - if node.fusion_type in ("pool_active"): - act_infos(gen, pnode, cnodes[0], cnodes[1], quants[1], - extra1=0, for_ne16=for_ne16, in_zero_point=in_zero_point) - elif node.fusion_type in ("conv_active_pool", "conv_active", "linear_active"): - act_infos(gen, pnode, cnodes[0], cnodes[1], quants[1], - extra1=0, for_ne16=for_ne16, in_zero_point=in_zero_point) - elif node.fusion_type == "conv_pool_active": - act_infos(gen, pnode, cnodes[0], cnodes[2], quants[2], - extra1=0, for_ne16=for_ne16, in_zero_point=in_zero_point) - elif node.fusion_type == "conv_pool": - act_infos(gen, pnode, cnodes[0], None, - None, extra1=0, for_ne16=for_ne16) - # elif isinstance(pnode, MatrixAddParameters): - # set_add_in_scale(qrec) - # act_infos(gen, pnode, pnode, None, None, - # extra1=qrec.cache['scale_in_mul_biases_q'].qbiases[0], - # extra2=qrec.cache['scale_in_mul_biases_q'].qnorms[0], - # extra3=qrec.cache['scale_mul_biases_q'].qbiases[0], - # extra4=qrec.cache['scale_mul_biases_q'].qnorms[0]) - # elif isinstance(pnode, PaddedAddFusionParameters): + # elif isinstance(pnode, ConvFusionParameters): # cnodes = node.contained_nodes() # quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] + # for_ne16 = any([qrec.cache.get('ne16') for qrec in quants]) + # in_zero_point = quants[0].in_qs[0].zero_point # for qrec in quants: # compute_in_out_scale(qrec) - # act_node = [cnode for cnode in cnodes if isinstance( - # cnode, ActivationParameters)] - # act_node = act_node[0] if act_node else None - # act_qrec = quants[-1] if act_node else None - # set_add_in_scale(quants[1]) - # act_infos(gen, pnode, pnode, act_node, act_qrec, - # extra1=quants[1].cache['scale_in_mul_biases_q'].qbiases[0], - # extra2=quants[1].cache['scale_in_mul_biases_q'].qnorms[0], - # extra3=quants[1].cache['scale_mul_biases_q'].qbiases[0], - # extra4=quants[1].cache['scale_mul_biases_q'].qnorms[0]) - # act_infos(gen, pnode, cnodes[0], act_node, act_qrec, extra_name="Pad", - # extra1=quants[1].cache['scale_mul_biases_q'].qbiases[0], - # extra2=quants[1].cache['scale_mul_biases_q'].qnorms[0]) + # if node.fusion_type.startswith('linear') or node.fusion_type.startswith('conv') or node.fusion_type.startswith('pool'): + # if node.fusion_type in ("pool_active"): + # act_infos(gen, pnode, cnodes[0], cnodes[1], quants[1], + # extra1=0, for_ne16=for_ne16, in_zero_point=in_zero_point) + # else: + # conv_mul_bias = quants[0].cache.get('mul_biases_q') + # prenorm = conv_mul_bias.pre_normalization if isinstance(conv_mul_bias, MultMulBiasScaleQType) else 0 + # if node.fusion_type in ("conv_active_pool", "conv_active", "linear_active"): + # act_infos(gen, pnode, cnodes[0], cnodes[1], quants[1], prenorm=prenorm, + # extra1=0, for_ne16=for_ne16, in_zero_point=in_zero_point) + # elif node.fusion_type == "conv_pool_active": + # act_infos(gen, pnode, cnodes[0], cnodes[2], quants[2], prenorm=prenorm, + # extra1=0, for_ne16=for_ne16, in_zero_point=in_zero_point) + # elif node.fusion_type == "conv_pool": + # act_infos(gen, pnode, cnodes[0], None, None, prenorm=prenorm, + # extra1=0, for_ne16=for_ne16) elif isinstance(pnode, MatrixMulParameters): compute_in_out_scale(qrec, in_idx=(0, 1), out_idx=0) act_infos(gen, pnode, pnode, None, None, @@ -114,23 +94,16 @@ def mult8_infos_generator(gen, node, qrec, pnode, fnode) -> bool: extra2=qrec.cache['scale_mul_biases_q'].qnorms[0]) elif isinstance(pnode, SoftMaxParameters): act_infos(gen, pnode, pnode, pnode, qrec) - elif isinstance(pnode, ActivationFusionBase): - cnodes = node.contained_nodes() - quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] - for qrec in quants: - compute_in_out_scale(qrec) - if isinstance(cnodes[0], (GlobalPoolingParameters, PoolingParameters)): - act_infos(gen, pnode, cnodes[0], cnodes[1], quants[1]) - # elif isinstance(cnodes[0], MatrixAddParameters): - # set_add_in_scale(quants[0]) - # act_infos(gen, pnode, cnodes[0], cnodes[1], quants[1], - # extra1=quants[0].cache['scale_in_mul_biases_q'].qbiases[0], - # extra2=quants[0].cache['scale_in_mul_biases_q'].qnorms[0], - # extra3=quants[0].cache['scale_mul_biases_q'].qbiases[0], - # extra4=quants[0].cache['scale_mul_biases_q'].qnorms[0]) - else: - return False - return True + # elif isinstance(pnode, ActivationFusionBase): + # cnodes = node.contained_nodes() + # quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] + # for qrec in quants: + # compute_in_out_scale(qrec) + # if isinstance(cnodes[0], (GlobalPoolingParameters, PoolingParameters)): + # act_infos(gen, pnode, cnodes[0], cnodes[1], quants[1]) + # else: + # return False + # return True elif isinstance(pnode, (MatMulOpParameters, MatMulOpFusionParameters)): if isinstance(pnode, MatMulOpFusionParameters): cnodes = node.contained_nodes() @@ -209,7 +182,7 @@ def mult8_infos_generator(gen, node, qrec, pnode, fnode) -> bool: def act_infos(gen, pnode, fnode, act_params, act_q, extra1=0, extra2=0, extra3=0, extra4=0, extra5=None, extra6=None, - extra_name='', for_ne16=False, in_zero_point=0): + prenorm=0, extra_name='', for_ne16=False, in_zero_point=0): if isinstance(pnode, FilterParameters): comment = str.format("BiasQ: {}", extra1) elif isinstance(pnode, MatrixAddParameters): @@ -330,8 +303,10 @@ def act_infos(gen, pnode, fnode, act_params, act_q, dtype=np.int8) contents = np.append(contents, [extra1, extra2, extra3, extra4]) - if extra5 is not None or extra6 is not None: - contents = np.append(contents, [extra5, extra6]) + if extra5 is not None: + contents = np.append(contents, [extra5]) + if extra6 is not None: + contents = np.append(contents, [extra6]) if for_ne16: # append weights_offset and pad_val for ne16 @@ -350,7 +325,7 @@ def act_infos(gen, pnode, fnode, act_params, act_q, w_offset4 = np.bitwise_and(w_offset, 0xFF000000) >> 24 contents = np.append( - contents, [0, pad_value1, pad_value2, w_offset1, w_offset2, w_offset3, w_offset4]) + contents, [[prenorm] if prenorm else [0], pad_value1, pad_value2, w_offset1, w_offset2, w_offset3, w_offset4]) cname, file_name = gen_constant(gen, pnode, fnode, INFOS, extra_name) const_info = ConstantInfo(file_name, QType.Pow2( diff --git a/tools/nntool/generation/generators/globals/mult8_ssd_globals_generator.py b/tools/nntool/generation/generators/globals/mult8_ssd_globals_generator.py deleted file mode 100644 index a7e8c0bfc..000000000 --- a/tools/nntool/generation/generators/globals/mult8_ssd_globals_generator.py +++ /dev/null @@ -1,89 +0,0 @@ -# # Copyright (C) 2020 GreenWaves Technologies, SAS - -# # This program is free software: you can redistribute it and/or modify -# # it under the terms of the GNU Affero General Public License as -# # published by the Free Software Foundation, either version 3 of the -# # License, or (at your option) any later version. - -# # This program is distributed in the hope that it will be useful, -# # but WITHOUT ANY WARRANTY; without even the implied warranty of -# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# # GNU Affero General Public License for more details. -# # You should have received a copy of the GNU Affero General Public License -# # along with this program. If not, see . - -# import numpy as np -# from generation.at_types.constant_info import ConstantInfo -# from generation.at_types.tc_arg_info import GlobalArgInfo -# from generation.generator_decorators import QREC_MULT8, generation_function -# from graph.types import SSDDetectorParameters -# from quantization.multiplicative.mulbias import set_ssd_scales -# from quantization.multiplicative.mult_utils import compute_mul_bias -# from quantization.qtype import QType - -# # pylint: disable=wildcard-import,unused-wildcard-import -# from .global_names import * -# from .mult8_infos_generator import gen_constant - - -# @generation_function("globals", (SSDDetectorParameters, ), qrec_types=(QREC_MULT8,)) -# def mult8_ssd_globals_generator(gen, node, qrec, pnode, fnode) -> bool: -# del fnode, pnode -# gen_ssd_globals(gen, node, qrec) -# return True - - -# def gen_ssd_globals(gen, node, qrec): -# set_ssd_scales(qrec, node) -# scores_q = qrec.in_qs[1] -# scores_scale, scores_norm = compute_mul_bias(scores_q.scale) - -# cname_scales, file_name_scales = gen_constant(gen, node, node, SSD_SCALES) -# contents = np.array([qrec.cache['scale_x_q'].qbiases, -# qrec.cache['scale_x_anc_q'].qbiases, -# qrec.cache['scale_y_q'].qbiases, -# qrec.cache['scale_y_anc_q'].qbiases, -# qrec.cache['scale_h_q'].qbiases, -# qrec.cache['scale_w_q'].qbiases, -# qrec.cache['scale_ao_q'].qbiases, -# scores_scale], dtype=np.int8) -# scale_info = ConstantInfo(file_name_scales, QType.Pow2( -# bits=8, q=0, signed=True), contents=contents) - -# cname_norms, file_name_norms = gen_constant(gen, node, node, SSD_NORMS) -# contents = np.array([qrec.cache['scale_x_q'].qnorms, -# qrec.cache['scale_x_anc_q'].qnorms, -# qrec.cache['scale_y_q'].qnorms, -# qrec.cache['scale_y_anc_q'].qnorms, -# qrec.cache['scale_h_q'].qnorms, -# qrec.cache['scale_w_q'].qnorms, -# qrec.cache['scale_ao_q'].qnorms, -# scores_norm], dtype=np.int8) -# norms_info = ConstantInfo(file_name_norms, QType.Pow2( -# bits=8, q=0, signed=True), contents=contents) - -# score_threshold = scores_q.quantize(node.nms_score_threshold) -# cname_infos, file_name_infos = gen_constant(gen, node, node, INFOS) -# contents = np.array([round(node.nms_iou_threshold * 2**7), # Q7 -# score_threshold, # Q0 [0:255] -# node.max_detections, # Q0 [0:255] -# node.max_classes_per_detection, # Q0 [0:255] -# node.max_bb_before_nms >> 8, -# node.max_bb_before_nms], dtype=np.int8) # max_bb = Infos[4]<<8 + Infos[5] -# ssd_infos = ConstantInfo(file_name_infos, QType.Pow2( -# bits=8, q=0, signed=True), contents=contents) - -# gen.globals.append(GlobalArgInfo(qrec.cache['scale_x_q'].ctype, cname_scales, -# gen.opts['default_global_home_location'], -# gen.opts['default_global_exec_location'], -# const_info=scale_info)) - -# gen.globals.append(GlobalArgInfo(qrec.cache['scale_x_q'].shift_ctype, cname_norms, -# gen.opts['default_global_home_location'], -# gen.opts['default_global_exec_location'], -# const_info=norms_info)) - -# gen.globals.append(GlobalArgInfo('uint8', cname_infos, -# gen.opts['default_global_home_location'], -# gen.opts['default_global_exec_location'], -# const_info=ssd_infos)) diff --git a/tools/nntool/generation/generators/kernels/mult8/linear_relu_kernels_generator.py b/tools/nntool/generation/generators/kernels/mult8/linear_relu_kernels_generator.py index 8ad49f956..d94b4af8d 100644 --- a/tools/nntool/generation/generators/kernels/mult8/linear_relu_kernels_generator.py +++ b/tools/nntool/generation/generators/kernels/mult8/linear_relu_kernels_generator.py @@ -1,172 +1,172 @@ -# Copyright (C) 2020 GreenWaves Technologies, SAS - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -import logging - -from generation.at_types.at_params import (NO_ACTIVATION, gen_active_at_params, - gen_linear_at_params) -from generation.at_types.gen_ctrl import GenCtrl -from generation.code_block import CodeBlock -from generation.generator_decorators import (QREC_MULT8, - generation_function) -from graph.types import LinearFusionParameters, FcParameters -from utils.node_id import NodeId - -from ..autotiler_kernel import (AutotilerKernel, gen_include_paths, - gen_includes, gen_sources, - kernel_include_paths, kernel_includes, - kernel_sources) - -LOG = logging.getLogger("nntool." + __name__) - - -@generation_function("kernels", (LinearFusionParameters, FcParameters), qrec_types=(QREC_MULT8, )) -def linear_relu_kernels_generator(gen, node, qrec, in_eparams, out_eparams, cname): - del in_eparams, out_eparams - if isinstance(node, FcParameters): - gen.kernels.append(LinearReluKernel(node.name, cname, node, qrec, None, None, - at_ver=gen.opts['at_ver'], gen_ctrl=node.get_gen_ctrl( - ), - force_relu=gen.force_relu)) - elif isinstance(node, LinearFusionParameters) and node.fusion_type == "linear_active": - cnodes = node.contained_nodes() - quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] - gen.kernels.append(LinearReluKernel(node.name, cname, cnodes[0], quants[0], - cnodes[1], quants[1], at_ver=gen.opts['at_ver'], - gen_ctrl=node.get_gen_ctrl(), force_relu=gen.force_relu)) - else: - return False - return True - - -def gen_at_linear_relu(code_block, cname, biases_ds, mulbiases_ds, - in_dim, out_dim, linear_oper, act_oper, gen_ctrl, at_ver=3): - del at_ver - code_block.write('CNN_LinearAct_SQ8("{}", {}, {}, {}, {}, {}, {}, {});', - cname, - gen_ctrl, - biases_ds, - mulbiases_ds, - in_dim, - out_dim, - linear_oper, - act_oper) - - -def gen_at_linear_relu_ne16(code_block, cname, in_size, out_size, filter_bits, biases_ds, mulbiases_ds, - in_dim, out_dim, linear_oper, act_oper, gen_ctrl, at_ver=3): - del at_ver - code_block.write('CNN_LinearAct_NE16("{}", {}, {}, {}, {}, {}, {}, {}, {}, {}, {});', - cname, - gen_ctrl, - in_size, - out_size, - biases_ds, - mulbiases_ds, - filter_bits, - in_dim, - out_dim, - linear_oper, - act_oper) - - -@kernel_sources( - '$(TILER_CNN_KERNEL_PATH_SQ8)/CNN_Bias_Linear_SQ8.c') -@kernel_include_paths( - '$(TILER_CNN_KERNEL_PATH)', - '$(TILER_CNN_KERNEL_PATH_SQ8)') -@kernel_includes( - 'CNN_BasicKernels_SQ8.h') -@gen_sources( - '$(TILER_CNN_GENERATOR_PATH)/CNN_Generator_Util.c', - '$(TILER_CNN_GENERATOR_PATH_SQ8)/CNN_Generators_SQ8.c') -@gen_include_paths( - '$(TILER_CNN_GENERATOR_PATH)', - '$(TILER_CNN_GENERATOR_PATH_SQ8)') -@gen_includes( - 'CNN_Generators_SQ8.h') -class LinearReluKernel(AutotilerKernel): - def __init__(self, node_name, cname, linear_params, linear_q, act_params, act_q, at_ver=3, gen_ctrl=None, force_relu=True): - if gen_ctrl is None: - self.gen_ctrl = GenCtrl(None, cname=cname) - else: - gen_ctrl.cname = cname - self.gen_ctrl = gen_ctrl - - assert linear_params is not None, "linear should always be included" - at_linear_params = gen_linear_at_params(linear_params) - in_dim = linear_params.in_dims[0] - out_dim = linear_params.out_dims[0] - filter_q = linear_q.in_qs[1] - in_q = linear_q.in_qs[0] - out_q = linear_q.out_qs[0] - bias_q = linear_q.in_qs[2] - mulbiases_q = linear_q.cache['mul_biases_q'] - - if act_params is not None: - at_act_params = gen_active_at_params(act_params, force_relu=force_relu, - asymmetric=act_q.in_qs[0].zero_point != 0) - if in_dim is None: - in_dim = act_params.in_dims[0] - if out_dim is None: - out_dim = act_params.out_dims[0] - if in_q is None: - in_q = act_q.in_qs[0] - out_q = act_q.out_qs[0] - else: - at_act_params = NO_ACTIVATION - - self.at_linear_params = at_linear_params - self.in_dim = in_dim.size() - self.out_dim = out_dim.size() - self.in_q = in_q - self.bias_q = bias_q - self.mulbiases_q = mulbiases_q - self.out_q = out_q - self.filter_q = filter_q - self.at_act_params = at_act_params - self.cname = cname - self.node_name = node_name - self.at_ver = at_ver - self.ne16 = linear_q.cache.get('ne16') - - def code(self, code_block=None): - if code_block is None: - code_block = CodeBlock() - - code_block.comment("generator for {}", self.node_name) - - if not self.gen_ctrl.is_unmodified: - self.gen_ctrl.gen_ctrl_decl(code_block) - gen_ctrl = self.gen_ctrl.ctrl_name - else: - gen_ctrl = "0" - - if self.ne16: - gen_at_linear_relu_ne16(code_block, self.cname, - self.in_q.dtype_bits//8 if self.in_q.signed else -self.in_q.dtype_bits//8, - self.out_q.dtype_bits//8 if self.out_q.signed else -self.out_q.dtype_bits//8, - self.filter_q.bits, self.bias_q.dtype_bits//8, self.mulbiases_q.dtype_bits//8, - self.in_dim, self.out_dim, - self.at_linear_params.LinearOper, - self.at_act_params.ReLUOper, - at_ver=self.at_ver, gen_ctrl=gen_ctrl) - else: - gen_at_linear_relu(code_block, self.cname, self.bias_q.dtype_bits//8, self.mulbiases_q.dtype_bits//8, - self.in_dim, self.out_dim, - self.at_linear_params.LinearOper, - self.at_act_params.ReLUOper, - at_ver=self.at_ver, gen_ctrl=gen_ctrl) - - return code_block +# # Copyright (C) 2020 GreenWaves Technologies, SAS + +# # This program is free software: you can redistribute it and/or modify +# # it under the terms of the GNU Affero General Public License as +# # published by the Free Software Foundation, either version 3 of the +# # License, or (at your option) any later version. + +# # This program is distributed in the hope that it will be useful, +# # but WITHOUT ANY WARRANTY; without even the implied warranty of +# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# # GNU Affero General Public License for more details. +# # You should have received a copy of the GNU Affero General Public License +# # along with this program. If not, see . + +# import logging + +# from generation.at_types.at_params import (NO_ACTIVATION, gen_active_at_params, +# gen_linear_at_params) +# from generation.at_types.gen_ctrl import GenCtrl +# from generation.code_block import CodeBlock +# from generation.generator_decorators import (QREC_MULT8, +# generation_function) +# from graph.types import LinearFusionParameters, FcParameters +# from utils.node_id import NodeId + +# from ..autotiler_kernel import (AutotilerKernel, gen_include_paths, +# gen_includes, gen_sources, +# kernel_include_paths, kernel_includes, +# kernel_sources) + +# LOG = logging.getLogger("nntool." + __name__) + + +# @generation_function("kernels", (LinearFusionParameters, FcParameters), qrec_types=(QREC_MULT8, )) +# def linear_relu_kernels_generator(gen, node, qrec, in_eparams, out_eparams, cname): +# del in_eparams, out_eparams +# if isinstance(node, FcParameters): +# gen.kernels.append(LinearReluKernel(node.name, cname, node, qrec, None, None, +# at_ver=gen.opts['at_ver'], gen_ctrl=node.get_gen_ctrl( +# ), +# force_relu=gen.force_relu)) +# elif isinstance(node, LinearFusionParameters) and node.fusion_type == "linear_active": +# cnodes = node.contained_nodes() +# quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] +# gen.kernels.append(LinearReluKernel(node.name, cname, cnodes[0], quants[0], +# cnodes[1], quants[1], at_ver=gen.opts['at_ver'], +# gen_ctrl=node.get_gen_ctrl(), force_relu=gen.force_relu)) +# else: +# return False +# return True + + +# def gen_at_linear_relu(code_block, cname, biases_ds, mulbiases_ds, +# in_dim, out_dim, linear_oper, act_oper, gen_ctrl, at_ver=3): +# del at_ver +# code_block.write('CNN_LinearAct_SQ8("{}", {}, {}, {}, {}, {}, {}, {});', +# cname, +# gen_ctrl, +# biases_ds, +# mulbiases_ds, +# in_dim, +# out_dim, +# linear_oper, +# act_oper) + + +# def gen_at_linear_relu_ne16(code_block, cname, in_size, out_size, filter_bits, biases_ds, mulbiases_ds, +# in_dim, out_dim, linear_oper, act_oper, gen_ctrl, at_ver=3): +# del at_ver +# code_block.write('CNN_LinearAct_NE16("{}", {}, {}, {}, {}, {}, {}, {}, {}, {}, {});', +# cname, +# gen_ctrl, +# in_size, +# out_size, +# biases_ds, +# mulbiases_ds, +# filter_bits, +# in_dim, +# out_dim, +# linear_oper, +# act_oper) + + +# @kernel_sources( +# '$(TILER_CNN_KERNEL_PATH_SQ8)/CNN_Bias_Linear_SQ8.c') +# @kernel_include_paths( +# '$(TILER_CNN_KERNEL_PATH)', +# '$(TILER_CNN_KERNEL_PATH_SQ8)') +# @kernel_includes( +# 'CNN_BasicKernels_SQ8.h') +# @gen_sources( +# '$(TILER_CNN_GENERATOR_PATH)/CNN_Generator_Util.c', +# '$(TILER_CNN_GENERATOR_PATH_SQ8)/CNN_Generators_SQ8.c') +# @gen_include_paths( +# '$(TILER_CNN_GENERATOR_PATH)', +# '$(TILER_CNN_GENERATOR_PATH_SQ8)') +# @gen_includes( +# 'CNN_Generators_SQ8.h') +# class LinearReluKernel(AutotilerKernel): +# def __init__(self, node_name, cname, linear_params, linear_q, act_params, act_q, at_ver=3, gen_ctrl=None, force_relu=True): +# if gen_ctrl is None: +# self.gen_ctrl = GenCtrl(None, cname=cname) +# else: +# gen_ctrl.cname = cname +# self.gen_ctrl = gen_ctrl + +# assert linear_params is not None, "linear should always be included" +# at_linear_params = gen_linear_at_params(linear_params) +# in_dim = linear_params.in_dims[0] +# out_dim = linear_params.out_dims[0] +# filter_q = linear_q.in_qs[1] +# in_q = linear_q.in_qs[0] +# out_q = linear_q.out_qs[0] +# bias_q = linear_q.in_qs[2] +# mulbiases_q = linear_q.cache['mul_biases_q'] + +# if act_params is not None: +# at_act_params = gen_active_at_params(act_params, force_relu=force_relu, +# asymmetric=act_q.in_qs[0].zero_point != 0) +# if in_dim is None: +# in_dim = act_params.in_dims[0] +# if out_dim is None: +# out_dim = act_params.out_dims[0] +# if in_q is None: +# in_q = act_q.in_qs[0] +# out_q = act_q.out_qs[0] +# else: +# at_act_params = NO_ACTIVATION + +# self.at_linear_params = at_linear_params +# self.in_dim = in_dim.size() +# self.out_dim = out_dim.size() +# self.in_q = in_q +# self.bias_q = bias_q +# self.mulbiases_q = mulbiases_q +# self.out_q = out_q +# self.filter_q = filter_q +# self.at_act_params = at_act_params +# self.cname = cname +# self.node_name = node_name +# self.at_ver = at_ver +# self.ne16 = linear_q.cache.get('ne16') + +# def code(self, code_block=None): +# if code_block is None: +# code_block = CodeBlock() + +# code_block.comment("generator for {}", self.node_name) + +# if not self.gen_ctrl.is_unmodified: +# self.gen_ctrl.gen_ctrl_decl(code_block) +# gen_ctrl = self.gen_ctrl.ctrl_name +# else: +# gen_ctrl = "0" + +# if self.ne16: +# gen_at_linear_relu_ne16(code_block, self.cname, +# self.in_q.dtype_bits//8 if self.in_q.signed else -self.in_q.dtype_bits//8, +# self.out_q.dtype_bits//8 if self.out_q.signed else -self.out_q.dtype_bits//8, +# self.filter_q.bits, self.bias_q.dtype_bits//8, self.mulbiases_q.dtype_bits//8, +# self.in_dim, self.out_dim, +# self.at_linear_params.LinearOper, +# self.at_act_params.ReLUOper, +# at_ver=self.at_ver, gen_ctrl=gen_ctrl) +# else: +# gen_at_linear_relu(code_block, self.cname, self.bias_q.dtype_bits//8, self.mulbiases_q.dtype_bits//8, +# self.in_dim, self.out_dim, +# self.at_linear_params.LinearOper, +# self.at_act_params.ReLUOper, +# at_ver=self.at_ver, gen_ctrl=gen_ctrl) + +# return code_block diff --git a/tools/nntool/generation/generators/kernels/pow2/matmul_kernels_generator.py b/tools/nntool/generation/generators/kernels/pow2/matmul_kernels_generator.py index 3624a2905..dab47e355 100644 --- a/tools/nntool/generation/generators/kernels/pow2/matmul_kernels_generator.py +++ b/tools/nntool/generation/generators/kernels/pow2/matmul_kernels_generator.py @@ -13,6 +13,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from graph.types.tensor_arithmetic import MatMulTransposedParameters import logging from generation.at_generators.cnn_convolution_pool_relu import \ @@ -37,16 +38,18 @@ def matmul_relu_kernels_generator(gen, node, qrec, in_eparams, out_eparams, cnam if isinstance(node, MatMulOpFusionParameters): cnodes = node.contained_nodes() quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] + matmul_node = cnodes[0] act_node = cnodes[-1] if isinstance(cnodes[-1], ActivationParameters) else None mul_qrec = quants[0] act_qrec = quants[1] else: + matmul_node = node act_node = None mul_qrec = qrec act_qrec = None gen.kernels.append(MatMulReluKernel( - cname, node, mul_qrec, act_node, act_qrec, gen_ctrl=node.get_gen_ctrl())) + cname, node, matmul_node, mul_qrec, act_node, act_qrec, gen_ctrl=node.get_gen_ctrl())) return True return False @@ -57,11 +60,11 @@ class MatMulReluKernel(NewAutoTilerKernel): CNN_MatMul("{cname}", {gen_ctrl}, {at_bits(in1_qtype)}, {at_bits(in2_qtype)}, {bias_bits}, {at_bits(out_qtype)}, {in1_qtype.q}, {in2_qtype.q}, {bias_q}, {out_qtype.q}, 1, 1, 1, 1, - {in1_shape[1]}, {in1_shape[0]}, {in2_shape[1]}, {in2_shape[0]}, 0, 0, 1, 1, + {in1_shape[1]}, {in1_shape[0]}, {width_2}, {height_2}, 0, 0, 1, 1, {relu_lower}, {relu_upper}, {mult_op}, {act_op}); ''' - def __init__(self, cname, params, matmul_qrec, act_params, act_qrec, gen_ctrl=None, out_qtype=None): + def __init__(self, cname, params, matmul_params, matmul_qrec, act_params, act_qrec, gen_ctrl=None, out_qtype=None): if gen_ctrl is None: gen_ctrl = GenCtrl(None, cname=cname) else: @@ -72,18 +75,25 @@ def __init__(self, cname, params, matmul_qrec, act_params, act_qrec, gen_ctrl=No f'which are not supported by the matmul kernel') in1_shape = params.in_dims[0].shape in2_shape = params.in_dims[1].shape + height_2 = in2_shape[0] + width_2 = in2_shape[1] out_shape = params.out_dims[0].shape in1_qtype = matmul_qrec.in_qs[0] in2_qtype = matmul_qrec.in_qs[1] - if len(matmul_qrec.in_qs) > 2: + if len(matmul_params.in_dims) == 3: bias_bits = at_bits(matmul_qrec.in_qs[2]) bias_q = matmul_qrec.in_qs[2].q - mult_op = 'KOP_MATMUL' + matmul_op = 'KOP_MATMUL' else: bias_q = 0 bias_bits = 0 - mult_op = 'KOP_MATMUL_NOBIAS' + matmul_op = 'KOP_MATMUL_NOBIAS' + + if isinstance(matmul_params, MatMulTransposedParameters): + matmul_op += '_TRANSPOSED' + height_2 = in2_shape[1] + width_2 = in2_shape[0] if act_params is not None: act_op = gen_activation_op(act_params.activation) @@ -106,11 +116,12 @@ def __init__(self, cname, params, matmul_qrec, act_params, act_qrec, gen_ctrl=No 'bias_bits': bias_bits, 'out_qtype': out_qtype, 'in1_shape': in1_shape, - 'in2_shape': in2_shape, + 'height_2': height_2, + 'width_2': width_2, 'out_shape': out_shape, 'relu_lower': relu_lower, 'relu_upper': relu_upper, - 'mult_op': mult_op, + 'mult_op': matmul_op, 'act_op': act_op } diff --git a/tools/nntool/generation/naming_convension.py b/tools/nntool/generation/naming_convension.py index bcd7e464f..cc05166c2 100644 --- a/tools/nntool/generation/naming_convension.py +++ b/tools/nntool/generation/naming_convension.py @@ -13,15 +13,15 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from abc import ABC, abstractmethod -from graph.types.input_output import InputParameters, OutputParameters import hashlib +from abc import ABC, abstractmethod from graph.types import (ActivationFusionBase, ActivationParameters, ConcatParameters, ConstantInputParameters, Conv2DParameters, ConvFusionParameters, FcParameters, - GlobalPoolingParameters, MatrixAddParameters, - MatrixMulParameters, PoolingParameters, + GlobalPoolingParameters, InputParameters, + MatrixAddParameters, MatrixMulParameters, + OutputParameters, PoolingParameters, SoftMaxParameters) from utils.slugify import variablize diff --git a/tools/nntool/generation/new_generators/float/matadd_float.py b/tools/nntool/generation/new_generators/float/matadd_float.py index 16bda0dd7..914afcc10 100644 --- a/tools/nntool/generation/new_generators/float/matadd_float.py +++ b/tools/nntool/generation/new_generators/float/matadd_float.py @@ -26,13 +26,13 @@ from generation.generators.kernels.autotiler_kernel import NewAutoTilerKernel from generation.new_generators.generator_base import (GeneratorBase, ktype, paramstype) -from graph.types import ActivationFusion, MatrixAddParameters +from graph.types import ActivationFusion, MatrixAddParameters, BroadcastableActivationFusion from quantization.multiplicative.mulbias import set_add_in_scale from utils.node_id import NodeId LOG = logging.getLogger("nntool." + __name__) -@paramstype(MatrixAddParameters, ActivationFusion) +@paramstype(MatrixAddParameters, ActivationFusion, BroadcastableActivationFusion) @ktype("float") class MatAddSQ8Generator(GeneratorBase): @@ -42,7 +42,7 @@ def globals_generator(cls, gen, node, qrec, pnode, fnode) -> bool: @classmethod def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: - if isinstance(node, ActivationFusion): + if isinstance(node, (ActivationFusion, BroadcastableActivationFusion)): cnodes = node.contained_nodes() quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] if isinstance(cnodes[0], MatrixAddParameters): @@ -66,7 +66,7 @@ def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> @classmethod def kernel_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: - if isinstance(node, ActivationFusion): + if isinstance(node, (ActivationFusion, BroadcastableActivationFusion)): cnodes = node.contained_nodes() if isinstance(cnodes[0], MatrixAddParameters): gen.kernels.append(MatAddKernel(node.name, cname, cnodes[0], cnodes[1], force_relu=gen.force_relu)) diff --git a/tools/nntool/generation/new_generators/float/matmult_float.py b/tools/nntool/generation/new_generators/float/matmult_float.py index c06854cf3..6af3a3d11 100644 --- a/tools/nntool/generation/new_generators/float/matmult_float.py +++ b/tools/nntool/generation/new_generators/float/matmult_float.py @@ -22,7 +22,7 @@ from generation.generators.kernels.autotiler_kernel import NewAutoTilerKernel from generation.new_generators.generator_base import (GeneratorBase, ktype, paramstype) -from graph.types import MatMulOpFusionParameters, MatMulOpParameters +from graph.types import MatMulOpFusionParameters, MatMulOpParameters, MatMulTransposedParameters from graph.types.activations import (ActivationParameters, ReluActivationParameters) @@ -40,17 +40,29 @@ def globals_generator(cls, gen, node, qrec, pnode, fnode) -> bool: @classmethod def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: - gen.bindings.append( - CommentBindingList("Node {} inq1 {} inq2 {} outq {} biasesq {}", cname, - qrec.in_qs[0], qrec.in_qs[1], qrec.out_qs[0], qrec.in_qs[2]) - ) - gen.bindings.append( - NodeBindingList(cname, - GNodeArgEdge(in_eparams[1]), - GNodeArgEdge(in_eparams[0]), - GNodeArgEdge(in_eparams[2]), - GNodeArgEdge(out_eparams[0], direction="GNA_OUT") - )) + if len(node.in_dims) == 3: + gen.bindings.append( + CommentBindingList("Node {} inq1 {} inq2 {} outq {} biasesq {}", cname, + qrec.in_qs[0], qrec.in_qs[1], qrec.out_qs[0], qrec.in_qs[2]) + ) + gen.bindings.append( + NodeBindingList(cname, + GNodeArgEdge(in_eparams[1]), + GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(in_eparams[2]), + GNodeArgEdge(out_eparams[0], direction="GNA_OUT") + )) + else: + gen.bindings.append( + CommentBindingList("Node {} inq1 {} inq2 {} outq {}", cname, + qrec.in_qs[0], qrec.in_qs[1], qrec.out_qs[0]) + ) + gen.bindings.append( + NodeBindingList(cname, + GNodeArgEdge(in_eparams[1]), + GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(out_eparams[0], direction="GNA_OUT") + )) return True @classmethod @@ -81,7 +93,7 @@ class MatMulFloatKernel(NewAutoTilerKernel): CALL_TEMPLATE = """ // generator for {node_name} CNN_MatMulAct_fp16("{cname}", {gen_ctrl}, {ColM1}, {LineM1}, {ColM2}, - {LineM2}, {Width}, {Height}, {Scx}, {Scy}, KOP_MATMUL, {actoper}); + {LineM2}, {Width}, {Height}, {Scx}, {Scy}, {kop_matmul}, {actoper}); """ def __init__(self, node_name, cname, params, aparams, qrec, gen_ctrl=None): @@ -94,16 +106,20 @@ def __init__(self, node_name, cname, params, aparams, qrec, gen_ctrl=None): gen_ctrl.ReluN = aparams.upper_bound in_dims = params.in_dims + matop = "KOP_MATMUL" if len(in_dims) > 2 else "KOP_MATMUL_NOBIAS" + if isinstance(params, MatMulTransposedParameters): + matop += "_TRANSPOSED" attrs = { 'ColM1': in_dims[0][1], 'LineM1': in_dims[0][0], - 'ColM2': in_dims[1][1], - 'LineM2': in_dims[1][0], + 'ColM2': in_dims[1][0] if isinstance(params, MatMulTransposedParameters) else in_dims[1][1], + 'LineM2': in_dims[1][1] if isinstance(params, MatMulTransposedParameters) else in_dims[1][0], 'Width': 0, 'Height': 0, 'Scx': 1, 'Scy': 1, + 'kop_matmul': matop, 'actoper': gen_activation_op(aparams.activation if aparams else "none") } diff --git a/tools/nntool/generation/new_generators/float/ssd_postprocessing_float.py b/tools/nntool/generation/new_generators/float/ssd_postprocessing_float.py index e2666d9fa..6fd0b4bea 100644 --- a/tools/nntool/generation/new_generators/float/ssd_postprocessing_float.py +++ b/tools/nntool/generation/new_generators/float/ssd_postprocessing_float.py @@ -15,7 +15,6 @@ import logging -from generation.at_types.at_params import gen_activation_op from generation.at_types.gen_ctrl import GenCtrl from generation.bindings import (CommentBindingList, GNodeArgEdge, NodeBindingList) @@ -23,8 +22,6 @@ from generation.new_generators.generator_base import (GeneratorBase, ktype, paramstype) from graph.types import SSDDetectorParameters -from graph.types.activations import (ActivationParameters, - ReluActivationParameters) LOG = logging.getLogger("nntool." + __name__) diff --git a/tools/nntool/generation/new_generators/helpers/act_infos.py b/tools/nntool/generation/new_generators/helpers/act_infos.py new file mode 100644 index 000000000..c8a24f610 --- /dev/null +++ b/tools/nntool/generation/new_generators/helpers/act_infos.py @@ -0,0 +1,114 @@ +from quantization.qtype import QType +import numpy as np +from graph.types import (HSigmoidActivationParameters, HSwishActivationParameters, + LeakyActivationParameters, TanHActivationParameters, ReluActivationParameters, + SigmoidActivationParameters, SoftMaxParameters) +from quantization.multiplicative.mulbias import compute_in_out_scale +from quantization.symmetric.kernels.activations import (hsigmoid_mult_gen_factors, hswish_mult_gen_factors, leak_mult_gen_factor_q7) + +def gen_act_infos(act_params, act_q): + comment = "" + if isinstance(act_params, ReluActivationParameters): + compute_in_out_scale(act_q) + actscale = act_q.cache['scale_mul_biases_q'].qbiases[0] + actscalen = act_q.cache['scale_mul_biases_q'].qnorms[0] + if act_params.upper_bound is None: # or fnode is not None: + if act_q.in_qs[0].zero_point == 0: + contents = np.array( + [actscale, actscalen, 0, 0, 0], dtype=np.int8) + if len(comment) == 0: + comment = "all 0" + else: + fac_1 = act_q.in_qs[0].zero_point + contents = np.array( + [actscale, actscalen, fac_1, 0, 0], dtype=np.int8) + comment += str.format("in: {:05f} out: {:05f} A0: {} B0: 0 C0: 0", + act_q.in_qs[0].scale[0], + act_q.out_qs[0].scale[0], + fac_1[0]) + else: + if act_q.in_qs[0].zero_point == 0: + fac_1 = act_q.in_qs[0].quantize(act_params.upper_bound) + contents = np.array([actscale, actscalen, fac_1, 0, 0], + dtype=np.int8) + comment += str.format("in: {:05f} out: {:05f} A0: {} B0: 0 C0: 0", + act_q.in_qs[0].scale[0], + act_q.out_qs[0].scale[0], + fac_1[0]) + else: + fac_1 = act_q.in_qs[0].zero_point + fac_2 = act_q.in_qs[0].quantize(act_params.upper_bound) + contents = np.array([actscale, actscalen, fac_1, fac_2, 0], + dtype=np.int8) + comment += str.format("in: {:05f} out: {:05f} A0: {} B0: {} C0: 0", + act_q.in_qs[0].scale[0], + act_q.out_qs[0].scale[0], + fac_1[0], + fac_2[0]) + elif isinstance(act_params, HSigmoidActivationParameters): + # currently combines all scaling factors into one scale and shift + assert act_q.in_qs[0].zero_point == 0 and act_q.out_qs[0].zero_point == 0, "asymmetric not supported" + fac_1, upper_bound, _ = hsigmoid_mult_gen_factors(act_params, act_q) + contents = np.array([act_q.cache['scale_mul_biases_q'].qbiases[0], + act_q.cache['scale_mul_biases_q'].qnorms[0], + upper_bound, fac_1, 1], + dtype=np.int8) + comment += str.format("in: {:05f} out: {:05f} qbias: {} qnorm: {} A0: {} B0: {} C0: 1", + act_q.in_qs[0].scale[0], + act_q.out_qs[0].scale[0], + act_q.cache['scale_mul_biases_q'].qbiases[0], + act_q.cache['scale_mul_biases_q'].qnorms[0], + upper_bound[0], fac_1[0]) + elif isinstance(act_params, HSwishActivationParameters): + # currently combines all scaling factors into one scale and shift + assert act_q.in_qs[0].zero_point == 0 and act_q.out_qs[0].zero_point == 0, "asymmetric not supported" + fac_1, upper_bound, _ = hswish_mult_gen_factors(act_q) + contents = np.array([act_q.cache['scale_mul_biases_q'].qbiases[0], + act_q.cache['scale_mul_biases_q'].qnorms[0], + upper_bound, fac_1, 1], + dtype=np.int8) + comment += str.format("in: {:05f} out: {:05f} qbias: {} qnorm: {} A0: {} B0: {} C0: 1", + act_q.in_qs[0].scale[0], + act_q.out_qs[0].scale[0], + act_q.cache['scale_mul_biases_q'].qbiases[0], + act_q.cache['scale_mul_biases_q'].qnorms[0], + upper_bound[0], fac_1[0]) + elif isinstance(act_params, SoftMaxParameters): + assert act_q.in_qs[0].zero_point == 0 and act_q.out_qs[0].zero_point == 0, "asymmetric not supported" + norm = 15 + np.ceil(np.log2(act_q.in_qs[0].scale)) + contents = np.array([norm, 0, 0, 0, 0], dtype=np.int8) + comment += str.format("in: {:05f} out: {:05f} NORM: {}", + act_q.in_qs[0].scale[0], + act_q.out_qs[0].scale[0], + int(norm[0])) + elif isinstance(act_params, LeakyActivationParameters): + assert act_q.in_qs[0].zero_point == 0 and act_q.out_qs[0].zero_point == 0, "asymmetric not supported" + compute_in_out_scale(act_q) + leak_factor_quant = leak_mult_gen_factor_q7(act_params) + contents = np.array([act_q.cache['scale_mul_biases_q'].qbiases[0], + act_q.cache['scale_mul_biases_q'].qnorms[0], + leak_factor_quant, 0, 0], + dtype=np.int8) + comment += str.format("in: {:05f} out: {:05f} qbias: {} qnorm: {} A0: {} B0: x C0: x", + act_q.in_qs[0].scale[0], + act_q.out_qs[0].scale[0], + act_q.cache['scale_mul_biases_q'].qbiases[0], + act_q.cache['scale_mul_biases_q'].qnorms[0], + leak_factor_quant) + elif isinstance(act_params, (SigmoidActivationParameters, TanHActivationParameters)): + assert act_q.in_qs[0].zero_point == 0 and act_q.out_qs[0].zero_point == 0, "asymmetric not supported" + compute_in_out_scale(act_q, extra_scale=QType.Pow2( + bits=32, q=7, signed=True).scale/act_q.in_qs[0].scale) + contents = np.array([act_q.cache['scale_mul_biases_q'].qbiases[0], + act_q.cache['scale_mul_biases_q'].qnorms[0], + 0, 0, 0], + dtype=np.int8) + comment += str.format("in: {:05f} out: {:05f} qbias: {} qnorm: {} A0: x B0: x C0: x", + act_q.in_qs[0].scale[0], + act_q.out_qs[0].scale[0], + act_q.cache['scale_mul_biases_q'].qbiases[0], + act_q.cache['scale_mul_biases_q'].qnorms[0]) + else: + raise NotImplementedError("activation tye not implemented") + + return contents, comment diff --git a/tools/nntool/generation/new_generators/helpers/in_out_bindings_mixin.py b/tools/nntool/generation/new_generators/helpers/in_out_bindings_mixin.py index 8245213b7..88f2cde5f 100644 --- a/tools/nntool/generation/new_generators/helpers/in_out_bindings_mixin.py +++ b/tools/nntool/generation/new_generators/helpers/in_out_bindings_mixin.py @@ -12,7 +12,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from generation.bindings import CommentBindingList, GNodeArgEdge, NodeBindingList +from generation.bindings import CommentBindingList, GNodeArgEdge, GNodeArgNode, NodeBindingList class InOutBindingsMixin(): @@ -27,3 +27,16 @@ def set_in_out_bindings(cls, gen, in_eparams, out_eparams, cname, node, node_q, gen.bindings.append( NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), GNodeArgEdge(out_eparams[0], "GNA_OUT"))) + + @classmethod + def set_in_out_infos_bindings(cls, gen, in_eparams, out_eparams, cname, node, node_q, out_q=None): + if out_q is None: + out_q = node_q + gen.bindings.append( + CommentBindingList("Node {} inq {} outq {}", node.name, + str(node_q.in_qs[0]), str(out_q.out_qs[0])) + ) + gen.bindings.append( + NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(out_eparams[0], "GNA_OUT"), GNodeArgNode(node, "infos"))) + diff --git a/tools/nntool/generation/new_generators/mult8/conv_pool_mult8.py b/tools/nntool/generation/new_generators/mult8/conv_pool_mult8.py new file mode 100644 index 000000000..7720c2dd7 --- /dev/null +++ b/tools/nntool/generation/new_generators/mult8/conv_pool_mult8.py @@ -0,0 +1,270 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from graph.dim import PadDim +from graph.types.pooling import PoolingParameters +from quantization.multiplicative.scaling_qtypes import MultMulBiasScaleQType +from generation.new_generators.helpers.act_infos import gen_act_infos +from generation.helpers.gen_scales import gen_scales +from generation.at_types.at_params import NO_POOL, gen_activation_op, gen_conv_at_params, gen_pool_at_params +import logging +from utils.node_id import NodeId + +import numpy as np +from generation.at_types.constant_info import ConstantInfo +from generation.at_types.gen_ctrl import GenCtrl +from generation.at_types.tc_arg_info import GlobalArgInfo +from generation.bindings import (CommentBindingList, GNodeArgEdge, + GNodeArgNode, NodeBindingList) +from generation.generators.globals.global_names import INFOS, MULSCALE, MULSHIFT +from generation.generators.kernels.autotiler_kernel import NewAutoTilerKernel +from generation.helpers.gen_constant import gen_constant +from generation.new_generators.generator_base import (GeneratorBase, + paramstype, ktype) +from graph.types import Conv2DParameters, ConvFusionParameters +from quantization.qtype import QType + +LOG = logging.getLogger("nntool." + __name__) + +def verify_scalar(arr): + return [item.item() if isinstance(item, np.ndarray) else item for item in arr] + +@paramstype(Conv2DParameters, ConvFusionParameters) +@ktype('scaled') +class ConvActGenerator(GeneratorBase): + + @classmethod + def globals_generator(cls, gen, node, qrec, pnode, fnode) -> bool: + if isinstance(pnode, Conv2DParameters): + gen_scales(gen, pnode, pnode, qrec) + infos, infos_comment = np.array([0, 0, 0, 0, 0]), "no activation" + filt_q = qrec + fnode = pnode + elif isinstance(pnode, ConvFusionParameters) and isinstance(fnode, Conv2DParameters): + cnodes = pnode.contained_nodes() + quants = [gen.G.quantization[NodeId(pnode, fnode)] for fnode in cnodes] + filt_q = quants[0] + gen_scales(gen, pnode, cnodes[0], quants[0]) + if pnode.fusion_type in ("conv_active_pool", "conv_active"): + infos, infos_comment = gen_act_infos(cnodes[1], quants[1]) + elif pnode.fusion_type == "conv_pool_active": + infos, infos_comment = gen_act_infos(cnodes[2], quants[2]) + elif pnode.fusion_type == "conv_pool": + infos, infos_comment = np.array([0, 0, 0, 0, 0]), "no activation" + else: + return False + infos = np.append(infos, [0, 0, 0, 0]) + comment = str.format("BiasQ: {}", 0) + infos_comment + infos[5] = 0 # BiasQ + + if filt_q.cache.get('ne16'): + conv_mul_bias = filt_q.cache.get('mul_biases_q') + prenorm = conv_mul_bias.pre_normalization if isinstance(conv_mul_bias, MultMulBiasScaleQType) else 0 + pad_value = np.array(filt_q.in_qs[0].zero_point).astype(np.int16) + pad_value1 = np.bitwise_and(pad_value, 0xFF) + pad_value2 = np.bitwise_and(pad_value, 0xFF00) >> 8 + w_offset = -np.array(filt_q.in_qs[1].zero_point).astype(np.int32) + w_offset1 = np.bitwise_and(w_offset, 0xFF) + w_offset2 = np.bitwise_and(w_offset, 0xFF00) >> 8 + w_offset3 = np.bitwise_and(w_offset, 0xFF0000) >> 16 + w_offset4 = np.bitwise_and(w_offset, 0xFF000000) >> 24 + + infos = np.append( + infos, verify_scalar([prenorm if prenorm else 0, pad_value1, pad_value2, w_offset1, w_offset2, w_offset3, w_offset4])) + + cname, file_name = gen_constant(gen, pnode, fnode, INFOS) + const_info = ConstantInfo(file_name, QType.Pow2(bits=8, q=0, signed=True), contents=infos) + gen.globals.append(GlobalArgInfo("int8", cname, + gen.opts['default_global_home_location'], + gen.opts['default_global_exec_location'], + const_info=const_info, + comment=comment)) + return True + + @classmethod + def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: + step_idx = node.step_idx + if isinstance(node, Conv2DParameters): + set_conv_bindings(gen, step_idx, in_eparams, out_eparams, cname, node, qrec) + elif isinstance(node, ConvFusionParameters): + cnodes = node.contained_nodes() + quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] + if node.fusion_type in ("conv_active_pool", "conv_active", "conv_pool"): + set_conv_bindings(gen, step_idx, in_eparams, out_eparams, + cname, cnodes[0], quants[0], out_q=quants[1]) + elif node.fusion_type == "conv_pool_active": + set_conv_bindings(gen, step_idx, in_eparams, out_eparams, + cname, cnodes[0], quants[0], out_q=quants[2]) + else: + return False + else: + return False + return True + + @classmethod + def kernel_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: + if isinstance(node, Conv2DParameters): + conv_kernel = ConvPoolReluKernelNE16 if qrec.cache.get("ne16") else ConvPoolReluKernelSQ8 + gen.kernels.append(conv_kernel(node.name, cname, node, qrec, None, None, None, None, + force_relu=gen.force_relu, gen_ctrl=node.get_gen_ctrl())) + elif isinstance(node, ConvFusionParameters): + cnodes = node.contained_nodes() + quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] + conv_kernel = ConvPoolReluKernelNE16 if quants[0].cache.get("ne16") else ConvPoolReluKernelSQ8 + if node.fusion_type == "conv_active_pool": + gen.kernels.append(conv_kernel(node.name, cname, cnodes[0], quants[0], cnodes[2], quants[2], cnodes[1], quants[1], + force_relu=gen.force_relu, gen_ctrl=node.get_gen_ctrl())) + elif node.fusion_type == "conv_pool_active": + gen.kernels.append(conv_kernel(node.name, cname, cnodes[0], quants[0], cnodes[1], quants[1], cnodes[2], quants[2], + force_relu=gen.force_relu, gen_ctrl=node.get_gen_ctrl())) + elif node.fusion_type == "conv_active": + gen.kernels.append(conv_kernel(node.name, cname, cnodes[0], quants[0], None, None, cnodes[1], quants[1], + force_relu=gen.force_relu, gen_ctrl=node.get_gen_ctrl())) + elif node.fusion_type == "conv_pool": + gen.kernels.append(conv_kernel(node.name, cname, cnodes[0], quants[0], cnodes[1], quants[1], None, None, + force_relu=gen.force_relu, gen_ctrl=node.get_gen_ctrl())) + else: + return False + return True + + +def set_conv_bindings(gen, step_idx, in_eparams, out_eparams, cname, + conv_params, conv_q, out_q=None): + del step_idx + if out_q is None: + out_q = conv_q + gen.bindings.append( + CommentBindingList("Node {} inq {} weightsq {} outq {} biasesq {}", cname, + conv_q.in_qs[0], conv_q.in_qs[1], out_q.out_qs[0], conv_q.in_qs[2]) + ) + gen.bindings.append( + NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(in_eparams[1]), + GNodeArgEdge(in_eparams[2]), + GNodeArgEdge(out_eparams[0], "GNA_OUT"), + GNodeArgNode(conv_params, MULSCALE), + GNodeArgNode(conv_params, MULSHIFT), + GNodeArgNode(conv_params, INFOS) + )) + + +class ConvPoolReluKernel(NewAutoTilerKernel): + + def __init__(self, node_name, cname, conv_params, conv_q, pool_params, pool_q, act_params, act_q, force_relu, gen_ctrl=None): + if gen_ctrl is None: + self.gen_ctrl = gen_ctrl = GenCtrl(None, cname=cname) + else: + gen_ctrl.cname = cname + self.gen_ctrl = gen_ctrl + + is_ne16 = conv_q.cache.get('ne16') + hwc = False + if not is_ne16 and conv_params.ker_in_order and conv_params.ker_in_order[0] == ["h", "w", "c"]: + hwc = True + gen_ctrl.hwc = 1 + if not is_ne16 and not hwc and conv_params.filter.h == 1 and conv_params.filter.w == 1 and gen_ctrl.enableim2col is None: + gen_ctrl.enableim2col = 1 + + in_q = filter_q = out_q = bias_q = None + in_dim = out_dim = None + pad_compatibilities = [] + at_conv_params = gen_conv_at_params( + conv_params, pad_compatibilities) + in_dim = conv_params.in_dims[0] + out_dim = conv_params.out_dims[0] + filter_q = conv_q.in_qs[1] + in_q = conv_q.in_qs[0] + out_q = conv_q.out_qs[0] + bias_q = conv_q.in_qs[2] + pad_val = in_q.zero_point[0] + + if pool_params is not None: + at_pool_params = gen_pool_at_params( + pool_params, pad_compatibilities) + out_dim = pool_params.out_dims[0] + out_q = pool_q.out_qs[0] + else: + at_pool_params = NO_POOL + + if act_params is not None: + act_op = gen_activation_op( + act_params.activation, force_relu=force_relu, asymmetric=act_q.in_qs[0].zero_point != 0) + if out_dim is None: + out_dim = act_params.out_dims[0].expand_to_chw() + out_q = act_q.out_qs[0] + else: + act_op = "KOP_NONE" + + if pad_compatibilities: + reduction = PadDim.pad_compatibility_reduce(*pad_compatibilities, + "convolution padding is not compatible with pool padding") + if not reduction[2]: # default is balanced pad left + at_pad_ctrl = next(i for i, v in enumerate(reduction) if v) + LOG.debug("%s: generating pad control block", node_name) + self.gen_ctrl.PadType = at_pad_ctrl + + attrs = { + 'in_size': in_q.dtype_bits//8 if in_q.signed else -in_q.dtype_bits//8, + 'out_size': out_q.dtype_bits//8 if out_q.signed else -out_q.dtype_bits//8, + 'bias_size': bias_q.dtype_bits//8, + 'filter_bits': filter_q.bits, + 'in_feat': in_dim.c, + 'out_feat': out_dim.c, + 'in_width': in_dim.w, + 'in_height': in_dim.h, + 'kop_conv': at_conv_params.ConvOper, + 'fcx': at_conv_params.Fcx, + 'fcy': at_conv_params.Fcy, + 'dcx': at_conv_params.Dcx, + 'dcy': at_conv_params.Dcy, + 'scx': at_conv_params.Scx, + 'scy': at_conv_params.Scy, + 'conv_pad': at_conv_params.ConvPad, + 'pad_value': pad_val, + 'kop_pool': at_pool_params.PoolOper, + 'fpx': at_pool_params.Fpx, + 'fpy': at_pool_params.Fpy, + 'dpx': at_pool_params.Dpx, + 'dpy': at_pool_params.Dpy, + 'spx': at_pool_params.Spx, + 'spy': at_pool_params.Spy, + 'pool_pad': at_pool_params.PoolPad, + 'kop_act': act_op + } + + extra_attrs = { + 'cname': cname, + 'node_name': node_name + } + super().__init__(attrs, extra_attrs, gen_ctrl=gen_ctrl) + +class ConvPoolReluKernelNE16(ConvPoolReluKernel): + CALL_TEMPLATE = """// generator for {node_name} +CNN_ConvolutionNE16("{cname}", {gen_ctrl}, + {in_size}, {out_size}, {bias_size}, 1, {filter_bits}, + {in_feat}, {out_feat}, {in_width}, {in_height}, + {kop_conv}, {fcx}, {fcy}, {dcx}, {dcy}, {scx}, {scy}, {conv_pad}, {pad_value}, + {kop_pool}, {fpx}, {fpy}, {dpx}, {dpy}, {spx}, {spy}, {pool_pad}, + {kop_act}); +""" + +class ConvPoolReluKernelSQ8(ConvPoolReluKernel): + CALL_TEMPLATE = """// generator for {node_name} +CNN_ConvolutionPoolAct_SQ8("{cname}", {gen_ctrl}, {bias_size}, 1, + {in_feat}, {out_feat}, {in_width}, {in_height}, + {kop_conv}, {fcx}, {fcy}, {dcx}, {dcy}, {scx}, {scy}, {conv_pad}, + {kop_pool}, {fpx}, {fpy}, {dpx}, {dpy}, {spx}, {spy}, {pool_pad}, + {kop_act}); +""" diff --git a/tools/nntool/generation/new_generators/mult8/linear_mult8.py b/tools/nntool/generation/new_generators/mult8/linear_mult8.py new file mode 100644 index 000000000..4bd9e0f68 --- /dev/null +++ b/tools/nntool/generation/new_generators/mult8/linear_mult8.py @@ -0,0 +1,195 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from generation.new_generators.mult8.conv_pool_mult8 import verify_scalar +from quantization.multiplicative.scaling_qtypes import MultMulBiasScaleQType +from generation.new_generators.helpers.act_infos import gen_act_infos +from generation.helpers.gen_scales import gen_scales +from generation.at_types.at_params import gen_activation_op +import logging +from utils.node_id import NodeId + +import numpy as np +from generation.at_types.constant_info import ConstantInfo +from generation.at_types.gen_ctrl import GenCtrl +from generation.at_types.tc_arg_info import GlobalArgInfo +from generation.bindings import (CommentBindingList, GNodeArgEdge, + GNodeArgNode, NodeBindingList) +from generation.generators.globals.global_names import INFOS, MULSCALE, MULSHIFT +from generation.generators.kernels.autotiler_kernel import NewAutoTilerKernel +from generation.helpers.gen_constant import gen_constant +from generation.new_generators.generator_base import (GeneratorBase, + paramstype, ktype) +from graph.types import LinearFusionParameters, FcParameters +from quantization.qtype import QType + +LOG = logging.getLogger("nntool." + __name__) + +@paramstype(LinearFusionParameters, FcParameters) +@ktype('scaled') +class LinearActSQ8Generator(GeneratorBase): + + @classmethod + def globals_generator(cls, gen, node, qrec, pnode, fnode) -> bool: + if isinstance(pnode, FcParameters): + gen_scales(gen, pnode, pnode, qrec) + infos, infos_comment = np.array([0, 0, 0, 0, 0]), "no activation" + fnode = pnode + filt_q = qrec + elif isinstance(pnode, LinearFusionParameters) and isinstance(fnode, FcParameters) and pnode.fusion_type == "linear_active": + cnodes = pnode.contained_nodes() + quants = [gen.G.quantization[NodeId(pnode, fnode)] for fnode in cnodes] + filt_q = quants[0] + gen_scales(gen, pnode, cnodes[0], quants[0]) + infos, infos_comment = gen_act_infos(cnodes[1], quants[1]) + else: + return False + infos = np.append(infos, [0, 0, 0, 0]) + comment = str.format("BiasQ: {}", 0) + infos_comment + infos[5] = 0 # BiasQ + + if filt_q.cache.get('ne16'): + conv_mul_bias = filt_q.cache.get('mul_biases_q') + prenorm = conv_mul_bias.pre_normalization if isinstance(conv_mul_bias, MultMulBiasScaleQType) else 0 + pad_value = np.array(filt_q.in_qs[0].zero_point).astype(np.int16) + pad_value1 = np.bitwise_and(pad_value, 0xFF) + pad_value2 = np.bitwise_and(pad_value, 0xFF00) >> 8 + w_offset = -np.array(filt_q.in_qs[1].zero_point).astype(np.int32) + w_offset1 = np.bitwise_and(w_offset, 0xFF) + w_offset2 = np.bitwise_and(w_offset, 0xFF00) >> 8 + w_offset3 = np.bitwise_and(w_offset, 0xFF0000) >> 16 + w_offset4 = np.bitwise_and(w_offset, 0xFF000000) >> 24 + + infos = np.append( + infos, verify_scalar([prenorm if prenorm else 0, pad_value1, pad_value2, w_offset1, w_offset2, w_offset3, w_offset4])) + + cname, file_name = gen_constant(gen, pnode, fnode, INFOS) + const_info = ConstantInfo(file_name, QType.Pow2(bits=8, q=0, signed=True), contents=infos) + gen.globals.append(GlobalArgInfo("int8", cname, + gen.opts['default_global_home_location'], + gen.opts['default_global_exec_location'], + const_info=const_info, + comment=comment)) + return True + + @classmethod + def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: + step_idx = node.step_idx + if isinstance(node, FcParameters): + set_fc_bindings(gen, step_idx, in_eparams, out_eparams, cname, node, qrec) + elif isinstance(node, LinearFusionParameters): + cnodes = node.contained_nodes() + quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] + set_fc_bindings(gen, step_idx, in_eparams, out_eparams, cname, cnodes[0], quants[0], out_q=quants[1]) + else: + return False + return True + + @classmethod + def kernel_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: + if isinstance(node, FcParameters): + lin_kernel = LinearActNE16Kernel if qrec.cache.get("ne16") else LinearActSQ8Kernel + gen.kernels.append( + lin_kernel( + node.name, cname, node, None, qrec, None, gen.force_relu) + ) + elif isinstance(node, LinearFusionParameters) and node.fusion_type == "linear_active": + cnodes = node.contained_nodes() + quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] + lin_kernel = LinearActNE16Kernel if quants[0].cache.get("ne16") else LinearActSQ8Kernel + gen.kernels.append( + lin_kernel( + node.name, cname, cnodes[0], cnodes[1], quants[0], quants[1], gen.force_relu) + ) + else: + return False + return True + + +def set_fc_bindings(gen, step_idx, in_eparams, out_eparams, cname, + params, linear_q, out_q=None): + del step_idx + if out_q is None: + out_q = linear_q + gen.bindings.append( + CommentBindingList("Node {} inq {} weightsq {} outq {}", params.name, + linear_q.in_qs[0], linear_q.in_qs[1], out_q.out_qs[0]) + ) + gen.bindings.append( + NodeBindingList(cname, GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(in_eparams[1]), + GNodeArgEdge(in_eparams[2]), + GNodeArgEdge(out_eparams[0], "GNA_OUT"), + GNodeArgNode(params, MULSCALE), + GNodeArgNode(params, MULSHIFT), + GNodeArgNode(params, INFOS) + )) + +class LinearActKernel(NewAutoTilerKernel): + + def __init__(self, node_name, cname, linear_params, act_params, linear_q, act_q, force_relu, gen_ctrl=None): + if gen_ctrl is None: + gen_ctrl = GenCtrl(None, cname=cname) + else: + gen_ctrl.cname = cname + + in_dim = linear_params.in_dims[0] + out_dim = linear_params.out_dims[0] + in_qs = linear_q.in_qs + mulbiases_q = linear_q.cache['mul_biases_q'] + + if act_params is not None: + at_act_params = gen_activation_op(act_params.activation, force_relu=force_relu, + asymmetric=act_q.in_qs[0].zero_point != 0) + if in_dim is None: + in_dim = act_params.in_dims[0] + if out_dim is None: + out_dim = act_params.out_dims[0] + out_qs = act_q.out_qs + else: + at_act_params = "KOP_NONE" + out_qs = linear_q.out_qs + + attrs = { + 'in_size': in_qs[0].dtype_bits//8 if in_qs[0].signed else -in_qs[0].dtype_bits//8, + 'out_size': out_qs[0].dtype_bits//8 if out_qs[0].signed else -out_qs[0].dtype_bits//8, + 'bias_size': in_qs[2].dtype_bits//8, + 'scale_size': mulbiases_q.dtype_bits//8, + 'filter_bits': in_qs[1].bits, + 'in_feat': in_dim.size(), + 'out_feat': out_dim.size(), + 'act_op': at_act_params + } + + extra_attrs = { + 'cname': cname, + 'node_name': node_name + } + super().__init__(attrs, extra_attrs, gen_ctrl=gen_ctrl) + +class LinearActSQ8Kernel(LinearActKernel): + CALL_TEMPLATE = """// generator for {node_name} +CNN_LinearAct_SQ8("{cname}", {gen_ctrl}, + {bias_size}, {scale_size}, + {in_feat}, {out_feat}, + KOP_LINEAR, {act_op}); +""" + +class LinearActNE16Kernel(LinearActKernel): + CALL_TEMPLATE = """// generator for {node_name} +CNN_LinearAct_NE16("{cname}", {gen_ctrl}, + {in_size}, {out_size}, {bias_size}, {scale_size}, {filter_bits}, + {in_feat}, {out_feat}, KOP_LINEAR, {act_op}); +""" diff --git a/tools/nntool/generation/new_generators/mult8/matadd_mult8.py b/tools/nntool/generation/new_generators/mult8/matadd_mult8.py index a1709e36f..8a2b1b8c7 100644 --- a/tools/nntool/generation/new_generators/mult8/matadd_mult8.py +++ b/tools/nntool/generation/new_generators/mult8/matadd_mult8.py @@ -26,13 +26,13 @@ from generation.generators.kernels.autotiler_kernel import NewAutoTilerKernel from generation.new_generators.generator_base import (GeneratorBase, ktype, paramstype) -from graph.types import ActivationFusionBase, MatrixAddParameters +from graph.types import ActivationFusionBase, MatrixAddParameters, BroadcastableActivationFusion from quantization.multiplicative.mulbias import set_add_in_scale from utils.node_id import NodeId LOG = logging.getLogger("nntool." + __name__) -@paramstype(MatrixAddParameters, ActivationFusionBase) +@paramstype(MatrixAddParameters, ActivationFusionBase, BroadcastableActivationFusion) @ktype("scaled") class MatAddSQ8Generator(GeneratorBase): @@ -40,7 +40,7 @@ class MatAddSQ8Generator(GeneratorBase): def globals_generator(cls, gen, node, qrec, pnode, fnode) -> bool: if isinstance(pnode, PaddedAddFusionParameters): return False - if isinstance(pnode, ActivationFusionBase): + if isinstance(pnode, (ActivationFusionBase, BroadcastableActivationFusion)): cnodes = pnode.contained_nodes() quants = [gen.G.quantization[NodeId(pnode, cnode)] for cnode in cnodes] if isinstance(fnode, MatrixAddParameters): @@ -78,7 +78,7 @@ def globals_generator(cls, gen, node, qrec, pnode, fnode) -> bool: @classmethod def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: - if isinstance(node, ActivationFusionBase): + if isinstance(node, (ActivationFusionBase, BroadcastableActivationFusion)): cnodes = node.contained_nodes() quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] if isinstance(cnodes[0], MatrixAddParameters): @@ -107,7 +107,7 @@ def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> @classmethod def kernel_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: del out_eparams - if isinstance(node, ActivationFusionBase): + if isinstance(node, (ActivationFusionBase, BroadcastableActivationFusion)): cnodes = node.contained_nodes() if isinstance(cnodes[0], MatrixAddParameters): if in_eparams[0].dims.size() != in_eparams[1].dims.size(): diff --git a/tools/nntool/generation/new_generators/mult8/matmul_mult8.py b/tools/nntool/generation/new_generators/mult8/matmul_mult8.py new file mode 100644 index 000000000..02bbaae2f --- /dev/null +++ b/tools/nntool/generation/new_generators/mult8/matmul_mult8.py @@ -0,0 +1,288 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from generation.new_generators.mult8.conv_pool_mult8 import verify_scalar +from quantization.multiplicative.scaling_qtypes import MultMulBiasScaleQType +from graph.types.tensor_arithmetic import MatMulTransposedParameters +from generation.bindings import CommentBindingList, GNodeArgEdge, GNodeArgNode, NodeBindingList +from generation.helpers.gen_scales import gen_scales +from generation.at_generators.utils import at_bits +from generation.new_generators.helpers.in_out_bindings_mixin import InOutBindingsMixin +from generation.new_generators.helpers.act_infos import gen_act_infos +from generation.at_types.at_params import NO_POOL, gen_activation_op +import logging +from utils.node_id import NodeId + +import numpy as np +from generation.at_types.constant_info import ConstantInfo +from generation.at_types.gen_ctrl import GenCtrl +from generation.at_types.tc_arg_info import GlobalArgInfo +from generation.generators.globals.global_names import INFOS, MULSCALE, MULSHIFT +from generation.generators.kernels.autotiler_kernel import NewAutoTilerKernel +from generation.helpers.gen_constant import gen_constant +from generation.new_generators.generator_base import (GeneratorBase, + paramstype, ktype) +from graph.types import MatMulOpParameters, MatMulOpFusionParameters, ActivationParameters +from quantization.qtype import QType + +LOG = logging.getLogger("nntool." + __name__) + +@paramstype(MatMulOpParameters, MatMulOpFusionParameters) +@ktype('scaled') +class MatMulGenerator(GeneratorBase): + + @classmethod + def globals_generator(cls, gen, node, qrec, pnode, fnode) -> bool: + if isinstance(pnode, MatMulOpParameters): + mul_node = pnode + mul_qrec = qrec + fnode = pnode + infos, comment = np.array([0, 0, 0, 0, 0]), "no activation" + elif isinstance(pnode, MatMulOpFusionParameters) and isinstance(fnode, MatMulOpParameters): + cnodes = pnode.contained_nodes() + quants = [gen.G.quantization[NodeId( + pnode, fnode)] for fnode in cnodes] + mul_node = cnodes[0] + mul_qrec = quants[0] + infos, comment = gen_act_infos(cnodes[1], quants[1]) + else: + return False + + if len(mul_qrec.in_qs[1].scale) > 1: + gen_scales(gen, pnode, mul_node, mul_qrec) + pl_scale = 0 + pl_scalen = 0 + else: + pl_scale = mul_qrec.cache['mul_biases_q'].qbiases[0] + pl_scalen = mul_qrec.cache['mul_biases_q'].qnorms[0] + + infos = np.append(infos, [0, 0, pl_scale, pl_scalen]) + + if mul_qrec.cache.get('ne16'): + conv_mul_bias = mul_qrec.cache.get('mul_biases_q') + prenorm = conv_mul_bias.pre_normalization if isinstance(conv_mul_bias, MultMulBiasScaleQType) else 0 + pad_value = np.array(mul_qrec.in_qs[0].zero_point).astype(np.int16) + pad_value1 = np.bitwise_and(pad_value, 0xFF) + pad_value2 = np.bitwise_and(pad_value, 0xFF00) >> 8 + w_offset = -np.array(mul_qrec.in_qs[1].zero_point).astype(np.int32) + w_offset1 = np.bitwise_and(w_offset, 0xFF) + w_offset2 = np.bitwise_and(w_offset, 0xFF00) >> 8 + w_offset3 = np.bitwise_and(w_offset, 0xFF0000) >> 16 + w_offset4 = np.bitwise_and(w_offset, 0xFF000000) >> 24 + + infos = np.append( + infos, verify_scalar([prenorm if prenorm else 0, pad_value1, pad_value2, w_offset1, w_offset2, w_offset3, w_offset4])) + + cname, file_name = gen_constant(gen, pnode, fnode, INFOS) + const_info = ConstantInfo(file_name, QType.Pow2(bits=8, q=0, signed=True), contents=infos) + gen.globals.append(GlobalArgInfo("int8", cname, + gen.opts['default_global_home_location'], + gen.opts['default_global_exec_location'], + const_info=const_info, + comment=comment)) + return True + + @classmethod + def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: + if isinstance(node, MatMulOpFusionParameters): + cnodes = node.contained_nodes() + quants = [gen.G.quantization[NodeId( + node, fnode)] for fnode in cnodes] + set_matmul_bindings(gen, in_eparams, out_eparams, + cname, cnodes[0], quants[0], out_q=quants[-1]) + return True + if isinstance(node, MatMulOpParameters): + set_matmul_bindings(gen, in_eparams, out_eparams, cname, node, qrec) + else: + return False + return True + + + @classmethod + def kernel_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: + del in_eparams, out_eparams + if isinstance(node, MatMulOpFusionParameters): + cnodes = node.contained_nodes() + matmul_node = cnodes[0] + act_node = cnodes[-1] if isinstance(cnodes[-1], + ActivationParameters) else None + else: + matmul_node = node + act_node = None + + matmul_ker_gen = MatMulKernelNE16 if qrec.cache.get("ne16") else MatMulKernel + gen.kernels.append( + matmul_ker_gen( + node.name, cname, matmul_node, qrec, act_node, force_relu=gen.force_relu)) + return True + +def set_matmul_bindings(gen, in_eparams, out_eparams, cname, node, node_q, out_q=None): + if out_q is None: + out_q = node_q + gen.bindings.append( + CommentBindingList( + "Node {} inq {} outq {}", node.name, + str(node_q.in_qs[0]), str(out_q.out_qs[0])) + ) + if len(node.in_dims) == 3: + if len(node_q.in_qs[1].scale) > 1: + gen.bindings.append( + NodeBindingList( + cname, + GNodeArgEdge(in_eparams[1]), + GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(in_eparams[2]), + GNodeArgEdge(out_eparams[0], "GNA_OUT"), + GNodeArgNode(node, MULSCALE), + GNodeArgNode(node, MULSHIFT), + GNodeArgNode(node, INFOS))) + else: + gen.bindings.append( + NodeBindingList( + cname, + GNodeArgEdge(in_eparams[1]), + GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(in_eparams[2]), + GNodeArgEdge(out_eparams[0], "GNA_OUT"), + GNodeArgNode(node, INFOS))) + else: + if len(node_q.in_qs[1].scale) > 1: + gen.bindings.append( + NodeBindingList( + cname, + GNodeArgEdge(in_eparams[1]), + GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(out_eparams[0], "GNA_OUT"), + GNodeArgNode(node, MULSCALE), + GNodeArgNode(node, MULSHIFT), + GNodeArgNode(node, INFOS))) + else: + gen.bindings.append( + NodeBindingList( + cname, + GNodeArgEdge(in_eparams[1]), + GNodeArgEdge(in_eparams[0]), + GNodeArgEdge(out_eparams[0], "GNA_OUT"), + GNodeArgNode(node, INFOS))) + + +class MatMulKernel(NewAutoTilerKernel): + CALL_TEMPLATE = '''// generator for {node_name} +CNN_MatMulAct_SQ8("{cname}", {gen_ctrl}, {bias_datasize}, 1, + {width_1}, {height_1}, {width_2}, {height_2}, + 0, 0, 1, 1, {matmul_op}, {act_op}); +''' + + def __init__(self, node_name, cname, matmul_params, matmul_qrec, act_params, gen_ctrl=None, force_relu=True): + if gen_ctrl is None: + self.gen_ctrl = gen_ctrl = GenCtrl(None, cname=cname) + else: + gen_ctrl.cname = cname + self.gen_ctrl = gen_ctrl + + if act_params is not None: + act_op = gen_activation_op( + act_params.activation, force_relu=force_relu) + else: + act_op = 'KOP_NONE' + + height_1 = matmul_params.in_dims[0][0] + width_1 = matmul_params.in_dims[0][1] + height_2 = matmul_params.in_dims[1][0] + width_2 = matmul_params.in_dims[1][1] + + if len(matmul_params.in_dims) == 3: + bias_datasize = at_bits(matmul_qrec.in_qs[2]) + matmul_op = 'KOP_MATMUL' + else: + bias_datasize = 0 + matmul_op = 'KOP_MATMUL_NOBIAS' + + if len(matmul_qrec.in_qs[1].scale) == 1: + matmul_op += '_SCALE_SCALAR' + + if isinstance(matmul_params, MatMulTransposedParameters): + matmul_op += '_TRANSPOSED' + height_2 = matmul_params.in_dims[1][1] + width_2 = matmul_params.in_dims[1][0] + + # attributes affecting generation + attrs = { + 'height_1': height_1, + 'width_1': width_1, + 'height_2': height_2, + 'width_2': width_2, + 'bias_datasize': bias_datasize, + 'matmul_op': matmul_op, + 'act_op': act_op + } + + # other attributes + extra_attrs = { + 'cname': cname, + 'node_name': node_name + } + super().__init__(attrs, extra_attrs, gen_ctrl=gen_ctrl) + +class MatMulKernelNE16(NewAutoTilerKernel): + CALL_TEMPLATE = '''// generator for {node_name} +CNN_MatMulAct_NE16("{cname}", {gen_ctrl}, {in1_datasize}, {out_datasize}, {bias_datasize}, {in2_datasize_bits}, + {width_1}, {height_1}, {width_2}, {height_2}, + {matmul_op}, {act_op}); +''' + + def __init__(self, node_name, cname, matmul_params, matmul_qrec, act_params, gen_ctrl=None, force_relu=True): + if gen_ctrl is None: + self.gen_ctrl = gen_ctrl = GenCtrl(None, cname=cname) + else: + gen_ctrl.cname = cname + self.gen_ctrl = gen_ctrl + + if act_params is not None: + act_op = gen_activation_op( + act_params.activation, force_relu=force_relu) + else: + act_op = 'KOP_NONE' + + height_1 = matmul_params.in_dims[0][0] + width_1 = matmul_params.in_dims[0][1] + height_2 = matmul_params.in_dims[1][1] + width_2 = matmul_params.in_dims[1][0] + bias_datasize = at_bits(matmul_qrec.in_qs[2]) + in1_datasize = at_bits(matmul_qrec.in_qs[0]) + in2_datasize_bits = matmul_qrec.in_qs[1].bits + out_datasize = at_bits(matmul_qrec.out_qs[0]) + matmul_op = 'KOP_MATMUL_TRANSPOSED' + + # attributes affecting generation + attrs = { + 'height_1': height_1, + 'width_1': width_1, + 'height_2': height_2, + 'width_2': width_2, + 'bias_datasize': bias_datasize, + 'in1_datasize': in1_datasize, + 'in2_datasize_bits': in2_datasize_bits, + 'out_datasize': out_datasize, + 'matmul_op': matmul_op, + 'act_op': act_op + } + + # other attributes + extra_attrs = { + 'cname': cname, + 'node_name': node_name + } + super().__init__(attrs, extra_attrs, gen_ctrl=gen_ctrl) diff --git a/tools/nntool/generation/new_generators/mult8/pool_mult8.py b/tools/nntool/generation/new_generators/mult8/pool_mult8.py new file mode 100644 index 000000000..45cbd7851 --- /dev/null +++ b/tools/nntool/generation/new_generators/mult8/pool_mult8.py @@ -0,0 +1,218 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from functools import reduce +from utils.largest_factor import balanced_divisors +from quantization.multiplicative.mulbias import compute_in_out_scale +from generation.new_generators.helpers.in_out_bindings_mixin import InOutBindingsMixin +from graph.types.global_pooling import GlobalAveragePoolParameters, GlobalSumPoolParameters +from graph.dim import PadDim +from generation.new_generators.helpers.act_infos import gen_act_infos +from generation.at_types.at_params import NO_POOL, gen_activation_op, gen_globalpool_at_params, gen_pool_at_params +import logging +from utils.node_id import NodeId + +import numpy as np +from generation.at_types.constant_info import ConstantInfo +from generation.at_types.gen_ctrl import GenCtrl +from generation.at_types.tc_arg_info import GlobalArgInfo +from generation.generators.globals.global_names import INFOS +from generation.generators.kernels.autotiler_kernel import NewAutoTilerKernel +from generation.helpers.gen_constant import gen_constant +from generation.new_generators.generator_base import (GeneratorBase, + paramstype, ktype) +from graph.types import GlobalPoolingParameters, PoolingParameters, ActivationFusion +from quantization.qtype import QType + +LOG = logging.getLogger("nntool." + __name__) + +@paramstype(ActivationFusion, GlobalPoolingParameters, PoolingParameters) +@ktype('scaled') +class PoolActGenerator(GeneratorBase, InOutBindingsMixin): + + @classmethod + def globals_generator(cls, gen, node, qrec, pnode, fnode) -> bool: + if isinstance(pnode, (GlobalPoolingParameters, PoolingParameters, GlobalSumPoolParameters)): + compute_in_out_scale(qrec) + infos, comment = np.array([qrec.cache['scale_mul_biases_q'].qbiases[0], + qrec.cache['scale_mul_biases_q'].qnorms[0], + 0, 0, 0]), "no activation" + fnode = pnode + pool_q = qrec + elif isinstance(pnode, ActivationFusion) and isinstance(fnode, (GlobalPoolingParameters, PoolingParameters)): + cnodes = pnode.contained_nodes() + quants = [gen.G.quantization[NodeId(pnode, fnode)] for fnode in cnodes] + pool_q = quants[0] + infos, comment = gen_act_infos(cnodes[1], quants[1]) + else: + return False + infos = np.append(infos, [0, 0, 0, 0]) + if isinstance(fnode, GlobalSumPoolParameters): + compute_in_out_scale(pool_q, in_idx=0, out_idx=0) + infos[0] = 0 + infos[1] = 0 + infos[5] = pool_q.cache['scale_mul_biases_q'].qbiases[0] + infos[6] = pool_q.cache['scale_mul_biases_q'].qnorms[0] + + cname, file_name = gen_constant(gen, pnode, fnode, INFOS) + const_info = ConstantInfo(file_name, QType.Pow2(bits=8, q=0, signed=True), contents=infos) + gen.globals.append(GlobalArgInfo("int8", cname, + gen.opts['default_global_home_location'], + gen.opts['default_global_exec_location'], + const_info=const_info, + comment=comment)) + return True + + @classmethod + def bindings_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: + if isinstance(node, ActivationFusion): + cnodes = node.contained_nodes() + if isinstance(cnodes[0], (GlobalPoolingParameters, PoolingParameters)): + cls.set_in_out_infos_bindings(gen, in_eparams, out_eparams, cname, cnodes[0], qrec) + return True + return False + elif isinstance(node, (GlobalPoolingParameters, PoolingParameters)): + cls.set_in_out_infos_bindings(gen, in_eparams, out_eparams, cname, node, qrec) + else: + return False + return True + + @classmethod + def kernel_generator(cls, gen, node, qrec, in_eparams, out_eparams, cname) -> bool: + if isinstance(node, (GlobalPoolingParameters, PoolingParameters)): + pool_kernel = PoolActKernel if isinstance(node, PoolingParameters) else GlobalPoolActKernel + gen.kernels.append(pool_kernel(node.name, cname, node, qrec, None, None, + force_relu=gen.force_relu, gen_ctrl=node.get_gen_ctrl())) + elif isinstance(node, ActivationFusion): + cnodes = node.contained_nodes() + quants = [gen.G.quantization[NodeId(node, fnode)] for fnode in cnodes] + pool_kernel = PoolActKernel if isinstance(cnodes[0], PoolingParameters) else GlobalPoolActKernel + gen.kernels.append(pool_kernel(node.name, cname, cnodes[0], quants[0], cnodes[1], quants[1], + force_relu=gen.force_relu, gen_ctrl=node.get_gen_ctrl())) + return True + +class PoolActKernel(NewAutoTilerKernel): + CALL_TEMPLATE = """// generator for {node_name} +CNN_PoolAct_SQ8("{cname}", {gen_ctrl}, + {feat}, {width}, {height}, + {kop_pool}, {fpx}, {fpy}, {dpx}, {dpy}, {spx}, {spy}, {pool_pad}, + {kop_act}); +""" + def __init__(self, node_name, cname, pool_params, pool_q, act_params, act_q, force_relu, gen_ctrl=None): + if gen_ctrl is None: + self.gen_ctrl = gen_ctrl = GenCtrl(None, cname=cname) + else: + gen_ctrl.cname = cname + self.gen_ctrl = gen_ctrl + if pool_params.ker_in_order and pool_params.ker_in_order[0] == ["h", "w", "c"]: + hwc = True + gen_ctrl.hwc = 1 + + pad_compatibilities = [] + at_pool_params = gen_pool_at_params( + pool_params, pad_compatibilities) + in_dim = pool_params.in_dims[0] + out_dim = pool_params.out_dims[0] + in_q = pool_q.in_qs[0] + out_q = pool_q.out_qs[0] + + if act_params is not None: + act_op = gen_activation_op( + act_params.activation, force_relu=force_relu, asymmetric=act_q.in_qs[0].zero_point != 0) + if out_dim is None: + out_dim = act_params.out_dims[0].expand_to_chw() + out_q = act_q.out_qs[0] + else: + act_op = "KOP_NONE" + + if pad_compatibilities: + reduction = PadDim.pad_compatibility_reduce(*pad_compatibilities, + "convolution padding is not compatible with pool padding") + if not reduction[2]: # default is balanced pad left + at_pad_ctrl = next(i for i, v in enumerate(reduction) if v) + LOG.debug("%s: generating pad control block", node_name) + self.gen_ctrl.PadType = at_pad_ctrl + + attrs = { + 'in_size': in_q.dtype_bits//8 if in_q.signed else -in_q.dtype_bits//8, + 'out_size': out_q.dtype_bits//8 if out_q.signed else -out_q.dtype_bits//8, + 'feat': in_dim.c, + 'width': in_dim.w, + 'height': in_dim.h, + 'kop_pool': at_pool_params.PoolOper, + 'fpx': at_pool_params.Fpx, + 'fpy': at_pool_params.Fpy, + 'dpx': at_pool_params.Dpx, + 'dpy': at_pool_params.Dpy, + 'spx': at_pool_params.Spx, + 'spy': at_pool_params.Spy, + 'pool_pad': at_pool_params.PoolPad, + 'kop_act': act_op + } + + extra_attrs = { + 'cname': cname, + 'node_name': node_name + } + super().__init__(attrs, extra_attrs, gen_ctrl=gen_ctrl) + +class GlobalPoolActKernel(NewAutoTilerKernel): + CALL_TEMPLATE = """// generator for {node_name} +CNN_GlobalPoolAct_SQ8("{cname}", {gen_ctrl}, + {feat}, {width}, {height}, + {kop_pool}, {kop_act}); +""" + def __init__(self, node_name, cname, pool_params, pool_q, act_params, act_q, force_relu, gen_ctrl=None): + if gen_ctrl is None: + self.gen_ctrl = gen_ctrl = GenCtrl(None, cname=cname) + else: + gen_ctrl.cname = cname + self.gen_ctrl = gen_ctrl + + at_pool_params = gen_globalpool_at_params(pool_params) + in_dim = pool_params.in_dims[0] + out_dim = pool_params.out_dims[0] + in_q = pool_q.in_qs[0] + out_q = pool_q.out_qs[0] + reduce_sz = reduce(lambda x, y: x * y, (sz for idx, sz in enumerate(in_dim.shape) + if idx not in pool_params.axis), 1) + #self.c = in_dim.size()/reduce_sz + feat = reduce_sz + height, width = balanced_divisors(in_dim.size()/reduce_sz) + + if act_params is not None: + act_op = gen_activation_op( + act_params.activation, force_relu=force_relu, asymmetric=act_q.in_qs[0].zero_point != 0) + if out_dim is None: + out_dim = act_params.out_dims[0].expand_to_chw() + out_q = act_q.out_qs[0] + else: + act_op = "KOP_NONE" + + attrs = { + 'in_size': in_q.dtype_bits//8 if in_q.signed else -in_q.dtype_bits//8, + 'out_size': out_q.dtype_bits//8 if out_q.signed else -out_q.dtype_bits//8, + 'feat': feat, + 'width': width, + 'height': height, + 'kop_pool': at_pool_params.GlobalPoolOper, + 'kop_act': act_op + } + + extra_attrs = { + 'cname': cname, + 'node_name': node_name + } + super().__init__(attrs, extra_attrs, gen_ctrl=gen_ctrl) diff --git a/tools/nntool/generation/new_generators/mult8/ssd_postprocessing_mult8.py b/tools/nntool/generation/new_generators/mult8/ssd_postprocessing_mult8.py index 0d3ea5dc0..095280aa4 100644 --- a/tools/nntool/generation/new_generators/mult8/ssd_postprocessing_mult8.py +++ b/tools/nntool/generation/new_generators/mult8/ssd_postprocessing_mult8.py @@ -13,23 +13,22 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from graph.types.input_output import ConstantInputParameters -from generation.helpers.gen_constant import gen_constant -from quantization.qtype import QType import logging -import numpy as np +import numpy as np +from generation.at_types.constant_info import ConstantInfo from generation.at_types.gen_ctrl import GenCtrl -from generation.bindings import (CommentBindingList, GNodeArgEdge, GNodeArgNode, - NodeBindingList) +from generation.at_types.tc_arg_info import GlobalArgInfo +from generation.bindings import (CommentBindingList, GNodeArgEdge, + GNodeArgNode, NodeBindingList) from generation.generators.kernels.autotiler_kernel import NewAutoTilerKernel +from generation.helpers.gen_constant import gen_constant from generation.new_generators.generator_base import (GeneratorBase, ktype, paramstype) -from generation.at_types.constant_info import ConstantInfo -from generation.at_types.tc_arg_info import GlobalArgInfo from graph.types import SSDDetectorParameters from quantization.multiplicative.mulbias import set_ssd_scales from quantization.multiplicative.mult_utils import compute_mul_bias +from quantization.qtype import QType LOG = logging.getLogger("nntool." + __name__) diff --git a/tools/nntool/graph/constant_store.py b/tools/nntool/graph/constant_store.py index ec376ec28..a89dc2d82 100644 --- a/tools/nntool/graph/constant_store.py +++ b/tools/nntool/graph/constant_store.py @@ -15,20 +15,26 @@ # # author: martin.croome@greenwaves-technologies.com +from utils.stats_funcs import qsnr +from sklearn.metrics import silhouette_score +from sklearn.cluster import KMeans +from scipy.cluster.vq import vq +import numpy as np import logging import math from collections import namedtuple +USE_KMEANS_CUDA = False +if USE_KMEANS_CUDA: + try: + from libKMCUDA import kmeans_cuda + except ImportError: + kmeans_cuda = None -import numpy as np -from scipy.cluster.vq import vq -from sklearn.cluster import KMeans -from sklearn.metrics import silhouette_score -from utils.stats_funcs import qsnr LOG = logging.getLogger("nntool." + __name__) CompressedVal = namedtuple( - 'CompressedVal', ['compressed_val', 'bits', 'codebook', 'size', 'sparse']) + 'CompressedVal', ['compressed_val', 'bits', 'codebook', 'size', 'sparse', 'sparse_idx']) class ConstantStore: @@ -88,33 +94,46 @@ def set_shape(self, node, idx, shape): node_vals[idx] = (shape, None, None, None) - def compress(self, node, idx, bits=None, min_qsnr=None, force_sparse=False): - val = self.get(node, idx) + def compress(self, node, idx, bits=None, min_qsnr=None, force_sparse=False, + allow_sparse=True, qbits=8, threshold=None): + orig_val = self.get(node, idx, compressed=False) + val = orig_val.copy() + if threshold: + val[np.logical_and(val < threshold, val > 0)] = 0 + val[np.logical_and(val > np.negative(threshold), val < 0)] = 0 + + if np.all(val == 0): + return None flattened_val = val.flatten() codes = None if val.size <= 4: - LOG.warning('value in node %s is too small to compress', node.name) + LOG.info('value in node %s is too small to compress', node.name) return None if bits is not None: bins = int(math.pow(2, bits)) if bins > val.size: bits = max(int(math.floor(math.log2(val.size))), 2) bins = int(math.pow(2, bits)) - LOG.warning('more bins than values for node %s - reducing to %s bits', node.name, bits) - compressed_val, codes, codebook = self.cluster(bins, flattened_val, val) + LOG.info( + 'more bins than values for node %s - reducing to %s bits', node.name, bits) + compressed_val, codes, codebook = self.cluster( + bins, flattened_val, val) elif min_qsnr: cur_qsnr = -math.inf bits = 1 while cur_qsnr < min_qsnr: bits += 1 if bits > 8: - LOG.warning('value in node %s cannot meet %s QSNR at 8 bits or under - not compressing', node.name, min_qsnr) + LOG.info( + 'value in node %s cannot meet %s QSNR at 8 bits or under - not compressing', node.name, min_qsnr) return None bins = int(math.pow(2, bits)) if bins > val.size: - LOG.warning('value in node %s cannot be reduced in size - not compressing', node.name) + LOG.info( + 'value in node %s cannot be reduced in size - not compressing', node.name) return None - compressed_val, codes, codebook = self.cluster(bins, flattened_val, val) + compressed_val, codes, codebook = self.cluster( + bins, flattened_val, val) cur_qsnr = qsnr(compressed_val.astype( np.float32), val.astype(np.float32)) else: @@ -125,11 +144,13 @@ def compress(self, node, idx, bits=None, min_qsnr=None, force_sparse=False): bins = int(math.pow(2, bits)) if bins > val.size - 1: break - compressed_val, codes, codebook = self.cluster(bins, flattened_val, val, inertia=inertia) + compressed_val, codes, codebook = self.cluster( + bins, flattened_val, val, inertia=inertia) silhouette.append(silhouette_score(flattened_val.reshape(-1, 1), compressed_val.flatten())) if len(inertia) <= 1: - compressed_val, codes, codebook = self.encode_shorter(flattened_val, val) + compressed_val, codes, codebook = self.encode_shorter( + flattened_val, val) else: # 2nd grade derivative to find the elbow if len(inertia) > 2: @@ -139,43 +160,74 @@ def compress(self, node, idx, bits=None, min_qsnr=None, force_sparse=False): else: elb_idx = 1 # take the three around the elbow and look at the silhouette - bits = np.argmax(np.array(silhouette[elb_idx-1:elb_idx+1])) + elb_idx + 1 + bits = np.argmax( + np.array(silhouette[elb_idx-1:elb_idx+1])) + elb_idx + 1 bins = int(math.pow(2, bits)) - compressed_val, codes, codebook = self.cluster(bins, flattened_val, val) + compressed_val, codes, codebook = self.cluster( + bins, flattened_val, val) # see if sparse representation is better - # TODO - this is not entirely correct since it is not accounting for the extra bin created by the sparse value - freqs = np.unique(codes, return_counts=True) - max_index = np.where(freqs[1] == freqs[1].max())[0][0] - sparse_freq = freqs[1][max_index] - sparse_size = math.ceil((codes.size - sparse_freq) * (bits + 1) + sparse_freq)/8 - unsparse_size = math.ceil(codes.size * bits)/8 - if force_sparse: - sparse = True - comp_size = sparse_size + unsparse_size = int(math.ceil(codes.size * bits)/8) + qelem_codebook_size = math.ceil((codebook.size * qbits)/8) + uncompressed_size = int(math.ceil((val.size * qbits)/8)) + if allow_sparse: + freqs = np.unique(codes, return_counts=True) + sparse_idx = np.where(freqs[1] == freqs[1].max())[0][0] + sparse_freq = freqs[1][sparse_idx] + sparse_size = int( + math.ceil((codes.size - sparse_freq) * (bits + 1) + sparse_freq)/8) + if force_sparse or sparse_size < unsparse_size: + sparse = True + compressed_size = sparse_size + else: + sparse = False + compressed_size = unsparse_size else: - sparse = sparse_size < unsparse_size - comp_size = int(min(sparse_size, unsparse_size) + codebook.size) - if comp_size >= val.size: - LOG.warning('value in node %s cannot be compressed smaller with this setting', node.name) + compressed_size = unsparse_size + sparse = False + sparse_idx = 0 + + compressed_size += qelem_codebook_size + if compressed_size >= uncompressed_size: + LOG.info(f'value in node {node.name} has not been compressed since its size ' + f'was not reduced {uncompressed_size} bytes -> {compressed_size} bytes') return None - comp_val = CompressedVal(compressed_val, bits, codebook, comp_size, sparse) + comp_val = CompressedVal( + compressed_val, bits, + codebook, compressed_size, sparse, sparse_idx) self.set(node, idx, val, comp_val) return comp_val @staticmethod def encode_shorter(flattened_val, val): freqs = np.unique(flattened_val, return_counts=True) - codebook = np.concatenate((freqs[0], np.array([0] * (4 - freqs[0].size)))) - compressed_val, codes = ConstantStore.codes_and_compressed(flattened_val, codebook, val.shape) + codebook = np.concatenate( + (freqs[0], np.array([0] * (4 - freqs[0].size)))) + compressed_val, codes = ConstantStore.codes_and_compressed( + flattened_val, codebook, val.shape) return compressed_val, codes, codebook @staticmethod def cluster(bins, flattened_val, val, inertia=None): - kmeans = KMeans(n_clusters=bins) - kmeans.fit(flattened_val.reshape((-1, 1))) - codebook = kmeans.cluster_centers_ + if USE_KMEANS_CUDA and kmeans_cuda: + invalids = None + int_bins = bins + while invalids is None or int_bins - invalids < bins: + if invalids: + int_bins = bins + invalids + codebook, _ = kmeans_cuda( + flattened_val.reshape((-1, 1)), int_bins, device=1) + invalids = np.count_nonzero(np.isnan(codebook).any(axis=1)) + np.count_nonzero( + np.isneginf(codebook).any(axis=1)) + np.count_nonzero(np.isposinf(codebook).any(axis=1)) + codebook = codebook[~np.isnan(codebook).any(axis=1)] + codebook = codebook[~np.isneginf(codebook).any(axis=1)] + codebook = codebook[~np.isposinf(codebook).any(axis=1)] + else: + kmeans = KMeans(n_clusters=bins) + kmeans.fit(flattened_val.reshape((-1, 1))) + codebook = kmeans.cluster_centers_ codebook = codebook.astype(val.dtype).flatten() - compressed_val, codes = ConstantStore.codes_and_compressed(flattened_val, codebook, val.shape) + compressed_val, codes = ConstantStore.codes_and_compressed( + flattened_val, codebook, val.shape) if inertia is not None: inertia.append(kmeans.inertia_) return compressed_val, codes, codebook diff --git a/tools/nntool/graph/manipulations/adjust_base.py b/tools/nntool/graph/manipulations/adjust_base.py index 97534c0ba..98ff7f199 100644 --- a/tools/nntool/graph/manipulations/adjust_base.py +++ b/tools/nntool/graph/manipulations/adjust_base.py @@ -165,8 +165,9 @@ def check_quantization(self, G, node, reshape, direction='in'): G.quantization[NodeId(reshape)] = qclass( in_qs=[deepcopy(qtype)], out_qs=[deepcopy(qtype)], ktype=node_qrec.ktype) - def adjust_in_out_order(self, G, node, names, order, fusion=None, has_batch=False): - self.verify_chw(node, names, has_batch=has_batch) + def adjust_in_out_order(self, G, node, names, order, fusion=None, has_batch=False, check_chw=True): + if check_chw: + self.verify_chw(node, names, has_batch=has_batch) trans = self.get_trans(names, order) trans_node = fusion if fusion is not None else node self.apply_input_trans(G, trans_node, trans, index=0) diff --git a/tools/nntool/graph/manipulations/adjust_order.py b/tools/nntool/graph/manipulations/adjust_order.py index 1db5a943e..eba46fffa 100644 --- a/tools/nntool/graph/manipulations/adjust_order.py +++ b/tools/nntool/graph/manipulations/adjust_order.py @@ -15,9 +15,11 @@ import logging +from graph.types import ConstantInputParameters + +from .adjust_base import AdjusterBase #pylint: disable=wildcard-import, unused-wildcard-import from .adjusts import * -from .adjust_base import AdjusterBase from .dimensions import add_dimensions from .eliminate_transposes.eliminate_transposes import eliminate_transposes @@ -28,6 +30,7 @@ def adjust_order(G, reshape_weights=True, postprocess=True, debug_function=None, opts = {'reshape_weights': reshape_weights} selector = AdjusterBase.get_all_handlers(opts) LOG.info("adding transposes to correct tensor order for AT kernels") + ConstantInputParameters.clear_compression_state(G) for node in G.nodes(node_classes=tuple(selector)): adjusters = selector[node.__class__] for adjuster, attrs in adjusters: diff --git a/tools/nntool/graph/manipulations/adjusts/conv.py b/tools/nntool/graph/manipulations/adjusts/conv.py index d212b5b0b..1bebcecf0 100644 --- a/tools/nntool/graph/manipulations/adjusts/conv.py +++ b/tools/nntool/graph/manipulations/adjusts/conv.py @@ -103,7 +103,7 @@ def adjust(self, G, node): wqtype.quantized_dimension) qrec.in_qs[1] = wqtype G.quantization[NodeId( - filter_node, fnode=fusion_node)].in_qs[1] = wqtype + fusion_node, fnode=filter_node)].in_qs[1] = wqtype pool_node = next(iter([node for node in fusion_node.contained_nodes() if isinstance(node, PoolingParameters)]), None) diff --git a/tools/nntool/graph/manipulations/adjusts/padded_matadd.py b/tools/nntool/graph/manipulations/adjusts/padded_matadd.py new file mode 100644 index 000000000..9e1bc42b0 --- /dev/null +++ b/tools/nntool/graph/manipulations/adjusts/padded_matadd.py @@ -0,0 +1,35 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import logging + +from graph.types import PaddedAddFusionParameters + +from ..adjust_base import AdjusterBase, handles + +LOG = logging.getLogger("nntool." + __name__) + +@handles(PaddedAddFusionParameters) +class PaddedMatAddAdjuster(AdjusterBase): + def adjust(self, G, node): + # if the Padded Add axis is already 0 nothing to do + if node.padding_axis == 0: + return False + LOG.info("padded matadd %s: moving axis %s to 0 and inserting transposes", node.name, node.padding_axis) + trans = self.move_axis_to_zero_trans(node.padding_axis, node.out_dims[0].shape) + self.apply_input_trans(G, node, trans) + node.padding_axis = 0 + self.apply_output_trans(G, node, self.invert(trans), index=0) + return True diff --git a/tools/nntool/graph/manipulations/dimensions.py b/tools/nntool/graph/manipulations/dimensions.py index cd0e2a670..6ebaf0b71 100644 --- a/tools/nntool/graph/manipulations/dimensions.py +++ b/tools/nntool/graph/manipulations/dimensions.py @@ -164,8 +164,14 @@ def add_dimensions(G, naming_convension: NamingConvension = None) -> list: steps = [] indexes = {'input': 0, 'output': 0, 'constant': 0} - LOG.debug("inputs: %s", [node.name for node in G.inputs()]) - for node in G.dfs(): + inputs = G.inputs() + # inputs = sorted( + # G.inputs(), + # key=lambda node: ("a" + node.name if isinstance(node, InputParameters) + # else "b" + (str(node.step_idx) if node.step_idx else node.name))) + LOG.debug("inputs: %s", [node.name for node in inputs]) + + for node in G.dfs(inputs): LOG.debug("add dimensions to: %s", node.name) node.step_idx = len(steps) steps.append({'node': node}) diff --git a/tools/nntool/graph/manipulations/eliminate_transposes/__init__.py b/tools/nntool/graph/manipulations/eliminate_transposes/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tools/nntool/graph/manipulations/eliminate_transposes/eliminate_transposes.py b/tools/nntool/graph/manipulations/eliminate_transposes/eliminate_transposes.py index d5b1aaa63..f77cfcf64 100644 --- a/tools/nntool/graph/manipulations/eliminate_transposes/eliminate_transposes.py +++ b/tools/nntool/graph/manipulations/eliminate_transposes/eliminate_transposes.py @@ -16,9 +16,8 @@ import logging from collections.abc import MutableSet from copy import deepcopy -from typing import AbstractSet, Iterator, Sequence +from typing import Iterator, Sequence -import numpy as np from graph.dim import Dim from graph.types import (BinaryOpParameters, ConcatParameters, ConstantInputParameters, FcParameters, @@ -27,11 +26,11 @@ ReverseParameters, StridedSliceParameters, TransposeParameters) from graph.types.base import NNEdge, SensitiveToOrder -from graph.types.global_pooling import GlobalPoolingParameters from graph.types.tensor_arithmetic import Broadcastable from utils.compatible_transposes import (find_all_compatible_transposes, find_combination) from utils.graph import Node +from utils.graph_utils.copy_expressions import do_transpose from utils.node_id import NodeId from .eliminate_transposes_actions import (Action, DeleteReshapeAction, @@ -48,8 +47,9 @@ TransposePad, TransposeReverse, TransposeSlidedSlice) from .transpose_helpers import (apply_transpose, get_reshape_transpose, - reshape_is_transpose, reverse_transpose, - reverses_transpose, transpose_does_nothing) + identity_transpose, reshape_is_transpose, + reverse_transpose, reverses_transpose, + transpose_does_nothing) LOG = logging.getLogger("nntool." + __name__) @@ -92,7 +92,7 @@ def from_shape(self): @property def to_shape(self): - return self.to[0] + return self._to[0] @property def from_transpose(self): @@ -266,7 +266,8 @@ def broadcast_expand(out_shape, in_shape, transpose): def check_for_null_transpose(node, transpose): if transpose is None: - raise CantContinueError(f"can't continue at {node.name}") # @IgnoreException + raise CantContinueError( + f"can't continue at {node.name}") # @IgnoreException def check_continue(visited_nodes: VisitedNodes, cur_visited_nodes: VisitedNodes, exclude_nodes, node, direction, idx): @@ -293,12 +294,14 @@ def strip_leading_ones(shape, in_len): seen_dim = True return res + def compute_max_shape(dims): if len(dims) == 1: return dims[0] shapes = [dim.shape for dim in dims] return [max(dims) for dims in zip(*shapes)] + def search_down(G, node, exclude_nodes, visited_nodes: VisitedNodes, in_edge, transpose_history: Sequence[TransposeHistory]): """Searches down the graph for something that eliminates transpose @@ -337,6 +340,7 @@ def search_down(G, node, exclude_nodes, visited_nodes: VisitedNodes, in_edge, tr EndActionDown(node)], cur_visited_nodes if isinstance(node, SensitiveToOrder): + check_for_null_transpose(node, transpose) info( f'rejected {node.name} - sensitive to order - inserting transpose {transpose}') return [InsertTransposeAction(node, direction='in', idx=in_edge.to_idx, transpose=transpose), EndActionDown(node)], cur_visited_nodes @@ -397,7 +401,8 @@ def search_down(G, node, exclude_nodes, visited_nodes: VisitedNodes, in_edge, tr # TODO - Handle FC in a Fusion if isinstance(node, (FcParameters, LinearFusionParameters)): - filter_node = node.contained_filters()[0] if isinstance(node, LinearFusionParameters) else node + filter_node = node.contained_filters()[0] if isinstance( + node, LinearFusionParameters) else node if filter_node.batch_size > 1: info( f"rejected {node.name} - multibatch linear layer - inserting transpose {transpose}") @@ -435,12 +440,33 @@ def search_down(G, node, exclude_nodes, visited_nodes: VisitedNodes, in_edge, tr # No change here since the output dimensions will be computed by the shape inference return [EndActionDown(node)], cur_visited_nodes - if node.__class__ in TRANSIENT_ACTIONS: + if isinstance(node, StridedSliceParameters) and node.slice_shape != node.out_shape: + # strided slice that is also reshaping check_for_null_transpose(node, transpose) - cur_actions.append(TRANSIENT_ACTIONS[node.__class__]( - node, reverse_transpose(transpose), "down")) + new_transpose = reverse_transpose(reverse_reshape( + reverse_transpose(transpose), node.slice_shape, node.out_shape)) + if new_transpose is None: + info( + f"rejected {node.name} - transpose out - does not reverse - inserting transpose {transpose}") + return [InsertTransposeAction(node, direction='in', idx=in_edge.to_idx, transpose=transpose), + EndActionDown(node)], cur_visited_nodes + + cur_actions.append(TransposeSlidedSlice( + node, reverse_transpose(transpose), transpose_out=reverse_transpose(new_transpose), dir="down")) + if identity_transpose(new_transpose): + return cur_actions + [EndActionDown(node)], cur_visited_nodes + from_shape = do_transpose(reverse_transpose(transpose), node.slice_shape) if transpose is not None else None + + transpose_history = transpose_history + \ + [TransposeHistory(node, node.slice_shape, + transpose, from_shape, new_transpose)] + transpose = new_transpose + elif node.__class__ in TRANSIENT_ACTIONS: + check_for_null_transpose(node, transpose) + cur_actions.append(TRANSIENT_ACTIONS[node.__class__]( + node, reverse_transpose(transpose), "down")) elif isinstance(node, ReshapeParameters): # TODO - Might be able to get rid of this and check history check_for_null_transpose(node, transpose) @@ -483,6 +509,9 @@ def search_down(G, node, exclude_nodes, visited_nodes: VisitedNodes, in_edge, tr ) ] + if identity_transpose(new_transpose): + return cur_actions + [EndActionDown(node)], cur_visited_nodes + transpose_history = transpose_history + \ [TransposeHistory(node, node.old_shape.shape, transpose, from_shape, new_transpose)] @@ -525,8 +554,9 @@ def search_up(G, node, exclude_nodes, visited_nodes, out_edge, transpose_history # the ones in the shape if new_shape == node.out_dims[out_edge.from_idx].shape: return [EndActionUp(node)], cur_visited_nodes + return [ - InsertReshapeAction(node, direction='out', idx=out_edge.from_idx, + InsertReshapeAction(node, direction='out', idx=out_edge.from_idx, out_edge=out_edge, in_shape=node.out_dims[out_edge.from_idx].shape, out_shape=new_shape), EndActionUp(node)], cur_visited_nodes @@ -534,7 +564,7 @@ def search_up(G, node, exclude_nodes, visited_nodes, out_edge, transpose_history check_for_null_transpose(node, transpose) info( f'rejected {node.name} - sensitive to order - inserting transpose {transpose}') - return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, transpose=transpose), EndActionUp(node)], cur_visited_nodes + return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, out_edge=out_edge, transpose=transpose), EndActionUp(node)], cur_visited_nodes cur_actions = [] @@ -563,14 +593,15 @@ def search_up(G, node, exclude_nodes, visited_nodes, out_edge, transpose_history # FCs can absorb the Transpose by shuffling their weights if isinstance(node, (FcParameters, LinearFusionParameters)): - filter_node = node.contained_filters()[0] if isinstance(node, LinearFusionParameters) else node + filter_node = node.contained_filters()[0] if isinstance( + node, LinearFusionParameters) else node if filter_node.batch_size > 1: if transpose == (1, 0): info( f"accepted {node.name} - linear layer switch batch dimension") return cur_actions + [SwitchBatchLinearAction(node), EndActionUp(node)], cur_visited_nodes info(f"rejected {node.name} - batched linear") - return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, transpose=reverse_transpose(transpose)), EndActionUp(node)], cur_visited_nodes + return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, out_edge=out_edge, transpose=reverse_transpose(transpose)), EndActionUp(node)], cur_visited_nodes info(f"accepted {node.name} - linear layer reorder output") qrec = G.quantization and G.quantization[NodeId(node)] return cur_actions + [ReorderLinearAction.out_from_history(node, transpose_history, qrec), EndActionUp(node)], cur_visited_nodes @@ -598,7 +629,7 @@ def search_up(G, node, exclude_nodes, visited_nodes, out_edge, transpose_history check_for_null_transpose(node, transpose) if node.fixed_order: info(f"rejected {node.name} - fixed order input") - return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, transpose=reverse_transpose(transpose)), EndActionUp(node)], cur_visited_nodes + return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, out_edge=out_edge, transpose=reverse_transpose(transpose)), EndActionUp(node)], cur_visited_nodes info( f"accepted {node.name} - input without fixed order - transpose input {transpose}") @@ -626,7 +657,7 @@ def search_up(G, node, exclude_nodes, visited_nodes, out_edge, transpose_history f"pass reshape {node.name} up trans: old {transpose} new {new_transpose} shape: old {node.old_shape} new {node.shape}") if new_transpose is None and len(node.old_shape) > 1: info(f"rejected {node.name} - transpose in - does not reverse") - return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, transpose=reverse_transpose(transpose)), EndActionUp(node)], cur_visited_nodes + return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, out_edge=out_edge, transpose=reverse_transpose(transpose)), EndActionUp(node)], cur_visited_nodes # insert an action to rewrite the reshape shapes from_shape = node.old_shape.calc_transpose( @@ -651,14 +682,19 @@ def search_up(G, node, exclude_nodes, visited_nodes, out_edge, transpose_history node ) ]) + + if identity_transpose(new_transpose): + return cur_actions + [EndActionUp(node)], cur_visited_nodes + if new_transpose is None: try: - return continue_up(G, node, exclude_nodes, visited_nodes, cur_visited_nodes.copy(), cur_actions.copy(), transpose_history, transpose) # @IgnoreException + # @IgnoreException + return continue_up(G, node, exclude_nodes, visited_nodes, cur_visited_nodes.copy(), cur_actions.copy(), transpose_history, transpose) except CantContinueError as ex: if transpose is None: raise ex info(f"rejected {node.name} - transpose in - does not reverse") - return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, transpose=reverse_transpose(transpose)), EndActionUp(node)], cur_visited_nodes + return [InsertTransposeAction(node, direction='out', idx=out_edge.from_idx, out_edge=out_edge, transpose=reverse_transpose(transpose)), EndActionUp(node)], cur_visited_nodes transpose = new_transpose # Continue to visit upwards @@ -736,31 +772,39 @@ def remove_silly_reshapes(G): def transpose_moved(G, actions): if actions is None: return False - delete_actions = [action for action in actions if isinstance( - action, DeleteTransposeAction)] - insert_actions = [action for action in actions if isinstance( - action, InsertTransposeAction)] - trans_nodes = [] - for action in insert_actions: - if action.direction == 'in': - edge = G.indexed_in_edges(action.node.name)[action.idx] - if isinstance(edge.from_node, TransposeParameters): - trans_nodes.append(edge.from_node) - else: - edges = G.indexed_out_edges(action.node.name)[action.idx] - for edge in edges: - if isinstance(edge.to_node, TransposeParameters): - trans_nodes.append(edge.to_node) - return len([action for action in delete_actions if action.node not in trans_nodes]) > 0 + # when this is called we will have an equal amount of deletes and inserts so figure out if we are actually moving + # something downwards i.e. increase in step_idx + insert_steps = sum(insert_step_idx(G, action) + for action in actions if isinstance(action, InsertTransposeAction)) + delete_steps = sum(delete_step_idx(G, action) + for action in actions if isinstance(action, DeleteTransposeAction)) + return insert_steps > delete_steps - if not delete_actions or not insert_actions: - return False + +def insert_step_idx(G, action: InsertTransposeAction): + if action.direction == "in": + edge = G.indexed_in_edges(action.node)[action.idx] + # skip past transposes since this could be the one that we are deleting + while isinstance(edge.from_node, TransposeParameters): + edge = G.in_edges(edge.from_node)[0] + return edge.from_node.step_idx + else: + return action.node.step_idx + + +def delete_step_idx(G, action: DeleteTransposeAction): + return G.in_edges(action.node)[0].from_node.step_idx def eliminate_transposes(G, debug_function=None, one_cycle=False): info("eliminating unnecessary transposes") found_results = True + pass_count = 0 while found_results: + pass_count += 1 + if pass_count > 50: + raise ValueError( + "Sorry, eliminate transposes is stuck in a loop. Please report to GreenWaves.") found_results = False visited_nodes = set() actions = [] @@ -770,6 +814,7 @@ def eliminate_transposes(G, debug_function=None, one_cycle=False): transpose_node = transposes.pop(0) if transpose_node in visited_nodes: continue + info(f'++ trying to eliminate {transpose_node.name}') # search up for elimination try: @@ -817,6 +862,7 @@ def eliminate_transposes(G, debug_function=None, one_cycle=False): cur_actions_down.insert( 0, DeleteTransposeAction(transpose_node)) + info(f'++ evaluate elimination of {transpose_node.name}') # evaluate results up_count = count_eliminated(cur_actions_up) down_count = count_eliminated(cur_actions_down) @@ -829,6 +875,7 @@ def eliminate_transposes(G, debug_function=None, one_cycle=False): found_results = True actions += cur_actions_up visited_nodes |= set(cur_visited_up.nodes) + visited_nodes.add(transpose_node) # if transpose cannot be removed upwards movement push the transpose down if it actually moved elif down_count > 0 or (down_count == 0 and transpose_moved(G, cur_actions_down)): info( @@ -836,6 +883,7 @@ def eliminate_transposes(G, debug_function=None, one_cycle=False): found_results = True actions += cur_actions_down visited_nodes |= set(cur_visited_down.nodes) + visited_nodes.add(transpose_node) if found_results: info("eliminate transposes") diff --git a/tools/nntool/graph/manipulations/eliminate_transposes/eliminate_transposes_actions.py b/tools/nntool/graph/manipulations/eliminate_transposes/eliminate_transposes_actions.py index 5f7e3c338..22410ee25 100644 --- a/tools/nntool/graph/manipulations/eliminate_transposes/eliminate_transposes_actions.py +++ b/tools/nntool/graph/manipulations/eliminate_transposes/eliminate_transposes_actions.py @@ -13,7 +13,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from graph.types.fusions import LinearFusionParameters import logging from abc import ABC, abstractmethod from copy import deepcopy @@ -23,6 +22,7 @@ from graph.manipulations.eliminate_transposes.transpose_helpers import ( apply_transpose, reverse_transpose) from graph.types.base import NNEdge +from graph.types.fusions import LinearFusionParameters from graph.types.others import ReshapeParameters, TransposeParameters from utils.node_id import NodeId @@ -84,6 +84,12 @@ def __init__(self, node) -> None: class InsertNodeAction(Action): + def __init__(self, node, direction=None, idx=None, out_edge=None): + super(InsertNodeAction, self).__init__(node) + self.direction = direction + self.idx = idx + self.out_edge = out_edge + def do_insert(self, node, G, params, direction=None): if direction is None: direction = self.direction @@ -93,17 +99,18 @@ def do_insert(self, node, G, params, direction=None): if G.quantization: G.quantization.copy_qrec(node, 'in', self.idx, params) else: - G.insert_node_after( - node, params, from_idx=self.idx, edge_class=NNEdge) + if self.out_edge and G.edge_in_graph(self.out_edge): + G.insert_node_at_edge(params, self.out_edge, edge_class=NNEdge) + else: + G.insert_node_after( + node, params, from_idx=self.idx, edge_class=NNEdge) if G.quantization: G.quantization.copy_qrec(node, 'out', self.idx, params) class InsertTransposeAction(InsertNodeAction): - def __init__(self, node, direction=None, idx=None, transpose=None, reshape_from=None, reshape_to=None) -> None: - super(InsertTransposeAction, self).__init__(node) - self.direction = direction - self.idx = idx + def __init__(self, node, transpose=None, reshape_from=None, reshape_to=None, **kwargs) -> None: + super(InsertTransposeAction, self).__init__(node, **kwargs) self.transpose = transpose self.reshape_from = reshape_from self.reshape_to = reshape_to @@ -130,10 +137,8 @@ def __str__(self) -> str: class InsertReshapeAction(InsertNodeAction): - def __init__(self, node, direction=None, idx=None, in_shape=None, out_shape=None) -> None: - super(InsertReshapeAction, self).__init__(node) - self.direction = direction - self.idx = idx + def __init__(self, node, in_shape=None, out_shape=None, **kwargs) -> None: + super(InsertReshapeAction, self).__init__(node, **kwargs) assert in_shape is not None and out_shape is not None, 'find test' if isinstance(in_shape, (list, tuple)): self.in_shape = Dim.unnamed(in_shape) @@ -181,17 +186,21 @@ def __str__(self) -> str: class TransposeSlidedSlice(Action): - def __init__(self, node, transpose, dir=None) -> None: + def __init__(self, node, transpose_in, dir=None, transpose_out=None) -> None: super(TransposeSlidedSlice, self).__init__(node) - self.transpose = tuple(transpose) + self.transpose_in = tuple(transpose_in) + if transpose_out is None: + self.transpose_out = self.transpose_in + else: + self.transpose_out = tuple(transpose_out) def _execute(self, node, G): LOGL("%s", str(self)) - node.act_slice = [node.act_slice[idx] for idx in self.transpose] - node.out_shape = [node.out_shape[idx] for idx in self.transpose] + node.act_slice = [node.act_slice[idx] for idx in self.transpose_in] + node.out_shape = [node.out_shape[idx] for idx in self.transpose_out] def __str__(self) -> str: - return "%s transpose slided slice parameters with %s" % (self.node.name, self.transpose) + return "%s transpose slided slice parameters with %s/%s" % (self.node.name, self.transpose_in, self.transpose_out) class TransposePad(Action): diff --git a/tools/nntool/graph/manipulations/eliminate_transposes/transpose_helpers.py b/tools/nntool/graph/manipulations/eliminate_transposes/transpose_helpers.py index 9c42e16db..00b865e59 100644 --- a/tools/nntool/graph/manipulations/eliminate_transposes/transpose_helpers.py +++ b/tools/nntool/graph/manipulations/eliminate_transposes/transpose_helpers.py @@ -36,6 +36,12 @@ def reverses_transpose(trans1, trans2, dim=None): return True +def identity_transpose(trans): + if trans is None: + return False + return list(trans) == sorted(list(trans)) + + def apply_transpose(elems, trans): return [elems[i] for i in trans] diff --git a/tools/nntool/graph/manipulations/liveness.py b/tools/nntool/graph/manipulations/liveness.py index 66e1a6b5d..66e8a1aae 100644 --- a/tools/nntool/graph/manipulations/liveness.py +++ b/tools/nntool/graph/manipulations/liveness.py @@ -25,12 +25,13 @@ def calculate_liveness(G, steps: Sequence[Mapping]) -> Mapping[str, Mapping]: # input nodes create tensors if G.is_input(node): edges = G.out_edges(node.name) - assert all(edge.from_idx == 0 for edge in edges), "inputs should create a single tensor" - eparams = edges[0].params - liveness[eparams.name] = { - 'start': i, 'end': i, - 'is_input':True, 'is_output': False, 'dims': eparams.dims - } + if edges: + assert all(edge.from_idx == 0 for edge in edges), "inputs should create a single tensor" + eparams = edges[0].params + liveness[eparams.name] = { + 'start': i, 'end': i, + 'is_input':True, 'is_output': False, 'dims': eparams.dims + } else: # check what we consume for edge in G.in_edges(node.name): diff --git a/tools/nntool/graph/matches/match_utils.py b/tools/nntool/graph/matches/match_utils.py new file mode 100644 index 000000000..bdffdc756 --- /dev/null +++ b/tools/nntool/graph/matches/match_utils.py @@ -0,0 +1,120 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +def search_down(G, edge, for_node_classes, can_pass=None, can_pass_fn=None, edge_list=None, follow_multi=False, + follow_first=True, multi_on_target=True): + """ Search down for node classes + + Args: + G (NNGraph): Graph + edge (Edge): Edge to look down + for_node_classes (Union[Parameters, Tuple[Parameters]]): Node class or classes to look for + can_pass (Union[Parameters, Tuple[Parameters]], optional): Will pass through this node class or classes. + Defaults to None. + can_pass_fn (Callable, optional): function with graph and node as parameters. Should return True if + search can pass this node. Defaults to None. + follow_multi (bool, optional): Follow multi edge outputs. Defaults to False. + follow_first (bool, optional): Only follow first input. Defaults to True. + multi_on_target (bool, optional): Allow target to have multiple edges. Defaults to True. + + Returns: + Optional[Sequence[Edge]]: Edges found or None + """ + if edge_list is None: + edge_list = [] + edge_list.append(edge) + in_edges = G.in_edges(edge.to_node) + if isinstance(edge.to_node, for_node_classes): + if len(in_edges) > 1 and not multi_on_target: + return None + return edge_list + if len(in_edges) != 1: + if not follow_multi: + return None + for in_edge in in_edges: + if in_edge in edge_list: + continue + res = search_up(G, in_edge, for_node_classes, can_pass=can_pass, can_pass_fn=can_pass_fn, + edge_list=edge_list, follow_multi=follow_multi, follow_first=follow_first, + multi_on_target=multi_on_target) + if res: + return res + if ((can_pass and isinstance(edge.to_node, can_pass)) or + (can_pass_fn and can_pass_fn(G, edge.to_node))): + out_edges = G.out_edges(edge.to_node) + if not follow_multi and len(out_edges) != 1: + return None + for out_edge in out_edges: + res = search_down(G, out_edge, for_node_classes=for_node_classes, can_pass_fn=can_pass_fn, + can_pass=can_pass, follow_multi=follow_multi, edge_list=edge_list, + multi_on_target=multi_on_target) + if res: + return res + return None + + +def search_up(G, edge, for_node_classes, can_pass=None, can_pass_fn=None, edge_list=None, follow_multi="", + follow_first=True, multi_on_target=True): + """ Search up for node classes + + Args: + G (NNGraph): Graph + edge (Edge): Edge to look down + for_node_classes (Union[Parameters, Tuple[Parameters]]): Node class or classes to look for + can_pass (Union[Parameters, Tuple[Parameters]], optional): Will pass through this node class or classes. + Defaults to None. + can_pass_fn (Callable, optional): function with graph and node as parameters. Should return True if + search can pass this node. Defaults to None. + follow_multi (str, optional): Follow multi edge outputs. Defaults to empty string which means don't follow can be same or any. + follow_first (bool, optional): Only follow first input. Defaults to True. + multi_on_target (bool, optional): Allow target to have multiple edges. Defaults to True. + + Returns: + Optional[Sequence[Edge]]: Edges found or None + """ + if edge_list is None: + edge_list = [] + edge_list.append(edge) + out_edges = G.out_edges(edge.from_node) + if isinstance(edge.from_node, for_node_classes): + if len(out_edges) > 1 and not multi_on_target: + return None + return edge_list + if len(out_edges) != 1 and not isinstance(edge.from_node, for_node_classes): + if not follow_multi: + return None + for out_edge in out_edges: + if out_edge in edge_list: + continue + if follow_multi == "same" and out_edge.from_idx != edge.from_idx: + continue + res = search_down(G, out_edge, for_node_classes, can_pass=can_pass, can_pass_fn=can_pass_fn, + edge_list=edge_list, follow_multi=follow_multi, multi_on_target=multi_on_target) + if res: + return res + if ((can_pass and isinstance(edge.from_node, can_pass)) or + (can_pass_fn and can_pass_fn(G, edge.from_node))): + in_edges = G.in_edges(edge.from_node) + if not follow_multi and len(in_edges) != 1: + return None + for in_edge in in_edges: + if follow_first and in_edge.to_idx != 0: + continue + res = search_up(G, in_edge, for_node_classes=for_node_classes, can_pass_fn=can_pass_fn, + can_pass=can_pass, follow_first=follow_first, + follow_multi=follow_multi, edge_list=edge_list, multi_on_target=multi_on_target) + if res: + return res + return None diff --git a/tools/nntool/graph/matches/matchers/combine_concats.py b/tools/nntool/graph/matches/matchers/combine_concats.py index 7053fb16c..25888c47a 100644 --- a/tools/nntool/graph/matches/matchers/combine_concats.py +++ b/tools/nntool/graph/matches/matchers/combine_concats.py @@ -15,9 +15,9 @@ import logging from graph.dim import Dim -from graph.types import NNEdge, ReshapeParameters -from graph.types.others import ConcatParameters, CopyParameters -from utils.graph import GraphView +from graph.types import (ConcatParameters, CopyParameters, InputParameters, + NNEdge, ReshapeParameters, Parameters) +from utils.graph import GraphView, Node from utils.node_id import NodeId from ..matcher import (Matcher, description, groups, match_name, @@ -25,52 +25,100 @@ LOG = logging.getLogger("nntool." + __name__) +class DummyInput(Parameters): + def __init__(self, name: str, edge): + super().__init__(name) + self.edge = edge -def find_concats_up(G, node, subgraph: GraphView = None): + +def traverse_to_concat(G, edge, subgraph, edge_path=None): + if edge_path is None: + edge_path = [] + node = edge.from_node + if isinstance(node, ConcatParameters): + if node.axis != 0 or len(G.out_edges(node)) > 1: + return [] + find_concats_up(G, node, subgraph) + return edge_path + [edge] + elif isinstance(node, (CopyParameters, ReshapeParameters)): + if len(G.out_edges(node)) > 1: + return [] + in_edge = G.in_edges(node)[0] + return traverse_to_concat(G, in_edge, subgraph, edge_path=edge_path + [edge]) + else: + return [] + +def find_concats_up(G, concat, subgraph: GraphView = None): + # Produces a subgraph of concats operating on axis 0 separated by copys or reshapes. + # the output node will be the final concat. the input nodes will be all the inputs + # to a condensed concat that can replace this subgraph. if subgraph is None: subgraph = GraphView() - for edge in G.in_edges(node.name): - if isinstance(edge.from_node, ConcatParameters): - if len(G.out_edges(edge.from_node.name)) > 1 or edge.from_node.axis != 0: - continue - elif isinstance(edge.from_node, (CopyParameters, ReshapeParameters)): - if len(G.out_edges(edge.from_node.name)) > 1: - continue - subgraph.add_edge(edge.clone()) - if isinstance(edge.from_node, (ConcatParameters, CopyParameters, ReshapeParameters)): - find_concats_up(G, edge.from_node, subgraph=subgraph) + edge_path = [] + for edge in G.indexed_in_edges(concat.name): + edge_path = traverse_to_concat(G, edge, subgraph) + if edge_path: + for inter_edge in edge_path: + subgraph.add_edge(inter_edge) + else: + subgraph.add_edge( + NNEdge( + from_node=DummyInput(f"{edge.from_node.name}_{edge.from_idx}", edge), + to_node=edge.to_node, + to_idx=edge.to_idx + ) + ) return subgraph +# def find_concats_up(G, node, subgraph: GraphView = None, edge_path=None): +# # Produces a subgraph of concats operating on axis 0 separated by copys or reshapes. +# # the output node will be the final concat. the input nodes will be all the inputs +# # to a condensed concat that can replace this subgraph. +# if subgraph is None: +# subgraph = GraphView() +# edge_path = [] +# for edge in G.indexed_in_edges(node.name): +# if isinstance(edge.from_node, ConcatParameters): +# if len(G.out_edges(edge.from_node.name)) > 1 or edge.from_node.axis != 0: +# continue +# edge_path.append(edge) +# for traversed_edge in edge_path: +# subgraph.add_edge(traversed_edge.clone()) +# find_concats_up(G, edge.from_node, subgraph=subgraph, edge_path=[]) +# elif isinstance(edge.from_node, (CopyParameters, ReshapeParameters)): +# if len(G.out_edges(edge.from_node.name)) > 1: +# continue +# find_concats_up(G, edge.from_node, subgraph=subgraph, +# edge_path=edge_path + [edge]) +# return subgraph + + def remove_internal_graph(G, subgraph): in_nodes = subgraph.inputs() concat_node = subgraph.outputs()[0] for in_node in in_nodes: - edges = set(subgraph.out_edges(in_node.name)) - while edges: - edge = edges.pop() - # if the edge goes to the concat that we are keeping just remove it - # we will add it back later. The node may have already been removed if it - # is one of the internal concats. - if edge.to_node == concat_node: - if edge.from_node.name in G: - G.remove_edge(edge) + if G.edge_in_graph(in_node.edge): + G.remove_edge(in_node.edge) + nodes = {in_node.edge.to_node} + while nodes: + node = nodes.pop() + if node == concat_node: continue - edges |= set(subgraph.out_edges(edge.to_node.name)) - if edge.to_node.name in G: - G.remove(edge.to_node) - if G.quantization: - nid = NodeId(edge.to_node) - if nid in G.quantization: - del G.quantization[nid] + nodes |= set(edge.to_node for edge in subgraph.out_edges(node)) + if node in G: + G.remove(node) + nid = NodeId(node) + if G.quantization and nid in G.quantization: + del G.quantization[nid] -@match_name("combine_concats") -@description("Combine concats on 0 axis together") -@run_before('insert_copies') -@groups('*') -@needs_valid_dimension(True) -@modifies_dimensions(True) +@ match_name("combine_concats") +@ description("Combine concats on 0 axis together") +@ run_before('insert_copies') +@ groups('*') +@ needs_valid_dimension(True) +@ modifies_dimensions(True) class CombineConcats(Matcher): def _match(self, G: GraphView, set_identity: bool = True, **kwargs): @@ -85,21 +133,25 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): if len(found) <= 1: continue LOG.info( - "Combining concats %s into %s", - ",".join([node.name for node in found]), - concat.name) + f"Combining concats {','.join([node.name for node in found])}") modified_graph = True concats -= found - remove_internal_graph(G, subgraph) - in_nodes = subgraph.inputs() - in_edges = [ - edge - for node in in_nodes - for edge_group in subgraph.indexed_out_edges(node.name) - for edge in edge_group] + + in_edges = [inp.edge for inp in subgraph.inputs()] in_dims = [ edge.from_node.out_dims[edge.from_idx] for edge in in_edges ] + nodes_to_remove = [node for node in subgraph.nodes() if node != concat and not isinstance(node, DummyInput)] + for edge in in_edges: + G.remove_edge(edge) + for node in nodes_to_remove: + if node.name in G: + G.remove(node) + nid = NodeId(node) + if G.quantization and nid in G.quantization: + del G.quantization[nid] + + # remove_internal_graph(G, subgraph) out_dim = concat.out_dims[0] in_qs = [] for idx, edge in enumerate(in_edges): diff --git a/tools/nntool/graph/matches/matchers/concat_split.py b/tools/nntool/graph/matches/matchers/concat_split.py index 3ebcbf4c4..9b5151ab7 100644 --- a/tools/nntool/graph/matches/matchers/concat_split.py +++ b/tools/nntool/graph/matches/matchers/concat_split.py @@ -16,12 +16,16 @@ import logging from graph.types import ConcatParameters, NNEdge, SplitParameters +from graph.types.others import CopyParameters, NoOPParameters from utils.graph import GraphView +from utils.node_id import NodeId -from ..matcher import Matcher, groups, match_name, description +from ..match_utils import search_down +from ..matcher import Matcher, description, groups, match_name, run_before LOG = logging.getLogger("nntool." + __name__) + @groups('*') @match_name("concat_split") @description("removes concat/split pair where all in edges on the concat match the out edges on the split") @@ -42,13 +46,15 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs) -> bool: if concat_node.axis != split_node.axis: continue axis = concat_node.axis - split_out_sizes = [out_shape[axis] for out_shape in split_node.out_shapes] + split_out_sizes = [out_shape[axis] + for out_shape in split_node.out_shapes] if len(split_out_sizes) != len(concat_node.in_dims): continue if not all(split_out_sizes[idx] == in_dim.shape[axis] for idx, in_dim in enumerate(concat_node.in_dims)): continue has_modified_graph = True - LOG.info("removing unnecessary concat/split pair %s/%s", concat_node.name, split_node.name) + LOG.info("removing unnecessary concat/split pair %s/%s", + concat_node.name, split_node.name) concat_in_edges = G.indexed_in_edges(concat_node.name) split_out_edges = G.indexed_out_edges(split_node.name) G.remove(split_node) @@ -62,3 +68,106 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs) -> bool: self.set_identity(G) return has_modified_graph + + +def reduce_slices(slices, shapes): + res_slice = [] + res_shape = [] + for slice_axis, shape_axis in zip(zip(*slices), zip(*shapes)): + if slice_axis[0] == slice_axis[1]: + res_slice.append(slice_axis[0]) + res_shape.append(shape_axis[0]) + else: + res_slice.append( + (slice_axis[0][0], + slice_axis[-1][1], + slice_axis[0][2])) + res_shape.append(sum(shape_axis)) + return res_slice, res_shape + + +def remove_edges(G, edges): + if not edges: + return + edges = edges.copy() + while len(edges) > 1: + edge = edges.pop(0) + G.remove(edge.to_node) + if G.quantization: + nid = NodeId(edge.to_node) + if nid in G.quantization: + del G.quantization[nid] + try: + G.remove_edge(edges[0]) # @IgnoreException + except KeyError: + pass + + +@groups('*') +@match_name("split_concat") +@run_before('remove_noops', 'remove_copies') +@description("removes splits that go to concats where all the out edges of the split are in sequence in the concat") +class SplitConcatMatch(Matcher): + def _match(self, G: GraphView, set_identity: bool = True, **kwargs) -> bool: + edge_groups = [] + for node in G.nodes(node_classes=SplitParameters): + cur_group = None + for out_edge_bundle in G.indexed_out_edges(node): + if len(out_edge_bundle) == 1: + out_edge = out_edge_bundle[0] + concat_node_edges = search_down(G, out_edge, ConcatParameters, + can_pass=(CopyParameters, NoOPParameters)) + if concat_node_edges: + if cur_group: + this_concat_edge = concat_node_edges[-1] + last_concat_edge = cur_group[-1][-1] + if this_concat_edge.to_node == last_concat_edge.to_node and this_concat_edge.to_idx == last_concat_edge.to_idx + 1: + cur_group.append(concat_node_edges) + continue + if len(cur_group) > 1: + edge_groups.append(cur_group) + cur_group = [concat_node_edges] + continue + if cur_group: + if len(cur_group) > 1: + edge_groups.append(cur_group) + cur_group = None + if cur_group: + if len(cur_group) > 1: + edge_groups.append(cur_group) + cur_group = None + # we leave the splits and concats after this since they will be cleared up by remove_noops + for edge_group in edge_groups: + split_node = edge_group[0][0].from_node + concat_node = edge_group[0][-1].to_node + from_idx = edge_group[0][0].from_idx + to_idx = edge_group[-1][0].from_idx + LOG.info(f"combining outputs {from_idx}:{to_idx} on split node {split_node.name} followed by concat {concat_node.name}") + # combine slices and shapes on edges in group + new_slice, new_shape = reduce_slices( + split_node.act_slices[from_idx:to_idx+1], + split_node.out_shapes[from_idx:to_idx+1] + ) + split_node.act_slices = split_node.act_slices[:from_idx] + [ + new_slice] + split_node.act_slices[to_idx+1:] + split_node.out_shapes = split_node.out_shapes[:from_idx] + [ + new_shape] + split_node.out_shapes[to_idx+1:] + # remove all edges and intermediate nodes on all edge groups except the first + for edge_list in edge_group[1:]: + remove_edges(G, edge_list) + out_edge_bundles = G.indexed_out_edges(split_node) + # move edges beyond the edge group after the first index + for offset, edge_list in enumerate(out_edge_bundles[to_idx+1:]): + assert len(edge_list) == 1 + edge = edge_list[0] + G.remove_edge(edge) + G.add_edge(NNEdge.clone(edge, from_idx=from_idx+1+offset)) + # reindex the in edges in the concat + from_idx = edge_group[0][-1].to_idx + to_idx = edge_group[-1][-1].to_idx + in_edges = G.indexed_in_edges(concat_node) + for offset, in_edge in enumerate(in_edges[to_idx+1:]): + G.remove_edge(in_edge) + G.add_edge(NNEdge.clone(in_edge, to_idx=from_idx+1+offset)) + + return bool(edge_groups) diff --git a/tools/nntool/graph/matches/matchers/duplicate_constants.py b/tools/nntool/graph/matches/matchers/duplicate_constants.py index 5f4a5943b..6aebf13cb 100644 --- a/tools/nntool/graph/matches/matchers/duplicate_constants.py +++ b/tools/nntool/graph/matches/matchers/duplicate_constants.py @@ -38,7 +38,9 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): LOG.info('node %s has more than one out edge and will be duplicated', node.name) idx = 1 for out_edge in out_edges[1::]: - new_constant = ConstantInputParameters(f'{node.name}_{idx}', dims=Dim.unnamed(node.dims.shape), value=node.value.copy()) + new_constant = ConstantInputParameters( + f'{node.name}_{idx}', dims=Dim.unnamed(node.dims.shape), + value=node.value.copy()) G.remove_edge(out_edge) G.add_edge(NNEdge(from_node=new_constant, to_node=out_edge.to_node, to_idx=out_edge.to_idx)) idx += 1 diff --git a/tools/nntool/graph/matches/matchers/duplicate_operations.py b/tools/nntool/graph/matches/matchers/duplicate_operations.py index e3300c541..4ac00b591 100644 --- a/tools/nntool/graph/matches/matchers/duplicate_operations.py +++ b/tools/nntool/graph/matches/matchers/duplicate_operations.py @@ -62,7 +62,7 @@ def same_dest_edge(x): while same_source_edge: first = same_source_edge.pop(0) - others = list(filter(partial(lambda x, y: y.to_node.is_same_operation_as(G, + others = list(filter(partial(lambda x, y: x.to_node != y.to_node and y.to_node.is_same_operation_as(G, x.to_node), first), same_source_edge)) if others: same_dest_edges.append(tuple([first] + others)) @@ -70,7 +70,7 @@ def same_dest_edge(x): same_source_edge.remove(other) continue - other_groups = list(filter(partial(lambda x, y: y.to_node.can_be_grouped_with( + other_groups = list(filter(partial(lambda x, y: x.to_node != y.to_node and y.to_node.can_be_grouped_with( x.to_node), first), same_source_edge)) if other_groups: same_dest_group_edges.append( @@ -79,6 +79,7 @@ def same_dest_edge(x): same_source_edge.remove(other) # all are multiple edges that go to something comparable + save_same_dest_edges = same_dest_edges.copy() while same_dest_edges: edge_set = same_dest_edges.pop(0) keep_node = edge_set[0].to_node diff --git a/tools/nntool/graph/matches/matchers/expression_matcher.py b/tools/nntool/graph/matches/matchers/expression_matcher.py index fad4fd7fc..cd1f8c5d8 100644 --- a/tools/nntool/graph/matches/matchers/expression_matcher.py +++ b/tools/nntool/graph/matches/matchers/expression_matcher.py @@ -56,9 +56,8 @@ def walk_nodes(G, node, candidates, visited_nodes=None): if visited_nodes is None: visited_nodes = set() visited_nodes.add(node) - connected_nodes = set(G.connected_nodes(node.name)) - # find nodes that we have not visited and are in the candidate set - connected_nodes = (connected_nodes - visited_nodes) & candidates + # find nodes that we have not visited and are in the candidate set (don't use sets so the order does not change) + connected_nodes = [cnode for cnode in G.connected_nodes(node.name) if cnode not in visited_nodes and cnode in candidates] results = [node] for next_node in connected_nodes: results.extend(walk_nodes(G, next_node, candidates, @@ -68,10 +67,9 @@ def walk_nodes(G, node, candidates, visited_nodes=None): def construct_subgraph(G, nodes): """ construct a subgraph from nodes """ - nodes = set(nodes) sub_g = GraphView() while nodes: - node = nodes.pop() + node = nodes.pop(0) if node not in sub_g.nodes(): sub_g.add_node(node) for edge in G.out_edges(node.name): @@ -224,12 +222,15 @@ def find_connected_groups(G): whose input is the result of a node in the graph finally verify that all the nodes want to stay in each subgraph """ - candidates = set(G.nodes(node_classes=CanFuseToExpression)) + candidates = list(G.nodes(node_classes=CanFuseToExpression, sort=True)) subgraphs = [] + seen = [] while candidates: - node = candidates.pop() - subgroup = set(walk_nodes(G, node, candidates)) - candidates = candidates - subgroup + node = candidates.pop(0) + if node in seen: + continue + subgroup = walk_nodes(G, node, candidates) + seen.extend(subgroup) subgraph = construct_subgraph(G, subgroup) valid_subgraphs = validate_subgraph(G, subgraph) while valid_subgraphs: @@ -317,8 +318,16 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): symbol = func_col.variables[func_col.output_names[idx]] stats[symbol.name] = { 'min': qtype.min_val, 'max': qtype.max_val} - G.quantization[NodeId(expr)] = QRec( + nid = NodeId(expr) + G.quantization[nid] = QRec( in_qs=in_qs, out_qs=out_qs, expression=stats, ktype='scaled') + if G.quantization.stats: + G.quantization.stats[nid] = { + 'range_in': [{'min': qtype.min_val, 'max': qtype.max_val} for qtype in in_qs], + 'range_out': [{'min': qtype.min_val, 'max': qtype.max_val} for qtype in out_qs], + 'expression': stats.copy() + } + # delete any quantize parameters on outputs to allow the quantizer # to fuse them into the expression out_edges = G.out_edges(expr.name) diff --git a/tools/nntool/graph/matches/matchers/filt_bigger_than_in.py b/tools/nntool/graph/matches/matchers/filt_bigger_than_in.py index e69b40295..098cab45a 100644 --- a/tools/nntool/graph/matches/matchers/filt_bigger_than_in.py +++ b/tools/nntool/graph/matches/matchers/filt_bigger_than_in.py @@ -15,7 +15,7 @@ import logging -from graph.dim import Conv2DFilterDim, Dim +from graph.dim import Conv2DFilterDim, Dim, PadDim from graph.types import Conv2DParameters, ConvFusionParameters from utils.graph import GraphView @@ -50,15 +50,41 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): filt_node.name, filt_dim.h, filt_dim.w, in_dim[0].h, in_dim[0].w) continue - ker_h = 1 if min_h == 1 else filt_dim.h - ker_w = 1 if min_w == 1 else filt_dim.w + if min_h == 1: + ker_h = 1 + ker_h_reduced = True + else: + ker_h_reduced = False + ker_h = filt_dim.h + if min_w == 1: + ker_w = 1 + ker_w_reduced = True + else: + ker_w_reduced = False + ker_w = filt_dim.w if ker_h == filt_dim.h and ker_w == filt_dim.w: continue + if filt_node.padding: + if ker_h_reduced: + top = bottom = 0 + else: + top = filt_node.padding.t + bottom = filt_node.padding.b + if ker_w_reduced: + left = right = 0 + else: + left = filt_node.padding.l + right = filt_node.padding.r + padding = PadDim(top, bottom, left, right) + else: + padding = PadDim(0) + new_filt_dim = Conv2DFilterDim( ker_h, ker_w, filt_dim.out_c, in_c=filt_dim.in_c) LOG.warning("Converting filter of %s from [%dx%d] -> [%dx%d]", filt_node.name, filt_dim.h, filt_dim.w, new_filt_dim.h, new_filt_dim.w) filt_node.filter = new_filt_dim + filt_node.padding = padding new_w_idxs = [] for dim in filt_dim.order: if dim in ('out_c', 'in_c'): diff --git a/tools/nntool/graph/matches/matchers/find_hsigmoid.py b/tools/nntool/graph/matches/matchers/find_hsigmoid.py index b2aaff9a2..5d406a268 100644 --- a/tools/nntool/graph/matches/matchers/find_hsigmoid.py +++ b/tools/nntool/graph/matches/matchers/find_hsigmoid.py @@ -22,10 +22,10 @@ MatrixBroadcastedLinearOpParameters, MatrixMulParameters, NNEdge, ReluActivationParameters) from quantization.new_qrec import QRec -from utils.graph import Edge, GraphView +from utils.graph import GraphView from utils.node_id import NodeId -from ..matcher import DefaultMatcher, Matcher, MatchNode, match_name, groups, description, run_before +from ..matcher import Matcher, description, groups, match_name, run_before LOG = logging.getLogger("nntool." + __name__) @@ -45,52 +45,64 @@ def check_equals(G, node, val): # Matches filter -> mul with 1/6th constant + @match_name('match_close_hsigmoid') @description('Match relu6 followed by matmul with 1/6 constant and replaces with hsigmoid activation') @groups('scaled') @run_before('fuse_gap_convs', 'fuse_gap_linear') -class MatchCloseHSigmoid(DefaultMatcher): - - def match_function(self, G: GraphView): - sub = GraphView() - sub.add_node(MatchNode('0', matcher=lambda node: - isinstance(node, ReluActivationParameters) and node.upper_bound == 6)) - sub.add_node(MatchNode('1', matcher=lambda node: - isinstance(node, MatrixMulParameters))) - sub.add_node(MatchNode('2', matcher=lambda node: - isinstance(node, ConstantInputParameters) and check_equals(G, node, 1.0/6.0))) - sub.add_edge(Edge('0', '1', to_idx=0)) - sub.add_edge(Edge('2', '1', to_idx=1)) - - return G.match_fragment(sub) - - def replace_function(self, G: GraphView, subgraph: GraphView): - relu_node = None - constant_node = None - mul_node = None - for node in subgraph.nodes(): - if isinstance(node, ReluActivationParameters): - relu_node = node - elif isinstance(node, ConstantInputParameters): - constant_node = node - elif isinstance(node, MatrixMulParameters): - mul_node = node - - activation = HSigmoidActivationParameters( - mul_node.name + "_fused_close_hsigmoid", offset=0) - - if G.quantization: - reluqrec = G.quantization[NodeId(relu_node)] - mulqrec = G.quantization[NodeId(mul_node)] - del G.quantization[NodeId(constant_node)] - pqrec = QRec.copy_ktype( - reluqrec, in_qs=reluqrec.in_qs, out_qs=mulqrec.out_qs) - G.quantization[NodeId(activation)] = pqrec - return activation, None, None +class MatchCloseHSigmoid(Matcher): + + def _match(self, G: GraphView, set_identity: bool = True, **kwargs): + something_changed = False + for relu_node in [node for node in G.nodes(node_classes=ReluActivationParameters) if node.upper_bound == 6]: + out_edges = G.out_edges(relu_node) + if len(out_edges) != 1 or not isinstance(out_edges[0].to_node, MatrixMulParameters): + continue + mul_node = out_edges[0].to_node + in_edges = G.in_edges(mul_node) + if len(in_edges) != 2: + continue + other_edge = (set(in_edges) - {out_edges[0]}).pop() + constant_node = other_edge.from_node + if len(G.out_edges(constant_node)) != 1: + continue + if (not isinstance(constant_node, ConstantInputParameters) or + not check_equals(G, constant_node, 1.0/6.0)): + continue + + something_changed = True + activation = HSigmoidActivationParameters( + G.unique_name(f'{mul_node.name}_hsigmoid'), offset=0) + + in_edges = G.in_edges(relu_node) + out_edges = G.out_edges(mul_node) + + nodes_to_replace = [relu_node, mul_node, constant_node] + + LOG.info(f'fusing {", ".join(node.name for node in nodes_to_replace)} into HSIGMOID {activation.name}') + G.remove_all(nodes_to_replace) + + for in_edge in in_edges: + G.add_edge(NNEdge.clone(in_edge, to_node=activation, to_idx=0)) + for out_edge in out_edges: + G.add_edge(NNEdge.clone( + out_edge, from_node=activation, from_idx=0)) + + if G.quantization: + reluqrec = G.quantization[NodeId(relu_node)] + mulqrec = G.quantization[NodeId(mul_node)] + del G.quantization[NodeId(constant_node)] + pqrec = QRec.copy_ktype( + reluqrec, in_qs=reluqrec.in_qs, out_qs=mulqrec.out_qs) + G.quantization[NodeId(activation)] = pqrec + + return something_changed def look_back(G, node, state=None): # TODO - Pass through nodes that don't modify the tensor contents + if G.quantization is None: + return None if state is None: state = {'relu1': None, 'add': None, 'relu2': None, 'mul': None, 'relu3': None} @@ -174,6 +186,7 @@ def process_rec(G, oprec): del G.quantization[NodeId(oprec[node_type][2])] G.remove(oprec[node_type][2]) + @match_name('match_far_hsigmoid') @description('Looks for quantized HSigmoid - [Relu] -> Add 3 -> Relu6 -> Mul 1/6 -> [Relu]') @groups('scaled') diff --git a/tools/nntool/graph/matches/matchers/match_channel_padded_add.py b/tools/nntool/graph/matches/matchers/match_channel_padded_add.py index fa379c13a..a650765a4 100644 --- a/tools/nntool/graph/matches/matchers/match_channel_padded_add.py +++ b/tools/nntool/graph/matches/matchers/match_channel_padded_add.py @@ -110,11 +110,10 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): output_mapping=output_mapping) if G.quantization: qrecs = G.quantization.get_all(pnode.contained_nodes()) - # if there are quantization stats then clear them. They need to be created again - G.quantization.stats = None + # TODO - stats if qrecs: prec = QRec.copy_ktype( - qrecs[0], in_qs=qrecs[0].in_qs, out_qs=qrecs[-1].out_qs) + qrecs[1], in_qs=qrecs[1].in_qs, out_qs=qrecs[-1].out_qs) for node in pnode.contained_nodes(): G.quantization.move_to_fusion(node, pnode) G.quantization[NodeId(pnode)] = prec diff --git a/tools/nntool/graph/matches/matchers/match_external_bias_matmul.py b/tools/nntool/graph/matches/matchers/match_external_bias_matmul.py new file mode 100644 index 000000000..04aa887c8 --- /dev/null +++ b/tools/nntool/graph/matches/matchers/match_external_bias_matmul.py @@ -0,0 +1,172 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from graph.types.others import ReshapeParameters, TransposeParameters +import logging + +from graph.dim import Dim +from graph.matches.matchers.remove_unnecessary_quantize_operators import \ + RemoveUnnecessaryQuantizeOperators +from graph.types import (ConstantInputParameters, MatrixAddParameters, + MatrixMulParameters, NNEdge) +from graph.types.tensor_arithmetic import MatMulOpParameters +from quantization.quantizer.new_quantizer import NewQuantizer +from utils.graph import GraphView +from utils.node_id import NodeId + +from ..matcher import Matcher, description, groups, match_name, run_before + +LOG = logging.getLogger("nntool." + __name__) + + +def reverse_matmul(G: GraphView, params): + # reverse edges + in_edges = G.indexed_in_edges(params.name) + for edge in in_edges[0:2:]: + G.remove_edge(edge) + other_idx = 1 + for edge in in_edges[0:2:]: + G.add_edge(NNEdge(from_node=edge.from_node, to_node=params, + from_idx=edge.from_idx, to_idx=other_idx)) + other_idx = 1 - other_idx + nid = NodeId(params) + if G.quantization and nid in G.quantization: + qrec = G.quantization[nid] + # swap qrecs + qrec.in_qs[0], qrec.in_qs[1] = qrec.in_qs[1], qrec.in_qs[0] + + # add transposes + in_nodes = [] + for idx in range(2): + tin_params = TransposeParameters(G.unique_name( + f"{params.name}_tin{idx}"), transpose=(1, 0)) + in_nodes.append(tin_params) + G.insert_node_before(tin_params, params, to_idx=idx, edge_class=NNEdge) + tout_params = TransposeParameters(G.unique_name( + f"{params.name}_tout"), transpose=(1, 0)) + G.insert_node_after(params, tout_params) + return in_nodes, tout_params + +# this is largely a copy of the filter versiot but there are some subtle differences + + +@match_name('fuse_external_bias_matmul') +@description('Fuse bias addition after matmul') +@groups('scaled', 'symmetric') +@run_before('match_op_activation', 'move_pooling_scale8', 'move_activations_pow2', 'move_activations_scale8', 'fuse_op_activation_scale8', 'fuse_op_activation_pow2') +class MatchExternalBiasMatmul(Matcher): + + def _match(self, G: GraphView, set_identity: bool = True, **kwargs): + has_modified_graph = False + has_transposed = False + for params in G.nodes(node_classes=MatMulOpParameters): + matmul = params + seen_reshape = [] + while True: + out_edges = G.out_edges(params.name) + # can't fuse if there is a branch + if len(out_edges) > 1: + break + out_edge = out_edges[0] + op_node = out_edge.to_node + if isinstance(op_node, ReshapeParameters): + seen_reshape.append(op_node) + params = op_node + continue + # must be a valid matrix op + if not isinstance(op_node, (MatrixAddParameters, MatrixMulParameters)): + break + # other edge to the op must be a constant + other_idx = 1 if out_edge.to_idx == 0 else 0 + other_in_edge = G.indexed_in_edges(op_node.name)[other_idx] + if not isinstance(other_in_edge.from_node, ConstantInputParameters): + break + const_node = other_in_edge.from_node + remove_constant = len(G.out_edges(const_node.name)) + + flat_value = const_node.dqvalue.flatten() + out_shape = matmul.out_dims[0].shape + if len(out_shape) != 2: + raise ValueError( + f'strange outputs shape of {out_shape} for matmul {params.name}') + if len(flat_value) != out_shape[0] and len(flat_value) != out_shape[1]: + LOG.info("can't fuse %s into %s - value shape is not correct for bias", + const_node.name, matmul.name) + break + has_bias = len(matmul.in_dims) == 3 + in_nodes = [matmul] + out_node = seen_reshape[-1] if seen_reshape else matmul + if isinstance(op_node, MatrixAddParameters): + if has_bias: + if len(flat_value.shape) != len(matmul.in_dims[2]): + LOG.info( + "can't fuse %s into %s - bias shape is not the same", const_node.name, matmul.name) + break + bias_node = G.indexed_in_edges(matmul.name)[ + 2].from_node + LOG.info( + "folding additive bias from %s into existing bias on %s", op_node.name, matmul.name) + bias_node.value = bias_node.dqvalue + flat_value + else: + if len(flat_value) != out_shape[1]: + # matmul needs to be transposed to fuse this + in_nodes, trans_node = reverse_matmul(G, matmul) + if seen_reshape: + out_node = seen_reshape[-1] + else: + out_node = trans_node + has_transposed = True + bias_node = ConstantInputParameters( + G.unique_name(f'{matmul.name}_bias'), + value=flat_value, dims=Dim.unnamed(flat_value.shape)) + G.add_edge(NNEdge(from_node=bias_node, + to_node=matmul, to_idx=2)) + LOG.info( + "folding additive bias from %s into new bias on %s", op_node.name, matmul.name) + else: + params_in = G.indexed_in_edges(matmul.name) + consts = [isinstance( + edge.from_node, ConstantInputParameters) for edge in params_in] + if not any(consts): + break + mult_const_node = params_in[1].from_node if consts[1] else params_in[0].from_node + mult_const_node.value = mult_const_node.dqvalue * const_node.dqvalue + if has_bias: + bias_node = params_in[2].from_node + bias_node.value = bias_node.dqvalue * const_node.dqvalue + + LOG.info( + "folding multaplicative bias from %s into new bias on %s", op_node.name, matmul.name) + + out_edges = G.out_edges(op_node.name) + G.remove(op_node) + if remove_constant: + G.remove(const_node) + for edge in out_edges: + G.add_edge(NNEdge(from_node=out_node, + to_node=edge.to_node, to_idx=edge.to_idx)) + G.add_dimensions() + if G.quantization: + quantizer = NewQuantizer.from_quantized_graph(G) + quantizer.quantize() + RemoveUnnecessaryQuantizeOperators().match(G) + + if has_transposed: + G.adjust_order() + + if set_identity: + self.set_identity(G) + + return has_modified_graph diff --git a/tools/nntool/graph/matches/matchers/match_gap_conv.py b/tools/nntool/graph/matches/matchers/match_gap_conv.py index 3c321a5f1..cbb5ca865 100644 --- a/tools/nntool/graph/matches/matchers/match_gap_conv.py +++ b/tools/nntool/graph/matches/matchers/match_gap_conv.py @@ -148,8 +148,7 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): if G.quantization: qrecs = G.quantization.get_all(pnode.contained_nodes()) if qrecs: - # if there are quantization stats then clear them. They need to be created again - G.quantization.stats = None + # TODO - stats prec = QRec.copy_ktype( qrecs[0], in_qs=deepcopy(qrecs[0].in_qs), out_qs=deepcopy(qrecs[-1].out_qs)) for node in pnode.contained_nodes(): diff --git a/tools/nntool/graph/matches/matchers/match_gap_linear.py b/tools/nntool/graph/matches/matchers/match_gap_linear.py index 1ee50f488..634bcb62b 100644 --- a/tools/nntool/graph/matches/matchers/match_gap_linear.py +++ b/tools/nntool/graph/matches/matchers/match_gap_linear.py @@ -71,6 +71,13 @@ def fusion_type(self): return '_'.join(['linear' if isinstance(params, FcParameters) else 'active' for params in self.order]) +def move_stats_to_fusion(fusion, stats): + new_stats = {} + for node in fusion.contained_nodes: + pass + + + @groups('*') @match_name("fuse_gap_linear") @@ -117,8 +124,7 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): input_mapping=input_mapping, output_mapping=output_mapping) if G.quantization: - # if there are quantization stats then clear them. They need to be created again - G.quantization.stats = None + # TODO - stats qrecs = G.quantization.get_all(pnode.contained_nodes()) if qrecs: prec = QRec.copy_ktype( diff --git a/tools/nntool/graph/matches/matchers/match_gap_pool.py b/tools/nntool/graph/matches/matchers/match_gap_pool.py index 242dc834a..8b0314d5a 100644 --- a/tools/nntool/graph/matches/matchers/match_gap_pool.py +++ b/tools/nntool/graph/matches/matchers/match_gap_pool.py @@ -134,8 +134,7 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): input_mapping=input_mapping, output_mapping=output_mapping) if G.quantization: - # if there are quantization stats then clear them. They need to be created again - G.quantization.stats = None + # TODO - stats qrecs = G.quantization.get_all(pnode.contained_nodes()) if qrecs: prec = QRec.copy_ktype( diff --git a/tools/nntool/graph/matches/matchers/match_op_activation.py b/tools/nntool/graph/matches/matchers/match_op_activation.py index e4ffe4559..406dbde5c 100644 --- a/tools/nntool/graph/matches/matchers/match_op_activation.py +++ b/tools/nntool/graph/matches/matchers/match_op_activation.py @@ -13,6 +13,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from graph.types.tensor_arithmetic import MatMulTransposedParameters import logging from abc import abstractproperty @@ -81,6 +82,11 @@ 'scaled': (VALID_GEN_ACTIVATIONS_SQ8, MatMulOpFusionParameters), 'symmetric': (VALID_GEN_ACTIVATIONS_POW2, MatMulOpFusionParameters), 'float': (VALID_GEN_ACTIVATIONS_FLOAT, MatMulOpFusionParameters), + }, + MatMulTransposedParameters: { + 'scaled': (VALID_GEN_ACTIVATIONS_SQ8, MatMulOpFusionParameters), + 'symmetric': (VALID_GEN_ACTIVATIONS_POW2, MatMulOpFusionParameters), + 'float': (VALID_GEN_ACTIVATIONS_FLOAT, MatMulOpFusionParameters), } } @@ -127,7 +133,7 @@ def fusion_type(self): else 'active' for params in self.order]) -@run_after('fuse_gap_pool', 'fuse_external_bias_matbul') +@run_after('fuse_gap_pool', 'fuse_external_bias_matmul') class MatchOpActivation(Matcher): @abstractproperty @@ -172,8 +178,7 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): input_mapping=input_mapping, output_mapping=output_mapping) if G.quantization: - # if there are quantization stats then clear them. They need to be created again - G.quantization.stats = None + # TODO - stats qrecs = G.quantization.get_all(pnode.contained_nodes()) if qrecs: prec = QRec.copy_ktype( diff --git a/tools/nntool/graph/matches/matchers/match_transpose_matmul.py b/tools/nntool/graph/matches/matchers/match_transpose_matmul.py new file mode 100644 index 000000000..b9ddb5c92 --- /dev/null +++ b/tools/nntool/graph/matches/matchers/match_transpose_matmul.py @@ -0,0 +1,73 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from graph.types.tensor_arithmetic import MatMulTransposedParameters +import logging +from abc import abstractproperty + +from graph.types import (TransposeParameters, ActivationParameters, + BroadcastableActivationFusion, + GlobalPoolingParameters, HSigmoidActivationParameters, + HSwishActivationParameters, LeakyActivationParameters, + MatMulOpFusionParameters, MatMulOpParameters, + MatrixAddParameters, NNEdge, + PoolingParameters, ReluActivationParameters, + SigmoidActivationParameters) +from quantization.new_qrec import QRec +from utils.graph import GraphView +from utils.node_id import NodeId + +from ..matcher import Matcher, description, groups, match_name, run_after, run_before + +LOG = logging.getLogger("nntool." + __name__) + +@run_after('fuse_external_bias_matmul') +@run_before('fuse_op_activation_scale8', 'fuse_op_activation_pow2') +@groups('*') +@match_name("match_trans_matmul") +@description("spots Transpose followed by matmul and generates the proper matmul generator") +class MatchTransMatMul(Matcher): + + def get_node_list(self, G, params, result): + if not result.add_node(G, params): + return result + out_edges = G.out_edges(params.name) + if len(out_edges) > 1: + return result + return self.get_node_list(G, out_edges[0].to_node, result) + + def _match(self, G: GraphView, set_identity: bool = True, **kwargs): + has_modified_graph = False + + for node in G.nodes(node_classes=MatMulOpParameters): + in_edges = [edge for edge in G.indexed_in_edges(node.name)] + trans_node = in_edges[1].from_node + if not isinstance(trans_node, TransposeParameters): + continue + if isinstance(node, MatMulTransposedParameters): + new_node = MatMulOpParameters(node.name) + else: + new_node = MatMulTransposedParameters(node.name) + + in_trans_edge = [edge for edge in G.indexed_in_edges(trans_node.name)][0] + G.replace_node(node.name, new_node) + G.remove(trans_node) + G.add_edge(NNEdge(in_trans_edge.from_node, new_node, from_idx=in_trans_edge.from_idx, to_idx=1)) + has_modified_graph = True + + if set_identity: + self.set_identity(G) + + return has_modified_graph diff --git a/tools/nntool/graph/matches/matchers/move_node_up.py b/tools/nntool/graph/matches/matchers/move_node_up.py index 23e733eb3..49c08b4bc 100644 --- a/tools/nntool/graph/matches/matchers/move_node_up.py +++ b/tools/nntool/graph/matches/matchers/move_node_up.py @@ -19,6 +19,7 @@ MatrixAddParameters, MatrixMulParameters, NNEdge, PoolingParameters, ReluActivationParameters, ReshapeParameters, TransposeParameters) +from graph.types.tensor_arithmetic import MatMulOpParameters from utils.graph import GraphView from utils.node_id import NodeId @@ -138,7 +139,7 @@ class MoveActivationsMatcherScale8(MoveNodeUpMatcher): ValidNodesToPass = (ReshapeParameters, TransposeParameters, ConcatParameters) ValidFusions = (Conv2DParameters, FcParameters, PoolingParameters, PoolingParameters, - GlobalPoolingParameters, MatrixAddParameters, MatrixMulParameters) + GlobalPoolingParameters, MatrixAddParameters, MatrixMulParameters, MatMulOpParameters) ValidNodes = (ActivationParameters,) diff --git a/tools/nntool/graph/matches/matchers/move_nodes_before_split.py b/tools/nntool/graph/matches/matchers/move_nodes_before_split.py index 0c9ca2ed6..8749112a5 100644 --- a/tools/nntool/graph/matches/matchers/move_nodes_before_split.py +++ b/tools/nntool/graph/matches/matchers/move_nodes_before_split.py @@ -62,10 +62,12 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs): has_modified_graph = True in_edges = G.in_edges(node.name) assert len(in_edges) == 1 + # sort by name to ensure that operation is repeatable + same_op_edges.sort(key=lambda x: x.to_node.name) keep_node = same_op_edges[0].to_node LOG.info( 'split node %s has duplicate operations on its out edges', node.name) - LOG.info('moving %s before split node %s', keep_node, node.name) + LOG.info('moving %s before split node %s', keep_node.name, node.name) for edge in G.out_edges(node.name): node_out_edges = G.out_edges(edge.to_node.name) G.remove(edge.to_node) diff --git a/tools/nntool/graph/matches/matchers/remove_copies.py b/tools/nntool/graph/matches/matchers/remove_copies.py index d74c98000..302b9321a 100644 --- a/tools/nntool/graph/matches/matchers/remove_copies.py +++ b/tools/nntool/graph/matches/matchers/remove_copies.py @@ -15,44 +15,50 @@ import logging -from graph.types import CopyParameters, NNEdge, TransposeParameters -from graph.types.others import QuantizeParameters +from graph.types import (ConcatParameters, ConstantInputParameters, + CopyParameters, InputParameters, NNEdge, + NoOPParameters, OutputParameters, ReshapeParameters, + SplitParameters, TransposeParameters) from utils.graph import GraphView from utils.node_id import NodeId +from ..match_utils import search_down, search_up from ..matcher import (Matcher, description, groups, match_name, modifies_dimensions, run_after) LOG = logging.getLogger("nntool." + __name__) -def valid_node(node): - return (isinstance(node, TransposeParameters) and not node.does_nothing()) or isinstance(node, QuantizeParameters) - - @match_name("remove_copies") @description("Remove unnecessary copies") @modifies_dimensions(True) @groups('*') -@run_after('expand_transposes') +@run_after('expand_transposes', 'remove_noops') class RemoveCopies(Matcher): def _match(self, G: GraphView, set_identity: bool = True, **kwargs): has_modified_graph = False nodes_to_remove = [] for node in G.nodes(node_classes=CopyParameters): - in_edge = G.in_edges(node.name)[0] - if (valid_node(in_edge.from_node) and - not G.num_out_edges(in_edge.from_node.name) > 1): - nodes_to_remove.append(node) - continue - out_edges = G.out_edges(node.name) - if len(out_edges) != 1: + out_edges = G.out_edges(node) + if len(out_edges) > 1: continue - out_edge = out_edges[0] - if valid_node(out_edge.to_node): - nodes_to_remove.append(node) + if (search_down( + G, + out_edges[0], + (OutputParameters, InputParameters, ConstantInputParameters, SplitParameters, ConcatParameters), + can_pass=(ReshapeParameters, NoOPParameters), + can_pass_fn=lambda G, node: isinstance(node, TransposeParameters) and node.does_nothing, + follow_multi=True) and + search_up( + G, + G.in_edges(node)[0], + (InputParameters, OutputParameters, ConstantInputParameters, SplitParameters, ConcatParameters), + can_pass=(ReshapeParameters, NoOPParameters), + can_pass_fn=lambda G, node: isinstance(node, TransposeParameters) and node.does_nothing, + follow_multi=True)): continue + nodes_to_remove.append(node) for node in nodes_to_remove: LOG.info( "remove redundant copy %s", diff --git a/tools/nntool/graph/matches/matchers/remove_noops.py b/tools/nntool/graph/matches/matchers/remove_noops.py index 94d52ae01..d469cccf2 100644 --- a/tools/nntool/graph/matches/matchers/remove_noops.py +++ b/tools/nntool/graph/matches/matchers/remove_noops.py @@ -13,27 +13,51 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import logging + from graph.types import NNEdge, NoOPParameters -from graph.types.others import ReshapeParameters, TransposeParameters +from graph.types.others import (ConcatParameters, ReshapeParameters, + SplitParameters, TransposeParameters) from utils.graph import GraphView -from ..matcher import Matcher, match_name, description, run_before, groups +from ..matcher import Matcher, description, groups, match_name, run_before + +LOG = logging.getLogger("nntool." + __name__) + + @match_name("remove_noops") -@description("Remove noop nodes") +@description("Remove noop nodes and other nodes that are doing nothing such as Concats " + "or Splits with one input and output or transposes with no transpose or " + "reshapes that don't reshape, etc.") @run_before('*') @groups('symmetric', 'scaled') class RemoveNoOPs(Matcher): @staticmethod - def node_does_nothing(node): + def one_inedge(G, node, idx=None): + in_edges = G.in_edges(node) + return len(in_edges) == 1 and (idx is None or in_edges[0].to_idx == idx) + + @staticmethod + def one_outedge(G, node, idx=None): + out_edges = G.out_edges(node) + return len(out_edges) == 1 and (idx is None or out_edges[0].from_idx == idx) + + @staticmethod + def one_in_and_outedge(G, node, idx=None): + return RemoveNoOPs.one_inedge(G, node, idx=idx) and RemoveNoOPs.one_outedge(G, node, idx=idx) + + @staticmethod + def node_does_nothing(G, node): return (isinstance(node, NoOPParameters) or isinstance(node, TransposeParameters) and node.transpose is None or - isinstance(node, ReshapeParameters) and node.old_shape == node.shape) + isinstance(node, ReshapeParameters) and node.old_shape == node.shape or + (isinstance(node, (ConcatParameters, SplitParameters)) and RemoveNoOPs.one_in_and_outedge(G, node, idx=0))) def _match(self, G: GraphView, set_identity: bool = True, **kwargs) -> bool: has_modified_graph = False - for node in [node for node in G.nodes() if self.node_does_nothing(node)]: + for node in [node for node in G.nodes() if self.node_does_nothing(G, node)]: has_modified_graph = True in_edge = G.in_edges(node.name)[0] G.remove_edge(in_edge) @@ -41,6 +65,7 @@ def _match(self, G: GraphView, set_identity: bool = True, **kwargs) -> bool: G.remove_edge(out_edge) G.add_edge(NNEdge(in_edge.from_node, out_edge.to_node, from_idx=in_edge.from_idx, to_idx=out_edge.to_idx)) + LOG.info(f'removing {node.name} that does nothing') G.remove(node) if set_identity: diff --git a/tools/nntool/graph/matches/matchers/remove_quantize_operators.py b/tools/nntool/graph/matches/matchers/remove_quantize_operators.py index 52de9fd86..cc8eedb30 100644 --- a/tools/nntool/graph/matches/matchers/remove_quantize_operators.py +++ b/tools/nntool/graph/matches/matchers/remove_quantize_operators.py @@ -17,13 +17,12 @@ import numpy as np from bfloat16 import bfloat16 -from graph.types.base import InsensitiveToQuantization, NNEdge -from graph.types.input_output import InputParameters, OutputParameters -from graph.types.others import QuantizeParameters +from graph.types import (InputParameters, InsensitiveToQuantization, NNEdge, + OutputParameters, QuantizeParameters) from utils.graph import GraphView from utils.node_id import NodeId -from ..matcher import Matcher, match_name, description, run_before +from ..matcher import Matcher, description, match_name, run_before LOG = logging.getLogger("nntool." + __name__) diff --git a/tools/nntool/graph/matches/matchers/remove_slice.py b/tools/nntool/graph/matches/matchers/remove_slice.py new file mode 100644 index 000000000..de3c00d45 --- /dev/null +++ b/tools/nntool/graph/matches/matchers/remove_slice.py @@ -0,0 +1,56 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import logging +from graph.types import NNEdge +from graph.types.others import ReshapeParameters, StridedSliceParameters +from utils.graph import GraphView +from utils.node_id import NodeId + +from ..matcher import Matcher, match_name, description, run_before, groups + +LOG = logging.getLogger("nntool." + __name__) + + +@match_name("remove_slice") +@description("Removes slices that are doing nothing and may insert a reshape if necessary.") +@run_before('*') +@groups('symmetric', 'scaled') +class RemoveSlice(Matcher): + + def _match(self, G: GraphView, set_identity: bool = True, **kwargs) -> bool: + has_modified_graph = False + for node in [node for node in G.nodes(node_classes=StridedSliceParameters)]: + if node.slice_shape != tuple(node.in_dims[0].shape): + continue + has_modified_graph = True + nid = NodeId(node) + if node.slice_shape == node.out_shape: + LOG.info(f'removing strided slice {node.name} that does nothing') + G.remove_and_reconnect(node, edge_class=NNEdge) + if G.quantization and nid in G.quantization: + del G.quantization[nid] + else: + reshape = ReshapeParameters(G.unique_name(f'{node.name}_reshape'), old_shape=node.slice_shape, shape=node.out_shape) + LOG.info(f'replacing strided slice {node.name} with reshape {reshape.name}') + G.replace_node(node, reshape) + if G.quantization and nid in G.quantization: + G.quantization[NodeId(reshape)] = G.quantization[nid] + del G.quantization[nid] + + if set_identity: + self.set_identity(G) + + return has_modified_graph diff --git a/tools/nntool/graph/matches/matchers/remove_unused_concats.py b/tools/nntool/graph/matches/matchers/remove_unused_concats.py deleted file mode 100644 index e436484f6..000000000 --- a/tools/nntool/graph/matches/matchers/remove_unused_concats.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (C) 2020 GreenWaves Technologies, SAS - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. - -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -from graph.types import ConcatParameters -from utils.graph import Edge, GraphView, MatchNode, Node - -from ..matcher import DefaultMatcher, match_name, description, run_before, groups - - -class ConcatMatcher1(MatchNode): - def _match(self, G: GraphView, node: Node, edge: Edge): - return isinstance(node, ConcatParameters) and G.num_in_edges(node.name) == 1 - -@match_name("unused_concats") -@description("Remove concats that only have one input") -@run_before('*') -@groups('*') -class RemoveUnusedConcats(DefaultMatcher): - - def match_function(self, G: GraphView): - sub = GraphView() - sub.add_node(ConcatMatcher1('0')) - return G.match_fragment(sub) - - def replace_function(self, G: GraphView, subgraph: GraphView): - return None, None, None diff --git a/tools/nntool/graph/matches/matchers/slice_to_split.py b/tools/nntool/graph/matches/matchers/slice_to_split.py index af3724775..e6414e0aa 100644 --- a/tools/nntool/graph/matches/matchers/slice_to_split.py +++ b/tools/nntool/graph/matches/matchers/slice_to_split.py @@ -20,10 +20,11 @@ import numpy as np from graph.dim import Dim -from graph.manipulations.eliminate_transposes.transpose_helpers import reverse_transpose -from graph.types import NNEdge, SplitParameters, StridedSliceParameters -from graph.types.input_output import OutputParameters -from graph.types.others import ReshapeParameters, TransposeParameters +from graph.manipulations.eliminate_transposes.transpose_helpers import \ + reverse_transpose +from graph.types import (NNEdge, OutputParameters, ReshapeParameters, + SplitParameters, StridedSliceParameters, + TransposeParameters) from quantization.quantizer.new_quantizer import NewQuantizer from utils.graph import GraphView @@ -69,7 +70,7 @@ def check_tree_complete(tree, lengths, each_complete=False): if length != lengths[0]: return False # slices must not overlap - if not all(sl[0] + sl[1] == slices[i+1][0] for i, sl in enumerate(slices[:-1:])): + if not all(sl[1] == slices[i+1][0] for i, sl in enumerate(slices[:-1:])): return False return all( check_tree_complete( diff --git a/tools/nntool/graph/nngraph.py b/tools/nntool/graph/nngraph.py index aa14779bf..eb826daa1 100644 --- a/tools/nntool/graph/nngraph.py +++ b/tools/nntool/graph/nngraph.py @@ -13,8 +13,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from graph.types.dsp_preprocessing import DSPParameters -from graph.types.fusions import FilterFusionBase, FusionBase import logging import os import re @@ -33,13 +31,14 @@ from graph.manipulations import (add_dimensions, adjust_order, balance_all_filters, calculate_liveness) from graph.manipulations.balance_filter import balance_filter_with_constants -from graph.types import (ConstantInputParameters, - InputBaseParameters, InputParameters, - MultiplicativeBiasParameters, OutputParameters, - ResizerParameters, RNNBaseParameters, SSDDetectorParameters) +from graph.types import (ConstantInputParameters, InputBaseParameters, + InputParameters, MultiplicativeBiasParameters, + OutputParameters, ResizerParameters, + RNNBaseParameters, SSDDetectorParameters) from graph.types.base import NNNodeRef +from graph.types.dsp_preprocessing import DSPParameters from graph.types.expression_fusion import ExpressionFusionParameters -from graph.types.others import TransposeParameters +from graph.types.fusions import FilterFusionBase, FusionBase LOG = logging.getLogger("nntool." + __name__) @@ -93,8 +92,7 @@ class NNGraph(Graph): def __init__(self, model=None, name=None, - filename=None, - constant_store=None): + filename=None): super().__init__() self.model = model @@ -110,7 +108,6 @@ def __init__(self, self.load_function = None self.graphname = name - self.constant_store = constant_store self.graph_identity = GraphIdentity(filename) self._info = { 'quantization': None, @@ -251,12 +248,10 @@ def reset_inout_counts(self): self.num_outputs = 0 self.num_constants = 0 - def add_input(self, dim: Dim, in_dim_hint=None, out_dim_hint=None, name=None) -> InputParameters: + def add_input(self, dim: Dim, name=None, **kwargs) -> InputParameters: self.num_inputs += 1 node_name = "input_"+str(self.num_inputs) if not name else name - node = InputParameters(node_name, dims=dim) - node.in_dims_hint = in_dim_hint - node.out_dim_hint = out_dim_hint + node = InputParameters(node_name, dims=dim, **kwargs) self.add_node(node) return NNNodeRef(node, 0, self) @@ -269,8 +264,7 @@ def add_constant(self, dim: Dim, name: str = None, adjust_transpose=adjust_transpose, is_intermediate=is_intermediate, is_mutated=is_mutated, - short_name=short_name, - constant_store=self.constant_store) + short_name=short_name) self.add_node(node) return NNNodeRef(node, 0, self) @@ -278,9 +272,9 @@ def variable_in_edges(self, node_name): return list([edge for edge in self.in_edges(node_name) if not isinstance(edge.from_node, ConstantInputParameters)]) - def add_output(self) -> OutputParameters: + def add_output(self, name=None) -> OutputParameters: self.num_outputs += 1 - node_name = "output_"+str(self.num_outputs) + node_name = "output_"+str(self.num_outputs) if name is None else name node = OutputParameters(node_name) self.add_node(node) return node diff --git a/tools/nntool/graph/types/__init__.py b/tools/nntool/graph/types/__init__.py index 7d61d0e84..d03af3471 100644 --- a/tools/nntool/graph/types/__init__.py +++ b/tools/nntool/graph/types/__init__.py @@ -23,15 +23,17 @@ SoftMaxParameters, TanHActivationParameters) from graph.types.base import (EdgeParameters, FilterLikeParameters, - FilterParameters, MultiplicativeBiasParameters, - NNEdge, NodeOptions, Parameters, + FilterParameters, InsensitiveToQuantization, + MultiplicativeBiasParameters, NNEdge, + NodeOptions, Parameters, SameNumberOfDimensionsForInputs, SensitiveToOrder, SingleInputAndOutput) +from graph.types.constant_input import ConstantInputParameters from graph.types.conv2d import (BatchNormalizationParameters, Conv2DParameters, TransposeConv2DParameters) -from graph.types.dsp_preprocessing import (MFCCPreprocessingParameters, - RFFT2DPreprocessingParameters, - DSPParameters) +from graph.types.dsp_preprocessing import (DSPParameters, + MFCCPreprocessingParameters, + RFFT2DPreprocessingParameters) from graph.types.expression_fusion import ExpressionFusionParameters from graph.types.fusions import (ActivationFusion, ActivationFusionBase, BroadcastableActivationFusion, @@ -44,11 +46,11 @@ PaddedAddFusionParameters) from graph.types.global_pooling import (GlobalAveragePoolParameters, GlobalMaxPoolParameters, + GlobalMinPoolParameters, GlobalPoolingParameters, GlobalSumPoolParameters) from graph.types.image_formatter import ImageFormatParameters -from graph.types.input_output import (ConstantInputParameters, - InputBaseParameters, +from graph.types.input_output import (InputBaseParameters, InputOutputParameters, InputParameters, OutputParameters) from graph.types.linear import FcParameters @@ -61,8 +63,9 @@ NoOPParameters, PadParameters, PowOpParameters, QuantizeParameters, ReshapeParameters, ReverseParameters, SplitParameters, - StridedSliceParameters, TransposeParameters, - UnaryOpParameters, UnconvertedOpParameters, + SqrtOpParameters, StridedSliceParameters, + TransposeParameters, UnaryOpParameters, + UnconvertedOpParameters, UnexecutableOpParameters, UnknownOpParameters) from graph.types.pooling import (AveragePoolParameters, MaxPoolParameters, PoolingParameters) @@ -70,8 +73,9 @@ NearestNeighborResizerParameters, ResizerParameters) from graph.types.rnn import GRUParameters, RNNBaseParameters, RNNParameters -from graph.types.ssd import SSDDetectorParameters -from graph.types.tensor_arithmetic import (MatMulOpParameters, +from graph.types.ssd import NMSParameters, SSDDetectorParameters +from graph.types.tensor_arithmetic import (Broadcastable, MatMulOpParameters, + MatMulTransposedParameters, MatrixAddParameters, MatrixBroadcastedLinearOpParameters, MatrixDivParameters, diff --git a/tools/nntool/graph/types/activations.py b/tools/nntool/graph/types/activations.py index cce16a3a3..a29e6f68b 100644 --- a/tools/nntool/graph/types/activations.py +++ b/tools/nntool/graph/types/activations.py @@ -14,6 +14,7 @@ # along with this program. If not, see . +from generation.at_types.gen_ctrl import GenCtrl import logging from expressions.symbolic.basic import HSigmoid, HTanh, Relu, Sigmoid, TanH @@ -151,6 +152,12 @@ def offset(self): def offset(self, val): self._offset = val + def get_gen_ctrl(self): + gen_ctrl = GenCtrl(self.at_options) + if self.offset != 3.0: + gen_ctrl.relun = self.offset + return gen_ctrl + @property def can_equalize(self): return False diff --git a/tools/nntool/graph/types/base.py b/tools/nntool/graph/types/base.py index 8cb94dd4f..a0b2f82b3 100644 --- a/tools/nntool/graph/types/base.py +++ b/tools/nntool/graph/types/base.py @@ -111,7 +111,7 @@ class Parameters(Node): NARGS = {1} NOT_GENERATED = False - def __init__(self, name, *args, in_dims_hint=None, out_dims_hint=None, constant_store=None, **kwargs): + def __init__(self, name, *args, in_dims_hint=None, out_dims_hint=None, **kwargs): super().__init__(name, *args, **kwargs) del args, kwargs self._in_dims = None @@ -119,7 +119,6 @@ def __init__(self, name, *args, in_dims_hint=None, out_dims_hint=None, constant_ self._in_dims_hint = in_dims_hint self._out_dims_hint = out_dims_hint self._step_idx = -1 - self._constant_store = constant_store self._valid_at_options = {"VCD_TRACE_ON": int, "DUMP_TENSORS": int, "OUT_HOME_MEM_LOC": str, "OUT_EXEC_MEM_LOC": str, "NODE_CNAME": str} @@ -541,17 +540,11 @@ def __init__(self, *args, **kwargs): @property def mul_biases(self): - if self._constant_store: - return self._constant_store.get(self, 3) - else: - return self._mul_biases + return self._mul_biases @mul_biases.setter def mul_biases(self, val): - if self._constant_store: - self._constant_store.set(self, 3, val) - else: - self._mul_biases = val + self._mul_biases = val def get_parameters(self): res = super().get_parameters() diff --git a/tools/nntool/graph/types/constant_input.py b/tools/nntool/graph/types/constant_input.py new file mode 100644 index 000000000..940deecd1 --- /dev/null +++ b/tools/nntool/graph/types/constant_input.py @@ -0,0 +1,265 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import logging + +import numpy as np +from graph.dim import Dim +from quantization.qtype import QType +from quantization.compression.compress import CompressionError, compress + +from .base import NNNodeRef, cls_op_name +from .input_output import InputBaseParameters + +LOG = logging.getLogger("nntool." + __name__) + + +@cls_op_name('constant') +class ConstantInputParameters(InputBaseParameters): + + def __init__(self, *args, adjust_transpose=None, is_mutated=False, + is_intermediate=False, always_copy=False, value: np.ndarray = None, + qtype: QType = None, dims: Dim = None, **kwargs): + if dims is None: + dims = Dim.unnamed(value.shape) + super(ConstantInputParameters, self).__init__( + *args, dims=dims, **kwargs) + self._value = value + del self.at_options.valid_options['FIXED_ORDER'] + self.at_options.valid_options['RESET_NAME'] = str + self._adjust_transpose = adjust_transpose + self._is_mutated = is_mutated + self._is_intermediate = is_intermediate + self._is_constant = True + self._is_global = True + self._always_copy = always_copy + self._use_fake = False + self._use_compressed = False + self._compressed_value = None + self._qtype = qtype + + def __call__(self, graph): + if graph.__class__.__name__ != 'NNGraph': + raise ValueError('expecting NNGraph as parameter') + return NNNodeRef(self, 0, graph) + + @classmethod + def fake(cls, G, val): + for node in G.nodes(node_classes=ConstantInputParameters): + node.use_fake = val + + @classmethod + def save_compression_state(cls, G): + res = [] + for node in G.nodes(node_classes=ConstantInputParameters): + if node.use_compressed: + res.append(node) + node.use_compressed = False + return res + + @classmethod + def restore_compression_state(cls, G, state): + for node in state: + node.use_compressed = True + + @classmethod + def clear_compression_state(cls, G): + for node in G.nodes(node_classes=ConstantInputParameters): + node.clear_compression() + + def verify(self, G): + problems = [] + for edge in G.in_edges(self.name): + problems.append( + f'constant input node {self.name} has input edge from {edge.from_node.name}:{edge.from_idx}') + for edge in G.out_edges(self.name): + if edge.from_idx > 0: + problems.append(f'constant input node {self.name} has output edge on idx {edge.from_idx} ' + f'to {edge.to_node.name}:{edge.to_idx}') + if self.value is None: + problems.append(f'constant node {self.name} has no value') + return problems + + @property + def use_fake(self): + return self._use_fake + + @use_fake.setter + def use_fake(self, val): + self._use_fake = val + + @property + def graph_anon_label(self): + return ['Constant'] + + @property + def qtype(self): + return self._qtype + + @qtype.setter + def qtype(self, val): + self._qtype = val + + @property + def dqvalue(self): + if self._use_compressed and self._compressed_value is not None: + return self.value + if self._qtype: + return self._qtype.dequantize(self.value) + return self.value + + @dqvalue.setter + def dqvalue(self, val): + self._qtype = None + self.value = val + + @property + def value(self): + if self._use_fake: + return np.random.normal(loc=0, scale=0.2, size=self.out_dims[0].shape) + if self._use_compressed and self._compressed_value is not None: + value = self._compressed_value.value + else: + value = self._value + + if self._always_copy and isinstance(value, np.ndarray): + return value.copy() + return value + + @value.setter + def value(self, val): + self._value = val + + def value_as(self, qtype, generation=False): + # handles both None or both equal + if self._qtype == qtype: + return self.value + # need to quantize + if self._qtype is None or (self._use_compressed and self._compressed_value is not None): + return qtype.quantize(self.value) + # need to dequantize maybe need to quantize + return qtype.quantize(self.dqvalue) if qtype else self.dqvalue + + def compress_value(self, qtype=None, bits=None, min_qsnr=None, force_sparse=False, + allow_sparse=True, threshold=None): + if qtype: + if (qtype.attr.no_compression or qtype.offset or qtype.attr.interleaved_values): + raise CompressionError(f'{self.name} quantization parameters prevent compression') + qbits = qtype.bits + else: + qbits = 8 + value = self._qtype.dequantize(self._value) if self._qtype else self._value + self._compressed_value = compress(value, bits=bits, min_qsnr=min_qsnr, force_sparse=force_sparse, + allow_sparse=allow_sparse, qbits=qbits, threshold=threshold) + + @property + def always_copy(self): + return self._always_copy + + @always_copy.setter + def always_copy(self, val): + self._always_copy = val + + @property + def reset_name(self): + return self.at_options.reset_name + + @reset_name.setter + def reset_name(self, val): + self.at_options.reset_name = val + + @property + def adjust_transpose(self): + return self._adjust_transpose + + @adjust_transpose.setter + def adjust_transpose(self, val): + self._adjust_transpose = val + + @property + def compressed_value(self): + return self._compressed_value + + @compressed_value.setter + def compressed_value(self, val): + self._compressed_value = val + + @property + def is_compressed(self): + return self._use_compressed + + @property + def use_compressed(self): + return self._use_compressed + + def clear_compression(self): + self._compressed_value = None + self._use_compressed = False + + @use_compressed.setter + def use_compressed(self, val): + self._use_compressed = val + + @property + def is_constant(self): + return self._is_constant + + @is_constant.setter + def is_constant(self, val): + self._is_constant = val + + @property + def is_global(self): + return self._is_global + + @is_global.setter + def is_global(self, val): + self._is_global = val + + @property + def is_mutated(self): + return self._is_mutated + + @is_mutated.setter + def is_mutated(self, val): + self._is_mutated = val + + @property + def is_intermediate(self): + return self._is_intermediate + + @is_intermediate.setter + def is_intermediate(self, val): + self._is_intermediate = val + + def get_parameter_size(self): + if self._use_compressed and self._compressed_value: + return self._compressed_value.size + return self.dims.size() + + def get_parameters(self): + return {'value': self.value} + + def set_parameters(self, val): + self.value = val['value'] + + def __str__(self): + props = [param for param in ["is_mutated", "is_intermediate", + "is_compressed"] if getattr(self, param)] + return "Const {} {} {}".format( + self.dims, + " ".join(props), + self.at_options + ) diff --git a/tools/nntool/graph/types/dsp_preprocessing.py b/tools/nntool/graph/types/dsp_preprocessing.py index f4b12a05f..177430e3c 100644 --- a/tools/nntool/graph/types/dsp_preprocessing.py +++ b/tools/nntool/graph/types/dsp_preprocessing.py @@ -14,16 +14,19 @@ # along with this program. If not, see . -from utils.gen_melfilterbank import GenMelFilterbank_Sparse -from utils.gen_twiddles import gen_fft_swaptable_lut, gen_fft_twiddles_lut, gen_rfft_twiddles_lut -import numpy as np -from graph.types.input_output import ConstantInputParameters import logging -from copy import deepcopy import math +import numpy as np +from graph.types import ConstantInputParameters + +from utils.gen_melfilterbank import GenMelFilterbank_Sparse +from utils.gen_twiddles import (gen_fft_swaptable_lut, gen_fft_twiddles_lut, + gen_rfft_twiddles_lut) + from ..dim import Dim -from .base import SensitiveToOrder, SingleInputAndOutput, Parameters, cls_op_name, nargs +from .base import (Parameters, SensitiveToOrder, SingleInputAndOutput, + cls_op_name, nargs) LOG = logging.getLogger("nntool." + __name__) @@ -321,8 +324,8 @@ def get_parameter_size(self): def get_output_size(self, in_dims): self._n_frames = (in_dims[0].size() - self.frame_size) // self.frame_step + 1 if self._n_dct: - return [Dim([self._n_frames, self._n_dct])] - return [Dim([self._n_frames, self._n_fbanks])] + return [Dim.unnamed([self._n_frames, self._n_dct])] + return [Dim.unnamed([self._n_frames, self._n_fbanks])] def gen_melfilter(self): if self.fbank_type == "tensorflow": diff --git a/tools/nntool/graph/types/expression_fusion.py b/tools/nntool/graph/types/expression_fusion.py index 3b1c55977..51d7ac65f 100644 --- a/tools/nntool/graph/types/expression_fusion.py +++ b/tools/nntool/graph/types/expression_fusion.py @@ -13,26 +13,26 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from graph.types.tensor_arithmetic import Broadcastable import logging from collections import Counter -from graph.types.input_output import ConstantInputParameters - -from utils.node_id import NodeId from expressions.symbolic.function_collection import FunctionCollection from expressions.symbolic.symbol import Constant, Variable -from .base import cls_op_name +from utils.node_id import NodeId + +from .base import ComparableParameters, cls_op_name +from .constant_input import ConstantInputParameters from .fusions import (FusionBase, FusionInputParameters, FusionOutputParameters, dont_quantize_internals) +from .tensor_arithmetic import Broadcastable LOG = logging.getLogger("nntool." + __name__) @dont_quantize_internals @cls_op_name('expression') -class ExpressionFusionParameters(FusionBase, Broadcastable): +class ExpressionFusionParameters(FusionBase, Broadcastable, ComparableParameters): fusion_op_name = "Expression" def __init__(self, *args, constant_inputs=None, qrecs=None, **kwargs): @@ -121,6 +121,15 @@ def set_min_max(qrecs, symbol, node): qtype = qrec.out_qs[0] symbol.control.add_min_max(symbol, qtype.min_val, qtype.max_val) + def is_same_operation_as(self, G, other): + if not isinstance(other, ExpressionFusionParameters): + return False + if len(self.func_col.functions) != 1 or len(other.func_col.functions) != 1: + return False + if next(iter(self.func_col.functions.values())).equivalent(next(iter(other.func_col.functions.values()))): + return True + return False + def decompose(self, qrecs=None): # assumption - only single output nodes for all nodes in an expression intermediates = set([node for node in self.subgraph.nodes() @@ -163,6 +172,24 @@ def decompose(self, qrecs=None): return [node.name for node in inputs], [node.name for node in outputs], func_col + def get_output_size(self, in_dims): + # the input shapes may have changed so the expression variables shapes could have + # changed and the iterators will need to be recalculated + dim_change = False + in_vars = [self.func_col.variables[name] for name in self.input_symbols] + for idx, dim in enumerate(in_dims): + shape = tuple(dim.shape) + if tuple(in_vars[idx].shape) != shape: + in_vars[idx].shape = shape + dim_change = True + out_dims = super().get_output_size(in_dims) + if dim_change: # if the input shapes haven't changed then the output shapes have not changed + out_vars = [self.func_col.variables[name] for name in self.output_symbols] + for idx, dim in enumerate(out_dims): + out_vars[idx].shape = tuple(dim.shape) + self.func_col.init_indexes() # recalculate the iterators + return out_dims + def __str__(self): occurrences = Counter( [node.op_name for node in self.contained_nodes()]) diff --git a/tools/nntool/graph/types/fusions.py b/tools/nntool/graph/types/fusions.py index c2d910a99..01d3d33f0 100644 --- a/tools/nntool/graph/types/fusions.py +++ b/tools/nntool/graph/types/fusions.py @@ -13,6 +13,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from copy import deepcopy import logging from graph.types.others import PadParameters @@ -300,6 +301,25 @@ class LinearFusionParameters(FilterFusionBase): class PaddedAddFusionParameters(FusionBase, SensitiveToOrder): fusion_op_name = "padded_add_fusion" + def get_pad_node(self): + return [node for node in self.contained_nodes() if isinstance(node, PadParameters)][0] + + @property + def padding_axis(self): + pad_node = self.get_pad_node() + padding_axis = [idx for idx, pad in enumerate(pad_node.padding) if sum(pad)][0] + return padding_axis + + @padding_axis.setter + def padding_axis(self, value): + pad_node = self.get_pad_node() + old_padding_axis = [idx for idx, pad in enumerate(pad_node.padding) if sum(pad)][0] + new_pad = list(deepcopy(pad_node.padding)) + pad_val = pad_node.padding[old_padding_axis] + new_pad.remove(pad_val) + new_pad.insert(value, pad_val) + pad_node.padding = tuple(new_pad) + def _init_at_options(self): if self._at_options is None: self._at_options = NodeOptions(None) diff --git a/tools/nntool/graph/types/global_pooling.py b/tools/nntool/graph/types/global_pooling.py index a0a628bea..37bc3d028 100644 --- a/tools/nntool/graph/types/global_pooling.py +++ b/tools/nntool/graph/types/global_pooling.py @@ -17,7 +17,8 @@ from copy import deepcopy from ..dim import Dim -from .base import Parameters, SensitiveToOrder, SingleInputAndOutput, cls_op_name +from .base import (Parameters, SensitiveToOrder, SingleInputAndOutput, + cls_op_name) LOG = logging.getLogger("nntool." + __name__) @@ -28,7 +29,9 @@ class GlobalPoolingParameters(Parameters, SingleInputAndOutput, SensitiveToOrder def __new__(cls, *args, pool_type="max", axis=None, keep_dims=None, **kwargs): if pool_type == 'max': return super(GlobalPoolingParameters, cls).__new__(GlobalMaxPoolParameters) - if pool_type == 'max': + if pool_type == 'min': + return super(GlobalPoolingParameters, cls).__new__(GlobalMinPoolParameters) + if pool_type == 'sum': return super(GlobalPoolingParameters, cls).__new__(GlobalSumPoolParameters) return super(GlobalPoolingParameters, cls).__new__(GlobalAveragePoolParameters) @@ -112,6 +115,11 @@ class GlobalMaxPoolParameters(GlobalPoolingParameters): POOL_TYPE = 'max' +@cls_op_name('global_min_pool') +class GlobalMinPoolParameters(GlobalPoolingParameters): + POOL_TYPE = 'min' + + @cls_op_name('global_average_pool') class GlobalAveragePoolParameters(GlobalPoolingParameters): POOL_TYPE = 'average' diff --git a/tools/nntool/graph/types/input_output.py b/tools/nntool/graph/types/input_output.py index acbccaa69..f39356396 100644 --- a/tools/nntool/graph/types/input_output.py +++ b/tools/nntool/graph/types/input_output.py @@ -1,3 +1,12 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. @@ -8,19 +17,22 @@ import sys import numpy as np +from graph.dim import Dim -from .base import InsensitiveToQuantization, NNNodeRef, Parameters, cls_op_name, not_generated +from .base import (InsensitiveToQuantization, NNNodeRef, Parameters, + cls_op_name, not_generated) LOG = logging.getLogger("nntool." + __name__) @not_generated class InputOutputParameters(Parameters): - def __init__(self, *args, dims=None, fixed_order=False, short_name=None, **kwargs): + def __init__(self, *args, imported_dtype=None, dims=None, fixed_order=False, short_name=None, **kwargs): super().__init__(*args, **kwargs) self._output_value = None self._index = None self._short_name = short_name + self.imported_dtype = imported_dtype self.dims = dims self.at_options.valid_options['ALLOCATE'] = int self.at_options.valid_options['FIXED_ORDER'] = int @@ -141,187 +153,7 @@ def set_input(self, value): self.output_value = value -@cls_op_name('constant') -class ConstantInputParameters(InputBaseParameters): - - def __init__(self, *args, adjust_transpose=None, is_mutated=False, - is_intermediate=False, always_copy=False, value=None, qtype=None, **kwargs): - super(ConstantInputParameters, self).__init__(*args, **kwargs) - self.value = value - del self.at_options.valid_options['FIXED_ORDER'] - self.at_options.valid_options['RESET_NAME'] = str - self._adjust_transpose = adjust_transpose - self._is_mutated = is_mutated - self._is_intermediate = is_intermediate - self._is_constant = True - self._is_global = True - self._always_copy = always_copy - self._use_compressed = False - self._qtype = qtype - - def __call__(self, graph): - if graph.__class__.__name__ != 'NNGraph': - raise ValueError('expecting NNGraph as parameter') - return NNNodeRef(self, 0, graph) - - - def verify(self, G): - problems = [] - for edge in G.in_edges(self.name): - problems.append( - f'constant input node {self.name} has input edge from {edge.from_node.name}:{edge.from_idx}') - for edge in G.out_edges(self.name): - if edge.from_idx > 0: - problems.append(f'constant input node {self.name} has output edge on idx {edge.from_idx} ' - f'to {edge.to_node.name}:{edge.to_idx}') - if self.value is None: - problems.append(f'constant node {self.name} has no value') - return problems - - @property - def graph_anon_label(self): - return ['Constant'] - - @property - def qtype(self): - return self._qtype - - @qtype.setter - def qtype(self, val): - self._qtype = val - - @property - def dqvalue(self): - if self._qtype: - return self._qtype.dequantize(self.value) - return self.value - - @dqvalue.setter - def dqvalue(self, val): - self._qtype = None - self.value = val - - @property - def constant_store(self): - return self._constant_store - - @property - def value(self): - if self._constant_store: - # compressed returns the real value with the error induced by the compression - value = self._constant_store.get( - self, 0, compressed=self._use_compressed) - else: - value = self._value - - if self._always_copy and isinstance(value, np.ndarray): - return value.copy() - return value - - @value.setter - def value(self, val): - if self._constant_store: - self._constant_store.set(self, 0, val) - else: - self._value = val - - def value_as(self, qtype, generation=False): - # handles both None or both equal - if self._qtype == qtype: - return self.value - # need to quantize - if self._qtype is None: - return qtype.quantize(self.value) - # need to dequantize maybe need to quantize - return qtype.quantize(self.dqvalue) if qtype else self.dqvalue - - @property - def always_copy(self): - return self._always_copy - - @always_copy.setter - def always_copy(self, val): - self._always_copy = val - - @property - def reset_name(self): - return self.at_options.reset_name - - @reset_name.setter - def reset_name(self, val): - self.at_options.reset_name = val - - @property - def adjust_transpose(self): - return self._adjust_transpose - - @adjust_transpose.setter - def adjust_transpose(self, val): - self._adjust_transpose = val - - @property - def is_compressed(self): - return self._use_compressed - - @property - def use_compressed(self): - return self._use_compressed - - @use_compressed.setter - def use_compressed(self, val): - self._use_compressed = val - - @property - def is_constant(self): - return self._is_constant - - @is_constant.setter - def is_constant(self, val): - self._is_constant = val - - @property - def is_global(self): - return self._is_global - - @is_global.setter - def is_global(self, val): - self._is_global = val - - @property - def is_mutated(self): - return self._is_mutated - - @is_mutated.setter - def is_mutated(self, val): - self._is_mutated = val - - @property - def is_intermediate(self): - return self._is_intermediate - - @is_intermediate.setter - def is_intermediate(self, val): - self._is_intermediate = val - def get_parameter_size(self): - if self._use_compressed and self._constant_store: - return self._constant_store.get_compressed_size(self, 0) - return self.dims.size() - - def get_parameters(self): - return {'value': self.value} - - def set_parameters(self, val): - self.value = val['value'] - - def __str__(self): - props = [param for param in ["is_mutated", "is_intermediate", - "is_compressed"] if getattr(self, param)] - return "Const {} {} {}".format( - self.dims, - " ".join(props), - self.at_options - ) @cls_op_name('output') diff --git a/tools/nntool/graph/types/lstm.py b/tools/nntool/graph/types/lstm.py index 52ed86709..fcd07cbd0 100644 --- a/tools/nntool/graph/types/lstm.py +++ b/tools/nntool/graph/types/lstm.py @@ -68,7 +68,6 @@ def __init__(self, name, *args, cell_clip=0.0, proj_clip=0.0, **kwargs): self.proj_clip = proj_clip self.at_options.valid_options['LSTM_OUTPUT_C_STATE'] = int self.at_options.valid_options['QUANT_C_STATE_WITH_STAT'] = int - self.lstm_output_c_state = (False, None) self.quant_c_state_with_stat = False def set_c_state_as_output(self, G): @@ -92,9 +91,7 @@ def lstm_output_c_state(self): @lstm_output_c_state.setter def lstm_output_c_state(self, val_and_graph): - self.at_options.lstm_output_c_state = 1 if val_and_graph[0] else 0 - if val_and_graph[0]: - self.set_c_state_as_output(val_and_graph[1]) + self.at_options.lstm_output_c_state = val_and_graph @property def quant_c_state_with_stat(self): diff --git a/tools/nntool/graph/types/others.py b/tools/nntool/graph/types/others.py index b12caa360..b9c11d385 100644 --- a/tools/nntool/graph/types/others.py +++ b/tools/nntool/graph/types/others.py @@ -14,16 +14,20 @@ # along with this program. If not, see . import logging +import math import numpy as np -from expressions.symbolic.basic import (Abs, Cos, Exp, Log, Max, Min, Neg, Pow, - RSqrt, Sin, Sqrt) +from expressions.symbolic.basic import (Abs, Ceil, Cos, Exp, Log, Max, Min, + Neg, Pow, Round, RSqrt, Sin, Sqrt) from graph.dim import Dim +from utils.real_transpose import real_transpose + from .base import (CanFuseToExpression, ComparableParameters, InsensitiveToQuantization, NNNodeRef, NoSizeChangeParameters, Parameters, SensitiveToOrder, - SingleInputAndOutput, cls_op_name, expression_op, nargs, not_generated) + SingleInputAndOutput, cls_op_name, expression_op, nargs, + not_generated) LOG = logging.getLogger("nntool." + __name__) @@ -89,14 +93,7 @@ def can_equalize(self): return False def real_shape(self): - input_shape = self.in_dims[0].shape - cond_input_idx = [i for i, sz in enumerate( - self.in_dims[0].shape) if sz != 1] - real_transpose = [ - i for i in self.transpose if i in cond_input_idx] - cond_input_shape = [input_shape[i] for i in cond_input_idx] - cond_transpose = [cond_input_idx.index(i) for i in real_transpose] - return tuple(cond_input_shape), tuple(cond_transpose) + return real_transpose(self.in_dims[0].shape, self.transpose) @property def transpose_dimension(self): @@ -137,6 +134,7 @@ def get_output_size(self, in_dims): def __str__(self): return "" + @cls_op_name('expand') class ExpandParameters(Parameters, InsensitiveToQuantization): def __init__(self, *args, shape=None, **kwargs): @@ -154,7 +152,8 @@ def get_output_size(self, in_dims): in_shape = list(in_dims[0].shape) exp_shape = list(self.shape) if len(in_shape) > len(exp_shape): - exp_shape = in_shape[:(len(in_shape) - len(exp_shape)):] + exp_shape + exp_shape = in_shape[:( + len(in_shape) - len(exp_shape)):] + exp_shape elif len(exp_shape) > len(in_shape): in_shape = exp_shape[:(len(exp_shape) - len(in_shape)):] + in_shape out_shape = [] @@ -164,7 +163,8 @@ def get_output_size(self, in_dims): elif exp_dim == 1: out_shape.append(in_dim) elif in_dim != exp_dim: - raise ValueError(f'{self.name} invalid expand {in_dims[0]} {self.shape}') + raise ValueError( + f'{self.name} invalid expand {in_dims[0]} {self.shape}') else: out_shape.append(in_dim) return [Dim.unnamed(out_shape)] @@ -172,6 +172,7 @@ def get_output_size(self, in_dims): def __str__(self): return f"{self.shape}" + @cls_op_name('quantize') class QuantizeParameters(Parameters): @@ -305,6 +306,9 @@ def get_splits(in_shape, axis, splits=None, num_splits=None): act_slices = [] out_shapes = [] if splits: + if in_shape[axis] is not None and any(split == -1 for split in splits): + rest_sz = sum(split for split in splits if split > 0) + splits = (split if split > 0 else in_shape[axis] - rest_sz for split in splits) for sz in splits: act_slices.append([(in_idx, in_idx + sz, 1) if idx == axis else (0, shape, 1) for idx, shape in enumerate(in_shape) @@ -399,7 +403,8 @@ def __init__(self, *args, super(StridedSliceParameters, self).__init__(*args, **kwargs) self.act_slice = act_slice - self.out_shape = out_shape + self.slice_shape = tuple(int(abs(math.ceil((sl[1] - sl[0])/sl[2]))) for sl in self.act_slice) + self.out_shape = tuple(out_shape) @property def graph_label(self): @@ -593,6 +598,18 @@ def __str__(self): ) +@cls_op_name('round') +@expression_op(Round) +class RoundOpParameters(UnaryOpParameters): + pass + + +@cls_op_name('ceil') +@expression_op(Ceil) +class CeilOpParameters(UnaryOpParameters): + pass + + @cls_op_name('sqrt') @expression_op(Sqrt) class SqrtOpParameters(UnaryOpParameters): @@ -650,6 +667,9 @@ def __init__(self, *args, old_shape=None, shape=None, **kwargs): *args, **kwargs) if not isinstance(shape, Dim): shape = Dim.unnamed(shape) + if old_shape is not None and not isinstance(old_shape, Dim): + old_shape = Dim.unnamed(shape) + assert shape.is_ordered and (old_shape is None or old_shape.is_ordered) self._shape = shape self._old_shape = old_shape @@ -712,7 +732,7 @@ def is_same_operation_as(self, G, other): def get_output_size(self, in_dims): assert len(in_dims) == 1 in_dim = in_dims[0] - self._old_shape = in_dim + self.old_shape = in_dim if in_dim.size() != self.shape.size(): raise NotImplementedError("bad reshape %s: in dim %s does not match reshape %s" % (self.name, in_dim, self.shape)) @@ -725,6 +745,7 @@ def shape(self): @shape.setter def shape(self, val): + assert val.is_ordered self._shape = val @property @@ -733,6 +754,7 @@ def old_shape(self): @old_shape.setter def old_shape(self, val): + assert val.is_ordered self._old_shape = val @property diff --git a/tools/nntool/graph/types/rnn.py b/tools/nntool/graph/types/rnn.py index 989065a52..12f0912e0 100644 --- a/tools/nntool/graph/types/rnn.py +++ b/tools/nntool/graph/types/rnn.py @@ -16,9 +16,10 @@ import logging from graph.dim import Dim -from graph.types.base import (NNEdge, Parameters, SensitiveToOrder, - SingleInputAndOutput, cls_op_name, nargs) -from graph.types.input_output import ConstantInputParameters +from graph.types import (ConstantInputParameters, NNEdge, Parameters, + SensitiveToOrder, SingleInputAndOutput) + +from .base import cls_op_name, nargs LOG = logging.getLogger("nntool." + __name__) diff --git a/tools/nntool/graph/types/ssd.py b/tools/nntool/graph/types/ssd.py index e4631f826..826b1b73c 100644 --- a/tools/nntool/graph/types/ssd.py +++ b/tools/nntool/graph/types/ssd.py @@ -17,12 +17,13 @@ from graph.dim import Dim -from .base import Parameters, SensitiveToOrder, cls_op_name, nargs +from .base import NNNodeRef, Parameters, SensitiveToOrder, cls_op_name, nargs LOG = logging.getLogger("nntool." + __name__) SSD_INPUT_NAMES = ['boxes_offsets', 'scores', 'anchors'] + @cls_op_name('ssd_detector') @nargs(SSD_INPUT_NAMES) class SSDDetectorParameters(Parameters, SensitiveToOrder): @@ -120,3 +121,79 @@ def __str__(self): self.nms_score_threshold, self.nms_iou_threshold ) + + +NMS_INPUT_NAMES = ['boxes_offsets', 'scores'] + + +@cls_op_name('non_max_suppression') +@nargs(NMS_INPUT_NAMES) +class NMSParameters(Parameters, SensitiveToOrder): + + INPUT_NAMES = NMS_INPUT_NAMES + + def __init__(self, *args, parameters=None, in_dims_hint=None, out_dims_hint=None, + batch=None, ker_in_order=None, ker_out_order=None, **kwargs): + if in_dims_hint is None: + in_dims_hint = [['batch', 'spatial_dim', 'box'], + ['batch', 'class', 'spatial_dim']] + if out_dims_hint is None: + out_dims_hint = [['spatial_dim', 'index']] + super(NMSParameters, self).__init__( + *args, in_dims_hint=in_dims_hint, out_dims_hint=out_dims_hint, **kwargs) + self._parameters = parameters + self.nms_config = {'using_json_config': {'INCLUDE': False, 'json_config_path': ''}, + 'using_pipeline_config': {'INCLUDE': False, 'pipeline_config_path': ''}, + 'using_params': {'INCLUDE': True, 'params': self._parameters}} + self._ker_in_order = [['batch', 'spatial_dim', 'box'], [ + 'batch', 'class', 'spatial_dim']] + self._ker_out_order = [['spatial_dim', 'index']] + + def __call__(self, *args, **kwargs): + noderef = super(NMSParameters, self).__call__(*args, **kwargs) + return tuple(NNNodeRef(self, i, noderef.ref[1]) for i in range(2)) + + def get_parameter_size(self): + return 0 + + @property + def can_equalize(self): + return False + + @property + def nms_score_threshold(self): + return self._parameters['nms_score_threshold'] + + @nms_score_threshold.setter + def nms_score_threshold(self, val): + self._parameters['nms_score_threshold'] = val + + @property + def nms_iou_threshold(self): + return self._parameters['nms_iou_threshold'] + + @property + def max_output_boxes_per_class(self): + return self._parameters['max_output_boxes_per_class'] + + @property + def num_classes(self): + return self._parameters['num_classes'] + + @property + def center_point_box(self): + return self._parameters['center_point_box'] + + def get_output_size(self, in_dims): + num_detected_boxes = self._parameters['max_output_boxes_per_class'] * \ + self._parameters['num_classes'] + return [ + Dim(shape=[num_detected_boxes, 3], is_ordered=True), + ] + + def __str__(self): + return "{} SCORE_THR {:.2f} IOU_THR {:.2f}".format( + self.at_options, + self.nms_score_threshold, + self.nms_iou_threshold + ) diff --git a/tools/nntool/graph/types/tensor_arithmetic.py b/tools/nntool/graph/types/tensor_arithmetic.py index 2e1e91ffc..f21dce53d 100644 --- a/tools/nntool/graph/types/tensor_arithmetic.py +++ b/tools/nntool/graph/types/tensor_arithmetic.py @@ -242,3 +242,32 @@ def get_output_size(self, in_dims): def __str__(self): return f"{self.op_name} {self.at_options}" + +@cls_op_name('matmulT') +class MatMulTransposedParameters(MatMulOpParameters): + def get_output_size(self, in_dims): + x_shape = list(in_dims[0].shape).copy() + y_shape = list(in_dims[1].shape).copy() + + if len(x_shape) == 1: + x_shape = [1] + x_shape + remove_first = True + else: + remove_first = False + + if len(y_shape) == 1: + y_shape = y_shape + [1] + remove_last = True + else: + remove_last = False + y_shape = y_shape[::-1] + x_chans = x_shape[:-2:] + y_chans = y_shape[:-2:] + out_chans = Dim.npbroadcast([x_chans, y_chans]) + x = [] if remove_first else [x_shape[-2]] + y = [] if remove_last else [y_shape[-1]] + out_dim = Dim.unnamed(out_chans + x + y) + return [out_dim] + + def __str__(self): + return f"Transposed {self.op_name} {self.at_options}" diff --git a/tools/nntool/graph/verify.py b/tools/nntool/graph/verify.py index a102d383e..9c88a7fc3 100644 --- a/tools/nntool/graph/verify.py +++ b/tools/nntool/graph/verify.py @@ -13,8 +13,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from graph.types.input_output import (ConstantInputParameters, InputParameters, - OutputParameters) +from graph.types import (ConstantInputParameters, InputParameters, + OutputParameters) class GraphIntegrityError(Exception): diff --git a/tools/nntool/importer/common/broadcast_mixin.py b/tools/nntool/importer/common/broadcast_mixin.py index 5878fe82f..e23c1bf8e 100644 --- a/tools/nntool/importer/common/broadcast_mixin.py +++ b/tools/nntool/importer/common/broadcast_mixin.py @@ -15,7 +15,7 @@ import numpy as np from graph.dim import Dim -from graph.types.input_output import ConstantInputParameters +from graph.types import ConstantInputParameters from .provisional_dim import ProvisionalDim diff --git a/tools/nntool/importer/common/constant_mixin.py b/tools/nntool/importer/common/constant_mixin.py index 0533999d2..ddaae71d0 100644 --- a/tools/nntool/importer/common/constant_mixin.py +++ b/tools/nntool/importer/common/constant_mixin.py @@ -13,7 +13,11 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import numpy as np from graph.types import ConstantInputParameters +from quantization.new_qrec import QRec +from utils.node_id import NodeId + class ConstantMixin(): @classmethod @@ -26,3 +30,20 @@ def get_constant(cls, inp): if not isinstance(params, ConstantInputParameters): raise ValueError("expected node %s to be constant input"%inp[0].name) return params.value + + @classmethod + def optional_constant_scalar(cls, inputs, idx, default, dtype=np.float32): + if len(inputs) <= idx: + return dtype(default) + val = cls.get_constant(inputs[idx]).flatten()[0] + return val.astype(dtype) + + @classmethod + def record_constant_qrec(cls, inp, cnode, **kwargs): + qtype = inp[3] + if qtype is None: + return + qrecs = kwargs.get('qrecs') + if qrecs is None: + return + qrecs[NodeId(cnode)] = QRec.scaled(out_qs=[qtype]) diff --git a/tools/nntool/importer/common/propagate_qrecs.py b/tools/nntool/importer/common/propagate_qrecs.py new file mode 100644 index 000000000..8372eb870 --- /dev/null +++ b/tools/nntool/importer/common/propagate_qrecs.py @@ -0,0 +1,198 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from functools import reduce +from itertools import zip_longest + +import numpy as np +from graph.types import (MaxPoolParameters, OutputParameters, FcParameters, Conv2DParameters, + ReluActivationParameters, ReshapeParameters, + SoftMaxParameters, TransposeParameters) +from quantization.new_qrec import QRec +from quantization.qtype import QType +from utils.node_id import NodeId + +# Handlers for different node types + + +def overwrite_range(in_ranges, out_ranges, in_dtypes=None, out_dtypes=None): + if in_dtypes is None: + in_dtypes = [np.int8] * len(in_ranges) + if out_dtypes is None: + out_dtypes = [np.int8] * len(out_ranges) + proto_in_qs = [QType.from_min_max_sq( + *min_max, dtype=dtype) for min_max, dtype in zip(in_ranges, in_dtypes)] + proto_out_qs = [QType.from_min_max_sq( + *min_max, dtype=dtype) for min_max, dtype in zip(out_ranges, out_dtypes)] + + def handler(G, qrec, node, in_qs=None, out_qs=None): + nonlocal proto_in_qs, proto_out_qs + if qrec is None: + return QRec.scaled(in_qs=list(proto_in_qs), out_qs=list(proto_out_qs)) + new_in_qs = [q1 if q1 else q2 for q1, q2 in zip_longest( + qrec.in_qs, proto_in_qs)] if qrec.in_qs else in_qs + new_out_qs = [q1 if q1 else q2 for q1, q2 in zip_longest( + qrec.out_qs, proto_out_qs)] if qrec.out_qs else out_qs + return QRec.scaled(in_qs=new_in_qs, out_qs=new_out_qs) + return handler + + +def pass_qtype(G, qrec, node, in_qs=None, out_qs=None): + copy_qs = in_qs if in_qs is not None else out_qs + if not copy_qs: + return qrec + if qrec is None: + if copy_qs: + return QRec.scaled(in_qs=copy_qs, out_qs=copy_qs) + return None + in_qs = copy_qs if not qrec.in_qs or qrec.in_qs[0] is None else qrec.in_qs + out_qs = copy_qs if not qrec.out_qs or qrec.out_qs[0] is None else qrec.out_qs + return QRec.scaled(in_qs=in_qs, out_qs=out_qs) + + +def pass_qtype_up(G, qrec, node, in_qs=None, out_qs=None): + if out_qs is None or not out_qs: + return qrec + if qrec is None or not qrec.in_qs or qrec.in_qs[0] is None: + return QRec.scaled(in_qs=out_qs, out_qs=out_qs) + return qrec + + +def merge_qtypes(x, y): + if x is None: + return y + if y is None: + return x + return [x_elem if x_elem else y_elem for x_elem, y_elem in zip_longest(x, y, fillvalue=None)] + + +def merge_qtypes_to_qrec(G, qrec, node, in_qs=None, out_qs=None): + in_qs = merge_qtypes(qrec.in_qs if qrec else None, in_qs) + out_qs = merge_qtypes(qrec.out_qs if qrec else None, out_qs) + if in_qs is None and out_qs is None: + return None + return QRec.scaled(in_qs=in_qs, out_qs=out_qs) + + +def pass_filter(G, qrec, node, in_qs=None, out_qs=None): + if in_qs and len(in_qs) == 2 and G.num_in_edges(node) == 3: + in_qs.append(None) + return merge_qtypes_to_qrec(G, qrec, node, in_qs=in_qs, out_qs=out_qs) + + +INFERRED_NODES = { + SoftMaxParameters: overwrite_range(((-16.0, 16.0),), ((0.0, 1.0),)), + OutputParameters: pass_qtype, + ReluActivationParameters: pass_qtype_up, + MaxPoolParameters: pass_qtype, + TransposeParameters: pass_qtype, + ReshapeParameters: pass_qtype, + Conv2DParameters: pass_filter, + FcParameters: pass_filter, + # These need more work since they have multi in out and/or can change quantized channel position + # SplitParameters: pass_qtype, + # ConcatParameters: pass_qtype, + # StridedSliceParameters: pass_qtype, + # GatherParameters: pass_qtype, +} + + +def extend_insert(l, idx, val, add_if_exists=True): + l += [None] * (idx + 1 - len(l)) + if l[idx] is None or add_if_exists: + l[idx] = val + return l + + +def get_out_qtypes(qrecs, qrec, out_edges): + def reduction(qtypes, edge): + nid = NodeId(edge.to_node) + qrec = qrecs.get(nid) + if not qrec or len(qrec.in_qs) <= edge.to_idx or qrec.in_qs[edge.to_idx] is None: + return qtypes + qtypes = extend_insert(qtypes, edge.from_idx, qrec.in_qs[edge.to_idx]) + return qtypes + return reduce(reduction, out_edges, qrec.out_qs.copy() if qrec is not None else []) + + +def get_in_qtypes(qrecs, qrec, in_edges): + def reduction(qtypes, edge): + nid = NodeId(edge.from_node) + qrec = qrecs.get(nid) + if not qrec or len(qrec.out_qs) <= edge.from_idx or qrec.out_qs[edge.from_idx] is None: + return qtypes + qtypes = extend_insert(qtypes, edge.to_idx, qrec.out_qs[edge.from_idx]) + return qtypes + return reduce(reduction, in_edges, qrec.in_qs.copy() if qrec is not None else [None] * len(in_edges)) + + +def get_qrec_pass(G, qrec, node, copy_qs): + if qrec is None: + if copy_qs: + return QRec.scaled(in_qs=copy_qs, out_qs=copy_qs) + return None + in_qs = copy_qs if not qrec.in_qs or qrec.in_qs is None else qrec.in_qs + out_qs = copy_qs if not qrec.out_qs or qrec.out_qs is None else qrec.out_qs + return QRec.scaled(in_qs=in_qs, out_qs=out_qs) + + +def propagate_qrecs_up(G, node, qrecs, visited_edges): + out_edges = G.out_edges(node) + if out_edges and not all(edge in visited_edges for edge in out_edges): + return + in_edges = G.in_edges(node) + if not in_edges: + return + nid = NodeId(node) + qrec = qrecs.get(nid) + out_qtypes = get_out_qtypes(qrecs, qrec, out_edges) + if node.__class__ in INFERRED_NODES: + qrec = INFERRED_NODES[node.__class__](G, qrec, node, out_qs=out_qtypes) + if qrec is not None: + qrecs[nid] = qrec + elif out_qtypes: + qrecs[nid] = merge_qtypes_to_qrec(G, qrec, node, out_qs=out_qtypes) + for edge in in_edges: + visited_edges.add(edge) + propagate_qrecs_up(G, edge.from_node, qrecs, visited_edges) + + +def propagate_qrecs_down(G, node, qrecs, visited_edges): + in_edges = G.in_edges(node) + if in_edges and not all(edge in visited_edges for edge in in_edges): + return + out_edges = G.out_edges(node) + nid = NodeId(node) + qrec = qrecs.get(nid) + in_qtypes = get_in_qtypes(qrecs, qrec, in_edges) + if node.__class__ in INFERRED_NODES: + qrec = INFERRED_NODES[node.__class__](G, qrec, node, in_qs=in_qtypes) + if qrec is not None: + qrecs[nid] = qrec + elif in_qtypes: + qrecs[nid] = merge_qtypes_to_qrec(G, qrec, node, in_qs=in_qtypes) + + for edge in out_edges: + visited_edges.add(edge) + propagate_qrecs_down(G, edge.to_node, qrecs, visited_edges) + + +def propagate_qrecs(G, qrecs): + visited_edges = set() + for node in G.outputs(): + propagate_qrecs_up(G, node, qrecs, visited_edges) + visited_edges = set() + for node in G.inputs(): + propagate_qrecs_down(G, node, qrecs, visited_edges) diff --git a/tools/nntool/importer/common/provisional_dim.py b/tools/nntool/importer/common/provisional_dim.py index 753b525c2..d16e18f5b 100644 --- a/tools/nntool/importer/common/provisional_dim.py +++ b/tools/nntool/importer/common/provisional_dim.py @@ -26,9 +26,12 @@ def __init__(self, shape) -> None: def from_onnx_shape(cls, onnx_shape, check_for_batch=None, substitutions=None): if substitutions is None: substitutions = {} - shape = [d.dim_value if (d.dim_value > 0 and d.dim_param == "") else - (substitutions[d.dim_param] if d.dim_param in substitutions else None) - for d in onnx_shape.dim] + if not onnx_shape.dim: + shape = (1,) + else: + shape = [d.dim_value if (d.dim_value > 0 and d.dim_param == "") else + (substitutions[d.dim_param] if d.dim_param in substitutions else None) + for d in onnx_shape.dim] if check_for_batch is not None and shape[check_for_batch] == 1 and len(shape) > 1: shape[0] = None return cls(shape) diff --git a/tools/nntool/importer/onnx/handlers/backend/average_pool.py b/tools/nntool/importer/onnx/handlers/backend/average_pool.py index 17b036207..e69cc4327 100644 --- a/tools/nntool/importer/onnx/handlers/backend/average_pool.py +++ b/tools/nntool/importer/onnx/handlers/backend/average_pool.py @@ -14,11 +14,13 @@ # along with this program. If not, see . from ..backend_handler import BackendHandler -from ..handler import onnx_op +from ..handler import onnx_op, partial_support, ps_description from .pool_mixin import PoolMixin @onnx_op("AveragePool") +@partial_support(True) +@ps_description("Supports only 1D and 2D pooling.") class AveragePool(PoolMixin, BackendHandler): @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/batch_normalization.py b/tools/nntool/importer/onnx/handlers/backend/batch_normalization.py index a30ddb3a2..0f01ef96a 100644 --- a/tools/nntool/importer/onnx/handlers/backend/batch_normalization.py +++ b/tools/nntool/importer/onnx/handlers/backend/batch_normalization.py @@ -97,7 +97,7 @@ def _common(cls, node, **kwargs): running_variance=running_variance, spatial=spatial, momentum=momentum, epsilon=epsilon) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, deepcopy(x[2])) + all_nodes[node.output[0]] = (params, 0, deepcopy(x[2]), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/broadcast_mixin.py b/tools/nntool/importer/onnx/handlers/backend/broadcast_mixin.py index 163ffce00..e97827fc5 100644 --- a/tools/nntool/importer/onnx/handlers/backend/broadcast_mixin.py +++ b/tools/nntool/importer/onnx/handlers/backend/broadcast_mixin.py @@ -15,7 +15,7 @@ import numpy as np from graph.dim import Dim -from graph.types.input_output import ConstantInputParameters +from graph.types import ConstantInputParameters from importer.common.provisional_dim import ProvisionalDim diff --git a/tools/nntool/importer/onnx/handlers/backend/cast.py b/tools/nntool/importer/onnx/handlers/backend/cast.py index 41ec0243e..3518094fa 100644 --- a/tools/nntool/importer/onnx/handlers/backend/cast.py +++ b/tools/nntool/importer/onnx/handlers/backend/cast.py @@ -14,13 +14,13 @@ # along with this program. If not, see . -from quantization.qtype import QType from graph.dim import Dim from graph.types import ConstantInputParameters, NNEdge from graph.types.others import QuantizeParameters from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim -from importer.onnx.common import logger, onnx2np +from importer.onnx.common import logger +from quantization.qtype import QType from ..backend_handler import BackendHandler from ..handler import onnx_op @@ -45,12 +45,11 @@ def _common(cls, node, **kwargs): logger.info("reducing %s to a constant %s", valid_name, x_val) else: logger.info("reducing %s to a constant", valid_name) - params = ConstantInputParameters(valid_name, dims=Dim.unnamed(x_val.shape), value=x_val, - constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, dims=Dim.unnamed(x_val.shape), value=x_val) else: params = QuantizeParameters(valid_name, to_qtype=QType(dtype=to_dtype)) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(x_shape)) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(x_shape), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/ceil.py b/tools/nntool/importer/onnx/handlers/backend/ceil.py new file mode 100644 index 000000000..86bfd342e --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/ceil.py @@ -0,0 +1,45 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np +from graph.types.others import UnaryOpParameters + +from ..backend_handler import BackendHandler +from ..handler import onnx_op +from .math_mixin import BasicMathMixin + + +@onnx_op("Ceil") +class Ceil(BasicMathMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + return super(Ceil, cls)._common(node, + params_class=UnaryOpParameters, + params_args={'op_type': 'ceil'}, + constant_operation=np.ceil, + **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_6(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_1(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/clip.py b/tools/nntool/importer/onnx/handlers/backend/clip.py index 48fa7debd..647027cfe 100644 --- a/tools/nntool/importer/onnx/handlers/backend/clip.py +++ b/tools/nntool/importer/onnx/handlers/backend/clip.py @@ -65,3 +65,7 @@ def version_11(cls, node, **kwargs): @classmethod def version_12(cls, node, **kwargs): return cls.args_version(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls.args_version(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/concat_from_sequence.py b/tools/nntool/importer/onnx/handlers/backend/concat_from_sequence.py index c8a61d357..0b4654fdc 100644 --- a/tools/nntool/importer/onnx/handlers/backend/concat_from_sequence.py +++ b/tools/nntool/importer/onnx/handlers/backend/concat_from_sequence.py @@ -46,8 +46,8 @@ def _common(cls, node, **kwargs): if all(cls.is_constant(inp) for inp in inputs): logger.info("reducing %s to a constant", valid_name) value = np.concatenate([cls.get_constant(inp) for inp in inputs], axis=axis) - params = ConstantInputParameters(valid_name, value=value, constant_store=G.constant_store) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(value.shape)) + params = ConstantInputParameters(valid_name, value=value) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(value.shape), inputs[0][3]) return params # add the axis into the shape @@ -64,7 +64,7 @@ def _common(cls, node, **kwargs): old_shape=old_shape, shape=shape) G.add_edge(NNEdge(from_node=inp[0], to_node=rparams, from_idx=inp[1], to_idx=0)) - inputs[idx] = (rparams, 0, ProvisionalDim(new_shape)) + inputs[idx] = (rparams, 0, ProvisionalDim(new_shape), inp[3]) return cls.gen_concat(node, inputs, axis) diff --git a/tools/nntool/importer/onnx/handlers/backend/concat_mixin.py b/tools/nntool/importer/onnx/handlers/backend/concat_mixin.py index 041dbd410..a5a658467 100644 --- a/tools/nntool/importer/onnx/handlers/backend/concat_mixin.py +++ b/tools/nntool/importer/onnx/handlers/backend/concat_mixin.py @@ -42,10 +42,10 @@ def gen_concat(cls, node, inputs, axis, **kwargs): if all(cls.is_constant(inp) for inp in inputs): value = np.concatenate([cls.get_constant(inp) for inp in inputs], axis=axis) logger.info(f"reducing {valid_name} to a constant {print_small(value)}") - params = ConstantInputParameters(valid_name, value=value, constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, value=value) else: params = ConcatParameters(valid_name, axis=axis - none_dims) for idx, inp in enumerate(inputs): G.add_edge(NNEdge(from_node=inp[0], to_node=params, from_idx=inp[1], to_idx=idx)) - all_nodes[node.output[0]] = (params, 0, pout_dim) + all_nodes[node.output[0]] = (params, 0, pout_dim, inputs[0][3]) return params diff --git a/tools/nntool/importer/onnx/handlers/backend/constant.py b/tools/nntool/importer/onnx/handlers/backend/constant.py index c60ebaf85..87d79aeb1 100644 --- a/tools/nntool/importer/onnx/handlers/backend/constant.py +++ b/tools/nntool/importer/onnx/handlers/backend/constant.py @@ -14,16 +14,18 @@ # along with this program. If not, see . from onnx import numpy_helper - +import numpy as np from graph.dim import Dim from graph.types import ConstantInputParameters from importer.common.provisional_dim import ProvisionalDim from ..backend_handler import BackendHandler -from ..handler import onnx_op +from ..handler import onnx_op, ps_description, partial_support @onnx_op("Constant") +@partial_support(True) +@ps_description('sparse and string constants are not supported') class Constant(BackendHandler): @classmethod @@ -31,10 +33,25 @@ def _common(cls, node, **kwargs): all_nodes = kwargs['all_nodes'] G = kwargs['G'] valid_name = kwargs['valid_name'] - value = numpy_helper.to_array(node.attrs['value']) - params = ConstantInputParameters(valid_name, dims=Dim.unnamed(value.shape), value=value, - constant_store=G.constant_store) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(value.shape)) + if node.attrs.get('value'): + value = numpy_helper.to_array(node.attrs['value']) + elif node.attrs.get('value_float'): + value = np.atleast_1d(node.attrs['value_float'], dtype=np.float32) + elif node.attrs.get('value_floats'): + value = np.array(node.attrs['value_floats'], dtype=np.float32) + elif node.attrs.get('value_int'): + value = np.atleast_1d(node.attrs['value_int'], dtype=np.int32) + elif node.attrs.get('value_ints'): + value = np.array(node.attrs['value_ints'], dtype=np.int32) + elif node.attrs.get('value_string') or node.attrs.get('value_strings'): + raise NotImplementedError('NNTOOL does not support string constants') + elif node.attrs.get('sparse_value'): + raise NotImplementedError('NNTOOL does not support sparse constants') + else: + raise ValueError('ONNX constant has no value') + + params = ConstantInputParameters(valid_name, dims=Dim.unnamed(value.shape), value=value) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(value.shape), None) return params @classmethod @@ -52,3 +69,7 @@ def version_11(cls, node, **kwargs): @classmethod def version_12(cls, node, **kwargs): return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/constant_fill.py b/tools/nntool/importer/onnx/handlers/backend/constant_fill.py index 869b1d436..fbc612620 100644 --- a/tools/nntool/importer/onnx/handlers/backend/constant_fill.py +++ b/tools/nntool/importer/onnx/handlers/backend/constant_fill.py @@ -36,9 +36,8 @@ def _common(cls, node, **kwargs): else: shape = node.attrs.get('shape') value = np.full(shape, value) - params = ConstantInputParameters(valid_name, dims=Dim.unnamed(value.shape), value=value, - constant_store=G.constant_store) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(value.shape)) + params = ConstantInputParameters(valid_name, dims=Dim.unnamed(value.shape), value=value) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(value.shape), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/constant_of_shape.py b/tools/nntool/importer/onnx/handlers/backend/constant_of_shape.py index bda27b9e4..2dba38897 100644 --- a/tools/nntool/importer/onnx/handlers/backend/constant_of_shape.py +++ b/tools/nntool/importer/onnx/handlers/backend/constant_of_shape.py @@ -37,9 +37,8 @@ def _common(cls, node, **kwargs): const_shape = list(x[0].value) params = ConstantInputParameters(valid_name, dims=Dim.unnamed(const_shape), - value=np.full(const_shape, numpy_helper.to_array(value)), - constant_store=G.constant_store) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(const_shape)) + value=np.full(const_shape, numpy_helper.to_array(value))) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(const_shape), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/conv_mixin.py b/tools/nntool/importer/onnx/handlers/backend/conv_mixin.py index 173d25fdf..f77b5d261 100644 --- a/tools/nntool/importer/onnx/handlers/backend/conv_mixin.py +++ b/tools/nntool/importer/onnx/handlers/backend/conv_mixin.py @@ -18,14 +18,15 @@ import numpy as np from graph.dim import Conv2DFilterDim, DilationDim, Dim, StrideDim -from graph.types.base import NNEdge -from graph.types.conv2d import Conv2DParameters -from graph.types.input_output import ConstantInputParameters -from graph.types.others import ReshapeParameters +from graph.types import (ConstantInputParameters, Conv2DParameters, NNEdge, + ReshapeParameters) from importer.common.broadcast_mixin import BroadcastMixin from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim from importer.onnx.common import logger +from quantization.new_qrec import QRec +from quantization.qtype import QType +from utils.node_id import NodeId from ..handler import partial_support, ps_description from .pad_mixin import PadMixin @@ -37,7 +38,7 @@ class ConvMixin(BroadcastMixin, PadMixin, ConstantMixin): ONNX_FILTER_ORDER = ['out_c', 'in_c', 'h', 'w'] @classmethod - def conv(cls, node, **kwargs): + def conv(cls, node, quantized=False, **kwargs): all_nodes = kwargs['all_nodes'] G = kwargs['G'] valid_name = kwargs['valid_name'] @@ -48,7 +49,9 @@ def conv(cls, node, **kwargs): x_shape = x[2].shape if x_shape[0] is not None and x_shape[0] > 1: batch = x_shape[0] - logger.warning(f"{valid_name} has a non 1 batch dimension of {batch} - this is not supported by nntool or autotiler kernels") + logger.warning( + f"{valid_name} has a non 1 batch dimension of {batch} -" + " this is not supported by nntool or autotiler kernels") else: batch = None real_in_shape = deepcopy(x_shape) @@ -58,14 +61,17 @@ def conv(cls, node, **kwargs): real_in_shape.remove(None) spatial_size = x_rank - 2 assert spatial_size == 2 or spatial_size == 1, "only 1D and 2D convolutions supported" - + if not all(dim is not None for dim in x_shape[-spatial_size:]): + raise ValueError(f"input spatial size {x_shape} of filter {valid_name} must be defined. You may need to override input dimensions.") # M x C/group x kH x kW - weights_node = inputs[1][0] + weights_idx = 3 if quantized else 1 + weights_node = inputs[weights_idx][0] weights_node.name = f'{valid_name}_weights' - weights = cls.get_constant(inputs[1]) + weights = cls.get_constant(inputs[weights_idx]) out_c = weights.shape[0] group = node.attrs.get("group", 1) - in_c = conv_shape[-spatial_size-1] if conv_shape[-spatial_size-1] is not None else 1 + in_c = conv_shape[-spatial_size - + 1] if conv_shape[-spatial_size-1] is not None else 1 filt_in_c = in_c // group if in_c != weights.shape[1] * group: raise ValueError(f'node {valid_name} has incorrect input channel ' @@ -77,27 +83,28 @@ def conv(cls, node, **kwargs): weights = np.reshape(weights, (out_c, filt_in_c, filt_h, filt_w)) weights_node = ConstantInputParameters(f'{valid_name}_weights', value=weights, dims=Dim.unnamed( - weights.shape), - constant_store=G.constant_store) + weights.shape)) + cls.record_constant_qrec(inputs[1], weights_node, **kwargs) else: filt_h = weights.shape[-2] filt_w = weights.shape[-1] - h = 1 if spatial_size == 1 else (conv_shape[-2] if conv_shape[-2] is not None else 1) + h = 1 if spatial_size == 1 else ( + conv_shape[-2] if conv_shape[-2] is not None else 1) w = conv_shape[-1] if conv_shape[-1] is not None else 1 filt_dim = Conv2DFilterDim(filt_h, filt_w, out_c, in_c=filt_in_c) filt_dim = filt_dim.impose_order(cls.ONNX_FILTER_ORDER) - if len(inputs) > 2: - biases_node = inputs[2][0] - biases = cls.get_constant(inputs[2]) + biases_idx = 8 if quantized else 2 + if len(inputs) > biases_idx: + biases_node = inputs[biases_idx][0] + biases = cls.get_constant(inputs[biases_idx]) else: biases = np.zeros([out_c], dtype=np.float32) biases_node = ConstantInputParameters(f'{valid_name}_biases', value=biases, dims=Dim.unnamed( - biases.shape), - constant_store=G.constant_store) + biases.shape)) dilations = cls.pad_start_with(node.attrs.get("dilations", []), [1], 2) strides = cls.pad_start_with(node.attrs.get("strides", []), [1], 2) @@ -135,8 +142,29 @@ def conv(cls, node, **kwargs): has_bias=True, in_dims_hint=[in_hint, cls.ONNX_FILTER_ORDER, ['c']], - out_dims_hint=[out_hint], - constant_store=G.constant_store) + out_dims_hint=[out_hint]) + + if quantized: + qrecs = kwargs['qrecs'] + x_zp = cls.get_constant(inputs[2]) + x_scale = cls.get_constant(inputs[1]) + x_qtype = QType(dtype=x_zp.dtype, scale=x_scale, zero_point=x_zp) + w_zp = cls.get_constant(inputs[5]) + w_scale = cls.get_constant(inputs[4]) + weights_node.qtype = w_qtype = QType( + dtype=w_zp.dtype, scale=w_scale, + zero_point=w_zp, quantized_dimension=0 if len(w_scale) > 1 else None) + o_zp = cls.get_constant(inputs[7]) + o_scale = cls.get_constant(inputs[6]) + o_qtype = QType(dtype=o_zp.dtype, scale=o_scale, zero_point=o_zp) + biases_node.qtype = b_qtype = QType( + dtype=biases.dtype, scale=w_scale*x_scale) + qrecs[NodeId(params)] = QRec.scaled( + in_qs=[x_qtype, w_qtype, b_qtype], + out_qs=[o_qtype], + ) + else: + o_qtype = None w_dim = Dim.named_ordered( out_c=out_c, in_c=filt_in_c, h=filt_h, w=filt_w) @@ -149,8 +177,9 @@ def conv(cls, node, **kwargs): if conv_shape != real_in_shape: # insert reshape from [xx,None,xx,xx] -> [None, xx, xx, xx] rbatch_params = ReshapeParameters(f'{valid_name}_reshape_batchdim', - old_shape=Dim.unnamed(conv_shape), - shape=Dim.unnamed(real_in_shape)) + old_shape=Dim.unnamed( + conv_shape), + shape=Dim.unnamed(real_in_shape)) G.add_edge( NNEdge(from_node=x[0], to_node=rbatch_params, from_idx=x[1], to_idx=0)) prev_node = rbatch_params @@ -182,11 +211,11 @@ def conv(cls, node, **kwargs): to_node=params, from_idx=0, to_idx=0)) G.add_edge(NNEdge(from_node=params, to_node=r2_params, from_idx=0, to_idx=0)) - all_nodes[node.output[0]] = (r2_params, 0, pout_dims) + all_nodes[node.output[0]] = (r2_params, 0, pout_dims, o_qtype) return r2_params else: pout_dims = ProvisionalDim([conv_shape[0]] + out_dims[0].shape) G.add_edge( NNEdge(from_node=prev_node, to_node=params, from_idx=prev_idx, to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pout_dims) + all_nodes[node.output[0]] = (params, 0, pout_dims, o_qtype) return params diff --git a/tools/nntool/importer/onnx/handlers/backend/conv_transpose.py b/tools/nntool/importer/onnx/handlers/backend/conv_transpose.py index 9302b6837..cddd73fb2 100644 --- a/tools/nntool/importer/onnx/handlers/backend/conv_transpose.py +++ b/tools/nntool/importer/onnx/handlers/backend/conv_transpose.py @@ -98,8 +98,8 @@ def _common(cls, node, **kwargs): weights = np.reshape(weights, (in_c, filt_out_c, filt_h, filt_w)) weights_node = ConstantInputParameters(f'{valid_name}_weights', value=weights, dims=Dim.unnamed( - weights.shape), - constant_store=G.constant_store) + weights.shape)) + cls.record_constant_qrec(inputs[1], weights_node, **kwargs) else: filt_h = weights.shape[-2] filt_w = weights.shape[-1] @@ -118,8 +118,7 @@ def _common(cls, node, **kwargs): biases = np.zeros([out_c], dtype=np.float32) biases_node = ConstantInputParameters(f'{valid_name}_biases', value=biases, dims=Dim.unnamed( - biases.shape), - constant_store=G.constant_store) + biases.shape)) padding, dilations, strides, output_padding = cls.calc_shapes(node, spatial_size, Dim2D((h, w)), Dim2D((filt_h, filt_w))) @@ -132,8 +131,7 @@ def _common(cls, node, **kwargs): has_bias=True, in_dims_hint=[['c', 'h', 'w'], cls.ONNX_TRANSFILTER_ORDER, ['c']], - out_dims_hint=[['c', 'h', 'w']], - constant_store=G.constant_store) + out_dims_hint=[['c', 'h', 'w']]) in_dim = Dim.named_ordered(c=in_c, h=h, w=w) w_dim = Dim.named_ordered( @@ -174,13 +172,13 @@ def _common(cls, node, **kwargs): G.add_edge(NNEdge(from_node=params, to_node=r2_params, from_idx=0, to_idx=0)) pout_dims = ProvisionalDim([conv_shape[0]] + oned_out_shape) - all_nodes[node.output[0]] = (r2_params, 0, pout_dims) + all_nodes[node.output[0]] = (r2_params, 0, pout_dims, None) return r2_params else: pout_dims = ProvisionalDim([conv_shape[0]] + out_dims[0].shape) G.add_edge( NNEdge(from_node=prev_node, to_node=params, from_idx=prev_idx, to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pout_dims) + all_nodes[node.output[0]] = (params, 0, pout_dims, None) return params diff --git a/tools/nntool/importer/onnx/handlers/backend/dequantize_linear.py b/tools/nntool/importer/onnx/handlers/backend/dequantize_linear.py new file mode 100644 index 000000000..ed9f57df1 --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/dequantize_linear.py @@ -0,0 +1,49 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np + +from importer.common.constant_mixin import ConstantMixin +from quantization.qtype import QType + +from ..backend_handler import BackendHandler +from ..handler import onnx_op + + +@onnx_op("DequantizeLinear") +class DequantizeLinear(ConstantMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + all_nodes = kwargs['all_nodes'] + inputs = [all_nodes[inp] for inp in node.input] + axis = node.attrs.get('axis', None) + x = inputs[0] + scale = inputs[1] + zero_point = inputs[2] if len(inputs) > 2 else None + qtype = QType( + dtype=zero_point[0].value.dtype, scale=scale[0].value, + zero_point=zero_point[0].value, quantized_dimension=axis) + all_nodes[node.input[0]] = tuple(list(x)[0:3] + [qtype]) + all_nodes[node.output[0]] = tuple(list(x)[0:3] + [None]) + return x[0] + + @classmethod + def version_10(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/expand.py b/tools/nntool/importer/onnx/handlers/backend/expand.py index 7ff09095e..dd83c73c4 100644 --- a/tools/nntool/importer/onnx/handlers/backend/expand.py +++ b/tools/nntool/importer/onnx/handlers/backend/expand.py @@ -16,17 +16,16 @@ import numpy as np from graph.types import ConstantInputParameters, ExpandParameters from graph.types.base import NNEdge +from importer.common.constant_mixin import ConstantMixin from importer.onnx.common import logger from ..backend_handler import BackendHandler -from ..handler import onnx_op, partial_support, ps_description +from ..handler import onnx_op, constant_only from .broadcast_mixin import BroadcastMixin -from importer.common.constant_mixin import ConstantMixin @onnx_op("Expand") -@partial_support(True) -@ps_description("only implemented on constants at import") +@constant_only(True) class Expand(BroadcastMixin, ConstantMixin, BackendHandler): @classmethod @@ -43,12 +42,12 @@ def _common(cls, node, **kwargs): if cls.is_constant(x): logger.info("reducing %s to a constant", valid_name) x_val = cls.get_constant(x) - params = ConstantInputParameters(valid_name, value=x_val * np.ones(shape), constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, value=x_val * np.ones(shape)) else: params = ExpandParameters(valid_name, shape=shape) G.add_edge(NNEdge(x[0], params, from_idx=x[1])) - all_nodes[node.output[0]] = (params, 0, pshape) + all_nodes[node.output[0]] = (params, 0, pshape, x[3]) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/flatten.py b/tools/nntool/importer/onnx/handlers/backend/flatten.py index 43dbe5bdc..1ea65be0a 100644 --- a/tools/nntool/importer/onnx/handlers/backend/flatten.py +++ b/tools/nntool/importer/onnx/handlers/backend/flatten.py @@ -59,8 +59,7 @@ def _common(cls, node, **kwargs): logger.info("reducing %s to a constant", valid_name) params = ConstantInputParameters( valid_name, - value=cls.get_constant(x).reshape(shape), - constant_store=G.constant_store + value=cls.get_constant(x).reshape(shape) ) pshape = ProvisionalDim(shape) else: @@ -69,7 +68,7 @@ def _common(cls, node, **kwargs): pshape = ProvisionalDim(pshape) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pshape) + all_nodes[node.output[0]] = (params, 0, pshape, x[3]) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/floor.py b/tools/nntool/importer/onnx/handlers/backend/floor.py index b7eb3bf46..f88d0cc95 100644 --- a/tools/nntool/importer/onnx/handlers/backend/floor.py +++ b/tools/nntool/importer/onnx/handlers/backend/floor.py @@ -45,11 +45,10 @@ def _common(cls, node, **kwargs): logger.info("reducing %s to a constant %s", valid_name, x_val) else: logger.info("reducing %s to a constant", valid_name) - params = ConstantInputParameters(valid_name, dims=Dim.unnamed(x_val.shape), value=res, - constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, dims=Dim.unnamed(x_val.shape), value=res) else: raise ValueError("ONNX floor operator is not implemented") - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(x_shape)) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(x_shape), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/gather.py b/tools/nntool/importer/onnx/handlers/backend/gather.py index 565177d84..9a822dcfa 100644 --- a/tools/nntool/importer/onnx/handlers/backend/gather.py +++ b/tools/nntool/importer/onnx/handlers/backend/gather.py @@ -14,8 +14,7 @@ # along with this program. If not, see . import numpy as np -from graph.types import GatherParameters, NNEdge -from graph.types.input_output import ConstantInputParameters +from graph.types import ConstantInputParameters, GatherParameters, NNEdge from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim from importer.onnx.common import logger @@ -43,13 +42,12 @@ def _common(cls, node, **kwargs): if cls.is_constant(x): x_val = cls.get_constant(x) logger.info(f"reducing {valid_name} to a constant {cls.print_small(x_val)}") - params = ConstantInputParameters(valid_name, value=np.take(x_val, indices, axis=axis), - constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, value=np.take(x_val, indices, axis=axis)) else: axis = cls._trim_axis(axis, x_shape) params = GatherParameters(valid_name, axis=axis, indices=indices) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pshape) + all_nodes[node.output[0]] = (params, 0, pshape, x[3]) return params @classmethod @@ -59,3 +57,7 @@ def version_1(cls, node, **kwargs): @classmethod def version_11(cls, node, **kwargs): return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/gemm.py b/tools/nntool/importer/onnx/handlers/backend/gemm.py index 4780e8369..273395488 100644 --- a/tools/nntool/importer/onnx/handlers/backend/gemm.py +++ b/tools/nntool/importer/onnx/handlers/backend/gemm.py @@ -35,7 +35,6 @@ def _import_as_matmul(cls, node, inputs, x, y, real_x_shape, real_y_shape, trans G = kwargs['G'] valid_name = kwargs['valid_name'] all_nodes = kwargs['all_nodes'] - biases = cls.get_constant(inputs[2]) if len(inputs) > 2 else None if trans_a: tparams = TransposeParameters(G.unique_name( f'{valid_name}_tinx'), transpose=(1, 0)) @@ -51,14 +50,17 @@ def _import_as_matmul(cls, node, inputs, x, y, real_x_shape, real_y_shape, trans NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) G.add_edge( NNEdge(from_node=y[0], to_node=params, from_idx=y[1], to_idx=1)) - if biases is not None: - biases_params = ConstantInputParameters( - G.unique_name(f'{valid_name}_biases'), dims=Dim.unnamed(biases.shape), value=biases) - G.add_edge( - NNEdge(from_node=biases_params, to_node=params, to_idx=2)) + out_dims = params.get_output_size( [Dim.unnamed(real_x_shape), Dim.unnamed(real_y_shape)]) - all_nodes[node.output[0]] = (params, 0, out_dims[0]) + + biases = cls.get_constant(inputs[2]) if len(inputs) > 2 else np.zeros(out_dims[0].shape[1]) + biases_params = ConstantInputParameters( + G.unique_name(f'{valid_name}_biases'), dims=Dim.unnamed(biases.shape), value=biases) + G.add_edge( + NNEdge(from_node=biases_params, to_node=params, to_idx=2)) + cls.record_constant_qrec(inputs[2], biases_params, **kwargs) + all_nodes[node.output[0]] = (params, 0, out_dims[0], None) return params @classmethod @@ -86,6 +88,8 @@ def _common(cls, node, **kwargs): real_y_shape) == 2 and trans_b else real_y_shape if not cls.is_linear(y, real_x_shape, real_y_shape) or trans_a: + if alpha != 1.0 or beta != 1.0: + raise NotImplementedError('Alpha and Beta not implemented on pure matmul GEMM') return cls._import_as_matmul(node, inputs, x, y, real_x_shape, real_y_shape, trans_a, trans_b, alpha, beta, **kwargs) @@ -104,16 +108,26 @@ def _common(cls, node, **kwargs): weights = np.transpose(weights, [1, 0]) weights_params = ConstantInputParameters( f'{valid_name}_weights', dims=Dim.unnamed(weights.shape), value=weights) + if y[3]: + if alpha == 1.0: + cls.record_constant_qrec(y, weights_params, **kwargs) + else: + raise NotImplementedError("qtype on Gemm with alpha != 1.0") + biases = biases * beta biases_params = ConstantInputParameters( f'{valid_name}_biases', dims=Dim.unnamed(biases.shape), value=biases) + if len(inputs) > 2 and inputs[2][3]: + if beta == 1.0: + cls.record_constant_qrec(inputs[2], biases_params, **kwargs) + else: + raise NotImplementedError("qtype on Gemm with beta != 1.0") params = FcParameters(valid_name, filt=filt_dim, has_bias=True, # in_dims_hint=[['c']], in_dims_hint=[ None, ['out_c', 'in_c'], ['out_c']], - out_dims_hint=[['c']], - constant_store=G.constant_store) + out_dims_hint=[['c']]) G.add_edge(NNEdge(from_node=weights_params, to_node=params, to_idx=1)) G.add_edge(NNEdge(from_node=biases_params, to_node=params, to_idx=2)) @@ -125,7 +139,7 @@ def _common(cls, node, **kwargs): out_dim = x[2].infer_mapping(out_dims[0].shape) else: out_dim = out_dims[0] - all_nodes[node.output[0]] = (params, 0, out_dim) + all_nodes[node.output[0]] = (params, 0, out_dim, None) return params @classmethod @@ -147,3 +161,7 @@ def version_9(cls, node, **kwargs): @classmethod def version_11(cls, node, **kwargs): return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/global_max_pool.py b/tools/nntool/importer/onnx/handlers/backend/global_max_pool.py index b8ba3efe8..35d99b2e9 100644 --- a/tools/nntool/importer/onnx/handlers/backend/global_max_pool.py +++ b/tools/nntool/importer/onnx/handlers/backend/global_max_pool.py @@ -23,4 +23,4 @@ class GlobalMaxPool(GlobalPoolMixin, BackendHandler): @classmethod def version_1(cls, node, **kwargs): - return cls._common(node, pool_type="max", **kwargs) + return cls._common(node, pool_type="max", copy_qtype=True, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/global_pool_mixin.py b/tools/nntool/importer/onnx/handlers/backend/global_pool_mixin.py index 779af8685..14d788c35 100644 --- a/tools/nntool/importer/onnx/handlers/backend/global_pool_mixin.py +++ b/tools/nntool/importer/onnx/handlers/backend/global_pool_mixin.py @@ -14,13 +14,14 @@ # along with this program. If not, see . from graph.types import GlobalPoolingParameters, NNEdge +from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim -class GlobalPoolMixin(object): +class GlobalPoolMixin(ConstantMixin): @classmethod - def _common(cls, node, pool_type="max", **kwargs): + def _common(cls, node, pool_type="max", constant_operation=None, copy_qtype=False, **kwargs): all_nodes = kwargs['all_nodes'] G = kwargs['G'] valid_name = kwargs['valid_name'] @@ -36,5 +37,5 @@ def _common(cls, node, pool_type="max", **kwargs): ) pout_dims = ProvisionalDim([x_shape[0], x_shape[1]] + ([1] * (len(x_shape) - 2))) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pout_dims) + all_nodes[node.output[0]] = (params, 0, pout_dims, x[3] if copy_qtype else None) return params diff --git a/tools/nntool/importer/onnx/handlers/backend/gru.py b/tools/nntool/importer/onnx/handlers/backend/gru.py index 665d25463..2b363dc9f 100644 --- a/tools/nntool/importer/onnx/handlers/backend/gru.py +++ b/tools/nntool/importer/onnx/handlers/backend/gru.py @@ -66,7 +66,7 @@ def _common(cls, node, **kwargs): biases, hidden_size, ("w_z_b", "w_r_b", "w_h_b", "r_z_b", "r_r_b", "r_h_b"), num_directions)) cls.deep_update(tensors, - cls.get_state(inputs, 5, 'h_state', hidden_size, num_directions)) + cls.get_state(G, inputs, 5, 'h_state', hidden_size, num_directions)) cls.combine_biases_gru(tensors, ['z', 'r'], num_directions) extra_args = { 'linear_before_reset': linear_before_reset diff --git a/tools/nntool/importer/onnx/handlers/backend/identity.py b/tools/nntool/importer/onnx/handlers/backend/identity.py index 5d3d56df0..699d247d2 100644 --- a/tools/nntool/importer/onnx/handlers/backend/identity.py +++ b/tools/nntool/importer/onnx/handlers/backend/identity.py @@ -13,13 +13,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import numpy as np -from graph.types import ConstantInputParameters, NNEdge -from graph.types.others import NoOPParameters, PadParameters -from importer.common.constant_mixin import ConstantMixin -from importer.common.provisional_dim import ProvisionalDim -from importer.onnx.common import logger - from ..backend_handler import BackendHandler from ..handler import onnx_op, partial_support, ps_description @@ -35,7 +28,7 @@ def _common(cls, node, **kwargs): inputs = [all_nodes[inp] for inp in node.input] x = inputs[0] all_nodes[node.output[0]] = x - return None + return x[0] @classmethod def version_1(cls, node, **kwargs): diff --git a/tools/nntool/importer/onnx/handlers/backend/log_softmax.py b/tools/nntool/importer/onnx/handlers/backend/log_softmax.py index 5d0c68bf9..750daf999 100644 --- a/tools/nntool/importer/onnx/handlers/backend/log_softmax.py +++ b/tools/nntool/importer/onnx/handlers/backend/log_softmax.py @@ -54,7 +54,7 @@ def _common(cls, node, v13=False, **kwargs): G.add_edge(NNEdge(from_node=x[0], to_node=softmax_params, from_idx=x[1], to_idx=0)) params = LogOpParameters(f'{valid_name}_log') G.add_edge(NNEdge(from_node=softmax_params, to_node=params)) - all_nodes[node.output[0]] = (params, 0, copy.deepcopy(x[2])) + all_nodes[node.output[0]] = (params, 0, copy.deepcopy(x[2]), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/loop.py b/tools/nntool/importer/onnx/handlers/backend/loop.py new file mode 100644 index 000000000..cab2fc55a --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/loop.py @@ -0,0 +1,96 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np +from execution.graph_executer import GraphExecuter +from graph.dim import Dim +from graph.nngraph import NNGraph +from graph.types import ConstantInputParameters, InputParameters +from importer.common.constant_mixin import ConstantMixin +from importer.common.provisional_dim import ProvisionalDim +from importer.onnx.common import logger + +from ..backend_handler import BackendHandler +from ..handler import onnx_op, partial_support, ps_description + + +@onnx_op("Loop") +@partial_support(True) +@ps_description("Loops are not supported.") +class Loop(BackendHandler, ConstantMixin): + + @classmethod + def _common(cls, node, **kwargs): + all_nodes = kwargs['all_nodes'] + G = kwargs['G'] + valid_name = kwargs['valid_name'] + + inputs = [all_nodes[inp] for inp in node.input] + + if not all(cls.is_constant(inp) for inp in inputs): + raise NotImplementedError( + "nntool does not support import of graphs with evaluated loops") + + importer = kwargs['importer'] + sub_G = NNGraph() + all_nodes_clone = all_nodes.copy() + importer.import_subgraph( + sub_G, node.attrs['body'], {}, all_nodes=all_nodes_clone) + if not all(isinstance(inp, (InputParameters, ConstantInputParameters)) for inp in sub_G.inputs()): + raise NotImplementedError( + "nntool does not support import of graphs with evaluated loops") + sub_G.add_dimensions() + for idx, inp in enumerate(sub_G.inputs()): + inp.index = idx + + logger.info(f"reducing loop {valid_name} to a constant") + count = inputs[0][0].value + keep_going = inputs[1][0].value + loop_carried = [inp[0].value for inp in inputs[2:]] + outputs = [np.array([])] * len(node.output) + while keep_going and count > 0: + executer = GraphExecuter(sub_G) + output_tensors = executer.execute( + [count, keep_going] + loop_carried, silent=True) + outp_vals = [output_tensors[node.step_idx][0] + for node in sub_G.outputs() if not isinstance(node, InputParameters)] + keep_going = outp_vals[0] + for idx, val in enumerate(outp_vals[1:]): + if idx < len(loop_carried): + loop_carried[idx] = outputs[idx] = val + elif outputs[idx] is None: + outputs[idx] = val + else: + outputs[idx] = np.concatenate((outputs[idx], val)) + count -= 1 + for idx, outp in enumerate(node.output): + params = ConstantInputParameters(G.unique_name( + f'{valid_name}_out{idx}'), value=outputs[idx], dims=Dim.unnamed(outputs[idx].shape)) + all_nodes[outp] = (params, 0, ProvisionalDim( + outputs[idx].shape), None) + + return None + + @classmethod + def version_1(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_11(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/lstm.py b/tools/nntool/importer/onnx/handlers/backend/lstm.py index 97ef30eda..3d4eff864 100644 --- a/tools/nntool/importer/onnx/handlers/backend/lstm.py +++ b/tools/nntool/importer/onnx/handlers/backend/lstm.py @@ -63,7 +63,7 @@ def _common(cls, node, **kwargs): for name, idx in [('i_state', 5), ('c_state', 6)]: cls.deep_update(tensors, - cls.get_state(inputs, idx, name, hidden_size, num_directions)) + cls.get_state(G, inputs, idx, name, hidden_size, num_directions)) extra_args = { 'cell_clip': cell_clip diff --git a/tools/nntool/importer/onnx/handlers/backend/mat_mul.py b/tools/nntool/importer/onnx/handlers/backend/mat_mul.py index ea94d8f91..f855bcce1 100644 --- a/tools/nntool/importer/onnx/handlers/backend/mat_mul.py +++ b/tools/nntool/importer/onnx/handlers/backend/mat_mul.py @@ -13,63 +13,20 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import numpy as np -from graph.dim import Dim, FcFilterDim -from graph.types import FcParameters, MatMulOpParameters, NNEdge -from graph.types.input_output import ConstantInputParameters -from ..backend_handler import BackendHandler +from importer.onnx.handlers.backend.mat_mul_mixin import MatMulMixin +from importer.onnx.handlers.backend_handler import BackendHandler + from ..handler import onnx_op, partial_support, ps_description -from .promote_linear_mixin import PromoteLinearMixin @onnx_op("MatMul") @partial_support(True) @ps_description("Supports only 2D or groups of 2D matrix multiplications.") -class MatMul(PromoteLinearMixin, BackendHandler): +class MatMul(BackendHandler, MatMulMixin): @classmethod def _common(cls, node, **kwargs): - all_nodes = kwargs['all_nodes'] - G = kwargs['G'] - valid_name = kwargs['valid_name'] - inputs = [all_nodes[inp] for inp in node.input] - x = inputs[0] - x_shape = cls._get_real_dim(x[2].shape) - y = inputs[1] - y_shape = cls._get_real_dim(y[2].shape) - if cls.is_linear(y, x_shape, y_shape): - filt_dim = FcFilterDim(y_shape[1], x_shape[0]) - weights = np.transpose(cls.get_constant(y), [1, 0]) - weights_params = ConstantInputParameters(f'{valid_name}_weights', - dims=Dim.unnamed( - [y_shape[1], x_shape[0]]), - value=weights) - params = FcParameters(valid_name, filt=filt_dim, has_bias=True, - # in_dims_hint=[ - # ['c'], ['out_c', 'in_c'], ['out_c']], - in_dims_hint=[ - None, ['out_c', 'in_c'], ['out_c']], - out_dims_hint=[['c']], - constant_store=G.constant_store) - out_dims = params.get_output_size([Dim.unnamed(x_shape)]) - biases_params = ConstantInputParameters(f'{valid_name}_biases', dims=Dim.unnamed([y_shape[1]]), - value=np.zeros((y_shape[1]), dtype=np.float32)) - G.add_edge(NNEdge(from_node=weights_params, - to_node=params, to_idx=1)) - G.add_edge(NNEdge(from_node=biases_params, - to_node=params, to_idx=2)) - else: - params = MatMulOpParameters(valid_name) - out_dims = params.get_output_size( - [Dim.unnamed(x_shape), Dim.unnamed(y_shape)]) - G.add_edge( - NNEdge(from_node=y[0], to_node=params, from_idx=y[1], to_idx=1)) - G.add_edge( - NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - - pout_dims = x[2].infer_mapping(out_dims[0].shape) - all_nodes[node.output[0]] = (params, 0, pout_dims) - return params + return cls._handle(node, **kwargs) @classmethod def version_1(cls, node, **kwargs): diff --git a/tools/nntool/importer/onnx/handlers/backend/mat_mul_mixin.py b/tools/nntool/importer/onnx/handlers/backend/mat_mul_mixin.py new file mode 100644 index 000000000..b2d6a0c6f --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/mat_mul_mixin.py @@ -0,0 +1,120 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from graph.types.others import TransposeParameters +import numpy as np +from graph.dim import Dim, FcFilterDim +from graph.types import (ConstantInputParameters, FcParameters, + MatMulTransposedParameters, NNEdge) +from quantization.new_qrec import QRec +from quantization.qtype import QType +from utils.node_id import NodeId + +from .promote_linear_mixin import PromoteLinearMixin + + +class MatMulMixin(PromoteLinearMixin): + + @classmethod + def _handle(cls, node, quantized=False, **kwargs): + all_nodes = kwargs['all_nodes'] + G = kwargs['G'] + valid_name = kwargs['valid_name'] + inputs = [all_nodes[inp] for inp in node.input] + x = inputs[0] + x_shape = cls._get_real_dim(x[2].shape) + y_idx = 3 if quantized else 1 + y = inputs[y_idx] + y_shape = cls._get_real_dim(y[2].shape) + + if quantized: + qrecs = kwargs['qrecs'] + x_zp = cls.get_constant(inputs[2]) + x_scale = cls.get_constant(inputs[1]) + if len(x_scale) > 1: + raise NotImplementedError('QMatMul scales must be scalar') + x_qtype = QType(dtype=x_zp.dtype, scale=x_scale, zero_point=x_zp) + y_zp = cls.get_constant(inputs[5]) + y_scale = cls.get_constant(inputs[4]) + if len(y_scale) > 1: + raise NotImplementedError('QMatMul scales must be scalar') + y_qtype = QType( + dtype=y_zp.dtype, scale=y_scale, + zero_point=y_zp) + o_zp = cls.get_constant(inputs[7]) + o_scale = cls.get_constant(inputs[6]) + o_qtype = QType(dtype=o_zp.dtype, scale=o_scale, zero_point=o_zp) + else: + o_qtype = None + + + if cls.is_linear(y, x_shape, y_shape): + filt_dim = FcFilterDim(y_shape[1], x_shape[0]) + weights = np.transpose(cls.get_constant(y), [1, 0]) + weights_params = ConstantInputParameters(f'{valid_name}_weights', + dims=Dim.unnamed( + [y_shape[1], x_shape[0]]), + value=weights) + cls.record_constant_qrec(y, weights_params, **kwargs) + params = FcParameters(valid_name, filt=filt_dim, has_bias=True, + # in_dims_hint=[ + # ['c'], ['out_c', 'in_c'], ['out_c']], + in_dims_hint=[ + None, ['out_c', 'in_c'], ['out_c']], + out_dims_hint=[['c']]) + + out_dims = params.get_output_size([Dim.unnamed(x_shape)]) + biases_params = ConstantInputParameters(f'{valid_name}_biases', dims=Dim.unnamed([y_shape[1]]), + value=np.zeros((y_shape[1]), dtype=np.float32)) + G.add_edge(NNEdge(from_node=weights_params, + to_node=params, to_idx=1)) + G.add_edge(NNEdge(from_node=biases_params, + to_node=params, to_idx=2)) + if quantized: + weights_params.qtype = y_qtype + qrecs[NodeId(params)] = QRec.scaled( + in_qs=[x_qtype, y_qtype, None], + out_qs=[o_qtype], + ) + else: + params = MatMulTransposedParameters(valid_name) + trans2 = TransposeParameters(f'{valid_name}_tin2', transpose=(1, 0)) + out_dims = params.get_output_size( + [Dim.unnamed(x_shape), Dim.unnamed(y_shape[::-1])]) + G.add_edge( + NNEdge(from_node=y[0], to_node=trans2, from_idx=y[1], to_idx=0)) + G.add_edge( + NNEdge(from_node=trans2, to_node=params, from_idx=0, to_idx=1)) + biases_params = ConstantInputParameters(f'{valid_name}_biases', dims=Dim.unnamed([out_dims[0].shape[1]]), + value=np.zeros((out_dims[0].shape[1]), dtype=np.float32)) + G.add_edge(NNEdge(from_node=biases_params, + to_node=params, to_idx=2)) + + if quantized: + qrecs[NodeId(trans2)] = QRec.scaled( + in_qs=[y_qtype], + out_qs=[y_qtype], + ) + qrecs[NodeId(params)] = QRec.scaled( + in_qs=[x_qtype, y_qtype], + out_qs=[o_qtype], + ) + + G.add_edge( + NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) + + pout_dims = x[2].infer_mapping(out_dims[0].shape) + all_nodes[node.output[0]] = (params, 0, pout_dims, o_qtype) + return params diff --git a/tools/nntool/importer/onnx/handlers/backend/math_mixin.py b/tools/nntool/importer/onnx/handlers/backend/math_mixin.py index 0bf0c38c3..8876cbbe7 100644 --- a/tools/nntool/importer/onnx/handlers/backend/math_mixin.py +++ b/tools/nntool/importer/onnx/handlers/backend/math_mixin.py @@ -17,17 +17,18 @@ import numpy as np from graph.dim import Dim -from graph.types.base import NNEdge -from graph.types.input_output import ConstantInputParameters -from graph.types.tensor_arithmetic import Broadcastable +from graph.types import Broadcastable, ConstantInputParameters, NNEdge from importer.common.broadcast_mixin import BroadcastMixin from importer.common.constant_mixin import ConstantMixin from importer.onnx.common import logger +from quantization.new_qrec import QRec +from quantization.qtype import QType +from utils.node_id import NodeId class BasicMathMixin(ConstantMixin, BroadcastMixin): @classmethod - def _common(cls, node, **kwargs): + def _common(cls, node, copy_qtype=False, **kwargs): all_nodes = kwargs['all_nodes'] valid_name = kwargs['valid_name'] G = kwargs['G'] @@ -41,49 +42,79 @@ def _common(cls, node, **kwargs): logger.info("reducing %s to a constant %s", valid_name, res) else: logger.info("reducing %s to a constant", valid_name) - params = ConstantInputParameters(valid_name, value=res, - constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, value=res) else: params_args = kwargs.get('params_args', {}) params = kwargs['params_class'](valid_name, **params_args) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, copy.deepcopy(x[2])) + all_nodes[node.output[0]] = (params, 0, copy.deepcopy(x[2]), x[3] if copy_qtype else None) return params - class ArithmeticMixin(ConstantMixin, BroadcastMixin): + + @classmethod + def get_qtype(cls, scale_inp, zp_inp): + scale = cls.get_constant(scale_inp) + zp = cls.get_constant(zp_inp) + return QType(dtype=zp.dtype, scale=scale, zp=zp) + @classmethod - def _common(cls, node, **kwargs): + def _common(cls, node, copy_qtype=False, quantized_args=None, **kwargs): all_nodes = kwargs['all_nodes'] valid_name = kwargs['valid_name'] G = kwargs['G'] constant_operation = kwargs.get('constant_operation') constant_int_operation = kwargs.get('constant_int_operation') inputs = [all_nodes[inp] for inp in node.input] - assert len(inputs) == 2 - if all(cls.is_constant(inp) for inp in inputs) and constant_operation: - values = [cls.get_constant(inp) for inp in inputs] + if quantized_args: + args = [inputs[quantized_args[0][0]], inputs[quantized_args[1][0]]] + inp_qtypes = [ + cls.get_qtype(inputs[quantized_args[0][1]], inputs[quantized_args[0][2]]), + cls.get_qtype(inputs[quantized_args[1][1]], inputs[quantized_args[1][2]]) + ] + out_qtype = cls.get_qtype(inputs[quantized_args[2][0]], inputs[quantized_args[2][1]]) + else: + args = inputs + assert len(args) == 2 + out_qtype = None + + if all(cls.is_constant(inp) for inp in args) and constant_operation: + values = [cls.get_constant(inp) for inp in args] + if quantized_args: + values = [inp_qtype.dequantize(val) for inp_qtype, val in zip(inp_qtypes, values)] outputs = cls.implied_broadcast(inputs) if constant_int_operation and all(np.issubdtype(val.dtype, np.integer) for val in values): res = constant_int_operation(*values) else: res = constant_operation(*values) + if quantized_args: + res = out_qtype.quantize(res) if res.size < 10: logger.info("reducing %s to a constant %s", valid_name, res) else: logger.info("reducing %s to a constant", valid_name) params = ConstantInputParameters(valid_name, value=res, dims=Dim.unnamed(outputs[0].known_shape), - constant_store=G.constant_store) + qtype=out_qtype) else: params_args = kwargs.get('params_args', {}) params = kwargs['params_class'](valid_name, **params_args) outputs = cls.implied_broadcast(inputs) shapes = [] - for idx, inp in enumerate(inputs): + for idx, inp in enumerate(args): G.add_edge(NNEdge(from_node=inp[0], to_node=params, from_idx=inp[1], to_idx=idx)) shapes.append(inp[2].known_shape) if isinstance(params, Broadcastable): params.set_broadcast(shapes) - all_nodes[node.output[0]] = (params, 0, outputs[0]) + if quantized_args: + for qtype, inp in zip(inp_qtypes, args): + if cls.is_constant(inp): + inp[0].qtype = qtype + qrecs = kwargs['qrecs'] + qrecs[NodeId(params)] = QRec.scaled(in_qs=inp_qtypes, out_qs=[out_qtype]) + + if copy_qtype: + out_qtype = inputs[0][3] if inputs[0][3] is not None else inputs[1][3] + + all_nodes[node.output[0]] = (params, 0, outputs[0], out_qtype) return params diff --git a/tools/nntool/importer/onnx/handlers/backend/max.py b/tools/nntool/importer/onnx/handlers/backend/max.py index 2d25c51ee..70c1f0544 100644 --- a/tools/nntool/importer/onnx/handlers/backend/max.py +++ b/tools/nntool/importer/onnx/handlers/backend/max.py @@ -29,6 +29,7 @@ def _common(cls, node, **kwargs): return super(Max, cls)._common(node, params_class=MaxOpParameters, constant_operation=np.maximum, + copy_qtype=True, **kwargs) @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/max_pool.py b/tools/nntool/importer/onnx/handlers/backend/max_pool.py index 5394c80a6..64ce80310 100644 --- a/tools/nntool/importer/onnx/handlers/backend/max_pool.py +++ b/tools/nntool/importer/onnx/handlers/backend/max_pool.py @@ -22,14 +22,14 @@ @onnx_op("MaxPool") @partial_support(True) -@ps_description("only support maxpool with 2d input") +@ps_description("Supports only 1D and 2D pooling. Maxpool with Argmax is not supported.") class MaxPool(PoolMixin, BackendHandler): @classmethod def _common(cls, node, **kwargs): if len(node.output) > 1: ValueError("max pool with argmax is not supported") - return cls.pool(node, pool_type="max", **kwargs) + return cls.pool(node, pool_type="max", copy_qtype=True, **kwargs) @classmethod def version_1(cls, node, **kwargs): diff --git a/tools/nntool/importer/onnx/handlers/backend/min.py b/tools/nntool/importer/onnx/handlers/backend/min.py index 2d66698ed..9dea7d69e 100644 --- a/tools/nntool/importer/onnx/handlers/backend/min.py +++ b/tools/nntool/importer/onnx/handlers/backend/min.py @@ -29,6 +29,7 @@ def _common(cls, node, **kwargs): return super(Min, cls)._common(node, params_class=MinOpParameters, constant_operation=np.minimum, + copy_qtype=True, **kwargs) @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/ms_qlinear_add.py b/tools/nntool/importer/onnx/handlers/backend/ms_qlinear_add.py new file mode 100644 index 000000000..f8a7fe5ca --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/ms_qlinear_add.py @@ -0,0 +1,38 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from graph.types.tensor_arithmetic import MatrixAddParameters + +from ..backend_handler import BackendHandler +from ..handler import onnx_op, domain +from .math_mixin import ArithmeticMixin + + +@onnx_op("QLinearAdd") +@domain("com.microsoft") +class MsQLinearAdd(ArithmeticMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + return super(MsQLinearAdd, cls)._common(node, + params_class=MatrixAddParameters, + constant_operation=lambda x, y: x + y, + quantized_args=( + (0, 1, 2), (3, 4, 5), (6, 7)), + **kwargs) + + @classmethod + def version_1(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/nncf_fake_quantize.py b/tools/nntool/importer/onnx/handlers/backend/nncf_fake_quantize.py new file mode 100644 index 000000000..ff395a6c3 --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/nncf_fake_quantize.py @@ -0,0 +1,88 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import math + +import numpy as np +from importer.common.constant_mixin import ConstantMixin +from quantization.qtype import QType + +from ..backend_handler import BackendHandler +from ..handler import domain, onnx_op + + +@domain('org.openvinotoolkit') +@onnx_op("FakeQuantize") +class NNCFFakeQuantize(ConstantMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + all_nodes = kwargs['all_nodes'] + G = kwargs['G'] + valid_name = kwargs['valid_name'] + inputs = [all_nodes[inp] for inp in node.input] + levels = node.attrs['levels'] + auto_broadcast = node.attrs.get('auto_broadcast', 'numpy') + if auto_broadcast != 'numpy': + raise ValueError(f'{valid_name} - only numpy is supported for auto_broadcast') + + qstats = kwargs.get('quant_stats', {}) + qopts = kwargs.get('quant_opts', {}) + x = inputs[0] + # input_low = inputs[1] + # input_high = inputs[2] + output_low = cls.get_constant(inputs[3]) + output_high = cls.get_constant(inputs[4]) + + if levels <= math.pow(2, 8): + dtype = np.int8 + elif levels <= math.pow(2, 16): + dtype = np.int16 + else: + raise ValueError(f"{valid_name} - don't know how to handle more than {math.pow(2, 16)} levels") + + bits = int(math.log2(levels)) + low_shape = output_low.shape + high_shape = output_high.shape + bc_dims_low = sum(1 for dim in high_shape if dim > 1) + bc_dims_high = sum(1 for dim in high_shape if dim > 1) + if bc_dims_low: + if not bc_dims_high: + raise ValueError(f"{valid_name} low output shape is broadcasted but high output shape is scalar") + if bc_dims_high > 1 or bc_dims_low > 1: + # could do a reduction here to axis 0 + raise ValueError(f"{valid_name} broadcast of output statistic on more than one dimension") + low_axis = next(idx for idx, dim in enumerate(low_shape) if dim > 1) + high_axis = next(idx for idx, dim in enumerate(high_shape) if dim > 1) + if low_axis != high_axis: + raise ValueError(f"{valid_name} low and high are not broadcasted on the same axis") + min_val = output_low.flatten() + max_val = output_high.flatten() + channel = low_axis + else: + if bc_dims_high: + raise ValueError(f"{valid_name} low output shape is scalar but high output shape is broadcasted") + channel = None + min_val = output_low.flatten()[0] + max_val = output_high.flatten()[0] + + qtype = QType.from_min_max_sq(min_val, max_val, dtype=dtype, bits=bits, quantized_dimension=channel) + + all_nodes[node.output[0]] = tuple(list(x)[0:3] + [qtype]) + return None + + @classmethod + def version_1(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/non_max_suppression.py b/tools/nntool/importer/onnx/handlers/backend/non_max_suppression.py new file mode 100644 index 000000000..5e7f713c8 --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/non_max_suppression.py @@ -0,0 +1,69 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np +from graph.types import NNEdge +from graph.types.ssd import NMSParameters +from importer.common.constant_mixin import ConstantMixin +from importer.common.provisional_dim import ProvisionalDim + +from ..backend_handler import BackendHandler +from ..handler import onnx_op + + +@onnx_op("NonMaxSuppression") +class NonMaxSuppression(ConstantMixin, BackendHandler): + @classmethod + def _common(cls, node, **kwargs): + all_nodes = kwargs['all_nodes'] + G = kwargs['G'] + valid_name = kwargs['valid_name'] + inputs = [all_nodes[inp] for inp in node.input] + + boxes = inputs[0] + scores = inputs[1] + scores_shape = scores[2].shape + num_classes = scores_shape[1] + max_output_boxes_per_class = cls.optional_constant_scalar(inputs, 2, 0, dtype=np.int64) + iou_threshold = cls.optional_constant_scalar(inputs, 3, 0) + score_threshold = cls.optional_constant_scalar(inputs, 4, 0) + center_point_box = node.attrs.get('center_point_box', 0) + + parameters = { + 'nms_score_threshold': score_threshold, + 'nms_iou_threshold': iou_threshold, + 'max_output_boxes_per_class': max_output_boxes_per_class, + 'num_classes': num_classes, + 'center_point_box': center_point_box + } + + pshape = ProvisionalDim([num_classes*max_output_boxes_per_class, 3]) + + params = NMSParameters(valid_name, parameters=parameters, + in_dims_hint=[['batch', 'spatial_dim', 'box'], ['batch', 'class', 'spatial_dim']], + out_dims_hint=[['spatial_dim', 'index']]) + G.add_edge(NNEdge(from_node=boxes[0], to_node=params, from_idx=boxes[1], to_idx=0)) + G.add_edge(NNEdge(from_node=scores[0], to_node=params, from_idx=scores[1], to_idx=1)) + all_nodes[node.output[0]] = (params, 0, pshape, None) + return params + + + @classmethod + def version_11(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_10(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/pad.py b/tools/nntool/importer/onnx/handlers/backend/pad.py index cfcecfe72..d4fb7b2ec 100644 --- a/tools/nntool/importer/onnx/handlers/backend/pad.py +++ b/tools/nntool/importer/onnx/handlers/backend/pad.py @@ -26,7 +26,7 @@ @onnx_op("Pad") @partial_support(True) -@ps_description("Only constant pad amounts are supported. Only zero padding is supported. " +@ps_description("Only constant pad amounts are supported." "Only 2D padding is supported. Padding must be successfully fused into a " "convolution or pooling operation to generate successfully. There is currently " "no AutoTiler Pad generator.") @@ -42,39 +42,55 @@ def _common(cls, node, mode='constant', pads=None, constant_value=0, **kwargs): x_shape = x[2].shape ndim = len(x_shape) + npad = len(pads)//2 + if npad != ndim: + if all(not pad for pad in pads): + logger.warning(f'Pad {valid_name} has {npad} pad values and {ndim} input rank. ' + 'Since pad is zero this is ignored but it probably indicates a bug in the ONNX graph.') + else: + raise ValueError( + f'Eroor in ONNX graph - pad {valid_name} has {npad} pad values and {ndim} input rank.') apads = np.array([[pads[idx], pads[idx+ndim]] for idx in range(ndim)]) # apads = np.array(pads).reshape((-1, 2)) if cls.is_constant(x): logger.info("reducing %s to a constant", valid_name) val = cls.get_constant(x) if mode == 'constant': - val = np.pad(val, apads, mode=mode, constant_values=constant_value) + val = np.pad(val, apads, mode=mode, + constant_values=constant_value) else: val = np.pad(val, apads, mode=mode) - params = ConstantInputParameters(valid_name, value=val, constant_store=G.constant_store) - pshape = [dim + sum(apads[idx]) if dim is not None else None for idx, dim in enumerate(x_shape)] - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(pshape)) + params = ConstantInputParameters(valid_name, value=val) + pshape = [ + dim + sum(apads[idx]) if dim is not None else None for idx, dim in enumerate(x_shape)] + all_nodes[node.output[0]] = ( + params, 0, ProvisionalDim(pshape), x[3]) return params if mode != 'constant': - raise ValueError('%s - pad mode %s is not supported'%(valid_name, mode)) - if constant_value != 0: - raise ValueError('%s - only zero padding is supported'%valid_name) + raise ValueError('%s - pad mode %s is not supported' % + (valid_name, mode)) if any(sum(pad) > 0 and x_shape[idx] is None for idx, pad in enumerate(apads)): - raise ValueError(f'batch axis is being padded in {valid_name}. Manipulation of batch axis is not supported') - trimmed_pads = tuple([pad for idx, pad in enumerate(apads) if x_shape[idx] is not None]) - + raise ValueError( + f'unknown/batch axis is being padded in {valid_name}. Manipulation of ' + 'unknown/batch axis is not supported') + trimmed_pads = tuple( + [pad for idx, pad in enumerate(apads) if x_shape[idx] is not None]) + if all(sum(trimmed_pad) == 0 for trimmed_pad in trimmed_pads): params = NoOPParameters(valid_name, desc="eliminated pad of 0") pshape = x_shape else: - pshape = [dim + sum(apads[idx]) if dim is not None else None for idx, dim in enumerate(x_shape)] + pshape = [ + dim + sum(apads[idx]) if dim is not None else None for idx, dim in enumerate(x_shape)] # pshape = [None if dim is None else dim + sum(apads[idx]) for idx, dim in enumerate(x_shape)] padvals = [(constant_value, constant_value)] * len(trimmed_pads) - params = PadParameters(valid_name, padding=trimmed_pads, pad_vals=padvals) - G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(pshape)) + params = PadParameters( + valid_name, padding=trimmed_pads, pad_vals=padvals) + G.add_edge( + NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(pshape), x[3]) return params @classmethod @@ -96,7 +112,8 @@ def _inputs_version(cls, node, **kwargs): else: value = 0 else: - raise ValueError('no pads input for node %s'%kwargs['valid_name']) + raise ValueError('no pads input for node %s' % + kwargs['valid_name']) return cls._common(node, mode=mode, pads=pads, constant_value=value, **kwargs) @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/pool_mixin.py b/tools/nntool/importer/onnx/handlers/backend/pool_mixin.py index c0a63c367..93b977116 100644 --- a/tools/nntool/importer/onnx/handlers/backend/pool_mixin.py +++ b/tools/nntool/importer/onnx/handlers/backend/pool_mixin.py @@ -22,12 +22,10 @@ from .pad_mixin import PadMixin -@partial_support(True) -@ps_description("Supports only 2D pools.") class PoolMixin(PadMixin): @classmethod - def pool(cls, node, pool_type=None, **kwargs): + def pool(cls, node, pool_type=None, copy_qtype=False, **kwargs): all_nodes = kwargs['all_nodes'] G = kwargs['G'] valid_name = kwargs['valid_name'] @@ -35,16 +33,37 @@ def pool(cls, node, pool_type=None, **kwargs): x = inputs[0] x_shape = x[2].shape x_feature_shape = x_shape[2::] + input_rank = len(x_feature_shape) in_c = x_shape[1] kernel_shape = node.attrs["kernel_shape"] - spatial_size = len(kernel_shape) - x_rank = spatial_size + 2 - if spatial_size != 2: - raise ValueError(valid_name + " with {}D input".format(x_rank)) + kernel_rank = len(kernel_shape) + if input_rank != kernel_rank: + raise ValueError(f'error in ONNX graph. {pool_type} pool {valid_name} ' + f'has a different input spatial rank {input_rank} to kernel rank {kernel_rank}') + spatial_size = kernel_rank + if kernel_rank > 2: + raise NotImplementedError(f'{pool_type} pool {valid_name} is a {kernel_rank}D pool ' + 'which is not supported by NNTOOL') - h = x_shape[2] - w = x_shape[3] + strides = node.attrs.get("strides", [1] * spatial_size) + stride_is_one = all(stride == 1 for stride in strides) + dilations = node.attrs.get("dilations", [1] * spatial_size) + if any(dilation > 1 for dilation in dilations): + raise ValueError(valid_name + " with dilation not supported") + # ceil_mode = bool(node.attrs.get("ceil_mode", 0)) + pad_dim = cls.calc_pad_dim(node, 2) + + if spatial_size == 1: + strides = [1] + strides + dilations = [1] + dilations + kernel_shape = [1] + kernel_shape + h = 1 + w = x_shape[2] + x_feature_shape = [1] + x_feature_shape + else: + h = x_shape[2] + w = x_shape[3] strides = node.attrs.get("strides", [1] * spatial_size) stride_is_one = all(stride == 1 for stride in strides) @@ -53,17 +72,22 @@ def pool(cls, node, pool_type=None, **kwargs): raise ValueError(valid_name + " with dilation not supported") # ceil_mode = bool(node.attrs.get("ceil_mode", 0)) pad_dim = cls.calc_pad_dim(node, spatial_size) + if pad_dim.is_same: + pad_dim.calculate_same( + Dim.named_ordered(h=h, w=w), + PoolFilterDim(kernel_shape[0], kernel_shape[1]), + StrideDim(strides[0], strides[1])) # Note: This needs to check dilation if it is added filter_matches_input = (all(k_dim >= (x_dim + pad) for k_dim, x_dim, pad in zip(kernel_shape, x_feature_shape, [pad_dim.h, pad_dim.w]))) if filter_matches_input and stride_is_one: params = GlobalPoolingParameters(valid_name, - pool_type=pool_type, - axis=[1, 2], - keep_dims=True, - in_dims_hint=[['c', 'h', 'w']], - out_dims_hint=[['c', 'h', 'w']]) + pool_type=pool_type, + axis=[1, 2], + keep_dims=True, + in_dims_hint=[['c', 'h', 'w']], + out_dims_hint=[['c', 'h', 'w']]) else: params = PoolingParameters(valid_name, filt=PoolFilterDim(kernel_shape[0], @@ -80,5 +104,6 @@ def pool(cls, node, pool_type=None, **kwargs): pout_dims = ProvisionalDim([x_shape[0]] + out_dims[0].shape) G.add_edge( NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pout_dims) + all_nodes[node.output[0]] = ( + params, 0, pout_dims, x[3] if copy_qtype else None) return params diff --git a/tools/nntool/importer/onnx/handlers/backend/qlinear_conv.py b/tools/nntool/importer/onnx/handlers/backend/qlinear_conv.py new file mode 100644 index 000000000..362272afa --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/qlinear_conv.py @@ -0,0 +1,26 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from ..backend_handler import BackendHandler +from ..handler import onnx_op +from .conv_mixin import ConvMixin + + +@onnx_op("QLinearConv") +class QLinearConv(ConvMixin, BackendHandler): + + @classmethod + def version_10(cls, node, **kwargs): + return cls.conv(node, quantized=True, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/qlinear_mat_mul.py b/tools/nntool/importer/onnx/handlers/backend/qlinear_mat_mul.py new file mode 100644 index 000000000..203613950 --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/qlinear_mat_mul.py @@ -0,0 +1,33 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + + +from importer.onnx.handlers.backend.mat_mul_mixin import MatMulMixin +from importer.onnx.handlers.backend_handler import BackendHandler + +from ..handler import onnx_op, partial_support, ps_description + + +@onnx_op("QLinearMatMul") +@partial_support(True) +@ps_description("Supports only 2D or groups of 2D matrix multiplications.") +class QLinearMatMul(BackendHandler, MatMulMixin): + @classmethod + def _common(cls, node, **kwargs): + return cls._handle(node, quantized=True, **kwargs) + + @classmethod + def version_10(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/quantize_linear.py b/tools/nntool/importer/onnx/handlers/backend/quantize_linear.py new file mode 100644 index 000000000..8b878e37f --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/quantize_linear.py @@ -0,0 +1,48 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np + +from importer.common.constant_mixin import ConstantMixin +from quantization.qtype import QType + +from ..backend_handler import BackendHandler +from ..handler import onnx_op + + +@onnx_op("QuantizeLinear") +class QuantizeLinear(ConstantMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + all_nodes = kwargs['all_nodes'] + inputs = [all_nodes[inp] for inp in node.input] + axis = node.attrs.get('axis', None) + x = inputs[0] + scale = inputs[1] + zero_point = inputs[2] if len(inputs) > 2 else None + qtype = QType( + dtype=zero_point[0].value.dtype, scale=scale[0].value, + zero_point=zero_point[0].value, quantized_dimension=axis) + all_nodes[node.output[0]] = tuple(list(x)[0:3] + [qtype]) + return None + + @classmethod + def version_10(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/reduce_max.py b/tools/nntool/importer/onnx/handlers/backend/reduce_max.py index f59e9d69c..a43cefbff 100644 --- a/tools/nntool/importer/onnx/handlers/backend/reduce_max.py +++ b/tools/nntool/importer/onnx/handlers/backend/reduce_max.py @@ -13,6 +13,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import numpy as np + from ..backend_handler import BackendHandler from ..handler import onnx_op from .reducer_mixin import ReducerMixin @@ -23,7 +25,7 @@ class ReduceMax(ReducerMixin, BackendHandler): @classmethod def _common(cls, node, **kwargs): - return super(ReduceMax, cls)._common(node, reduce_type="max", **kwargs) + return super(ReduceMax, cls)._common(node, reduce_type="max", constant_operation=np.amax, copy_qtype=True, **kwargs) @classmethod def version_1(cls, node, **kwargs): diff --git a/tools/nntool/importer/onnx/handlers/backend/reduce_mean.py b/tools/nntool/importer/onnx/handlers/backend/reduce_mean.py index 0030f243e..88af31098 100644 --- a/tools/nntool/importer/onnx/handlers/backend/reduce_mean.py +++ b/tools/nntool/importer/onnx/handlers/backend/reduce_mean.py @@ -13,6 +13,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import numpy as np + from ..backend_handler import BackendHandler from ..handler import onnx_op from .reducer_mixin import ReducerMixin @@ -23,7 +25,7 @@ class ReduceMean(ReducerMixin, BackendHandler): @classmethod def _common(cls, node, **kwargs): - return super(ReduceMean, cls)._common(node, reduce_type="average", **kwargs) + return super(ReduceMean, cls)._common(node, reduce_type="average", constant_operation=np.mean, **kwargs) @classmethod def version_1(cls, node, **kwargs): diff --git a/tools/nntool/importer/onnx/handlers/backend/reduce_min.py b/tools/nntool/importer/onnx/handlers/backend/reduce_min.py new file mode 100644 index 000000000..019e996fd --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/reduce_min.py @@ -0,0 +1,44 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np + +from ..backend_handler import BackendHandler +from ..handler import onnx_op +from .reducer_mixin import ReducerMixin + + +@onnx_op("ReduceMin") +class ReduceMin(ReducerMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + return super(ReduceMin, cls)._common(node, reduce_type="min", constant_operation=np.amin, copy_qtype=True, **kwargs) + + @classmethod + def version_1(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_11(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_12(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/reduce_sum.py b/tools/nntool/importer/onnx/handlers/backend/reduce_sum.py new file mode 100644 index 000000000..ca96b977a --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/reduce_sum.py @@ -0,0 +1,40 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np + +from ..backend_handler import BackendHandler +from ..handler import onnx_op +from .reducer_mixin import ReducerMixin + + +@onnx_op("ReduceSum") +class ReduceSum(ReducerMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + return super(ReduceSum, cls)._common(node, reduce_type="sum", constant_operation=np.sum, copy_qtype=False, **kwargs) + + @classmethod + def version_1(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_11(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/reducer_mixin.py b/tools/nntool/importer/onnx/handlers/backend/reducer_mixin.py index d4f45fb30..1d126bda0 100644 --- a/tools/nntool/importer/onnx/handlers/backend/reducer_mixin.py +++ b/tools/nntool/importer/onnx/handlers/backend/reducer_mixin.py @@ -13,12 +13,17 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from graph.types import GlobalPoolingParameters, NNEdge, NoOPParameters +from graph.dim import Dim +from graph.types import (ConstantInputParameters, GlobalPoolingParameters, + NNEdge, NoOPParameters) +from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim +from importer.onnx.common import logger -class ReducerMixin(object): + +class ReducerMixin(ConstantMixin): @classmethod - def _common(cls, node, **kwargs): + def _common(cls, node, copy_qtype=False, constant_operation=None, **kwargs): all_nodes = kwargs['all_nodes'] G = kwargs['G'] valid_name = kwargs['valid_name'] @@ -34,7 +39,8 @@ def _common(cls, node, **kwargs): # convert all negative axis to their true value axes = set([elem if elem >= 0 else x_rank + elem for elem in axes]) - assert all(axis >= 0 and axis < x_rank for axis in axes), "axis out of bounds" + assert all(axis >= 0 and axis < + x_rank for axis in axes), "axis out of bounds" keep_dims = node.attrs.get('keepdims', 1) stripped_axes = [axis for axis in axes if x_shape[axis] is not None] @@ -42,11 +48,15 @@ def _common(cls, node, **kwargs): if not stripped_axes: params = NoOPParameters(valid_name) pout_shape = x_shape.copy() + G.add_edge( + NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) else: if keep_dims: - pout_shape = [dim if idx not in axes else 1 for idx, dim in enumerate(x_shape)] + pout_shape = [dim if idx not in axes else 1 for idx, + dim in enumerate(x_shape)] else: - pout_shape = [dim for idx, dim in enumerate(x_shape) if idx not in axes] + pout_shape = [dim for idx, dim in enumerate( + x_shape) if idx not in axes] # if all(dim is None for dim in pout_shape): # pout_shape.append(1) @@ -54,10 +64,20 @@ def _common(cls, node, **kwargs): # axes that are not defined axes = [ax - sum([1 if dim is None else 0 for dim in x_shape[:ax:]]) for ax in stripped_axes] - params = GlobalPoolingParameters(valid_name, pool_type=reduce_type, axis=tuple(axes), - keep_dims=keep_dims) + if cls.is_constant(x) and constant_operation: + val = constant_operation(cls.get_constant(x), axis=tuple(axes), keepdims=keep_dims) + if val.size < 10: + logger.info("reducing %s to a constant %s", valid_name, val) + else: + logger.info("reducing %s to a constant", valid_name) + params = ConstantInputParameters(valid_name, value=val, dims=Dim.unnamed(val.shape)) + else: + params = GlobalPoolingParameters(valid_name, pool_type=reduce_type, axis=tuple(axes), + keep_dims=keep_dims) - G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) + G.add_edge( + NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(pout_shape)) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim( + pout_shape), x[3] if copy_qtype else None) return params diff --git a/tools/nntool/importer/onnx/handlers/backend/reshape.py b/tools/nntool/importer/onnx/handlers/backend/reshape.py index 3592d1cce..d5f0dda54 100644 --- a/tools/nntool/importer/onnx/handlers/backend/reshape.py +++ b/tools/nntool/importer/onnx/handlers/backend/reshape.py @@ -77,17 +77,17 @@ def _common(cls, node, **kwargs): if input_shape[0] is None and shape[0] == 1: shape = np.array([None]+list(shape[1::])) - if cls.is_constant(inputs[0]): + inp = inputs[0] + if cls.is_constant(inp): # there should be no None in shape since a constant always has known size logger.info("reducing %s to a constant", valid_name) params = ConstantInputParameters( valid_name, - value=cls.get_constant(inputs[0]).reshape(shape), - dims=Dim.unnamed(shape), - constant_store=G.constant_store + value=cls.get_constant(inp).reshape(shape), + dims=Dim.unnamed(shape) ) pshape = ProvisionalDim(shape) - all_nodes[node.output[0]] = (params, 0, pshape) + all_nodes[node.output[0]] = (params, 0, pshape, inp[3]) return params pshape = ProvisionalDim(shape) @@ -95,9 +95,8 @@ def _common(cls, node, **kwargs): old_shape = Dim.unnamed(list(input_shape[input_shape != None])) shape = Dim.unnamed(list(shape[shape != None])) params = ReshapeParameters(valid_name, old_shape=old_shape, shape=shape) - inp = inputs[0] G.add_edge(NNEdge(from_node=inp[0], to_node=params, from_idx=inp[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pshape) + all_nodes[node.output[0]] = (params, 0, pshape, inp[3]) return params diff --git a/tools/nntool/importer/onnx/handlers/backend/resize.py b/tools/nntool/importer/onnx/handlers/backend/resize.py index 158b5718b..f5545d46a 100644 --- a/tools/nntool/importer/onnx/handlers/backend/resize.py +++ b/tools/nntool/importer/onnx/handlers/backend/resize.py @@ -55,8 +55,7 @@ def _common(cls, node, scales, sizes, nearest_mode='round_prefer_ceil', **kwargs sizes.insert(-1, 1) if nearest_mode != 'round_prefer_ceil': - logger.warning( - 'only round_prefer_ceil is supported for nearest mode') + logger.warning(f'{valid_name} - only round_prefer_ceil is supported for nearest mode not {nearest_mode}') if spatial_size != 2 and spatial_size != 1: raise ValueError('resize only supports 4D tensor in NCHW mode or 3D tensor in NCF mode' @@ -68,7 +67,7 @@ def _common(cls, node, scales, sizes, nearest_mode='round_prefer_ceil', **kwargs mode = node.attrs.get('mode', 'nearest') if mode != 'nearest' and mode != 'linear': - raise ValueError('resize only supports nearest and linear modes') + raise ValueError(f'{valid_name} - resize only supports nearest and linear modes not {mode}') params_class = BilinearResizerParameters if mode == 'linear' else NearestNeighborResizerParameters @@ -100,7 +99,7 @@ def _common(cls, node, scales, sizes, nearest_mode='round_prefer_ceil', **kwargs G.add_edge( NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pout_dims) + all_nodes[node.output[0]] = (params, 0, pout_dims, x[3]) return params @classmethod @@ -120,7 +119,7 @@ def common_11_13(cls, node, **kwargs): 'coordinate_transformation_mode', 'half_pixel') if coord_transmode != 'align_corners': logger.warning( - 'only align_corners is supported as coordinate_transformation_mode') + f'only align_corners is supported as coordinate_transformation_mode not {coord_transmode}') scales_inp = inputs[2] scales_shape = scales_inp[2].shape if scales_inp else None diff --git a/tools/nntool/importer/onnx/handlers/backend/rnn.py b/tools/nntool/importer/onnx/handlers/backend/rnn.py index 6002ece4e..0d51005cb 100644 --- a/tools/nntool/importer/onnx/handlers/backend/rnn.py +++ b/tools/nntool/importer/onnx/handlers/backend/rnn.py @@ -64,7 +64,7 @@ def _common(cls, node, **kwargs): del t['r_b'] cls.deep_update(tensors, - cls.get_state(inputs, 5, 'i_state', hidden_size, num_directions)) + cls.get_state(G, inputs, 5, 'i_state', hidden_size, num_directions)) return cls.attach_rnn(G, x, RNNParameters, {}, valid_name, tensors, used_tensors, hidden_size, input_size, diff --git a/tools/nntool/importer/onnx/handlers/backend/rnn_mixin.py b/tools/nntool/importer/onnx/handlers/backend/rnn_mixin.py index 0b7c479b0..2d8ddbd0c 100644 --- a/tools/nntool/importer/onnx/handlers/backend/rnn_mixin.py +++ b/tools/nntool/importer/onnx/handlers/backend/rnn_mixin.py @@ -14,10 +14,11 @@ # along with this program. If not, see . import numpy as np +from numpy.core.fromnumeric import reshape from graph.dim import Dim from graph.types import (ConstantInputParameters, GRUParameters, LSTMParameters, NNEdge) -from graph.types.others import ConcatParameters, TransposeParameters +from graph.types.others import ConcatParameters, ReshapeParameters, SplitParameters, StridedSliceParameters, TransposeParameters from graph.types.rnn import RNNParameters from importer.common.provisional_dim import ProvisionalDim @@ -61,8 +62,36 @@ def combine_biases(cls, tensors, gates, num_directions): del t['r_%s_b' % gate] @classmethod - def get_state(cls, inputs, idx, name, hidden_size, num_directions=1): - state = cls.get_constant(inputs[idx]) if inputs[idx] else np.zeros((num_directions, hidden_size)) + def get_state(cls, G, inputs, idx, name, hidden_size, num_directions=1): + if not inputs[idx]: + state = np.zeros((num_directions, hidden_size)) + elif cls.is_constant(inputs[idx]): + state = cls.get_constant(inputs[idx]) + else: + state_inp = inputs[idx] + if num_directions == 2: + act_slices = (((0, 1, 1), (0, hidden_size, 1)), + ((1, 2, 1), (0, hidden_size, 1))) + out_shapes = ((1, hidden_size), (1, hidden_size)) + split = SplitParameters(G.unique_name(f'{name}_split'), act_slices=act_slices, + out_shapes=out_shapes, axis=0) + G.add_edge( + NNEdge(from_node=state_inp[0], to_node=split, from_idx=state_inp[1])) + return { + 'forward': {name: (split, 0)}, + 'backward': {name: (split, 0)}, + } + else: + reshape = ReshapeParameters(G.unique_name(f'{name}_reshape'), old_shape=(1, hidden_size), + shape=(hidden_size,)) + G.add_edge( + NNEdge(from_node=state_inp[0], to_node=reshape, from_idx=state_inp[1])) + return { + 'forward': {name: (reshape, 0)}, + } + + state = cls.get_constant(inputs[idx]) if inputs[idx] else np.zeros( + (num_directions, hidden_size)) return { 'forward' if dir == 0 else 'backward': {name: dir_arr.reshape((hidden_size,))} @@ -75,8 +104,7 @@ def attach_rnn(G, x, rnn_params_class, extra_args, valid_name, tensors, all_nodes, node, seq_len, num_directions): # check if both outputs are used used_outputs = tuple(outp in used_tensors for outp in node.output) - if len(used_outputs) == 3 and used_outputs[2]: - raise ValueError("outputting the cell state of an LSTM is not supported") + output_cell = len(used_outputs) == 3 and used_outputs[2] # if the full state output is used we need to output all cells n_output_cells = seq_len if used_outputs[0] else 1 # if both outputs are used then @@ -86,18 +114,27 @@ def attach_rnn(G, x, rnn_params_class, extra_args, valid_name, tensors, rnn_params = rnn_params_class(node_name, n_cells=seq_len, n_states=hidden_size, n_inputs=input_size, n_input_cells=seq_len, n_output_cells=n_output_cells, - output_directions=True, revert=(i==1), **extra_args) + output_directions=True, revert=(i == 1), **extra_args) + if output_cell: + rnn_params.lstm_output_c_state = True both_dir.append(rnn_params) t = tensors['forward' if i == 0 else 'backward'] for idx, name in enumerate(rnn_params.INPUT_NAMES): if name == 'input': - G.add_edge(NNEdge(from_node=x[0], to_node=rnn_params, from_idx=x[1], to_idx=0)) + G.add_edge( + NNEdge(from_node=x[0], to_node=rnn_params, from_idx=x[1], to_idx=0)) continue if name not in t: continue - cparams = ConstantInputParameters("%s_%s" % ( - node_name, name), value=t[name], dims=Dim.unnamed(t[name].shape)) - G.add_edge(NNEdge(from_node=cparams, to_node=rnn_params, from_idx=0, to_idx=idx)) + if isinstance(t[name], tuple): + cparams = t[name][0] + cidx = t[name][1] + else: + cparams = ConstantInputParameters("%s_%s" % ( + node_name, name), value=t[name], dims=Dim.unnamed(t[name].shape)) + cidx = 0 + G.add_edge(NNEdge(from_node=cparams, + to_node=rnn_params, from_idx=cidx, to_idx=idx)) # TODO - Move to the quantizer (and make a qtype attr) since this depends on the kernel used # Link the state weights to the input weights @@ -112,7 +149,8 @@ def attach_rnn(G, x, rnn_params_class, extra_args, valid_name, tensors, for state_node_name in ['i_state', 'c_state', 'h_state']: if state_node_name not in rnn_params.INPUT_NAMES: continue - state_node = in_nodes[rnn_params.INPUT_NAMES.index(state_node_name)] + state_node = in_nodes[rnn_params.INPUT_NAMES.index( + state_node_name)] # set by default as allocated state_node.at_options.allocate = True state_node.is_constant = False @@ -124,31 +162,49 @@ def attach_rnn(G, x, rnn_params_class, extra_args, valid_name, tensors, out_idx = 0 if used_outputs[0] else 1 if num_directions > 1: # if it is bidir then we need a concat - concat_params = ConcatParameters(valid_name + '_bidir', axis=0) + concat_params = ConcatParameters(G.unique_name(valid_name + '_bidir'), axis=0) + if output_cell: + output_cell = (ConcatParameters(G.unique_name(valid_name + '_cstate_bidir'), axis=0), 0) + for idx in range(num_directions): G.add_edge(NNEdge(from_node=both_dir[idx], to_node=concat_params, from_idx=out_idx, to_idx=idx)) + if output_cell: + G.add_edge(NNEdge(from_node=both_dir[idx], + to_node=output_cell[0], + from_idx=2, to_idx=idx)) out_edge = (concat_params, 0) else: out_edge = (both_dir[0], out_idx) - + if output_cell: + output_cell = (both_dir[0], 1) if out_idx == 0: # if output 0 is used then the expected dims are (steps, dirs, hidden_size) - trans_params = TransposeParameters(valid_name + '_trans', transpose=(1, 0, 2)) + trans_params = TransposeParameters( + G.unique_name(f'{valid_name}_trans'), transpose=(1, 0, 2)) G.add_edge(NNEdge(out_edge[0], trans_params, from_idx=out_edge[1])) out_edge = (trans_params, 0) - if used_outputs[0] and used_outputs[1]: - raise ValueError('recurrent network with both last output and all states output is not supported') - if used_outputs[0]: all_nodes[node.output[0]] = (out_edge[0], out_edge[1], ProvisionalDim( - (n_output_cells, num_directions, None, hidden_size))) + (n_output_cells, num_directions, None, hidden_size)), None) out_edge[0].meta['onnx_output'] = [node.output[0]] + if used_outputs[1]: + sslice = StridedSliceParameters( + G.unique_name(f'{valid_name}_split'), + act_slice=((n_output_cells - 1, n_output_cells, 1), (0, num_directions, 1), (0, hidden_size, 1)), out_shape=(num_directions, hidden_size)) + G.add_edge(NNEdge(from_node=out_edge[0], from_idx=out_edge[1], to_node=sslice)) + all_nodes[node.output[1]] = (sslice, 0, ProvisionalDim( + (num_directions, None, hidden_size)), None) else: - all_nodes[node.output[1]] = (out_edge[0], out_edge[1], ProvisionalDim((num_directions, None, hidden_size))) + all_nodes[node.output[1]] = (out_edge[0], out_edge[1], ProvisionalDim( + (num_directions, None, hidden_size)), None) out_edge[0].meta['onnx_output'] = [node.output[1]] + if output_cell: + all_nodes[node.output[2]] = (output_cell[0], output_cell[1], ProvisionalDim( + (num_directions, None, hidden_size)), None) + return out_edge[0] diff --git a/tools/nntool/importer/onnx/handlers/backend/round.py b/tools/nntool/importer/onnx/handlers/backend/round.py new file mode 100644 index 000000000..c8a455fc6 --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/round.py @@ -0,0 +1,37 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np +from graph.types.others import UnaryOpParameters + +from ..backend_handler import BackendHandler +from ..handler import onnx_op +from .math_mixin import BasicMathMixin + + +@onnx_op("Round") +class Round(BasicMathMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + return super(Round, cls)._common(node, + params_class=UnaryOpParameters, + params_args={'op_type': 'round'}, + constant_operation=np.round, + **kwargs) + + @classmethod + def version_11(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/shape.py b/tools/nntool/importer/onnx/handlers/backend/shape.py index abc34dced..13a5fe10f 100644 --- a/tools/nntool/importer/onnx/handlers/backend/shape.py +++ b/tools/nntool/importer/onnx/handlers/backend/shape.py @@ -36,10 +36,9 @@ def _common(cls, node, **kwargs): # this process can leave dangling nodes without outputs # we clean them after we have finished loading x_shape = [dim if dim else 1 for dim in x[2].shape] - params = ConstantInputParameters(valid_name, value=np.array(x_shape), - constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, value=np.array(x_shape)) logger.info("reducing %s to a constant %s", valid_name, x_shape) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim([len(x_shape)])) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim([len(x_shape)]), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/sigmoid.py b/tools/nntool/importer/onnx/handlers/backend/sigmoid.py index 9f80e00f7..a10835adc 100644 --- a/tools/nntool/importer/onnx/handlers/backend/sigmoid.py +++ b/tools/nntool/importer/onnx/handlers/backend/sigmoid.py @@ -25,7 +25,7 @@ class Sigmoid(BasicMathMixin, BackendHandler): @classmethod def _common(cls, node, **kwargs): - params_class = SigmoidActivationParameters if kwargs['opts'].get('use_lut_sigmoid') else HSigmoidActivationParameters + params_class = HSigmoidActivationParameters if kwargs['opts'].get('use_hard_sigmoid') else SigmoidActivationParameters return super(Sigmoid, cls)._common(node, params_class=params_class, constant_operation=lambda x: 1/(1 + np.exp(-x)), diff --git a/tools/nntool/importer/onnx/handlers/backend/size.py b/tools/nntool/importer/onnx/handlers/backend/size.py index 6504ffe88..4385c63ac 100644 --- a/tools/nntool/importer/onnx/handlers/backend/size.py +++ b/tools/nntool/importer/onnx/handlers/backend/size.py @@ -42,8 +42,8 @@ def _common(cls, node, **kwargs): logger.info("reducing %s to a constant", valid_name) x_shape = [dim if dim else 1 for dim in x[2].shape] sz=np.array(prod(x_shape)) - params = ConstantInputParameters(valid_name, value=sz, constant_store=G.constant_store) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim([])) + params = ConstantInputParameters(valid_name, value=sz) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim([]), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/slice.py b/tools/nntool/importer/onnx/handlers/backend/slice.py index 8cb02aeae..f7b85813d 100644 --- a/tools/nntool/importer/onnx/handlers/backend/slice.py +++ b/tools/nntool/importer/onnx/handlers/backend/slice.py @@ -13,7 +13,9 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import math import sys + import numpy as np from graph.dim import Dim from graph.types import ConstantInputParameters, NNEdge, StridedSliceParameters @@ -58,9 +60,9 @@ def _common(cls, node, starts, ends, axes, steps, **kwargs): # this makes it compatible with the numpy slice p_slices.append((begin, -sys.maxsize if end == -1 else end, step)) if step < 0: - p_shape.append((begin - end)//-step) + p_shape.append(math.ceil((begin - end)/-step)) else: - p_shape.append((end - begin)//step) + p_shape.append(math.ceil((end - begin)/step)) except ValueError: p_slices.append((0, dim, 1)) @@ -77,10 +79,10 @@ def _common(cls, node, starts, ends, axes, steps, **kwargs): logger.info("reducing %s to a constant %s", valid_name, x_val) else: logger.info("reducing %s to a constant", valid_name) - params = ConstantInputParameters(valid_name, dims=Dim.unnamed(x_val.shape), value=x_val, constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, dims=Dim.unnamed(x_val.shape), value=x_val) else: G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(p_shape)) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(p_shape), None) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/softmax.py b/tools/nntool/importer/onnx/handlers/backend/softmax.py index 0f9845597..ea3e0e386 100644 --- a/tools/nntool/importer/onnx/handlers/backend/softmax.py +++ b/tools/nntool/importer/onnx/handlers/backend/softmax.py @@ -61,7 +61,7 @@ def _common1_11(cls, node, **kwargs): old_shape=new_shape, shape=old_shape) G.add_edge(NNEdge(from_node=softmax, to_node=reshape_2)) - all_nodes[node.output[0]] = (reshape_2, 0, ProvisionalDim(x_shape)) + all_nodes[node.output[0]] = (reshape_2, 0, ProvisionalDim(x_shape), None) return softmax @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/split.py b/tools/nntool/importer/onnx/handlers/backend/split.py index 5d1c4f7ef..d3197dc46 100644 --- a/tools/nntool/importer/onnx/handlers/backend/split.py +++ b/tools/nntool/importer/onnx/handlers/backend/split.py @@ -15,9 +15,7 @@ # along with this program. If not, see . import numpy as np -from graph.types.base import NNEdge -from graph.types.input_output import ConstantInputParameters -from graph.types.others import SplitParameters +from graph.types import ConstantInputParameters, NNEdge, SplitParameters from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim from importer.onnx.common import logger @@ -90,13 +88,13 @@ def _common(cls, node, **kwargs): logger.info("reducing %s to %s constant(s)", valid_name, len(out_shapes)) values = params.numpy_split(cls.get_constant(x)) for idx, out_pshape in enumerate(out_pshapes): - cparams = ConstantInputParameters(valid_name, value=values[idx], constant_store=G.constant_store) - all_nodes[node.output[idx]] = (cparams, 0, out_pshape) + cparams = ConstantInputParameters(valid_name, value=values[idx]) + all_nodes[node.output[idx]] = (cparams, 0, out_pshape, x[3]) return None G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) for idx, out_pshape in enumerate(out_pshapes): - all_nodes[node.output[idx]] = (params, idx, out_pshape) + all_nodes[node.output[idx]] = (params, idx, out_pshape, x[3]) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/squeeze.py b/tools/nntool/importer/onnx/handlers/backend/squeeze.py index 9eadc0232..e2082ce9e 100644 --- a/tools/nntool/importer/onnx/handlers/backend/squeeze.py +++ b/tools/nntool/importer/onnx/handlers/backend/squeeze.py @@ -14,12 +14,12 @@ # along with this program. If not, see . from graph.types import ConstantInputParameters, NNEdge, ReshapeParameters +from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim from importer.onnx.common import logger from ..backend_handler import BackendHandler from ..handler import onnx_op -from importer.common.constant_mixin import ConstantMixin @onnx_op("Squeeze") @@ -35,7 +35,7 @@ def _common(cls, node, **kwargs): x_shape = x[2].shape axes = cls._resolve_negative_ranks(kwargs['axes'], len(x_shape)) if axes: - if any(x_shape[axis] != 1 for axis in axes): + if any(x_shape[axis] != 1 and x_shape[axis] is not None for axis in axes): raise ValueError("axis parameter in node %s is invalid %s" % (valid_name, axes)) new_shape = [dim for idx, dim in enumerate(x_shape) if idx not in axes] else: @@ -45,14 +45,13 @@ def _common(cls, node, **kwargs): if cls.is_constant(x): logger.info("reducing %s to a constant", valid_name) x_val = cls.get_constant(x) - params = ConstantInputParameters(valid_name, value=x_val.reshape(new_shape), - constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, value=x_val.reshape(new_shape)) else: old_shape = cls._get_real_dim(x_shape) shape = cls._get_real_dim(new_shape) params = ReshapeParameters(valid_name, old_shape=old_shape, shape=shape) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pshape) + all_nodes[node.output[0]] = (params, 0, pshape, x[3]) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/tanh.py b/tools/nntool/importer/onnx/handlers/backend/tanh.py index 4b715a336..240a1698f 100644 --- a/tools/nntool/importer/onnx/handlers/backend/tanh.py +++ b/tools/nntool/importer/onnx/handlers/backend/tanh.py @@ -14,7 +14,7 @@ # along with this program. If not, see . import numpy as np -from graph.types.activations import HTanHActivationParameters +from graph.types.activations import HTanHActivationParameters, TanHActivationParameters from ..backend_handler import BackendHandler from ..handler import onnx_op from .math_mixin import BasicMathMixin @@ -25,8 +25,9 @@ class Tanh(BasicMathMixin, BackendHandler): @classmethod def _common(cls, node, **kwargs): + params_class = HTanHActivationParameters if kwargs['opts'].get('use_hard_tanh') else TanHActivationParameters return super(Tanh, cls)._common(node, - params_class=HTanHActivationParameters, + params_class=params_class, constant_operation=np.tanh, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/tile.py b/tools/nntool/importer/onnx/handlers/backend/tile.py new file mode 100644 index 000000000..ff26a2c41 --- /dev/null +++ b/tools/nntool/importer/onnx/handlers/backend/tile.py @@ -0,0 +1,66 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import operator +from functools import reduce + +import numpy as np +from graph.dim import Dim +from graph.types import ConstantInputParameters, NNEdge, ReshapeParameters +from importer.common.constant_mixin import ConstantMixin +from importer.common.provisional_dim import ProvisionalDim +from importer.onnx.common import logger + +from ..backend_handler import BackendHandler +from ..handler import onnx_op + + +def prod(iterable): + return reduce(operator.mul, iterable, 1) + +@onnx_op("Tile") +class Tile(ConstantMixin, BackendHandler): + + @classmethod + def _common(cls, node, **kwargs): + all_nodes = kwargs['all_nodes'] + G = kwargs['G'] + valid_name = kwargs['valid_name'] + inputs = [all_nodes[inp] for inp in node.input] + if not all(cls.is_constant(inp) for inp in inputs): + raise NotImplementedError("Tile is only implemented on constants") + + inp_vals = [cls.get_constant(inp) for inp in inputs] + out_val = np.tile(inp_vals[0], inp_vals[1]) + logger.info("reducing %s to a constant", valid_name) + params = ConstantInputParameters( + valid_name, + value=out_val + ) + pshape = ProvisionalDim(out_val.shape) + all_nodes[node.output[0]] = (params, 0, pshape, inputs[0][3]) + return params + + @classmethod + def version_1(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_6(cls, node, **kwargs): + return cls._common(node, **kwargs) + + @classmethod + def version_13(cls, node, **kwargs): + return cls._common(node, **kwargs) diff --git a/tools/nntool/importer/onnx/handlers/backend/transpose.py b/tools/nntool/importer/onnx/handlers/backend/transpose.py index 3fb8ea013..036ab664f 100644 --- a/tools/nntool/importer/onnx/handlers/backend/transpose.py +++ b/tools/nntool/importer/onnx/handlers/backend/transpose.py @@ -52,8 +52,7 @@ def _common(cls, node, **kwargs): logger.info("reducing %s to a constant %s", valid_name, x_val) else: logger.info("reducing %s to a constant", valid_name) - params = ConstantInputParameters(valid_name, dims=Dim.unnamed(x_val.shape), value=x_val, - constant_store=G.constant_store) + params = ConstantInputParameters(valid_name, dims=Dim.unnamed(x_val.shape), value=x_val) else: transpose = [new_axes[axis] for axis in transpose if x_shape[axis] is not None] if transpose == sorted(transpose): @@ -61,7 +60,7 @@ def _common(cls, node, **kwargs): else: params = TransposeParameters(valid_name, transpose=transpose) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, ProvisionalDim(pout_shape)) + all_nodes[node.output[0]] = (params, 0, ProvisionalDim(pout_shape), x[3]) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend/unsqueeze.py b/tools/nntool/importer/onnx/handlers/backend/unsqueeze.py index 987b800fb..3314062eb 100644 --- a/tools/nntool/importer/onnx/handlers/backend/unsqueeze.py +++ b/tools/nntool/importer/onnx/handlers/backend/unsqueeze.py @@ -33,37 +33,28 @@ def _common(cls, node, **kwargs): inputs = [all_nodes[inp] for inp in node.input] x = inputs[0] x_shape = x[2].shape - axes = cls._resolve_negative_ranks(kwargs['axes'], len(x_shape)) - if len(x_shape) == 0: - assert len(axes) == 1 and axes[0] == 0 - new_shape = [1] - else: - new_shape = [] - old_shape = x_shape.copy() - axes_copy = axes.copy() - idx = 0 - while axes_copy or old_shape: - if idx in axes_copy: - axes_copy.remove(idx) - new_shape.append(1) - else: - if not old_shape: - raise ValueError(f'error in unsqueeze inshape {x_shape} axes {axes}') - new_shape.append(old_shape.pop(0)) - idx += 1 + out_rank = len(x_shape) + len(kwargs['axes']) + axes = cls._resolve_negative_ranks(kwargs['axes'], out_rank) + + old_shape = x_shape.copy() + new_shape = [1 if new_idx in axes else old_shape.pop(0) + for new_idx in range(out_rank)] pshape = ProvisionalDim(new_shape) if cls.is_constant(x): x_val = cls.get_constant(x) - logger.info(f"reducing {valid_name} to a constant {cls.print_small(x_val)}") - params = ConstantInputParameters(valid_name, value=x_val.reshape(new_shape), - constant_store=G.constant_store) + logger.info( + f"reducing {valid_name} to a constant {cls.print_small(x_val)}") + params = ConstantInputParameters( + valid_name, value=x_val.reshape(new_shape)) else: old_shape = cls._get_real_dim(x_shape) shape = cls._get_real_dim(new_shape) - params = ReshapeParameters(valid_name, old_shape=old_shape, shape=shape) - G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) - all_nodes[node.output[0]] = (params, 0, pshape) + params = ReshapeParameters( + valid_name, old_shape=old_shape, shape=shape) + G.add_edge( + NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) + all_nodes[node.output[0]] = (params, 0, pshape, x[3]) return params @classmethod diff --git a/tools/nntool/importer/onnx/handlers/backend_handler.py b/tools/nntool/importer/onnx/handlers/backend_handler.py index 6d035048a..f46f83263 100644 --- a/tools/nntool/importer/onnx/handlers/backend_handler.py +++ b/tools/nntool/importer/onnx/handlers/backend_handler.py @@ -15,10 +15,6 @@ # along with this program. If not, see . -import numpy as np -from graph.types import (ConstantInputParameters, ReshapeParameters, - TransposeParameters) -from graph.types.input_output import InputParameters from .handler import Handler diff --git a/tools/nntool/importer/onnx/handlers/handler.py b/tools/nntool/importer/onnx/handlers/handler.py index 1f8e80e46..21953cfe9 100644 --- a/tools/nntool/importer/onnx/handlers/handler.py +++ b/tools/nntool/importer/onnx/handlers/handler.py @@ -36,6 +36,7 @@ class Handler(object): SINCE_VERSION = 0 PARTIAL_SUPPORT = False PS_DESCRIPTION = '' + CONSTANT_ONLY = False @classmethod def check_cls(cls): @@ -91,6 +92,10 @@ def partial_support(is_partial): def ps_description(psd): return Handler.property_register("PS_DESCRIPTION", psd) + @staticmethod + def constant_only(is_partial): + return Handler.property_register("CONSTANT_ONLY", is_partial) + @staticmethod def property_register(name, value): @@ -106,4 +111,5 @@ def deco(cls): onnx_op = Handler.onnx_op partial_support = Handler.partial_support ps_description = Handler.ps_description +constant_only = Handler.constant_only property_register = Handler.property_register diff --git a/tools/nntool/importer/onnx/onnx.py b/tools/nntool/importer/onnx/onnx.py index 1d2174e8e..ad083709a 100644 --- a/tools/nntool/importer/onnx/onnx.py +++ b/tools/nntool/importer/onnx/onnx.py @@ -15,18 +15,25 @@ # along with this program. If not, see . import re +from typing import Union -from graph.constant_store import ConstantStore +import onnx +from onnx import defs, numpy_helper, shape_inference +from onnx.helper import make_opsetid + +import numpy as np from graph.dim import Dim from graph.matches.matchers.duplicate_constants import MatchDuplicateConstants from graph.nngraph import NNGraph from graph.types import ConstantInputParameters from graph.types.base import NNEdge from importer.common.clean_dangling_nodes import clean_dangling_nodes - -import onnx -from onnx import defs, numpy_helper, shape_inference -from onnx.helper import make_opsetid +from importer.common.propagate_qrecs import propagate_qrecs +from quantization.new_qrec import QRec +from quantization.qtype import QType +from quantization.quantization_set import QuantizationSet +from quantization.quantizer.new_quantizer import NewQuantizer +from utils.node_id import NodeId from ..common.provisional_dim import ProvisionalDim from ..importer_base import ImporterBase @@ -41,12 +48,20 @@ class OnnxImporter(ImporterBase): def __init__(self, *args, **kwargs) -> None: super(OnnxImporter, self).__init__(*args, **kwargs) self._name_cache = None + self._handlers = None - def create_graph(self, filename, opts): + def create_graph(self, filename, opts) -> NNGraph: opts = self.get_opts(opts) model = onnx.load(filename) + # onnx.checker.check_model(model) - # model_with_shapes = shape_inference.infer_shapes(model) + try: + model = shape_inference.infer_shapes(model) + except RuntimeError as ex: + msg = "\n".join(f"> {line}" for line in str( + ex).split("\n") if line) + logger.warning('shape inference failed on onnx graph. ' + f'This may not affect import.\nONNX runtime error was:\n{msg}') self._name_cache = {} if model.ir_version < 3: @@ -54,29 +69,96 @@ def create_graph(self, filename, opts): else: opset_import = model.opset_import G = NNGraph(filename=filename, - name=opts.get('name'), - constant_store=ConstantStore()) - G = self._import_onnx_model(G, model.graph, opset_import, opts) + name=opts.get('name')) + G, qrecs = self._import_onnx_model(G, model.graph, opset_import, opts) + G.add_dimensions(quiet=True) + if qrecs: + propagate_qrecs(G, qrecs) + qset = QuantizationSet() + qset.update(qrecs) + qset.scheme_priority = ['SQ8'] + qset.schemes_present = {'SQ8'} + G.quantization = qset + try: + quantizer = NewQuantizer(G) + quantizer.quantize() + except ValueError as ex: + logger.warning( + f'unable to import quantization from FakeQuantize nodes correctly - {ex}') + clean_dangling_nodes(G) MatchDuplicateConstants().match(G) return G + def _update_qrecs(self, G, qrecs, all_nodes, ranges_dict): + for node, idx, _, qtype in all_nodes.values(): + if qtype is None and node.name not in ranges_dict.keys(): + continue + if node.name not in G: + continue + nid = NodeId(node) + qrec = qrecs.get(nid) + if not qrec: + in_qs = [None] * G.num_in_edges(node) + out_qs = [None] * len(G.indexed_out_edges(node)) + qrec = QRec.scaled(in_qs=in_qs, out_qs=out_qs) + qrecs[nid] = qrec + + if node.name in ranges_dict.keys(): + out_min, out_max = ranges_dict[node.name]["range"] + dtype = ranges_dict[node.name].get("dtype", np.int8) + bits = ranges_dict[node.name].get("n_bits", 8) + channel = ranges_dict[node.name].get("per_channel", None) + qtype = QType.from_min_max_sq( + out_min, out_max, dtype=dtype, bits=bits, quantized_dimension=channel) + qrec.out_qs[idx] = qtype + def _import_onnx_model(self, G, graph, opset, opts): - handlers = self._get_handlers(opset) + self._handlers = self._get_handlers(opset) all_nodes = {} constants = self._get_initializers(G, graph.initializer) all_nodes.update(constants) inputs = self._get_input_nodes(G, graph.input, constants, batch_hint=opts.get('batch_hint', None), - substitutions=opts.get('substitutions', None)) + substitutions=opts.get( + 'substitutions', None), + fixed_inputs=opts.get( + 'fixed_inputs', {}), + input_shapes=opts.get('input_shapes', {})) all_nodes.update(inputs) - outputs = self._get_output_nodes(G, graph.output, substitutions=opts.get('substitutions', None)) - self._import_nodes(G, graph, handlers, all_nodes, outputs, opts) - return G + qrecs = {} + outputs = self._get_output_nodes( + G, graph.output, substitutions=opts.get('substitutions', None)) + shapes = {elem.name: elem.type for elem in graph.value_info} + self._import_nodes( + G, graph, self._handlers, all_nodes, outputs, + opts=opts, qrecs=qrecs, shapes=shapes) + self._update_qrecs(G, qrecs, all_nodes, opts.get('ranges_dict', {})) + return G, qrecs + + def import_subgraph(self, G, graph, opts, all_nodes=None): + if all_nodes is None: + all_nodes = {} + constants = self._get_initializers(G, graph.initializer) + all_nodes.update(constants) + inputs = self._get_input_nodes(G, graph.input, constants, + batch_hint=opts.get('batch_hint', None), + substitutions=opts.get( + 'substitutions', None), + set_name=True) + all_nodes.update(inputs) + qrecs = {} + outputs = self._get_output_nodes( + G, graph.output, substitutions=opts.get('substitutions', None), set_name=True) + self._import_nodes( + G, graph, self._handlers, all_nodes, outputs, + opts=opts, qrecs=qrecs) + self._update_qrecs(G, qrecs, all_nodes, {}) + return G, qrecs @staticmethod def _validate_name(name): - return re.sub('\W|^(?=\d)','_', name) + return re.sub(r'\W|^(?=\d)', '_', name) @staticmethod def _get_dim_from_shape(onnx_shape): @@ -84,7 +166,8 @@ def _get_dim_from_shape(onnx_shape): if (d.dim_value > 0 and d.dim_param == "")]) def _get_handlers(self, opset): - opset = opset or [make_opsetid(defs.ONNX_DOMAIN, defs.onnx_opset_version())] + opset = opset or [make_opsetid( + defs.ONNX_DOMAIN, defs.onnx_opset_version())] opset_dict = dict([(o.domain, o.version) for o in opset]) return get_all_backend_handlers(opset_dict) @@ -102,19 +185,59 @@ def _get_initializers(self, G, initializer): f'constant_{self._validate_name(init.name)}', dims=Dim.unnamed(init.dims or [1]), value=self._get_numpy_array(init), - constant_store=G.constant_store), + imported_dtype=self.get_onnx_tensor_dtype(init)), 0, - ProvisionalDim(init.dims) + ProvisionalDim(init.dims), + None ) for init in initializer} - def _get_input_nodes(self, G, inputs, constants, batch_hint=None, substitutions=None): - prov_dims = { - idx: ProvisionalDim.from_onnx_shape(input.type.tensor_type.shape, check_for_batch=0, substitutions=substitutions) - for idx, input in enumerate(inputs) if input.name not in constants - } + @staticmethod + def get_onnx_tensor_dtype(onnx_tensor: Union[onnx.ValueInfoProto, onnx.TensorProto]) -> np.dtype: + if isinstance(onnx_tensor, onnx.TensorProto): + onnx_type = onnx_tensor.data_type + else: + onnx_type = onnx_tensor.type.tensor_type.elem_type + if onnx_type in onnx.mapping.TENSOR_TYPE_TO_NP_TYPE: + return onnx.mapping.TENSOR_TYPE_TO_NP_TYPE[onnx_type] + return None + + def _get_input_nodes(self, G, inputs, constants, batch_hint=None, + substitutions=None, set_name=False, fixed_inputs=None, input_shapes=None): + if fixed_inputs is None: + fixed_inputs = {} + if input_shapes is None: + input_shapes = {} + prov_dims = {} + res = {} + for inp_idx, inp in enumerate(inputs): + if inp.name in fixed_inputs: + val = fixed_inputs[inp.name] + res[inp.name] = ( + ConstantInputParameters( + f'constant_{self._validate_name(inp.name)}', + dims=Dim.unnamed(val.shape), + value=val, + imported_dtype=val.dtype), + 0, + ProvisionalDim(val.shape), + None + ) + continue + + tshape = ProvisionalDim.from_onnx_shape( + inp.type.tensor_type.shape, check_for_batch=0, substitutions=substitutions).shape + if inp.name in input_shapes: + if len(tshape) != len(input_shapes[inp.name]): + raise ValueError(f'attempt to override shape for {inp.name} failed. Input shape is {tshape}. ' + f'Override shape is {input_shapes[inp.name]}') + tshape = [t1 if t2 is None else t2 for t1, + t2 in zip(tshape, input_shapes[inp.name])] + prov_dims[inp_idx] = ProvisionalDim(tshape) + if batch_hint is None and any(len(pshape.shape) >= 4 and pshape.shape[0] != 1 for pshape in prov_dims.values()): - logger.warning("unable to determine batch dimension. if the graph fails to import properly set it to 1 or a variable.") + logger.warning( + "unable to determine batch dimension. if the graph fails to import properly set it to 1 or a variable.") batch_hint = 0 if batch_hint is not None: @@ -127,23 +250,29 @@ def _get_input_nodes(self, G, inputs, constants, batch_hint=None, substitutions= else None) for idx, dim in prov_dims.items() } - return { - input.name: ( + res.update({ + inp.name: ( G.add_input(Dim.unnamed(prov_dims[idx].known_shape).apply_naming_hints(hints[idx]), - in_dim_hint=[hints[idx]] if hints[idx] else None, - out_dim_hint=[hints[idx]] if hints[idx] else None), + in_dims_hint=[hints[idx]] if hints[idx] else None, + out_dims_hint=[hints[idx]] if hints[idx] else None, + imported_dtype=self.get_onnx_tensor_dtype(inp), + name=inp.name if set_name else None), 0, - prov_dims[idx] + prov_dims[idx], + None ) - for idx, input in enumerate(inputs) if input.name not in constants - } + for idx, inp in enumerate(inputs) if inp.name not in constants and inp.name not in fixed_inputs + }) + return res - def _get_output_nodes(self, G, outputs, substitutions=None): + def _get_output_nodes(self, G, outputs, substitutions=None, set_name=False): return { output.name: ( - G.add_output(), + G.add_output(name=output.name if set_name else None), 0, - ProvisionalDim.from_onnx_shape(output.type.tensor_type.shape, substitutions=substitutions) + ProvisionalDim.from_onnx_shape( + output.type.tensor_type.shape, substitutions=substitutions), + None ) for output in outputs} @@ -188,22 +317,47 @@ def _node_name(self, node): # nodes.extend(self._walk_nodes(in_name, nodes_by_input, seen)) # return nodes - def _import_nodes(self, G, graph, handlers, all_nodes, outputs, opts): + def _import_nodes(self, G, graph, handlers, all_nodes, outputs, **kwargs): used_tensors = set(all_nodes.keys()) | set(outputs.keys()) | set.union(*(set(node.input) for node in graph.node)) used_tensors.discard('') vars_dict = {} + banned_inputs = set() for node in graph.node: + if any(inp in banned_inputs for inp in node.input): + logger.warning( + f'{node.name} has an input from a node that was not imported - skipping') + banned_inputs.update(node.output) + continue handler = handlers[node.domain].get( node.op_type, None) if node.domain in handlers else None - if not handler: + if not handler or (handler.CONSTANT_ONLY and + not all(isinstance(all_nodes[inp_name][0], ConstantInputParameters) + for inp_name in node.input)): handler = handlers['__extensions'].get(node.op_type, None) if not handler: - raise ValueError(f"no handler found for '{node.op_type}' domain '{node.domain}'") + logger.warning( + f'{node.name} uses ONNX operator "{node.op_type}" domain ' + f'"{node.domain}" which is not currently supported') + logger.warning( + f"{node.name} - creating outputs at this node's inputs") + for inp_name in node.input: + if inp_name not in all_nodes: + continue + producer = all_nodes[inp_name] + if isinstance(producer[0], ConstantInputParameters): + continue + output = G.add_output(name=G.unique_name( + f'Input_{inp_name}_to_{node.name}')) + G.add_edge(NNEdge(from_node=producer[0], + to_node=output, + from_idx=producer[1])) + banned_inputs.update(node.output) + continue params = handler.handle(OnnxNode(node), all_nodes=all_nodes, vars_dict=vars_dict, - G=G, valid_name=self._node_name(node), opts=opts, - used_tensors=used_tensors) + G=G, valid_name=self._node_name(node), + used_tensors=used_tensors, importer=self, **kwargs) if params is None: continue # some handlers set the meta information @@ -219,3 +373,8 @@ def _import_nodes(self, G, graph, handlers, all_nodes, outputs, opts): to_node=output[0], from_idx=producer[1], to_idx=output[1])) + banned_outputs = banned_inputs.intersection(set(outputs)) + for output_name in banned_outputs: + output_node = outputs[output_name][0] + logger.warning(f'removing unused output {output_node.name}') + G.remove(output_node) diff --git a/tools/nntool/importer/tflite2/handlers/backend/concatenation.py b/tools/nntool/importer/tflite2/handlers/backend/concatenation.py index 79b89a8ad..8bea05cd9 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/concatenation.py +++ b/tools/nntool/importer/tflite2/handlers/backend/concatenation.py @@ -45,8 +45,7 @@ def _maybe_insert_reshape(cls, G, inp, inp_shape, pout_shape): if cls.is_constant(inp): val = np.reshape(cls.get_constant(inp), new_shape) params = ConstantInputParameters(G.unique_name(inp[0].name), value=val, - dims=Dim.unnamed(val.shape), - constant_store=G.constant_store) + dims=Dim.unnamed(val.shape)) else: params = ReshapeParameters(G.unique_name(f'{inp[0].name}_reshape'), old_shape=old_shape, shape=new_shape) G.add_edge(NNEdge(from_node=inp[0], to_node=params, from_idx=inp[1])) @@ -83,7 +82,7 @@ def red_func(x, y): # cls.remove_none_from_constants(inputs, pout_shape) LOG.info("reducing %s to a constant", node.name) value = np.concatenate([cls.get_constant(inp) for inp in inputs], axis=axis) - params = ConstantInputParameters(node.name, value=value, constant_store=G.constant_store) + params = ConstantInputParameters(node.name, value=value) else: axis -= sum(1 if dim is None else 0 for dim in pout_shape[:axis:]) params = ConcatParameters(node.name, axis=axis, axis_hint=None) diff --git a/tools/nntool/importer/tflite2/handlers/backend/conv_2d.py b/tools/nntool/importer/tflite2/handlers/backend/conv_2d.py index 08db3f38f..459dc3cca 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/conv_2d.py +++ b/tools/nntool/importer/tflite2/handlers/backend/conv_2d.py @@ -81,8 +81,7 @@ def version_1(cls, node: TFLiteNode, **kwargs): has_bias=True, in_dims_hint=[['h', 'w', 'c'], cls.TF_LITE_FILTER_ORDER.copy(), [ 'out_c']], - out_dims_hint=[['h', 'w', 'c']], - constant_store=G.constant_store) + out_dims_hint=[['h', 'w', 'c']]) G.add_edge(NNEdge(from_node=weights_node, to_node=params, to_idx=1)) G.add_edge(NNEdge(from_node=bias_node, to_node=params, to_idx=2)) cls.new_load_filter_parameters( diff --git a/tools/nntool/importer/tflite2/handlers/backend/depthwise_conv_2d.py b/tools/nntool/importer/tflite2/handlers/backend/depthwise_conv_2d.py index a55f050c4..cf811208c 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/depthwise_conv_2d.py +++ b/tools/nntool/importer/tflite2/handlers/backend/depthwise_conv_2d.py @@ -96,8 +96,7 @@ def _common(cls, node: TFLiteNode, **kwargs): has_bias=True, in_dims_hint=[['h', 'w', 'c'], cls.TF_LITE_FILTER_ORDER.copy(), [ 'out_c']], - out_dims_hint=[['h', 'w', 'c']], - constant_store=G.constant_store) + out_dims_hint=[['h', 'w', 'c']]) else: filt_dim.impose_order(cls.TF_LITE_DW_FILTER_ORDER) params = Conv2DParameters(node.name, @@ -113,8 +112,7 @@ def _common(cls, node: TFLiteNode, **kwargs): tf_depthwise=True, in_dims_hint=[['h', 'w', 'c'], cls.TF_LITE_DW_FILTER_ORDER.copy(), [ 'out_c']], - out_dims_hint=[['h', 'w', 'c']], - constant_store=G.constant_store) + out_dims_hint=[['h', 'w', 'c']]) G.add_edge(NNEdge(from_node=weights_node, to_node=params, to_idx=1)) G.add_edge(NNEdge(from_node=bias_node, to_node=params, to_idx=2)) diff --git a/tools/nntool/importer/tflite2/handlers/backend/expand_dims.py b/tools/nntool/importer/tflite2/handlers/backend/expand_dims.py index 51b9c6aae..241cf1b90 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/expand_dims.py +++ b/tools/nntool/importer/tflite2/handlers/backend/expand_dims.py @@ -16,8 +16,7 @@ import numpy as np from graph.dim import Dim -from graph.types import NNEdge, ReshapeParameters -from graph.types.input_output import ConstantInputParameters +from graph.types import ConstantInputParameters, NNEdge, ReshapeParameters from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim from importer.tflite2.common import LOG @@ -52,8 +51,7 @@ def _common(cls, node: TFLiteNode, **kwargs): LOG.info("reducing %s to a constant", node.name) val = np.reshape(cls.get_constant(x), new_shape) params = ConstantInputParameters(node.name, value=val, - dims=Dim.unnamed(val.shape), - constant_store=G.constant_store) + dims=Dim.unnamed(val.shape)) else: pnew_shape = ProvisionalDim(new_shape) old_shape = Dim.unnamed( diff --git a/tools/nntool/importer/tflite2/handlers/backend/fill.py b/tools/nntool/importer/tflite2/handlers/backend/fill.py index 8b751286d..eaf7e2b0d 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/fill.py +++ b/tools/nntool/importer/tflite2/handlers/backend/fill.py @@ -44,8 +44,7 @@ def _common(cls, node: TFLiteNode, **kwargs): params = ConstantInputParameters(node.name, dims=Dim.unnamed(shape), - value=np.full(shape, val), - constant_store=G.constant_store) + value=np.full(shape, val)) all_nodes[node.output[0]] = (params, 0, ProvisionalDim(shape)) return params else: diff --git a/tools/nntool/importer/tflite2/handlers/backend/fully_connected.py b/tools/nntool/importer/tflite2/handlers/backend/fully_connected.py index 15b4d9afa..ebe001ab5 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/fully_connected.py +++ b/tools/nntool/importer/tflite2/handlers/backend/fully_connected.py @@ -13,13 +13,12 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from graph.types.tensor_arithmetic import MatMulTransposedParameters import numpy as np from graph.dim import Dim, FcFilterDim -from graph.types import FcParameters -from graph.types.base import NNEdge -from graph.types.input_output import ConstantInputParameters -from graph.types.others import ReshapeParameters, TransposeParameters -from graph.types.tensor_arithmetic import MatMulOpParameters +from graph.types import (ConstantInputParameters, FcParameters, + MatMulOpParameters, NNEdge, ReshapeParameters, + TransposeParameters) from importer.common.provisional_dim import ProvisionalDim from importer.tflite2.common import check from importer.tflite2.handlers.backend.filter_mixin import FilterMixin @@ -87,22 +86,16 @@ def _common(cls, node, **kwargs): else: link = x - # the batched linear is transpose(weights . transpose(input)) - params = MatMulOpParameters(node.name) + # the batched linear is ([NxM] . [MxK]) + [K] + params = MatMulTransposedParameters(node.name) cls.new_load_filter_parameters(G, params, weights_shape, 0, node.input[0], weights_node, bias_node, node.output[0], opts) - trans1 = TransposeParameters(G.unique_name(f'{node.name}_tin1'), transpose=(1, 0)) - trans2 = TransposeParameters(G.unique_name(f'{node.name}_tout'), transpose=(1, 0)) - G.add_edge( - NNEdge(from_node=link[0], to_node=trans1, from_idx=link[1])) - G.add_edge( - NNEdge(from_node=trans1, to_node=params, to_idx=1)) - G.add_edge(NNEdge(from_node=weights_node, - to_node=params, to_idx=0)) + trans2 = TransposeParameters(G.unique_name(f'{node.name}_tin2'), transpose=(1, 0)) + G.add_edge(NNEdge(from_node=link[0], to_node=params, from_idx=link[1])) + G.add_edge(NNEdge(from_node=weights_node, to_node=params, to_idx=1)) + #G.add_edge(NNEdge(from_node=trans2, to_node=params, to_idx=1)) G.add_edge(NNEdge(from_node=bias_node, to_node=params, to_idx=2)) - G.add_edge(NNEdge(from_node=params, to_node=trans2)) - params = trans2 out_shape = [batch_size, out_c] else: ker_in_order = None @@ -113,7 +106,6 @@ def _common(cls, node, **kwargs): ker_in_order=ker_in_order, ker_out_order=ker_out_order, batch_size=batch_size, - constant_store=G.constant_store, keep_dims=keep_dims) cls.new_load_filter_parameters(G, params, params.filter.actual_shape, params.filter.get_order_idx('out_c'), node.input[0], weights_node, diff --git a/tools/nntool/importer/tflite2/handlers/backend/gather.py b/tools/nntool/importer/tflite2/handlers/backend/gather.py index 6f4b230e9..ea7902bc0 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/gather.py +++ b/tools/nntool/importer/tflite2/handlers/backend/gather.py @@ -18,7 +18,7 @@ from graph.types.others import GatherParameters import numpy as np -from graph.types.input_output import ConstantInputParameters +from graph.types import ConstantInputParameters from importer.common.provisional_dim import ProvisionalDim from graph.dim import Dim @@ -30,7 +30,8 @@ from utils.node_id import NodeId from ..backend_handler import BackendHandler -from ..handler import tflite_op +from ..handler import tflite_op, partial_support, ps_description + def sequence_to_slice(val): if len(val) == 1: @@ -48,7 +49,11 @@ def sequence_to_slice(val): else: return None + @tflite_op("GATHER") +@partial_support(True) +@ps_description('Gather is supported on constants and is folded to a constant value. It is not supported on ' + 'GAP at present.') class Gather(BackendHandler): @classmethod @@ -69,12 +74,15 @@ def _common(cls, node: TFLiteNode, **kwargs): inp = np.take(inp, gather_tensor, axis=axis) pout_shape = inp.shape LOG.info("reducing %s to a constant", node.name) - params = ConstantInputParameters(node.name, value=inp, dims=pout_shape, constant_store=G.constant_store) + params = ConstantInputParameters( + node.name, value=inp, dims=pout_shape) else: if x_shape[axis] is None: - raise ValueError(f'GATHER {node.name} on batch axis not supported') + raise ValueError( + f'GATHER {node.name} on batch axis not supported') slices = [sequence_to_slice(elem) for elem in gather_tensor] - strides = set([slices[idx + 1][0] - slice[0] for idx, slice in enumerate(slices[:-1:])]) + strides = set([slices[idx + 1][0] - slice[0] + for idx, slice in enumerate(slices[:-1:])]) lengths = set([abs(slice[1] - slice[0]) for slice in slices]) if len(strides) != 1 or len(lengths) != 1: raise ValueError(f'Irregular GATHER {node.name} not supported') @@ -89,7 +97,8 @@ def _common(cls, node: TFLiteNode, **kwargs): axis=axis) if opts.get('load_quantization'): - G.quantization[NodeId(params)] = cls.load_tf_quantization(node.input, node.output) + G.quantization[NodeId(params)] = cls.load_tf_quantization( + node.input, node.output) all_nodes[node.output[0]] = (params, 0, ProvisionalDim(pout_shape)) return params diff --git a/tools/nntool/importer/tflite2/handlers/backend/math_mixin.py b/tools/nntool/importer/tflite2/handlers/backend/math_mixin.py index 54bbb174e..ece3768c6 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/math_mixin.py +++ b/tools/nntool/importer/tflite2/handlers/backend/math_mixin.py @@ -14,11 +14,9 @@ # along with this program. If not, see . import copy -from graph.dim import Dim -from graph.types.base import NNEdge -from graph.types.input_output import ConstantInputParameters -from graph.types.tensor_arithmetic import Broadcastable +from graph.dim import Dim +from graph.types import Broadcastable, ConstantInputParameters, NNEdge from importer.common.broadcast_mixin import BroadcastMixin from importer.common.constant_mixin import ConstantMixin from importer.tflite2.common import LOG @@ -76,7 +74,7 @@ def _common(cls, node, **kwargs): values = [cls.get_constant(inp) for inp in inputs] output_shapes = cls.implied_broadcast(inputs) params = ConstantInputParameters(node.name, value=constant_operation(*values), - dims=Dim.unnamed(output_shapes[0].known_shape), constant_store=G.constant_store) + dims=Dim.unnamed(output_shapes[0].known_shape)) else: params = kwargs['params_class'](node.name, **params_args) output_shapes = cls.implied_broadcast(inputs) diff --git a/tools/nntool/importer/tflite2/handlers/backend/pack.py b/tools/nntool/importer/tflite2/handlers/backend/pack.py index 962e6ed72..57f16a58b 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/pack.py +++ b/tools/nntool/importer/tflite2/handlers/backend/pack.py @@ -14,9 +14,8 @@ # along with this program. If not, see . import numpy as np -from graph.types import ConcatParameters, NNEdge -from graph.types.input_output import ConstantInputParameters -from graph.types.others import ReshapeParameters +from graph.types import (ConcatParameters, ConstantInputParameters, NNEdge, + ReshapeParameters) from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim from importer.tflite2.common import LOG, check @@ -47,7 +46,8 @@ def _common(cls, node: TFLiteNode, **kwargs): buffer_idxes = [tensor.buffer_idx for tensor in node.input] if any(not cls.is_constant(inp) for inp in inputs): check(len(set(buffer_idxes)) == len(buffer_idxes), - "packs with multiple versions of the same input are not supported. This is normally a graph design problem.") + ("packs with multiple versions of the same input are not supported. " + "This is normally a graph design problem.")) axis = node_opts.Axis() dimension_size = len(inp_shapes) @@ -76,7 +76,7 @@ def _common(cls, node: TFLiteNode, **kwargs): if all(cls.is_constant(inp) for inp in inputs): LOG.info("reducing %s to a constant", node.name) value = np.stack([cls.get_constant(inp) for inp in inputs], axis=axis) - params = ConstantInputParameters(node.name, value=value, constant_store=G.constant_store) + params = ConstantInputParameters(node.name, value=value) elif len(inputs) == 1: params = ReshapeParameters(node.name, old_shape=reshape_in_shape, diff --git a/tools/nntool/importer/tflite2/handlers/backend/pad.py b/tools/nntool/importer/tflite2/handlers/backend/pad.py index d32cc5a6f..955075b61 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/pad.py +++ b/tools/nntool/importer/tflite2/handlers/backend/pad.py @@ -16,12 +16,15 @@ from importer.tflite2.common.tflite_node import TFLiteNode from ..backend_handler import BackendHandler -from ..handler import tflite_op +from ..handler import tflite_op, partial_support, ps_description from .pad_mixin import PadMixin @tflite_op("PAD") +@partial_support(True) +@ps_description('Padding is only supported on GAP when it can be fused into another layer that supports it like ' + 'a pooling or convolution layer.') class Pad(PadMixin, BackendHandler): @classmethod diff --git a/tools/nntool/importer/tflite2/handlers/backend/padv2.py b/tools/nntool/importer/tflite2/handlers/backend/padv2.py index 26016d418..39f567dd2 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/padv2.py +++ b/tools/nntool/importer/tflite2/handlers/backend/padv2.py @@ -16,12 +16,15 @@ from importer.tflite2.common.tflite_node import TFLiteNode from ..backend_handler import BackendHandler -from ..handler import tflite_op +from ..handler import tflite_op, ps_description, partial_support from .pad_mixin import PadMixin @tflite_op("PADV2") +@partial_support(True) +@ps_description('Padding is only supported on GAP when it can be fused into another layer that supports it like ' + 'a pooling or convolution layer.') class PadV2(PadMixin, BackendHandler): @classmethod diff --git a/tools/nntool/importer/tflite2/handlers/backend/quantize_mixin.py b/tools/nntool/importer/tflite2/handlers/backend/quantize_mixin.py index 3099442d9..a27f033ae 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/quantize_mixin.py +++ b/tools/nntool/importer/tflite2/handlers/backend/quantize_mixin.py @@ -42,8 +42,7 @@ def common_quantize(cls, in_qtype, out_qtype, node, **kwargs): params = ConstantInputParameters(node.name, value=val, dims=Dim.unnamed(val.shape), - qtype=out_qtype, - constant_store=G.constant_store) + qtype=out_qtype) if opts.get('load_quantization'): G.quantization[NodeId(params)] = QRec.scaled( in_qs=[out_qtype], out_qs=[out_qtype]) diff --git a/tools/nntool/importer/tflite2/handlers/backend/reshape.py b/tools/nntool/importer/tflite2/handlers/backend/reshape.py index 833adeff1..8a0d0d95f 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/reshape.py +++ b/tools/nntool/importer/tflite2/handlers/backend/reshape.py @@ -17,8 +17,7 @@ import numpy as np from graph.dim import Dim -from graph.types import NNEdge, ReshapeParameters -from graph.types.input_output import ConstantInputParameters +from graph.types import ConstantInputParameters, NNEdge, ReshapeParameters from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim from importer.tflite2.common import LOG @@ -85,8 +84,7 @@ def _common(cls, node: TFLiteNode, **kwargs): LOG.info("reducing %s to a constant", node.name) val = np.reshape(cls.get_constant(x), new_shape) params = ConstantInputParameters(node.name, value=val, - dims=Dim.unnamed(val.shape), - constant_store=G.constant_store) + dims=Dim.unnamed(val.shape)) else: pnew_shape = ProvisionalDim(new_shape) old_shape = Dim.unnamed( diff --git a/tools/nntool/importer/tflite2/handlers/backend/shape.py b/tools/nntool/importer/tflite2/handlers/backend/shape.py index 79f906949..3b0f7ace0 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/shape.py +++ b/tools/nntool/importer/tflite2/handlers/backend/shape.py @@ -20,10 +20,12 @@ from importer.tflite2.common.tflite_node import TFLiteNode from ..backend_handler import BackendHandler -from ..handler import tflite_op +from ..handler import tflite_op, partial_support, ps_description @tflite_op("SHAPE") +@partial_support(True) +@ps_description('Shape is always reduced to a constant since tensors must always have a known shape in nntool') class Shape(BackendHandler): @classmethod @@ -37,8 +39,7 @@ def _common(cls, node: TFLiteNode, **kwargs): node.input[0].used = True params = ConstantInputParameters(node.name, dims=Dim.unnamed([len(x_shape)]), - value=np.array([1 if dim is None else dim for dim in x_shape]), - constant_store=G.constant_store) + value=np.array([1 if dim is None else dim for dim in x_shape])) all_nodes[node.output[0]] = (params, 0, ProvisionalDim([len(x_shape)])) return params diff --git a/tools/nntool/importer/tflite2/handlers/backend/squeeze.py b/tools/nntool/importer/tflite2/handlers/backend/squeeze.py index c85399459..fac19bd1a 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/squeeze.py +++ b/tools/nntool/importer/tflite2/handlers/backend/squeeze.py @@ -16,8 +16,7 @@ import numpy as np from graph.dim import Dim -from graph.types import NNEdge, ReshapeParameters -from graph.types.input_output import ConstantInputParameters +from graph.types import ConstantInputParameters, NNEdge, ReshapeParameters from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim from importer.tflite2.common import LOG @@ -57,8 +56,7 @@ def _common(cls, node: TFLiteNode, **kwargs): LOG.info("reducing %s to a constant", node.name) val = np.reshape(cls.get_constant(x), new_shape) params = ConstantInputParameters(node.name, value=val, - dims=Dim.unnamed(val.shape), - constant_store=G.constant_store) + dims=Dim.unnamed(val.shape)) else: pnew_shape = ProvisionalDim(new_shape) old_shape = Dim.unnamed( diff --git a/tools/nntool/importer/tflite2/handlers/backend/strided_slice.py b/tools/nntool/importer/tflite2/handlers/backend/strided_slice.py index 09c7921cd..8bd8728d3 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/strided_slice.py +++ b/tools/nntool/importer/tflite2/handlers/backend/strided_slice.py @@ -16,10 +16,10 @@ import math import sys -from graph.types.input_output import ConstantInputParameters + from graph.dim import Dim -from graph.types import (NNEdge, NoOPParameters, ReshapeParameters, - StridedSliceParameters) +from graph.types import (ConstantInputParameters, NNEdge, NoOPParameters, + ReshapeParameters, StridedSliceParameters) from importer.common.constant_mixin import ConstantMixin from importer.tflite2.common import LOG from importer.tflite2.common.tflite_node import TFLiteNode @@ -144,7 +144,7 @@ def _common(cls, node: TFLiteNode, **kwargs): x_val = cls.get_constant(x) params = StridedSliceParameters(node.name, act_slice=act_slice, out_shape=out_shape) x_val = params.numpy_slice(x_val) - params = ConstantInputParameters(node.name, value=x_val, constant_store=G.constant_store) + params = ConstantInputParameters(node.name, value=x_val) G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) else: if can_reshape: @@ -162,7 +162,8 @@ def _common(cls, node: TFLiteNode, **kwargs): # if the slice has changed the shape then do this separately with a reshape G.add_edge(NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) if out_slice_shape != out_shape: - rparams = ReshapeParameters(G.unique_name(node.name), old_shape=out_slice_shape, shape=out_shape) + rparams = ReshapeParameters( + G.unique_name(node.name), old_shape=Dim.unnamed(out_slice_shape), shape=Dim.unnamed(out_shape)) G.add_edge(NNEdge(from_node=params, to_node=rparams)) params = rparams diff --git a/tools/nntool/importer/tflite2/handlers/backend/transpose.py b/tools/nntool/importer/tflite2/handlers/backend/transpose.py index 42ec26a45..d60cd5468 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/transpose.py +++ b/tools/nntool/importer/tflite2/handlers/backend/transpose.py @@ -13,13 +13,12 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from importer.common.constant_mixin import ConstantMixin -from graph.dim import Dim import numpy as np -from importer.tflite2.common import LOG -from graph.types.input_output import ConstantInputParameters -from graph.types import NNEdge, TransposeParameters +from graph.dim import Dim +from graph.types import ConstantInputParameters, NNEdge, TransposeParameters +from importer.common.constant_mixin import ConstantMixin from importer.common.provisional_dim import ProvisionalDim +from importer.tflite2.common import LOG from importer.tflite2.common.tflite_node import TFLiteNode from utils.node_id import NodeId @@ -53,7 +52,7 @@ def _common(cls, node: TFLiteNode, **kwargs): LOG.info("reducing %s to a constant", node.name) val = np.transpose(cls.get_constant(x), ptranspose) params = ConstantInputParameters(node.name, value=np.transpose(val, ptranspose), - dims=Dim.unnamed(val.shape), constant_store=G.constant_store) + dims=Dim.unnamed(val.shape)) else: params = TransposeParameters(node.name, transpose=transpose) diff --git a/tools/nntool/importer/tflite2/handlers/backend/transpose_conv.py b/tools/nntool/importer/tflite2/handlers/backend/transpose_conv.py index cc7f96b9d..67e5b68ae 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/transpose_conv.py +++ b/tools/nntool/importer/tflite2/handlers/backend/transpose_conv.py @@ -22,11 +22,14 @@ TransposeConvOptions from ..backend_handler import BackendHandler -from ..handler import tflite_op +from ..handler import tflite_op, partial_support, ps_description from .filter_mixin import FilterMixin @tflite_op("TRANSPOSE_CONV") +@partial_support(True) +@ps_description('Transpose Conv is only imported. No kernels are implemented for it. We suggest' + 'using a resizer followed by a normal convolution.') class TransposeConv(ConstantMixin, FilterMixin, BackendHandler): @classmethod @@ -75,8 +78,7 @@ def version_1(cls, node: TFLiteNode, **kwargs): stride_h, stride_w), padding=pad, in_dims_hint=[['h', 'w', 'c'], cls.TF_LITE_FILTER_ORDER.copy()], - out_dims_hint=[['h', 'w', 'c']], - constant_store=G.constant_store) + out_dims_hint=[['h', 'w', 'c']]) G.add_edge( NNEdge(from_node=x[0], to_node=params, from_idx=x[1], to_idx=0)) G.add_edge(NNEdge(from_node=weights_node, to_node=params, to_idx=1)) diff --git a/tools/nntool/importer/tflite2/handlers/backend/unidirectional_sequence_lstm.py b/tools/nntool/importer/tflite2/handlers/backend/unidirectional_sequence_lstm.py index 6ee37a6d6..260b4b7bc 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/unidirectional_sequence_lstm.py +++ b/tools/nntool/importer/tflite2/handlers/backend/unidirectional_sequence_lstm.py @@ -57,7 +57,6 @@ def _common(cls, node, **kwargs): params = LSTMParameters(node.name, in_dims_hint=[['sz', 'c']], out_dims_hint=[['sz', 'c']], - constant_store=G.constant_store, cell_clip=cell_clip, proj_clip=proj_clip, n_input_cells=max_time, diff --git a/tools/nntool/importer/tflite2/handlers/backend/unidirectional_sequence_rnn.py b/tools/nntool/importer/tflite2/handlers/backend/unidirectional_sequence_rnn.py index 39bd6000a..3ab0079c3 100644 --- a/tools/nntool/importer/tflite2/handlers/backend/unidirectional_sequence_rnn.py +++ b/tools/nntool/importer/tflite2/handlers/backend/unidirectional_sequence_rnn.py @@ -47,7 +47,6 @@ def _common(cls, node, **kwargs): params = RNNParameters(node.name, in_dims_hint=[['sz', 'c']], out_dims_hint=[['sz', 'c']], - constant_store=G.constant_store, n_input_cells=max_time, n_cells=max_time, # TF says max_time - we say cells n_inputs=n_inputs, # Input will be n_input_cells, n_inputs diff --git a/tools/nntool/importer/tflite2/handlers/backend_handler.py b/tools/nntool/importer/tflite2/handlers/backend_handler.py index 1a688ff6c..f44c8dfd0 100644 --- a/tools/nntool/importer/tflite2/handlers/backend_handler.py +++ b/tools/nntool/importer/tflite2/handlers/backend_handler.py @@ -19,10 +19,8 @@ import numpy as np from graph.dim import Dim -from graph.types.activations import ActivationParameters -from graph.types.base import NNEdge -from graph.types.input_output import ConstantInputParameters -from graph.types.others import ReshapeParameters +from graph.types import (ActivationParameters, ConstantInputParameters, NNEdge, + ReshapeParameters) from importer.common.provisional_dim import ProvisionalDim from quantization.new_qrec import QRec from quantization.qtype import QType @@ -152,8 +150,7 @@ def get_all_const_inputs(cls, G, all_nodes, opts, node, params, const_param = ConstantInputParameters( tensor.name, dims=Dim.unnamed(tensor.shape), - value=tensor.value, - constant_store=G.constant_store) + value=tensor.value) all_nodes[tensor] = ( const_param, 0, diff --git a/tools/nntool/importer/tflite2/tflite.py b/tools/nntool/importer/tflite2/tflite.py index 751aaaf37..d0e35779d 100644 --- a/tools/nntool/importer/tflite2/tflite.py +++ b/tools/nntool/importer/tflite2/tflite.py @@ -17,7 +17,6 @@ import os from copy import deepcopy -from graph.constant_store import ConstantStore from graph.dim import Dim from graph.matches.matchers.duplicate_constants import MatchDuplicateConstants from graph.matches.matchers.remove_quantize_operators import \ @@ -25,9 +24,7 @@ from graph.matches.matchers.remove_reshapes_before_linear import \ RemoveReshapesBeforeLinear from graph.nngraph import NNGraph -from graph.types import (ActivationParameters, ConcatParameters, - ConstantInputParameters, NNEdge, - SoftMaxParameters, SplitParameters) +from graph.types import ConstantInputParameters, NNEdge from importer.common.clean_dangling_nodes import clean_dangling_nodes from importer.common.get_reasonable_name import get_reasonable_name from importer.tflite2.common.tflite_graph import TFLiteGraph @@ -81,7 +78,6 @@ def find_nodes_with_bad_quantization(G): res |= set(nodes) return res - def create_graph(self, filename, opts): opts = self.get_opts(opts) self._name_cache = {} @@ -95,8 +91,7 @@ def create_graph(self, filename, opts): "nntool only supports one subgraph. There may be errors loading this graph.") G = NNGraph(model=model, filename=filename, - name=opts.get('name'), - constant_store=ConstantStore()) + name=opts.get('name')) if opts.get('load_quantization'): G.quantization = QuantizationSet() G.has_quantized_parameters = True @@ -122,7 +117,8 @@ def create_graph(self, filename, opts): to_remove.append(nid) for nid in to_remove: del G.quantization[nid] - nodes_with_bad_quantization = self.find_nodes_with_bad_quantization(G) + nodes_with_bad_quantization = self.find_nodes_with_bad_quantization( + G) quantizer = NewQuantizer.from_quantized_graph(G) # check for quantization problems # 1) need to force softmax/Sigmoid input to POW2 quantization @@ -141,7 +137,8 @@ def create_graph(self, filename, opts): def _import_tflite_graph(self, G: NNGraph, model, opts: dict): name_cache = set() - graph = TFLiteGraph.from_model(model, 0, anonymise=opts.get('anonymise'), name_cache=name_cache) + graph = TFLiteGraph.from_model( + model, 0, anonymise=opts.get('anonymise'), name_cache=name_cache) handlers = self._get_handlers(graph.model_version) all_nodes = {} constants = self._get_all_constants( @@ -183,8 +180,7 @@ def _get_all_constants(self, G, tensors, load_quantization=False, anonymise=Fals tensor.name, name_cache=name_cache, anonymise=anonymise), dims=Dim.unnamed(tensor.shape), value=tensor.value if load_quantization else tensor.dqvalue, - qtype=tensor.qtype if load_quantization else None, - constant_store=G.constant_store), + qtype=tensor.qtype if load_quantization else None), 0, ProvisionalDim.from_tflite_shape(tensor.shape) ) @@ -209,8 +205,8 @@ def _get_input_nodes(self, G, inputs, load_quantization=False): node_recs = { inp: ( G.add_input(Dim.unnamed(prov_dims[idx].known_shape).apply_naming_hints(hints[idx]), - in_dim_hint=[hints[idx]] if hints[idx] else None, - out_dim_hint=[hints[idx]] if hints[idx] else None), + in_dims_hint=[hints[idx]] if hints[idx] else None, + out_dims_hint=[hints[idx]] if hints[idx] else None), 0, prov_dims[idx] ) @@ -237,12 +233,11 @@ def _import_nodes(self, G, graph, handlers, all_nodes, outputs, opts): for node in graph.nodes: handler = handlers.get(node.op_name, None) if not handler: - raise ValueError("no handler found for %s" % node.op_type) + raise NotImplementedError(f"TensorFlow Lite {node.op_type} operator is not currently supported") if node.is_custom and handler: handler = handler.get(node.custom_op_name, None) if not handler: - raise ValueError("no handler found for custom operation %s" % - node.custom_op_name) + raise NotImplementedError(f"TensorFlow Lite custom operation {node.custom_op_name} is not currently supported") params = handler.handle( node, all_nodes=all_nodes, G=G, opts=opts, importer=self, outputs=outputs) diff --git a/tools/nntool/interpreter/commands/aquant.py b/tools/nntool/interpreter/commands/aquant.py index 04f1aaf7a..d4c8f8019 100644 --- a/tools/nntool/interpreter/commands/aquant.py +++ b/tools/nntool/interpreter/commands/aquant.py @@ -26,6 +26,7 @@ from utils.data_importer import import_data from utils.stats_funcs import STATS_BITS +from graph.types import ConstantInputParameters from stats.activation_ranges_collector import ActivationRangesCollector LOG = logging.getLogger('nntool.'+__name__) @@ -56,31 +57,34 @@ def do_aquant(self, args: argparse.Namespace): stats_collector = ActivationRangesCollector() # if replaying state file then load the activation stats if they are present opts = get_options_from_args(args) - if self.replaying_history and self.history_stats: - astats = self.history_stats - else: - input_args = self._get_input_args(args) - processed_input = False - for file_per_input in glob_input_files(args.input_files, self.G.num_inputs): - LOG.info("input file %s", file_per_input) - processed_input = True - data = [import_data(input_file, **input_args) - for input_file in file_per_input] - stats_collector.collect_stats(self.G, data) - if not processed_input: - self.perror("No input files found") - return - astats = stats_collector.stats - self._record_stats(astats) + state = ConstantInputParameters.save_compression_state(self.G) + try: + if self.replaying_history and self.history_stats: + astats = self.history_stats + else: + input_args = self._get_input_args(args) + processed_input = False + for file_per_input in glob_input_files(args.input_files, self.G.num_inputs): + LOG.info("input file %s", file_per_input) + processed_input = True + data = [import_data(input_file, **input_args) + for input_file in file_per_input] + stats_collector.collect_stats(self.G, data) + if not processed_input: + self.perror("No input files found") + return + astats = stats_collector.stats + self._record_stats(astats) - if args.force_width: - opts['bits'] = args.force_width + if args.force_width: + opts['bits'] = args.force_width - quantizer = NewQuantizer(self.G, reset_all=True) - quantizer.options = opts - quantizer.schemes.append(args.scheme) - quantizer.set_stats(astats) - quantizer.quantize() + quantizer = NewQuantizer(self.G, reset_all=True) + quantizer.schemes.append(args.scheme) + quantizer.set_stats(astats, opts) + quantizer.quantize() - self.G.add_dimensions() - LOG.info("Quantization set. Use qshow command to see it.") + self.G.add_dimensions() + LOG.info("Quantization set. Use qshow command to see it.") + finally: + ConstantInputParameters.restore_compression_state(self.G, state) diff --git a/tools/nntool/interpreter/commands/compress.py b/tools/nntool/interpreter/commands/compress.py index ee3ef44a8..21ee1b45b 100644 --- a/tools/nntool/interpreter/commands/compress.py +++ b/tools/nntool/interpreter/commands/compress.py @@ -13,10 +13,19 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from cmd2 import with_argparser +import json +import math + +import texttable +from cmd2 import Cmd, with_argparser +from interpreter.commands.validation import get_validator, validation_options from interpreter.nntool_shell_base import (NODE_SELECTOR_HELP, NNToolArguementParser, NNToolShellBase) +from interpreter.shell_utils import input_options +from quantization.compression.auto_compress import AutoCompress +from quantization.compression.compress import CompressionError +from utils.node_id import NodeId from graph.types import ConstantInputParameters @@ -27,20 +36,33 @@ class CompressCommand(NNToolShellBase): parser_compress = NNToolArguementParser() parser_compress.add_argument( 'step', + nargs='?', help='constant input to compress. ' + NODE_SELECTOR_HELP, - completer_method=NNToolShellBase.node_step_or_name_completer) + completer_method=NNToolShellBase.node_step_or_name_completer(allow_comma=True)) + parser_compress.add_argument( + '--no_sparse', action="store_true", + help='Do not check for sparsity' + ) + parser_compress.add_argument( + '--force_sparse', action="store_true", + help='Force these layers to use sparse bit (adds an extra bin)' + ) + parser_compress.add_argument( + '--threshold', type=float, + help='set values val>x>-val to 0 before clustering' + ) parser_compress_sub = parser_compress.add_subparsers( title='compress subcommands', help='compression strategy for the selected layers') parser_compress_bits = parser_compress_sub.add_parser( 'bits', help='compress using a lookup index of a fixed number of bits') parser_compress_bits.add_argument( - 'num_bits', choices=list(str(v) for v in range(2, 9)), + 'num_bits', choices=list(str(v) for v in range(2, 8)), help='number of bits to use for lookup table indexes' ) parser_compress_min_qnsr = parser_compress_sub.add_parser( - 'min_qnsr', + 'min_qsnr', help='compress keeping the value QSNR above a minimum value') parser_compress_min_qnsr.add_argument( @@ -50,73 +72,244 @@ class CompressCommand(NNToolShellBase): parser_compress_auto = parser_compress_sub.add_parser( 'auto', - help='compress to a number of bits found automatically using inertia method') - - parser_compress_none = parser_compress_sub.add_parser( - 'none', - help='disable compression') - - def compress_bits(self, node, args): - comp_val = node.constant_store.compress( - node, 0, bits=int(args.num_bits)) - if comp_val: - node.use_compressed = True - self.pfeedback( - f'compress {node.name} to {args.num_bits} bits size' - f' {node.value.size}->{comp_val.size} {"sparse" if comp_val.sparse else ""}') - return node.value.size - comp_val.size - return node.value.size - - def compress_qsnr(self, node, args): - comp_val = node.constant_store.compress(node, 0, min_qsnr=args.qsnr) - if comp_val: - node.use_compressed = True - self.pfeedback( - f'compress {node.name} above QSNR of {args.qsnr} to {comp_val.bits} bits ' - f'size {node.value.size}->{comp_val.size} {"sparse" if comp_val.sparse else ""}') - return node.value.size - comp_val.size - return node.value.size - - def compress_auto(self, node, args): - comp_val = node.constant_store.compress(node, 0) - if comp_val: - node.use_compressed = True - self.pfeedback( - f'auto compress {node.name} to {comp_val.bits} bits size ' - f'{node.value.size}->{comp_val.size} {"sparse" if comp_val.sparse else ""}') - return node.value.size - comp_val.size - return node.value.size - - def compress_none(self, node, args): - node.use_compressed = False - self.pfeedback(f'disable compression on {node.name}') - return node.value.size - - parser_compress_bits.set_defaults(func=compress_bits) - parser_compress_min_qnsr.set_defaults(func=compress_qsnr) - parser_compress_auto.set_defaults(func=compress_auto) - parser_compress_none.set_defaults(func=compress_none) + help='compress to a number of bits automatically using validation results') + + parser_compress_auto.add_argument( + '--finetune', action="store_true", + help='Experimental layer finetuning' + ) + + validation_options(parser_compress_auto) + input_options(parser_compress_auto) + + parser_compress_clear = parser_compress_sub.add_parser( + 'clear', + help='clear compression on these nodes') + + parser_compress_off = parser_compress_sub.add_parser( + 'off', + help='disable compression on these nodes') + + parser_compress_on = parser_compress_sub.add_parser( + 'on', + help='enable compression on these nodes') + + parser_compress_save = parser_compress_sub.add_parser( + 'save', + help='save compression settings to a file in json format') + + parser_compress_save.add_argument( + 'file', + completer_method=Cmd.path_complete, + help='file to save to' + ) + + parser_compress_load = parser_compress_sub.add_parser( + 'load', + help='load compression settings from a file in json format') + + parser_compress_load.add_argument( + 'file', + completer_method=Cmd.path_complete, + help='file to load from' + ) + + parser_compress_bits.set_defaults(operation='bits') + parser_compress_min_qnsr.set_defaults(operation='min_qsnr') + parser_compress_auto.set_defaults(operation='auto') + parser_compress_clear.set_defaults(operation='clear') + parser_compress_off.set_defaults(operation='off') + parser_compress_on.set_defaults(operation='on') + parser_compress_save.set_defaults(operation='save') + parser_compress_load.set_defaults(operation='load') @with_argparser(parser_compress) def do_compress(self, args): """ -Tune quantization of graph.""" +Compress graph constants for GAP9 compression engine. Compress with no arguments will list current compression settings. +The compressed size in the results table includes the size of the codebook. + +In bits mode the amount of bits used for table indexes is specified directly. It should be from 2 to 8. +In min_qsnr mode the tensors will be compressed with the number of bits necessary to stay above the given QSNR value. A +value of around 30 is a good starting point. + +The auto mode uses the validation engine to explore possible tensor compression parameters. THe command options are the +same as the validate command. The first part of the process tries to find the lowest QSNR that can be selected for +compression of all viable parameters with no bad validation results. + +The threshold argument can be used to clip values to zero before compression. +""" self._check_graph() - nodes, node_descr = self.get_node_step_or_name( - args.step, classes=ConstantInputParameters) + if not args.step: + if hasattr(args, 'operation'): + nodes = self.G.nodes(node_classes=ConstantInputParameters) + else: + self.compress_make_table(self.G.nodes( + node_classes=ConstantInputParameters)) + return + else: + nodes, _ = self.get_node_step_or_name( + args.step, classes=ConstantInputParameters, allow_comma=True) + if not nodes: return - func = getattr(args, 'func', None) - if func is not None: - # Call whatever subcommand function was selected - comp_size = 0 - node_size = 0 - for node in nodes: - node_size += node.value.size - comp_size += func(self, node, args) - self.pfeedback( - f'uncompressed size {node_size} compressed size {comp_size} compression {(100*comp_size)//node_size}%') - else: + if not args.operation: # No subcommand was provided, so call help self.do_help('compress') + return + + if args.operation == "clear": + for node in nodes: + node.use_compressed = False + node.compressed_value = None + self.pfeedback(f'clear compression on {node.name}') + return + if args.operation == "on": + for node in nodes: + if node.compressed_value: + node.use_compressed = True + self.pfeedback(f'enable compression on {node.name}') + else: + self.perror( + f"can't enable compression on {node.name} - not set") + return + if args.operation == "off": + for node in nodes: + node.use_compressed = False + self.pfeedback(f'disable compression on {node.name}') + return + if args.operation == "save": + save_map = {} + for node in nodes: + if node.compressed_value: + comp_val = node.compressed_value + save_map[node.name] = { + 'bits': comp_val.bits, + 'threshold': comp_val.threshold, + 'sparse': bool(comp_val.sparse), + } + with open(args.file, 'w') as fp: + fp.write(json.dumps(save_map)) + return + + report_nodes = [] + if args.operation == "load": + with open(args.file, 'r') as fp: + save_map = json.load(fp) + + for node in nodes: + if node.name in save_map: + self.pfeedback(f"Loading parameters for {node.name}") + try: + params = save_map[node.name] + node.compress_value( + bits=params['bits'], + threshold=params['threshold'], + allow_sparse=params['sparse'], + force_sparse=params['sparse'], + ) + comp_val = node.compressed_value + node.use_compressed = True + except CompressionError as ex: + self.pfeedback(f'unable to compress {node.name} - {ex}') + comp_val = None + if comp_val: + report_nodes.append(node) + return + elif args.operation == "auto": + if args.quantize: + self._check_quantized() + input_args = self._get_input_args(args) + autocompress = AutoCompress( + self.G, + args.input_files, + get_validator(args), + input_args, + prediction_step_idx=args.prediction_step_idx) + + def progress(msg, newline): + print(msg, end='\n' if newline else '', flush=True) + + try: + autocompress.tune_all(nodes, progress, quantize=args.quantize) + if args.finetune: + report_nodes = [node for node in nodes if node.use_compressed] + self.compress_make_table(report_nodes) + autocompress.finetune(nodes, progress, quantize=args.quantize) + except (KeyboardInterrupt, SystemExit): + pass + report_nodes = [node for node in nodes if node.use_compressed] + else: + for node in nodes: + self.pfeedback(f"Evaluating {node.name}") + + nid = NodeId(node) + if self.G.quantization and nid in self.G.quantization: + qtype = self.G.quantization[nid].out_qs[0] + else: + qtype = None + + try: + kwargs = { + 'qtype': qtype, + 'threshold': args.threshold, + 'allow_sparse': not args.no_sparse, + 'force_sparse': args.force_sparse + } + if args.operation == "bits": + kwargs['bits'] = int(args.num_bits) + elif args.operation == "min_qsnr": + kwargs['min_qsnr'] = args.qsnr + elif args.operation == "auto": + pass + else: + raise ValueError('strange operation') + node.compress_value(**kwargs) + comp_val = node.compressed_value + node.use_compressed = True + except CompressionError as ex: + self.pfeedback(f'unable to compress {node.name} - {ex}') + comp_val = None + + if comp_val: + report_nodes.append(node) + + self.compress_make_table(report_nodes) + + def compress_make_table(self, nodes): + comp_size = 0 + node_size = 0 + comp_report = [["Step", "Name", "Orig Size", + "Compressed Size", "%age orig", "Bits", "Sparse", "Enabled"]] + for node in nodes: + if not node.compressed_value: + continue + nid = NodeId(node) + if self.G.quantization and nid in self.G.quantization: + qbits = self.G.quantization[NodeId(node)].out_qs[0].bits + else: + qbits = 8 + + old_size = int(math.floor((node.value.size * qbits)/8)) + comp_val = node.compressed_value + node_size += node.value.size + comp_size += comp_val.size + comp_report.append([ + node.step_idx, node.name, old_size, comp_val.size, ( + 100 * comp_val.size)//old_size, + comp_val.bits, "Yes" if comp_val.sparse else "No", "Yes" if node.use_compressed else "No" + ]) + if comp_size == 0: + self.pfeedback("no constants compressed") + return + comp_report.append([ + "", "Total", node_size, comp_size, (100 * + comp_size)//node_size, "", "", "" + ]) + table = texttable.Texttable() + table.set_cols_align(['l', 'l', 'l', 'l', 'l', 'l', 'l', 'l']) + table.set_max_width(120) + table.add_rows(comp_report) + self.pfeedback("Compression report\n") + self.pfeedback(table.draw()+'\n') diff --git a/tools/nntool/interpreter/commands/draw.py b/tools/nntool/interpreter/commands/draw.py index e80b8433c..7467935be 100644 --- a/tools/nntool/interpreter/commands/draw.py +++ b/tools/nntool/interpreter/commands/draw.py @@ -27,13 +27,16 @@ class DrawCommand(NNToolShellBase): parser_draw = NNToolArguementParser("display graph") parser_draw.add_argument('step', nargs=(0, 1), help='step to show or nothing to show all.' + NODE_SELECTOR_HELP, - completer_method=NNToolShellBase.node_step_or_name_completer) + completer_method=NNToolShellBase.node_step_or_name_completer()) parser_draw.add_argument('-s', '--show_constants', action='store_true', help='Show constant parameters nodes') parser_draw.add_argument('-a', '--all_edges', action='store_true', help='Show labels on all inputs and outputs even ' 'if destination or source node is not selected') + parser_draw.add_argument('-F', '--fusions', + action='store_true', + help='Show fusions as subgraphs') parser_draw.add_argument('--expressions', choices=['quantized', 'unquantized'], help='show expressions as subgraphs') @@ -77,4 +80,5 @@ def do_draw(self, args): DrawGraphReporter().report(self.G, nodes=nodes, all_dims=args.all_edges, filename=args.file, view=args.file is None, anonymise=args.anonymise, expressions=args.expressions, - quant_labels=args.quant_labels) + quant_labels=args.quant_labels, + fusions=args.fusions) diff --git a/tools/nntool/interpreter/commands/dsp_preprocessing.py b/tools/nntool/interpreter/commands/dsp_preprocessing.py index cfca45bfe..e8cf8e192 100644 --- a/tools/nntool/interpreter/commands/dsp_preprocessing.py +++ b/tools/nntool/interpreter/commands/dsp_preprocessing.py @@ -13,18 +13,17 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import distutils.ccompiler as compiler -from graph.types.input_output import InputParameters -from graph.dim import Dim -from graph.types.dsp_preprocessing import MFCCPreprocessingParameters, RFFT2DPreprocessingParameters - -from graph.types import DSPParameters -import logging -import os import json +import logging + from cmd2 import Cmd, Cmd2ArgumentParser, with_argparser from interpreter.nntool_shell_base import NNToolShellBase +from graph.dim import Dim +from graph.types import DSPParameters, InputParameters +from graph.types.dsp_preprocessing import (MFCCPreprocessingParameters, + RFFT2DPreprocessingParameters) + LOG = logging.getLogger("nntool") class DSPPreprocessingCommand(NNToolShellBase): diff --git a/tools/nntool/interpreter/commands/dump.py b/tools/nntool/interpreter/commands/dump.py index 6372d7531..b665bbfda 100644 --- a/tools/nntool/interpreter/commands/dump.py +++ b/tools/nntool/interpreter/commands/dump.py @@ -34,7 +34,6 @@ LOG = logging.getLogger('nntool.'+__name__) - class DumpCommand(NNToolShellBase): # DUMP COMMAND parser_dump = Cmd2ArgumentParser() @@ -50,7 +49,8 @@ class DumpCommand(NNToolShellBase): action='store_true', help='dequantize result') parser_dump.add_argument('--quantize_and_dequantize', action='store_true', help='quantize and dequantize float results') - parser_dump_group = parser_dump.add_mutually_exclusive_group(required=False) + parser_dump_group = parser_dump.add_mutually_exclusive_group( + required=False) parser_dump_group.add_argument('-q', '--quantize', action='store_true', help='quantize the graph (must have already set quantization)') parser_dump_group.add_argument('-Q', '--quantize_step', type=int, @@ -68,7 +68,8 @@ class DumpCommand(NNToolShellBase): help='save the tensor to the tensors list') parser_dump.add_argument('-v', '--visualize_detection', action='store_true', help='visualize input images and detection predictions') - parser_dump.add_argument('--checksum', action='store_true', help='print checksums') + parser_dump.add_argument( + '--checksum', action='store_true', help='print checksums') input_options(parser_dump) @with_argparser(parser_dump) @@ -103,7 +104,8 @@ def do_dump(self, args: argparse.Namespace): if step < 0: step = num_steps + step if step < 0 or step > num_steps: - self.perror("step must be from {} to {}".format(-num_steps, num_steps)) + self.perror( + "step must be from {} to {}".format(-num_steps, num_steps)) return else: step = None @@ -114,7 +116,8 @@ def do_dump(self, args: argparse.Namespace): for file_per_input in glob_input_files(args.input_files, self.G.num_inputs): LOG.info("input file %s", file_per_input) - data = [import_data(input_file, **input_args) for input_file in file_per_input] + data = [import_data(input_file, **input_args) + for input_file in file_per_input] qrecs = None if qmode.is_none else self.G.quantization executer = GraphExecuter(self.G, qrecs=qrecs) outputs = executer.execute(data, step_idx_limit=step, @@ -130,25 +133,34 @@ def do_dump(self, args: argparse.Namespace): if args.visualize_detection: img_in = Image.open(file_per_input[0]).convert('RGBA') - height = img_in.size[1] if input_args['height'] == -1 else input_args['height'] - width = img_in.size[0] if input_args['width'] == -1 else input_args['width'] + height = img_in.size[1] if input_args['height'] == - \ + 1 else input_args['height'] + width = img_in.size[0] if input_args['width'] == - \ + 1 else input_args['width'] img_in = img_in.resize((width, height)) if self.G.has_ssd_postprocess: - bboxes, classes, scores = [outputs[graph_out.step_idx][0] for graph_out in self.G.outputs()] + bboxes, classes, scores = [ + outputs[graph_out.step_idx][0] for graph_out in self.G.outputs()] draw = ImageDraw.Draw(img_in, 'RGBA') for box, score, class_id in zip(bboxes, scores, classes): if args.quantize and not args.dequantize: - ssd_node = [node for node in self.G.nodes() if isinstance(node, SSDDetectorParameters)][0] + ssd_node = [node for node in self.G.nodes() if isinstance( + node, SSDDetectorParameters)][0] ssd_qrec = self.G.quantization[NodeId(ssd_node)] - x0, x1 = int(box[1] * width * ssd_qrec.out_qs[0].scale), int(box[3] * width * ssd_qrec.out_qs[0].scale) - y0, y1 = int(box[0] * height * ssd_qrec.out_qs[0].scale), int(box[2] * height * ssd_qrec.out_qs[0].scale) + x0, x1 = int(box[1] * width * + ssd_qrec.out_qs[0].scale), + int(box[3] * width * ssd_qrec.out_qs[0].scale) + y0, y1 = int(box[0] * height * + ssd_qrec.out_qs[0].scale), + int(box[2] * height * ssd_qrec.out_qs[0].scale) score = score * ssd_qrec.out_qs[2].scale else: x0, x1 = int(box[1] * width), int(box[3] * width) y0, y1 = int(box[0] * height), int(box[2] * height) - rect_points = (x0, y0), (x1, y0), (x1, y1), (x0, y1), (x0, y0) + rect_points = (x0, y0), (x1, y0), (x1, + y1), (x0, y1), (x0, y0) draw.line(rect_points, fill='red', width=2) txt = '{}@{}%'.format(class_id, int(score*100)) draw.text([x0, y0-10], txt, fill=(0, 255, 0)) @@ -165,7 +177,8 @@ def do_dump(self, args: argparse.Namespace): pickle.dump(pickles, pickle_fp) if args.save: if len(args.input_files) != self.G.num_inputs: - self.perror("can only save dumps on one input to tensor store") + self.perror( + "can only save dumps on one input to tensor store") return self.tensor_store[args.save] = pickles diff --git a/tools/nntool/interpreter/commands/fquant.py b/tools/nntool/interpreter/commands/fquant.py index 3d6090553..251d6aeeb 100644 --- a/tools/nntool/interpreter/commands/fquant.py +++ b/tools/nntool/interpreter/commands/fquant.py @@ -22,12 +22,12 @@ from quantization.handlers_helpers import (add_options_to_parser, get_options_from_args) from quantization.quantizer.new_quantizer import NewQuantizer +from utils.stats_funcs import STATS_BITS - +from graph.types.constant_input import ConstantInputParameters from stats.activation_ranges_collector import ActivationRangesCollector QUANTIZATION_SCHEMES = ['SQ8', 'POW2', 'FLOAT'] -from utils.stats_funcs import STATS_BITS LOG = logging.getLogger('nntool.'+__name__) @@ -46,6 +46,9 @@ class FquantCommand(NNToolShellBase): parser_fquant.add_argument('--uniform', type=float, default=0.0, help='Use uniform distribution for input with the specified max value') + parser_fquant.add_argument('--normal', + type=float, default=0.2, + help='Use normal distribution for input with the specified scale value') parser_fquant.add_argument('--num_inference', type=int, default=1, help='How many inferences') @@ -62,31 +65,34 @@ def do_fquant(self, args: argparse.Namespace): weights and input data are avalaible.""" self._check_graph() opts = get_options_from_args(args) - if self.replaying_history and self.history_stats: - astats = self.history_stats - else: - if args.seed: - np.random.seed(args.seed) - self.G.constant_store.fake = True - stats_collector = ActivationRangesCollector() - for _ in range(args.num_inference): - if args.uniform: - input_tensors = [np.random.uniform(-args.uniform, args.uniform, inp.dims.shape) - for inp in self.G.input_nodes()] - else: - input_tensors = [np.random.normal(0, 0.2, inp.dims.shape) - for inp in self.G.input_nodes()] - stats_collector.collect_stats(self.G, input_tensors) - astats = stats_collector.stats - self._record_stats(astats) - self.G.constant_store.fake = False + state = ConstantInputParameters.save_compression_state(self.G) + try: + if self.replaying_history and self.history_stats: + astats = self.history_stats + else: + if args.seed: + np.random.seed(args.seed) + ConstantInputParameters.fake(self.G, True) + stats_collector = ActivationRangesCollector() + for _ in range(args.num_inference): + if args.uniform: + input_tensors = [np.random.uniform(-args.uniform, args.uniform, inp.dims.shape) + for inp in self.G.input_nodes()] + else: + input_tensors = [np.random.normal(0, args.normal, inp.dims.shape) + for inp in self.G.input_nodes()] + stats_collector.collect_stats(self.G, input_tensors) + astats = stats_collector.stats + self._record_stats(astats) + ConstantInputParameters.fake(self.G, False) - if args.force_width: - opts['bits'] = args.force_width + if args.force_width: + opts['bits'] = args.force_width - quantizer = NewQuantizer(self.G, reset_all=True) - quantizer.options = opts - quantizer.schemes.append(args.scheme) - quantizer.set_stats(astats) - quantizer.quantize() - LOG.info("Quantization set. Use qshow command to see it.") + quantizer = NewQuantizer(self.G, reset_all=True) + quantizer.schemes.append(args.scheme) + quantizer.set_stats(current_stats=astats, current_options=opts) + quantizer.quantize() + LOG.info("Quantization set. Use qshow command to see it.") + finally: + ConstantInputParameters.restore_compression_state(self.G, state) diff --git a/tools/nntool/interpreter/commands/fusions.py b/tools/nntool/interpreter/commands/fusions.py index c0fced0c0..4fae2751d 100644 --- a/tools/nntool/interpreter/commands/fusions.py +++ b/tools/nntool/interpreter/commands/fusions.py @@ -16,10 +16,13 @@ import texttable from cmd2 import Cmd2ArgumentParser, with_argparser from interpreter.nntool_shell_base import NNToolShellBase +from quantization.quantizer.new_quantizer import NewQuantizer +from quantization.verify_quantization import verify_quantization from graph.matches.matches import (get_fusion, get_fusions, get_pow2_match_group, get_scale8_match_group) +from graph.types import ConstantInputParameters class FusionsCommand(NNToolShellBase): @@ -56,21 +59,31 @@ def do_fusions(self, args): self.ppaged(table.draw()) return self._check_graph() - if args.apply: - fusions = [get_fusion(name) for name in args.apply] - invalid_names = [args.apply[idx] for idx, fusion in enumerate(fusions) if fusion is None] - if invalid_names: - self.perror(f'fusion{"s" if len(invalid_names) > 1 else ""} {", ".join(invalid_names)} not found') + state = ConstantInputParameters.save_compression_state(self.G) + try: + if args.apply: + fusions = [get_fusion(name) for name in args.apply] + invalid_names = [args.apply[idx] for idx, fusion in enumerate(fusions) if fusion is None] + if invalid_names: + self.perror(f'fusion{"s" if len(invalid_names) > 1 else ""} {", ".join(invalid_names)} not found') + return + elif args.pow2: + fusions = [get_pow2_match_group()] + elif args.scale8: + fusions = [get_scale8_match_group()] + else: + self.perror("No fusion set selected. Nothing to do. Select --pow2 or --scale8.") return - elif args.pow2: - fusions = [get_pow2_match_group()] - elif args.scale8: - fusions = [get_scale8_match_group()] - else: - self.perror("No fusion set selected. Nothing to do. Select --pow2 or --scale8.") - return - for fusion in fusions: - fusion.match(self.G) - self.G.add_dimensions() - if self.G.quantization and not self.G.quantization.verify_quantization(self.G): - self.G.quantization = None + for fusion in fusions: + fusion.match(self.G) + self.G.add_dimensions() + if self.G.quantization and verify_quantization(self.G): + quantizer = NewQuantizer(self.G) + quantizer.quantize() + problems = verify_quantization(self.G) + if problems: + self.perror('quantization issue after fusions') + for problem in problems: + self.perror(problem) + finally: + ConstantInputParameters.restore_compression_state(self.G, state) diff --git a/tools/nntool/interpreter/commands/gen_project.py b/tools/nntool/interpreter/commands/gen_project.py index c9c91c952..b8202d8b3 100644 --- a/tools/nntool/interpreter/commands/gen_project.py +++ b/tools/nntool/interpreter/commands/gen_project.py @@ -13,7 +13,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from copy import deepcopy import csv import json import logging @@ -22,6 +21,7 @@ import shutil import subprocess import tempfile +from copy import deepcopy from io import StringIO import numpy as np @@ -35,28 +35,27 @@ generate_main_appl_make_atproject, generate_main_appl_template) from generation.default_template import (basic_kernel_header_template, basic_kernel_source_template, - default_template, dynamic_template, - header_template) + default_template) from generation.naming_convension import DefaultNamingConvension from interpreter.commands.aquant import AquantCommand from interpreter.commands.open import OpenCommand from interpreter.nntool_shell_base import NNToolShellBase, no_history -from interpreter.shell_utils import input_options +from interpreter.shell_utils import glob_input_files, input_options from utils.at_tensor_loader import at_map_tensors, at_tensor_loader_int from utils.data_importer import import_data from utils.node_id import NodeId -from graph.types.input_output import InputParameters +from graph.types import InputParameters LOG = logging.getLogger("nntool") def skip_existing_files(destdir): - def fn(_, contents): + def func(_, contents): return [file for file in contents if os.path.exists(os.path.join(destdir, file)) and not os.path.isdir(os.path.join(destdir, file))] - return fn + return func def parse_last_open(history): @@ -67,8 +66,11 @@ def parse_last_open(history): break return args + def build_last_open_args(args): - argnames = [argname for argname in dir(args) if not argname.startswith('_') and argname not in ['nnfile', 'new', 'load_quantization', 'orgmodel_path']] + argnames = [argname for argname in dir(args) + if not argname.startswith('_') and argname not in [ + 'nnfile', 'new', 'load_quantization', 'orgmodel_path']] strargs = [] for argname in argnames: attr = getattr(args, argname) @@ -88,6 +90,7 @@ def build_last_open_args(args): strargs.append(f'--{argname} {attr}') return ' '.join(strargs) + class GenProjectCommand(NNToolShellBase): # GEN PROJECT COMMAND parser_gen_proj = Cmd2ArgumentParser() @@ -99,22 +102,25 @@ class GenProjectCommand(NNToolShellBase): help='overwrite existing files') parser_gen_proj.add_argument('--test_results', action='store_true', - help='generate fake inputs in the quantization range and generate a check of the results') + help='generate fake inputs in the quantization range ' + 'and generate a check of the results') parser_gen_proj.add_argument('--atproject', action='store_true', help='generate a native autotiler project with the model already generated') parser_gen_proj.add_argument('--dump_tensors', action='store_true', help='print generated tensors') - parser_gen_proj.add_argument('--input_file', + parser_gen_proj.add_argument('--input_file', nargs='+', completer_method=Cmd.path_complete, default=None, help='if test_results, use this file to run inference') parser_gen_proj.add_argument('--input_tensors', - type=str, - help='produce input tensors from tensor store with supplied name') + type=str, + help='produce input tensors from tensor store with supplied name') parser_gen_proj.add_argument('--save_inputs', action='store_true', help='if test_results, save the inputs in files also') + parser_gen_proj.add_argument('--tolerance', type=float, default=0.0, + help="if test_results active, use this tolerance to check the results") input_options(parser_gen_proj) @with_argparser(parser_gen_proj) @@ -152,7 +158,8 @@ def do_gen_project(self, args): input_file=args.input_file, input_tensors=input_tensors, input_args=self._get_input_args(args), - gen_atproject=args.atproject) + gen_atproject=args.atproject, + tolerance=args.tolerance) self.pfeedback(f'project generated in {args.project_folder}') @@ -194,10 +201,12 @@ class PerformanceCommand(NNToolShellBase): help='produce input tensors from tensor store with supplied name') parser_perf.add_argument('--path', type=str, - help='store the generated project in this directory rather than a temporary one - will overwrite files in directory') + help=('store the generated project in this directory rather than a temporary one' + ' - will overwrite files in directory')) parser_perf.add_argument('--logfile', type=str, - help='store the generated project in this directory rather than a temporary one - will overwrite files in directory') + help=('store the generated project in this directory rather than a temporary one' + ' - will overwrite files in directory')) @with_argparser(parser_perf) @no_history @@ -244,7 +253,8 @@ def do_performance(self, args): self.pfeedback( f'compiling and running project with {jobs} threads') with open(os.path.join(directory, 'run_make.sh'), 'w') as fp: - fp.write(make_script(directory, jobs, platform=args.platform, pmsis_os=args.pmsis_os)) + fp.write(make_script(directory, jobs, + platform=args.platform, pmsis_os=args.pmsis_os)) res = subprocess.run(['/bin/bash', os.path.join(directory, 'run_make.sh')], capture_output=True, text=True, @@ -258,8 +268,8 @@ def do_performance(self, args): if res.returncode: if args.logfile: - with open(args.logfile, "w") as f: - f.write(res.stderr) + with open(args.logfile, "w") as fp: + fp.write(res.stderr) else: self.ppaged(f'STDERR\n\n{res.stderr}') self.perror( @@ -331,9 +341,10 @@ def make_script(tempdir, jobs=1, platform=None, pmsis_os="freertos"): def get_rand(shape, low_high=None): + val = np.random.randn(*shape).astype(np.float32) if low_high: - return (np.random.randint(low_high[0] * 127, low_high[1] * 127, size=shape).astype(np.float32))/127 - return np.random.randn(*shape).astype(np.float32) + val = (val * (low_high[1]-low_high[0])) + low_high[0] + return val def process_script(script): @@ -344,8 +355,8 @@ def process_script(script): continue if line.startswith('aquant'): # add abs path for input files and try to remake command - args = aquant_parser.parse_args(line.split(' ')[1:]) - input_files = [os.path.abspath(f) for f in args.input_files] + args = aquant_parser.parse_args(line.rstrip().split(' ')[1:]) + input_files = [os.path.abspath(f) for f in args.input_files if f != ''] opts = [f"--{k} {v}" if v != True else f"--{k}" for k, v in vars(args).items() if v and k != 'input_files'] line = " ".join(['aquant'] + opts + input_files) @@ -355,7 +366,7 @@ def process_script(script): def gen_project(G, settings, project_folder, script_commands, overwrite=False, performance=False, quantized=False, test_results=False, save_inputs=False, input_file=None, input_args=None, - gen_atproject=False, dump_tensors=False, input_tensors=None): + gen_atproject=False, dump_tensors=False, input_tensors=None, tolerance=0.0): settings = deepcopy(settings) settings['graph_monitor_cycles'] = True settings['graph_produce_node_names'] = True @@ -375,10 +386,11 @@ def gen_project(G, settings, project_folder, script_commands, overwrite=False, p for i, node in enumerate(G.input_nodes()): out_q = G.quantization[NodeId(node)].out_qs[0] if input_file: - finput = import_data(input_file, **input_args) + file_per_input = glob_input_files(input_file, G.num_inputs)[0] + finput = import_data(file_per_input[i], **input_args) else: - min_val = out_q.min_val if not out_q.is_floating else -1.0 - max_val = out_q.max_val if not out_q.is_floating else 1.0 + min_val = out_q.min if not out_q.is_floating else -1.0 + max_val = out_q.max if not out_q.is_floating else 1.0 finput = get_rand(node.out_dims[0].shape, low_high=( min_val, max_val)) finput_tensors.append(finput) @@ -405,7 +417,7 @@ def gen_project(G, settings, project_folder, script_commands, overwrite=False, p if overwrite or not os.path.exists(main_c): with open(os.path.join(project_folder, f"{code_gen.project_name}.c"), "w") as output_fp: output_fp.write(generate_main_appl_template( - G, code_gen, input_tensors, qoutputs)) + G, code_gen, input_tensors, qoutputs, tolerance)) if overwrite or not os.path.exists(main_h): with open(os.path.join(project_folder, f"{code_gen.project_name}.h"), "w") as output_fp: output_fp.write(generate_main_appl_header(G, code_gen)) diff --git a/tools/nntool/interpreter/commands/graph.py b/tools/nntool/interpreter/commands/graph.py index a9c414e02..d07f9c052 100644 --- a/tools/nntool/interpreter/commands/graph.py +++ b/tools/nntool/interpreter/commands/graph.py @@ -66,7 +66,7 @@ def do_graph(self, args: argparse.Namespace): table_options(parser_show, default_width=180) parser_show.add_argument('step', nargs=(0, 1), help='step to show or nothing to show all.' + NODE_SELECTOR_HELP, - completer_method=NNToolShellBase.node_step_or_name_completer) + completer_method=NNToolShellBase.node_step_or_name_completer(allow_comma=True)) parser_show.add_argument('-s', '--show_constants', action='store_true', help='Show constant parameters nodes') @@ -77,7 +77,7 @@ def do_show(self, args: argparse.Namespace): Display the structure of the graph""" self._check_graph() if args.step: - nodes, _ = self.get_node_step_or_name(args.step) + nodes, _ = self.get_node_step_or_name(args.step, allow_comma=True) if not nodes: self.do_help('show') return diff --git a/tools/nntool/interpreter/commands/nodeoption.py b/tools/nntool/interpreter/commands/nodeoption.py index d1fb528cc..7298437e6 100644 --- a/tools/nntool/interpreter/commands/nodeoption.py +++ b/tools/nntool/interpreter/commands/nodeoption.py @@ -45,7 +45,9 @@ def nodeoption_value_choices_method(arg_tokens): class NodeoptionCommand(NNToolShellBase): # nodeoption COMMAND parser_nodeoption = NNToolArguementParser() - parser_nodeoption.add_argument('step', nargs=(0, 1), completer_method=NNToolShellBase.node_step_or_name_completer, + parser_nodeoption.add_argument('step', nargs=(0, 1), + completer_method=NNToolShellBase.node_step_or_name_completer( + allow_comma=True), help='Set this step number or name. ' + NODE_SELECTOR_HELP) parser_nodeoption.add_argument('parameter', nargs=(0, 1), choices_method=nodeoption_choices_method, help='Set this parameter') @@ -63,7 +65,7 @@ def do_nodeoption(self, args): print("{}: {}".format(nodeid, elem)) return - nodes = self.get_node_step_or_name(args.step)[0] + nodes = self.get_node_step_or_name(args.step, allow_comma=True)[0] if args.parameter is None: nothing = True @@ -89,7 +91,7 @@ def do_nodeoption(self, args): try: option_type = node_options.valid_options[args.parameter] except KeyError: - self.perror( + self.pwarning( f"{args.parameter} is not a valid parameter for node {node.name}") continue val = option_type(args.value) @@ -98,12 +100,13 @@ def do_nodeoption(self, args): if args.parameter == "RNN_STATES_AS_INPUTS": node.rnn_states_as_inputs = (val, self.G) if args.parameter == "LSTM_OUTPUT_C_STATE": - node.lstm_output_c_state = (val, self.G) + node.lstm_output_c_state = val + node.set_c_state_as_output(self.G) else: setattr(node_options, args.parameter, val) self.pfeedback( f'set option {args.parameter} on node {node.name} to {val}') self.G.node_options[NodeId(node)] = node_options except KeyError: - self.perror( + self.pwarning( f"{args.parameter} is not a valid parameter for node {node.name}") diff --git a/tools/nntool/interpreter/commands/open.py b/tools/nntool/interpreter/commands/open.py index bb9fd7095..2db6d849f 100644 --- a/tools/nntool/interpreter/commands/open.py +++ b/tools/nntool/interpreter/commands/open.py @@ -14,8 +14,10 @@ # along with this program. If not, see . import argparse +import json import logging import os +import numpy as np from cmd2 import Cmd, Cmd2ArgumentParser, with_argparser from importer.common.handler_options import HandlerOptions @@ -28,6 +30,8 @@ LOG = logging.getLogger("nntool") +STATE_EXTENSION = '.json' + NO_GRAPH = { 'G': None, 'graph_file': "", @@ -40,6 +44,13 @@ }, } +valid_keys_arrays = { + '*': { + 'type': lambda x: eval(f'np.array({x})', {}, {'np': np}) + }, +} + + def add_open_options(parser): # add all the options defined by import handlers # if a boolean option has a default of True then add a --no-option-name @@ -69,6 +80,47 @@ def add_open_options(parser): metavar="KEY=VALUE", help='values to substitute for unknown dimensions in the form var=val', ) + parser.add_argument('--input_shapes', + nargs='*', + action=kwargs_append_action, + kwargs_valid_keys=valid_keys_arrays, + metavar="KEY=ARRAY_VALUE", + help=('shape to override input shape with. should be in the form input_name=[dim, dim, dim, etc]' + 'where dim is either an integer or None if this axis should not be overriden'), + ) + parser.add_argument('--fixed_inputs', + nargs='*', + action=kwargs_append_action, + kwargs_valid_keys=valid_keys_arrays, + metavar="KEY=ARRAY_VALUE", + help='inputs to fix to an array value. should be in the form input_name=array of arrays ...' + ) + parser.add_argument('--out_ranges', + completer_method=Cmd.path_complete, + help='path to json file with: {"node_name": {"range": [min, max], "n_bits": 8, "per_channel": None, "dtype": np.int8}} out range to override particular qrecs' + ) + + +def parse_open_options(file_path, args, settings): + _, ext = os.path.splitext(file_path) + ext = ext.lower() + + if ext == STATE_EXTENSION: + return True, file_path, {'orgmodel_path': args.orgmodel_path} + else: + opts = {k: getattr(args, k) if (option['val_type'] != bool or not option['default']) + else not getattr(args, f'no_{option["name"]}') + for k, option in HandlerOptions.get_all_handler_options().items()} + + opts['substitutions'] = args.subs + opts['input_shapes'] = args.input_shapes + opts['fixed_inputs'] = args.fixed_inputs + if args.out_ranges: + with open(args.out_ranges) as f: + opts['ranges_dict'] = json.load(f) + + opts['anonymise'] = settings['anonymise'] + return False, file_path, opts class OpenCommand(NNToolShellBase): @@ -89,37 +141,21 @@ class OpenCommand(NNToolShellBase): action='store_true') add_open_options(parser_open) - def __get_opts(self, args): - return {k: getattr(args, k) if (option['val_type'] != bool or not option['default']) - else not getattr(args, f'no_{option["name"]}') - for k, option in HandlerOptions.get_all_handler_options().items()} - def __open_graph(self, args): graph_file = os.path.expanduser(args.nnfile) - _, ext = os.path.splitext(graph_file) - ext = ext.lower() + is_state_file, graph_file, opts = parse_open_options( + graph_file, args, self.settings) - if ext == self.STATE_EXTENSION: + if is_state_file: LOG.info("opening state file %s", graph_file) self.load_state_file(graph_file, args.orgmodel_path) else: - opts = self.__get_opts(args) - opts['substitutions'] = args.subs - - opts['anonymise'] = self.settings['anonymise'] LOG.info("opening graph file %s load_quantization = %s", graph_file, opts['load_quantization']) - G = create_graph(graph_file, opts=opts) - G.add_dimensions() - pad_fuser = MatchFusePad() - pad_fuser.match(G) - G.add_dimensions() - self.G = G - self.graph_file = graph_file - self._reset_history() + self.open_graph(graph_file, **opts) self.settings['load_quantization'] = bool( opts['load_quantization']) @@ -146,3 +182,13 @@ def do_open(self, args: argparse.Namespace): self.__open_graph(args) self._update_prompt() self.py_locals['G'] = self.G + + def open_graph(self, file_path, **kwargs): + G = create_graph(file_path, opts=kwargs) + G.add_dimensions() + pad_fuser = MatchFusePad() + pad_fuser.match(G) + G.add_dimensions() + self.G = G + self.graph_file = file_path + self._reset_history() diff --git a/tools/nntool/interpreter/commands/qshow.py b/tools/nntool/interpreter/commands/qshow.py index 0a610d80b..5c85d2921 100644 --- a/tools/nntool/interpreter/commands/qshow.py +++ b/tools/nntool/interpreter/commands/qshow.py @@ -15,7 +15,7 @@ import logging -from cmd2 import Cmd2ArgumentParser, with_argparser +from cmd2 import with_argparser from interpreter.nntool_shell_base import NNToolArguementParser, NNToolShellBase, NODE_SELECTOR_HELP, no_history from interpreter.shell_utils import output_table, table_options @@ -30,7 +30,7 @@ class QshowCommand(NNToolShellBase): table_options(parser_qshow) parser_qshow.add_argument('step', nargs=(0, 1), help='step to tune. ' + NODE_SELECTOR_HELP, - completer_method=NNToolShellBase.node_step_or_name_completer) + completer_method=NNToolShellBase.node_step_or_name_completer(allow_comma=True)) @with_argparser(parser_qshow) @no_history @@ -40,7 +40,7 @@ def do_qshow(self, args): self._check_graph() self._check_quantized() if args.step: - nodes, _ = self.get_node_step_or_name(args.step) + nodes, _ = self.get_node_step_or_name(args.step, allow_comma=True) if not nodes: return else: diff --git a/tools/nntool/interpreter/commands/qtune.py b/tools/nntool/interpreter/commands/qtune.py index 727637264..a77d1d925 100644 --- a/tools/nntool/interpreter/commands/qtune.py +++ b/tools/nntool/interpreter/commands/qtune.py @@ -1,4 +1,4 @@ -# Copyright (C) 2020 GreenWaves Technologies, SAS +# Copyright (C) 2020, 2021 GreenWaves Technologies, SAS # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -13,92 +13,123 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from cmd2 import with_argparser +import json +import argparse +from functools import reduce +from pathlib import Path + +from cmd2 import Cmd, with_argparser from interpreter.nntool_shell_base import (NODE_SELECTOR_HELP, NNToolArguementParser, NNToolShellBase) -from quantization.handlers_helpers import (add_options_to_parser, - get_set_options_from_args) -from quantization.tuneq import (FLOAT_DTYPES, POW2_DTYPES, tune_float, - tune_options, tune_pow2, tune_scaled) +from quantization.handlers_helpers import get_all_options_by_params +from quantization.quantizer.new_quantizer import NewQuantizer +from utils.argparse_kwargs import kwargs_append_action +from utils.json_serializable import JsonSerializableStateDecoder, JsonSerializableStateEncoder +from utils.node_id import NodeId + +SCHEME_OPTIONS = { + 'choices': ['scaled', 'float', 'pow2'] +} + +SCHEME_NAME_MAPPINGS = { + 'scaled': 'SQ8', + 'pow2': 'POW2', + 'float': 'FLOAT', +} +def valid_keys(first_arg_nodes): + all_options = get_all_options_by_params() + options = {} + for node in first_arg_nodes: + this_options = all_options.get(node.__class__, {}) + options.update(this_options) + options['scheme'] = SCHEME_OPTIONS + return options + +def capture_shell(nntool_shell): + return argparse.Namespace(shell=nntool_shell) class QtuneCommand(NNToolShellBase): # QTUNE COMMAND parser_tune = NNToolArguementParser() + + def qtune_first_arg_mapper(self, nodestr): + return self.get_node_step_or_name(nodestr, allow_comma=True)[0] + parser_tune.add_argument( - 'step', - help='step to tune. ' + NODE_SELECTOR_HELP, - completer_method=NNToolShellBase.node_step_or_name_completer) - parser_tune_sub = parser_tune.add_subparsers( - title='qtune subcommands', help='atune action to carry out on selected layer') - parser_tune_set_float = parser_tune_sub.add_parser( - 'float', - help='tune quantization scheme of layer to float') - parser_tune_set_float.add_argument( - 'float_type', choices=['float16', 'bfloat16', 'float32'], - help='float type to use for selected layers' - ) - parser_tune_set_scaled = parser_tune_sub.add_parser( - 'scaled', - help='tune quantization scheme of layer to scaled') - parser_tune_set_pow2 = parser_tune_sub.add_parser( - 'pow2', help='tune quantization scheme of layer to pow2') - parser_tune_set_pow2.add_argument( - 'int_type', choices=['int8', 'int16'], - help='integer type to use for selected layers' - ) - parser_tune_set_option = parser_tune_sub.add_parser( - 'option', help='set specific quantizer options on a layer or layers') - add_options_to_parser(parser_tune_set_option) - - def qtune_set_options(self, nodes, node_descr, args): - self._check_quantized() - options = get_set_options_from_args(args) - tune_options(self.G, nodes, options) - self.pfeedback(f'set options on {node_descr}') - - def qtune_set_float(self, nodes, node_descr, args): - float_dtype = FLOAT_DTYPES.get(args.float_type) - if float_dtype is None: - self.perror(f'invalid float type {args.float_type}') - return - tune_float(self.G, nodes, args.float_type) - self.pfeedback(f'set {node_descr} to {args.float_type} operation') - - def qtune_set_scaled(self, nodes, node_descr, args): - self._check_quantized() - tune_scaled(self.G, nodes) - self.pfeedback(f'set {node_descr} to scaled operation') + '--step', + nargs='+', + kwargs_valid_keys=valid_keys, + kwargs_first_arg_completer=NNToolShellBase.node_step_or_name_completer(allow_comma=True), + kwargs_first_arg_mapper=qtune_first_arg_mapper, + action=kwargs_append_action, + metavar="STEP KEY1=VALUE1 KEY2=VALUE2", + help='step to tune followed by key=value pairs. Step can be specified as:\n' + NODE_SELECTOR_HELP, + completer_method=kwargs_append_action.get_completer_method( + valid_keys, + kwargs_first_arg_completer=NNToolShellBase.node_step_or_name_completer(allow_comma=True), + kwargs_first_arg_mapper=qtune_first_arg_mapper)) - def qtune_set_pow2(self, nodes, node_descr, args): - self._check_quantized() - pow2_dtype = POW2_DTYPES.get(args.int_type) - if pow2_dtype is None: - self.perror(f'invalid int type {args.int_type}') - return - tune_pow2(self.G, nodes, args.int_type) - self.pfeedback(f'set {node_descr} to pow2 {args.int_type} operation') - - parser_tune_set_option.set_defaults(func=qtune_set_options) - parser_tune_set_float.set_defaults(func=qtune_set_float) - parser_tune_set_scaled.set_defaults(func=qtune_set_scaled) - parser_tune_set_pow2.set_defaults(func=qtune_set_pow2) - - @with_argparser(parser_tune) + parser_tune.add_argument( + '--json', + completer_method=Cmd.path_complete, + help='json file to save quantization options') + + @with_argparser(parser_tune, ns_provider=capture_shell) def do_qtune(self, args): """ Tune quantization of graph.""" self._check_graph() - nodes, node_descr = self.get_node_step_or_name(args.step) - if not nodes: - return - func = getattr(args, 'func', None) - - if func is not None: - # Call whatever subcommand function was selected - func(self, nodes, node_descr, args) + self._check_quantized() + + def reduction(state, x): + nodes = x[0] + opts = x[1] + if 'scheme' in opts: + opts['scheme'] = SCHEME_NAME_MAPPINGS.get(opts['scheme']) + for node in nodes: + props = state.setdefault(NodeId(node), {}) + props.update(opts) + return state + + if args.json: + json_path = Path(args.json) + if not json_path.exists() or not json_path.is_file(): + self.perror(f'{json_path} does not exist or is not a file') + return + with json_path.open('r') as fp: + options = json.load(fp, cls=JsonSerializableStateDecoder) else: - # No subcommand was provided, so call help - self.do_help('qtune') + options = {} + + if args.step: + options = reduce(reduction, args.step, options) + + quantizer = NewQuantizer(self.G) + quantizer.options.update(options) + quantizer.quantize() + self.pfeedback('quantization options set') + +class QTuneSaveCommand(NNToolShellBase): + + # QTUNESAVE COMMAND + parser_qtune_save = NNToolArguementParser() + parser_qtune_save.add_argument('jsonfile', + completer_method=Cmd.path_complete, + help='json file to save quantization options') + + @with_argparser(parser_qtune_save) + def do_qtunesave(self, args): + """ +Save set quantization options.""" + self._check_graph() + self._check_quantized() + save_path = Path(args.jsonfile).with_suffix('.json') + options = self.G.quantization.options.copy() + if 'scheme' not in options: + options['scheme'] = self.G.quantization.scheme_priority[0] + with save_path.open('w') as fp: + json.dump(options, fp, cls=JsonSerializableStateEncoder, indent=2) + self.pfeedback(f'quantization options saved to {save_path}') diff --git a/tools/nntool/interpreter/commands/remove.py b/tools/nntool/interpreter/commands/remove.py index f07529f18..f5b716a7d 100644 --- a/tools/nntool/interpreter/commands/remove.py +++ b/tools/nntool/interpreter/commands/remove.py @@ -18,7 +18,7 @@ from cmd2 import Cmd2ArgumentParser, with_argparser from interpreter.nntool_shell_base import NNToolShellBase -from graph.types import Parameters +from graph.types import ReshapeParameters, InputParameters, OutputParameters, ConstantInputParameters from graph.types.base import NNEdge @@ -51,122 +51,76 @@ def do_remove(self, args: argparse.Namespace): node_from = self.G[args.nodes[0]] if len(args.nodes) == 1: if args.up: - out_edges = self.G.indexed_out_edges(node_from.name) - self.remove_to_input(node_from) + nodes_above = self.G.nodes_above(node_from) + out_edges = self.G.indexed_out_edges(node_from) + nodes_above.add(node_from) + input_names = sorted( + [node.name for node in nodes_above if isinstance(node, InputParameters)]) + self.G.remove_all(nodes_above | {node_from}) for idx, edge_group in enumerate(out_edges): - in_node = self.G.add_input(node_from.out_dims[idx]) + name = input_names.pop(0) if input_names else None + in_node = self.G.add_input( + node_from.out_dims[idx], name=name) self.pfeedback(f'adding input {in_node.name}') for edge in edge_group: self.G.add_edge(NNEdge(from_node=in_node, to_idx=edge.to_idx, to_node=edge.to_node)) else: + nodes_below = self.G.nodes_below(node_from) + for node in list(nodes_below): + nodes_below.update(edge.from_node for edge in self.G.in_edges(node) + if isinstance(edge.from_node, ConstantInputParameters)) + if self.G.is_vertex_cut(nodes_below): + self.perror( + f'removing everything below {node_from.name} would split the graph which is not permitted') + return + nodes_below.add(node_from) in_edges = self.G.in_edges(node_from.name) - self.remove_to_output(node_from) + output_names = sorted( + [node.name for node in nodes_below if isinstance(node, OutputParameters)]) + self.G.remove_all(nodes_below) for edge in in_edges: - out_node = self.G.add_output() + name = output_names.pop(0) if output_names else None + out_node = self.G.add_output(name=name) self.pfeedback(f'adding output {out_node.name}') self.G.add_edge(NNEdge(from_node=edge.from_node, from_idx=edge.from_idx, to_node=out_node)) else: node_to = self.G[args.nodes[1]] - edge_from = self.G.out_edges(node_from.name) - edge_to = self.G.in_edges(node_to.name) - if len(edge_from) != 1: - self.perror("node from has more than one out edge") + nodes_between = self.G.nodes_between(node_from, node_to) + if not nodes_between: + self.perror( + f'there are no nodes between {node_from.name} and {node_to.name}') return - edge_from = edge_from[0] - if len(edge_to) != 1: - edge_to = self.find_to(edge_from, set(edge_to)) - if edge_to is None: - self.perror("nodes don't seem to be connected") - return - else: - edge_to = edge_to[0] - if edge_from == edge_to: - self.perror("nodes are directly connected") + if not self.G.nodes_between_in(node_from, node_to, nodes_between): + self.perror( + f'all paths from {node_from.name} must lead to {node_to.name}') return - try: - edges = paths_from(self.G, node_from, node_to) - except ValueError as ex: - self.perror(ex) + + edges_from = self.G.indexed_out_edges(node_from) + edges_to = self.G.indexed_in_edges(node_to.name) + if len(edges_from) != len(edges_to): + self.perror( + f"{node_from.name} has a different number of outputs than {node_to.name}'s inputs") return - edges.remove(edge_from) - remove_nodes(self.G, edges) - new_edge = edge_from.clone(to_node = edge_to.to_node, to_idx = edge_to.to_idx) - self.G.add_edge(new_edge) + for idx, _ in enumerate(edges_from): + if node_from.out_dims[idx].size() != node_to.in_dims[idx].size(): + self.perror( + f"{node_from.name} output {idx} has a different size to {node_to.name}'s input") + return + self.G.remove_all(nodes_between) + for idx, _ in enumerate(edges_from): + if node_from.out_dims[idx].shape != node_to.in_dims[idx].shape: + reshape = ReshapeParameters( + self.G.unique_name(f'{node_from.name}_reshape{idx}'), + old_shape=node_from.out_dims[idx], + shape=node_to.in_dims[idx]) + self.G.add_edge(NNEdge(from_node=node_from, + from_idx=idx, to_node=reshape)) + self.G.add_edge( + NNEdge(from_node=reshape, to_node=node_to, to_idx=idx)) + else: + self.G.add_edge(NNEdge(from_node=node_from, + from_idx=idx, to_node=node_to, to_idx=idx)) self.G.add_dimensions() - - def find_to(self, edge_from, edges): - if edge_from in edges: - return edge_from - for edge in self.G.out_edges(edge_from.to_node.name): - res = self.find_to(edge, edges) - if res: - return res - return None - - def remove_to_output(self, start_node, visited_edges=None): - if visited_edges is None: - visited_edges = set() - for edge in self.G.out_edges(start_node.name): - visited_edges.add(edge) - # don't continue here unless we have visited all the in edges to the node below - if not set(self.G.in_edges(edge.to_node.name)).issubset(visited_edges): - continue - self.remove_to_output(edge.to_node, visited_edges=visited_edges) - self.pfeedback(f'removing node {start_node.name}') - self.G.remove(start_node) - - def remove_to_input(self, start_node, visited=None, visited_edges=None): - if visited is None: - visited = set() - visited_edges = set() - for edge in self.G.in_edges(start_node.name): - visited_edges.add(edge) - # don't continue here unless we have visited all the out edges to the node above - if not set(self.G.out_edges(edge.from_node.name)).issubset(visited_edges): - continue - self.remove_to_input(edge.from_node, visited_edges=visited_edges) - self.pfeedback(f'removing node {start_node.name}') - self.G.remove(start_node) - - -def remove_nodes(G, edges): - for edge in edges: - G.remove(edge.from_node) - - -def up_edges(G, cur_node, exclude=None): - in_edges = set(G.in_edges(cur_node.name)) - if exclude: - in_edges -= exclude - if len(in_edges) > 1: - raise ValueError() - if in_edges: - return in_edges | up_edges(G, next(iter(in_edges)).from_node) - return set() - - -def paths_from(G, node_from, node_to): - if isinstance(node_from, Parameters): - in_shape = None - this_up = set() - else: - edge_from = node_from - node_from = edge_from.to_node - if node_from == node_to: - return set([edge_from]) - this_up = up_edges(G, node_from, exclude=set([edge_from])) - in_shape = node_from.in_dims[edge_from.to_idx].shape - res = set() - for edge in G.out_edges(node_from.name): - if in_shape is not None and edge.from_node.out_dims[edge.from_idx].shape != in_shape: - raise ValueError("%s modifies shape of tensor" % - (edge.from_node.name)) - this_res = paths_from(G, edge, node_to) - res |= set([edge]) | this_res - if res: - return this_up | res - raise ValueError("%s has no outputs and is not the to node" % - (node_from.name)) diff --git a/tools/nntool/interpreter/commands/save_state.py b/tools/nntool/interpreter/commands/save_state.py index 9f0db5757..e018ee3a8 100644 --- a/tools/nntool/interpreter/commands/save_state.py +++ b/tools/nntool/interpreter/commands/save_state.py @@ -19,12 +19,12 @@ import os from cmd2 import Cmd, Cmd2ArgumentParser, with_argparser +from interpreter.commands.open import STATE_EXTENSION from interpreter.nntool_shell_base import NNToolShellBase, no_history from utils.json_serializable import JsonSerializableStateEncoder LOG = logging.getLogger("nntool") -STATE_EXTENSION = ".json" class SaveStateCommand(NNToolShellBase): # SAVE_STATE COMMAND @@ -56,5 +56,6 @@ def do_save_state(self, args): graph_base, _ = os.path.splitext(self.G.graph_identity.filename) state_filename = graph_base + STATE_EXTENSION with open(state_filename, mode='w+') as fp: - json.dump(self.graph_history, fp, indent=2, cls=JsonSerializableStateEncoder) + json.dump(self.graph_history, fp, indent=2, + cls=JsonSerializableStateEncoder) LOG.info("saved state to %s", state_filename) diff --git a/tools/nntool/interpreter/commands/tensors.py b/tools/nntool/interpreter/commands/tensors.py index 79a509412..4c59219a8 100644 --- a/tools/nntool/interpreter/commands/tensors.py +++ b/tools/nntool/interpreter/commands/tensors.py @@ -134,6 +134,10 @@ def do_tensors(self, args): f"{tensor_name} doesn't have a tensor at index {args.index} for that step") return tensor = tensor[args.index] + if tensor is None: + self.perror( + "{} doesn't have this tensor for that step".format(tensor_name)) + return if args.channel is not None: t_shape = tensor.shape if len(t_shape) < len(args.channel): diff --git a/tools/nntool/interpreter/commands/validation.py b/tools/nntool/interpreter/commands/validation.py index 012600c3b..d0d4dc64a 100644 --- a/tools/nntool/interpreter/commands/validation.py +++ b/tools/nntool/interpreter/commands/validation.py @@ -31,25 +31,17 @@ LOG = logging.getLogger('nntool.'+__name__) -class ValidationCommand(NNToolShellBase): - # VAL COMMAND - parser_val = Cmd2ArgumentParser() - parser_val.add_argument('-q', '--quantize', action='store_true', - help='quantize the graph (must have already set quantization)') - parser_val.add_argument('-s', '--silent', action='store_true', - help='do not print progress for each input') - parser_val.add_argument('--dataset_dir', completer_method=Cmd.path_complete, - help='path to the directory of samples for test') - parser_val.add_argument('--class_thr', default=0, type=float, - help='Threshold to consider a valid classification') - parser_val.add_argument('--progress_every', default=100, type=int, - help='print accuracy every n computed predictions') - parser_val.add_argument('--binary_classification', action='store_true', - help='output is one dimensional') - parser_val.add_argument('--prediction_step_idx', default=-1, type=int, - help='graph step index for the predicted value,\ +def validation_options(parser): + parser.add_argument('-q', '--quantize', action='store_true', + help='quantize the graph (must have already set quantization)') + parser.add_argument('--binary_classification', action='store_true', + help='output is one dimensional') + parser.add_argument('--class_thr', default=0, type=float, + help='Threshold to consider a valid classification') + parser.add_argument('--prediction_step_idx', default=-1, type=int, + help='graph step index for the predicted value,\ default is the last layer of the network') - parser_val_group = parser_val.add_mutually_exclusive_group(required=False) + parser_val_group = parser.add_mutually_exclusive_group(required=False) parser_val_group.add_argument('--label_json', default=None, completer_method=Cmd.path_complete, help='path to the .json object containing labels annotation \ { "filename0" : label0, "filename1": label1, ... }') @@ -63,6 +55,36 @@ class ValidationCommand(NNToolShellBase): instances = {images, annotations, categories}\ instances["images"] = { file_name:.., image_id:.. }\ instances["annotations"] = { image_id:.., label:..}') + + +def get_validator(args): + if args.vww_instances_file: + return ValidateFromVWWInstances(args.vww_instances_file, + class_thr=args.class_thr, + binary_classification=args.binary_classification) + if args.label_json: + return ValidateFromJSON(args.label_json, + class_thr=args.class_thr, + binary_classification=args.binary_classification) + if args.class_number is not None: + return ValidateFromClass(args.class_number, + class_thr=args.class_thr, + binary_classification=args.binary_classification) + + return ValidateFromName(class_thr=args.class_thr, + binary_classification=args.binary_classification) + + +class ValidationCommand(NNToolShellBase): + # VAL COMMAND + parser_val = Cmd2ArgumentParser() + parser_val.add_argument('-s', '--silent', action='store_true', + help='do not print progress for each input') + parser_val.add_argument('--dataset_dir', completer_method=Cmd.path_complete, + help='path to the directory of samples for test') + parser_val.add_argument('--progress_every', default=100, type=int, + help='print accuracy every n computed predictions') + validation_options(parser_val) input_options(parser_val) @with_argparser(parser_val) @@ -91,33 +113,22 @@ def do_validate(self, args: argparse.Namespace): number_samples = sum(1 for _ in glob_input_files(args.input_files)) - if args.vww_instances_file: - validation = ValidateFromVWWInstances(args.vww_instances_file, - class_thr=args.class_thr, - binary_classification=args.binary_classification) - elif args.label_json: - validation = ValidateFromJSON(args.label_json, - class_thr=args.class_thr, - binary_classification=args.binary_classification) - elif args.class_number is not None: - validation = ValidateFromClass(args.class_number, - class_thr=args.class_thr, - binary_classification=args.binary_classification) - else: - validation = ValidateFromName(class_thr=args.class_thr, - binary_classification=args.binary_classification) + validation = get_validator(args) try: ExecutionProgress.start() for i, file_per_input in enumerate(glob_input_files(args.input_files, self.G.num_inputs)): if not args.silent: - LOG.info("input file %s", file_per_input) - data = [import_data(input_file, **input_args) for input_file in file_per_input] + LOG.info("input file %s", file_per_input) + data = [import_data(input_file, **input_args) + for input_file in file_per_input] executer = GraphExecuter(self.G, qrecs=self.G.quantization) - outputs = executer.execute(data, qmode=qmode, silent=args.silent) + outputs = executer.execute( + data, qmode=qmode, silent=args.silent) - predicted_values = np.asarray(outputs[args.prediction_step_idx]) + predicted_values = np.asarray( + outputs[args.prediction_step_idx]) good_prediction, class_predicted, real_class, margin = validation.validate( file_per_input[0], predicted_values) good_predictions.append(good_prediction) @@ -130,7 +141,8 @@ def do_validate(self, args: argparse.Namespace): LOG.info('Prediction is %s predicted %s correct %s margin %s', good_prediction, class_predicted, real_class, margin) if not i % args.progress_every and i > 0: - LOG.info('ACCURACY: %.3f %%', 100*sum(good_predictions)/len(good_predictions)) + LOG.info('ACCURACY: %.3f %%', 100 * + sum(good_predictions)/len(good_predictions)) ExecutionProgress.progress(i, number_samples) ExecutionProgress.end() diff --git a/tools/nntool/interpreter/nntool_shell.py b/tools/nntool/interpreter/nntool_shell.py index e4c09d221..925bf4f29 100644 --- a/tools/nntool/interpreter/nntool_shell.py +++ b/tools/nntool/interpreter/nntool_shell.py @@ -14,11 +14,12 @@ # along with this program. If not, see . import logging -# pylint: disable=wildcard-import -from .commands import * from interpreter.nntool_shell_base import NNToolShellBase +# pylint: disable=wildcard-import,unused-wildcard-import +from .commands import * + LOG = logging.getLogger("nntool") VALID_LOG_LEVELS = [ diff --git a/tools/nntool/interpreter/nntool_shell_base.py b/tools/nntool/interpreter/nntool_shell_base.py index 264ffa2d2..a79fce082 100644 --- a/tools/nntool/interpreter/nntool_shell_base.py +++ b/tools/nntool/interpreter/nntool_shell_base.py @@ -17,11 +17,12 @@ import logging import os import re -from argparse import OPTIONAL +from argparse import OPTIONAL, Namespace from copy import deepcopy from itertools import chain from typing import Any +import numpy as np from cmd2 import Cmd, Cmd2ArgumentParser, CompletionItem, plugin from execution.execution_progress import ExecutionProgress from importer.common.handler_options import HandlerOptions @@ -62,6 +63,15 @@ def progress(step_idx, name): print("{}\r{} {}\r".format(" " * 70, step_idx, name), end="") return +def small_ndarray_to_str(arr): + res = [] + for elem in arr: + if isinstance(elem, np.ndarray): + res.append(small_ndarray_to_str(elem)) + else: + res.append(str(elem)) + return f"[{','.join(res)}]" + class GraphNotReadyException(Exception): pass @@ -89,14 +99,16 @@ def _has_negative_number_optionals(self, val): pass - class NNToolShellBase(NNToolShellSettings, Cmd): # commands to exclude from save state history EXCLUDE_FROM_HISTORY = ['help', 'py'] STORE_ONCE_IN_HISTORY = [] LOG_HANDLER_SET=False - def __init__(self, args, *rest, **kwargs): + #pylint: disable=no-member + def __init__(self, *args, **kwargs): + rest = args[1:] + args = args[0] if args else None self._graph_idx = 0 self._graphs = [NO_GRAPH.copy()] self._cmd_history = [[]] @@ -280,6 +292,14 @@ def __build_open_graph(graph_file, args): if args.subs: subs = [f'{k}={v}' for k, v in args.subs.items()] command.append(f"--subs {' '.join(subs)}") + if args.out_ranges: + command.append(f"--out_ranges {args.out_ranges}") + if args.input_shapes: + inps = ' '.join([f'{k}={small_ndarray_to_str(v)}' for k, v in args.input_shapes.items()]) + command.append(f"--input_shapes {inps}") + if args.fixed_inputs: + inps = ' '.join([f'{k}={small_ndarray_to_str(v)}' for k, v in args.fixed_inputs.items()]) + command.append(f"--fixed_inputs {inps}") return " ".join(command) def execute_adjust_order(self): @@ -327,7 +347,7 @@ def _record_stats(self, astats): self._history_stats[self._graph_idx] = astats def perror(self, msg: Any = '', *, end: str = '\n', apply_style: bool = True): - if self._replaying_history: + if self._replaying_history and apply_style: if isinstance(msg, Exception): raise msg raise StateFileReplayError(msg) @@ -478,26 +498,38 @@ def is_int(numstr: str): except ValueError: return False - def node_step_or_name_completer(self, text: str, line: str, begidx: int, endidx: int): - self._check_graph() - if self.is_int(text) or text.endswith("*"): - return [] - if self.G is None: - return [] - range_match = text.split(':', maxsplit=2) - elem = range_match[-1] - if elem.isnumeric(): - return [] - if len(range_match) == 2: - first_node = self.find_node_from_index_or_name(range_match[0]) + @staticmethod + def node_step_or_name_completer(allow_comma=False): + def completer(self, text: str, line: str, begidx: int, endidx: int): + self._check_graph() + if self.is_int(text) or text.endswith("*"): + return [] + if self.G is None: + return [] + if allow_comma: + text = text.split(',') + if len(text) > 1: + first = ",".join(text[:-1]) + "," + else: + first = "" + text = text[-1] + else: + first = "" + range_match = text.split(':', maxsplit=2) + elem = range_match[-1] + if elem.isnumeric(): + return [] + if len(range_match) == 2: + first_node = self.find_node_from_index_or_name(range_match[0]) + if not elem: + return [f'{first}{range_match[0]}:{node.name}' for node in self.G.nodes() + if first_node is None or node.step_idx > first_node.step_idx] + return [f'{first}{range_match[0]}:{node.name}' for node in self.G.nodes() + if node.name.startswith(elem) and (first_node is None or node.step_idx > first_node.step_idx)] if not elem: - return [f'{range_match[0]}:{node.name}' for node in self.G.nodes() - if first_node is None or node.step_idx > first_node.step_idx] - return [f'{range_match[0]}:{node.name}' for node in self.G.nodes() - if node.name.startswith(elem) and (first_node is None or node.step_idx > first_node.step_idx)] - if not elem: - return [node.name for node in self.G.nodes()] - return [node.name for node in self.G.nodes() if node.name.startswith(elem)] + return [f'{first}{node.name}' for node in self.G.nodes()] + return [f'{first}{node.name}' for node in self.G.nodes() if node.name.startswith(elem)] + return completer def find_node_from_index_or_name(self, idx_or_name: str): if self.is_int(idx_or_name): @@ -511,38 +543,50 @@ def find_node_from_index_or_name(self, idx_or_name: str): return self.G[idx_or_name] return None - def get_node_step_or_name(self, arg, show_errors=True, classes=None): - if arg == '*': - return self.G.nodes(node_classes=classes), 'all nodes' - elif arg.endswith('*'): - arg = arg[0:-1:] - return [node for node in self.G.nodes(node_classes=classes) - if node.name.startswith(arg)], f'nodes starting with {arg}' - - elems = arg.split(':', maxsplit=2) - nodes = [self.find_node_from_index_or_name( - elem) if elem else False for elem in elems] - if nodes[0] is None: - self.perror(f"can't find node {elems[0]}") - return [], "" - - if not nodes[0]: - nodes[0] = self.G.graph_state.steps[0]['node'] - if len(nodes) == 2: - if nodes[1] is None: - self.perror(f"can't find node {elems[1]}") + def get_node_step_or_name(self, text, show_errors=True, classes=None, allow_comma=False): + if allow_comma: + text = text.split(',') + else: + text = [text] + + cur_nodes = [] + cur_message = [] + for arg in text: + if arg == '*': + return self.G.nodes(node_classes=classes), 'all nodes' + elif arg.endswith('*'): + arg = arg[0:-1:] + cur_nodes.extend([node for node in self.G.nodes(node_classes=classes) + if node.name.startswith(arg)]) + cur_message.append(f'nodes starting with {arg}') + continue + + elems = arg.split(':', maxsplit=2) + nodes = [self.find_node_from_index_or_name( + elem) if elem else False for elem in elems] + if nodes[0] is None: + self.perror(f"can't find node {elems[0]}") + return [], "" + + if not nodes[0]: + nodes[0] = self.G.graph_state.steps[0]['node'] + if len(nodes) == 2: + if nodes[1] is None: + self.perror(f"can't find node {elems[1]}") + return [], "" + if not nodes[1]: + nodes[1] = self.G.graph_state.steps[-1]['node'] + cur_nodes.extend([node for node in self.G.nodes(node_classes=classes) + if node.step_idx >= nodes[0].step_idx and node.step_idx <= nodes[1].step_idx]) + cur_message.append(f"{nodes[0].name} -> {nodes[1].name}") + if classes and not isinstance(nodes[0], classes): + if show_errors: + self.perror( + 'selected node is not compatible with this command') return [], "" - if not nodes[1]: - nodes[1] = self.G.graph_state.steps[-1]['node'] - return ([node for node in self.G.nodes(node_classes=classes) - if node.step_idx >= nodes[0].step_idx and node.step_idx <= nodes[1].step_idx], - f"{nodes[0].name} -> {nodes[1].name}") - if classes and not isinstance(nodes[0], classes): - if show_errors: - self.perror( - 'selected node is not compatible with this command') - return [], "" - return [nodes[0]], nodes[0].name + cur_nodes.append(nodes[0]) + cur_message.append(nodes[0].name) + return cur_nodes, " and ".join(cur_message) #pylint: disable=invalid-name diff --git a/tools/nntool/interpreter/settings.py b/tools/nntool/interpreter/settings.py index 9f7d9233f..f34010c5c 100644 --- a/tools/nntool/interpreter/settings.py +++ b/tools/nntool/interpreter/settings.py @@ -95,7 +95,7 @@ def log_level(self): @log_level.setter def log_level(self, val): try: - val = int(val) + val = int(val) # @IgnoreException self.settings['log_level'] = val except ValueError: val = val.upper() diff --git a/tools/nntool/quantization/compression/__init__.py b/tools/nntool/quantization/compression/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tools/nntool/quantization/compression/auto_compress.py b/tools/nntool/quantization/compression/auto_compress.py new file mode 100644 index 000000000..c139415a7 --- /dev/null +++ b/tools/nntool/quantization/compression/auto_compress.py @@ -0,0 +1,315 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + + +import math + +import numpy as np +from execution.graph_executer import GraphExecuter +from execution.quantization_mode import QuantizationMode +from interpreter.shell_utils import glob_input_files +from utils.data_importer import import_data +from utils.maximizer import Maximizer +from utils.node_id import NodeId + +from .compress import CompressionError + + +def value_compression(graph, node): + nid = NodeId(node) + qtype = graph.quantization[nid].out_qs[0] if graph.quantization and nid in graph.quantization else None + qbits = qtype.bits if qtype else 8 + full_size = int(math.ceil((node.value.size * qbits)/8)) + return full_size - node.compressed_value.size + + +class AutoCompress(): + def __init__(self, graph, input_files, validation, input_args, + start_qsnr=30, prediction_step_idx=-1, min_step=0.5, + base_inputs=None) -> None: + self._graph = graph + self._input_files = list(glob_input_files( + input_files, self._graph.num_inputs)) + self._validation = validation + self._start_qsnr = start_qsnr + self._input_args = input_args + self._prediction_step_idx = prediction_step_idx + self._min_step = min_step + self._base_inputs = base_inputs + + @property + def base_inputs(self): + return self._base_inputs + + def tune_compression(self, nodes, progress=None, **kwargs): + compression = 0 + for node in nodes: + nid = NodeId(node) + if self._graph.quantization and nid in self._graph.quantization: + qtype = self._graph.quantization[nid].out_qs[0] + else: + qtype = None + + try: + kwargs['qtype'] = qtype + node.compress_value(**kwargs) + comp_val = node.compressed_value + qbits = qtype.bits if qtype else 8 + compression += math.ceil(node.value.size * + qbits / 8) - comp_val.size + node.use_compressed = True + if progress: + progress(node, True) + + except CompressionError: + comp_val = None + node.clear_compression() + if progress: + progress(node, False) + + return compression + + def tune_qsnr(self, nodes, qsnr, progress=None): + return self.tune_compression(nodes, progress=progress, min_qsnr=qsnr) + + def tune_bits(self, nodes, bits, threshold=None, sparse=False, progress=None): + return self.tune_compression(nodes, progress=progress, bits=bits, threshold=threshold, force_sparse=sparse) + + def validate(self, qmode, break_on_error=False, inputs=None, progress=None): + if inputs is None: + inputs = self._input_files + good_inputs = [] + bad_inputs = [] + good_margin = 0.0 + bad_margin = 0.0 + for file_per_input in inputs: + data = [import_data(input_file, **self._input_args) + for input_file in file_per_input] + + executer = GraphExecuter( + self._graph, qrecs=self._graph.quantization) + outputs = executer.execute(data, qmode=qmode, silent=True) + + predicted_values = np.asarray(outputs[self._prediction_step_idx]) + good_prediction, _, _, margin = self._validation.validate( + file_per_input[0], predicted_values) + + if good_prediction: + good_margin += margin + good_inputs.append(file_per_input) + else: + bad_margin += margin + bad_inputs.append(file_per_input) + if break_on_error: + break + if progress: + progress(good_prediction) + if good_inputs: + good_margin /= len(good_inputs) + if bad_inputs: + bad_margin /= len(bad_inputs) + return good_inputs, good_margin, bad_inputs, bad_margin + + def layer_compression(self, nodes): + return {node: value_compression(self._graph, node) + for node in nodes if node.compressed_value and node.use_compressed} + + def finetune(self, nodes, progress, quantize=False): + sizes = [(node, node.compressed_value) for node in nodes if node.compressed_value and node.use_compressed] + nodes = [size[0] for size in sizes] + base_inputs = self.get_base_inputs(nodes, progress, quantize) + for node in nodes: + if node.compressed_value: + node.use_compressed = True + + def opt_func(bits, threshold, sparse, node, state): + progress('compressing: ', False) + compression = self.tune_bits( + [node], + bits, + threshold=threshold, + sparse=sparse, + progress=lambda _, comp: progress('+' if comp else '-', False)) + if not compression or ('best_compression' in state and state['best_compression'] > compression): + if bits == 8 and sparse: + raise CompressionError("could not compress graph") + return None + state['best_compression'] = compression + progress('', True) + progress('validating: ', False) + good_inputs, good_margin, bad_inputs, bad_margin = self.validate( + state['qmode'], + inputs=state['cur_inputs'], + break_on_error=state['final'], + progress=lambda pred: progress('+' if pred else '-', False)) + progress('', True) + progress( + f'good {len(good_inputs)} ({good_margin:.2f}) bad {len(bad_inputs)} ({bad_margin:.2f})', True) + if bad_inputs: + state['cur_inputs'] = bad_inputs + del state['best_compression'] + return None + return compression + + maximizer = Maximizer(opt_func, 2, 8, int_step=True) + while sizes: + sizes.sort(key=lambda x: x[1].size) + + tune_idx = -1 + node = None + while node is None and abs(tune_idx) <= len(sizes): + node, comp_val = sizes[tune_idx] + cur_bits = comp_val.bits + if cur_bits > 2: + cur_step = max(cur_bits//2, 1) + cur_bits = max(cur_bits - cur_step, 2) + else: + tune_idx -= 1 + node = None + + if node is None: + break + + progress(f'finetuning {node.name}', True) + qmode = QuantizationMode.none() + dir_start = 'down' + opt_state = { + 'cur_inputs': base_inputs.copy(), + 'final': False, + 'qmode': qmode + } + while True: + res = maximizer.run( + cur_bits, None, False, node, opt_state, + progress=lambda cur, step, direct: progress(f'bits {cur} step {step} direction {direct}', True), + start_step=cur_step, + dir_start=dir_start) + del sizes[tune_idx] + if res is None: + break + if quantize and opt_state['qmode'] == QuantizationMode.none(): + progress('analysing quantized', True) + opt_state['qmode'] = QuantizationMode.all_dequantize() + elif opt_state['cur_inputs'] != base_inputs: + progress('check with all inputs', True) + else: + break + opt_state['final'] = True + opt_state['cur_inputs'] = base_inputs.copy() + cur_bits = res[1] + cur_step = 1 + dir_start = 'up' + + if res is None: + progress(f'{node.name} cannot be further optimised', True) + self.tune_bits( + [node], + comp_val.bits, + progress=lambda _, comp: progress('+' if comp else '-', False)) + else: + progress(f'{node.name} tune bits to {res[1]} compressed by {res[0]} bytes', True) + self.tune_bits( + [node], + res[1], + progress=lambda _, comp: progress('+' if comp else '-', False)) + progress('', True) + + def tune_all(self, nodes, progress, quantize=False): + base_inputs = self.get_base_inputs(nodes, progress, quantize) + + def opt_func(qsnr, state): + progress('compressing: ', False) + compression = self.tune_qsnr( + nodes, + qsnr, + progress=lambda _, comp: progress('+' if comp else '-', False)) + if not compression or ('best_compression' in state and state['best_compression'] > compression): + if qsnr == 0: + raise CompressionError("could not compress graph") + return None + state['best_compression'] = compression + progress('', True) + progress('validating: ', False) + good_inputs, good_margin, bad_inputs, bad_margin = self.validate( + state['qmode'], + inputs=state['cur_inputs'], + progress=lambda pred: progress('+' if pred else '-', False)) + progress('', True) + progress( + f'good {len(good_inputs)} ({good_margin:.2f}) bad {len(bad_inputs)} ({bad_margin:.2f})', True) + if bad_inputs: + if not state['final']: + state['cur_inputs'] = bad_inputs + del state['best_compression'] + return None + return compression + + qmode = QuantizationMode.none() + dir_start = 'down' + + opt_state = { + 'cur_inputs': base_inputs.copy(), + 'final': False, + 'qmode': qmode + } + start_qsnr = 30 + start_step = 15 + maximizer = Maximizer(opt_func, 0, 120) + while True: + res = maximizer.run( + start_qsnr, opt_state, + progress=lambda cur, step, direct: progress(f'QSNR {cur} step {step} direction {direct}', True), + start_step=start_step, + dir_start=dir_start) + if quantize and opt_state['qmode'] == QuantizationMode.none(): + progress('analysing quantized', True) + opt_state['qmode'] = QuantizationMode.all_dequantize() + elif opt_state['cur_inputs'] != base_inputs: + progress('check with all inputs', True) + opt_state['final'] = True + else: + break + opt_state['cur_inputs'] = base_inputs.copy() + start_qsnr = res[1] + start_step = 0.5 + dir_start = 'up' + + progress(f'tune QSNR to best {res[1]} compressed by {res[0]} bytes', True) + self.tune_qsnr( + nodes, + res[1], + progress=lambda _, comp: progress('+' if comp else '-', False)) + progress('', True) + + return res[1] + + def get_base_inputs(self, nodes, progress, quantize): + if self._base_inputs is None: + base_inputs = self._input_files + for node in nodes: + node.use_compressed = False + progress( + f"validation without compression {'quantized: ' if quantize else ': '}", False) + base_inputs, good_margin, bad_inputs, bad_margin = self.validate( + QuantizationMode.all_dequantize() if quantize else QuantizationMode.none(), + inputs=self._input_files, + progress=lambda pred: progress('+' if pred else '-', False)) + progress('', True) + progress( + f'good {len(base_inputs)} ({good_margin:.2f}) bad {len(bad_inputs)} ({bad_margin:.2f})', True) + self._base_inputs = base_inputs + else: + base_inputs = self._base_inputs + return base_inputs diff --git a/tools/nntool/quantization/compression/compress.py b/tools/nntool/quantization/compression/compress.py new file mode 100644 index 000000000..7df4ccf56 --- /dev/null +++ b/tools/nntool/quantization/compression/compress.py @@ -0,0 +1,204 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +# author: martin.croome@greenwaves-technologies.com + +import logging +import math +from collections import namedtuple + +import numpy as np +from scipy.cluster.vq import vq +from sklearn.cluster import KMeans +from sklearn.metrics import silhouette_score + +from utils.stats_funcs import qsnr + +USE_KMEANS_CUDA = False +if USE_KMEANS_CUDA: + try: + from libKMCUDA import kmeans_cuda + except ImportError: + kmeans_cuda = None + +USE_KMEANS_1D = True +if USE_KMEANS_1D: + try: + import kmeans1d + except ImportError: + kmeans1d = None + + +LOG = logging.getLogger("nntool." + __name__) + +CompressedVal = namedtuple( + 'CompressedVal', ['value', 'bits', 'codebook', 'size', 'sparse', 'sparse_idx', 'threshold']) + +class CompressionError(Exception): + pass + +def compress(orig_val, bits=None, min_qsnr=None, force_sparse=False, + allow_sparse=True, qbits=8, threshold=None, force=True): + val = orig_val.copy() + manual_bits = bits is not None and force + if threshold: + val[np.logical_and(val < threshold, val > 0)] = 0 + val[np.logical_and(val > np.negative(threshold), val < 0)] = 0 + + if np.all(val == 0): + raise CompressionError('value is all zeros') + flattened_val = val.flatten() + codes = None + if val.size <= 4: + raise CompressionError('value is too small to compress') + if bits is not None: + bins = int(math.pow(2, bits)) + (1 if force_sparse else 0) + if bins > val.size: + bits = max(int(math.floor(math.log2(val.size))), 2) + bins = int(math.pow(2, bits)) + LOG.info(f'more bins than values - reducing to {bits} bits') + compressed_val, codes, codebook = cluster( + bins, flattened_val, val) + elif min_qsnr: + cur_qsnr = -math.inf + bits = 1 + while cur_qsnr < min_qsnr: + if bits == 8 and not force_sparse: + bins = int(math.pow(2, bits)) + 1 + force_sparse = True + else: + bits += 1 + if bits > 8: + raise CompressionError(f'value cannot meet {min_qsnr} QSNR at 8 bits or under') + bins = int(math.pow(2, bits)) + (1 if force_sparse else 0) + if bins > val.size: + raise CompressionError('value cannot be reduced in size') + compressed_val, codes, codebook = cluster( + bins, flattened_val, val) + cur_qsnr = qsnr(compressed_val.astype( + np.float32), val.astype(np.float32)) + else: + # automatic search of optimal k with inertia method + silhouette = [] + inertia = [] + for bits in range(2, 8): + bins = int(math.pow(2, bits)) + if bins > val.size - 1: + break + compressed_val, codes, codebook = cluster( + bins, flattened_val, val, inertia=inertia) + silhouette.append(silhouette_score(flattened_val.reshape(-1, 1), + compressed_val.flatten())) + if len(inertia) <= 1: + compressed_val, codes, codebook = encode_shorter( + flattened_val, val) + else: + # 2nd grade derivative to find the elbow + if len(inertia) > 2: + cinertia = np.array(inertia) + # cinertia[cinertia>1] = 1 + elb_idx = np.argmax(np.diff(np.diff(cinertia))) + 1 + else: + elb_idx = 1 + # take the three around the elbow and look at the silhouette + bits = np.argmax( + np.array(silhouette[elb_idx-1:elb_idx+1])) + elb_idx + 1 + bins = int(math.pow(2, bits)) + compressed_val, codes, codebook = cluster( + bins, flattened_val, val) + # see if sparse representation is better + unsparse_size = int(math.ceil(codes.size * bits)/8) + qelem_codebook_size = math.ceil((codebook.size * qbits)/8) + uncompressed_size = int(math.ceil((val.size * qbits)/8)) + if allow_sparse: + sparse_idx, sparse_freq = compute_sparse(codes) + sparse_size = int( + math.ceil((val.size - sparse_freq) * (bits + 1) + sparse_freq)/8) + if force_sparse or sparse_size < unsparse_size: + sparse = True + compressed_size = sparse_size + else: + sparse = False + compressed_size = unsparse_size + else: + compressed_size = unsparse_size + sparse = False + sparse_idx = 0 + + compressed_size += qelem_codebook_size + if not manual_bits and compressed_size >= uncompressed_size: + raise CompressionError('value cannot be reduced in size') + comp_val = CompressedVal( + compressed_val, bits, + codebook, compressed_size, sparse, sparse_idx, threshold) + return comp_val + +def compute_sparse(codes): + freqs = np.unique(codes, return_counts=True) + sparse_idx = np.where(freqs[1] == freqs[1].max())[0][0] + sparse_freq = freqs[1][sparse_idx] + return sparse_idx, sparse_freq + + +def encode_shorter(flattened_val, val): + freqs = np.unique(flattened_val, return_counts=True) + codebook = np.concatenate( + (freqs[0], np.array([0] * (4 - freqs[0].size)))) + compressed_val, codes = codes_and_compressed( + flattened_val, codebook, val.shape) + return compressed_val, codes, codebook + + +def cluster(bins, flattened_val, val, inertia=None): + if USE_KMEANS_CUDA and kmeans_cuda: + invalids = None + int_bins = bins + while invalids is None or int_bins - invalids < bins: + if invalids: + int_bins = bins + invalids + codebook, _ = kmeans_cuda( + flattened_val.reshape((-1, 1)), int_bins, device=1) + invalids = np.count_nonzero(np.isnan(codebook).any(axis=1)) + np.count_nonzero( + np.isneginf(codebook).any(axis=1)) + np.count_nonzero(np.isposinf(codebook).any(axis=1)) + # this is not a good solution since it will possibly end up with the wrong numer of bins + # however kmeans cuda is not easy to install so probably not right anyway + codebook = codebook[~np.isnan(codebook).any(axis=1)] + codebook = codebook[~np.isneginf(codebook).any(axis=1)] + codebook = codebook[~np.isposinf(codebook).any(axis=1)] + last_inertia = None + elif USE_KMEANS_1D and kmeans1d: + clustered = kmeans1d.cluster(flattened_val, bins) + codebook = np.array(clustered.centroids) + encoded = codebook[clustered.clusters] + last_inertia = np.sum(np.power(flattened_val, 2) - np.power(encoded, 2)) + else: + # scipy is horribly slow + kmeans = KMeans(n_clusters=bins) + kmeans.fit(flattened_val.reshape((-1, 1))) + codebook = kmeans.cluster_centers_ + last_inertia = kmeans.inertia_ + codebook = codebook.astype(val.dtype).flatten() + compressed_val, codes = codes_and_compressed( + flattened_val, codebook, val.shape) + if last_inertia is not None and inertia is not None: + inertia.append(last_inertia) + return compressed_val, codes, codebook + + +def codes_and_compressed(flattened_val, codebook, val_shape): + codes = vq(flattened_val, codebook)[0] + compressed_val = np.array( + [codebook[code] for code in codes]).reshape(val_shape) + return compressed_val, codes diff --git a/tools/nntool/quantization/float/kernels/matrix_operations.py b/tools/nntool/quantization/float/kernels/matrix_operations.py index 4cdbb05e9..15789ea37 100644 --- a/tools/nntool/quantization/float/kernels/matrix_operations.py +++ b/tools/nntool/quantization/float/kernels/matrix_operations.py @@ -24,7 +24,7 @@ MinOpParameters, PowOpParameters, RSqrtOpParameters, SinOpParameters, SqrtOpParameters, UnaryOpParameters) -from graph.types.tensor_arithmetic import Broadcastable, MatMulOpParameters +from graph.types.tensor_arithmetic import Broadcastable, MatMulOpParameters, MatMulTransposedParameters from quantization.kernels.kernel_base import KernelBase, params_type, qrec_type from quantization.new_qrec import AllFloatQRec, QRec @@ -116,7 +116,7 @@ def execute(cls, params, ) -@params_type(MatMulOpParameters) +@params_type(MatMulOpParameters, MatMulTransposedParameters) @qrec_type('float') class MatMulFloat32(KernelBase): @classmethod @@ -128,15 +128,22 @@ def execute(cls, params, if qrec is None: qrec = AllFloatQRec() in_tensors = qrec.prepare_inputs(params, in_tensors, ktype="float") + + if isinstance(params, MatMulTransposedParameters): + mat1, mat2 = in_tensors[0], np.transpose(in_tensors[1], (1, 0)) + else: + mat1, mat2 = in_tensors[0], in_tensors[1] + if len(in_tensors) > 2: biases = in_tensors[2] if len(biases.shape) == 1: - biases = np.expand_dims(biases, -1) + biases = np.expand_dims(biases, 1 if mat2.shape[1] == 1 else 0) else: biases = 0 + out_dtype = qrec.out_qs[0].dtype if qrec.ktype.startswith( 'float') else np.float32 - output_tensor = np.matmul(in_tensors[0], in_tensors[1]).astype( + output_tensor = np.matmul(mat1, mat2).astype( out_dtype) + np.atleast_1d(biases).astype(out_dtype) return qrec.get_outputs(params, [output_tensor], ktype="float") diff --git a/tools/nntool/quantization/float/kernels/pool.py b/tools/nntool/quantization/float/kernels/pool.py index 3eb413ab7..15819e5d6 100644 --- a/tools/nntool/quantization/float/kernels/pool.py +++ b/tools/nntool/quantization/float/kernels/pool.py @@ -18,8 +18,8 @@ import numpy as np from graph.types import (AveragePoolParameters, GlobalAveragePoolParameters, - GlobalMaxPoolParameters, GlobalSumPoolParameters, - MaxPoolParameters) + GlobalMaxPoolParameters, GlobalMinPoolParameters, + GlobalSumPoolParameters, MaxPoolParameters) from quantization.kernels.kernel_base import KernelBase, params_type, qrec_type from quantization.new_qrec import AllFloatQRec, QRec @@ -177,6 +177,23 @@ def execute(cls, params, axis=tuple(params.axis), keepdims=params.keep_dims)], ktype="float") +@params_type(GlobalMinPoolParameters) +@qrec_type('float') +class GlobalMinPoolFloat32(KernelBase): + @classmethod + def execute(cls, params, + in_tensors, + qrec: QRec, + **kwargs): + + if qrec is None: + qrec = AllFloatQRec() + in_tensor = qrec.prepare_inputs(params, in_tensors, ktype="float")[0] + + return qrec.get_outputs(params, [np.min(in_tensor, + axis=tuple(params.axis), + keepdims=params.keep_dims)], ktype="float") + @params_type(GlobalSumPoolParameters) @qrec_type('float') class GlobalSumPoolFloat32(KernelBase): diff --git a/tools/nntool/quantization/float/kernels/ssd_postprocess.py b/tools/nntool/quantization/float/kernels/ssd_postprocess.py index fb713b9e9..4cedd7819 100644 --- a/tools/nntool/quantization/float/kernels/ssd_postprocess.py +++ b/tools/nntool/quantization/float/kernels/ssd_postprocess.py @@ -13,12 +13,13 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import collections import numpy as np -from graph.types.ssd import SSDDetectorParameters +from graph.types.ssd import NMSParameters, SSDDetectorParameters from quantization.kernels.kernel_base import KernelBase, params_type, qrec_type from quantization.new_qrec import AllFloatQRec, QRec from utils.ssd_utils import (CNTX_IDX, CNTY_IDX, H_IDX, W_IDX, XMAX_IDX, - XMIN_IDX, YMAX_IDX, YMIN_IDX, convert_cors2cnts, + XMIN_IDX, YMAX_IDX, YMIN_IDX, convert_cnts2cors, convert_cors2cnts, rect_intersect_area, rect_union_area) @@ -107,92 +108,64 @@ def execute(cls, params, # out_count = np.array([sum(out_classes != 0)]) return qrec.get_outputs(params, [out_boxes, out_classes, out_scores], ktype="float") - # @classmethod - # def decoder(cls, params, qrec, offsets, anchors, scores, anchors_type='centers'): - # del qrec - # if anchors_type == 'centers': - # anchors_cnts = anchors - # else: - # anchors_cnts = convert_cors2cnts(anchors) - - # # keep only the offsets with score > threshold - # bboxes_indices = np.arange(offsets.shape[0]) - # valid_indices = bboxes_indices[np.any( - # scores > params.nms_score_threshold, axis=1)] - # valid_scores = scores[valid_indices] - # valid_offsets = offsets[valid_indices] - # valid_anchors = anchors_cnts[valid_indices] - - # # apply offsets - # ycenter = (valid_offsets[:, CNTY_IDX]/params.y_scale) * \ - # valid_anchors[:, H_IDX] + valid_anchors[:, CNTY_IDX] - # xcenter = (valid_offsets[:, CNTX_IDX]/params.x_scale) * \ - # valid_anchors[:, W_IDX] + valid_anchors[:, CNTX_IDX] - # half_h = 0.5 * \ - # np.exp(valid_offsets[:, H_IDX] / - # params.h_scale) * valid_anchors[:, H_IDX] - # half_w = 0.5 * \ - # np.exp(valid_offsets[:, W_IDX] / - # params.w_scale) * valid_anchors[:, W_IDX] - - # # min-max or corners format: required for nms - # decoded_anchors = np.zeros_like(valid_anchors) - # decoded_anchors[:, YMIN_IDX] = ycenter - half_h - # decoded_anchors[:, YMAX_IDX] = ycenter + half_h - # decoded_anchors[:, XMIN_IDX] = xcenter - half_w - # decoded_anchors[:, XMAX_IDX] = xcenter + half_w - # return decoded_anchors, valid_scores - - # @classmethod - # def nms(cls, params, qrec, decoded_bboxes, valid_scores): - # del qrec - # score_threshold = params.nms_score_threshold - # # loop over classes apart the background - # num_classes = valid_scores.shape[1] - # out_boxes = [] - # out_scores = [] - # out_classes = [] - # for class_idx in range(1, num_classes): - # class_scores = valid_scores[:, class_idx] - # # default anchors indices before appplying any sort - # bboxes_indices = np.arange(decoded_bboxes.shape[0]) - # # apply confidence threshold - # valid_scores_indices = bboxes_indices[class_scores > - # score_threshold] - # class_scores = class_scores[valid_scores_indices] - - # # sort the confidences freater than the confidence threshold - # args = np.argsort(class_scores)[::-1] # sort the confidences and - # # back to the original indices - # inds = valid_scores_indices[args] - # sorted_bboxes = decoded_bboxes[inds] - # sorted_scores = class_scores[args] - # liveness = [True] * sorted_bboxes.shape[0] - # for i, box_a in enumerate(sorted_bboxes): - # if not liveness[i]: - # continue - # for j in range(i+1, len(sorted_bboxes)): - # box_b = sorted_bboxes[j] - # intersection = rect_intersect_area(box_a, box_b) - # union = rect_union_area(box_a, box_b) - # if intersection >= (params.nms_iou_threshold * union): - # # iou > threshold -> - # # discard second box which is dominated by the first because they are sorted - # liveness[j] = False - # if sum(liveness) > 0: - # out_boxes.append(sorted_bboxes[liveness]) - # out_scores.append(sorted_scores[liveness]) - # out_classes.append([class_idx] * sum(liveness)) - # if len(out_boxes) > 0: - # out_boxes = np.concatenate(out_boxes) - # out_classes = np.concatenate(out_classes) - # out_scores = np.concatenate(out_scores) - # # keep only the max_detection most probables - # args = np.argsort(out_scores)[::-1] - # if len(args) < params.max_detections: - # return np.pad(out_boxes[args], ((0, params.max_detections-len(args)), (0, 0)), 'constant'), \ - # np.pad(out_scores[args], (0, params.max_detections-len(args)), 'constant'), \ - # np.pad(out_classes[args], (0, params.max_detections-len(args)), 'constant') - # args = args[:params.max_detections] - # return out_boxes[args], out_scores[args], out_classes[args] - # return np.zeros((params.max_detections, 4)), np.zeros(params.max_detections), np.zeros(params.max_detections) +@params_type(NMSParameters) +@qrec_type('float') +class NMSKernelFloat32(KernelBase): + @classmethod + def execute(cls, params, + in_tensors, + qrec: QRec, + **kwargs): + if qrec is None: + qrec = AllFloatQRec() + boxes = in_tensors[0][0] if not params.center_point_box else convert_cnts2cors(in_tensors[0][0]) + scores = in_tensors[1][0] + n_boxes = len(scores[0]) + n_classes = len(scores) + + indexes = np.zeros((params.max_output_boxes_per_class*n_classes, 3)) + idxs_count = 0 + for class_id in range(n_classes): + bbox_buff = [] + counter = 0 + for box_id in range(n_boxes): + class_score = scores[class_id, box_id] + if class_score > params.nms_score_threshold: + bbox_buff.append({ + "index": box_id, + "score": class_score, + "box": boxes[box_id], + "alive": True + }) + counter += 1 + + # Bubble sort to sort the scores + changed = True + while changed: + changed = False + for i in range(counter-1): + if bbox_buff[i]["score"] < bbox_buff[i+1]["score"]: + temp = bbox_buff[i] + bbox_buff[i] = bbox_buff[i+1] + bbox_buff[i+1] = temp + changed = True + + # NMS + for idx in range(counter): + for idx_int in range(idx+1, counter): + if not bbox_buff[idx_int]["alive"]: + continue + intersection = rect_intersect_area(bbox_buff[idx]["box"], bbox_buff[idx_int]["box"]) + union = rect_union_area(bbox_buff[idx]["box"], bbox_buff[idx_int]["box"]) + if intersection >= (params.nms_iou_threshold * union): + bbox_buff[idx_int]["alive"] = False + + class_idxs_count_start = idxs_count + for bb in bbox_buff: + if (idxs_count-class_idxs_count_start) > params.max_output_boxes_per_class: + break + if bb["alive"]: + indexes[idxs_count] = np.array([0, class_id, bb['index']]) + idxs_count += 1 + + return qrec.get_outputs(params, [indexes], ktype="float") diff --git a/tools/nntool/quantization/float/kernels/tensor_functions.py b/tools/nntool/quantization/float/kernels/tensor_functions.py index 5dc05799a..f0a1750c7 100644 --- a/tools/nntool/quantization/float/kernels/tensor_functions.py +++ b/tools/nntool/quantization/float/kernels/tensor_functions.py @@ -51,7 +51,7 @@ def execute(cls, params, else: in_tensor = resize(in_tensor, params.dims.shape) out_dtype = qrec.out_qs[0].dtype if qrec.ktype.startswith( - 'float') else np.float32 + 'float') else (params.imported_dtype if params.imported_dtype else np.float32) in_tensor = in_tensor.astype(out_dtype) return qrec.get_outputs(params, [in_tensor], ktype="float") diff --git a/tools/nntool/quantization/float/quantizers/dsp_float.py b/tools/nntool/quantization/float/quantizers/dsp_float.py index 8c7284b82..7ad4da318 100644 --- a/tools/nntool/quantization/float/quantizers/dsp_float.py +++ b/tools/nntool/quantization/float/quantizers/dsp_float.py @@ -24,12 +24,13 @@ from quantization.qtype_constraint import MatchAll from quantization.unified_quantization_handler import (in_qs_constraint, out_qs_constraint, - params_type) + params_type, needs_stats) @params_type(RFFT2DPreprocessingParameters) @in_qs_constraint(MatchAll({'dtype': set([np.float32, np.float16, bfloat16])})) @out_qs_constraint(MatchAll({'dtype': set([np.float32, np.float16, bfloat16])})) +@needs_stats(False) class RFFT2DFloat(FloatQuantizionHandler): @classmethod def _quantize(cls, params, in_qs, stats, **kwargs): @@ -43,6 +44,7 @@ def _quantize(cls, params, in_qs, stats, **kwargs): @params_type(MFCCPreprocessingParameters) @in_qs_constraint(MatchAll({'dtype': set([np.float32, np.float16, bfloat16])})) @out_qs_constraint(MatchAll({'dtype': set([np.float32, np.float16, bfloat16])})) +@needs_stats(False) class MFCCFloat(FloatQuantizionHandler): @classmethod def _quantize(cls, params, in_qs, stats, **kwargs): diff --git a/tools/nntool/quantization/float/quantizers/output_float.py b/tools/nntool/quantization/float/quantizers/output_float.py index 90ef006ee..57e2daba0 100644 --- a/tools/nntool/quantization/float/quantizers/output_float.py +++ b/tools/nntool/quantization/float/quantizers/output_float.py @@ -16,7 +16,7 @@ import numpy as np from bfloat16 import bfloat16 -from graph.types.input_output import OutputParameters +from graph.types import OutputParameters from quantization.float.float_quantization_handler import \ FloatQuantizionHandler from quantization.new_qrec import QRec diff --git a/tools/nntool/quantization/handlers_helpers.py b/tools/nntool/quantization/handlers_helpers.py index 1f804af8b..005a48a10 100644 --- a/tools/nntool/quantization/handlers_helpers.py +++ b/tools/nntool/quantization/handlers_helpers.py @@ -14,14 +14,13 @@ # along with this program. If not, see . import logging -from utils.subclasses import get_all_subclasses import numpy as np -from iteration_utilities import duplicates - from cmd2.argparse_custom import Cmd2ArgumentParser from graph.types import ConstantInputParameters, ReluActivationParameters from graph.types.base import Parameters +from iteration_utilities import duplicates +from utils.subclasses import get_all_subclasses # pylint: disable=wildcard-import,unused-wildcard-import from quantization.float.quantizers import * @@ -103,7 +102,8 @@ def get_all_options(): for k in opt.keys(): if k in optrec: if k != 'help' and opt[k] != optrec[k]: - raise ValueError(f'Quantization option {k} has different definitions') + raise ValueError( + f'Quantization option {k} has different definitions') else: optrec[k] = opt[k] optrec['handlers'].add(handler) @@ -134,6 +134,8 @@ def add_options_to_parser(parser: Cmd2ArgumentParser): duplicate_shortcuts = set(duplicates(shortcuts)) assert not duplicate_shortcuts, f'the following shortcut commands are duplicates {",".join(duplicate_shortcuts)}' for opt_name, opt in opts.items(): + if opt.get('type') is None: + continue # internal option if 'shortcut' in opt: names = [f'-{opt["shortcut"]}'] else: @@ -164,7 +166,7 @@ def get_options_from_args(args): return {opt_name: (not getattr(args, f'no_{opt_name}')) if opt.get('type') == bool and opt.get('default') else get_arg_or_default(args, opt_name, opt) - for opt_name, opt in get_all_options().items()} + for opt_name, opt in get_all_options().items() if opt['type'] is not None} def get_set_options_from_args(args): @@ -307,7 +309,7 @@ def check_option_constraints(handlers, params, options, **kwargs): if scheme_handler.OPTION_CONSTRAINT: for k, v in scheme_handler.OPTION_CONSTRAINT.items(): if k == '__function_constraint': - if not v(options, params, **kwargs): + if not v(params, **kwargs): break else: set_value = options.get(k) @@ -326,11 +328,11 @@ def check_option_constraints(handlers, params, options, **kwargs): return filtered_phandlers -def match_handler(cur_G, handlers, params, scheme_priorities, options, +def match_handler(graph, handlers, params, scheme_priorities, options, in_qs_constraint=None, out_qs_constraint=None, **kwargs): # don't run match on constants or unconnected edges ignore_edge = [isinstance(edge.from_node, ConstantInputParameters) if edge is not None else True - for edge in cur_G.indexed_in_edges(params.name)] + for edge in graph.indexed_in_edges(params.name)] # match the class params_handlers = handlers.get(params.__class__) params_handlers = check_option_constraints( diff --git a/tools/nntool/quantization/multiplicative/mulbias.py b/tools/nntool/quantization/multiplicative/mulbias.py index 4ba866789..e44a06cb4 100644 --- a/tools/nntool/quantization/multiplicative/mulbias.py +++ b/tools/nntool/quantization/multiplicative/mulbias.py @@ -66,8 +66,6 @@ def gen_mul_biases(qrec, params: MultiplicativeBiasParameters) -> np.ndarray: mul_biases_q = qrec.cache.get('mul_biases_q') if mul_biases_q is None: raise ValueError(f'no mul_bias configuration found for {params.name}') - if isinstance(mul_biases_q, MultMulBiasScaleQType): - mul_biases_q.pre_normalization = compute_prenorm(qrec, params) return mul_biases_q.qbiases @@ -82,7 +80,6 @@ def apply_multiplicative_bias(qrec, params: FilterParameters, input_tensor: np.n if ktype == 'symmetric' and qrec.ktype.startswith('scaled'): mul_biases_q = qrec.cache.get('mul_biases_q') if isinstance(mul_biases_q, MultMulBiasScaleQType): - mul_biases_q.pre_normalization = compute_prenorm(qrec, params) input_tensor = mul_biases_q.apply_scales(input_tensor, axis) elif ktype == 'symmetric' and qrec.ktype.startswith('symmetric'): if params.has_mul_bias: diff --git a/tools/nntool/quantization/multiplicative/quantizers/constant_input_mult.py b/tools/nntool/quantization/multiplicative/quantizers/constant_input_mult.py index 1511398b4..0ad4f0e97 100644 --- a/tools/nntool/quantization/multiplicative/quantizers/constant_input_mult.py +++ b/tools/nntool/quantization/multiplicative/quantizers/constant_input_mult.py @@ -18,12 +18,16 @@ from graph.types import ConstantInputParameters from quantization.new_qrec import QRec from quantization.qtype import QType -from quantization.unified_quantization_handler import (params_type) +from quantization.quantizer_options import QTYPE_IND_OPTION +from quantization.unified_quantization_handler import (needs_stats, options, + params_type) from ..mult_quantization_handler import MultQuantizionHandler +@options(QTYPE_IND_OPTION) @params_type(ConstantInputParameters) +@needs_stats(False) class ConstantInputMult(MultQuantizionHandler): @classmethod def _quantize(cls, params, in_qs, stats, **kwargs): @@ -37,6 +41,9 @@ def _quantize(cls, params, in_qs, stats, **kwargs): o_q = deepcopy(params.qtype) # derive quantization from statistics else: - o_q = QType.from_array_sq(params.value, dtype=out_dtype) + opts = kwargs.get('opts', {}) + o_q = opts.get('qtype_ind') + if not o_q: + o_q = QType.from_array_sq(params.value, dtype=out_dtype) o_q.is_constant = True return QRec.scaled(in_qs=[o_q], out_qs=[o_q]) diff --git a/tools/nntool/quantization/multiplicative/quantizers/conv_fusion_mult.py b/tools/nntool/quantization/multiplicative/quantizers/conv_fusion_mult.py index eb423feba..1985193e8 100644 --- a/tools/nntool/quantization/multiplicative/quantizers/conv_fusion_mult.py +++ b/tools/nntool/quantization/multiplicative/quantizers/conv_fusion_mult.py @@ -29,7 +29,7 @@ # TODO - Handle more NE16 types def check_filter_options(is_ne16, input_size, output_size): - def check_options(opts, params, **kwargs): + def check_options(params, opts=None, **kwargs): if not check_option(input_size, opts.get('force_input_size')): return False if not check_option(output_size, opts.get('force_output_size')): @@ -43,22 +43,23 @@ def check_options(opts, params, **kwargs): @params_type(ConvFusionParameters, LinearFusionParameters) -@in_qs_constraint({'dtype': set([np.int8, np.uint8])}) -@out_qs_constraint({'dtype': set([np.int8, np.uint8])}) +@in_qs_constraint({'dtype': {np.int8, np.int16, np.uint8, np.uint16}}) +@out_qs_constraint({'dtype': {np.int8, np.int16, np.uint8, np.uint16}}) # @option_constraint(check_filter_options(False, input_size=set([8, None]), output_size=set([8, None]))) @fusion_handler class ConvFusionMult(MultQuantizionHandler): @classmethod def _quantize(cls, params, in_qs, stats, **kwargs): out_qs = kwargs['out_qs'] + assert out_qs return QRec.scaled(in_qs=in_qs, out_qs=out_qs) # @params_type(ConvFusionParameters) -# @in_qs_constraint({'dtype': {np.uint8, np.uint16}}) +# @in_qs_constraint({'dtype': {np.int8, np.uint8, np.uint8, np.uint16}}) # @out_qs_constraint({'dtype': {np.int8, np.uint8, np.int16, np.uint16}}) -# @option_constraint(check_filter_options(True, input_size=set([16]), output_size=set([8, 16, None]))) +# @option_constraint(check_filter_options(True, input_size=set([8, 16, None]), output_size=set([8, 16, None]))) # @fusion_handler -# class Ne16ConvFusionMult(MultQuantizionHandler): +# class Ne16ConvFusionMult(MultQuantizionHandler, LinearFusionParameters): # @classmethod # def _quantize(cls, params, in_qs, stats, **kwargs): # out_qs = kwargs['out_qs'] diff --git a/tools/nntool/quantization/multiplicative/quantizers/dsp_mult.py b/tools/nntool/quantization/multiplicative/quantizers/dsp_mult.py index efa01735b..7283859e8 100644 --- a/tools/nntool/quantization/multiplicative/quantizers/dsp_mult.py +++ b/tools/nntool/quantization/multiplicative/quantizers/dsp_mult.py @@ -18,7 +18,7 @@ from graph.types import RFFT2DPreprocessingParameters from quantization.new_qrec import QRec from quantization.qtype import QType -from quantization.unified_quantization_handler import params_type, in_qs_constraint +from quantization.unified_quantization_handler import params_type, in_qs_constraint, needs_stats from ..mult_quantization_handler import MultQuantizionHandler @@ -52,6 +52,7 @@ def get_spectrogram_in_out_q(cls, in_q, params): @params_type(RFFT2DPreprocessingParameters) @in_qs_constraint({'dtype': np.int16}) +@needs_stats(False) class RFFTPreprocessingMult(DSPMultQuantHandler): @classmethod def _quantize(cls, params, in_qs, stats, **kwargs): @@ -66,6 +67,7 @@ def _quantize(cls, params, in_qs, stats, **kwargs): @params_type(MFCCPreprocessingParameters) @in_qs_constraint({'dtype': np.int16}) +@needs_stats(False) class MFCCPreprocessingMult(DSPMultQuantHandler): @classmethod def _quantize(cls, params, in_qs, stats, **kwargs): diff --git a/tools/nntool/quantization/multiplicative/quantizers/expression_fusion_mult.py b/tools/nntool/quantization/multiplicative/quantizers/expression_fusion_mult.py index 6e070ff40..cd4be879e 100644 --- a/tools/nntool/quantization/multiplicative/quantizers/expression_fusion_mult.py +++ b/tools/nntool/quantization/multiplicative/quantizers/expression_fusion_mult.py @@ -32,8 +32,8 @@ LOG = logging.getLogger('nntool.' + __name__) @params_type(ExpressionFusionParameters) -@in_qs_constraint(MatchAll({'dtype': np.int8})) -@out_qs_constraint(MatchAll({'dtype': np.int8})) +@in_qs_constraint(MatchAll({'dtype': {np.int8, np.uint8, np.int16, np.uint16}})) +@out_qs_constraint(MatchAll({'dtype': {np.int8, np.uint8, np.int16, np.uint16}})) class ExpressionFusionMult(MultQuantizionHandler): @classmethod def _quantize(cls, params, in_qs, stats, **kwargs): @@ -43,12 +43,12 @@ def _quantize(cls, params, in_qs, stats, **kwargs): raise ValueError( f'no valid range information is present for {params.name}') - # expressions need a symmetric input - in_qs = cls.force_symmetric(in_qs) + # # expressions need a symmetric input + # in_qs = cls.force_symmetric(in_qs) - if in_qs is None: - LOG.info('expression quantizer for {params.name} was not able to force input symmetric') - return None + # if in_qs is None: + # LOG.info('expression quantizer for {params.name} was not able to force input symmetric') + # return None symbol_control = SymbolStats(stats['expression']) # preload the input and output quantization diff --git a/tools/nntool/quantization/multiplicative/quantizers/filter_mult.py b/tools/nntool/quantization/multiplicative/quantizers/filter_mult.py index b6ea84d29..3bcf75f22 100644 --- a/tools/nntool/quantization/multiplicative/quantizers/filter_mult.py +++ b/tools/nntool/quantization/multiplicative/quantizers/filter_mult.py @@ -13,6 +13,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from graph.types.constant_input import ConstantInputParameters +from graph.types.tensor_arithmetic import MatMulOpParameters, MatMulTransposedParameters import logging from copy import deepcopy @@ -47,16 +49,16 @@ AT_NE16_KER_OUT_ORDER = [['h', 'w', 'c']] -def can_ne16(fusion, params): - if not isinstance(params, (Conv2DParameters, FcParameters)): +def can_ne16(fusion, params, G): + if not isinstance(params, (Conv2DParameters, FcParameters, MatMulTransposedParameters)): return False - if fusion: - if fusion.fusion_type in ['conv_active_pool', 'conv_active']: - if any(not isinstance(node, (Conv2DParameters, ReluActivationParameters, PoolingParameters)) - for node in fusion.contained_nodes()): - return False - else: - return False + # if fusion: + # if fusion.fusion_type in ['conv_active_pool', 'conv_active']: + # if any(not isinstance(node, (Conv2DParameters, ReluActivationParameters, PoolingParameters)) + # for node in fusion.contained_nodes()): + # return False + # else: + # return False if isinstance(params, Conv2DParameters): # if (params.filter.w != params.filter.h or (params.filter.w != 1 and params.filter.w != 3)): # return False @@ -64,6 +66,10 @@ def can_ne16(fusion, params): return False if (params.stride.size() != 1 and params.stride.shape != [2, 2]) and not ((params.filter.w == 1 or params.filter.h == 1)): return False + elif isinstance(params, MatMulTransposedParameters): + in_nodes = [edge.from_node for edge in G.in_edges(params)] + if not isinstance(in_nodes[1], ConstantInputParameters): + return False return True @@ -74,7 +80,7 @@ def check_option(option, val): def check_filter_options(is_ne16, input_size, output_size): - def check_options(opts, params, **kwargs): + def check_options(params, opts=None, **kwargs): if not check_option(input_size, opts.get('force_input_size')): return False if not check_option(output_size, opts.get('force_output_size')): @@ -84,7 +90,7 @@ def check_options(opts, params, **kwargs): return is_ne16 if not opts.get('use_ne16'): return not is_ne16 - return is_ne16 == can_ne16(fusion, params) + return is_ne16 == can_ne16(fusion, params, kwargs["G"]) return check_options @@ -177,7 +183,7 @@ def _quantize_sw(cls, params, in_qs, stats, in_out_dtype, **kwargs): in_qs = in_qs.copy() opts = kwargs['opts'] fusion = kwargs.get('fusion', None) - LOG.info('selecting SQ8 software kernel filter quantizer') + LOG.debug('selecting SQ8 software kernel filter quantizer') force_out_qs, out_dtype = cls.get_mult_opts(**kwargs) force_out_q = force_out_qs and force_out_qs[0] G = kwargs['G'] @@ -310,6 +316,7 @@ def _quantize_ne16(cls, params, in_qs, stats, input_dtype, **kwargs): dtype=np.uint8, narrow_range=True, bit_pack=opts['weight_bits'], + no_compression=True, bits=opts['weight_bits']) in_q = in_qs[0] @@ -380,7 +387,7 @@ def _get_in_qs_from_stats(cls, params, stats, in_qs, **kwargs): stats['range_in'][idx]['max'], dtype=in_dtype, asymmetric=len(stats['range_in'][idx]) == 1) - if dim is not None else None + if dim is not None and stats['range_in'][idx] else None for idx, dim in enumerate(params.in_dims)] diff --git a/tools/nntool/quantization/multiplicative/quantizers/matmult_mult.py b/tools/nntool/quantization/multiplicative/quantizers/matmult_mult.py index eeef512b0..1b6a5e289 100644 --- a/tools/nntool/quantization/multiplicative/quantizers/matmult_mult.py +++ b/tools/nntool/quantization/multiplicative/quantizers/matmult_mult.py @@ -14,7 +14,12 @@ # along with this program. If not, see . import logging - +from quantization.multiplicative.quantizers.rnn_mult_ne16 import limit_input_precision, roundup +from quantization.multiplicative.quantizers.filter_mult import check_filter_options +from quantization.quantizer_options import NE16_WEIGHT_BITS_OPTION, USE_NE16_OPTION, FORCE_INPUT_SIZE_OPTION, FORCE_OUTPUT_SIZE_OPTION +from quantization.unified_quantization_handler import (in_qs_constraint, + option_constraint, + options) import numpy as np from graph.types import (ConstantInputParameters, HSigmoidActivationParameters, MatMulOpParameters, ReluActivationParameters, @@ -33,35 +38,37 @@ LOG = logging.getLogger('nntool.' + __name__) - -@params_type(MatMulOpParameters) -@in_qs_constraint({'dtype': set([np.int8])}) -@out_qs_constraint({'dtype': set([np.int8])}) -class MatMultMult(MultQuantizionHandler): +@options( + NE16_WEIGHT_BITS_OPTION, + USE_NE16_OPTION, + FORCE_INPUT_SIZE_OPTION, + FORCE_OUTPUT_SIZE_OPTION, +) +class MatMultMultBase(MultQuantizionHandler): @classmethod def move_constant(cls, G: GraphView, params, in_qs): # looks for a constant on one of the inputs - # if there is one we can scale by the first dimension of the first - # tensor. If the constant is on the second tensor then move to the first + # if there is one we can scale by the second dimension of the second + # tensor. If the constant is on the first tensor then move to the second # and transpose the operation in_edges = G.indexed_in_edges(params.name) in1_node = in_edges[0].from_node in2_node = in_edges[1].from_node - if isinstance(in1_node, ConstantInputParameters): - return in1_node, in_qs - elif isinstance(in2_node, ConstantInputParameters): + if isinstance(in2_node, ConstantInputParameters): + return in2_node, in_qs + elif isinstance(in1_node, ConstantInputParameters): if len(params.in_dims) > 2: # check if the bias has the correct length to move constant - # it must have a length equal to the first tensors first dimension after transpose + # it must have a length equal to the second tensors second dimension after transpose bias_size = params.in_dims[2].size() - in2_shape = params.in_dims[1].shape - if in2_shape[1] != bias_size: + in1_shape = params.in_dims[0].shape + if in1_shape[1] != bias_size: return None, in_qs for edge in in_edges[:2:]: G.remove_edge(edge) to_idx = 1 - # swap edges to move constant onto input 0 + # swap edges to move constant onto input 2 for edge in in_edges[:2:]: new_edge = NNEdge(from_node=edge.from_node, to_node=edge.to_node, from_idx=edge.from_idx, to_idx=to_idx) @@ -76,10 +83,37 @@ def move_constant(cls, G: GraphView, params, in_qs): G.insert_node_after(params, tout) LOG.warning( 'transposes inserted on %s - rerun adjust', params.name) - return in2_node, [in_qs[1], in_qs[0]] + in_qs[2::] + return in1_node, [in_qs[1], in_qs[0]] + in_qs[2::] else: return None, in_qs + @classmethod + def get_min_max(cls, fusion, stats, all_stats, params): + min_val, max_val = None, None + if fusion: + fnodes = fusion.contained_nodes() + if len(fnodes) > 1: + act_node = fnodes[1] + if isinstance(act_node, HSigmoidActivationParameters): + # Hard sigmoid implements a RELU, be sure 6 can be represented + min_val, max_val = 0, 6 + elif isinstance(act_node, SigmoidActivationParameters): + # Guarantee Q12 input to sigmoid + min_val, max_val = -8, 8 + elif isinstance(act_node, ReluActivationParameters): + # Take stats from activation after the convolution + stats = all_stats.get(NodeId(fusion, act_node)) + + if min_val is None or max_val is None: + cls.check_valid_ranges(params, stats, idx=0, dirs='out') + min_val, max_val = stats['range_out'][0]['min'], stats['range_out'][0]['max'] + return min_val, max_val + +@params_type(MatMulOpParameters) +@in_qs_constraint({'dtype': set([np.int8])}) +@out_qs_constraint({'dtype': set([np.int8])}) +@option_constraint(check_filter_options(False, input_size={8, None}, output_size={8, None})) +class MatMultMultSW8(MatMultMultBase): @classmethod def _quantize(cls, params, in_qs, stats, **kwargs): # copy in_qs because we may modify it @@ -91,25 +125,22 @@ def _quantize(cls, params, in_qs, stats, **kwargs): force_out_q = force_out_qs and force_out_qs[0] G = kwargs['G'] - # only attempt channel scaling if we have a bias - if len(in_qs) > 2: - in1_node, in_qs = cls.move_constant( - G, fusion if fusion else params, in_qs) - if in1_node: - kwargs['graph_update']['requires_adjust'] = True - in_q1 = QType.from_array_sq( - arr=in1_node.dqvalue, - quantized_dimension=0, - dtype=np.int8, - narrow_range=True, - bits=8) - else: - in_q1 = in_qs[0].make_symmetric_signed() + # only attempt channel scaling if the second input is constant + # if len(in_qs) > 2: + in2_node, in_qs = cls.move_constant( + G, fusion if fusion else params, in_qs) + if in2_node: + kwargs['graph_update']['requires_adjust'] = True + in_q2 = QType.from_array_sq( + arr=in2_node.dqvalue, + quantized_dimension=0, + dtype=np.int8, + narrow_range=True, + bits=8) else: - in_q1 = in_qs[0].make_symmetric_signed() - - in_q2 = in_qs[1].make_symmetric_signed() + in_q2 = in_qs[1].make_symmetric_signed() + in_q1 = in_qs[0].make_symmetric_signed() min_val, max_val = cls.get_min_max( fusion, stats, kwargs['all_stats'], params) @@ -141,24 +172,117 @@ def _quantize(cls, params, in_qs, stats, **kwargs): out_qs=[o_q], mul_biases_q=mul_biases_q) +class MatMultMultNE16Base(MatMultMultBase): @classmethod - def get_min_max(cls, fusion, stats, all_stats, params): - min_val, max_val = None, None - if fusion: - fnodes = fusion.contained_nodes() - if len(fnodes) > 1: - act_node = fnodes[1] - if isinstance(act_node, HSigmoidActivationParameters): - # Hard sigmoid implements a RELU, be sure 6 can be represented - min_val, max_val = 0, 6 - elif isinstance(act_node, SigmoidActivationParameters): - # Guarantee Q12 input to sigmoid - min_val, max_val = -8, 8 - elif isinstance(act_node, ReluActivationParameters): - # Take stats from activation after the convolution - stats = all_stats.get(NodeId(fusion, act_node)) + def _quantize_ne16(cls, params, in_qs, stats, input_dtype, **kwargs): + # copy in_qs because we may modify it + in_qs = in_qs.copy() + opts = kwargs['opts'] + fusion = kwargs.get('fusion', None) + input_bits = 16 if input_dtype in (np.uint16, np.int16) else 8 - if min_val is None or max_val is None: - cls.check_valid_ranges(params, stats, idx=0, dirs='out') - min_val, max_val = stats['range_out'][0]['min'], stats['range_out'][0]['max'] - return min_val, max_val + force_out_qs, out_dtype = cls.get_mult_opts(**kwargs) + force_out_q = force_out_qs and force_out_qs[0] + + G = kwargs['G'] + # only attempt channel scaling if we have a bias + in2_node, in_qs = cls.move_constant( + G, fusion if fusion else params, in_qs) + if not in2_node: + raise ValueError(f"Not supported in NE16 this matmul {params.name}") + + w1, h1 = params.in_dims[0].shape[0], params.in_dims[0].shape[1] + h2, w2 = params.in_dims[1].shape[0], params.in_dims[1].shape[1] + h2_padded = roundup(h2, input_bits == 16) + kwargs['graph_update']['requires_adjust'] = True + in_q2 = QType.from_array_sq( + arr=in2_node.dqvalue, + quantized_dimension=0, + dtype=np.uint8, + narrow_range=True, + bit_pack=opts['weight_bits'], + no_compression=True, + bits=opts['weight_bits'], + resize=((h2, w2), (h2_padded, w2)) + ) + + in_q1 = QType.from_min_max_sq(in_qs[0].min_val, in_qs[0].max_val, + dtype=input_dtype, + asymmetric=True) + in_q1 = limit_input_precision( + params, input_bits, in_q1, w1, False, opts['weight_bits']) + + + min_val, max_val = cls.get_min_max( + fusion, stats, kwargs['all_stats'], params) + + if force_out_q: + o_q = force_out_q + LOG.warning('node %s output forced to range %s/%s - actual range %s/%s %s', + params.name, o_q.min, o_q.max, min_val, max_val, + "asymmetric" if o_q.asymmetric else "symmetric") + else: + force_output_size = opts.get('force_output_size', 8) + out_dtype = np.uint8 if force_output_size == 8 else np.uint16 + o_q = QType.from_min_max_sq(min_val=min_val, + max_val=max_val, + dont_copy_attr=['ne16'], + asymmetric=True, + dtype=out_dtype) + if len(in_qs) == 3: + biases_q = QType( + dtype=np.int32, scale=in_q1.scale * in_q2.scale, ne16_biases=(input_bits!=16)) + # calculate bias offset - this will be added to the bias in the kernel + # it is already in quantized form + bias_offset = np.zeros((in2_node.dqvalue.shape[0], ), dtype=np.int32) + if in_q1.zero_point != 0: + # input zero correction is sum(W * Zin) by out_c if weights are channel scaled + bias_offset -= np.sum(np.multiply(in_q1.zero_point, + in2_node.value_as(in_q2).astype( + np.int32) - in_q2.zero_point, + dtype=np.int32), + dtype=np.int32, + axis=1) + if o_q.zero_point != 0: + # output zero correction is So/(Si * Sw) * ZPo by out_c if weights are channel scaled + scale = o_q.scale / (in_q1.scale * in_q2.scale) + bias_offset += np.floor((o_q.zero_point * + scale) + 0.5).astype(np.int32) + if not np.all(bias_offset == 0): + biases_q.offset = bias_offset + out_in_qs = [in_q1, in_q2, biases_q] + else: + out_in_qs = [in_q1, in_q2] + + mul_biases_q = MultMulBiasScaleQType() + mul_biases_q.scale = in_q1.scale * in_q2.scale / o_q.scale + o_q.attr.ne16 = True + + if input_bits == 16: + prenorm = min(np.min(np.min(mul_biases_q.qnorms)), 8) + else: + prenorm = 0 + mul_biases_q.pre_normalization = prenorm + + return QRec.scaled(in_qs=out_in_qs, + out_qs=[o_q], + mul_biases_q=mul_biases_q, + ne16=True) + +@params_type(MatMulOpParameters) +@in_qs_constraint({'dtype': set([np.uint8])}) +@out_qs_constraint({'dtype': set([np.uint8, np.int8, np.uint16, np.int16])}) +@option_constraint(check_filter_options(True, input_size={8, None}, output_size={8, 16, None})) +class MatMultMultNE16_8v8(MatMultMultNE16Base): + @classmethod + def _quantize(cls, params, in_qs, stats, **kwargs): + return cls._quantize_ne16(params, in_qs, stats, np.uint8, **kwargs) + +@params_type(MatMulOpParameters) +@in_qs_constraint({'dtype': set([np.uint16])}) +@out_qs_constraint({'dtype': set([np.uint8, np.int8, np.uint16, np.int16])}) +@option_constraint(check_filter_options(True, input_size={16, None}, output_size={8, 16, None})) +class MatMultMultNE16_16v8(MatMultMultNE16Base): + @classmethod + def _quantize(cls, params, in_qs, stats, **kwargs): + return cls._quantize_ne16(params, in_qs, stats, np.uint16, **kwargs) diff --git a/tools/nntool/quantization/multiplicative/quantizers/nms_mult.py b/tools/nntool/quantization/multiplicative/quantizers/nms_mult.py new file mode 100644 index 000000000..be4abfa94 --- /dev/null +++ b/tools/nntool/quantization/multiplicative/quantizers/nms_mult.py @@ -0,0 +1,38 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import numpy as np +from graph.types import NMSParameters +from quantization.new_qrec import QRec +from quantization.qtype import QType +from quantization.unified_quantization_handler import params_type, in_qs_constraint + +from ..mult_quantization_handler import MultQuantizionHandler + + +@params_type(NMSParameters) +@in_qs_constraint({'dtype': np.int8}) +class NMSParametersMult(MultQuantizionHandler): + @classmethod + def _quantize(cls, params, in_qs, stats, **kwargs): + force_out_qs, _ = cls.get_mult_opts(**kwargs) + force_out_q = force_out_qs and force_out_qs[0] + if force_out_q: + return None + + in_qs = cls.force_symmetric_and_dtype(in_qs, dtype=np.int8) + if in_qs is None: + return None + return QRec.scaled(in_qs=in_qs, out_qs=[QType(scale=1, dtype=np.int16)]) diff --git a/tools/nntool/quantization/multiplicative/quantizers/pooling_mult.py b/tools/nntool/quantization/multiplicative/quantizers/pooling_mult.py index b30fb6346..2c23d9a97 100644 --- a/tools/nntool/quantization/multiplicative/quantizers/pooling_mult.py +++ b/tools/nntool/quantization/multiplicative/quantizers/pooling_mult.py @@ -18,10 +18,9 @@ import numpy as np from graph.types import PoolingParameters -from graph.types.pooling import MaxPoolParameters from quantization.new_qrec import QRec from quantization.qtype import QType -from quantization.quantizer_options import HWC_OPTION +from quantization.quantizer_options import FORCE_NE16_OPTION, HWC_OPTION, USE_NE16_OPTION from quantization.unified_quantization_handler import (in_qs_constraint, options, out_qs_constraint, @@ -99,18 +98,8 @@ def _get_in_qs_from_stats(cls, params, stats, in_qs, **kwargs): @options( - { - 'name': 'use_ne16', - 'type': bool, - 'help': 'enable use of NE16 kernels (if supported) on this layer', - 'default': False - }, - { - 'name': 'force_ne16', - 'type': bool, - 'help': 'force use of NE16 kernels on this layer - may not be supported for model generation', - 'default': False - } + USE_NE16_OPTION, + FORCE_NE16_OPTION ) @params_type(PoolingParameters) @in_qs_constraint({'dtype': set([np.uint8, np.int16, np.uint16])}) diff --git a/tools/nntool/quantization/multiplicative/quantizers/rnn_mult_ne16.py b/tools/nntool/quantization/multiplicative/quantizers/rnn_mult_ne16.py index 36c54b120..8342df98c 100644 --- a/tools/nntool/quantization/multiplicative/quantizers/rnn_mult_ne16.py +++ b/tools/nntool/quantization/multiplicative/quantizers/rnn_mult_ne16.py @@ -91,6 +91,7 @@ def calculatate_weight_q(in_qs, 'Ki': padded_dim[1], 'Qw': qw }, + no_compression=True, **extra_attrs) w_q = in_qs[w_idx] diff --git a/tools/nntool/quantization/qtype.py b/tools/nntool/quantization/qtype.py index d8ffdf8a0..b53902be8 100644 --- a/tools/nntool/quantization/qtype.py +++ b/tools/nntool/quantization/qtype.py @@ -13,8 +13,9 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from copy import deepcopy import math +from copy import deepcopy +from functools import reduce import numpy as np from bfloat16 import bfloat16 @@ -127,15 +128,17 @@ def divide_ignore(a, b): res[res == np.inf] = 0 return np.nan_to_num(res) + IGNORE_KEYS = {'ne16'} + class AttrNamespace: def __init__(self, **kwargs): self.__dict__.update(kwargs) def __getattr__(self, name: str): if name.startswith('__'): - raise AttributeError() # @IgnoreException + raise AttributeError() # @IgnoreException return False def __setattr__(self, name: str, value) -> None: @@ -180,6 +183,7 @@ def __setstate__(self, state): 'scale', ] + class QType(JsonSerializable, EventEmitter): EXPORT = [ 'q', @@ -294,7 +298,7 @@ def set_scale(*args): self.q = sum(other.q for other in others) else: self.scale = np.atleast_1d( - np.prod([other.scale for other in others])) + reduce(np.multiply, [other.scale for other in others], 1.0)) for other in others: other.on('scale_changed', set_scale) set_scale() @@ -412,7 +416,10 @@ def dtype(self): @dtype.setter def dtype(self, val): if val not in DTYPES: - raise ValueError('dtype not found') + # type instances are not hashable but are comparable + val = next((dtype for dtype in DTYPES if val == dtype), None) + if val is None: + raise ValueError('dtype not found') self._dtype = val self._bits, self._signed = DTYPES[val] self.emit('dtype_changed', self._dtype) @@ -582,14 +589,17 @@ def calculate_scale(rmin, rmax, qmin, qmax, dtype, asymmetric=False, return np.atleast_1d(scale), np.atleast_1d(zero_point) elif asymmetric: if narrow_range: - raise ValueError("narrow range does not make sense with asymmetric") - qrange -= 1 # qrange is 2^n - 1 + raise ValueError( + "narrow range does not make sense with asymmetric") + qrange -= 1 # qrange is 2^n - 1 rrange = rmax - rmin scale = rrange / qrange zero_point_from_min = qmin - rmin / scale zero_point_from_max = qmax - rmax / scale - zero_point_error_max = np.abs(np.abs(zero_point_from_max) - np.round(np.abs(zero_point_from_max))) - zero_point_error_min = np.abs(np.abs(zero_point_from_min) - np.round(np.abs(zero_point_from_min))) + zero_point_error_max = np.abs( + np.abs(zero_point_from_max) - np.round(np.abs(zero_point_from_max))) + zero_point_error_min = np.abs( + np.abs(zero_point_from_min) - np.round(np.abs(zero_point_from_min))) # alternate code to do channel scaled zero point # if this is ever used the zero point adjustment code needs to # be modified @@ -904,6 +914,8 @@ def __mul__(self, other): return QType(scale=self.scale * other.scale, bits=self.bits + other.bits, signed=self.signed or other.signed) def quantization_equal(self, other): + if not isinstance(self, QType) or not isinstance(other, QType): + return False return (np.allclose(self.scale, other.scale) and self.bits == other.bits and self.signed == other.signed and diff --git a/tools/nntool/quantization/quantization_set.py b/tools/nntool/quantization/quantization_set.py index 55e2695d4..1e7fe2138 100644 --- a/tools/nntool/quantization/quantization_set.py +++ b/tools/nntool/quantization/quantization_set.py @@ -149,6 +149,15 @@ def get_all(self, nodes: Sequence[Parameters]) -> Sequence[QRec]: return [self.qset[NodeId(node)] for node in nodes] return None + def get_all_stats(self, nodes: Sequence[Parameters]) -> Sequence[QRec]: + """Get all the stats records for a sequence of nodes""" + if self.stats is None: + return None + all_stats = [self.stats.get(NodeId(node)) for node in nodes] + if any(stat is None for stat in all_stats): + return None + return all_stats + def all_have_quantization(self, nodes: Sequence[Parameters]) -> bool: """Check that a sequence of nodes all have quantization records""" return all(NodeId(node) in self.qset for node in nodes) @@ -170,9 +179,12 @@ def propagate(self, G, from_node, to_node, from_idx=None, qtype=None): def move_to_fusion(self, node: Parameters, new_pnode: Parameters): nid = NodeId(node) + fnid = NodeId(new_pnode, node) if nid in self.qset: - self.qset[NodeId(new_pnode, node)] = self.qset[nid] + self.qset[fnid] = self.qset[nid] del self.qset[nid] + if self.stats and nid in self.stats: + self.stats[fnid] = self.stats[nid] def move_to_node(self, node: Parameters, new_pnode: Parameters): nid = NodeId(node) diff --git a/tools/nntool/quantization/quantizer/new_quantizer.py b/tools/nntool/quantization/quantizer/new_quantizer.py index 76e446ebd..70f5d922d 100644 --- a/tools/nntool/quantization/quantizer/new_quantizer.py +++ b/tools/nntool/quantization/quantizer/new_quantizer.py @@ -59,14 +59,14 @@ class MissingStatsError(Exception): class NewQuantizer(): def __init__(self, G: GraphView, reset_all=False) -> None: - self._G = G + self._graph = G if G.quantization and not reset_all: - self.set_stats(current_stats=G.quantization.stats) - self._options = G.quantization.options - if self._G.quantization.scheme_priority: - self._schemes = self._G.quantization.scheme_priority + self.set_stats(current_stats=G.quantization.stats, + current_options=G.quantization.options) + if self._graph.quantization.scheme_priority: + self._schemes = self._graph.quantization.scheme_priority else: - self._schemes = list(self._G.quantization.schemes_present) + self._schemes = list(self._graph.quantization.schemes_present) else: self._stats = {} self._options = {} @@ -125,16 +125,16 @@ def report_edge(self, edge, msg, level): f'{edge.to_node.name}:{edge.to_idx} {qtype}') def report_resolve(self, edge, direction): - self.report_edge(edge, f'RESOLVE {direction}', info) + self.report_edge(edge, f'RESOLVE {direction}', debug) def report_conflict(self, edge): - self.report_edge(edge, 'CONFLICT', info) + self.report_edge(edge, 'CONFLICT', debug) def report_pass(self, edge): - self.report_edge(edge, 'PASS', info) + self.report_edge(edge, 'PASS', debug) def report_quantizer(self, edge): - self.report_edge(edge, 'insert quantizer', info) + self.report_edge(edge, 'insert quantizer', debug) @staticmethod def report_qrec(phase, node, qrec): @@ -204,7 +204,8 @@ def set_qtype(self, edge, qtype, direction, resolution=None): if not cur_qtype: self._qtypes[edge] = qtype elif isinstance(cur_qtype, tuple): - # tuple containing edge_up_qtype, edge_down_qtype, resolution direction (up/down) i.e. the direction to proceed to try to resolve this + # tuple containing edge_up_qtype, edge_down_qtype, resolution direction (up/down) + # i.e. the direction to proceed to try to resolve this if direction == 'down': if cur_qtype[1] == qtype: # qtype resolves since it matches the down side self._qtypes[edge] = qtype @@ -316,7 +317,8 @@ def get_outqtypes_up(self, G, node): else: # all outputs are forced. we want to keep the one that best represents # the output so we calculate the maximum overlapping range - # TODO - what about 16 bit versus 8 bit - if the range overlap is similar then lower scale should be taken into account + # TODO - what about 16 bit versus 8 bit - if the range overlap is similar + # then lower scale should be taken into account range_diffs = sorted([(qtype, min(qtype.max, uniq_cur_qtype.max_val) - max( qtype.min, uniq_cur_qtype.min_val)) for qtype in forced_qtypes], key=lambda x: x[1]) qtypes.append(range_diffs[-1][0]) @@ -324,41 +326,47 @@ def get_outqtypes_up(self, G, node): cur_qtypes = ",".join(str(qtype) for qtype in cur_qtypes) forced_qtypes = ",".join(str(qtype) for qtype in forced_qtypes) raise NotImplementedError( - f'unexpected quantization conflict seen cur {cur_qtypes} forced {forced_qtypes} - please contact GreenWaves') + f'unexpected quantization conflict seen cur {cur_qtypes} forced {forced_qtypes}' + ' - please contact GreenWaves') return qtypes def get_outqtypes_up_fusion(self, G, node): - return [self.select_qtype_fusion([self.get_conflict_up(edge) for edge in edge_bundle]) for edge_bundle in G.indexed_out_edges(node)] + return [self.select_qtype_fusion([self.get_conflict_up(edge) for edge in edge_bundle]) + for edge_bundle in G.indexed_out_edges(node)] - def get_fusion_in_outs(self, int_G, ins_by_idx, outs_by_idx): + def get_fusion_in_outs(self, int_graph, ins_by_idx, outs_by_idx): # get the in outs forced to the actual evaluated ones with no conflict evaluation # remove all conflicts on fusion inputs and outputs in_qtypes = [] for in_node in ins_by_idx: - edge = int_G.out_edges(in_node)[0] + edge = int_graph.out_edges(in_node)[0] in_qtypes.append(self.get_qtype_forced_down(edge)) - for edge in int_G.out_edges(in_node): + for edge in int_graph.out_edges(in_node): self._qtypes[edge] = in_qtypes[-1] out_qtypes = [] for out_node in outs_by_idx: - edge = int_G.in_edges(out_node)[0] + edge = int_graph.in_edges(out_node)[0] out_qtypes.append(self.get_qtype_forced_up(edge)) self._qtypes[edge] = out_qtypes[-1] return in_qtypes, out_qtypes - def set_stats(self, current_stats=None): - self._stats = set_stats(self._G, current_stats=current_stats) + def set_stats(self, current_stats=None, current_options=None): + if current_options is None: + current_options = self.options + self._stats, self._options = set_stats( + self._graph, current_stats=current_stats, current_options=current_options) def get_options(self, nid, handler=None): if handler is not None: opts = handler.get_default_options() opts.update({k: v for k, v in self._options.items() - if k in opts}) + if k in opts}) node_options = self._options.get(nid, {}) opts.update({k: v for k, v in node_options.items() - if k in opts}) + if k in opts}) else: - opts = {k: v for k, v in self._options.items() if not isinstance(k, NodeId)} + opts = {k: v for k, v in self._options.items() + if not isinstance(k, NodeId)} opts.update(self._options.get(nid, {})) return opts @@ -374,7 +382,10 @@ def get_scheme_priority(self, node): scheme_priority = self._schemes return [scheme.upper() for scheme in scheme_priority] - def _choose_quantizer(self, cur_G, node, in_qs, out_qs, stats, opts, scheme_priority, **kwargs): + def _choose_quantizer(self, cur_G, node, in_qs, out_qs, stats, opts, + scheme_priority, fusion, set_out_qs, direction): + kwargs = self.setup_kwargs( + cur_G, out_qs, opts, fusion, set_out_qs, direction) return match_handler(cur_G, self._handlers, node, scheme_priority, opts, in_qs_constraint=in_qs, out_qs_constraint=out_qs, **kwargs) @@ -387,14 +398,15 @@ def _call_quantizer(self, cur_G, handler, node, in_qs, out_qs, stats, opts, fusi cur_G, out_qs, opts, fusion, set_out_qs, direction) return handler.quantize(node, in_qs, stats, **kwargs) - def _call_get_in_qs_from_stats(self, cur_G, direction, handler, node, in_qs, out_qs, stats, opts, fusion, set_out_qs=False): + def _call_get_in_qs_from_stats(self, cur_G, direction, handler, node, in_qs, out_qs, + stats, opts, fusion, set_out_qs=False): kwargs = self.setup_kwargs( cur_G, out_qs, opts, fusion, set_out_qs, direction=direction) return handler.get_in_qs_from_stats(node, stats, in_qs, **kwargs) def setup_kwargs(self, cur_G, out_qs, opts, fusion, set_out_qs, direction): kwargs = { - 'G': self._G, + 'G': self._graph, 'opts': opts, 'all_stats': self._stats, 'fusion': fusion, @@ -411,7 +423,7 @@ def setup_kwargs(self, cur_G, out_qs, opts, fusion, set_out_qs, direction): def _set_fusion_in_edges(self, parent_node, in_qtypes=None): if in_qtypes is None: - in_qtypes = self.get_inqtypes_down(self._G, parent_node) + in_qtypes = self.get_inqtypes_down(self._graph, parent_node) int_G = parent_node.subgraph ins_by_idx = sorted(int_G.inputs(), key=lambda x: x.idx) out_nodes = set() @@ -424,7 +436,7 @@ def _set_fusion_in_edges(self, parent_node, in_qtypes=None): def _set_fusion_out_edges(self, parent_node, out_qtypes=None): int_G = parent_node.subgraph if out_qtypes is None: - for out_idx, out_edge_bundle in enumerate(self._G.indexed_out_edges(parent_node)): + for out_idx, out_edge_bundle in enumerate(self._graph.indexed_out_edges(parent_node)): qtype = None for edge in out_edge_bundle: if qtype is None: @@ -465,7 +477,8 @@ def _bfs_pass_fusion(self, parent_node, in_qtypes, qset, visited): stat = self._stats.get(nid, None) opts = self.get_options(nid) scheme_priority = self.get_scheme_priority(nid) - return self._resolve_qrec(self._G, 'down', parent_node, stat, opts, scheme_priority, in_qtypes, out_qs=out_qtypes, set_out_qs=True) + return self._resolve_qrec(self._graph, 'down', parent_node, stat, opts, + scheme_priority, in_qtypes, out_qs=out_qtypes, set_out_qs=True) def _bfs_pass(self, cur_G, node, qset, visited, parent=None): in_edges = cur_G.indexed_in_edges(node) @@ -529,7 +542,8 @@ def _resolve_qrec(self, cur_G, direction, node, stat, opts, scheme_priority, set_in_qs = in_qs while qrec is None: handler = self._choose_quantizer(cur_G, - node, set_in_qs, out_qs, stat, opts, scheme_priority) + node, set_in_qs, out_qs, stat, opts, scheme_priority, + fusion, set_out_qs, direction) if handler is not None: pnid = NodeId(node) if fusion is None else NodeId(fusion) handler_opts = self.get_options(pnid, handler) @@ -542,7 +556,8 @@ def _resolve_qrec(self, cur_G, direction, node, stat, opts, scheme_priority, node, in_qs, out_qs, stat, handler_opts, fusion, set_out_qs=set_out_qs) qrec = self._call_quantizer(cur_G, - handler, node, cur_in_qs, out_qs, stat, handler_opts, fusion, direction=direction, set_out_qs=set_out_qs) + handler, node, cur_in_qs, out_qs, stat, handler_opts, fusion, + direction=direction, set_out_qs=set_out_qs) if qrec is None: if out_qs is not None: out_qs = None @@ -565,8 +580,8 @@ def bfs_pass(self, only_inserted=False): self._qset = QuantizationSet() self.remove_quantizers(only_inserted=only_inserted) visited = [] - for node in self._G.inputs(): - self._bfs_pass(self._G, node, self._qset, visited) + for node in self._graph.inputs(): + self._bfs_pass(self._graph, node, self._qset, visited) def elimination_pass_up(self, cur_G, edge, qtype, visited, fusion=None): if edge.from_node in visited: @@ -583,7 +598,7 @@ def elimination_pass_up(self, cur_G, edge, qtype, visited, fusion=None): self.set_qtype_down(edge, qrec.out_qs[edge.from_idx]) if self.is_conflict(edge): if fusion: - raise CantContinueError() + raise CantContinueError() # @IgnoreException if not was_conflict: self.report_conflict(edge) else: @@ -651,7 +666,7 @@ def elimination_fusion_pass_down(self, parent_node, qrecs, in_qs, out_qs): in_qtypes, out_qtypes = self.get_fusion_in_outs( int_G, ins_by_idx, outs_by_idx) - for edge in self._G.indexed_in_edges(parent_node): + for edge in self._graph.indexed_in_edges(parent_node): was_conflict = self.is_conflict( edge) if edge in self._qtypes else False self.set_qtype_up(edge, in_qtypes[edge.to_idx]) @@ -668,7 +683,8 @@ def elimination_fusion_pass_down(self, parent_node, qrecs, in_qs, out_qs): stat = self._stats.get(nid, None) opts = self.get_options(nid) scheme_priority = self.get_scheme_priority(nid) - return self._resolve_qrec(self._G, 'down', parent_node, stat, opts, scheme_priority, in_qtypes, out_qs=out_qtypes, set_out_qs=True) + return self._resolve_qrec(self._graph, 'down', parent_node, stat, opts, + scheme_priority, in_qtypes, out_qs=out_qtypes, set_out_qs=True) def elimination_fusion_pass_up(self, parent_node, qrecs, in_qs, out_qs): int_G = parent_node.subgraph @@ -703,7 +719,7 @@ def elimination_fusion_pass_up(self, parent_node, qrecs, in_qs, out_qs): in_qtypes, out_qtypes = self.get_fusion_in_outs( int_G, ins_by_idx, outs_by_idx) - for edge_bundle in self._G.indexed_out_edges(parent_node): + for edge_bundle in self._graph.indexed_out_edges(parent_node): for edge in edge_bundle: was_conflict = self.is_conflict( edge) if edge in self._qtypes else False @@ -721,7 +737,7 @@ def elimination_fusion_pass_up(self, parent_node, qrecs, in_qs, out_qs): stat = self._stats.get(nid, None) opts = self.get_options(nid) scheme_priority = self.get_scheme_priority(nid) - qrec = self._resolve_qrec(self._G, 'up', parent_node, stat, opts, + qrec = self._resolve_qrec(self._graph, 'up', parent_node, stat, opts, scheme_priority, in_qtypes, out_qs=out_qtypes, set_out_qs=True) return qrec @@ -777,7 +793,8 @@ def continue_down(self, cur_G, qrecs, visited, node, qrec, exclude_edge=None, fu if not self.is_conflict(out_edge): continue qrecs.update(self.elimination_pass_down(cur_G, - out_edge, self.get_qtype_down(out_edge), visited + [node], fusion=fusion)) + out_edge, self.get_qtype_down(out_edge), + visited + [node], fusion=fusion)) def continue_up(self, cur_G, qrecs, visited, node, qrec, exclude_edge=None, fusion=None): # check in_qs for match problems and continue up @@ -826,10 +843,10 @@ def elimination_pass(self): self.report_pass(edge) if conflict[2] == 'up': - qrecs = self.elimination_pass_up(self._G, + qrecs = self.elimination_pass_up(self._graph, edge, conflict[1], [edge.to_node]) else: - qrecs = self.elimination_pass_down(self._G, + qrecs = self.elimination_pass_down(self._graph, edge, conflict[0], [edge.from_node]) after_len = self.conflict_count() if after_len < before_len: @@ -849,7 +866,8 @@ def insert_quantizers(self): self.report_quantizer(edge) qnode = QuantizeParameters( - self._G.unique_name(f'{edge.to_node.name}_qin{edge.to_idx}'), + self._graph.unique_name( + f'{edge.to_node.name}_qin{edge.to_idx}'), from_qtype=from_qtype, to_qtype=to_qtype) self._qset[NodeId(qnode)] = QRec( @@ -859,16 +877,16 @@ def insert_quantizers(self): 'range_in': [{'min': from_qtype.min_val, 'max': from_qtype.max_val}], 'range_out': [{'min': to_qtype.min_val, 'max': to_qtype.max_val}] } - self._G.insert_node_at_edge(qnode, edge, edge_class=NNEdge) - for out_edge in self._G.out_edges(qnode): + self._graph.insert_node_at_edge(qnode, edge, edge_class=NNEdge) + for out_edge in self._graph.out_edges(qnode): self._qtypes[out_edge] = to_qtype - RemoveCopies().match(self._G) + RemoveCopies().match(self._graph) def remove_quantizers(self, only_inserted=False): - for node in self._G.nodes(node_classes=QuantizeParameters): + for node in self._graph.nodes(node_classes=QuantizeParameters): if only_inserted and not node.inserted_by_quantizer: continue - self._G.remove_and_reconnect(node, edge_class=NNEdge) + self._graph.remove_and_reconnect(node, edge_class=NNEdge) nid = NodeId(node) if self._qset and nid in self._qset: del self._qset[nid] @@ -880,21 +898,21 @@ def quantize(self): raise ValueError('no quantization schemes set') self._postprocess = {'requires_adjust': False} self.bfs_pass() - self._G.quantization = self.qset + self._graph.quantization = self.qset self.elimination_pass() self.insert_quantizers() - RemoveUnnecessaryQuantizeOperators().match(self._G) - self._G.add_dimensions() + RemoveUnnecessaryQuantizeOperators().match(self._graph) + self._graph.add_dimensions() if self._postprocess['requires_adjust']: - self._G.adjust_order() - self._G.quantization.scheme_priority = self._schemes - self._G.quantization.schemes_present |= set(self._schemes) - self._G.quantization.stats = self._stats - self._G.quantization.options = self._options - problems = verify_quantization(self._G) + self._graph.adjust_order() + self._graph.quantization.scheme_priority = self._schemes + self._graph.quantization.schemes_present |= set(self._schemes) + self._graph.quantization.stats = self._stats + self._graph.quantization.options = self._options + problems = verify_quantization(self._graph) if problems: LOG.warning('quantization has errors') for problem in problems: LOG.warning(problem) raise ValueError('quantization did not complete successfully') - return self._G.quantization + return self._graph.quantization diff --git a/tools/nntool/quantization/quantizer/qrec_to_stats.py b/tools/nntool/quantization/quantizer/qrec_to_stats.py index 22ca6aa56..5c46424ca 100644 --- a/tools/nntool/quantization/quantizer/qrec_to_stats.py +++ b/tools/nntool/quantization/quantizer/qrec_to_stats.py @@ -35,9 +35,11 @@ def build_stat_from_qrec(qrec, node=None): return None if qrec.in_qs is None or qrec.out_qs is None: return None - range_in = [None if qtype is None else ({'min': qtype.min_val, 'max': qtype.max_val} if qtype.has_valid_range else {'min': None, 'max': None}) + range_in = [None if qtype is None else ({'min': qtype.min_val, 'max': qtype.max_val} + if qtype.has_valid_range else {'min': None, 'max': None}) for qtype in qrec.in_qs] - range_out = [None if qtype is None else ({'min': qtype.min_val, 'max': qtype.max_val} if qtype and qtype.has_valid_range else {'min': None, 'max': None}) + range_out = [None if qtype is None else ({'min': qtype.min_val, 'max': qtype.max_val} + if qtype and qtype.has_valid_range else {'min': None, 'max': None}) for qtype in qrec.out_qs] range_in_valid = ranges_are_valid(range_in) range_out_valid = ranges_are_valid(range_out) @@ -52,7 +54,8 @@ def build_stat_from_qrec(qrec, node=None): range_out = [{'min': np.atleast_1d( node.value.min()), 'max': np.atleast_1d(node.value.max())}] else: - LOG.warning(f'{node.name} does not have valid activation range information') + LOG.warning( + f'{node.name} does not have valid activation range information') return { 'range_in': range_in, 'range_out': range_out @@ -66,8 +69,9 @@ def build_stat(G, nid, node=None): return build_stat_from_qrec(qrec, node) -def set_stats(G, current_stats=None): +def set_stats(G, current_stats=None, current_options=None): stats = {} if current_stats is None else current_stats.copy() + current_options = {} if current_options is None else current_options.copy() for node in G.nodes(): nid = NodeId(node) if nid not in stats or stats[nid] is None: @@ -84,8 +88,14 @@ def set_stats(G, current_stats=None): nid) if G.quantization else None stats[nid] = build_stat_from_qrec(qrec) elif isinstance(node, ExpressionFusionParameters): - if 'expression' not in stats[nid]: - if 'expression' not in G.quantization[nid].cache: - raise ValueError(f"quantized expression for {node.name} not found in current stats") + if stats[nid] is None or 'expression' not in stats[nid]: + if (G.quantization is None or nid not in G.quantization or G.quantization[nid].cache is None or + 'expression' not in G.quantization[nid].cache): + raise ValueError( + f"quantized expression for {node.name} not found in current stats") stats[nid]['expression'] = G.quantization[nid].cache['expression'] - return stats + elif isinstance(node, ConstantInputParameters): + if G.quantization and nid in G.quantization: + current_options.setdefault(nid, {})['qtype_ind'] = G.quantization[nid].out_qs[0] + + return stats, current_options diff --git a/tools/nntool/quantization/quantizer_options.py b/tools/nntool/quantization/quantizer_options.py index e57fa15f4..068dce310 100644 --- a/tools/nntool/quantization/quantizer_options.py +++ b/tools/nntool/quantization/quantizer_options.py @@ -91,11 +91,11 @@ } SQBITS_OPTION_DEFAULT_8 = { - 'name': 'sq_bits', - 'type': int, - 'choices': [8], - 'help': 'bits for inputs and outputs of scaled kernels', - 'default': 8 + 'name': 'sq_bits', + 'type': int, + 'choices': [8], + 'help': 'bits for inputs and outputs of scaled kernels', + 'default': 8 } BITS_OPTION_DEFAULT_16 = { @@ -136,3 +136,9 @@ 'help': 'bits for filter biases - if set to 0 the same size as the output type will be used', 'default': 0 } + +QTYPE_IND_OPTION = { + 'name': 'qtype_ind', + 'type': None, + 'default': None +} diff --git a/tools/nntool/quantization/symmetric/kernels/dsp_preprocessing.py b/tools/nntool/quantization/symmetric/kernels/dsp_preprocessing.py index cbec55388..765c3a543 100644 --- a/tools/nntool/quantization/symmetric/kernels/dsp_preprocessing.py +++ b/tools/nntool/quantization/symmetric/kernels/dsp_preprocessing.py @@ -14,28 +14,30 @@ # along with this program. If not, see . import logging -from copy import deepcopy -from utils.pow_sqrt import LN_10_INV_Q10, LN_2_1F15, LOG10_2, gap_fl1, logn_17_15, sqrt_17_15 import numpy as np -from graph.types import MFCCPreprocessingParameters, RFFT2DPreprocessingParameters +from graph.types import (MFCCPreprocessingParameters, + RFFT2DPreprocessingParameters) from quantization.kernels.kernel_base import KernelBase, params_type, qrec_type -from quantization.multiplicative.mulbias import (apply_multiplicative_bias, - apply_zero_offset_bias) from quantization.new_qrec import QRec from utils.at_norm import at_norm -from utils.fft_quant import Rad2_FFT_DIF_Fix16, Rad4_FFT_DIF_Fix16, RFFT_Step_Fix16, SwapSamples +from utils.fft_quant import (Rad2_FFT_DIF_Fix16, Rad4_FFT_DIF_Fix16, + RFFT_Step_Fix16, SwapSamples) +from utils.pow_sqrt import (LN_2_1F15, LN_10_INV_Q10, LOG10_2, gap_fl1, + logn_17_15, sqrt_17_15) # pylint: disable=invalid-name LOG = logging.getLogger("nntool." + __name__) + SQRT_2_Q15 = 0xb504 + class DSPKernelBasePow2(KernelBase): @classmethod def preemphasis(cls, params, in_data, qfft_in): # if params.preemp_factor: - # need preemp here + # need preemp here max_in = np.max(np.abs(in_data)) shift = int(qfft_in - np.ceil(np.log2(max_in))) if max_in else 0 if shift > 0: @@ -58,7 +60,8 @@ def fft_step(cls, params, in_cfft, fft_twiddles, swap_table): @classmethod def spectrogram_step(cls, params, in_data, shift, fft_out_q): - spectrogram = (np.uint32(in_data.real) ** 2) + (np.uint32(in_data.imag) ** 2) + spectrogram = (np.uint32(in_data.real) ** 2) + \ + (np.uint32(in_data.imag) ** 2) QP = 2*(fft_out_q + shift) - 15 if params.magsquared: # spectrogram = spectrogram >> 2*shift if shift > 0 else spectrogram << (-2*shift) @@ -81,10 +84,13 @@ def melspectrogram_step(cls, params, in_data, filterbanks_sparsity, filterbank_c max_in = np.max(in_data[start:start+nonzero_items]) logn_items = gap_fl1(nonzero_items) shift0 = gap_fl1(max_in) if max_in else 0 - shift = shift0 + mel_coeff_q + logn_items - 31 if shift0 + mel_coeff_q + logn_items > 31 else 0 + shift = np.asscalar( + np.int32(shift0 + mel_coeff_q + logn_items - 31 + if shift0 + mel_coeff_q + logn_items > 31 else 0)) melbin = 0 for j in range(start, start+nonzero_items): - melbin += filterbank_coeff[base+j-start] * (in_data[j] >> shift) + melbin += filterbank_coeff[base + + j-start] * (in_data[j] >> shift) melspectrogram.append(melbin if melbin != 0 else 1) shift_buff.append(shift) return np.array(melspectrogram).astype(np.uint32), np.array(shift_buff) @@ -105,8 +111,14 @@ def log_step(cls, params, in_data, mel_coeff_q, shift_buff, fft_out_q, shift, no qformat = 30 - shift_buff if params.log_type == "db": - return np.clip(at_norm(10 * ((logn_17_15(in_data, True) * LN_10_INV_Q10 >> 10) - (qformat - 15) * LOG10_2), norm), -(1<<15), (1<<15)-1).astype(np.int16) - return np.clip(at_norm(logn_17_15(in_data, True) - (qformat - 15) * LN_2_1F15, norm), -(1<<15), (1<<15)-1).astype(np.int16) + return np.clip( + at_norm( + 10 * ((logn_17_15(in_data, True) * LN_10_INV_Q10 >> + 10) - (qformat - 15) * LOG10_2), + norm), -(1 << 15), (1 << 15)-1).astype(np.int16) + return np.clip(at_norm(logn_17_15(in_data, True) - (qformat - 15) * LN_2_1F15, norm), + -(1 << 15), + (1 << 15)-1).astype(np.int16) @params_type(RFFT2DPreprocessingParameters) @@ -124,18 +136,22 @@ def execute(cls, params, spectrograms = [] for frame_idx in range(params.n_frames): - in_data = in_tensors[0][params.frame_step*frame_idx:params.frame_step*frame_idx+params.frame_size] - in_data, shift = cls.preemphasis(params, in_data, 12 if params.is_radix4() else 13) + in_data = in_tensors[0][params.frame_step * + frame_idx:params.frame_step*frame_idx+params.frame_size] + in_data, shift = cls.preemphasis( + params, in_data, 12 if params.is_radix4() else 13) if params.win_fn: win_lut = in_tensors[1] - in_data = cls.windowing(params, in_data, win_lut, qrec.in_qs[1].q) + in_data = cls.windowing( + params, in_data, win_lut, qrec.in_qs[1].q) in_cfft = np.stack([in_data[::2], in_data[1::2]], axis=0) - out_cfft = cls.fft_step(params, in_cfft, fft_twiddles, swap_table) + out_cfft = cls.fft_step(params, in_cfft, fft_twiddles, swap_table) out_data = RFFT_Step_Fix16(out_cfft, rfft_twiddles, params.n_fft) out_data = out_data[0] + 1j*out_data[1] - spectrograms.append(cls.spectrogram_step(params, out_data, shift, qrec.cache['fft_out_q'].q)) + spectrograms.append(cls.spectrogram_step( + params, out_data, shift, qrec.cache['fft_out_q'].q)) return [np.array(spectrograms)] @@ -159,31 +175,39 @@ def execute(cls, params, result = [] for frame_idx in range(params.n_frames): - in_data = in_tensors[0][params.frame_step*frame_idx:params.frame_step*frame_idx+params.frame_size] - in_data, shift = cls.preemphasis(params, in_data, 12 if params.is_radix4() else 13) + in_data = in_tensors[0][params.frame_step * + frame_idx:params.frame_step*frame_idx+params.frame_size] + in_data, shift = cls.preemphasis( + params, in_data, 12 if params.is_radix4() else 13) if params.win_fn: win_lut = in_tensors[1] - in_data = cls.windowing(params, in_data, win_lut, qrec.in_qs[1].q) + in_data = cls.windowing( + params, in_data, win_lut, qrec.in_qs[1].q) in_cfft = np.stack([in_data[::2], in_data[1::2]], axis=0) - out_cfft = cls.fft_step(params, in_cfft, fft_twiddles, swap_table) + out_cfft = cls.fft_step(params, in_cfft, fft_twiddles, swap_table) out_data = RFFT_Step_Fix16(out_cfft, rfft_twiddles, params.n_fft) out_data = out_data[0] + 1j*out_data[1] - spectrogram = cls.spectrogram_step(params, out_data, shift, qrec.cache['fft_out_q'].q) + spectrogram = cls.spectrogram_step( + params, out_data, shift, qrec.cache['fft_out_q'].q) - melspect, shift_buff = cls.melspectrogram_step(params, spectrogram, mel_filterbank_sparsity_mat, mel_filterbank_coeff, qrec.in_qs[6].q) + melspect, shift_buff = cls.melspectrogram_step( + params, spectrogram, mel_filterbank_sparsity_mat, mel_filterbank_coeff, qrec.in_qs[6].q) if params.mel_type == "melspectrogram": - result.append(cls.norm_clip_32_melspect(params, melspect, shift_buff)) + result.append(cls.norm_clip_32_melspect( + params, melspect, shift_buff)) continue - logmelspect = cls.log_step(params, melspect, qrec.in_qs[6].q, shift_buff, qrec.cache["fft_out_q"], shift, params.quant_norm) + logmelspect = cls.log_step( + params, melspect, qrec.in_qs[6].q, shift_buff, qrec.cache["fft_out_q"], shift, params.quant_norm) if params.mel_type == "logmelspectrogram": result.append(logmelspect) continue if params.n_dct: - mfcc = np.clip(at_norm(np.dot(dct_matrix, logmelspect), 14), -(1<<15), (1<<15)-1) + mfcc = np.clip( + at_norm(np.dot(dct_matrix, logmelspect), 14), -(1 << 15), (1 << 15)-1) result.append(mfcc) return [np.array(result)] diff --git a/tools/nntool/quantization/symmetric/kernels/matrix_operations.py b/tools/nntool/quantization/symmetric/kernels/matrix_operations.py index c143485da..25b3df930 100644 --- a/tools/nntool/quantization/symmetric/kernels/matrix_operations.py +++ b/tools/nntool/quantization/symmetric/kernels/matrix_operations.py @@ -21,7 +21,7 @@ MatrixSubParameters) from graph.types.expression_fusion import ExpressionFusionParameters from graph.types.fusions import MatScaleFusionParameters -from graph.types.tensor_arithmetic import Broadcastable +from graph.types.tensor_arithmetic import Broadcastable, MatMulTransposedParameters from quantization.kernels.kernel_base import (KernelBase, params_type, qrec_type) from quantization.multiplicative.mulbias import (compute_in_out_scale, @@ -183,7 +183,7 @@ def execute(cls, params, details['results'] = results return qrec.get_outputs(params, out_tensors, ktype="symmetric") -@params_type(MatMulOpParameters) +@params_type(MatMulOpParameters, MatMulTransposedParameters) @qrec_type('scaled') class MatMulScaled(KernelBase): @classmethod @@ -194,23 +194,28 @@ def execute(cls, params, in_tensors = [in_tensor.astype(np.int32) for in_tensor in qrec.prepare_inputs( params, in_tensors, ktype="symmetric")] + if isinstance(params, MatMulTransposedParameters): + mat1, mat2 = in_tensors[0], np.transpose(in_tensors[1], (1, 0)) + else: + mat1, mat2 = in_tensors[0], in_tensors[1] + mat2 = mat2.astype(np.int32) - qrec.in_qs[1].zero_point.astype(np.int32) if len(in_tensors) > 2: biases = in_tensors[2] if len(biases.shape) == 1: - biases = np.expand_dims(biases, -1) + biases = np.expand_dims(biases, 1 if mat2.shape[1] == 1 else 0) else: biases = 0 - - out_tensor = np.matmul(in_tensors[0], in_tensors[1]) + biases + + out_tensor = np.matmul(mat1, mat2) + biases mul_biases_q = qrec.cache['mul_biases_q'] - scale_axis = None if len(mul_biases_q.scale) == 1 else 0 - out_tensor = mul_biases_q.apply_scales(out_tensor, scale_axis).astype(qrec.out_qs[0].dtype) + scale_axis = None if len(mul_biases_q.scale) == 1 else 1 + out_tensor = mul_biases_q.apply_scales(out_tensor, scale_axis) return qrec.get_outputs(params, [out_tensor], ktype="symmetric") -@params_type(MatMulOpParameters) +@params_type(MatMulOpParameters, MatMulTransposedParameters) @qrec_type('symmetric') class MatMulSymmetric(KernelBase): @classmethod @@ -222,15 +227,21 @@ def execute(cls, params, in_tensors = [in_tensor.astype(np.int32) for in_tensor in qrec.prepare_inputs( params, in_tensors, ktype="symmetric")] + if isinstance(params, MatMulTransposedParameters): + mat1, mat2 = in_tensors[0], np.transpose(in_tensors[1], (1, 0)) + else: + mat1, mat2 = in_tensors[0], in_tensors[1] + if len(in_tensors) > 2: biases = in_tensors[2] if len(biases.shape) == 1: - biases = np.expand_dims(biases, -1) + biases = np.expand_dims(biases, 1 if mat2.shape[1] == 1 else 0) else: biases = 0 + # expect biases in in_q1 + in_q2 q_calc = QType.Pow2(bits=32, q=qrec.in_qs[0].q + qrec.in_qs[1].q, signed=True) - out_tensor = np.matmul(in_tensors[0], in_tensors[1]) + biases + out_tensor = np.matmul(mat1, mat2) + biases out_tensor = qrec.out_qs[0].reduce_from(out_tensor, q_calc) return qrec.get_outputs(params, [out_tensor], ktype="symmetric") diff --git a/tools/nntool/quantization/symmetric/kernels/pool.py b/tools/nntool/quantization/symmetric/kernels/pool.py index f3d84db4c..cf7688d37 100644 --- a/tools/nntool/quantization/symmetric/kernels/pool.py +++ b/tools/nntool/quantization/symmetric/kernels/pool.py @@ -53,7 +53,7 @@ def execute(cls, params, in_tensor = np.pad(in_tensor, params.padding.numpy_pad_shape(in_dims), mode='constant', - constant_values=qrec.in_qs[0].pad_zero_point) + constant_values=qrec.in_qs[0].zero_point) pad_w = params.padding.w pad_h = params.padding.h else: @@ -107,7 +107,7 @@ def execute(cls, params, in_tensor = np.pad(in_tensor, params.padding.numpy_pad_shape(in_dims), mode='constant', - constant_values=qrec.in_qs[0].pad_zero_point) + constant_values=qrec.in_qs[0].zero_point) pad_w = params.padding.w pad_h = params.padding.h else: diff --git a/tools/nntool/quantization/symmetric/kernels/ssd_postprocess.py b/tools/nntool/quantization/symmetric/kernels/ssd_postprocess.py index 8c58f9ca1..ce0d7ff6b 100644 --- a/tools/nntool/quantization/symmetric/kernels/ssd_postprocess.py +++ b/tools/nntool/quantization/symmetric/kernels/ssd_postprocess.py @@ -15,15 +15,16 @@ import numpy as np from graph.types import SSDDetectorParameters -from quantization.kernels.kernel_base import (KernelBase, params_type, - qrec_type) +from graph.types.ssd import NMSParameters +from quantization.kernels.kernel_base import KernelBase, params_type, qrec_type from quantization.multiplicative.mulbias import set_ssd_scales from quantization.new_qrec import QRec -from utils.exp_17_15 import exp_fp_17_15 from utils.at_norm import at_norm +from utils.exp_17_15 import exp_fp_17_15 from utils.ssd_utils import (CNTX_IDX, CNTY_IDX, H_IDX, W_IDX, XMAX_IDX, - XMIN_IDX, YMAX_IDX, YMIN_IDX, convert_cors2cnts, - rect_intersect_area, rect_union_area) + XMIN_IDX, YMAX_IDX, YMIN_IDX, convert_cnts2cors, + convert_cors2cnts, rect_intersect_area, + rect_union_area) @params_type(SSDDetectorParameters) @@ -132,110 +133,63 @@ def execute(cls, params, # out_count = np.array([sum(out_classes != 0)]) return qrec.get_outputs(params, [out_boxes, out_classes, out_scores], ktype="symmetric") - # @classmethod - # def decoder(cls, params, qrec, offsets, anchors, scores, anchors_type='centers'): - # if anchors_type == 'centers': - # anchors_cnts = anchors - # else: - # anchors_cnts = convert_cors2cnts(anchors) - - # out_boxes_q = qrec.out_qs[0] - - # scores_q = qrec.in_qs[1] - # score_threshold = scores_q.quantize(params.nms_score_threshold) - - # # keep only the offsets with score > threshold - # bboxes_indices = np.arange(offsets.shape[0]) - # valid_indices = bboxes_indices[np.any(scores > score_threshold, axis=1)] - # valid_scores = scores[valid_indices] - # valid_offsets = offsets[valid_indices] - # valid_anchors = anchors_cnts[valid_indices] - - # set_ssd_scales(qrec, params) - # # xcnt, ycnt --> Q14 - # # xcnt = (So*O * Sa*Aw)/params.x_scale + Sa*Ax = So*Sa/params.x_scale (O*Aw + x_scale/So * Ax) = - # # (scale_x * (O*Aw + (scale_x_anc*Ax)>>scale_x_ancNorm))>>scale_xNorm = - # # at_norm(scale_x*(O*Aw + at_norm(scale_x_anc*Ax, scale_x_ancNorm)), scale_xNorm) - # xcenter = qrec.cache['scale_x_q'].apply_scales( - # np.multiply(valid_offsets[:, CNTX_IDX], valid_anchors[:, W_IDX], dtype=np.int32) + - # qrec.cache['scale_x_anc_q'].apply_scales(valid_anchors[:, CNTX_IDX]) - # ) - # ycenter = qrec.cache['scale_y_q'].apply_scales( - # np.multiply(valid_offsets[:, CNTY_IDX], valid_anchors[:, H_IDX], dtype=np.int32) + - # qrec.cache['scale_y_anc_q'].apply_scales(valid_anchors[:, CNTY_IDX]) - # ) - - # # half_h, half_w --> Q14 - # # half_h = exp(So*Off / params.h_scale) * Sa*A = Sa/So * exp(So/params.h_scale *O) * A = - # # (scale_ao * (A* exp17.15(scale_h*O<<15-scale_hNorm))>>scale_aoNorm) = - # # at_norm(scale_ao*(A*exp17.15(scale_h*O<<15-scale_hNorm)), scale_aoNorm) - # norm_h = 15 - qrec.cache['scale_h_q'].qnorms - # norm_w = 15 - qrec.cache['scale_w_q'].qnorms - # exp_h = exp_fp_17_15(np.multiply(valid_offsets[:, H_IDX], int( - # qrec.cache['scale_h_q'].qbiases), dtype=np.int32) << norm_h) - # exp_w = exp_fp_17_15(np.multiply(valid_offsets[:, W_IDX], int( - # qrec.cache['scale_w_q'].qbiases), dtype=np.int32) << norm_w) - # half_h = qrec.cache['scale_ao_q'].apply_scales(np.multiply( - # exp_h, valid_anchors[:, H_IDX], dtype=np.int32)) >> 1 - # half_w = qrec.cache['scale_ao_q'].apply_scales(np.multiply( - # exp_w, valid_anchors[:, W_IDX], dtype=np.int32)) >> 1 - - # # min-max or corners format: required for nms - # decoded_anchors = np.zeros_like(valid_anchors, dtype=out_boxes_q.dtype) - # decoded_anchors[:, YMIN_IDX] = ycenter - half_h - # decoded_anchors[:, YMAX_IDX] = ycenter + half_h - # decoded_anchors[:, XMIN_IDX] = xcenter - half_w - # decoded_anchors[:, XMAX_IDX] = xcenter + half_w - # return decoded_anchors, valid_scores - - # @classmethod - # def nms(cls, params, qrec, decoded_bboxes, valid_scores): - # scores_q = qrec.in_qs[1] - # score_threshold = scores_q.quantize(params.nms_score_threshold) - # # loop over classes apart the background - # num_classes = valid_scores.shape[1] - # out_boxes = [] - # out_scores = [] - # out_classes = [] - # for class_idx in range(1, num_classes): - # class_scores = valid_scores[:, class_idx] - # # default anchors indices before appplying any sort - # bboxes_indices = np.arange(decoded_bboxes.shape[0]) - # # apply confidence threshold - # valid_scores_indices = bboxes_indices[class_scores > score_threshold] - # class_scores = class_scores[valid_scores_indices] - - # # sort the confidences freater than the confidence threshold - # args = np.argsort(-class_scores) # sort the confidences and - # inds = valid_scores_indices[args] # back to the original indices - # sorted_bboxes = decoded_bboxes[inds] - # sorted_scores = class_scores[args] - # liveness = [True] * sorted_bboxes.shape[0] - # for i, box_a in enumerate(sorted_bboxes): - # if not liveness[i]: - # continue - # for j in range(i+1, len(sorted_bboxes)): - # box_b = sorted_bboxes[j] - # intersection = rect_intersect_area(box_a, box_b) - # union = rect_union_area(box_a, box_b) - # if intersection >= at_norm(scores_q.quantize(params.nms_iou_threshold) * union, 7): - # # iou > threshold -> - # # discard second box which is dominated by the first because they are sorted - # liveness[j] = False - # if sum(liveness) > 0: - # out_boxes.append(sorted_bboxes[liveness]) - # out_scores.append(sorted_scores[liveness]) - # out_classes.append([class_idx] * sum(liveness)) - # if len(out_boxes) > 0: - # out_boxes = np.concatenate(out_boxes) - # out_classes = np.concatenate(out_classes) - # out_scores = np.concatenate(out_scores) - # # keep only the max_detection most probables - # args = np.argsort(out_scores)[::-1] - # if len(args) < params.max_detections: - # return np.pad(out_boxes[args], ((0, params.max_detections-len(args)), (0, 0)), 'constant'), \ - # np.pad(out_scores[args], (0, params.max_detections-len(args)), 'constant'), \ - # np.pad(out_classes[args], (0, params.max_detections-len(args)), 'constant') - # args = args[:params.max_detections] - # return out_boxes[args], out_scores[args], out_classes[args] - # return np.zeros((params.max_detections, 4)), np.zeros(params.max_detections), np.zeros(params.max_detections) +@params_type(NMSParameters) +@qrec_type('scaled') +class NMSKernelSymmetric(KernelBase): + @classmethod + def execute(cls, params, + in_tensors, + qrec: QRec, + **kwargs): + boxes = in_tensors[0][0] if not params.center_point_box else convert_cnts2cors(in_tensors[0][0]) + scores = in_tensors[1][0] + n_boxes = len(scores[0]) + n_classes = len(scores) + scores_q = qrec.in_qs[1] + + indexes = np.zeros((params.max_output_boxes_per_class*n_classes, 3)) + idxs_count = 0 + for class_id in range(n_classes): + bbox_buff = [] + counter = 0 + for box_id in range(n_boxes): + class_score = scores[class_id, box_id] + if class_score > scores_q.quanize(params.nms_score_threshold): + bbox_buff.append({ + "index": box_id, + "score": class_score, + "box": boxes[box_id], + "alive": True + }) + counter += 1 + + # Bubble sort to sort the scores + changed = True + while changed: + changed = False + for i in range(counter-1): + if bbox_buff[i]["score"] < bbox_buff[i+1]["score"]: + temp = bbox_buff[i] + bbox_buff[i] = bbox_buff[i+1] + bbox_buff[i+1] = temp + changed = True + + # NMS + for idx in range(counter): + for idx_int in range(idx+1, counter): + if not bbox_buff[idx_int]["alive"]: + continue + intersection = rect_intersect_area(bbox_buff[idx]["box"], bbox_buff[idx_int]["box"]) + union = rect_union_area(bbox_buff[idx]["box"], bbox_buff[idx_int]["box"]) + if intersection >= (scores_q.quanize(params.nms_iou_threshold) * union): + bbox_buff[idx_int]["alive"] = False + + class_idxs_count_start = idxs_count + for bb in bbox_buff: + if (idxs_count-class_idxs_count_start) > params.max_output_boxes_per_class: + break + if bb["alive"]: + indexes[idxs_count] = np.array([0, class_id, bb['index']]) + idxs_count += 1 + + return qrec.get_outputs(params, [np.array(indexes)], ktype="float") diff --git a/tools/nntool/quantization/tune_type.py b/tools/nntool/quantization/tune_type.py deleted file mode 100644 index 526a5a951..000000000 --- a/tools/nntool/quantization/tune_type.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (C) 2020 GreenWaves Technologies, SAS - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. - -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -from graph.types.fusions import FusionBase -from utils.node_id import NodeId - -QREC_TYPES = { -} - -def tune_type(G, qrecs, node, qdtype): - is_fusion = isinstance(node, FusionBase) - nid = NodeId(node) - qrec = QREC_TYPES[node.QREC_BASE][qdtype]() - if nid in qrecs: - old_qrec = qrecs[nid] - qrec.clone_quantization_parameters(old_qrec) - if is_fusion: - for fnode in node.contained_nodes(): - fnid = NodeId(node, fnode=fnode) - fqrec = QREC_TYPES[fnode.QREC_BASE][qdtype]() - if fnid in qrecs: - old_fqrec = qrecs[fnid] - fqrec.clone_quantization_parameters(old_fqrec) - qrecs[fnid] = fqrec - - qrecs[nid] = qrec diff --git a/tools/nntool/quantization/tuneq.py b/tools/nntool/quantization/tuneq.py deleted file mode 100644 index 340041d5b..000000000 --- a/tools/nntool/quantization/tuneq.py +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (C) 2020 GreenWaves Technologies, SAS - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. - -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -import logging - -import numpy as np -from bfloat16 import bfloat16 -from quantization.quantizer.new_quantizer import NewQuantizer -from utils.node_id import NodeId - -LOG = logging.getLogger('nntool.' + __name__) - -FLOAT_DTYPES = { - 'float16': np.float16, - 'float32': np.float32, - 'bfloat16': bfloat16, -} - -POW2_DTYPES = { - 'int16': np.int16, - 'int8': np.int8, -} - - -class TuneError(Exception): - pass - -# set dtype -# set bits -# set scheme -# out or in and out -# out forces out -# in forces all outs above -# forces are stored with quantization - - -def tune_options(G, nodes, new_options): - if G.quantization: - options = G.quantization.options - else: - options = {} - for node in nodes: - nid = NodeId(node) - if nid in options: - options[nid].update(new_options) - else: - options[nid] = new_options.copy() - - quantizer = NewQuantizer(G) - quantizer.options = options - quantizer.quantize() - G.add_dimensions() - - -def tune_float(G, nodes, float_type): - new_options = {'scheme': 'FLOAT', 'float_type': float_type} - return tune_options(G, nodes, new_options) - -def tune_scaled(G, nodes): - new_options = {'scheme': 'SQ8'} - return tune_options(G, nodes, new_options) - -def tune_pow2(G, nodes, pow2_type): - new_options = {'scheme': 'POW2', 'bits': 16 if pow2_type == 'int16' else 8} - return tune_options(G, nodes, new_options) diff --git a/tools/nntool/quantization/verify_quantization.py b/tools/nntool/quantization/verify_quantization.py index 51bd2728f..ca829cf75 100644 --- a/tools/nntool/quantization/verify_quantization.py +++ b/tools/nntool/quantization/verify_quantization.py @@ -60,7 +60,7 @@ def walk_graph(G, qrecs, node, visited): def verify_quantization(G): if G.quantization is None: - return False, "quantization is not set" + return ["quantization is not set"] qrecs = G.quantization visited = set() problems = [] diff --git a/tools/nntool/reports/draw_graph_reporter.py b/tools/nntool/reports/draw_graph_reporter.py index 1611853f2..10c85d99d 100644 --- a/tools/nntool/reports/draw_graph_reporter.py +++ b/tools/nntool/reports/draw_graph_reporter.py @@ -19,8 +19,8 @@ from graph.nngraph import NNGraph from graph.types import ExpressionFusionParameters, FusionBase from graph.types.fusions import FusionInputParameters, FusionOutputParameters -from graph.types.linear import FcParameters from graphviz import Digraph, nohtml +from quantization.qtype import QType from utils.node_id import NodeId @@ -152,10 +152,11 @@ def out_label(self, G, edge, qrecs, parent=None, to_node=True, from_node=True): if from_node: qrec = qrecs.get(nid) if qrec is None: - return 'no quant', True - qtype = qrec.out_qs and qrec.out_qs[idx] - if not qtype: - return 'no qtype', True + qtype = 'no qrec' + else: + qtype = qrec.out_qs[idx] if qrec.out_qs and idx < len(qrec.out_qs) else None + if not qtype: + qtype = 'no qtype' else: qtype = "n/a" if to_node: @@ -163,10 +164,10 @@ def out_label(self, G, edge, qrecs, parent=None, to_node=True, from_node=True): parent, fnode=edge.to_node) to_qrec = qrecs.get(nid) if to_qrec is None: - return f'{qtype}/None', True - to_qtype = to_qrec.in_qs and to_qrec.in_qs[edge.to_idx] + return f'{qtype}/no qrec', True + to_qtype = to_qrec.in_qs[edge.to_idx] if to_qrec.in_qs and edge.to_idx < len(to_qrec.in_qs) else None if not to_qtype: - return f'{qtype}/None', True + return f'{qtype}/no qtype', True else: to_qtype = "n/a" if not to_node: @@ -191,10 +192,11 @@ def in_label(self, G, edge, qrecs, parent=None, to_node=True, from_node=True): parent, fnode=node) qrec = qrecs.get(nid) if qrec is None: - return 'no quant', True - qtype = qrec.in_qs and qrec.in_qs[idx] - if qtype is None: - return 'no qtype', True + qtype = 'no qrec' + else: + qtype = qrec.in_qs[idx] if qrec.in_qs and idx < len(qrec.in_qs) else None + if qtype is None: + return 'no qtype', True else: qtype = "n/a" if from_node: @@ -202,10 +204,10 @@ def in_label(self, G, edge, qrecs, parent=None, to_node=True, from_node=True): parent, fnode=edge.from_node) from_qrec = qrecs.get(nid) if from_qrec is None: - return f'None/{qtype}', True - from_qtype = from_qrec.out_qs and from_qrec.out_qs[edge.from_idx] + return f'no qrec/{qtype}', True + from_qtype = from_qrec.out_qs[edge.from_idx] if from_qrec.out_qs and edge.from_idx < len(from_qrec.out_qs) else None if not from_qtype: - return f'None/{qtype}', True + return f'no qtype/{qtype}', True else: from_qtype = "n/a" if not from_node: @@ -304,7 +306,7 @@ def report(self, G: NNGraph, nodes=None, graph_format='PDF', all_dims=False, if quant_labels: if G.quantization is None: - raise ValueError("graph is not quantizated") + raise ValueError("graph is not quantized") qrecs = G.quantization else: qrecs = None diff --git a/tools/nntool/requirements.txt b/tools/nntool/requirements.txt index c90f2326e..4921886b3 100644 --- a/tools/nntool/requirements.txt +++ b/tools/nntool/requirements.txt @@ -17,4 +17,4 @@ prettytable==0.7.2 iteration-utilities==0.11.0 bfloat16==1.0 graphviz==0.16.0 -librosa==0.8.1 \ No newline at end of file +kmeans1d==0.3.1 diff --git a/tools/nntool/utils/.deployignore b/tools/nntool/utils/.deployignore deleted file mode 100644 index 6ff2d951d..000000000 --- a/tools/nntool/utils/.deployignore +++ /dev/null @@ -1 +0,0 @@ -gitignore_parser.py diff --git a/tools/nntool/utils/argparse_kwargs.py b/tools/nntool/utils/argparse_kwargs.py index 169bc8c58..f6d6e7841 100644 --- a/tools/nntool/utils/argparse_kwargs.py +++ b/tools/nntool/utils/argparse_kwargs.py @@ -14,13 +14,18 @@ # along with this program. If not, see . from argparse import Action, ArgumentError +from distutils.util import strtobool from typing import List +from cmd2 import CompletionError +from interpreter.nntool_shell_base import NODE_SELECTOR_HELP + # valid_keys is a dictionary with keys # completer - function which takes one argument which is the partial or complete value # choices - string choices for values # type - function that takes string value and returns value # if the dictionary contains a key * then all keys without an entry will match this +# or a function returning a dictionary of this form class kwargs_append_action(Action): """ @@ -31,52 +36,97 @@ class kwargs_append_action(Action): def __init__(self, option_strings, *args, kwargs_valid_keys=None, + kwargs_first_arg_completer=None, + kwargs_first_arg_mapper=None, **kwargs): self._valid_keys = kwargs_valid_keys + self._first_arg_mapper = kwargs_first_arg_mapper super(kwargs_append_action, self).__init__(option_strings=option_strings, *args, **kwargs) def __call__(self, parser, args, values, option_string=None): - def fn(x): - print(x) - vals = x.split('=') - if self._valid_keys: - if vals[0] not in self._valid_keys: - if '*' in self._valid_keys: - type_arg = self._valid_keys['*'].get('type') + def mapper(valid_keys): + def mapperfn(x): + vals = x.split('=') + if valid_keys: + if vals[0] not in valid_keys: + if '*' in valid_keys: + type_arg = valid_keys['*'].get('type') + else: + raise ArgumentError( + self, f'{vals[0]} is not a valid key') else: - raise ArgumentError( - self, f'{vals[0]} is not a valid key') - else: - type_arg = self._valid_keys[vals[0]].get('type') - if type_arg: - try: - vals[1] = type_arg(vals[1]) - except ValueError: - raise ArgumentError( - self, f'{vals[0]} does not have a valid value') - return vals + type_arg = valid_keys[vals[0]].get('type') + if type_arg: + try: + if type_arg == bool and isinstance(vals[1], str): + vals[1] = strtobool(vals[1]) + vals[1] = type_arg(vals[1]) + except ValueError as ex: + raise ArgumentError( + self, f'{vals[0]} does not have a valid value') from ex + return vals + return mapperfn + + if self._first_arg_mapper: + first_arg = self._first_arg_mapper(args.shell, values[0]) + if not first_arg: + raise ArgumentError(self, f"{values[0]} is not valid") + values = values[1:] + if callable(self._valid_keys): + this_valid_keys = self._valid_keys(first_arg) + else: + this_valid_keys = self._valid_keys[first_arg] + else: + this_valid_keys = self._valid_keys + try: - d = dict(map(fn, values)) + vals = dict(map(mapper(this_valid_keys), values)) except ValueError as ex: raise ArgumentError( - self, f'Could not parse argument "{values}" as k1=v1 k2=v2 ... format') + self, f'Could not parse argument "{values}" as k1=v1 k2=v2 ... format') from ex attr = getattr(args, self.dest) - if attr is None: - attr = {} - setattr(args, self.dest, attr) - attr.update(d) + if self._first_arg_mapper: + if attr is None: + attr = [] + setattr(args, self.dest, attr) + attr.append((first_arg, vals)) + else: + if attr is None: + attr = {} + setattr(args, self.dest, attr) + attr.update(vals) @classmethod - def get_completer_method(cls, valid_keys): - def completer(parser, text: str, line: str, begidx: int, endidx: int, *, complete_blank: bool = False) -> List[str]: + def get_completer_method(cls, valid_keys, kwargs_first_arg_completer=None, kwargs_first_arg_mapper=None): + def completer(parser, text: str, line: str, begidx: int, endidx: int, *args, complete_blank: bool = False) -> List[str]: + if kwargs_first_arg_completer: + tokens = line[:begidx].strip().split(' ') + if tokens[-1].startswith('--'): + return kwargs_first_arg_completer(parser, text, line, begidx, endidx) + start_idx = next((idx for idx, tok in reversed(list(enumerate(tokens))) if tok.startswith('--')), None) + if start_idx is None or start_idx + 1 >= len(tokens): + return [] + first_arg = tokens[start_idx + 1] + mapped_first_arg = kwargs_first_arg_mapper(parser, first_arg) + if not mapped_first_arg: + raise CompletionError(f"{first_arg} is not valid") + if callable(valid_keys): + this_valid_keys = valid_keys(mapped_first_arg) + else: + this_valid_keys = {} + for elem in mapped_first_arg: + this_valid_keys.update(valid_keys[elem]) + else: + this_valid_keys = valid_keys + parts = text.split('=') if len(parts) == 1: parser.allow_appended_space=False choices = [] parts_upper = parts[0].upper() - for k in valid_keys: + for k in this_valid_keys: if k == '*': continue kupper = k.upper() @@ -86,26 +136,26 @@ def completer(parser, text: str, line: str, begidx: int, endidx: int, *, complet choices.append(k) return choices elif len(parts) == 2: - if parts[0] not in valid_keys: - if '*' in valid_keys: - params = valid_keys['*'] + if parts[0] not in this_valid_keys: + if '*' in this_valid_keys: + params = this_valid_keys['*'] else: parser.allow_appended_space=False return [] else: - params = valid_keys[parts[0]] + params = this_valid_keys[parts[0]] if 'completer' in params: choices = params['completer'](parts[1]) else: choices = params.get('choices') if choices is None: if 'type' in params and params['type'] == bool: - choices = ['True', 'False'] + choices = ['true', 'false'] else: parser.allow_appended_space=bool(parts[1]) return [text] if parts[1]: - choices = [choice for choice in choices if choice.upper().startswith(parts[1].upper())] + choices = [choice for choice in choices if str(choice).upper().startswith(parts[1].upper())] return [f'{parts[0]}={choice}' for choice in choices] return [] return completer diff --git a/tools/nntool/utils/disjoint_reduction.py b/tools/nntool/utils/disjoint_reduction.py new file mode 100644 index 000000000..ca55c0ddf --- /dev/null +++ b/tools/nntool/utils/disjoint_reduction.py @@ -0,0 +1,38 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from functools import reduce +from typing import Sequence, Union, Any + + +def disjoint_reduction(sets: Sequence[Union[set, frozenset]]) -> Sequence[set]: + """Reduce a series of sets to an elementary set of disjoint sets that can express all the sets + i.e. {a,b}, {a,b,c} {d} {c, d} -> {a,b} {c} {d} + {a,b} -> {a,b} + {a,b,c} -> {a,b} {c} + {c,d} -> {c} {d} + {d} -> {d} + + This is inspired by this great stack overflow answer: + https://stackoverflow.com/questions/34693166/what-can-be-the-algorithm-to-find-all-disjoint-sets-from-a-set-of-sets/34693890#34693890 + """ + + def reduction(state: dict, elem: Any): + # key in the map is the set of membership of the element in each input set + state.setdefault(frozenset(elem_set_idx for elem_set_idx, elem_set in enumerate(sets) + if elem in elem_set), set()).add(elem) + return state + + return reduce(reduction, frozenset.union(*sets), {}).values() diff --git a/tools/nntool/utils/gitignore_parser.py b/tools/nntool/utils/gitignore_parser.py deleted file mode 100644 index 127dc63de..000000000 --- a/tools/nntool/utils/gitignore_parser.py +++ /dev/null @@ -1,236 +0,0 @@ -import collections -import os -import re - -from os.path import dirname -from pathlib import Path - - -def handle_negation(file_path, rules): - matched = False - for rule in rules: - if rule.match(file_path): - if rule.negation: - matched = False - else: - matched = True - return matched - -def parse_rules_str(contents, base_dir): - rules = [] - counter = 0 - for line in contents.split('\n'): - counter += 1 - line = line.rstrip('\n') - rule = rule_from_pattern(line, base_path=Path(base_dir).resolve()) - if rule: - rules.append(rule) - return rules - -def parse_rules(full_path, base_dir=None): - if base_dir is None: - base_dir = dirname(full_path) - if not os.path.isfile(full_path): - return [] - rules = [] - with open(full_path) as ignore_file: - counter = 0 - for line in ignore_file: - counter += 1 - line = line.rstrip('\n') - rule = rule_from_pattern(line, base_path=Path(base_dir).resolve(), - source=(full_path, counter)) - if rule: - rules.append(rule) - return rules - - -def gen_match(rules): - if not any(r.negation for r in rules): - return lambda file_path: any(r.match(file_path) for r in rules) - else: - # We have negation rules. We can't use a simple "any" to evaluate them. - # Later rules override earlier rules. - return lambda file_path: handle_negation(file_path, rules) - - -def parse_gitignore(full_path, base_dir=None): - return gen_match(parse_rules(full_path, base_dir=base_dir)) - - -def rule_from_pattern(pattern, base_path=None, source=None): - """ - Take a .gitignore match pattern, such as "*.py[cod]" or "**/*.bak", - and return an IgnoreRule suitable for matching against files and - directories. Patterns which do not match files, such as comments - and blank lines, will return None. - Because git allows for nested .gitignore files, a base_path value - is required for correct behavior. The base path should be absolute. - """ - if base_path and base_path != Path(base_path).resolve(): - raise ValueError('base_path must be absolute') - # Store the exact pattern for our repr and string functions - orig_pattern = pattern - # Early returns follow - # Discard comments and separators - if pattern.strip() == '' or pattern[0] == '#': - return - # Discard anything with more than two consecutive asterisks - if pattern.find('***') > -1: - return - # Strip leading bang before examining double asterisks - if pattern[0] == '!': - negation = True - pattern = pattern[1:] - else: - negation = False - # Discard anything with invalid double-asterisks -- they can appear - # at the start or the end, or be surrounded by slashes - for m in re.finditer(r'\*\*', pattern): - start_index = m.start() - if (start_index != 0 and start_index != len(pattern) - 2 and - (pattern[start_index - 1] != '/' or - pattern[start_index + 2] != '/')): - return - - # Special-casing '/', which doesn't match any files or directories - if pattern.rstrip() == '/': - return - - directory_only = pattern[-1] == '/' - # A slash is a sign that we're tied to the base_path of our rule - # set. - anchored = '/' in pattern[:-1] - must_dir = False - if pattern[0] == '/': - pattern = pattern[1:] - if pattern[0] == '*' and len(pattern) >= 2 and pattern[1] == '*': - pattern = pattern[2:] - anchored = False - if pattern[0] == '/': - pattern = pattern[1:] - if pattern[-1] == '/': - pattern = pattern[:-1] - must_dir = True - # patterns with leading hashes are escaped with a backslash in front, unescape it - if pattern[0] == '\\' and pattern[1] == '#': - pattern = pattern[1:] - # trailing spaces are ignored unless they are escaped with a backslash - i = len(pattern)-1 - striptrailingspaces = True - while i > 1 and pattern[i] == ' ': - if pattern[i-1] == '\\': - pattern = pattern[:i-1] + pattern[i:] - i = i - 1 - striptrailingspaces = False - else: - if striptrailingspaces: - pattern = pattern[:i] - i = i - 1 - regex = fnmatch_pathname_to_regex(pattern, directory_only) - if anchored: - regex = ''.join(['^', regex]) - if must_dir: - regex = ''.join([regex, '(\/.*){0,1}$']) - - return IgnoreRule( - pattern=orig_pattern, - regex=regex, - negation=negation, - directory_only=directory_only, - anchored=anchored, - base_path=Path(base_path) if base_path else None, - source=source - ) - - -whitespace_re = re.compile(r'(\\ )+$') - -IGNORE_RULE_FIELDS = [ - 'pattern', 'regex', # Basic values - 'negation', 'directory_only', 'anchored', # Behavior flags - 'base_path', # Meaningful for gitignore-style behavior - 'source' # (file, line) tuple for reporting -] - - -class IgnoreRule(collections.namedtuple('IgnoreRule_', IGNORE_RULE_FIELDS)): - def __str__(self): - return self.pattern - - def __repr__(self): - return ''.join(['IgnoreRule(\'', self.pattern, '\')']) - - def match(self, abs_path): - matched = False - if self.base_path: - rel_path = str( - Path(abs_path).resolve().relative_to(self.base_path)) - else: - rel_path = str(Path(abs_path)) - if rel_path.startswith('./'): - rel_path = rel_path[2:] - if re.search(self.regex, rel_path): - matched = True - return matched - - -# Frustratingly, python's fnmatch doesn't provide the FNM_PATHNAME -# option that .gitignore's behavior depends on. -def fnmatch_pathname_to_regex(pattern, directory_only: bool): - """ - Implements fnmatch style-behavior, as though with FNM_PATHNAME flagged; - the path separator will not match shell-style '*' and '.' wildcards. - """ - i, n = 0, len(pattern) - - seps = [re.escape(os.sep)] - if os.altsep is not None: - seps.append(re.escape(os.altsep)) - seps_group = '[' + '|'.join(seps) + ']' - nonsep = r'[^{}]'.format('|'.join(seps)) - - res = [] - while i < n: - c = pattern[i] - i += 1 - if c == '*': - try: - if pattern[i] == '*': - i += 1 - res.append('.*') - if pattern[i] == '/': - i += 1 - res.append(''.join([seps_group, '?'])) - else: - res.append(''.join([nonsep, '*'])) - except IndexError: - res.append(''.join([nonsep, '*'])) - elif c == '?': - res.append(nonsep) - elif c == '/': - res.append(seps_group) - elif c == '[': - j = i - if j < n and pattern[j] == '!': - j += 1 - if j < n and pattern[j] == ']': - j += 1 - while j < n and pattern[j] != ']': - j += 1 - if j >= n: - res.append('\\[') - else: - stuff = pattern[i:j].replace('\\', '\\\\') - i = j + 1 - if stuff[0] == '!': - stuff = ''.join(['^', stuff[1:]]) - elif stuff[0] == '^': - stuff = ''.join('\\' + stuff) - res.append('[{}]'.format(stuff)) - else: - res.append(re.escape(c)) - res.insert(0, '(?ms)') - if not directory_only: - res.append('$') - return ''.join(res) diff --git a/tools/nntool/utils/graph.py b/tools/nntool/utils/graph.py index fccfe85e7..4162eb988 100644 --- a/tools/nntool/utils/graph.py +++ b/tools/nntool/utils/graph.py @@ -15,7 +15,7 @@ from itertools import zip_longest -from collections import OrderedDict +from collections import OrderedDict, deque from collections.abc import Iterable, Mapping from typing import Union, Sequence @@ -62,6 +62,7 @@ def name(self, name): def __str__(self): return self._name + class NodeRef(): def __init__(self, node) -> None: self._node = node @@ -70,6 +71,7 @@ def __init__(self, node) -> None: def node(self): return self._node + class MatchNode(Node): '''Node class to inherit for node matchers''' @@ -90,6 +92,7 @@ class MatchNameNode(MatchNode): def _match(self, G, node, edge): return self.name == node.name + def resolve_name(node): if isinstance(node, str): return node @@ -99,6 +102,7 @@ def resolve_name(node): return node.node.name raise ValueError("expecting Node, NodeRef or node name") + def resolve_node(node): if isinstance(node, Node): return node @@ -106,6 +110,7 @@ def resolve_node(node): return node.node raise ValueError("expecting Node, or NodeRef") + def resolve_node_or_str(node, G=None): if isinstance(node, Node): return node @@ -117,6 +122,7 @@ def resolve_node_or_str(node, G=None): return node raise ValueError("expecting Node, NodeRef or node name") + class Edge(): '''Edge class to inherit for edges''' @@ -161,7 +167,7 @@ def to_idx(self): return self._link[3] def clone(self, from_node: Union[str, Node, NodeRef] = None, to_node: Union[str, Node, NodeRef] = None, - from_idx: int = None, to_idx: int = None): + from_idx: int = None, to_idx: int = None): if from_node is None: from_node = self.from_node if to_node is None: @@ -169,7 +175,7 @@ def clone(self, from_node: Union[str, Node, NodeRef] = None, to_node: Union[str, if from_idx is None: from_idx = self.from_idx if to_idx is None: - to_idx = self.to_idx + to_idx = self.to_idx return self.__class__(from_node, to_node, from_idx=from_idx, to_idx=to_idx) def __eq__(self, value): @@ -192,7 +198,6 @@ def __init__(self): self._out_edges = OrderedDict() self._in_edges = OrderedDict() self._nodes = OrderedDict() - @classmethod # pylint: disable=unused-argument @@ -374,11 +379,15 @@ def predecessor_names(self, node_name: str) -> Iterable: node_name = resolve_name(node_name) return set([node.name for node in self.predecessors(node_name)]) - def nodes(self, node_classes=None): + def nodes(self, node_classes=None, sort=False): '''All the nodes in the graph. GraphView.values() also works.''' - if not node_classes: - return list(self._nodes.values()) - return [val for val in self._nodes.values() if isinstance(val, node_classes)] + if node_classes is not None: + nodes = [node for node in self._nodes.values() if isinstance(node, node_classes)] + else: + nodes = list(self._nodes.values()) + if sort: + nodes.sort(key=lambda x: x.step_idx) + return nodes def contains(self, node): return node in self._nodes.values() @@ -426,6 +435,115 @@ def connected_nodes(self, node_or_node_name): edge.to_node for edge in self.out_edges(node_or_node_name)) return list(connected_nodes) + def is_vertex_cut(self, node_set, node=None, visited=None): + if visited is None: + visited = set() + if node is None: + inputs = set(self.inputs()) + # choose one input node (or successor) that is not in the node_set + start_node = None + while inputs: + node = inputs.pop() + # if the input node is actually in the set then move past it + # this ensures that if the node_set is at the start of the graph + # and does not divide the graph it is not reported as a cut + if node not in node_set: + start_node = node + break + inputs.update(edge.to_node for edge in self.out_edges(node)) + self.is_vertex_cut(node_set, node=start_node, visited=visited) + return len(visited) < (len(self) - len(node_set)) + # undirected dfs + visited.add(node) + for edge in self.out_edges(node): + if edge.to_node in visited | node_set: + continue + self.is_vertex_cut(node_set, node=edge.to_node, visited=visited) + for edge in self.in_edges(node): + if edge.from_node in visited | node_set: + continue + self.is_vertex_cut(node_set, node=edge.from_node, visited=visited) + + def nodes_between_in(self, node_from, node_to, node_set, start=True): + """Check that the only nodes between from and to are in node set""" + if start: + node_from = resolve_node_or_str(node_from, G=self) + node_to = resolve_node_or_str(node_to, G=self) + node_set = set(node_set) + start = False + + for edge in self.out_edges(node_from): + if edge.to_node == node_to: + continue + if (edge.to_node not in node_set or + not self.nodes_between_in(edge.to_node, node_to, node_set, start=start)): + return False + return True + + def nodes_between(self, node_from, node_to, visited=None, path=None): + """Return nodes between node_from and node_to not including those nodes""" + if visited is None: + node_from = resolve_node_or_str(node_from, G=self) + node_to = resolve_node_or_str(node_to, G=self) + visited = set() + if path is None: + path = [] + for edge in self.out_edges(node_from): + if edge.to_node in visited or edge.to_node == node_to: + visited.update(path) + else: + self.nodes_between(edge.to_node, node_to, + visited=visited, path=path + [edge.to_node]) + return visited + + def nodes_below(self, node, visited=None): + """Return nodes below node not including node""" + if visited is None: + node = resolve_node_or_str(node, G=self) + visited = set() + for edge in self.out_edges(node): + visited.add(edge.to_node) + self.nodes_below(edge.to_node, visited=visited) + return visited + + def nodes_above(self, node, visited=None): + """Return nodes above node not including node""" + if visited is None: + node = resolve_node_or_str(node, G=self) + visited = set() + for edge in self.in_edges(node): + visited.add(edge.from_node) + self.nodes_above(edge.from_node, visited=visited) + return visited + + def nodes_below_are_class(self, node, classes, visited=None): + """Check all nodes below are in classes""" + if visited is None: + node = resolve_node_or_str(node, G=self) + visited = set() + + for edge in self.out_edges(node): + if not isinstance(edge.to_node, classes): + return False + visited.add(edge.to_node) + if not self.nodes_below_are_class(edge.to_node, classes, visited=visited): + return False + return True + + def nodes_above_are_class(self, node, classes, visited=None): + """Check all nodes above are in classes""" + if visited is None: + node = resolve_node_or_str(node, G=self) + visited = set() + + for edge in self.in_edges(node): + visited.add(edge.from_node) + if not isinstance(edge.from_node, classes): + return False + if not self.nodes_above_are_class(edge.from_node, classes, visited=visited): + return False + return True + @staticmethod def index_edges_by_from(edges): if not edges: @@ -483,8 +601,7 @@ def num_out_edges(self, node_or_name: Union[str, Node]) -> int: node_name = resolve_name(node_or_name) return len(self.out_edges(node_name)) - - def flood_above(self, node_or_name: Union[str, Node], res = None, in_edge=None): + def flood_above(self, node_or_name: Union[str, Node], res=None, in_edge=None): """Return all nodes above this node including it and those connected to it Args: @@ -512,7 +629,7 @@ def flood_above(self, node_or_name: Union[str, Node], res = None, in_edge=None): self.flood_below(edge.to_node, res=res) return res - def flood_below(self, node_or_name: Union[str, Node], stop_at=None, res = None, out_edge=None): + def flood_below(self, node_or_name: Union[str, Node], stop_at=None, res=None, out_edge=None): """Return all nodes below this node including it and those connected to it Args: @@ -548,7 +665,6 @@ def remove_all(self, nodes: Sequence[Node]): Args: nodes (Sequence[Node]): Nodes to remove """ - nodes = set(nodes) while nodes: del_node = nodes.pop() @@ -567,7 +683,7 @@ def remove_below(self, node: Node): node (Node): Remove below this node """ keep_nodes = self.flood_above(node) - self.remove_all(set(self.nodes()) - keep_nodes) + self.remove_all(set(self._nodes.values()) - keep_nodes) def remove_above(self, node: Node): """Remove the nodes above this node. Note: If there are links above this node @@ -578,7 +694,7 @@ def remove_above(self, node: Node): node (Node): Remove below this node """ keep_nodes = self.flood_below(node) - self.remove_all(set(self.nodes()) - keep_nodes) + self.remove_all(set(self._nodes.values()) - keep_nodes) def keep_between(self, from_node: Node, to_node: Node): """Remove all nodes that are not between from_node and to_node @@ -588,7 +704,7 @@ def keep_between(self, from_node: Node, to_node: Node): to_node (Node): Remove below this node """ keep_nodes = self.flood_below(from_node, stop_at=to_node) - self.remove_all(set(self.nodes()) - keep_nodes) + self.remove_all(set(self._nodes.values()) - keep_nodes) def remove(self, node_or_name: Union[str, Node]): '''Removes a node and all its connected edges''' @@ -625,8 +741,15 @@ def edge_match(x): if not self._out_edges[edge.from_node.name][edge.to_node.name]: del self._out_edges[edge.from_node.name][edge.to_node.name] + def edge_in_graph(self, edge): + if edge.to_node.name in self._in_edges: + edges = self._in_edges[edge.to_node.name] + if edge.from_node.name in edges: + edges = edges[edge.from_node.name] + return edge in edges + return False + def insert_node_at_edge(self, node, at_edge, edge_class=Edge): - node = resolve_node(node) self.remove_edge(at_edge) self.add_edge(edge_class(from_node=at_edge.from_node, to_node=node, from_idx=at_edge.from_idx)) @@ -760,6 +883,7 @@ def replace_fragment(self, def remove_fragment(self, frag: 'Graph'): '''Removes a fragment and then connects all the input edges that have a single from node to all the outputs''' + nodes_not_in_graph = [ node_name for node_name in frag if node_name not in self] # find the edges in the self graph that point to input nodes that have not been added in @@ -783,7 +907,8 @@ def remove_fragment(self, frag: 'Graph'): self.remove(node) for edge in unique_frag_in_edges: - self.add_edge(edge.clone(to_node=frag_out_node[0], to_idx=frag_out_node[1])) + self.add_edge(edge.clone( + to_node=frag_out_node[0], to_idx=frag_out_node[1])) def add_node(self, node: Node): if node.name in self._nodes: @@ -805,6 +930,22 @@ def outputs(self, ignore_names=None): if node_name not in self._out_edges or all(output_name in ignore_names for output_name in self._out_edges[node_name])] + def fast_dfs(self): + visited_edges = set() + nodes = deque(self.inputs()) + while nodes: + node = nodes.pop() + node_name = node.name + if node_name in self._in_edges and not set(edge for edge_list in self._in_edges[node_name].values() for edge in edge_list).issubset(visited_edges): + continue + yield node + if node_name not in self._out_edges: + return + for edge_list in self._out_edges[node_name].values(): + for out_edge in edge_list: + visited_edges.add(out_edge) + nodes.append(out_edge.to_node) + def __revdfs(self, node, condition, visited_nodes, visited_edges, from_node, from_edge): if not node: return @@ -1064,10 +1205,11 @@ def __len__(self): return len(self._nodes) def __getitem__(self, key): - return self._nodes[key] # @IgnoreException + return self._nodes[key] # @IgnoreException def __iter__(self): - return self._nodes.__iter__() + return self.nodes().__iter__() + class Graph(GraphView): pass diff --git a/tools/nntool/utils/maximizer.py b/tools/nntool/utils/maximizer.py new file mode 100644 index 000000000..061e9b6ea --- /dev/null +++ b/tools/nntool/utils/maximizer.py @@ -0,0 +1,103 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from functools import lru_cache +import math + +class Maximizer(): + def __init__(self, func, var_min, var_max, func_change=None, int_step=False): + self._func = func + self._func_change = func_change + self._var_max = var_max + self._var_min = var_min + self._args = tuple() + self._int_step = int_step + + @lru_cache + def func(self, var): + return self._func(var, *self._args) + + def change_dir(self, cur, step, cur_dir): + step /= 2 + if self._int_step: + step = int(min(math.floor(step + 0.5), 1)) + if cur_dir=='down': + cur = min(cur + step, self._var_max) + cur_dir = 'up' + else: + cur = max(cur - step, self._var_min) + cur_dir = 'down' + if self._func_change: + self._func_change(cur, step, cur_dir, *self._args) + + return cur, step, cur_dir + + def step(self, cur, step, cur_dir): + if cur_dir =='down': + cur = max(cur - step, self._var_min) + else: + cur = min(cur + step, self._var_max) + return cur, step + + def run(self, var_start, *args, stop_margin=None, dir_start='down', progress=None, start_step=None): + #pylint: disable=no-member + if stop_margin is None: + stop_margin = 1 if self._int_step else 0.5 + self.func.cache_clear() + if start_step: + var_step = start_step + else: + if dir_start == "down": + var_step = (var_start - self._var_min) / 2 if start_step is None else start_step + else: + var_step = (self._var_max - var_start) / 2 if start_step is None else start_step + if self._int_step: + var_step = int(max(math.floor(var_step + 0.5), 1)) + + var_cur = int(var_start) if self._int_step else var_start + cur_dir = dir_start + best = tuple() + self._args = args + while True: + if progress: + progress(var_cur, var_step, cur_dir) + # if self._int_step: + # var_cur = int(min(max(math.floor(var_cur + 0.5), self._var_min), self._var_max)) + + res = self.func(var_cur) + if res is None: + if not best and var_cur == self._var_max: + return None + if self._int_step and best and best[1] == var_cur + 1: + return best + if cur_dir == "down": + var_cur, var_step, cur_dir = self.change_dir(var_cur, var_step, cur_dir) + else: + var_cur, var_step = self.step(var_cur, var_step, cur_dir) + else: + if not best or res > best[0]: + best = (res, var_cur) + if self._int_step: + if (stop_margin > 1 and var_step <= stop_margin) or var_cur == self._var_min: + return best + if cur_dir == 'up' and var_step == 1: + return best + else: + if var_step <= stop_margin: + return best + if cur_dir == "down": + var_cur, var_step = self.step(var_cur, var_step, cur_dir) + else: + var_cur, var_step, cur_dir = self.change_dir(var_cur, var_step, cur_dir) diff --git a/tools/nntool/utils/real_transpose.py b/tools/nntool/utils/real_transpose.py new file mode 100644 index 000000000..7b78764f8 --- /dev/null +++ b/tools/nntool/utils/real_transpose.py @@ -0,0 +1,44 @@ +# Copyright (C) 2021 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +def find_seq(trans): + last = None + for idx, dim in enumerate(trans): + if last is not None and dim == last + 1: + return idx - 1 + last = dim + return None + +def remove_sequences(shape, trans): + seq_idx = find_seq(trans) + while seq_idx is not None: + seq_start = trans[seq_idx] + shape = shape[:seq_start] + [shape[seq_start]*shape[seq_start+1]] + shape[seq_start+2:] + trans = [idx if idx < seq_start else idx - 1 for idx in trans if idx != seq_start] + seq_idx = find_seq(trans) + return shape, trans + +def remove_unit_dims(shape, trans): + unit_idx = next((idx for idx, dim in enumerate(shape) if dim == 1), None) + while unit_idx is not None: + shape = shape[0:unit_idx] + shape[unit_idx+1:] + trans = [idx if idx < unit_idx else idx - 1 for idx in trans if idx != unit_idx] + unit_idx = next((idx for idx, dim in enumerate(shape) if dim == 1), None) + return shape, trans + +def real_transpose(shape, trans): + shape, trans = remove_unit_dims(list(shape), list(trans)) + shape, trans = remove_sequences(shape, trans) + return tuple(shape), tuple(trans) diff --git a/tools/nntool/utils/ssd_utils.py b/tools/nntool/utils/ssd_utils.py index de14866b8..73f674e2b 100644 --- a/tools/nntool/utils/ssd_utils.py +++ b/tools/nntool/utils/ssd_utils.py @@ -21,10 +21,18 @@ def convert_cors2cnts(bboxes_cors): bboxes_cnts = np.zeros_like(bboxes_cors) - bboxes_cors[:, H_IDX] = bboxes_cnts[:, YMAX_IDX] - bboxes_cnts[:, YMIN_IDX] - bboxes_cors[:, W_IDX] = bboxes_cnts[:, XMAX_IDX] - bboxes_cnts[:, XMIN_IDX] - bboxes_cors[:, CNTY_IDX] = bboxes_cnts[:, YMIN_IDX] + 0.5 * bboxes_cors[:, H_IDX] - bboxes_cors[:, CNTX_IDX] = bboxes_cnts[:, XMIN_IDX] + 0.5 * bboxes_cors[:, W_IDX] + bboxes_cnts[:, H_IDX] = bboxes_cors[:, YMAX_IDX] - bboxes_cors[:, YMIN_IDX] + bboxes_cnts[:, W_IDX] = bboxes_cors[:, XMAX_IDX] - bboxes_cors[:, XMIN_IDX] + bboxes_cnts[:, CNTY_IDX] = bboxes_cors[:, YMIN_IDX] + 0.5 * bboxes_cnts[:, H_IDX] + bboxes_cnts[:, CNTX_IDX] = bboxes_cors[:, XMIN_IDX] + 0.5 * bboxes_cnts[:, W_IDX] + return bboxes_cnts + +def convert_cnts2cors(bboxes_cnts): + bboxes_cors = np.zeros_like(bboxes_cnts) + bboxes_cors[:, YMIN_IDX] = bboxes_cnts[:, CNTY_IDX] - 0.5 * bboxes_cnts[:, H_IDX] + bboxes_cors[:, XMIN_IDX] = bboxes_cnts[:, CNTX_IDX] - 0.5 * bboxes_cnts[:, W_IDX] + bboxes_cors[:, YMAX_IDX] = bboxes_cnts[:, CNTY_IDX] + 0.5 * bboxes_cnts[:, H_IDX] + bboxes_cors[:, XMAX_IDX] = bboxes_cnts[:, CNTX_IDX] + 0.5 * bboxes_cnts[:, W_IDX] return bboxes_cors def rect_intersect_area(box_cors_a, box_cors_b): diff --git a/tools/nntool/utils/transactional_dict.py b/tools/nntool/utils/transactional_dict.py index 451333d90..ecb9e443d 100644 --- a/tools/nntool/utils/transactional_dict.py +++ b/tools/nntool/utils/transactional_dict.py @@ -14,7 +14,7 @@ # along with this program. If not, see . from functools import reduce -from typing import MutableMapping +from collections.abc import MutableMapping def rzip(a, b): @@ -25,7 +25,6 @@ def rzip(a, b): class TransactionalDict(MutableMapping): def __init__(self, *args, init=None, **kwargs) -> None: - super(TransactionalDict, self).__init__() if init: self._stack = [init.copy()] else: diff --git a/tools/profiler/backend/src/scripts/pulp-trace-extend b/tools/profiler/backend/src/scripts/pulp-trace-extend old mode 100644 new mode 100755 diff --git a/tools/profiler/gui/images/signalstree_GAP9.txt b/tools/profiler/gui/images/signalstree_GAP9.txt new file mode 100644 index 000000000..0cd7117f8 --- /dev/null +++ b/tools/profiler/gui/images/signalstree_GAP9.txt @@ -0,0 +1,224 @@ +SOC; /chip/soc/state + FC; /chip/soc/fc/state + stalls; null + pcer_cycles; /chip/soc/fc/pcer_cycles + pcer_instr; /chip/soc/fc/pcer_instr + pcer_ld_stall; /chip/soc/fc/pcer_ld_stall + pcer_jmp_stall; /chip/soc/fc/pcer_jmp_stall + pcer_imiss; /chip/soc/fc/pcer_imiss + pcer_ld; /chip/soc/fc/pcer_ld + pcer_st; /chip/soc/fc/pcer_st + pcer_jump; /chip/soc/fc/pcer_jump + pcer_branch; /chip/soc/fc/pcer_branch + pcer_taken_branch; /chip/soc/fc/pcer_taken_branch + pcer_rvc; /chip/soc/fc/pcer_rvc + pcer_ld_ext; /chip/soc/fc/pcer_ld_ext + pcer_st_ext; /chip/soc/fc/pcer_st_ext + pcer_ld_ext_cycles; /chip/soc/fc/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/soc/fc/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/soc/fc/pcer_tcdm_cont + misaligned; /chip/soc/fc/misaligned + udma; null + spim0_rx; /chip/soc/udma/spim0_rx/state + spim0_tx; /chip/soc/udma/spim0_tx/state + spim1_rx; /chip/soc/udma/spim1_rx/state + spim1_tx; /chip/soc/udma/spim1_tx/state + hyper0_rx; /chip/soc/udma/hyper0_rx/state + hyper0_tx; /chip/soc/udma/hyper0_tx/state + i2c0_rx; /chip/soc/udma/i2c0_rx/state + i2c0_tx; /chip/soc/udma/i2c0_tx/state + i2c1_rx; /chip/soc/udma/i2c1_rx/state + i2c1_tx; /chip/soc/udma/i2c1_tx/state + uart0_rx; /chip/soc/udma/uart0_rx/state + uart0_tx; /chip/soc/udma/uart0_tx/state + cpi0_rx; /chip/soc/udma/cpi0_rx/state +Cluster; /chip/cluster/state + PE0; /chip/cluster/pe0/state + stalls; /chip/cluster/pe0/stalls + pcer_cycles; /chip/cluster/pe0/pcer_cycles + pcer_instr; /chip/cluster/pe0/pcer_instr + pcer_ld_stall; /chip/cluster/pe0/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe0/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe0/pcer_imiss + pcer_ld; /chip/cluster/pe0/pcer_ld + pcer_st; /chip/cluster/pe0/pcer_st + pcer_jump; /chip/cluster/pe0/pcer_jump + pcer_branch; /chip/cluster/pe0/pcer_branch + pcer_taken_branch; /chip/cluster/pe0/pcer_taken_branch + pcer_rvc; /chip/cluster/pe0/pcer_rvc + pcer_ld_ext; /chip/cluster/pe0/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe0/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe0/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe0/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe0/pcer_tcdm_cont + misaligned; /chip/cluster/pe0/misaligned + PE1; /chip/cluster/pe1/state + stalls; /chip/cluster/pe1/stalls + pcer_cycles; /chip/cluster/pe1/pcer_cycles + pcer_instr; /chip/cluster/pe1/pcer_instr + pcer_ld_stall; /chip/cluster/pe1/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe1/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe1/pcer_imiss + pcer_ld; /chip/cluster/pe1/pcer_ld + pcer_st; /chip/cluster/pe1/pcer_st + pcer_jump; /chip/cluster/pe1/pcer_jump + pcer_branch; /chip/cluster/pe1/pcer_branch + pcer_taken_branch; /chip/cluster/pe1/pcer_taken_branch + pcer_rvc; /chip/cluster/pe1/pcer_rvc + pcer_ld_ext; /chip/cluster/pe1/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe1/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe1/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe1/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe1/pcer_tcdm_cont + misaligned; /chip/cluster/pe1/misaligned + PE2; /chip/cluster/pe2/state + stalls; /chip/cluster/pe2/stalls + pcer_cycles; /chip/cluster/pe2/pcer_cycles + pcer_instr; /chip/cluster/pe2/pcer_instr + pcer_ld_stall; /chip/cluster/pe2/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe2/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe2/pcer_imiss + pcer_ld; /chip/cluster/pe2/pcer_ld + pcer_st; /chip/cluster/pe2/pcer_st + pcer_jump; /chip/cluster/pe2/pcer_jump + pcer_branch; /chip/cluster/pe2/pcer_branch + pcer_taken_branch; /chip/cluster/pe2/pcer_taken_branch + pcer_rvc; /chip/cluster/pe2/pcer_rvc + pcer_ld_ext; /chip/cluster/pe2/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe2/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe2/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe2/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe2/pcer_tcdm_cont + misaligned; /chip/cluster/pe2/misaligned + PE3; /chip/cluster/pe3/state + stalls; /chip/cluster/pe3/stalls + pcer_cycles; /chip/cluster/pe3/pcer_cycles + pcer_instr; /chip/cluster/pe3/pcer_instr + pcer_ld_stall; /chip/cluster/pe3/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe3/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe3/pcer_imiss + pcer_ld; /chip/cluster/pe3/pcer_ld + pcer_st; /chip/cluster/pe3/pcer_st + pcer_jump; /chip/cluster/pe3/pcer_jump + pcer_branch; /chip/cluster/pe3/pcer_branch + pcer_taken_branch; /chip/cluster/pe3/pcer_taken_branch + pcer_rvc; /chip/cluster/pe3/pcer_rvc + pcer_ld_ext; /chip/cluster/pe3/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe3/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe3/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe3/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe3/pcer_tcdm_cont + misaligned; /chip/cluster/pe3/misaligned + PE4; /chip/cluster/pe4/state + stalls; /chip/cluster/pe4/stalls + pcer_cycles; /chip/cluster/pe4/pcer_cycles + pcer_instr; /chip/cluster/pe4/pcer_instr + pcer_ld_stall; /chip/cluster/pe4/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe4/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe4/pcer_imiss + pcer_ld; /chip/cluster/pe4/pcer_ld + pcer_st; /chip/cluster/pe4/pcer_st + pcer_jump; /chip/cluster/pe4/pcer_jump + pcer_branch; /chip/cluster/pe4/pcer_branch + pcer_taken_branch; /chip/cluster/pe4/pcer_taken_branch + pcer_rvc; /chip/cluster/pe4/pcer_rvc + pcer_ld_ext; /chip/cluster/pe4/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe4/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe4/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe4/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe4/pcer_tcdm_cont + misaligned; /chip/cluster/pe4/misaligned + PE5; /chip/cluster/pe5/state + stalls; /chip/cluster/pe5/stalls + pcer_cycles; /chip/cluster/pe5/pcer_cycles + pcer_instr; /chip/cluster/pe5/pcer_instr + pcer_ld_stall; /chip/cluster/pe5/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe5/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe5/pcer_imiss + pcer_ld; /chip/cluster/pe5/pcer_ld + pcer_st; /chip/cluster/pe5/pcer_st + pcer_jump; /chip/cluster/pe5/pcer_jump + pcer_branch; /chip/cluster/pe5/pcer_branch + pcer_taken_branch; /chip/cluster/pe5/pcer_taken_branch + pcer_rvc; /chip/cluster/pe5/pcer_rvc + pcer_ld_ext; /chip/cluster/pe5/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe5/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe5/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe5/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe5/pcer_tcdm_cont + misaligned; /chip/cluster/pe5/misaligned + PE6; /chip/cluster/pe6/state + stalls; /chip/cluster/pe6/stalls + pcer_cycles; /chip/cluster/pe6/pcer_cycles + pcer_instr; /chip/cluster/pe6/pcer_instr + pcer_ld_stall; /chip/cluster/pe6/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe6/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe6/pcer_imiss + pcer_ld; /chip/cluster/pe6/pcer_ld + pcer_st; /chip/cluster/pe6/pcer_st + pcer_jump; /chip/cluster/pe6/pcer_jump + pcer_branch; /chip/cluster/pe6/pcer_branch + pcer_taken_branch; /chip/cluster/pe6/pcer_taken_branch + pcer_rvc; /chip/cluster/pe6/pcer_rvc + pcer_ld_ext; /chip/cluster/pe6/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe6/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe6/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe6/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe6/pcer_tcdm_cont + misaligned; /chip/cluster/pe6/misaligned + PE7; /chip/cluster/pe7/state + stalls; /chip/cluster/pe7/stalls + pcer_cycles; /chip/cluster/pe7/pcer_cycles + pcer_instr; /chip/cluster/pe7/pcer_instr + pcer_ld_stall; /chip/cluster/pe7/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe7/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe7/pcer_imiss + pcer_ld; /chip/cluster/pe7/pcer_ld + pcer_st; /chip/cluster/pe7/pcer_st + pcer_jump; /chip/cluster/pe7/pcer_jump + pcer_branch; /chip/cluster/pe7/pcer_branch + pcer_taken_branch; /chip/cluster/pe7/pcer_taken_branch + pcer_rvc; /chip/cluster/pe7/pcer_rvc + pcer_ld_ext; /chip/cluster/pe7/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe7/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe7/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe7/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe7/pcer_tcdm_cont + misaligned; /chip/cluster/pe7/misaligned + PE8; /chip/cluster/pe7/state + stalls; /chip/cluster/pe7/stalls + pcer_cycles; /chip/cluster/pe7/pcer_cycles + pcer_instr; /chip/cluster/pe7/pcer_instr + pcer_ld_stall; /chip/cluster/pe7/pcer_ld_stall + pcer_jmp_stall; /chip/cluster/pe7/pcer_jmp_stall + pcer_imiss; /chip/cluster/pe7/pcer_imiss + pcer_ld; /chip/cluster/pe7/pcer_ld + pcer_st; /chip/cluster/pe7/pcer_st + pcer_jump; /chip/cluster/pe7/pcer_jump + pcer_branch; /chip/cluster/pe7/pcer_branch + pcer_taken_branch; /chip/cluster/pe7/pcer_taken_branch + pcer_rvc; /chip/cluster/pe7/pcer_rvc + pcer_ld_ext; /chip/cluster/pe7/pcer_ld_ext + pcer_st_ext; /chip/cluster/pe7/pcer_st_ext + pcer_ld_ext_cycles; /chip/cluster/pe7/pcer_ld_ext_cycles + pcer_st_ext_cycles; /chip/cluster/pe7/pcer_st_ext_cycles + pcer_tcdm_cont; /chip/cluster/pe7/pcer_tcdm_cont + misaligned; /chip/cluster/pe7/misaligned + cycles; /chip/cluster_clock/cycles + dma; null + channel_0; /chip/cluster/dma/channel_0 + channel_1; /chip/cluster/dma/channel_1 + channel_2; /chip/cluster/dma/channel_2 + channel_3; /chip/cluster/dma/channel_3 + channel_4; /chip/cluster/dma/channel_4 + channel_5; /chip/cluster/dma/channel_5 + channel_6; /chip/cluster/dma/channel_6 + channel_7; /chip/cluster/dma/channel_7 + channel_8; /chip/cluster/dma/channel_8 + channel_9; /chip/cluster/dma/channel_9 + channel_10; /chip/cluster/dma/channel_10 + channel_11; /chip/cluster/dma/channel_11 + channel_12; /chip/cluster/dma/channel_12 + channel_13; /chip/cluster/dma/channel_13 + channel_14; /chip/cluster/dma/channel_14 + channel_15; /chip/cluster/dma/channel_15 diff --git a/tools/profiler/init.sh b/tools/profiler/init.sh index b1aa345ce..60d8c0ce2 100644 --- a/tools/profiler/init.sh +++ b/tools/profiler/init.sh @@ -1,10 +1,8 @@ -#! /bin/bash - -if [ -n "${ZSH_VERSION:-}" ]; then +if [ -n "${ZSH_VERSION:-}" ]; then DIR="$(readlink -f -- "${(%):-%x}")" script_path="$(dirname $DIR)" else script_path="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" fi -export PATH=$script_path/gui/build:$script_path/backend/src/scripts/:$PATH \ No newline at end of file +export PATH=$script_path/gui/build:$script_path/backend/src/scripts/:$PATH diff --git a/utils/cmake/macros.cmake b/utils/cmake/macros.cmake new file mode 100644 index 000000000..5c917227e --- /dev/null +++ b/utils/cmake/macros.cmake @@ -0,0 +1,226 @@ +macro(setupcrosscompile) + # Find GAP RISCV GCC compiler + find_program(GAP_RISCV_CC riscv32-unknown-elf-gcc) + find_program(GAP_RISCV_CXX riscv32-unknown-elf-g++) + find_program(GAP_RISCV_AR riscv32-unknown-elf-ar) + find_program(GAP_RISCV_OBJDUMP riscv32-unknown-elf-objdump) + find_program(GAP_RISCV_NM riscv32-unknown-elf-nm) + find_program(GAP_RISCV_SIZE riscv32-unknown-elf-size) + + if(NOT GAP_RISCV_CC) + message("Error : could not find GAP RISCV GCC toolchain !\n + Please add it to your path (gap_riscv_toolchain)") + else() + set(GAP_RISCV_ASM ${GAP_RISCV_CC}) + # message("GAP RISCV GCC=" ${GAP_RISCV_CC}) + endif() + + # Specify the cross compiler + set(CMAKE_C_COMPILER ${GAP_RISCV_CC}) + set(CMAKE_CXX_COMPILER ${GAP_RISCV_CXX}) + set(CMAKE_ASM_COMPILER ${GAP_RISCV_ASM}) + set(CMAKE_OBJDUMP ${GAP_RISCV_OBJDUMP}) + set(CMAKE_NM ${GAP_RISCV_NM}) + # Specific + set(CMAKE_GCC_SIZE ${GAP_RISCV_SIZE}) + + # Disable compiler checks. + set(CMAKE_C_COMPILER_FORCED TRUE) + set(CMAKE_CXX_COMPILER_FORCED TRUE) + + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + + set(CMAKE_CROSSCOMPILING TRUE) + set(CMAKE_SYSTEM_NAME FreeRTOS) + set(CMAKE_SYSTEM_PROCESSOR riscv32) + + if (CMAKE_CROSSCOMPILING) + message("Crosscompiling for " ${CMAKE_SYSTEM_NAME} " on " ${CMAKE_SYSTEM_PROCESSOR} " using compiler found at " ${CMAKE_C_COMPILER}) + endif() +endmacro() + +macro(setupsdk) + # Find Gapy prog to exec binary produced + find_program(GAPY gapy) + if(NOT GAPY) + message("Error : gapy not found !") + endif() +endmacro() + +macro(setplatform) + if(DEFINED CONFIG_PLATFORM) + set(GAPY_PLATFORM ${CONFIG_PLATFORM}) + else() + set(GAPY_PLATFORM gvsoc) + if(DEFINED ENV{platform}) + set(GAPY_PLATFORM $ENV{platform}) + else() + set(GAPY_PLATFORM gvsoc) + endif() + endif() + # set target chain (py target or old targets) + if(DEFINED CONFIG_GAPY_TARGET) + set(GAPY_TARGET_CMD "--target=${CONFIG_GAPY_TARGET}") + elseif(DEFINED CONFIG_GAPY_PY_TARGET) + set(GAPY_TARGET_CMD "--py_target=${CONFIG_GAPY_PY_TARGET}") + elseif(DEFINED ENV{GAPY_PY_TARGET}) + set(GAPY_TARGET_CMD "--py-target=$ENV{GAPY_PY_TARGET}") + endif() +endmacro() + +macro(setupcustomtargets TARGET GAPY) + setplatform() + # Post processing command to dump disassembly file and size sorted file" + set(OBJDUMP_OPT -d -h -S -t -w --show-raw-insn) + add_custom_target( + dump_dis DEPENDS ${TARGET} + COMMENT "Invoking: OBJDUMP, dump disassembly in ${CMAKE_BINARY_DIR}/${TARGET}.s" + COMMAND ${CMAKE_OBJDUMP} ${OBJDUMP_OPT} ${CMAKE_BINARY_DIR}/${TARGET} > ${CMAKE_BINARY_DIR}/${TARGET}.s + ) + + add_custom_target( + dump_size DEPENDS ${TARGET} + COMMENT "Invoking: SIZE NM, dump size in ${CMAKE_BINARY_DIR}/${TARGET}.size" + COMMAND ${CMAKE_GCC_SIZE} ${SIZE_OPT} ${CMAKE_BINARY_DIR}/${TARGET} > ${CMAKE_BINARY_DIR}/${TARGET}.size + COMMAND ${CMAKE_NM} ${NM_OPT} ${CMAKE_BINARY_DIR}/${TARGET} >> ${CMAKE_BINARY_DIR}/${TARGET}.size + ) + + add_custom_target(disdump ALL DEPENDS dump_dis dump_size) + + # Convert string to list of words with space as a separator. + # Otherwise cmake escapes space or adds quotes in the final shell command line. + # Here it's assumed that GAPY_RUNNER_ARGS is provided in command line as a single quoted string: + # -DGAPY_RUNNER_ARGS="--trace=foo --trace=bar" + + + separate_arguments(gapy_runner_args UNIX_COMMAND "$ENV{runner_args}") + + # Ninja and Makefile have different ways to access env var + if( ${CMAKE_GENERATOR} STREQUAL "Ninja" ) + set(GAPY_RUNNER_ARGS $$runner_args) + else() + set(GAPY_RUNNER_ARGS $(runner_args)) + endif() + + # Create image + add_custom_target( + image DEPENDS ${TARGET} + COMMAND ${GAPY} ${GAPY_TARGET_CMD} --platform=${GAPY_PLATFORM} --work-dir=${CMAKE_BINARY_DIR} ${GAPY_CONFIG_ARGS} ${GAPY_ARGS} run --image --binary=${CMAKE_BINARY_DIR}/${TARGET} ${GAPY_RUNNER_ARGS} + ) + + # FLash image + add_custom_target( + flash DEPENDS image + COMMAND ${GAPY} ${GAPY_TARGET_CMD} --platform=${GAPY_PLATFORM} --work-dir=${CMAKE_BINARY_DIR} ${GAPY_CONFIG_ARGS} ${GAPY_ARGS} run --flash --binary=${CMAKE_BINARY_DIR}/${TARGET} ${GAPY_RUNNER_ARGS} + ) + + # Run exec + add_custom_target( + run DEPENDS flash + COMMAND ${GAPY} ${GAPY_TARGET_CMD} --platform=${GAPY_PLATFORM} --work-dir=${CMAKE_BINARY_DIR} ${GAPY_CONFIG_ARGS} ${GAPY_ARGS} run --exec-prepare --exec --binary=${CMAKE_BINARY_DIR}/${TARGET} ${GAPY_RUNNER_ARGS} + ) +endmacro() + +macro(subincludeos OS_NAME OS_PATH TARGET_NAME TARGET_PATH) + if (CONFIG_USE_PREBUILT) + include(${CONFIG_GAP_SDK_HOME}/${OS_PATH}/${TARGET_PATH}) + + find_library(${OS_NAME} NAME ${OS_NAME}) + + #add_subdirectory(${CONFIG_GAP_SDK_HOME}/rtos/freeRTOS) + target_link_libraries(${TARGET_NAME} PUBLIC ${OS_NAME}::${OS_NAME}) + else() + # add_subdirectory(${CONFIG_GAP_SDK_HOME}/${OS_PATH} ${CMAKE_CURRENT_BINARY_DIR}/${OS_NAME}) + target_link_libraries(${TARGET_NAME} PUBLIC ${OS_NAME}) + endif() +endmacro() + +# Use includeos (instead of setupos) in targets that are part of project where an os has already been added. +# Can be invoked multiple times within a cmake project +macro(includeos TARGET_NAME) + if(CONFIG_PMSIS_OS) + set(OS_NAME ${CONFIG_PMSIS_OS}) + else() + if(DEFINED ENV{PMSIS_OS}) + set(OS_NAME $ENV{PMSIS_OS}) + else() + # by default use freertos + set(OS_NAME "freertos") + endif() + endif() + if(${OS_NAME} STREQUAL "freertos") + # path in sdk + set(OS_PATH "rtos/freeRTOS") + # used for pre build freertos + set(OS_TARGET_PATH "build/cmake/freertosTargets.cmake") + subincludeos(${OS_NAME} ${OS_PATH} ${TARGET_NAME} ${OS_TARGET_PATH}) + endif() +endmacro() + +macro(subaddos OS_NAME OS_PATH TARGET_NAME TARGET_PATH) + if (CONFIG_USE_PREBUILT) + # Already exists, nothing to do + else() + add_subdirectory(${CONFIG_GAP_SDK_HOME}/${OS_PATH} ${CMAKE_CURRENT_BINARY_DIR}/${OS_NAME}) + endif() +endmacro() + +# Creates an OS target. Can be called only once in cmake project +macro(addos TARGET_NAME) + if(CONFIG_PMSIS_OS) + set(OS_NAME ${CONFIG_PMSIS_OS}) + else() + if(DEFINED ENV{PMSIS_OS}) + set(OS_NAME $ENV{PMSIS_OS}) + else() + # by default use freertos + set(OS_NAME "freertos") + endif() + endif() + if(${OS_NAME} STREQUAL "freertos") + # path in sdk + set(OS_PATH "rtos/freeRTOS") + # used for pre build freertos + set(OS_TARGET_PATH "build/cmake/freertosTargets.cmake") + subaddos(${OS_NAME} ${OS_PATH} ${TARGET_NAME} ${OS_TARGET_PATH}) + endif() +endmacro() + +macro(includebsp TARGET_NAME) + add_subdirectory(${CONFIG_GAP_SDK_HOME}/rtos/pmsis/pmsis_bsp ${CMAKE_CURRENT_BINARY_DIR}/bsp) + target_link_libraries(${TARGET_NAME} PRIVATE bsp) +endmacro() + +macro(includetestbench TARGET_NAME) + add_subdirectory(${CONFIG_GAP_SDK_HOME}/libs/gap_lib/testbench ${CMAKE_CURRENT_BINARY_DIR}/testbench) + target_link_libraries(${TARGET_NAME} PUBLIC testbench) + set(GAPY_CONFIG_ARGS ${GAPY_CONFIG_ARGS} PARENT_SCOPE) +endmacro() + +macro(setupos TARGET_NAME) + addos(${TARGET_NAME}) + includeos(${TARGET_NAME}) + setupsdk() + setupcustomtargets(${TARGET_NAME} ${GAPY}) +endmacro() + +# Get chip version based on env string format +function(get_chip_version TARGET_CHIP) + if(${TARGET_CHIP} STREQUAL "GAP8") + set(TARGET_CHIP_VERSION "1") + endif() + if(${TARGET_CHIP} STREQUAL "GAP8_V2") + set(TARGET_CHIP_VERSION "2") + endif() + if(${TARGET_CHIP} STREQUAL "GAP8_V3") + set(TARGET_CHIP_VERSION "3") + endif() + if(${TARGET_CHIP} STREQUAL "GAP9") + set(TARGET_CHIP_VERSION "1") + endif() + if(${TARGET_CHIP} STREQUAL "GAP9_V2") + set(TARGET_CHIP_VERSION "2") + endif() +endfunction() diff --git a/utils/gap_configs/configs/chips/gap/gap.json b/utils/gap_configs/configs/chips/gap/gap.json index 1aa4e9699..71d24762d 100644 --- a/utils/gap_configs/configs/chips/gap/gap.json +++ b/utils/gap_configs/configs/chips/gap/gap.json @@ -2,6 +2,10 @@ "config_type": "generator", "@generator@": "generators/v1/config_gen", + "chip": { + "name": "gap" + }, + "board": { "devices": { "uart": { @@ -30,8 +34,6 @@ } }, - - "chip": "gap", "chip_family": "gap", "padframe": { diff --git a/utils/gap_configs/configs/chips/gap8_revc/gap8_revc.json b/utils/gap_configs/configs/chips/gap8_revc/gap8_revc.json index 0ae17b783..b2f769cfb 100644 --- a/utils/gap_configs/configs/chips/gap8_revc/gap8_revc.json +++ b/utils/gap_configs/configs/chips/gap8_revc/gap8_revc.json @@ -2,6 +2,10 @@ "config_type": "generator", "@generator@": "generators/v1/config_gen", + "chip": { + "name": "gap8_revc" + }, + "board": { "devices": { "uart": { @@ -31,7 +35,6 @@ }, - "chip": "gap8_revc", "chip_family": "gap", "padframe": { diff --git a/utils/gap_configs/configs/chips/gap9_v2/gap9_v2.json b/utils/gap_configs/configs/chips/gap9_v2/gap9_v2.json index 3d7b4245c..d1c586558 100644 --- a/utils/gap_configs/configs/chips/gap9_v2/gap9_v2.json +++ b/utils/gap_configs/configs/chips/gap9_v2/gap9_v2.json @@ -3,6 +3,15 @@ "@generator@": "generators/v1/config_gen", "chip_gen": "generators.v1.gap9_v2_chip_gen", + "chip": { + "name": "gap9_v2", + "soc": { + "mram": { + "@include@": "ips/mram/mram.json" + } + } + }, + "board": { "devices": { "spiflash": { @@ -31,9 +40,6 @@ }, "jtag_proxy": { "@includes@": ["devices/jtag_proxy.json"] - }, - "mram": { - "@include@": "ips/mram/mram.json" } }, @@ -79,7 +85,6 @@ } }, - "chip": "gap9_v2", "chip_family": "gap9_v2", "has_fast_clock": true, diff --git a/utils/gap_configs/configs/chips/gap9_v2/gap9_v2_rtl.json b/utils/gap_configs/configs/chips/gap9_v2/gap9_v2_rtl.json index 1abdfcdca..d0932c616 100644 --- a/utils/gap_configs/configs/chips/gap9_v2/gap9_v2_rtl.json +++ b/utils/gap_configs/configs/chips/gap9_v2/gap9_v2_rtl.json @@ -2,6 +2,15 @@ "config_type": "generator", "@generator@": "generators/v1/config_rtl_gen", + "chip": { + "name": "gap9_v2", + "soc": { + "mram": { + "@include@": "ips/mram/mram.json" + } + } + }, + "board": { "name": "gap9_v2", "devices": { @@ -11,9 +20,6 @@ "flash": { "@include@" : "devices/hyperflash.json", "cs": 1 - }, - "mram": { - "@include@": "ips/mram/mram.json" } }, @@ -433,6 +439,5 @@ } }, - "chip": "gap9_v2", "chip_family": "gap9_v2" } diff --git a/utils/gap_configs/configs/chips/gap_rev1/gap_rev1.json b/utils/gap_configs/configs/chips/gap_rev1/gap_rev1.json index 066ee54d8..d779ae6cf 100644 --- a/utils/gap_configs/configs/chips/gap_rev1/gap_rev1.json +++ b/utils/gap_configs/configs/chips/gap_rev1/gap_rev1.json @@ -2,6 +2,10 @@ "config_type": "generator", "@generator@": "generators/v1/config_gen", + "chip": { + "name": "gap_rev1" + }, + "board": { "devices": { "uart": { @@ -30,7 +34,6 @@ } }, - "chip": "gap_rev1", "chip_family": "gap", "padframe": { diff --git a/utils/gap_configs/configs/chips/vega/vega.json b/utils/gap_configs/configs/chips/vega/vega.json index 52f435b83..990fad763 100644 --- a/utils/gap_configs/configs/chips/vega/vega.json +++ b/utils/gap_configs/configs/chips/vega/vega.json @@ -2,6 +2,10 @@ "config_type": "generator", "@generator@": "generators/v1/config_gen", + "chip": { + "name": "vega" + }, + "board": { "devices": { "spiflash": { @@ -39,7 +43,6 @@ } }, - "chip": "vega", "chip_family": "vega", "padframe": { @@ -198,13 +201,6 @@ "taps": [ "pulp_tap", "riscv_tap" ], - "mram": { - "version": 1, - "config": { - "size": "0x00100000" - } - }, - "l2": { "base": "0x1C000000", "size": "0x00190000", diff --git a/utils/gap_configs/configs/power_models/core/values/clock_gated.json b/utils/gap_configs/configs/power_models/core/values/clock_gated.json index f24e02d9e..f7492e7c8 100644 --- a/utils/gap_configs/configs/power_models/core/values/clock_gated.json +++ b/utils/gap_configs/configs/power_models/core/values/clock_gated.json @@ -1,11 +1,13 @@ { - "type": "linear", - "unit": "W", + "dynamic": { + "type": "linear", + "unit": "W", - "values": { - "25": { - "1.2": { - "any": "0.0000016" + "values": { + "25": { + "1.2": { + "any": "0.0000016" + } } } } diff --git a/utils/gap_configs/configs/power_models/core/values/insn.json b/utils/gap_configs/configs/power_models/core/values/insn.json index 1b4faee6c..3b802aef2 100644 --- a/utils/gap_configs/configs/power_models/core/values/insn.json +++ b/utils/gap_configs/configs/power_models/core/values/insn.json @@ -1,14 +1,16 @@ { - "type": "linear", - "unit": "pJ", + "dynamic": { + "type": "linear", + "unit": "pJ", - "values": { - "25": { - "1.2": { - "any": "2.4854524" - }, - "1.1": { - "any": "1.2" + "values": { + "25": { + "1.2": { + "any": "2.4854524" + }, + "1.1": { + "any": "1.2" + } } } } diff --git a/utils/gap_configs/configs/power_models/core/values/leakage.json b/utils/gap_configs/configs/power_models/core/values/leakage.json index b6eb63ba6..efc6b8ede 100644 --- a/utils/gap_configs/configs/power_models/core/values/leakage.json +++ b/utils/gap_configs/configs/power_models/core/values/leakage.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "W", + "leakage": { + "type": "linear", + "unit": "W", - "values": { - "25": { - "1.2": { - "any": "0.000030" + "values": { + "25": { + "1.2": { + "any": "0.000030" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/configs/power_models/l1/values/idle.json b/utils/gap_configs/configs/power_models/l1/values/idle.json index 878c8f927..3658f411a 100644 --- a/utils/gap_configs/configs/power_models/l1/values/idle.json +++ b/utils/gap_configs/configs/power_models/l1/values/idle.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "W", + "dynamic": { + "type": "linear", + "unit": "W", - "values": { - "25": { - "1.2": { - "any": "0.00000501264031" + "values": { + "25": { + "1.2": { + "any": "0.00000501264031" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/configs/power_models/l1/values/leakage.json b/utils/gap_configs/configs/power_models/l1/values/leakage.json index d000fe16c..7b3df3990 100644 --- a/utils/gap_configs/configs/power_models/l1/values/leakage.json +++ b/utils/gap_configs/configs/power_models/l1/values/leakage.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "W", + "leakage": { + "type": "linear", + "unit": "W", - "values": { - "25": { - "1.2": { - "any": "0.00001707210625" + "values": { + "25": { + "1.2": { + "any": "0.00001707210625" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/configs/power_models/l1/values/read_16.json b/utils/gap_configs/configs/power_models/l1/values/read_16.json index ed830f03e..d8fd38dc0 100644 --- a/utils/gap_configs/configs/power_models/l1/values/read_16.json +++ b/utils/gap_configs/configs/power_models/l1/values/read_16.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "pJ", + "dynamic": { + "type": "linear", + "unit": "pJ", - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/configs/power_models/l1/values/read_32.json b/utils/gap_configs/configs/power_models/l1/values/read_32.json index ed830f03e..d8fd38dc0 100644 --- a/utils/gap_configs/configs/power_models/l1/values/read_32.json +++ b/utils/gap_configs/configs/power_models/l1/values/read_32.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "pJ", + "dynamic": { + "type": "linear", + "unit": "pJ", - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/configs/power_models/l1/values/read_8.json b/utils/gap_configs/configs/power_models/l1/values/read_8.json index ed830f03e..d8fd38dc0 100644 --- a/utils/gap_configs/configs/power_models/l1/values/read_8.json +++ b/utils/gap_configs/configs/power_models/l1/values/read_8.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "pJ", + "dynamic": { + "type": "linear", + "unit": "pJ", - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/configs/power_models/l1/values/write_16.json b/utils/gap_configs/configs/power_models/l1/values/write_16.json index ed830f03e..d8fd38dc0 100644 --- a/utils/gap_configs/configs/power_models/l1/values/write_16.json +++ b/utils/gap_configs/configs/power_models/l1/values/write_16.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "pJ", + "dynamic": { + "type": "linear", + "unit": "pJ", - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/configs/power_models/l1/values/write_32.json b/utils/gap_configs/configs/power_models/l1/values/write_32.json index ed830f03e..d8fd38dc0 100644 --- a/utils/gap_configs/configs/power_models/l1/values/write_32.json +++ b/utils/gap_configs/configs/power_models/l1/values/write_32.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "pJ", + "dynamic": { + "type": "linear", + "unit": "pJ", - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/configs/power_models/l1/values/write_8.json b/utils/gap_configs/configs/power_models/l1/values/write_8.json index ed830f03e..d8fd38dc0 100644 --- a/utils/gap_configs/configs/power_models/l1/values/write_8.json +++ b/utils/gap_configs/configs/power_models/l1/values/write_8.json @@ -1,12 +1,14 @@ { - "type": "linear", - "unit": "pJ", + "dynamic": { + "type": "linear", + "unit": "pJ", - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } - } + } } \ No newline at end of file diff --git a/utils/gap_configs/python/devices/gap_testbench/gap_firmware.img b/utils/gap_configs/python/devices/gap_testbench/gap_firmware.img new file mode 100644 index 000000000..c2186fef7 Binary files /dev/null and b/utils/gap_configs/python/devices/gap_testbench/gap_firmware.img differ diff --git a/utils/gap_configs/python/devices/gap_testbench/gap_testbench.py b/utils/gap_configs/python/devices/gap_testbench/gap_testbench.py new file mode 100644 index 000000000..90cba5300 --- /dev/null +++ b/utils/gap_configs/python/devices/gap_testbench/gap_testbench.py @@ -0,0 +1,37 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import gsystree as st +from gap.gap9.gap9_evk import Gap9_evk + + +class Gap_testbench(st.Component): + + def __init__(self, parent, name): + super(Gap_testbench, self).__init__(parent, name) + + gap = Gap9_evk(self, 'gap0') + + firmware = 'devices/gap_testbench/gap_firmware.img' + firmware_img = self.get_file_path(firmware) + + if firmware_img is None: + raise RuntimeError('Could not find gap firmware: ' + firmware) + + self.add_property('gap0/flash/content/image', firmware_img) + + self.bind(gap, 'i2s0', self, 'i2s0') + self.bind(gap, 'i2s1', self, 'i2s1') + self.bind(gap, 'i2s2', self, 'i2s2') + diff --git a/utils/gap_configs/python/gap/gap9/gap9_evk_with_testbench.py b/utils/gap_configs/python/gap/gap9/gap9_evk_with_testbench.py new file mode 100644 index 000000000..a2595894a --- /dev/null +++ b/utils/gap_configs/python/gap/gap9/gap9_evk_with_testbench.py @@ -0,0 +1,30 @@ +# Copyright (C) 2020 GreenWaves Technologies, SAS + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import gsystree as st +from gap.gap9.gap9_evk import Gap9_evk +from devices.gap_testbench.gap_testbench import Gap_testbench + + +class Gap9_evk_with_testbench(st.Component): + + def __init__(self, parent, name): + super(Gap9_evk_with_testbench, self).__init__(parent, name) + + gap = Gap9_evk(self, 'gap') + testbench = Gap_testbench(self, 'testbench') + + self.bind(testbench, 'i2s0', gap, 'i2s0') + self.bind(testbench, 'i2s1', gap, 'i2s1') + self.bind(testbench, 'i2s2', gap, 'i2s2') \ No newline at end of file diff --git a/utils/gap_configs/python/gap/gap9/power_models/core/riscy.json b/utils/gap_configs/python/gap/gap9/power_models/core/riscy.json index 8dbb871ea..c48a5e38f 100644 --- a/utils/gap_configs/python/gap/gap9/power_models/core/riscy.json +++ b/utils/gap_configs/python/gap/gap9/power_models/core/riscy.json @@ -1,50 +1,58 @@ { "clock_gated": { - "type": "linear", - "unit": "W", - - "values": { - "25": { - "1.2": { - "any": "0.0000016" + "dynamic": { + "type": "linear", + "unit": "W", + + "values": { + "25": { + "1.2": { + "any": "0.0000016" + } } } } }, "insn_groups": [ { - "type": "linear", - "unit": "pJ", - - "values": { - "25": { - "1.2": { - "any": "1.4854524" + "dynamic": { + "type": "linear", + "unit": "pJ", + + "values": { + "25": { + "1.2": { + "any": "6.36" + } } } } }, { - "type": "linear", - "unit": "pJ", - - "values": { - "25": { - "1.2": { - "any": "2.4854524" + "dynamic": { + "type": "linear", + "unit": "pJ", + + "values": { + "25": { + "1.2": { + "any": "6.36" + } } } } } ], "leakage": { - "type": "linear", - "unit": "W", - - "values": { - "25": { - "1.2": { - "any": "0.000030" + "leakage": { + "type": "linear", + "unit": "W", + + "values": { + "25": { + "1.2": { + "any": "0.0001714375" + } } } } diff --git a/utils/gap_configs/python/gap/gap9/power_models/l1/l1.json b/utils/gap_configs/python/gap/gap9/power_models/l1/l1.json index b6a7b9006..e41b57355 100644 --- a/utils/gap_configs/python/gap/gap9/power_models/l1/l1.json +++ b/utils/gap_configs/python/gap/gap9/power_models/l1/l1.json @@ -1,84 +1,98 @@ { "idle": { - "type": "linear", - "unit": "W", - - "values": { - "25": { - "1.2": { - "any": "0.00000501264031" + "dynamic": { + "type": "linear", + "unit": "W", + + "values": { + "25": { + "1.2": { + "any": "0.00000501264031" + } } } } }, "leakage": { - "type": "linear", - "unit": "W", - - "values": { - "25": { - "1.2": { - "any": "0.00001707210625" + "leakage": { + "type": "linear", + "unit": "W", + + "values": { + "25": { + "1.2": { + "any": "0.00001707210625" + } } } } }, "read_16": { - "type": "linear", - "unit": "pJ", - - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "dynamic": { + "type": "linear", + "unit": "pJ", + + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } } }, "read_32": { - "type": "linear", - "unit": "pJ", - - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "dynamic": { + "type": "linear", + "unit": "pJ", + + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } } }, "write_8": { - "type": "linear", - "unit": "pJ", - - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "dynamic": { + "type": "linear", + "unit": "pJ", + + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } } }, "write_16": { - "type": "linear", - "unit": "pJ", - - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "dynamic": { + "type": "linear", + "unit": "pJ", + + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } } }, "write_32": { - "type": "linear", - "unit": "pJ", - - "values": { - "25": { - "1.2": { - "any": "2.124280487" + "dynamic": { + "type": "linear", + "unit": "pJ", + + "values": { + "25": { + "1.2": { + "any": "2.124280487" + } } } } diff --git a/utils/gap_configs/python/gap/gap9/soc.py b/utils/gap_configs/python/gap/gap9/soc.py index 296fcb714..320738471 100644 --- a/utils/gap_configs/python/gap/gap9/soc.py +++ b/utils/gap_configs/python/gap/gap9/soc.py @@ -469,7 +469,10 @@ def __init__(self, parent, name, config_file, chip, cluster): self.bind(riscv_tap, name, self, 'halt_' + name) # MRAM - #self.bind(udma, 'mram0', mram, 'input') + self.bind(periph_clock, 'out', mram, 'clock') + self.bind(udma, 'mram0_req', mram, 'input_req') + self.bind(udma, 'mram0_data', mram, 'input_data') + self.bind(udma, 'mram0_conf', mram, 'input_conf') # GDB server self.bind(gdbserver, 'out', soc_ico, 'debug') diff --git a/utils/gap_configs/python/gap/gap9/udma.json b/utils/gap_configs/python/gap/gap9/udma.json index eff130a02..54d86c740 100644 --- a/utils/gap_configs/python/gap/gap9/udma.json +++ b/utils/gap_configs/python/gap/gap9/udma.json @@ -13,7 +13,7 @@ "l2_read_fifo_size": 4 }, - "interfaces" : ["hyper", "aes", "sfu", "ffc", "i2s", "uart", "i2c"], + "interfaces" : ["hyper", "aes", "sfu", "ffc", "i2s", "uart", "i2c", "mram"], "spim": { "version" : 4, @@ -71,6 +71,19 @@ "is_slave" : true }, + "mram": { + "version" : 2, + "nb_channels" : 1, + "ids" : [21], + "offsets" : ["0xA80"], + "events" : { + "erase" : [113], + "tx" : [114], + "trim" : [115], + "rx" : [116] + } + }, + "aes": { "version" : 1, "nb_channels" : 1, diff --git a/utils/gap_configs/python/generators/v1/chip_gen.py b/utils/gap_configs/python/generators/v1/chip_gen.py index 90f74270f..09ce539f6 100644 --- a/utils/gap_configs/python/generators/v1/chip_gen.py +++ b/utils/gap_configs/python/generators/v1/chip_gen.py @@ -37,7 +37,7 @@ def __init__(self, tp): if padframe is not None: padframe_conf = js.import_config_from_file(tp.get_child_str('padframe/content'), find=True, interpret=True) chip_family = tp.get_child_str('chip_family') - chip_name = tp.get_child_str('chip') + chip_name = tp.get_child_str('chip/name') has_pmu = tp.get('soc/peripherals/pmu') is not None has_rtc = tp.get('soc/peripherals/rtc') is not None or tp.get('soc/rtc') is not None has_udma = tp.get('soc/peripherals/udma') is not None diff --git a/utils/gap_configs/python/generators/v1/gap9_v2_soc_gen.py b/utils/gap_configs/python/generators/v1/gap9_v2_soc_gen.py index 4164a84e0..88dec5af3 100644 --- a/utils/gap_configs/python/generators/v1/gap9_v2_soc_gen.py +++ b/utils/gap_configs/python/generators/v1/gap9_v2_soc_gen.py @@ -22,7 +22,7 @@ class Soc(object): def __init__(self, tp): - chip = tp.get_child_str('chip') + chip = tp.get_child_str('chip/name') has_cluster = tp.get('cluster') is not None nb_cluster = tp.get_child_int('cluster/nb_cluster') nb_pe = tp.get_child_int('cluster/nb_pe') diff --git a/utils/gap_configs/python/generators/v1/soc_gen.py b/utils/gap_configs/python/generators/v1/soc_gen.py index 54ddf65a7..6e5d1ba99 100644 --- a/utils/gap_configs/python/generators/v1/soc_gen.py +++ b/utils/gap_configs/python/generators/v1/soc_gen.py @@ -23,7 +23,7 @@ class Soc(object): def __init__(self, tp): - chip = tp.get_child_str('chip') + chip = tp.get_child_str('chip/name') has_cluster = tp.get('cluster') is not None nb_cluster = tp.get_child_int('cluster/nb_cluster') nb_pe = tp.get_child_int('cluster/nb_pe') diff --git a/utils/gap_configs/python/generators/v1/system_gen.py b/utils/gap_configs/python/generators/v1/system_gen.py index ae5643370..e136b468c 100644 --- a/utils/gap_configs/python/generators/v1/system_gen.py +++ b/utils/gap_configs/python/generators/v1/system_gen.py @@ -29,7 +29,7 @@ def get_config(tp): set_pc_addr = None set_pc_offset = None debug_bridge_commands = None - chip = tp.get_child_str('chip') + chip = tp.get_child_str('chip/name') if chip in ['pulpissimo', 'pulpissimo_v1', 'pulp', 'pulp_v1']: start_addr = '0x%X' % (tp.get_child_int("soc/peripherals/fc_dbg_unit/base") + 0x0000) diff --git a/utils/gap_configs/python/generators/v1/system_rtl_gen.py b/utils/gap_configs/python/generators/v1/system_rtl_gen.py index c9b0f7c88..82f89e439 100644 --- a/utils/gap_configs/python/generators/v1/system_rtl_gen.py +++ b/utils/gap_configs/python/generators/v1/system_rtl_gen.py @@ -22,7 +22,7 @@ def get_config(tp): - chip = tp.get_child_str('chip') + chip = tp.get_child_str('chip/name') system = Component( ) diff --git a/utils/gap_configs/python/generators/v1/top_gen.py b/utils/gap_configs/python/generators/v1/top_gen.py index c9a634583..4d29a26fd 100644 --- a/utils/gap_configs/python/generators/v1/top_gen.py +++ b/utils/gap_configs/python/generators/v1/top_gen.py @@ -24,7 +24,7 @@ def get_config(tp): - chip = tp.get_child_str('chip') + chip = tp.get_child_str('chip/name') config = js.import_config({'@includes@': [ "defaults.json" ] }, interpret=True) diff --git a/utils/gap_configs/python/generators/v1/top_rtl_gen.py b/utils/gap_configs/python/generators/v1/top_rtl_gen.py index bb2112b21..8e7852a0c 100644 --- a/utils/gap_configs/python/generators/v1/top_rtl_gen.py +++ b/utils/gap_configs/python/generators/v1/top_rtl_gen.py @@ -24,7 +24,7 @@ def get_config(tp): - chip = tp.get_child_str('chip') + chip = tp.get_child_str('chip/name') config = js.import_config({'@includes@': [ "defaults.json" ] }, interpret=True) diff --git a/utils/gap_configs/python/gsystree.py b/utils/gap_configs/python/gsystree.py index 6a7496ded..85f66010e 100644 --- a/utils/gap_configs/python/gsystree.py +++ b/utils/gap_configs/python/gsystree.py @@ -324,7 +324,7 @@ def load_property_file(self, path): The resulting dictionary """ - with open(self.__get_property_file(path), 'r') as fd: + with open(self.get_file_path(path), 'r') as fd: return json.load(fd) @@ -372,6 +372,26 @@ def get_config(self): return config + def get_file_path(self, json): + """Return absolute config file path. + + The specified file is search from PYTHONPATH. + + Returns + ------- + string + The absolute path or None is the file is not found + """ + + if os.environ.get('PYTHONPATH') is not None: + for dirpath in os.environ.get('PYTHONPATH').split(':'): + path = os.path.join(dirpath, json) + if os.path.exists(path): + return path + + return None + + def add_properties(self, properties): self.properties = self.__merge_properties(self.properties, properties) @@ -539,14 +559,3 @@ def __merge_properties(self, dst, src, options=None, is_root=True): return options else: return src - - - def __get_property_file(self, json): - if os.environ.get('PYTHONPATH') is not None: - for dirpath in os.environ.get('PYTHONPATH').split(':'): - path = os.path.join(dirpath, json) - if os.path.exists(path): - return path - - return None - diff --git a/utils/gap_configs/python/ips/clock/Clock_generator.py b/utils/gap_configs/python/ips/clock/Clock_generator.py deleted file mode 100644 index d4c62120f..000000000 --- a/utils/gap_configs/python/ips/clock/Clock_generator.py +++ /dev/null @@ -1,27 +0,0 @@ -# -# Copyright (C) 2020 GreenWaves Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -import gsystree as st - -class Clock_domain(st.Component): - - def __init__(self, frequency): - super(Clock_domain, self).__init__() - - self.add_properties({ - 'vp_component': "vp.clock_domain_impl", - 'frequency': frequency - }) diff --git a/utils/gap_configs/python/ips/mram/mram.py b/utils/gap_configs/python/ips/mram/mram.py index 18f3c5a0c..4e3a324df 100644 --- a/utils/gap_configs/python/ips/mram/mram.py +++ b/utils/gap_configs/python/ips/mram/mram.py @@ -15,14 +15,23 @@ # import gsystree as st +from devices.flash.flash import Flash -class Mram(st.Component): +class Mram(Flash): def __init__(self, parent, name, size): super(Mram, self).__init__(parent, name) self.add_properties({ - #'vp_component': 'pulp.mram.mram_v1_impl', + 'vp_component': 'pulp.mram.mram_v1_impl', 'size': size - }) \ No newline at end of file + }) + + self.add_property('content/partitions/readfs/files', []) + self.add_property('content/partitions/readfs/type', 'readfs') + self.add_property('content/partitions/readfs/enabled', False) + + self.add_property('datasheet/type', 'mram') + self.add_property('datasheet/size', '2MB') + self.add_property('datasheet/block-size', '8KB') \ No newline at end of file diff --git a/utils/gaptest/gaptest b/utils/gaptest/gaptest index 4447841a1..e6d506785 100755 --- a/utils/gaptest/gaptest +++ b/utils/gaptest/gaptest @@ -1,6 +1,7 @@ #!/usr/bin/env perl use strict; use warnings; +use Data::Dumper qw(Dumper); use 5.010; @@ -17,6 +18,8 @@ use lib dirname(abs_path $0) . '/lib'; use Time::Out qw(timeout) ; use YAML::Tiny; +use gaptest::Loader; + ### Implem my %durations = ( @@ -34,6 +37,7 @@ my $test_queue = Thread::Queue->new(); my @test_failed : shared; my @test_passed : shared; my %test_time : shared; +my $tests_job_counter = 0; my $tests_nb = 0; @test_failed = (); @test_passed = (); @@ -70,8 +74,6 @@ sub push_test_result { ## Exec the run command sub exc_cmd_make { - my $args = shift; - @_ = @$args; my $os = shift; my $platform = shift; my $flags = shift; @@ -114,9 +116,73 @@ sub exc_cmd_make { return $res; } + +## Exec the run command +sub exc_cmd_cmake { + my $os = shift; + my $platform = shift; + my $flags = shift; + my $tags = shift; + my $pre = shift; + my $post = shift; + my $timeout = shift; + my $target_name = shift; + my $exec_dir = shift; + my $chip = shift; + my $chip_version = shift; + my $sdk_root_path = shift; + my $res = 0; + my $make_path = $basedir."/".$exec_dir; + + $chip =~ tr/a-z/A-Z/; + my @split_flags = split / /, $flags; + my $cmake_flags = ''; + for(sort @split_flags) + { + $cmake_flags = $cmake_flags." -D".$_; + } + + chdir $exec_dir; + my ($seconds_before, $seconds_after); + timeout $timeout => sub { + $seconds_before = time(); + + say "CMAKE_GENERATOR=Ninja cmake -S $make_path -B $make_path/build".-$target_name." -DCONFIG_GAP_SDK_HOME=$sdk_root_path -DCMAKE_MODULE_PATH=$sdk_root_path/utils/cmake -DCONFIG_CHIP=$chip -DCONFIG_CHIP_VERSION=$chip_version -DBOARD=$ENV{'BOARD_NAME'} $cmake_flags"; + $res = system ("CMAKE_GENERATOR=Ninja cmake -S $make_path -B $make_path/build".-$target_name." -DCONFIG_GAP_SDK_HOME=$sdk_root_path -DCMAKE_MODULE_PATH=$sdk_root_path/utils/cmake -DCONFIG_CHIP=$chip -DCONFIG_CHIP_VERSION=$chip_version -DBOARD=$ENV{'BOARD_NAME'} $cmake_flags"); + say "cmake --build $make_path/build"; + $res = system("cmake --build $make_path/build".-$target_name); + say "cmake --build $make_path/build --target run"; + $res = system("cmake --build $make_path/build".-$target_name." --target run"); + $seconds_after = time(); + $res = $res >>=8; + say $target_name." : Result is: ".$res; + if($post == 1) + { + $res = system("cmake --build build --target postrun"); + } + }; + my $seconds = $seconds_after - $seconds_before; + if ($@){ + # operation timed-out + my $cwd = cwd; + say "Test ".cwd." variant: ".$target_name." failed with timeout"; + } + push_test_result(!$res, $target_name,$seconds); + + return $res; +} + sub cmd_runner { while (defined(my @args = $test_queue->dequeue())) { - exc_cmd_make(@args); + my $_args = pop(@args); + @_ = @$_args; + my $builder = pop(@_); + if ($builder eq 'make'){ + exc_cmd_make(@_); + } + if ($builder eq 'cmake'){ + exc_cmd_cmake(@_); + } } } @@ -124,6 +190,16 @@ sub check_len { my $config_len = shift; my $target_len = shift; + if(not defined $durations{$config_len}) + { + die "Selected duration \"${config_len}\" is not valid\n"; + } + + if(not defined $durations{$target_len}) + { + die "Variant duration \"${target_len}\" is not valid\n"; + } + if($durations{$config_len} >= $durations{$target_len}) { return 1; @@ -139,127 +215,101 @@ sub process_yml { my $config_os = shift; my $config_len = shift; my $config_tag = shift; + my $job_index = shift; + my $job_total = shift; + my $chip_version = shift; + my $builder = shift; + my $sdk_root_path = shift; + # enter the test dir chdir $exec_dir; - my $chip_ok = 0; - my $platform_ok = 0; - my $os_ok = 0; - my $res = 0; - # now, read the yml file, and harvest informations - my $gaptest = YAML::Tiny->read( 'gaptest.yml' ); - say $config_chip; - # take the whole list - my $target_name = $gaptest->[0]->{name}; - my $target_timeout; - if(defined($gaptest->[0]->{timeout})) - { - $target_timeout = $gaptest->[0]->{timeout}; - } - else - { - say "Setting default timeout"; - $target_timeout = 3600; - } - my @target_chips = @{$gaptest->[0]->{chips}}; - if (grep( /^$config_chip$/, @target_chips )) { - $chip_ok = 1; - } - else - { - return -1; - } - # take the whole list - my @target_os = @{$gaptest->[0]->{os}}; - if (grep( /^$config_os$/, @target_os )) { - $os_ok = 1; - } - else - { - return -1; - } - # take the whole list - my @target_platforms = @{$gaptest->[0]->{platforms}}; - if (grep( /^$config_platform$/, @target_platforms )) { - $platform_ok = 1; - } - else + # read the yml file, and harvest informations + my @test_variants = gaptest::Loader::load_file('gaptest.yml'); + + foreach my $test_variant (@test_variants) { - return -1; - } - if ($chip_ok && $os_ok && $platform_ok) { - my %variants = %{$gaptest->[0]->{variants}}; - my $section = ''; - foreach $section (keys %variants) + if(check_len($config_len, $test_variant->{duration}) + && (grep( /^$config_tag$/, @{$test_variant->{tags}})) + && (grep( /^$config_os$/, @{$test_variant->{os}})) + && (grep( /^$config_chip$/, @{$test_variant->{chips}})) + && (grep( /^$config_platform$/, @{$test_variant->{platforms}}))) { - $target_name = $target_name."_".$gaptest->[0]->{variants}->{$section}->{name}; - my $target_flags = $gaptest->[0]->{variants}->{$section}->{flags}; - my $target_len = $gaptest->[0]->{variants}->{$section}->{duration}; - my @target_tags = @{$gaptest->[0]->{variants}->{$section}->{tags}}; - - my @variant_os; - if(defined($gaptest->[0]->{variants}->{$section}->{os})) - { - @variant_os = @{$gaptest->[0]->{variants}->{$section}->{os}}; - } - else - { - @variant_os = @target_os; - } - my @variant_chips; - if(defined($gaptest->[0]->{variants}->{$section}->{chips})) - { - @variant_chips = @{$gaptest->[0]->{variants}->{$section}->{chips}}; - } - else - { - @variant_chips = @target_chips; - } - my @variant_platforms; - if(defined($gaptest->[0]->{variants}->{$section}->{platforms})) + # Only launch the test if it is belong to the job + if (($tests_job_counter % $job_total) ne ($job_index - 1)) { - @variant_platforms = @{$gaptest->[0]->{variants}->{$section}->{platforms}}; - } - else - { - @variant_platforms = @target_platforms; - } - my $variant_timeout = $target_timeout; - if(defined($gaptest->[0]->{variants}->{$section}->{timeout})) - { - $variant_timeout = $gaptest->[0]->{variants}->{$section}->{timeout}; + $tests_job_counter++; + next; } + $tests_job_counter++; - if(check_len($config_len,$target_len) && (grep( /^$config_tag$/, @target_tags )) - && (grep( /^$config_os$/, @variant_os )) - && (grep( /^$config_chip$/, @variant_chips )) - && (grep( /^$config_platform$/, @variant_platforms ))) + if ($list_select_tests) { - if ($list_select_tests) - { - # list selected test without executing it - push(@test_list, ${target_name}); - next; - } - - if (!defined($target_flags)) { - $target_flags = ''; - } - $target_flags = $target_flags." DURATION=".$config_len; - # TODO: push in workqueue here - #my $exec_res = exc_cmd_make($config_os,$config_platform,$target_flags,'',0,0,$variant_timeout,$target_name); - #$res = $res || $exec_res; - my @arg = ($config_os,$config_platform,$target_flags,'',0,0,$variant_timeout,$target_name,$exec_dir); - $test_queue->enqueue(\@arg); - $tests_nb++; + # list selected test without executing it + push(@test_list, $test_variant->{name}); + next; } + + $test_variant->{flags} = "DURATION=".$config_len." ".$test_variant->{flags}; + + # push in workqueue + my @arg = ($config_os, + $config_platform, + $test_variant->{flags}, + '', + 0, + 0, + $test_variant->{timeout}, + $test_variant->{name}, + $exec_dir, + $config_chip, + $chip_version, + $sdk_root_path, + $builder); + $test_queue->enqueue(\@arg); + $tests_nb++; } } - return $res; +} + +sub create_default_gaptest { + my $filename = "gaptest.yml"; + # verify no gaptest.yml + if (not -e $filename) + { + # create file + open(my $FH,'>',$filename) or die "Could not create gaptest.yml"; + + # dump gaptest.yml + print $FH "name: TEST_NAME_TO_CHANGE\n"; + print $FH "platforms:\n"; + print $FH " - gvsoc\n"; + print $FH "os:\n"; + print $FH " - freertos\n"; + print $FH " - pulpos\n"; + print $FH "chips:\n"; + print $FH " - gap8\n"; + print $FH " - gap9\n"; + print $FH "variants:\n"; + print $FH " std:\n"; + print $FH " name: standard\n"; + print $FH " tags:\n"; + print $FH " - integration\n"; + print $FH " - release\n"; + print $FH " duration: standard\n"; + print $FH " flags: ~\n"; + + # close file + close($FH); + } + else + { + print "A file named \"gaptest.yml\" already exists\n"; + } } sub gaptest_find_cb { - push @test_files_list, $File::Find::dir if /gaptest.yml/; + push @test_files_list, $File::Find::dir if /gaptest.yml$/; } sub print_help{ @@ -281,6 +331,13 @@ sub print_help{ print(" --tag : select a tag. (default: integration)\n"); print(" --no-fail : fail on first test.\n"); print(" --nb-proc : select the number of processors (default: 1)\n"); + print(" --jobs : Divide the testsuite into multiple smaller testsuites\n"); + print(" is a string formatted as \"X/N\" where X is the job index\n"); + print(" and N is the total number of jobs.\n"); + print(" This feature is useful to parallelize long testsuites, as you\n"); + print(" can launch a single testsuite on multiple test runners.\n"); + print("\n"); + print(" --init : create a default \"gaptest.yml\" file and exit\n"); print(" --list-selected : list selected tests and exit\n"); print(" --help : display help and exit\n"); print("\n"); @@ -314,13 +371,14 @@ sub dump_junit_report { my $timestamp = shift; lock(@test_failed); lock(@test_passed); + say "Dumping report at: ".cwd."/".$filename; open(REPORT,'>',$filename) or die $!; my $nb_test_failed = scalar(@test_failed); my $nb_test_passed = scalar(@test_passed); my $total = $nb_test_failed + $nb_test_passed; my $header_failed = "failures=\"".$nb_test_failed."\""; my $header_tests = "tests=\"".$total."\""; - # next two are unsuported and set at 0 + # next two are unsuported and set at 0 my $header_errors = "errors=\"0\""; my $header_skipped = "skipped=\"0\""; my $header_timestamp = "timestamp=\".$timestamp.\""; @@ -337,6 +395,8 @@ sub dump_junit_report { print REPORT "\n"; } print REPORT "\n"; + close(REPORT); + say "Report dumped"; } ### ENTRY @@ -351,6 +411,9 @@ sub dump_junit_report { # --list: list all tests which will be run with current config (and their paths) # --dry-run: prepare all comands, and dump them, without executing +my $builder = 'make'; +my $sdk_root_path = ''; +my $chip_version = ''; my $chip = ''; my $tag = 'integration'; my $board = ''; @@ -359,19 +422,26 @@ my $os = 'freertos'; my $len = 'standard'; my $threads = ''; my $nb_proc = 1; +my $jobs = '1/1'; # contains "X/N" where X = job index, N = total number of jobs +my $test_init = 0; while (@ARGV) { my $arg = shift(@ARGV); # long options ($arg eq '--chip') && do { $chip = shift(@ARGV); next }; + ($arg eq '--chip-version') && do { $chip_version = shift(@ARGV); next }; + ($arg eq '--sdk-root-path') && do { $sdk_root_path = shift(@ARGV); next }; ($arg eq '--os') && do { $os = shift(@ARGV); next }; ($arg eq '--platform') && do { $platform = shift(@ARGV); next }; ($arg eq '--tag') && do { $tag = shift(@ARGV); next}; ($arg eq '--length') && do { $len = shift(@ARGV); next}; ($arg eq '--no-fail') && do { $stop_first_fail = 1; next}; ($arg eq '--nb-proc') && do { $nb_proc = shift(@ARGV); next}; + ($arg eq '--jobs') && do { $jobs = shift(@ARGV); next}; ($arg eq '--help') && do { print_help(); exit 0}; ($arg eq '--list-selected') && do { $list_select_tests = 1; next}; + ($arg eq '--init') && do { $test_init = 1; next}; + ($arg eq '--builder') && do { $builder = shift(@ARGV); next }; # short options ($arg eq '-c') && do { $chip = shift(@ARGV); next }; ($arg eq '-t') && do { $tag = shift(@ARGV); next}; @@ -380,6 +450,13 @@ while (@ARGV) { ($arg =~ m/^-.+/) && do { print "Unknown option: $arg\n"; &usage(); die}; } +if ($test_init) +{ + # create_default gaptest.yml + create_default_gaptest; + exit 0; +} + if($chip eq '') { usage(); @@ -395,36 +472,44 @@ for(my $i = 0; $i < $nb_proc; $i++) #$test_queue->limit = $nb_proc; -## for now, open in current dir, TODO: should search recursively -## TODO: add to workqueue instead of just executing find(\&gaptest_find_cb, '.'); -my $res = 0; my $cwd = cwd; $basedir = cwd; -say "cwd: ".$cwd; + +# get the index and total number of jobs +my $job_index = 1; +my $job_total = 1; +if ($jobs =~ /^([0-9]+)\/([0-9]+)$/) { + + $job_index = int($1); + $job_total = int($2); + if ($job_index > $job_total or $job_index < 1) + { + die("Incorrect job index: ${job_index} should be between 1 and ${job_total}\n"); + } +} +else { + die("Incorrect number of jobs: ${jobs}\n"); +} my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); my $timestamp = (1900+$year)."-".(1+$mon)."-".$mday."T".$hour.":".$min.":".($sec%60); -for (@test_files_list) +for (sort @test_files_list) { chdir $cwd; - say $_; - my $process_res = process_yml($_,$platform,$chip,$board,$os,$len,$tag); - $res = $res || $process_res; + process_yml($_,$platform,$chip,$board,$os,$len,$tag,$job_index,$job_total,$chip_version,$builder,$sdk_root_path); } -say "tests= ".(scalar(@test_failed) + scalar(@test_passed))." wished=".$tests_nb; while(nb_test_run() < $tests_nb) { sleep 1; } # go back to basedir -chdir $cwd; +chdir $basedir; -print("\n\n"); if($list_select_tests) { my $nb_test_total = scalar(@test_list); @@ -473,7 +558,7 @@ else say "Testsuite succeeded (passed: ${nb_test_passed}/${nb_test_total})"; } say "---------------------------------------------------------------------------"; - + dump_junit_report("./report.xml",$timestamp); exit scalar(@test_failed); } diff --git a/utils/gaptest/lib/gaptest/Loader.pm b/utils/gaptest/lib/gaptest/Loader.pm new file mode 100644 index 000000000..12e0a835a --- /dev/null +++ b/utils/gaptest/lib/gaptest/Loader.pm @@ -0,0 +1,204 @@ +package gaptest::Loader; + +use strict; +use warnings; +use base 'Exporter'; + +use YAML::Tiny; +use Carp; + +our @EXPORT = qw(load_file); + +=head1 NAME + +gaptest::Loader - Loads gaptest.yml files + +=head1 DESCRIPTION + +Loads and verifies gaptest.yml files. + +=cut + +=item load_file + + my @test_variants = load_file "gaptest.yml"; + +Load gaptest test variants from a file. +Returns a list of test variants. + +=cut + +sub load_file { + my ($file_name, undef) = @_; + + # Read the file + my $file_content = YAML::Tiny->read($file_name); + + my %test_base = load_test_base($file_content); + my @test_variants = load_test_variants ($file_content, \%test_base); + + return @test_variants; +} + +sub load_test_base { + my ($file_content, undef) = @_; + my %test_base = (); + + if(defined $file_content->[0]->{name}) + { + $test_base{name} = $file_content->[0]->{name}; + } + else + { + croak "Test base name is not defined\n"; + } + + if(defined($file_content->[0]->{timeout})) + { + $test_base{timeout} = $file_content->[0]->{timeout}; + } + else + { + $test_base{timeout} = 3600; + } + + if(defined $file_content->[0]->{chips}) + { + $test_base{chips} = [ @{$file_content->[0]->{chips}} ]; + } + else + { + croak "No chip listed in the test base"; + } + + if(defined $file_content->[0]->{os}) + { + $test_base{os} = [ @{$file_content->[0]->{os}} ]; + } + else + { + croak "No OS listed in the test base"; + } + + if(defined $file_content->[0]->{platforms}) + { + $test_base{platforms} = [ @{$file_content->[0]->{platforms}} ]; + } + else + { + croak "No platform listed in the test base"; + } + + return %test_base; +} + +sub load_test_variants { + my ($file_content, $test_base_ref, undef) = @_; + + my @test_variants = (); + + if (defined $file_content->[0]->{variants}) + { + my %variants = %{$file_content->[0]->{variants}}; + foreach my $section (sort keys %variants) + { + my $section_content = ${file_content}->[0]->{variants}->{$section}; + my %test_variant = load_test_variant ($section_content, $test_base_ref); + push(@test_variants, \%test_variant); + } + } + else + { + croak "No variant in test file\n"; + } + + return @test_variants; +} + +sub load_test_variant { + my ($section, $test_base_ref, undef) = @_; + + my %test_variant = (); + + my %test_base = %{$test_base_ref}; + + # Load fields + # use variant value if defined + # else use test base value + + if(defined $section->{name}) + { + $test_variant{name} = $test_base{name}."_".$section->{name}; + } + else + { + croak "Test variant has no name"; + } + + if(defined $section->{flags}) + { + $test_variant{flags} = $section->{flags}; + } + else + { + $test_variant{flags} = ""; + } + + if(defined $section->{duration}) + { + $test_variant{duration} = $section->{duration}; + } + else + { + croak "Test variant has no duration"; + } + + if(defined $section->{tags}) + { + $test_variant{tags} = [ @{$section->{tags}} ]; + } + else + { + croak "Test variant has no tag"; + } + + if(defined($section->{os})) + { + $test_variant{os} = [ @{$section->{os}} ]; + } + else + { + $test_variant{os} = [ @{$test_base{os}} ]; + } + + if(defined($section->{chips})) + { + $test_variant{chips} = [ @{$section->{chips}} ]; + } + else + { + $test_variant{chips} = [ @{$test_base{chips}} ]; + } + + if(defined($section->{platforms})) + { + $test_variant{platforms} = [ @{$section->{platforms}} ]; + } + else + { + $test_variant{platforms} = [ @{$test_base{platforms}} ]; + } + + if(defined($section->{timeout})) + { + $test_variant{timeout} = $section->{timeout}; + } + else + { + $test_variant{timeout} = $test_base{timeout}; + } + + return %test_variant; +} + +1; diff --git a/utils/gapy/runner/board/board_runner.py b/utils/gapy/runner/board/board_runner.py index 512ac43d6..b833da654 100644 --- a/utils/gapy/runner/board/board_runner.py +++ b/utils/gapy/runner/board/board_runner.py @@ -70,7 +70,7 @@ def flash(self): if flash.get_str('datasheet/type') == 'spi': flasher_script = 'gap9_flash_raw_spi' else: - if self.config.get_str('**/chip') == 'vega': + if self.config.get_str('**/chip/name') == 'vega': flasher_script = 'vega_flash_raw_hyper' else: flasher_script = 'gap9_flash_raw_hyper' diff --git a/utils/gapy/runner/chips/gap8.py b/utils/gapy/runner/chips/gap8.py index f7acae27c..ef59ed248 100644 --- a/utils/gapy/runner/chips/gap8.py +++ b/utils/gapy/runner/chips/gap8.py @@ -27,7 +27,7 @@ def gen_efuse_stim(self, filename): nb_regs = 128 efuses = [0] * nb_regs - chip = self.config.get_str('**/chip') + chip = self.config.get_str('**/chip/name') if chip == 'gap8_revc': diff --git a/utils/gapy/runner/default_runner.py b/utils/gapy/runner/default_runner.py index 26d95e685..10eb76b5c 100644 --- a/utils/gapy/runner/default_runner.py +++ b/utils/gapy/runner/default_runner.py @@ -96,35 +96,36 @@ def __handle_target(self, target, flash_device_prefix=None): if flash_config is None: raise errors.InputError('Invalid flash device: ' + flash_path) - gen_image = False - flash_image = self.args.force + if flash_config.get('content/image') is None: - # The flash can contain the boot binary and several partitions for FS - if flash_config.get('content/boot-loader') is not None: + gen_image = False + flash_image = self.args.force - gen_image = True + # The flash can contain the boot binary and several partitions for FS + if flash_config.get('content/boot-loader') is not None: + gen_image = True - if flash_config.get('content/partitions') is not None: - - for name, partition in flash_config.get('content/partitions').get_items().items(): + if flash_config.get('content/partitions') is not None: - gen_image = True + for name, partition in flash_config.get('content/partitions').get_items().items(): - type_name = partition.get_str('type') + gen_image = True - if type_name not in ['hostfs'] and ((partition.get('files') is not None and len(partition.get('files').get_dict()) != 0) or (partition.get_str('root_dir'))): - flash_image = True + type_name = partition.get_str('type') - if type_name is not None: - img_path = os.path.join(work_dir, flash_path.replace('/', '.') + '.' + name + '.img') - partition.set('image', img_path) + if type_name not in ['hostfs'] and ((partition.get('files') is not None and len(partition.get('files').get_dict()) != 0) or (partition.get_str('root_dir'))): + flash_image = True - if gen_image: - img_path = os.path.join(work_dir, flash_path.replace('/', '.') + '.img') - flash_config.set('content/image', img_path) - flash_config.set('content/flash', flash_image) + if type_name is not None: + img_path = os.path.join(work_dir, flash_path.replace('/', '.') + '.' + name + '.img') + partition.set('image', img_path) + if gen_image: + img_path = os.path.join(work_dir, flash_path.replace('/', '.') + '.img') + flash_config.set('content/gen_image', True) + flash_config.set('content/image', img_path) + flash_config.set('content/flash', flash_image) stim_format = flash_config.get_str("models/%s/stimuli/format" % self.args.platform) @@ -235,23 +236,24 @@ def __gen_flash_images_for_target(self, target, flash_device_prefix=None): if flash_config is None: raise errors.InputError('Invalid flash device: ' + flash_path) - if flash_config.get('content/partitions') is not None: + if flash_config.get_bool('content/gen_image'): + if flash_config.get('content/partitions') is not None: - for name, partition in flash_config.get('content/partitions').get_items().items(): + for name, partition in flash_config.get('content/partitions').get_items().items(): - type_name = partition.get_str('type') + type_name = partition.get_str('type') - if type_name is not None: - if type_name == 'readfs': - gen_readfs.main(config=self.config, partition_config=partition) - elif type_name == 'lfs': - gen_lfs.main(config=self.config, partition_config=partition) - elif type_name == 'hostfs': - work_dir = self.config.get_str('gapy/work_dir') - for file in partition.get('files').get_dict(): - shutil.copy(file, work_dir) - else: - raise errors.InputError('Invalid partition type: ' + type_name) + if type_name is not None: + if type_name == 'readfs': + gen_readfs.main(config=self.config, partition_config=partition) + elif type_name == 'lfs': + gen_lfs.main(config=self.config, partition_config=partition) + elif type_name == 'hostfs': + work_dir = self.config.get_str('gapy/work_dir') + for file in partition.get('files').get_dict(): + shutil.copy(file, work_dir) + else: + raise errors.InputError('Invalid partition type: ' + type_name) - if flash_config.get('content/image') is not None: - gen_flash_image.main(config=self.config, flash_config=flash_config) + if flash_config.get('content/image') is not None: + gen_flash_image.main(config=self.config, flash_config=flash_config) diff --git a/utils/gapy/runner/rtl/rtl_runner.py b/utils/gapy/runner/rtl/rtl_runner.py index 2907f3a0d..c094d500b 100644 --- a/utils/gapy/runner/rtl/rtl_runner.py +++ b/utils/gapy/runner/rtl/rtl_runner.py @@ -92,13 +92,6 @@ def __init__(self, args, config, system): if self.config.get('**/runner/peripherals') is not None: self.set_arg('-gCONFIG_FILE=rtl_config.json') - if os.environ.get('INSTALL_DIR') is not None: - dpi_path = '%s/lib/libpulpdpi' % (os.environ.get('INSTALL_DIR')) - if not os.path.exists(dpi_path + '.so'): - raise FatalError('Did no find DPI models: ' + dpi_path + '.so') - - self.set_arg('-sv_lib %s' % dpi_path) - # # Co-simulation with GVSOC # diff --git a/utils/gapy/targets/gap9_v2.json b/utils/gapy/targets/gap9_v2.json index babc56016..7e5ff1cc4 100644 --- a/utils/gapy/targets/gap9_v2.json +++ b/utils/gapy/targets/gap9_v2.json @@ -41,7 +41,7 @@ "flash_devices": [ "target/board/devices/flash", "target/board/devices/spiflash", - "target/board/devices/mram" + "target/chip/soc/mram" ], "boot": { "jtag_mode": null, diff --git a/utils/openocd_tools/README b/utils/openocd_tools/README index 22c6e3b8c..d5cbdfc5b 100644 --- a/utils/openocd_tools/README +++ b/utils/openocd_tools/README @@ -19,7 +19,7 @@ * The process is as follows (most is scripted) ** Run openocd with these arguments: *** interface/ftdi/olimex-arm-usb-ocd-h.cfg -f target/gap8revb.tcl -f ./tcl_scripts/jtag_boot.tcl -f ./tcl_scripts/fuser.tcl -f ./tcl_scripts/fuser_flash.tcl -*** load the gap_fuser@gapoc_a.elf binary contains in gap_bins of the archive +*** load the gap_fuser-gapoc_a.elf binary contains in gap_bins of the archive *** then simply run: "fuse_hyperflash_boot" *** you can unplug your board and it should now boot from flash. *** After this manipulation, you might need to redo a reset of the board when pluging openocd for jtag boot diff --git a/utils/openocd_tools/gap_bins/gap_dumper@gapuino8.elf b/utils/openocd_tools/gap_bins/gap_dumper-gapuino8.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_dumper@gapuino8.elf rename to utils/openocd_tools/gap_bins/gap_dumper-gapuino8.elf diff --git a/utils/openocd_tools/gap_bins/gap_flasher@gapoc_a.elf b/utils/openocd_tools/gap_bins/gap_flasher-gapoc_a.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_flasher@gapoc_a.elf rename to utils/openocd_tools/gap_bins/gap_flasher-gapoc_a.elf diff --git a/utils/openocd_tools/gap_bins/gap_flasher@gapoc_a_qpif.elf b/utils/openocd_tools/gap_bins/gap_flasher-gapoc_a_qpif.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_flasher@gapoc_a_qpif.elf rename to utils/openocd_tools/gap_bins/gap_flasher-gapoc_a_qpif.elf diff --git a/utils/openocd_tools/gap_bins/gap_flasher@gapuino8.elf b/utils/openocd_tools/gap_bins/gap_flasher-gapuino8.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_flasher@gapuino8.elf rename to utils/openocd_tools/gap_bins/gap_flasher-gapuino8.elf diff --git a/utils/openocd_tools/gap_bins/gap_flasher@gapuino9.elf b/utils/openocd_tools/gap_bins/gap_flasher-gapuino9.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_flasher@gapuino9.elf rename to utils/openocd_tools/gap_bins/gap_flasher-gapuino9.elf diff --git a/utils/openocd_tools/gap_bins/gap_flasher@vega.elf b/utils/openocd_tools/gap_bins/gap_flasher-vega.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_flasher@vega.elf rename to utils/openocd_tools/gap_bins/gap_flasher-vega.elf diff --git a/utils/openocd_tools/gap_bins/gap_fuser@gapoc_a.elf b/utils/openocd_tools/gap_bins/gap_fuser-gapoc_a.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_fuser@gapoc_a.elf rename to utils/openocd_tools/gap_bins/gap_fuser-gapoc_a.elf diff --git a/utils/openocd_tools/gap_bins/gap_fuser@gapoc_a_qpif.elf b/utils/openocd_tools/gap_bins/gap_fuser-gapoc_a_qpif.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_fuser@gapoc_a_qpif.elf rename to utils/openocd_tools/gap_bins/gap_fuser-gapoc_a_qpif.elf diff --git a/utils/openocd_tools/gap_bins/gap_fuser@gapuino8.elf b/utils/openocd_tools/gap_bins/gap_fuser-gapuino8.elf similarity index 100% rename from utils/openocd_tools/gap_bins/gap_fuser@gapuino8.elf rename to utils/openocd_tools/gap_bins/gap_fuser-gapuino8.elf diff --git a/utils/openocd_tools/tcl/flash_image.tcl b/utils/openocd_tools/tcl/flash_image.tcl index b04676e00..e7a88fae0 100644 --- a/utils/openocd_tools/tcl/flash_image.tcl +++ b/utils/openocd_tools/tcl/flash_image.tcl @@ -199,7 +199,7 @@ proc gap_flasher_ctrl_VEGA {ImageName ImageSize flash_offset sector_size flash_t proc gap_flash_raw {image_name image_size gap_tools_path} { # flash the flasher - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_flasher@gapoc_a.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_flasher-gapoc_a.elf elf sleep 100 # flash the flash image with the flasher gap_flasher_ctrl $image_name $image_size 0 0x40000 0 0x1c000090 @@ -225,7 +225,7 @@ proc gap_flash_raw_hyper {image_name image_size gap_tools_path} { puts "begining flash session (hyperflash)" puts "--------------------------" puts "load flasher to L2 memory" - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_flasher@gapoc_a.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_flasher-gapoc_a.elf elf sleep 2 # flash the flash image with the flasher puts "Instruct flasher to begin flash per se" @@ -259,7 +259,7 @@ proc gap9_flash_raw_hyper {image_name image_size gap_tools_path} { puts "--------------------------" puts "load flasher to L2 memory" # need to pass board name as arg -- TODO: unify command name - load_and_start_binary ${gap_tools_path}/gap_bins/gap_flasher@gapuino9.elf 0x1c010180 + load_and_start_binary ${gap_tools_path}/gap_bins/gap_flasher-gapuino9.elf 0x1c010180 sleep 100 # flash the flash image with the flasher puts "Instruct flasher to begin flash per se" @@ -282,7 +282,7 @@ proc vega_flash_raw_hyper {image_name image_size gap_tools_path} { puts "--------------------------" puts "load flasher to L2 memory" # need to pass board name as arg -- TODO: unify command name - load_and_start_binary ${gap_tools_path}/gap_bins/gap_flasher@vega.elf 0x1c008080 + load_and_start_binary ${gap_tools_path}/gap_bins/gap_flasher-vega.elf 0x1c008080 sleep 2 # flash the flash image with the flasher puts "Instruct flasher to begin flash per se" @@ -299,7 +299,7 @@ proc gap_flash_raw_spi {image_name image_size gap_tools_path} { puts "begining flash session (spiflash)" puts "--------------------------" puts "load flasher to L2 memory" - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_flasher@gapoc_a_qpif.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_flasher-gapoc_a_qpif.elf elf sleep 2 # flash the flash image with the flasher puts "Instruct flasher to begin flash per se" diff --git a/utils/openocd_tools/tcl/fuser.tcl b/utils/openocd_tools/tcl/fuser.tcl index 7b5cbf013..b45b2f1ce 100644 --- a/utils/openocd_tools/tcl/fuser.tcl +++ b/utils/openocd_tools/tcl/fuser.tcl @@ -89,9 +89,9 @@ proc gap_fuse_once {device_struct_ptr_addr i_cmd i_bit_pos i_bit_len i_log_lvl i proc dump_fuse_array {gap_tools_path} { reset - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapuino8.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapuino8.elf elf sleep 100 - puts "${gap_tools_path}/gap_bins/gap_fuser@gapoc_a.elf" + puts "${gap_tools_path}/gap_bins/gap_fuser-gapoc_a.elf" gap_fuse_open 0x1c000190 array set fuse_array { @@ -223,9 +223,9 @@ proc fuse_flash_hyperflash {} { proc fuse_hyperflash_boot {gap_tools_path} { reset - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapuino8.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapuino8.elf elf sleep 100 - puts "${gap_tools_path}/gap_bins/gap_fuser@gapoc_a.elf" + puts "${gap_tools_path}/gap_bins/gap_fuser-gapoc_a.elf" gap_fuse_open 0x1c000190 puts "fuse boot from flash bit" fuse_boot_from_flash @@ -403,7 +403,7 @@ proc fuse_fll_assert_cycles_revb {gap_tools_path} { puts "fuse fll assrt cycles" #-------------------------------------------------------------------------------------# reset - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapuino8.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapuino8.elf elf sleep 100 gap_fuse_open 0x1c000190 puts "fuse fll config on bit" @@ -413,7 +413,7 @@ proc fuse_fll_assert_cycles_revb {gap_tools_path} { gap_fuse_terminate 0x1c000190 #-------------------------------------------------------------------------------------# reset - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapuino8.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapuino8.elf elf sleep 100 gap_fuse_open 0x1c000190 fuse_fll_assert_cycles 0x1c000190 @@ -431,7 +431,7 @@ proc fuse_xtal_assert_cycles_revc {gap_tools_path} { puts "fuse fll assrt cycles" #-------------------------------------------------------------------------------------# reset - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapuino8.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapuino8.elf elf sleep 100 gap_fuse_open 0x1c000190 puts "fuse rev clk wait on bit" @@ -440,7 +440,7 @@ proc fuse_xtal_assert_cycles_revc {gap_tools_path} { gap_fuse_terminate 0x1c000190 #-------------------------------------------------------------------------------------# reset - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapuino8.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapuino8.elf elf sleep 100 gap_fuse_open 0x1c000190 puts "fuse xtal config cycles" @@ -449,7 +449,7 @@ proc fuse_xtal_assert_cycles_revc {gap_tools_path} { gap_fuse_terminate 0x1c000190 #-------------------------------------------------------------------------------------# reset - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapuino8.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapuino8.elf elf sleep 100 puts "fuse xtal oscillator stable check" gap_fuse_open 0x1c000190 @@ -468,7 +468,7 @@ proc fuse_reliable_hyper_boot_revc {gap_tools_path} { puts "fuse all the bits for boot from hyperflash and xtal check for revc" #-------------------------------------------------------------------------------------# reset - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapuino8.elf elf + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapuino8.elf elf sleep 100 gap_fuse_open 0x1c000190 puts "fuse start" diff --git a/utils/openocd_tools/tcl_scripts/fuser.tcl b/utils/openocd_tools/tcl_scripts/fuser.tcl index 1a28a4a83..f9d201e41 100644 --- a/utils/openocd_tools/tcl_scripts/fuser.tcl +++ b/utils/openocd_tools/tcl_scripts/fuser.tcl @@ -163,8 +163,8 @@ proc fuse_flash_hyperflash {} { } proc fuse_hyperflash_boot {gap_tools_path} { - gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser@gapoc_a.elf elf - puts "${gap_tools_path}/gap_bins/gap_fuser@gapoc_a.elf" + gap8_jtag_load_binary_and_start ${gap_tools_path}/gap_bins/gap_fuser-gapoc_a.elf elf + puts "${gap_tools_path}/gap_bins/gap_fuser-gapoc_a.elf" gap_fuse_open 0x1c000190 fuse_boot_from_flash fuse_flash_hyperflash diff --git a/utils/rules/pmsis_rules.mk b/utils/rules/pmsis_rules.mk index ae4d5609f..ce9288edc 100644 --- a/utils/rules/pmsis_rules.mk +++ b/utils/rules/pmsis_rules.mk @@ -151,7 +151,11 @@ endif ifeq '$(CONFIG_BOOT_DEVICE)' 'mram' CONFIG_BOOT_DEVICE_FREQUENCY ?= 25000000 -override config_args += --config-opt=**/runner/boot/device=target/board/devices/mram +ifeq '$(platform)' 'gvsoc' +override config_args += --config-opt=**/runner/boot/device=chip/soc/mram +else +override config_args += --config-opt=**/runner/boot/device=target/chip/soc/mram +endif endif ifdef CONFIG_BOOT_MODE diff --git a/utils/rules/pulp_rules.mk b/utils/rules/pulp_rules.mk index fd89f475a..b7af23603 100644 --- a/utils/rules/pulp_rules.mk +++ b/utils/rules/pulp_rules.mk @@ -219,7 +219,7 @@ $(T_OBJECTS_C) : $(BUILDDIR)/%.o : %.c @mkdir -p $(dir $@) $(CC) $(PULP_CFLAGS) $(TCFLAGS) $< $(INC_PATH) -MD -MF $(basename $@).d -o $@ -$(BUILDDIR)/pulp-os/conf.o: $(GAP_SDK_HOME)/rtos/pulp/pulp-os/kernel/conf.c +$(BUILDDIR)/pulp-os/conf.o: $(GAP_SDK_HOME)/gap8/rtos/pulp/pulp-os/kernel/conf.c @mkdir -p $(dir $@) $(CC) $(PULP_CFLAGS) $(TCFLAGS) $< $(INC_PATH) -MD -MF $(basename $@).d -o $@ diff --git a/utils/rules/vscode/launch.json b/utils/rules/vscode/launch.json index e4ca827d1..e5828cb09 100644 --- a/utils/rules/vscode/launch.json +++ b/utils/rules/vscode/launch.json @@ -31,7 +31,7 @@ }, { "description": "Connection to Openocd", - "text": "target extended-remote :3333", + "text": "target extended-remote @IP_address@:3333", "ignoreFailures": false }, { @@ -80,7 +80,7 @@ }, { "description": "Connection to Openocd", - "text": "target extended-remote :10035", + "text": "target extended-remote @IP_address@:3333", "ignoreFailures": false }, { @@ -103,4 +103,4 @@ } ] -} \ No newline at end of file +} diff --git a/utils/rules/vscode/tasks.json b/utils/rules/vscode/tasks.json index 077fe2b76..cc422572a 100644 --- a/utils/rules/vscode/tasks.json +++ b/utils/rules/vscode/tasks.json @@ -51,7 +51,7 @@ { "label": "openocd", "type": "shell", - "command": "/openocd.exe -f /scripts/tcl/interface/ftdi/olimex-arm-usb-ocd-h.cfg -f /utils/openocd_tools/tcl/gap9revb.tcl", + "command": "@OCD_install_path@ -f @OPENOCD_CABLE_CFG@ -f @TARGET_CFG@", "presentation": { "reveal": "always", "panel": "new"