From f64d44b5631d34346f636d41574615ca575a646c Mon Sep 17 00:00:00 2001 From: jakegoodwin Date: Thu, 2 Feb 2023 15:11:06 -0800 Subject: [PATCH] migrated repo contents from old git server --- Makefile | 21 + arrayMul.cu | 143 +++++ cs475_project5.pdf | Bin 0 -> 127931 bytes data.csv | 24 + data_calc.ods | Bin 0 -> 31203 bytes exception.h | 135 +++++ hardware.txt | 26 + helper_cuda.h | 898 +++++++++++++++++++++++++++++++ helper_functions.h | 43 ++ helper_image.h | 985 +++++++++++++++++++++++++++++++++++ helper_string.h | 683 ++++++++++++++++++++++++ helper_timer.h | 450 ++++++++++++++++ montecarlo | Bin 0 -> 652832 bytes montecarlo.cu | 343 ++++++++++++ performance_vs_blocksize.png | Bin 0 -> 29530 bytes performance_vs_numtrials.png | Bin 0 -> 24118 bytes script.sh | 10 + uptime.txt | 1 + 18 files changed, 3762 insertions(+) create mode 100755 Makefile create mode 100644 arrayMul.cu create mode 100644 cs475_project5.pdf create mode 100644 data.csv create mode 100644 data_calc.ods create mode 100644 exception.h create mode 100644 hardware.txt create mode 100644 helper_cuda.h create mode 100644 helper_functions.h create mode 100644 helper_image.h create mode 100644 helper_string.h create mode 100644 helper_timer.h create mode 100755 montecarlo create mode 100644 montecarlo.cu create mode 100644 performance_vs_blocksize.png create mode 100644 performance_vs_numtrials.png create mode 100644 script.sh create mode 100644 uptime.txt diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..877341c --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +CUDA_PATH = /usr/local/apps/cuda/cuda-10.1 +CUDA_BIN_PATH = $(CUDA_PATH)/bin +CUDA_NVCC = $(CUDA_BIN_PATH)/nvcc + +montecarlo: montecarlo.cu + $(CUDA_NVCC) -o montecarlo montecarlo.cu + + +carlotest: + $(CUDA_NVCC) -o carlotest montecarlo.cu + ./carlotest + rm ./carlotest + +test: + $(CUDA_NVCC) --verbose -o test arrayMul.cu + + +clean: + rm ./montecarlo + rm ./test + rm ./carlotest diff --git a/arrayMul.cu b/arrayMul.cu new file mode 100644 index 0000000..70297fd --- /dev/null +++ b/arrayMul.cu @@ -0,0 +1,143 @@ +// Array multiplication: C = A * B: + +// System includes +#include +#include +#include +#include +#include + +// CUDA runtime +#include + +// Helper functions and utilities to work with CUDA +#include "helper_functions.h" +#include "helper_cuda.h" + + +#ifndef THREADS_PER_BLOCK +#define THREADS_PER_BLOCK 128 // number of threads in each block +#endif + +#ifndef DATASET_SIZE +#define DATASET_SIZE ( 8*1024*1024 ) // size of the array +#endif + +float hA[ DATASET_SIZE ]; +float hB[ DATASET_SIZE ]; +float hC[ DATASET_SIZE ]; + +#ifndef TOL +#define TOL 0.00001f // tolerance to relative error +#endif + +void +CudaCheckError( ) +{ + cudaError_t e = cudaGetLastError( ); + if( e != cudaSuccess ) + { + fprintf( stderr, "CUDA failure %s:%d: '%s'\n", __FILE__, __LINE__, cudaGetErrorString(e)); + } +} + +// array multiplication on the device: C = A * B + +__global__ void ArrayMul( float *A, float *B, float *C ) +{ + int gid = blockIdx.x*blockDim.x + threadIdx.x; + if( gid < DATASET_SIZE ) + C[gid] = A[gid] * B[gid]; +} + + + +// main program: + +int +main( int argc, char* argv[ ] ) +{ + //int dev = findCudaDevice(argc, (const char **)argv); + + // fill host memory: + + for( int i = 0; i < DATASET_SIZE; i++ ) + { + hA[i] = hB[i] = sqrtf( (float)i ); + } + + // allocate device memory: + + float *dA, *dB, *dC; + + cudaMalloc( (void **)(&dA), sizeof(hA) ); + cudaMalloc( (void **)(&dB), sizeof(hB) ); + cudaMalloc( (void **)(&dC), sizeof(hC) ); + CudaCheckError( ); + + // copy host memory to the device: + + cudaMemcpy( dA, hA, DATASET_SIZE*sizeof(float), cudaMemcpyHostToDevice ); + cudaMemcpy( dB, hB, DATASET_SIZE*sizeof(float), cudaMemcpyHostToDevice ); + CudaCheckError( ); + + // setup the execution parameters: + + dim3 grid( DATASET_SIZE / THREADS_PER_BLOCK, 1, 1 ); + dim3 threads( THREADS_PER_BLOCK, 1, 1 ); + + // create and start the timer: + + cudaDeviceSynchronize( ); + + // allocate the events that we'll use for timing: + + cudaEvent_t start, stop; + cudaEventCreate( &start ); + cudaEventCreate( &stop ); + CudaCheckError( ); + + // record the start event: + + cudaEventRecord( start, NULL ); + CudaCheckError( ); + + // execute the kernel: + + ArrayMul<<< grid, threads >>>( dA, dB, dC ); + + // record the stop event: + + cudaEventRecord( stop, NULL ); + CudaCheckError( ); + + // wait for the stop event to complete: + + cudaEventSynchronize( stop ); + CudaCheckError( ); + + float msecTotal; + cudaEventElapsedTime( &msecTotal, start, stop ); + CudaCheckError( ); + + // compute and print the performance + + double secondsTotal = 0.001 * (double)msecTotal; + double multsPerSecond = (double)DATASET_SIZE / secondsTotal; + double megaMultsPerSecond = multsPerSecond / 1000000.; + fprintf( stderr, "%12d, %4d, %10.2lf\n", DATASET_SIZE, THREADS_PER_BLOCK, megaMultsPerSecond ); + + // copy result from the device to the host: + + cudaMemcpy( hC, dC, sizeof(hC), cudaMemcpyDeviceToHost ); + CudaCheckError( ); + + // clean up: + + cudaFree( dA ); + cudaFree( dB ); + cudaFree( dC ); + CudaCheckError( ); + + return 0; +} diff --git a/cs475_project5.pdf b/cs475_project5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..79597d632f7aae6a31dd869a2661f40cdf6c7068 GIT binary patch literal 127931 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%0D?yD`9wc!1ODR+gA>})0htU}g$f;_A z3fDjHLj%f=NIR6ns(t>~=rK#e7wzP_sM#F~ki^D@r|Y@llN}X|Z+9?5yzc69+s%U&lE#o${<)}7{u2glZVBn&5|X!gZK;>{J&ntwk*e$red)7?yS$h zLj0Ila;9^_!AAlD>H{p8|Cwrl3Yb@t7FObaFD@fO`yb8$KwEiKMOt>74zcZuiU|MK zUw_(GJvkr8xi1_JtxW0j5&3c5&9W4F{U}O&A6y|}kI0x_o>t=Qe zmZFFX{K-SB?vi{$c@o3j)gp$p6=jeUVk*IPL0I$_2|L_`m$}$07QQZ`18W?*Q98h& zLj7`0Ue6F*&tN4OA+WoHq)JKT3Ic7xH!8SFf65xN_rgG%+kZ~HK9 zZjGNGrz$xngtPdKXLCM9J8}ocTAtb2594_gVutQqzvVz-j1x_QUk$1Ahgx*V5v)Hq zgp2l(_Z(c2w<#(l)skSoP$(|?tl)L3aF$r*F(XAO+ilyc(%>QXHM)+^-dpK2VX)Ra zcnn(Q^ysBQ9@6;Ms!m$m}oKK*k3{cw_qhwXFJWn8P<0 zu&i1Om_n43d;^RE1dyQv9RDt-Cg8XJ#s12$`IpyU(~iGp+WL_-^QS2R4*yFI&3^*@ znknS(KpcPz{4)^!KY@Og>;J)x`Dr}}e@`>=PtRW!=zr*B{P*8qR;*e=b=66W~_`PrwO(F+>2R;y(bt%|Ju|G9u)^(_Ah@T&&S-)qo7{0qQuYVg-x_)o2zpFt=Gq+j@xa?U@m<5%j>-|qn+ z`M^r6WnO?D&!34xe{V}az5a>f^c$3)#GyZ<{9woYw36ST{GCYj zXQUrgqMx?=8>Ih5Ec!Fp59-ZNBU1d|A^MeQ^#6;a@f)09iAR6N`9VGUX>otR`8S>D z&nSNn_SfH_{GFKeXQaQ!2N=*N{___4m8kS@oWHu(UpX*=}fBOA80{F3h^wW@a{ +#include +#include +#include +#include + +//! Exception wrapper. +//! @param Std_Exception Exception out of namespace std for easy typing. +template +class Exception : public Std_Exception { + public: + //! @brief Static construction interface + //! @return Alwayss throws ( Located_Exception) + //! @param file file in which the Exception occurs + //! @param line line in which the Exception occurs + //! @param detailed details on the code fragment causing the Exception + static void throw_it(const char *file, const int line, + const char *detailed = "-"); + + //! Static construction interface + //! @return Alwayss throws ( Located_Exception) + //! @param file file in which the Exception occurs + //! @param line line in which the Exception occurs + //! @param detailed details on the code fragment causing the Exception + static void throw_it(const char *file, const int line, + const std::string &detailed); + + //! Destructor + virtual ~Exception() throw(); + + private: + //! Constructor, default (private) + Exception(); + + //! Constructor, standard + //! @param str string returned by what() + explicit Exception(const std::string &str); +}; + +//////////////////////////////////////////////////////////////////////////////// +//! Exception handler function for arbitrary exceptions +//! @param ex exception to handle +//////////////////////////////////////////////////////////////////////////////// +template +inline void handleException(const Exception_Typ &ex) { + std::cerr << ex.what() << std::endl; + + exit(EXIT_FAILURE); +} + +//! Convenience macros + +//! Exception caused by dynamic program behavior, e.g. file does not exist +#define RUNTIME_EXCEPTION(msg) \ + Exception::throw_it(__FILE__, __LINE__, msg) + +//! Logic exception in program, e.g. an assert failed +#define LOGIC_EXCEPTION(msg) \ + Exception::throw_it(__FILE__, __LINE__, msg) + +//! Out of range exception +#define RANGE_EXCEPTION(msg) \ + Exception::throw_it(__FILE__, __LINE__, msg) + +//////////////////////////////////////////////////////////////////////////////// +//! Implementation + +// includes, system +#include + +//////////////////////////////////////////////////////////////////////////////// +//! Static construction interface. +//! @param Exception causing code fragment (file and line) and detailed infos. +//////////////////////////////////////////////////////////////////////////////// +/*static*/ template +void Exception::throw_it(const char *file, const int line, + const char *detailed) { + std::stringstream s; + + // Quiet heavy-weight but exceptions are not for + // performance / release versions + s << "Exception in file '" << file << "' in line " << line << "\n" + << "Detailed description: " << detailed << "\n"; + + throw Exception(s.str()); +} + +//////////////////////////////////////////////////////////////////////////////// +//! Static construction interface. +//! @param Exception causing code fragment (file and line) and detailed infos. +//////////////////////////////////////////////////////////////////////////////// +/*static*/ template +void Exception::throw_it(const char *file, const int line, + const std::string &msg) { + throw_it(file, line, msg.c_str()); +} + +//////////////////////////////////////////////////////////////////////////////// +//! Constructor, default (private). +//////////////////////////////////////////////////////////////////////////////// +template +Exception::Exception() : Std_Exception("Unknown Exception.\n") {} + +//////////////////////////////////////////////////////////////////////////////// +//! Constructor, standard (private). +//! String returned by what(). +//////////////////////////////////////////////////////////////////////////////// +template +Exception::Exception(const std::string &s) : Std_Exception(s) {} + +//////////////////////////////////////////////////////////////////////////////// +//! Destructor +//////////////////////////////////////////////////////////////////////////////// +template +Exception::~Exception() throw() {} + + // functions, exported + +#endif // COMMON_EXCEPTION_H_ diff --git a/hardware.txt b/hardware.txt new file mode 100644 index 0000000..a318a59 --- /dev/null +++ b/hardware.txt @@ -0,0 +1,26 @@ +Architecture: x86_64 +CPU op-mode(s): 32-bit, 64-bit +Byte Order: Little Endian +CPU(s): 32 +On-line CPU(s) list: 0-31 +Thread(s) per core: 2 +Core(s) per socket: 8 +Socket(s): 2 +NUMA node(s): 2 +Vendor ID: GenuineIntel +CPU family: 6 +Model: 63 +Model name: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz +Stepping: 2 +CPU MHz: 1258.007 +CPU max MHz: 3200.0000 +CPU min MHz: 1200.0000 +BogoMIPS: 4800.00 +Virtualization: VT-x +L1d cache: 32K +L1i cache: 32K +L2 cache: 256K +L3 cache: 20480K +NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 +NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 +Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida arat pln pts md_clear spec_ctrl intel_stibp flush_l1d diff --git a/helper_cuda.h b/helper_cuda.h new file mode 100644 index 0000000..fbf2973 --- /dev/null +++ b/helper_cuda.h @@ -0,0 +1,898 @@ +/** + * Copyright 1993-2017 NVIDIA Corporation. All rights reserved. + * + * Please refer to the NVIDIA end user license agreement (EULA) associated + * with this source code for terms and conditions that govern your use of + * this software. Any use, reproduction, disclosure, or distribution of + * this software and related documentation outside the terms of the EULA + * is strictly prohibited. + * + */ + +//////////////////////////////////////////////////////////////////////////////// +// These are CUDA Helper functions for initialization and error checking + +#ifndef COMMON_HELPER_CUDA_H_ +#define COMMON_HELPER_CUDA_H_ + +#pragma once + +#include +#include +#include +#include + +#include "helper_string.h" + +#ifndef EXIT_WAIVED +#define EXIT_WAIVED 2 +#endif + +// Note, it is required that your SDK sample to include the proper header +// files, please refer the CUDA examples for examples of the needed CUDA +// headers, which may change depending on which CUDA functions are used. + +// CUDA Runtime error messages +#ifdef __DRIVER_TYPES_H__ +static const char *_cudaGetErrorEnum(cudaError_t error) { + return cudaGetErrorName(error); +} +#endif + +#ifdef CUDA_DRIVER_API +// CUDA Driver API errors +static const char *_cudaGetErrorEnum(CUresult error) { + static char unknown[] = ""; + const char *ret = NULL; + cuGetErrorName(error, &ret); + return ret ? ret : unknown; +} +#endif + +#ifdef CUBLAS_API_H_ +// cuBLAS API errors +static const char *_cudaGetErrorEnum(cublasStatus_t error) { + switch (error) { + case CUBLAS_STATUS_SUCCESS: + return "CUBLAS_STATUS_SUCCESS"; + + case CUBLAS_STATUS_NOT_INITIALIZED: + return "CUBLAS_STATUS_NOT_INITIALIZED"; + + case CUBLAS_STATUS_ALLOC_FAILED: + return "CUBLAS_STATUS_ALLOC_FAILED"; + + case CUBLAS_STATUS_INVALID_VALUE: + return "CUBLAS_STATUS_INVALID_VALUE"; + + case CUBLAS_STATUS_ARCH_MISMATCH: + return "CUBLAS_STATUS_ARCH_MISMATCH"; + + case CUBLAS_STATUS_MAPPING_ERROR: + return "CUBLAS_STATUS_MAPPING_ERROR"; + + case CUBLAS_STATUS_EXECUTION_FAILED: + return "CUBLAS_STATUS_EXECUTION_FAILED"; + + case CUBLAS_STATUS_INTERNAL_ERROR: + return "CUBLAS_STATUS_INTERNAL_ERROR"; + + case CUBLAS_STATUS_NOT_SUPPORTED: + return "CUBLAS_STATUS_NOT_SUPPORTED"; + + case CUBLAS_STATUS_LICENSE_ERROR: + return "CUBLAS_STATUS_LICENSE_ERROR"; + } + + return ""; +} +#endif + +#ifdef _CUFFT_H_ +// cuFFT API errors +static const char *_cudaGetErrorEnum(cufftResult error) { + switch (error) { + case CUFFT_SUCCESS: + return "CUFFT_SUCCESS"; + + case CUFFT_INVALID_PLAN: + return "CUFFT_INVALID_PLAN"; + + case CUFFT_ALLOC_FAILED: + return "CUFFT_ALLOC_FAILED"; + + case CUFFT_INVALID_TYPE: + return "CUFFT_INVALID_TYPE"; + + case CUFFT_INVALID_VALUE: + return "CUFFT_INVALID_VALUE"; + + case CUFFT_INTERNAL_ERROR: + return "CUFFT_INTERNAL_ERROR"; + + case CUFFT_EXEC_FAILED: + return "CUFFT_EXEC_FAILED"; + + case CUFFT_SETUP_FAILED: + return "CUFFT_SETUP_FAILED"; + + case CUFFT_INVALID_SIZE: + return "CUFFT_INVALID_SIZE"; + + case CUFFT_UNALIGNED_DATA: + return "CUFFT_UNALIGNED_DATA"; + + case CUFFT_INCOMPLETE_PARAMETER_LIST: + return "CUFFT_INCOMPLETE_PARAMETER_LIST"; + + case CUFFT_INVALID_DEVICE: + return "CUFFT_INVALID_DEVICE"; + + case CUFFT_PARSE_ERROR: + return "CUFFT_PARSE_ERROR"; + + case CUFFT_NO_WORKSPACE: + return "CUFFT_NO_WORKSPACE"; + + case CUFFT_NOT_IMPLEMENTED: + return "CUFFT_NOT_IMPLEMENTED"; + + case CUFFT_LICENSE_ERROR: + return "CUFFT_LICENSE_ERROR"; + + case CUFFT_NOT_SUPPORTED: + return "CUFFT_NOT_SUPPORTED"; + } + + return ""; +} +#endif + +#ifdef CUSPARSEAPI +// cuSPARSE API errors +static const char *_cudaGetErrorEnum(cusparseStatus_t error) { + switch (error) { + case CUSPARSE_STATUS_SUCCESS: + return "CUSPARSE_STATUS_SUCCESS"; + + case CUSPARSE_STATUS_NOT_INITIALIZED: + return "CUSPARSE_STATUS_NOT_INITIALIZED"; + + case CUSPARSE_STATUS_ALLOC_FAILED: + return "CUSPARSE_STATUS_ALLOC_FAILED"; + + case CUSPARSE_STATUS_INVALID_VALUE: + return "CUSPARSE_STATUS_INVALID_VALUE"; + + case CUSPARSE_STATUS_ARCH_MISMATCH: + return "CUSPARSE_STATUS_ARCH_MISMATCH"; + + case CUSPARSE_STATUS_MAPPING_ERROR: + return "CUSPARSE_STATUS_MAPPING_ERROR"; + + case CUSPARSE_STATUS_EXECUTION_FAILED: + return "CUSPARSE_STATUS_EXECUTION_FAILED"; + + case CUSPARSE_STATUS_INTERNAL_ERROR: + return "CUSPARSE_STATUS_INTERNAL_ERROR"; + + case CUSPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED: + return "CUSPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED"; + } + + return ""; +} +#endif + +#ifdef CUSOLVER_COMMON_H_ +// cuSOLVER API errors +static const char *_cudaGetErrorEnum(cusolverStatus_t error) { + switch (error) { + case CUSOLVER_STATUS_SUCCESS: + return "CUSOLVER_STATUS_SUCCESS"; + case CUSOLVER_STATUS_NOT_INITIALIZED: + return "CUSOLVER_STATUS_NOT_INITIALIZED"; + case CUSOLVER_STATUS_ALLOC_FAILED: + return "CUSOLVER_STATUS_ALLOC_FAILED"; + case CUSOLVER_STATUS_INVALID_VALUE: + return "CUSOLVER_STATUS_INVALID_VALUE"; + case CUSOLVER_STATUS_ARCH_MISMATCH: + return "CUSOLVER_STATUS_ARCH_MISMATCH"; + case CUSOLVER_STATUS_MAPPING_ERROR: + return "CUSOLVER_STATUS_MAPPING_ERROR"; + case CUSOLVER_STATUS_EXECUTION_FAILED: + return "CUSOLVER_STATUS_EXECUTION_FAILED"; + case CUSOLVER_STATUS_INTERNAL_ERROR: + return "CUSOLVER_STATUS_INTERNAL_ERROR"; + case CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED: + return "CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED"; + case CUSOLVER_STATUS_NOT_SUPPORTED: + return "CUSOLVER_STATUS_NOT_SUPPORTED "; + case CUSOLVER_STATUS_ZERO_PIVOT: + return "CUSOLVER_STATUS_ZERO_PIVOT"; + case CUSOLVER_STATUS_INVALID_LICENSE: + return "CUSOLVER_STATUS_INVALID_LICENSE"; + } + + return ""; +} +#endif + +#ifdef CURAND_H_ +// cuRAND API errors +static const char *_cudaGetErrorEnum(curandStatus_t error) { + switch (error) { + case CURAND_STATUS_SUCCESS: + return "CURAND_STATUS_SUCCESS"; + + case CURAND_STATUS_VERSION_MISMATCH: + return "CURAND_STATUS_VERSION_MISMATCH"; + + case CURAND_STATUS_NOT_INITIALIZED: + return "CURAND_STATUS_NOT_INITIALIZED"; + + case CURAND_STATUS_ALLOCATION_FAILED: + return "CURAND_STATUS_ALLOCATION_FAILED"; + + case CURAND_STATUS_TYPE_ERROR: + return "CURAND_STATUS_TYPE_ERROR"; + + case CURAND_STATUS_OUT_OF_RANGE: + return "CURAND_STATUS_OUT_OF_RANGE"; + + case CURAND_STATUS_LENGTH_NOT_MULTIPLE: + return "CURAND_STATUS_LENGTH_NOT_MULTIPLE"; + + case CURAND_STATUS_DOUBLE_PRECISION_REQUIRED: + return "CURAND_STATUS_DOUBLE_PRECISION_REQUIRED"; + + case CURAND_STATUS_LAUNCH_FAILURE: + return "CURAND_STATUS_LAUNCH_FAILURE"; + + case CURAND_STATUS_PREEXISTING_FAILURE: + return "CURAND_STATUS_PREEXISTING_FAILURE"; + + case CURAND_STATUS_INITIALIZATION_FAILED: + return "CURAND_STATUS_INITIALIZATION_FAILED"; + + case CURAND_STATUS_ARCH_MISMATCH: + return "CURAND_STATUS_ARCH_MISMATCH"; + + case CURAND_STATUS_INTERNAL_ERROR: + return "CURAND_STATUS_INTERNAL_ERROR"; + } + + return ""; +} +#endif + +#ifdef NVJPEGAPI +// nvJPEG API errors +static const char *_cudaGetErrorEnum(nvjpegStatus_t error) { + switch (error) { + case NVJPEG_STATUS_SUCCESS: + return "NVJPEG_STATUS_SUCCESS"; + + case NVJPEG_STATUS_NOT_INITIALIZED: + return "NVJPEG_STATUS_NOT_INITIALIZED"; + + case NVJPEG_STATUS_INVALID_PARAMETER: + return "NVJPEG_STATUS_INVALID_PARAMETER"; + + case NVJPEG_STATUS_BAD_JPEG: + return "NVJPEG_STATUS_BAD_JPEG"; + + case NVJPEG_STATUS_JPEG_NOT_SUPPORTED: + return "NVJPEG_STATUS_JPEG_NOT_SUPPORTED"; + + case NVJPEG_STATUS_ALLOCATOR_FAILURE: + return "NVJPEG_STATUS_ALLOCATOR_FAILURE"; + + case NVJPEG_STATUS_EXECUTION_FAILED: + return "NVJPEG_STATUS_EXECUTION_FAILED"; + + case NVJPEG_STATUS_ARCH_MISMATCH: + return "NVJPEG_STATUS_ARCH_MISMATCH"; + + case NVJPEG_STATUS_INTERNAL_ERROR: + return "NVJPEG_STATUS_INTERNAL_ERROR"; + } + + return ""; +} +#endif + +#ifdef NV_NPPIDEFS_H +// NPP API errors +static const char *_cudaGetErrorEnum(NppStatus error) { + switch (error) { + case NPP_NOT_SUPPORTED_MODE_ERROR: + return "NPP_NOT_SUPPORTED_MODE_ERROR"; + + case NPP_ROUND_MODE_NOT_SUPPORTED_ERROR: + return "NPP_ROUND_MODE_NOT_SUPPORTED_ERROR"; + + case NPP_RESIZE_NO_OPERATION_ERROR: + return "NPP_RESIZE_NO_OPERATION_ERROR"; + + case NPP_NOT_SUFFICIENT_COMPUTE_CAPABILITY: + return "NPP_NOT_SUFFICIENT_COMPUTE_CAPABILITY"; + +#if ((NPP_VERSION_MAJOR << 12) + (NPP_VERSION_MINOR << 4)) <= 0x5000 + + case NPP_BAD_ARG_ERROR: + return "NPP_BAD_ARGUMENT_ERROR"; + + case NPP_COEFF_ERROR: + return "NPP_COEFFICIENT_ERROR"; + + case NPP_RECT_ERROR: + return "NPP_RECTANGLE_ERROR"; + + case NPP_QUAD_ERROR: + return "NPP_QUADRANGLE_ERROR"; + + case NPP_MEM_ALLOC_ERR: + return "NPP_MEMORY_ALLOCATION_ERROR"; + + case NPP_HISTO_NUMBER_OF_LEVELS_ERROR: + return "NPP_HISTOGRAM_NUMBER_OF_LEVELS_ERROR"; + + case NPP_INVALID_INPUT: + return "NPP_INVALID_INPUT"; + + case NPP_POINTER_ERROR: + return "NPP_POINTER_ERROR"; + + case NPP_WARNING: + return "NPP_WARNING"; + + case NPP_ODD_ROI_WARNING: + return "NPP_ODD_ROI_WARNING"; +#else + + // These are for CUDA 5.5 or higher + case NPP_BAD_ARGUMENT_ERROR: + return "NPP_BAD_ARGUMENT_ERROR"; + + case NPP_COEFFICIENT_ERROR: + return "NPP_COEFFICIENT_ERROR"; + + case NPP_RECTANGLE_ERROR: + return "NPP_RECTANGLE_ERROR"; + + case NPP_QUADRANGLE_ERROR: + return "NPP_QUADRANGLE_ERROR"; + + case NPP_MEMORY_ALLOCATION_ERR: + return "NPP_MEMORY_ALLOCATION_ERROR"; + + case NPP_HISTOGRAM_NUMBER_OF_LEVELS_ERROR: + return "NPP_HISTOGRAM_NUMBER_OF_LEVELS_ERROR"; + + case NPP_INVALID_HOST_POINTER_ERROR: + return "NPP_INVALID_HOST_POINTER_ERROR"; + + case NPP_INVALID_DEVICE_POINTER_ERROR: + return "NPP_INVALID_DEVICE_POINTER_ERROR"; +#endif + + case NPP_LUT_NUMBER_OF_LEVELS_ERROR: + return "NPP_LUT_NUMBER_OF_LEVELS_ERROR"; + + case NPP_TEXTURE_BIND_ERROR: + return "NPP_TEXTURE_BIND_ERROR"; + + case NPP_WRONG_INTERSECTION_ROI_ERROR: + return "NPP_WRONG_INTERSECTION_ROI_ERROR"; + + case NPP_NOT_EVEN_STEP_ERROR: + return "NPP_NOT_EVEN_STEP_ERROR"; + + case NPP_INTERPOLATION_ERROR: + return "NPP_INTERPOLATION_ERROR"; + + case NPP_RESIZE_FACTOR_ERROR: + return "NPP_RESIZE_FACTOR_ERROR"; + + case NPP_HAAR_CLASSIFIER_PIXEL_MATCH_ERROR: + return "NPP_HAAR_CLASSIFIER_PIXEL_MATCH_ERROR"; + +#if ((NPP_VERSION_MAJOR << 12) + (NPP_VERSION_MINOR << 4)) <= 0x5000 + + case NPP_MEMFREE_ERR: + return "NPP_MEMFREE_ERR"; + + case NPP_MEMSET_ERR: + return "NPP_MEMSET_ERR"; + + case NPP_MEMCPY_ERR: + return "NPP_MEMCPY_ERROR"; + + case NPP_MIRROR_FLIP_ERR: + return "NPP_MIRROR_FLIP_ERR"; +#else + + case NPP_MEMFREE_ERROR: + return "NPP_MEMFREE_ERROR"; + + case NPP_MEMSET_ERROR: + return "NPP_MEMSET_ERROR"; + + case NPP_MEMCPY_ERROR: + return "NPP_MEMCPY_ERROR"; + + case NPP_MIRROR_FLIP_ERROR: + return "NPP_MIRROR_FLIP_ERROR"; +#endif + + case NPP_ALIGNMENT_ERROR: + return "NPP_ALIGNMENT_ERROR"; + + case NPP_STEP_ERROR: + return "NPP_STEP_ERROR"; + + case NPP_SIZE_ERROR: + return "NPP_SIZE_ERROR"; + + case NPP_NULL_POINTER_ERROR: + return "NPP_NULL_POINTER_ERROR"; + + case NPP_CUDA_KERNEL_EXECUTION_ERROR: + return "NPP_CUDA_KERNEL_EXECUTION_ERROR"; + + case NPP_NOT_IMPLEMENTED_ERROR: + return "NPP_NOT_IMPLEMENTED_ERROR"; + + case NPP_ERROR: + return "NPP_ERROR"; + + case NPP_SUCCESS: + return "NPP_SUCCESS"; + + case NPP_WRONG_INTERSECTION_QUAD_WARNING: + return "NPP_WRONG_INTERSECTION_QUAD_WARNING"; + + case NPP_MISALIGNED_DST_ROI_WARNING: + return "NPP_MISALIGNED_DST_ROI_WARNING"; + + case NPP_AFFINE_QUAD_INCORRECT_WARNING: + return "NPP_AFFINE_QUAD_INCORRECT_WARNING"; + + case NPP_DOUBLE_SIZE_WARNING: + return "NPP_DOUBLE_SIZE_WARNING"; + + case NPP_WRONG_INTERSECTION_ROI_WARNING: + return "NPP_WRONG_INTERSECTION_ROI_WARNING"; + +#if ((NPP_VERSION_MAJOR << 12) + (NPP_VERSION_MINOR << 4)) >= 0x6000 + /* These are 6.0 or higher */ + case NPP_LUT_PALETTE_BITSIZE_ERROR: + return "NPP_LUT_PALETTE_BITSIZE_ERROR"; + + case NPP_ZC_MODE_NOT_SUPPORTED_ERROR: + return "NPP_ZC_MODE_NOT_SUPPORTED_ERROR"; + + case NPP_QUALITY_INDEX_ERROR: + return "NPP_QUALITY_INDEX_ERROR"; + + case NPP_CHANNEL_ORDER_ERROR: + return "NPP_CHANNEL_ORDER_ERROR"; + + case NPP_ZERO_MASK_VALUE_ERROR: + return "NPP_ZERO_MASK_VALUE_ERROR"; + + case NPP_NUMBER_OF_CHANNELS_ERROR: + return "NPP_NUMBER_OF_CHANNELS_ERROR"; + + case NPP_COI_ERROR: + return "NPP_COI_ERROR"; + + case NPP_DIVISOR_ERROR: + return "NPP_DIVISOR_ERROR"; + + case NPP_CHANNEL_ERROR: + return "NPP_CHANNEL_ERROR"; + + case NPP_STRIDE_ERROR: + return "NPP_STRIDE_ERROR"; + + case NPP_ANCHOR_ERROR: + return "NPP_ANCHOR_ERROR"; + + case NPP_MASK_SIZE_ERROR: + return "NPP_MASK_SIZE_ERROR"; + + case NPP_MOMENT_00_ZERO_ERROR: + return "NPP_MOMENT_00_ZERO_ERROR"; + + case NPP_THRESHOLD_NEGATIVE_LEVEL_ERROR: + return "NPP_THRESHOLD_NEGATIVE_LEVEL_ERROR"; + + case NPP_THRESHOLD_ERROR: + return "NPP_THRESHOLD_ERROR"; + + case NPP_CONTEXT_MATCH_ERROR: + return "NPP_CONTEXT_MATCH_ERROR"; + + case NPP_FFT_FLAG_ERROR: + return "NPP_FFT_FLAG_ERROR"; + + case NPP_FFT_ORDER_ERROR: + return "NPP_FFT_ORDER_ERROR"; + + case NPP_SCALE_RANGE_ERROR: + return "NPP_SCALE_RANGE_ERROR"; + + case NPP_DATA_TYPE_ERROR: + return "NPP_DATA_TYPE_ERROR"; + + case NPP_OUT_OFF_RANGE_ERROR: + return "NPP_OUT_OFF_RANGE_ERROR"; + + case NPP_DIVIDE_BY_ZERO_ERROR: + return "NPP_DIVIDE_BY_ZERO_ERROR"; + + case NPP_RANGE_ERROR: + return "NPP_RANGE_ERROR"; + + case NPP_NO_MEMORY_ERROR: + return "NPP_NO_MEMORY_ERROR"; + + case NPP_ERROR_RESERVED: + return "NPP_ERROR_RESERVED"; + + case NPP_NO_OPERATION_WARNING: + return "NPP_NO_OPERATION_WARNING"; + + case NPP_DIVIDE_BY_ZERO_WARNING: + return "NPP_DIVIDE_BY_ZERO_WARNING"; +#endif + +#if ((NPP_VERSION_MAJOR << 12) + (NPP_VERSION_MINOR << 4)) >= 0x7000 + /* These are 7.0 or higher */ + case NPP_OVERFLOW_ERROR: + return "NPP_OVERFLOW_ERROR"; + + case NPP_CORRUPTED_DATA_ERROR: + return "NPP_CORRUPTED_DATA_ERROR"; +#endif + } + + return ""; +} +#endif + +#ifdef __DRIVER_TYPES_H__ +#ifndef DEVICE_RESET +#define DEVICE_RESET cudaDeviceReset(); +#endif +#else +#ifndef DEVICE_RESET +#define DEVICE_RESET +#endif +#endif + +template +void check(T result, char const *const func, const char *const file, + int const line) { + if (result) { + fprintf(stderr, "CUDA error at %s:%d code=%d(%s) \"%s\" \n", file, line, + static_cast(result), _cudaGetErrorEnum(result), func); + DEVICE_RESET + // Make sure we call CUDA Device Reset before exiting + exit(EXIT_FAILURE); + } +} + +#ifdef __DRIVER_TYPES_H__ +// This will output the proper CUDA error strings in the event +// that a CUDA host call returns an error +#define checkCudaErrors(val) check((val), #val, __FILE__, __LINE__) + +// This will output the proper error string when calling cudaGetLastError +#define getLastCudaError(msg) __getLastCudaError(msg, __FILE__, __LINE__) + +inline void __getLastCudaError(const char *errorMessage, const char *file, + const int line) { + cudaError_t err = cudaGetLastError(); + + if (cudaSuccess != err) { + fprintf(stderr, + "%s(%i) : getLastCudaError() CUDA error :" + " %s : (%d) %s.\n", + file, line, errorMessage, static_cast(err), + cudaGetErrorString(err)); + DEVICE_RESET + exit(EXIT_FAILURE); + } +} + +// This will only print the proper error string when calling cudaGetLastError +// but not exit program incase error detected. +#define printLastCudaError(msg) __printLastCudaError(msg, __FILE__, __LINE__) + +inline void __printLastCudaError(const char *errorMessage, const char *file, + const int line) { + cudaError_t err = cudaGetLastError(); + + if (cudaSuccess != err) { + fprintf(stderr, + "%s(%i) : getLastCudaError() CUDA error :" + " %s : (%d) %s.\n", + file, line, errorMessage, static_cast(err), + cudaGetErrorString(err)); + } +} +#endif + +#ifndef MAX +#define MAX(a, b) (a > b ? a : b) +#endif + +// Float To Int conversion +inline int ftoi(float value) { + return (value >= 0 ? static_cast(value + 0.5) + : static_cast(value - 0.5)); +} + +// Beginning of GPU Architecture definitions +inline int _ConvertSMVer2Cores(int major, int minor) { + // Defines for GPU Architecture types (using the SM version to determine + // the # of cores per SM + typedef struct { + int SM; // 0xMm (hexidecimal notation), M = SM Major version, + // and m = SM minor version + int Cores; + } sSMtoCores; + + sSMtoCores nGpuArchCoresPerSM[] = { + {0x30, 192}, + {0x32, 192}, + {0x35, 192}, + {0x37, 192}, + {0x50, 128}, + {0x52, 128}, + {0x53, 128}, + {0x60, 64}, + {0x61, 128}, + {0x62, 128}, + {0x70, 64}, + {0x72, 64}, + {0x75, 64}, + {-1, -1}}; + + int index = 0; + + while (nGpuArchCoresPerSM[index].SM != -1) { + if (nGpuArchCoresPerSM[index].SM == ((major << 4) + minor)) { + return nGpuArchCoresPerSM[index].Cores; + } + + index++; + } + + // If we don't find the values, we default use the previous one + // to run properly + printf( + "MapSMtoCores for SM %d.%d is undefined." + " Default to use %d Cores/SM\n", + major, minor, nGpuArchCoresPerSM[index - 1].Cores); + return nGpuArchCoresPerSM[index - 1].Cores; +} + // end of GPU Architecture definitions + +#ifdef __CUDA_RUNTIME_H__ +// General GPU Device CUDA Initialization +inline int gpuDeviceInit(int devID) { + int device_count; + checkCudaErrors(cudaGetDeviceCount(&device_count)); + + if (device_count == 0) { + fprintf(stderr, + "gpuDeviceInit() CUDA error: " + "no devices supporting CUDA.\n"); + exit(EXIT_FAILURE); + } + + if (devID < 0) { + devID = 0; + } + + if (devID > device_count - 1) { + fprintf(stderr, "\n"); + fprintf(stderr, ">> %d CUDA capable GPU device(s) detected. <<\n", + device_count); + fprintf(stderr, + ">> gpuDeviceInit (-device=%d) is not a valid" + " GPU device. <<\n", + devID); + fprintf(stderr, "\n"); + return -devID; + } + + cudaDeviceProp deviceProp; + checkCudaErrors(cudaGetDeviceProperties(&deviceProp, devID)); + + if (deviceProp.computeMode == cudaComputeModeProhibited) { + fprintf(stderr, + "Error: device is running in , no threads can use cudaSetDevice().\n"); + return -1; + } + + if (deviceProp.major < 1) { + fprintf(stderr, "gpuDeviceInit(): GPU device does not support CUDA.\n"); + exit(EXIT_FAILURE); + } + + checkCudaErrors(cudaSetDevice(devID)); + printf("gpuDeviceInit() CUDA Device [%d]: \"%s\n", devID, deviceProp.name); + + return devID; +} + +// This function returns the best GPU (with maximum GFLOPS) +inline int gpuGetMaxGflopsDeviceId() { + int current_device = 0, sm_per_multiproc = 0; + int max_perf_device = 0; + int device_count = 0; + int devices_prohibited = 0; + + uint64_t max_compute_perf = 0; + cudaDeviceProp deviceProp; + checkCudaErrors(cudaGetDeviceCount(&device_count)); + + if (device_count == 0) { + fprintf(stderr, + "gpuGetMaxGflopsDeviceId() CUDA error:" + " no devices supporting CUDA.\n"); + exit(EXIT_FAILURE); + } + + // Find the best CUDA capable GPU device + current_device = 0; + + while (current_device < device_count) { + cudaGetDeviceProperties(&deviceProp, current_device); + + // If this GPU is not running on Compute Mode prohibited, + // then we can add it to the list + if (deviceProp.computeMode != cudaComputeModeProhibited) { + if (deviceProp.major == 9999 && deviceProp.minor == 9999) { + sm_per_multiproc = 1; + } else { + sm_per_multiproc = + _ConvertSMVer2Cores(deviceProp.major, deviceProp.minor); + } + + uint64_t compute_perf = (uint64_t)deviceProp.multiProcessorCount * + sm_per_multiproc * deviceProp.clockRate; + + if (compute_perf > max_compute_perf) { + max_compute_perf = compute_perf; + max_perf_device = current_device; + } + } else { + devices_prohibited++; + } + + ++current_device; + } + + if (devices_prohibited == device_count) { + fprintf(stderr, + "gpuGetMaxGflopsDeviceId() CUDA error:" + " all devices have compute mode prohibited.\n"); + exit(EXIT_FAILURE); + } + + return max_perf_device; +} + +// Initialization code to find the best CUDA Device +inline int findCudaDevice(int argc, const char **argv) { + cudaDeviceProp deviceProp; + int devID = 0; + + // If the command-line has a device number specified, use it + if (checkCmdLineFlag(argc, argv, "device")) { + devID = getCmdLineArgumentInt(argc, argv, "device="); + + if (devID < 0) { + printf("Invalid command line parameter\n "); + exit(EXIT_FAILURE); + } else { + devID = gpuDeviceInit(devID); + + if (devID < 0) { + printf("exiting...\n"); + exit(EXIT_FAILURE); + } + } + } else { + // Otherwise pick the device with highest Gflops/s + devID = gpuGetMaxGflopsDeviceId(); + checkCudaErrors(cudaSetDevice(devID)); + checkCudaErrors(cudaGetDeviceProperties(&deviceProp, devID)); + printf("GPU Device %d: \"%s\" with compute capability %d.%d\n\n", devID, + deviceProp.name, deviceProp.major, deviceProp.minor); + } + + return devID; +} + +inline int findIntegratedGPU() { + int current_device = 0; + int device_count = 0; + int devices_prohibited = 0; + + cudaDeviceProp deviceProp; + checkCudaErrors(cudaGetDeviceCount(&device_count)); + + if (device_count == 0) { + fprintf(stderr, "CUDA error: no devices supporting CUDA.\n"); + exit(EXIT_FAILURE); + } + + // Find the integrated GPU which is compute capable + while (current_device < device_count) { + cudaGetDeviceProperties(&deviceProp, current_device); + + // If GPU is integrated and is not running on Compute Mode prohibited, + // then cuda can map to GLES resource + if (deviceProp.integrated && + (deviceProp.computeMode != cudaComputeModeProhibited)) { + checkCudaErrors(cudaSetDevice(current_device)); + checkCudaErrors(cudaGetDeviceProperties(&deviceProp, current_device)); + printf("GPU Device %d: \"%s\" with compute capability %d.%d\n\n", + current_device, deviceProp.name, deviceProp.major, + deviceProp.minor); + + return current_device; + } else { + devices_prohibited++; + } + + current_device++; + } + + if (devices_prohibited == device_count) { + fprintf(stderr, + "CUDA error:" + " No GLES-CUDA Interop capable GPU found.\n"); + exit(EXIT_FAILURE); + } + + return -1; +} + +// General check for CUDA GPU SM Capabilities +inline bool checkCudaCapabilities(int major_version, int minor_version) { + cudaDeviceProp deviceProp; + deviceProp.major = 0; + deviceProp.minor = 0; + int dev; + + checkCudaErrors(cudaGetDevice(&dev)); + checkCudaErrors(cudaGetDeviceProperties(&deviceProp, dev)); + + if ((deviceProp.major > major_version) || + (deviceProp.major == major_version && + deviceProp.minor >= minor_version)) { + printf(" Device %d: <%16s >, Compute SM %d.%d detected\n", dev, + deviceProp.name, deviceProp.major, deviceProp.minor); + return true; + } else { + printf( + " No GPU device was found that can support " + "CUDA compute capability %d.%d.\n", + major_version, minor_version); + return false; + } +} +#endif + + // end of CUDA Helper Functions + +#endif // COMMON_HELPER_CUDA_H_ diff --git a/helper_functions.h b/helper_functions.h new file mode 100644 index 0000000..4883b2d --- /dev/null +++ b/helper_functions.h @@ -0,0 +1,43 @@ +/** + * Copyright 1993-2013 NVIDIA Corporation. All rights reserved. + * + * Please refer to the NVIDIA end user license agreement (EULA) associated + * with this source code for terms and conditions that govern your use of + * this software. Any use, reproduction, disclosure, or distribution of + * this software and related documentation outside the terms of the EULA + * is strictly prohibited. + * + */ + +// These are helper functions for the SDK samples (string parsing, +// timers, image helpers, etc) +#ifndef COMMON_HELPER_FUNCTIONS_H_ +#define COMMON_HELPER_FUNCTIONS_H_ + +#ifdef WIN32 +#pragma warning(disable : 4996) +#endif + +// includes, project +#include +#include "exception.h" +#include +#include +#include + +#include +#include +#include +#include +#include + +// includes, timer, string parsing, image helpers +#include "helper_image.h" // helper functions for image compare, dump, data comparisons +#include "helper_string.h" // helper functions for string parsing +#include "helper_timer.h" // helper functions for timers + +#ifndef EXIT_WAIVED +#define EXIT_WAIVED 2 +#endif + +#endif // COMMON_HELPER_FUNCTIONS_H_ diff --git a/helper_image.h b/helper_image.h new file mode 100644 index 0000000..0164835 --- /dev/null +++ b/helper_image.h @@ -0,0 +1,985 @@ +/** + * Copyright 1993-2013 NVIDIA Corporation. All rights reserved. + * + * Please refer to the NVIDIA end user license agreement (EULA) associated + * with this source code for terms and conditions that govern your use of + * this software. Any use, reproduction, disclosure, or distribution of + * this software and related documentation outside the terms of the EULA + * is strictly prohibited. + * + */ + +// These are helper functions for the SDK samples (image,bitmap) +#ifndef COMMON_HELPER_IMAGE_H_ +#define COMMON_HELPER_IMAGE_H_ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#ifndef MIN +#define MIN(a, b) ((a < b) ? a : b) +#endif +#ifndef MAX +#define MAX(a, b) ((a > b) ? a : b) +#endif + +#ifndef EXIT_WAIVED +#define EXIT_WAIVED 2 +#endif + +#include "exception.h" +#include "helper_string.h" + +// namespace unnamed (internal) +namespace helper_image_internal { +//! size of PGM file header +const unsigned int PGMHeaderSize = 0x40; + +// types + +//! Data converter from unsigned char / unsigned byte to type T +template +struct ConverterFromUByte; + +//! Data converter from unsigned char / unsigned byte +template <> +struct ConverterFromUByte { + //! Conversion operator + //! @return converted value + //! @param val value to convert + float operator()(const unsigned char &val) { + return static_cast(val); + } +}; + +//! Data converter from unsigned char / unsigned byte to float +template <> +struct ConverterFromUByte { + //! Conversion operator + //! @return converted value + //! @param val value to convert + float operator()(const unsigned char &val) { + return static_cast(val) / 255.0f; + } +}; + +//! Data converter from unsigned char / unsigned byte to type T +template +struct ConverterToUByte; + +//! Data converter from unsigned char / unsigned byte to unsigned int +template <> +struct ConverterToUByte { + //! Conversion operator (essentially a passthru + //! @return converted value + //! @param val value to convert + unsigned char operator()(const unsigned char &val) { return val; } +}; + +//! Data converter from unsigned char / unsigned byte to unsigned int +template <> +struct ConverterToUByte { + //! Conversion operator + //! @return converted value + //! @param val value to convert + unsigned char operator()(const float &val) { + return static_cast(val * 255.0f); + } +}; +} // namespace helper_image_internal + +#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) +#ifndef FOPEN +#define FOPEN(fHandle, filename, mode) fopen_s(&fHandle, filename, mode) +#endif +#ifndef FOPEN_FAIL +#define FOPEN_FAIL(result) (result != 0) +#endif +#ifndef SSCANF +#define SSCANF sscanf_s +#endif +#else +#ifndef FOPEN +#define FOPEN(fHandle, filename, mode) (fHandle = fopen(filename, mode)) +#endif +#ifndef FOPEN_FAIL +#define FOPEN_FAIL(result) (result == NULL) +#endif +#ifndef SSCANF +#define SSCANF sscanf +#endif +#endif + +inline bool __loadPPM(const char *file, unsigned char **data, unsigned int *w, + unsigned int *h, unsigned int *channels) { + FILE *fp = NULL; + + if (FOPEN_FAIL(FOPEN(fp, file, "rb"))) { + std::cerr << "__LoadPPM() : Failed to open file: " << file << std::endl; + return false; + } + + // check header + char header[helper_image_internal::PGMHeaderSize]; + + if (fgets(header, helper_image_internal::PGMHeaderSize, fp) == NULL) { + std::cerr << "__LoadPPM() : reading PGM header returned NULL" << std::endl; + return false; + } + + if (strncmp(header, "P5", 2) == 0) { + *channels = 1; + } else if (strncmp(header, "P6", 2) == 0) { + *channels = 3; + } else { + std::cerr << "__LoadPPM() : File is not a PPM or PGM image" << std::endl; + *channels = 0; + return false; + } + + // parse header, read maxval, width and height + unsigned int width = 0; + unsigned int height = 0; + unsigned int maxval = 0; + unsigned int i = 0; + + while (i < 3) { + if (fgets(header, helper_image_internal::PGMHeaderSize, fp) == NULL) { + std::cerr << "__LoadPPM() : reading PGM header returned NULL" + << std::endl; + return false; + } + + if (header[0] == '#') { + continue; + } + + if (i == 0) { + i += SSCANF(header, "%u %u %u", &width, &height, &maxval); + } else if (i == 1) { + i += SSCANF(header, "%u %u", &height, &maxval); + } else if (i == 2) { + i += SSCANF(header, "%u", &maxval); + } + } + + // check if given handle for the data is initialized + if (NULL != *data) { + if (*w != width || *h != height) { + std::cerr << "__LoadPPM() : Invalid image dimensions." << std::endl; + } + } else { + *data = (unsigned char *)malloc(sizeof(unsigned char) * width * height * + *channels); + *w = width; + *h = height; + } + + // read and close file + if (fread(*data, sizeof(unsigned char), width * height * *channels, fp) == + 0) { + std::cerr << "__LoadPPM() read data returned error." << std::endl; + } + + fclose(fp); + + return true; +} + +template +inline bool sdkLoadPGM(const char *file, T **data, unsigned int *w, + unsigned int *h) { + unsigned char *idata = NULL; + unsigned int channels; + + if (true != __loadPPM(file, &idata, w, h, &channels)) { + return false; + } + + unsigned int size = *w * *h * channels; + + // initialize mem if necessary + // the correct size is checked / set in loadPGMc() + if (NULL == *data) { + *data = reinterpret_cast(malloc(sizeof(T) * size)); + } + + // copy and cast data + std::transform(idata, idata + size, *data, + helper_image_internal::ConverterFromUByte()); + + free(idata); + + return true; +} + +template +inline bool sdkLoadPPM4(const char *file, T **data, unsigned int *w, + unsigned int *h) { + unsigned char *idata = 0; + unsigned int channels; + + if (__loadPPM(file, &idata, w, h, &channels)) { + // pad 4th component + int size = *w * *h; + // keep the original pointer + unsigned char *idata_orig = idata; + *data = reinterpret_cast(malloc(sizeof(T) * size * 4)); + unsigned char *ptr = *data; + + for (int i = 0; i < size; i++) { + *ptr++ = *idata++; + *ptr++ = *idata++; + *ptr++ = *idata++; + *ptr++ = 0; + } + + free(idata_orig); + return true; + } else { + free(idata); + return false; + } +} + +inline bool __savePPM(const char *file, unsigned char *data, unsigned int w, + unsigned int h, unsigned int channels) { + assert(NULL != data); + assert(w > 0); + assert(h > 0); + + std::fstream fh(file, std::fstream::out | std::fstream::binary); + + if (fh.bad()) { + std::cerr << "__savePPM() : Opening file failed." << std::endl; + return false; + } + + if (channels == 1) { + fh << "P5\n"; + } else if (channels == 3) { + fh << "P6\n"; + } else { + std::cerr << "__savePPM() : Invalid number of channels." << std::endl; + return false; + } + + fh << w << "\n" << h << "\n" << 0xff << std::endl; + + for (unsigned int i = 0; (i < (w * h * channels)) && fh.good(); ++i) { + fh << data[i]; + } + + fh.flush(); + + if (fh.bad()) { + std::cerr << "__savePPM() : Writing data failed." << std::endl; + return false; + } + + fh.close(); + + return true; +} + +template +inline bool sdkSavePGM(const char *file, T *data, unsigned int w, + unsigned int h) { + unsigned int size = w * h; + unsigned char *idata = (unsigned char *)malloc(sizeof(unsigned char) * size); + + std::transform(data, data + size, idata, + helper_image_internal::ConverterToUByte()); + + // write file + bool result = __savePPM(file, idata, w, h, 1); + + // cleanup + free(idata); + + return result; +} + +inline bool sdkSavePPM4ub(const char *file, unsigned char *data, unsigned int w, + unsigned int h) { + // strip 4th component + int size = w * h; + unsigned char *ndata = + (unsigned char *)malloc(sizeof(unsigned char) * size * 3); + unsigned char *ptr = ndata; + + for (int i = 0; i < size; i++) { + *ptr++ = *data++; + *ptr++ = *data++; + *ptr++ = *data++; + data++; + } + + bool result = __savePPM(file, ndata, w, h, 3); + free(ndata); + return result; +} + +////////////////////////////////////////////////////////////////////////////// +//! Read file \filename and return the data +//! @return bool if reading the file succeeded, otherwise false +//! @param filename name of the source file +//! @param data uninitialized pointer, returned initialized and pointing to +//! the data read +//! @param len number of data elements in data, -1 on error +////////////////////////////////////////////////////////////////////////////// +template +inline bool sdkReadFile(const char *filename, T **data, unsigned int *len, + bool verbose) { + // check input arguments + assert(NULL != filename); + assert(NULL != len); + + // intermediate storage for the data read + std::vector data_read; + + // open file for reading + FILE *fh = NULL; + + // check if filestream is valid + if (FOPEN_FAIL(FOPEN(fh, filename, "r"))) { + printf("Unable to open input file: %s\n", filename); + return false; + } + + // read all data elements + T token; + + while (!feof(fh)) { + fscanf(fh, "%f", &token); + data_read.push_back(token); + } + + // the last element is read twice + data_read.pop_back(); + fclose(fh); + + // check if the given handle is already initialized + if (NULL != *data) { + if (*len != data_read.size()) { + std::cerr << "sdkReadFile() : Initialized memory given but " + << "size mismatch with signal read " + << "(data read / data init = " << (unsigned int)data_read.size() + << " / " << *len << ")" << std::endl; + + return false; + } + } else { + // allocate storage for the data read + *data = reinterpret_cast(malloc(sizeof(T) * data_read.size())); + // store signal size + *len = static_cast(data_read.size()); + } + + // copy data + memcpy(*data, &data_read.front(), sizeof(T) * data_read.size()); + + return true; +} + +////////////////////////////////////////////////////////////////////////////// +//! Read file \filename and return the data +//! @return bool if reading the file succeeded, otherwise false +//! @param filename name of the source file +//! @param data uninitialized pointer, returned initialized and pointing to +//! the data read +//! @param len number of data elements in data, -1 on error +////////////////////////////////////////////////////////////////////////////// +template +inline bool sdkReadFileBlocks(const char *filename, T **data, unsigned int *len, + unsigned int block_num, unsigned int block_size, + bool verbose) { + // check input arguments + assert(NULL != filename); + assert(NULL != len); + + // open file for reading + FILE *fh = fopen(filename, "rb"); + + if (fh == NULL && verbose) { + std::cerr << "sdkReadFile() : Opening file failed." << std::endl; + return false; + } + + // check if the given handle is already initialized + // allocate storage for the data read + data[block_num] = reinterpret_cast(malloc(block_size)); + + // read all data elements + fseek(fh, block_num * block_size, SEEK_SET); + *len = fread(data[block_num], sizeof(T), block_size / sizeof(T), fh); + + fclose(fh); + + return true; +} + +////////////////////////////////////////////////////////////////////////////// +//! Write a data file \filename +//! @return true if writing the file succeeded, otherwise false +//! @param filename name of the source file +//! @param data data to write +//! @param len number of data elements in data, -1 on error +//! @param epsilon epsilon for comparison +////////////////////////////////////////////////////////////////////////////// +template +inline bool sdkWriteFile(const char *filename, const T *data, unsigned int len, + const S epsilon, bool verbose, bool append = false) { + assert(NULL != filename); + assert(NULL != data); + + // open file for writing + // if (append) { + std::fstream fh(filename, std::fstream::out | std::fstream::ate); + + if (verbose) { + std::cerr << "sdkWriteFile() : Open file " << filename + << " for write/append." << std::endl; + } + + /* } else { + std::fstream fh(filename, std::fstream::out); + if (verbose) { + std::cerr << "sdkWriteFile() : Open file " << filename << " for + write." << std::endl; + } + } + */ + + // check if filestream is valid + if (!fh.good()) { + if (verbose) { + std::cerr << "sdkWriteFile() : Opening file failed." << std::endl; + } + + return false; + } + + // first write epsilon + fh << "# " << epsilon << "\n"; + + // write data + for (unsigned int i = 0; (i < len) && (fh.good()); ++i) { + fh << data[i] << ' '; + } + + // Check if writing succeeded + if (!fh.good()) { + if (verbose) { + std::cerr << "sdkWriteFile() : Writing file failed." << std::endl; + } + + return false; + } + + // file ends with nl + fh << std::endl; + + return true; +} + +////////////////////////////////////////////////////////////////////////////// +//! Compare two arrays of arbitrary type +//! @return true if \a reference and \a data are identical, otherwise false +//! @param reference timer_interface to the reference data / gold image +//! @param data handle to the computed data +//! @param len number of elements in reference and data +//! @param epsilon epsilon to use for the comparison +////////////////////////////////////////////////////////////////////////////// +template +inline bool compareData(const T *reference, const T *data, + const unsigned int len, const S epsilon, + const float threshold) { + assert(epsilon >= 0); + + bool result = true; + unsigned int error_count = 0; + + for (unsigned int i = 0; i < len; ++i) { + float diff = static_cast(reference[i]) - static_cast(data[i]); + bool comp = (diff <= epsilon) && (diff >= -epsilon); + result &= comp; + + error_count += !comp; + +#if 0 + + if (!comp) { + std::cerr << "ERROR, i = " << i << ",\t " + << reference[i] << " / " + << data[i] + << " (reference / data)\n"; + } + +#endif + } + + if (threshold == 0.0f) { + return (result) ? true : false; + } else { + if (error_count) { + printf("%4.2f(%%) of bytes mismatched (count=%d)\n", + static_cast(error_count) * 100 / static_cast(len), + error_count); + } + + return (len * threshold > error_count) ? true : false; + } +} + +#ifndef __MIN_EPSILON_ERROR +#define __MIN_EPSILON_ERROR 1e-3f +#endif + +////////////////////////////////////////////////////////////////////////////// +//! Compare two arrays of arbitrary type +//! @return true if \a reference and \a data are identical, otherwise false +//! @param reference handle to the reference data / gold image +//! @param data handle to the computed data +//! @param len number of elements in reference and data +//! @param epsilon epsilon to use for the comparison +//! @param epsilon threshold % of (# of bytes) for pass/fail +////////////////////////////////////////////////////////////////////////////// +template +inline bool compareDataAsFloatThreshold(const T *reference, const T *data, + const unsigned int len, const S epsilon, + const float threshold) { + assert(epsilon >= 0); + + // If we set epsilon to be 0, let's set a minimum threshold + float max_error = MAX((float)epsilon, __MIN_EPSILON_ERROR); + int error_count = 0; + bool result = true; + + for (unsigned int i = 0; i < len; ++i) { + float diff = + fabs(static_cast(reference[i]) - static_cast(data[i])); + bool comp = (diff < max_error); + result &= comp; + + if (!comp) { + error_count++; + } + } + + if (threshold == 0.0f) { + if (error_count) { + printf("total # of errors = %d\n", error_count); + } + + return (error_count == 0) ? true : false; + } else { + if (error_count) { + printf("%4.2f(%%) of bytes mismatched (count=%d)\n", + static_cast(error_count) * 100 / static_cast(len), + error_count); + } + + return ((len * threshold > error_count) ? true : false); + } +} + +inline void sdkDumpBin(void *data, unsigned int bytes, const char *filename) { + printf("sdkDumpBin: <%s>\n", filename); + FILE *fp; + FOPEN(fp, filename, "wb"); + fwrite(data, bytes, 1, fp); + fflush(fp); + fclose(fp); +} + +inline bool sdkCompareBin2BinUint(const char *src_file, const char *ref_file, + unsigned int nelements, const float epsilon, + const float threshold, char *exec_path) { + unsigned int *src_buffer, *ref_buffer; + FILE *src_fp = NULL, *ref_fp = NULL; + + uint64_t error_count = 0; + size_t fsize = 0; + + if (FOPEN_FAIL(FOPEN(src_fp, src_file, "rb"))) { + printf("compareBin2Bin unable to open src_file: %s\n", + src_file); + error_count++; + } + + char *ref_file_path = sdkFindFilePath(ref_file, exec_path); + + if (ref_file_path == NULL) { + printf("compareBin2Bin unable to find <%s> in <%s>\n", + ref_file, exec_path); + printf(">>> Check info.xml and [project//data] folder <%s> <<<\n", + ref_file); + printf("Aborting comparison!\n"); + printf(" FAILED\n"); + error_count++; + + if (src_fp) { + fclose(src_fp); + } + + if (ref_fp) { + fclose(ref_fp); + } + } else { + if (FOPEN_FAIL(FOPEN(ref_fp, ref_file_path, "rb"))) { + printf( + "compareBin2Bin " + " unable to open ref_file: %s\n", + ref_file_path); + error_count++; + } + + if (src_fp && ref_fp) { + src_buffer = (unsigned int *)malloc(nelements * sizeof(unsigned int)); + ref_buffer = (unsigned int *)malloc(nelements * sizeof(unsigned int)); + + fsize = fread(src_buffer, nelements, sizeof(unsigned int), src_fp); + fsize = fread(ref_buffer, nelements, sizeof(unsigned int), ref_fp); + + printf( + "> compareBin2Bin nelements=%d," + " epsilon=%4.2f, threshold=%4.2f\n", + nelements, epsilon, threshold); + printf(" src_file <%s>, size=%d bytes\n", src_file, + static_cast(fsize)); + printf(" ref_file <%s>, size=%d bytes\n", ref_file_path, + static_cast(fsize)); + + if (!compareData(ref_buffer, src_buffer, nelements, + epsilon, threshold)) { + error_count++; + } + + fclose(src_fp); + fclose(ref_fp); + + free(src_buffer); + free(ref_buffer); + } else { + if (src_fp) { + fclose(src_fp); + } + + if (ref_fp) { + fclose(ref_fp); + } + } + } + + if (error_count == 0) { + printf(" OK\n"); + } else { + printf(" FAILURE: %d errors...\n", (unsigned int)error_count); + } + + return (error_count == 0); // returns true if all pixels pass +} + +inline bool sdkCompareBin2BinFloat(const char *src_file, const char *ref_file, + unsigned int nelements, const float epsilon, + const float threshold, char *exec_path) { + float *src_buffer = NULL, *ref_buffer = NULL; + FILE *src_fp = NULL, *ref_fp = NULL; + size_t fsize = 0; + + uint64_t error_count = 0; + + if (FOPEN_FAIL(FOPEN(src_fp, src_file, "rb"))) { + printf("compareBin2Bin unable to open src_file: %s\n", src_file); + error_count = 1; + } + + char *ref_file_path = sdkFindFilePath(ref_file, exec_path); + + if (ref_file_path == NULL) { + printf("compareBin2Bin unable to find <%s> in <%s>\n", ref_file, + exec_path); + printf(">>> Check info.xml and [project//data] folder <%s> <<<\n", + exec_path); + printf("Aborting comparison!\n"); + printf(" FAILED\n"); + error_count++; + + if (src_fp) { + fclose(src_fp); + } + + if (ref_fp) { + fclose(ref_fp); + } + } else { + if (FOPEN_FAIL(FOPEN(ref_fp, ref_file_path, "rb"))) { + printf("compareBin2Bin unable to open ref_file: %s\n", + ref_file_path); + error_count = 1; + } + + if (src_fp && ref_fp) { + src_buffer = reinterpret_cast(malloc(nelements * sizeof(float))); + ref_buffer = reinterpret_cast(malloc(nelements * sizeof(float))); + + printf( + "> compareBin2Bin nelements=%d, epsilon=%4.2f," + " threshold=%4.2f\n", + nelements, epsilon, threshold); + fsize = fread(src_buffer, sizeof(float), nelements, src_fp); + printf(" src_file <%s>, size=%d bytes\n", src_file, + static_cast(fsize * sizeof(float))); + fsize = fread(ref_buffer, sizeof(float), nelements, ref_fp); + printf(" ref_file <%s>, size=%d bytes\n", ref_file_path, + static_cast(fsize * sizeof(float))); + + if (!compareDataAsFloatThreshold( + ref_buffer, src_buffer, nelements, epsilon, threshold)) { + error_count++; + } + + fclose(src_fp); + fclose(ref_fp); + + free(src_buffer); + free(ref_buffer); + } else { + if (src_fp) { + fclose(src_fp); + } + + if (ref_fp) { + fclose(ref_fp); + } + } + } + + if (error_count == 0) { + printf(" OK\n"); + } else { + printf(" FAILURE: %d errors...\n", (unsigned int)error_count); + } + + return (error_count == 0); // returns true if all pixels pass +} + +inline bool sdkCompareL2fe(const float *reference, const float *data, + const unsigned int len, const float epsilon) { + assert(epsilon >= 0); + + float error = 0; + float ref = 0; + + for (unsigned int i = 0; i < len; ++i) { + float diff = reference[i] - data[i]; + error += diff * diff; + ref += reference[i] * reference[i]; + } + + float normRef = sqrtf(ref); + + if (fabs(ref) < 1e-7) { +#ifdef _DEBUG + std::cerr << "ERROR, reference l2-norm is 0\n"; +#endif + return false; + } + + float normError = sqrtf(error); + error = normError / normRef; + bool result = error < epsilon; +#ifdef _DEBUG + + if (!result) { + std::cerr << "ERROR, l2-norm error " << error << " is greater than epsilon " + << epsilon << "\n"; + } + +#endif + + return result; +} + +inline bool sdkLoadPPMub(const char *file, unsigned char **data, + unsigned int *w, unsigned int *h) { + unsigned int channels; + return __loadPPM(file, data, w, h, &channels); +} + +inline bool sdkLoadPPM4ub(const char *file, unsigned char **data, + unsigned int *w, unsigned int *h) { + unsigned char *idata = 0; + unsigned int channels; + + if (__loadPPM(file, &idata, w, h, &channels)) { + // pad 4th component + int size = *w * *h; + // keep the original pointer + unsigned char *idata_orig = idata; + *data = (unsigned char *)malloc(sizeof(unsigned char) * size * 4); + unsigned char *ptr = *data; + + for (int i = 0; i < size; i++) { + *ptr++ = *idata++; + *ptr++ = *idata++; + *ptr++ = *idata++; + *ptr++ = 0; + } + + free(idata_orig); + return true; + } else { + free(idata); + return false; + } +} + +inline bool sdkComparePPM(const char *src_file, const char *ref_file, + const float epsilon, const float threshold, + bool verboseErrors) { + unsigned char *src_data, *ref_data; + uint64_t error_count = 0; + unsigned int ref_width, ref_height; + unsigned int src_width, src_height; + + if (src_file == NULL || ref_file == NULL) { + if (verboseErrors) { + std::cerr << "PPMvsPPM: src_file or ref_file is NULL." + " Aborting comparison\n"; + } + + return false; + } + + if (verboseErrors) { + std::cerr << "> Compare (a)rendered: <" << src_file << ">\n"; + std::cerr << "> (b)reference: <" << ref_file << ">\n"; + } + + if (sdkLoadPPM4ub(ref_file, &ref_data, &ref_width, &ref_height) != true) { + if (verboseErrors) { + std::cerr << "PPMvsPPM: unable to load ref image file: " << ref_file + << "\n"; + } + + return false; + } + + if (sdkLoadPPM4ub(src_file, &src_data, &src_width, &src_height) != true) { + std::cerr << "PPMvsPPM: unable to load src image file: " << src_file + << "\n"; + return false; + } + + if (src_height != ref_height || src_width != ref_width) { + if (verboseErrors) { + std::cerr << "PPMvsPPM: source and ref size mismatch (" << src_width + << "," << src_height << ")vs(" << ref_width << "," << ref_height + << ")\n"; + } + } + + if (verboseErrors) { + std::cerr << "PPMvsPPM: comparing images size (" << src_width << "," + << src_height << ") epsilon(" << epsilon << "), threshold(" + << threshold * 100 << "%)\n"; + } + + if (compareData(ref_data, src_data, src_width * src_height * 4, epsilon, + threshold) == false) { + error_count = 1; + } + + if (error_count == 0) { + if (verboseErrors) { + std::cerr << " OK\n\n"; + } + } else { + if (verboseErrors) { + std::cerr << " FAILURE! " << error_count << " errors...\n\n"; + } + } + + // returns true if all pixels pass + return (error_count == 0) ? true : false; +} + +inline bool sdkComparePGM(const char *src_file, const char *ref_file, + const float epsilon, const float threshold, + bool verboseErrors) { + unsigned char *src_data = 0, *ref_data = 0; + uint64_t error_count = 0; + unsigned int ref_width, ref_height; + unsigned int src_width, src_height; + + if (src_file == NULL || ref_file == NULL) { + if (verboseErrors) { + std::cerr << "PGMvsPGM: src_file or ref_file is NULL." + " Aborting comparison\n"; + } + + return false; + } + + if (verboseErrors) { + std::cerr << "> Compare (a)rendered: <" << src_file << ">\n"; + std::cerr << "> (b)reference: <" << ref_file << ">\n"; + } + + if (sdkLoadPPMub(ref_file, &ref_data, &ref_width, &ref_height) != true) { + if (verboseErrors) { + std::cerr << "PGMvsPGM: unable to load ref image file: " << ref_file + << "\n"; + } + + return false; + } + + if (sdkLoadPPMub(src_file, &src_data, &src_width, &src_height) != true) { + std::cerr << "PGMvsPGM: unable to load src image file: " << src_file + << "\n"; + return false; + } + + if (src_height != ref_height || src_width != ref_width) { + if (verboseErrors) { + std::cerr << "PGMvsPGM: source and ref size mismatch (" << src_width + << "," << src_height << ")vs(" << ref_width << "," << ref_height + << ")\n"; + } + } + + if (verboseErrors) + std::cerr << "PGMvsPGM: comparing images size (" << src_width << "," + << src_height << ") epsilon(" << epsilon << "), threshold(" + << threshold * 100 << "%)\n"; + + if (compareData(ref_data, src_data, src_width * src_height, epsilon, + threshold) == false) { + error_count = 1; + } + + if (error_count == 0) { + if (verboseErrors) { + std::cerr << " OK\n\n"; + } + } else { + if (verboseErrors) { + std::cerr << " FAILURE! " << error_count << " errors...\n\n"; + } + } + + // returns true if all pixels pass + return (error_count == 0) ? true : false; +} + +#endif // COMMON_HELPER_IMAGE_H_ diff --git a/helper_string.h b/helper_string.h new file mode 100644 index 0000000..6d6da58 --- /dev/null +++ b/helper_string.h @@ -0,0 +1,683 @@ +/** + * Copyright 1993-2013 NVIDIA Corporation. All rights reserved. + * + * Please refer to the NVIDIA end user license agreement (EULA) associated + * with this source code for terms and conditions that govern your use of + * this software. Any use, reproduction, disclosure, or distribution of + * this software and related documentation outside the terms of the EULA + * is strictly prohibited. + * + */ + +// These are helper functions for the SDK samples (string parsing, timers, etc) +#ifndef COMMON_HELPER_STRING_H_ +#define COMMON_HELPER_STRING_H_ + +#include +#include +#include +#include + +#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#ifndef STRCASECMP +#define STRCASECMP _stricmp +#endif +#ifndef STRNCASECMP +#define STRNCASECMP _strnicmp +#endif +#ifndef STRCPY +#define STRCPY(sFilePath, nLength, sPath) strcpy_s(sFilePath, nLength, sPath) +#endif + +#ifndef FOPEN +#define FOPEN(fHandle, filename, mode) fopen_s(&fHandle, filename, mode) +#endif +#ifndef FOPEN_FAIL +#define FOPEN_FAIL(result) (result != 0) +#endif +#ifndef SSCANF +#define SSCANF sscanf_s +#endif +#ifndef SPRINTF +#define SPRINTF sprintf_s +#endif +#else // Linux Includes +#include +#include + +#ifndef STRCASECMP +#define STRCASECMP strcasecmp +#endif +#ifndef STRNCASECMP +#define STRNCASECMP strncasecmp +#endif +#ifndef STRCPY +#define STRCPY(sFilePath, nLength, sPath) strcpy(sFilePath, sPath) +#endif + +#ifndef FOPEN +#define FOPEN(fHandle, filename, mode) (fHandle = fopen(filename, mode)) +#endif +#ifndef FOPEN_FAIL +#define FOPEN_FAIL(result) (result == NULL) +#endif +#ifndef SSCANF +#define SSCANF sscanf +#endif +#ifndef SPRINTF +#define SPRINTF sprintf +#endif +#endif + +#ifndef EXIT_WAIVED +#define EXIT_WAIVED 2 +#endif + +// CUDA Utility Helper Functions +inline int stringRemoveDelimiter(char delimiter, const char *string) { + int string_start = 0; + + while (string[string_start] == delimiter) { + string_start++; + } + + if (string_start >= static_cast(strlen(string) - 1)) { + return 0; + } + + return string_start; +} + +inline int getFileExtension(char *filename, char **extension) { + int string_length = static_cast(strlen(filename)); + + while (filename[string_length--] != '.') { + if (string_length == 0) break; + } + + if (string_length > 0) string_length += 2; + + if (string_length == 0) + *extension = NULL; + else + *extension = &filename[string_length]; + + return string_length; +} + +inline bool checkCmdLineFlag(const int argc, const char **argv, + const char *string_ref) { + bool bFound = false; + + if (argc >= 1) { + for (int i = 1; i < argc; i++) { + int string_start = stringRemoveDelimiter('-', argv[i]); + const char *string_argv = &argv[i][string_start]; + + const char *equal_pos = strchr(string_argv, '='); + int argv_length = static_cast( + equal_pos == 0 ? strlen(string_argv) : equal_pos - string_argv); + + int length = static_cast(strlen(string_ref)); + + if (length == argv_length && + !STRNCASECMP(string_argv, string_ref, length)) { + bFound = true; + continue; + } + } + } + + return bFound; +} + +// This function wraps the CUDA Driver API into a template function +template +inline bool getCmdLineArgumentValue(const int argc, const char **argv, + const char *string_ref, T *value) { + bool bFound = false; + + if (argc >= 1) { + for (int i = 1; i < argc; i++) { + int string_start = stringRemoveDelimiter('-', argv[i]); + const char *string_argv = &argv[i][string_start]; + int length = static_cast(strlen(string_ref)); + + if (!STRNCASECMP(string_argv, string_ref, length)) { + if (length + 1 <= static_cast(strlen(string_argv))) { + int auto_inc = (string_argv[length] == '=') ? 1 : 0; + *value = (T)atoi(&string_argv[length + auto_inc]); + } + + bFound = true; + i = argc; + } + } + } + + return bFound; +} + +inline int getCmdLineArgumentInt(const int argc, const char **argv, + const char *string_ref) { + bool bFound = false; + int value = -1; + + if (argc >= 1) { + for (int i = 1; i < argc; i++) { + int string_start = stringRemoveDelimiter('-', argv[i]); + const char *string_argv = &argv[i][string_start]; + int length = static_cast(strlen(string_ref)); + + if (!STRNCASECMP(string_argv, string_ref, length)) { + if (length + 1 <= static_cast(strlen(string_argv))) { + int auto_inc = (string_argv[length] == '=') ? 1 : 0; + value = atoi(&string_argv[length + auto_inc]); + } else { + value = 0; + } + + bFound = true; + continue; + } + } + } + + if (bFound) { + return value; + } else { + return 0; + } +} + +inline float getCmdLineArgumentFloat(const int argc, const char **argv, + const char *string_ref) { + bool bFound = false; + float value = -1; + + if (argc >= 1) { + for (int i = 1; i < argc; i++) { + int string_start = stringRemoveDelimiter('-', argv[i]); + const char *string_argv = &argv[i][string_start]; + int length = static_cast(strlen(string_ref)); + + if (!STRNCASECMP(string_argv, string_ref, length)) { + if (length + 1 <= static_cast(strlen(string_argv))) { + int auto_inc = (string_argv[length] == '=') ? 1 : 0; + value = static_cast(atof(&string_argv[length + auto_inc])); + } else { + value = 0.f; + } + + bFound = true; + continue; + } + } + } + + if (bFound) { + return value; + } else { + return 0; + } +} + +inline bool getCmdLineArgumentString(const int argc, const char **argv, + const char *string_ref, + char **string_retval) { + bool bFound = false; + + if (argc >= 1) { + for (int i = 1; i < argc; i++) { + int string_start = stringRemoveDelimiter('-', argv[i]); + char *string_argv = const_cast(&argv[i][string_start]); + int length = static_cast(strlen(string_ref)); + + if (!STRNCASECMP(string_argv, string_ref, length)) { + *string_retval = &string_argv[length + 1]; + bFound = true; + continue; + } + } + } + + if (!bFound) { + *string_retval = NULL; + } + + return bFound; +} + +////////////////////////////////////////////////////////////////////////////// +//! Find the path for a file assuming that +//! files are found in the searchPath. +//! +//! @return the path if succeeded, otherwise 0 +//! @param filename name of the file +//! @param executable_path optional absolute path of the executable +////////////////////////////////////////////////////////////////////////////// +inline char *sdkFindFilePath(const char *filename, + const char *executable_path) { + // defines a variable that is replaced with the name of the + // executable + + // Typical relative search paths to locate needed companion files (e.g. sample + // input data, or JIT source files) The origin for the relative search may be + // the .exe file, a .bat file launching an .exe, a browser .exe launching the + // .exe or .bat, etc + const char *searchPath[] = { + "./", // same dir + "./_data_files/", + "./common/", // "/common/" subdir + "./common/data/", // "/common/data/" subdir + "./data/", // "/data/" subdir + "./src/", // "/src/" subdir + "./src//data/", // "/src//data/" subdir + "./inc/", // "/inc/" subdir + "./0_Simple/", // "/0_Simple/" subdir + "./1_Utilities/", // "/1_Utilities/" subdir + "./2_Graphics/", // "/2_Graphics/" subdir + "./3_Imaging/", // "/3_Imaging/" subdir + "./4_Finance/", // "/4_Finance/" subdir + "./5_Simulations/", // "/5_Simulations/" subdir + "./6_Advanced/", // "/6_Advanced/" subdir + "./7_CUDALibraries/", // "/7_CUDALibraries/" subdir + "./8_Android/", // "/8_Android/" subdir + "./samples/", // "/samples/" subdir + + "./0_Simple//data/", // "/0_Simple//data/" + // subdir + "./1_Utilities//data/", // "/1_Utilities//data/" + // subdir + "./2_Graphics//data/", // "/2_Graphics//data/" + // subdir + "./3_Imaging//data/", // "/3_Imaging//data/" + // subdir + "./4_Finance//data/", // "/4_Finance//data/" + // subdir + "./5_Simulations//data/", // "/5_Simulations//data/" + // subdir + "./6_Advanced//data/", // "/6_Advanced//data/" + // subdir + "./7_CUDALibraries//", // "/7_CUDALibraries//" + // subdir + "./7_CUDALibraries//data/", // "/7_CUDALibraries//data/" + // subdir + + "../", // up 1 in tree + "../common/", // up 1 in tree, "/common/" subdir + "../common/data/", // up 1 in tree, "/common/data/" subdir + "../data/", // up 1 in tree, "/data/" subdir + "../src/", // up 1 in tree, "/src/" subdir + "../inc/", // up 1 in tree, "/inc/" subdir + + "../0_Simple//data/", // up 1 in tree, + // "/0_Simple//" + // subdir + "../1_Utilities//data/", // up 1 in tree, + // "/1_Utilities//" + // subdir + "../2_Graphics//data/", // up 1 in tree, + // "/2_Graphics//" + // subdir + "../3_Imaging//data/", // up 1 in tree, + // "/3_Imaging//" + // subdir + "../4_Finance//data/", // up 1 in tree, + // "/4_Finance//" + // subdir + "../5_Simulations//data/", // up 1 in tree, + // "/5_Simulations//" + // subdir + "../6_Advanced//data/", // up 1 in tree, + // "/6_Advanced//" + // subdir + "../7_CUDALibraries//data/", // up 1 in tree, + // "/7_CUDALibraries//" + // subdir + "../8_Android//data/", // up 1 in tree, + // "/8_Android//" + // subdir + "../samples//data/", // up 1 in tree, + // "/samples//" + // subdir + "../../", // up 2 in tree + "../../common/", // up 2 in tree, "/common/" subdir + "../../common/data/", // up 2 in tree, "/common/data/" subdir + "../../data/", // up 2 in tree, "/data/" subdir + "../../src/", // up 2 in tree, "/src/" subdir + "../../inc/", // up 2 in tree, "/inc/" subdir + "../../sandbox//data/", // up 2 in tree, + // "/sandbox//" + // subdir + "../../0_Simple//data/", // up 2 in tree, + // "/0_Simple//" + // subdir + "../../1_Utilities//data/", // up 2 in tree, + // "/1_Utilities//" + // subdir + "../../2_Graphics//data/", // up 2 in tree, + // "/2_Graphics//" + // subdir + "../../3_Imaging//data/", // up 2 in tree, + // "/3_Imaging//" + // subdir + "../../4_Finance//data/", // up 2 in tree, + // "/4_Finance//" + // subdir + "../../5_Simulations//data/", // up 2 in tree, + // "/5_Simulations//" + // subdir + "../../6_Advanced//data/", // up 2 in tree, + // "/6_Advanced//" + // subdir + "../../7_CUDALibraries//data/", // up 2 in tree, + // "/7_CUDALibraries//" + // subdir + "../../8_Android//data/", // up 2 in tree, + // "/8_Android//" + // subdir + "../../samples//data/", // up 2 in tree, + // "/samples//" + // subdir + "../../../", // up 3 in tree + "../../../src//", // up 3 in tree, + // "/src//" subdir + "../../../src//data/", // up 3 in tree, + // "/src//data/" + // subdir + "../../../src//src/", // up 3 in tree, + // "/src//src/" + // subdir + "../../../src//inc/", // up 3 in tree, + // "/src//inc/" + // subdir + "../../../sandbox//", // up 3 in tree, + // "/sandbox//" + // subdir + "../../../sandbox//data/", // up 3 in tree, + // "/sandbox//data/" + // subdir + "../../../sandbox//src/", // up 3 in tree, + // "/sandbox//src/" + // subdir + "../../../sandbox//inc/", // up 3 in tree, + // "/sandbox//inc/" + // subdir + "../../../0_Simple//data/", // up 3 in tree, + // "/0_Simple//" + // subdir + "../../../1_Utilities//data/", // up 3 in tree, + // "/1_Utilities//" + // subdir + "../../../2_Graphics//data/", // up 3 in tree, + // "/2_Graphics//" + // subdir + "../../../3_Imaging//data/", // up 3 in tree, + // "/3_Imaging//" + // subdir + "../../../4_Finance//data/", // up 3 in tree, + // "/4_Finance//" + // subdir + "../../../5_Simulations//data/", // up 3 in tree, + // "/5_Simulations//" + // subdir + "../../../6_Advanced//data/", // up 3 in tree, + // "/6_Advanced//" + // subdir + "../../../7_CUDALibraries//data/", // up 3 in tree, + // "/7_CUDALibraries//" + // subdir + "../../../8_Android//data/", // up 3 in tree, + // "/8_Android//" + // subdir + "../../../0_Simple//", // up 3 in tree, + // "/0_Simple//" + // subdir + "../../../1_Utilities//", // up 3 in tree, + // "/1_Utilities//" + // subdir + "../../../2_Graphics//", // up 3 in tree, + // "/2_Graphics//" + // subdir + "../../../3_Imaging//", // up 3 in tree, + // "/3_Imaging//" + // subdir + "../../../4_Finance//", // up 3 in tree, + // "/4_Finance//" + // subdir + "../../../5_Simulations//", // up 3 in tree, + // "/5_Simulations//" + // subdir + "../../../6_Advanced//", // up 3 in tree, + // "/6_Advanced//" + // subdir + "../../../7_CUDALibraries//", // up 3 in tree, + // "/7_CUDALibraries//" + // subdir + "../../../8_Android//", // up 3 in tree, + // "/8_Android//" + // subdir + "../../../samples//data/", // up 3 in tree, + // "/samples//" + // subdir + "../../../common/", // up 3 in tree, "../../../common/" subdir + "../../../common/data/", // up 3 in tree, "../../../common/data/" subdir + "../../../data/", // up 3 in tree, "../../../data/" subdir + "../../../../", // up 4 in tree + "../../../../src//", // up 4 in tree, + // "/src//" subdir + "../../../../src//data/", // up 4 in tree, + // "/src//data/" + // subdir + "../../../../src//src/", // up 4 in tree, + // "/src//src/" + // subdir + "../../../../src//inc/", // up 4 in tree, + // "/src//inc/" + // subdir + "../../../../sandbox//", // up 4 in tree, + // "/sandbox//" + // subdir + "../../../../sandbox//data/", // up 4 in tree, + // "/sandbox//data/" + // subdir + "../../../../sandbox//src/", // up 4 in tree, + // "/sandbox//src/" + // subdir + "../../../../sandbox//inc/", // up 4 in tree, + // "/sandbox//inc/" + // subdir + "../../../../0_Simple//data/", // up 4 in tree, + // "/0_Simple//" + // subdir + "../../../../1_Utilities//data/", // up 4 in tree, + // "/1_Utilities//" + // subdir + "../../../../2_Graphics//data/", // up 4 in tree, + // "/2_Graphics//" + // subdir + "../../../../3_Imaging//data/", // up 4 in tree, + // "/3_Imaging//" + // subdir + "../../../../4_Finance//data/", // up 4 in tree, + // "/4_Finance//" + // subdir + "../../../../5_Simulations//data/", // up 4 in tree, + // "/5_Simulations//" + // subdir + "../../../../6_Advanced//data/", // up 4 in tree, + // "/6_Advanced//" + // subdir + "../../../../7_CUDALibraries//data/", // up 4 in tree, + // "/7_CUDALibraries//" + // subdir + "../../../../8_Android//data/", // up 4 in tree, + // "/8_Android//" + // subdir + "../../../../0_Simple//", // up 4 in tree, + // "/0_Simple//" + // subdir + "../../../../1_Utilities//", // up 4 in tree, + // "/1_Utilities//" + // subdir + "../../../../2_Graphics//", // up 4 in tree, + // "/2_Graphics//" + // subdir + "../../../../3_Imaging//", // up 4 in tree, + // "/3_Imaging//" + // subdir + "../../../../4_Finance//", // up 4 in tree, + // "/4_Finance//" + // subdir + "../../../../5_Simulations//", // up 4 in tree, + // "/5_Simulations//" + // subdir + "../../../../6_Advanced//", // up 4 in tree, + // "/6_Advanced//" + // subdir + "../../../../7_CUDALibraries//", // up 4 in tree, + // "/7_CUDALibraries//" + // subdir + "../../../../8_Android//", // up 4 in tree, + // "/8_Android//" + // subdir + "../../../../samples//data/", // up 4 in tree, + // "/samples//" + // subdir + "../../../../common/", // up 4 in tree, "../../../common/" subdir + "../../../../common/data/", // up 4 in tree, "../../../common/data/" + // subdir + "../../../../data/", // up 4 in tree, "../../../data/" subdir + "../../../../../", // up 5 in tree + "../../../../../src//", // up 5 in tree, + // "/src//" + // subdir + "../../../../../src//data/", // up 5 in tree, + // "/src//data/" + // subdir + "../../../../../src//src/", // up 5 in tree, + // "/src//src/" + // subdir + "../../../../../src//inc/", // up 5 in tree, + // "/src//inc/" + // subdir + "../../../../../sandbox//", // up 5 in tree, + // "/sandbox//" + // subdir + "../../../../../sandbox//data/", // up 5 in tree, + // "/sandbox//data/" + // subdir + "../../../../../sandbox//src/", // up 5 in tree, + // "/sandbox//src/" + // subdir + "../../../../../sandbox//inc/", // up 5 in tree, + // "/sandbox//inc/" + // subdir + "../../../../../0_Simple//data/", // up 5 in tree, + // "/0_Simple//" + // subdir + "../../../../../1_Utilities//data/", // up 5 in tree, + // "/1_Utilities//" + // subdir + "../../../../../2_Graphics//data/", // up 5 in tree, + // "/2_Graphics//" + // subdir + "../../../../../3_Imaging//data/", // up 5 in tree, + // "/3_Imaging//" + // subdir + "../../../../../4_Finance//data/", // up 5 in tree, + // "/4_Finance//" + // subdir + "../../../../../5_Simulations//data/", // up 5 in tree, + // "/5_Simulations//" + // subdir + "../../../../../6_Advanced//data/", // up 5 in tree, + // "/6_Advanced//" + // subdir + "../../../../../7_CUDALibraries//data/", // up 5 in + // tree, + // "/7_CUDALibraries//" + // subdir + "../../../../../8_Android//data/", // up 5 in tree, + // "/8_Android//" + // subdir + "../../../../../samples//data/", // up 5 in tree, + // "/samples//" + // subdir + "../../../../../common/", // up 5 in tree, "../../../common/" subdir + "../../../../../common/data/", // up 5 in tree, "../../../common/data/" + // subdir + }; + + // Extract the executable name + std::string executable_name; + + if (executable_path != 0) { + executable_name = std::string(executable_path); + +#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) + // Windows path delimiter + size_t delimiter_pos = executable_name.find_last_of('\\'); + executable_name.erase(0, delimiter_pos + 1); + + if (executable_name.rfind(".exe") != std::string::npos) { + // we strip .exe, only if the .exe is found + executable_name.resize(executable_name.size() - 4); + } + +#else + // Linux & OSX path delimiter + size_t delimiter_pos = executable_name.find_last_of('/'); + executable_name.erase(0, delimiter_pos + 1); +#endif + } + + // Loop over all search paths and return the first hit + for (unsigned int i = 0; i < sizeof(searchPath) / sizeof(char *); ++i) { + std::string path(searchPath[i]); + size_t executable_name_pos = path.find(""); + + // If there is executable_name variable in the searchPath + // replace it with the value + if (executable_name_pos != std::string::npos) { + if (executable_path != 0) { + path.replace(executable_name_pos, strlen(""), + executable_name); + } else { + // Skip this path entry if no executable argument is given + continue; + } + } + +#ifdef _DEBUG + printf("sdkFindFilePath <%s> in %s\n", filename, path.c_str()); +#endif + + // Test if the file exists + path.append(filename); + FILE *fp; + FOPEN(fp, path.c_str(), "rb"); + + if (fp != NULL) { + fclose(fp); + // File found + // returning an allocated array here for backwards compatibility reasons + char *file_path = reinterpret_cast(malloc(path.length() + 1)); + STRCPY(file_path, path.length() + 1, path.c_str()); + return file_path; + } + + if (fp) { + fclose(fp); + } + } + + // File not found + return 0; +} + +#endif // COMMON_HELPER_STRING_H_ diff --git a/helper_timer.h b/helper_timer.h new file mode 100644 index 0000000..ad0eff5 --- /dev/null +++ b/helper_timer.h @@ -0,0 +1,450 @@ +/** + * Copyright 1993-2013 NVIDIA Corporation. All rights reserved. + * + * Please refer to the NVIDIA end user license agreement (EULA) associated + * with this source code for terms and conditions that govern your use of + * this software. Any use, reproduction, disclosure, or distribution of + * this software and related documentation outside the terms of the EULA + * is strictly prohibited. + * + */ + +// Helper Timing Functions +#ifndef COMMON_HELPER_TIMER_H_ +#define COMMON_HELPER_TIMER_H_ + +#ifndef EXIT_WAIVED +#define EXIT_WAIVED 2 +#endif + +// includes, system +#include + +// includes, project +#include "exception.h" + +// Definition of the StopWatch Interface, this is used if we don't want to use +// the CUT functions But rather in a self contained class interface +class StopWatchInterface { + public: + StopWatchInterface() {} + virtual ~StopWatchInterface() {} + + public: + //! Start time measurement + virtual void start() = 0; + + //! Stop time measurement + virtual void stop() = 0; + + //! Reset time counters to zero + virtual void reset() = 0; + + //! Time in msec. after start. If the stop watch is still running (i.e. there + //! was no call to stop()) then the elapsed time is returned, otherwise the + //! time between the last start() and stop call is returned + virtual float getTime() = 0; + + //! Mean time to date based on the number of times the stopwatch has been + //! _stopped_ (ie finished sessions) and the current total time + virtual float getAverageTime() = 0; +}; + +////////////////////////////////////////////////////////////////// +// Begin Stopwatch timer class definitions for all OS platforms // +////////////////////////////////////////////////////////////////// +#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) +// includes, system +#define WINDOWS_LEAN_AND_MEAN +#include +#undef min +#undef max + +//! Windows specific implementation of StopWatch +class StopWatchWin : public StopWatchInterface { + public: + //! Constructor, default + StopWatchWin() + : start_time(), + end_time(), + diff_time(0.0f), + total_time(0.0f), + running(false), + clock_sessions(0), + freq(0), + freq_set(false) { + if (!freq_set) { + // helper variable + LARGE_INTEGER temp; + + // get the tick frequency from the OS + QueryPerformanceFrequency(reinterpret_cast(&temp)); + + // convert to type in which it is needed + freq = (static_cast(temp.QuadPart)) / 1000.0; + + // rememeber query + freq_set = true; + } + } + + // Destructor + ~StopWatchWin() {} + + public: + //! Start time measurement + inline void start(); + + //! Stop time measurement + inline void stop(); + + //! Reset time counters to zero + inline void reset(); + + //! Time in msec. after start. If the stop watch is still running (i.e. there + //! was no call to stop()) then the elapsed time is returned, otherwise the + //! time between the last start() and stop call is returned + inline float getTime(); + + //! Mean time to date based on the number of times the stopwatch has been + //! _stopped_ (ie finished sessions) and the current total time + inline float getAverageTime(); + + private: + // member variables + + //! Start of measurement + LARGE_INTEGER start_time; + //! End of measurement + LARGE_INTEGER end_time; + + //! Time difference between the last start and stop + float diff_time; + + //! TOTAL time difference between starts and stops + float total_time; + + //! flag if the stop watch is running + bool running; + + //! Number of times clock has been started + //! and stopped to allow averaging + int clock_sessions; + + //! tick frequency + double freq; + + //! flag if the frequency has been set + bool freq_set; +}; + +// functions, inlined + +//////////////////////////////////////////////////////////////////////////////// +//! Start time measurement +//////////////////////////////////////////////////////////////////////////////// +inline void StopWatchWin::start() { + QueryPerformanceCounter(reinterpret_cast(&start_time)); + running = true; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Stop time measurement and increment add to the current diff_time summation +//! variable. Also increment the number of times this clock has been run. +//////////////////////////////////////////////////////////////////////////////// +inline void StopWatchWin::stop() { + QueryPerformanceCounter(reinterpret_cast(&end_time)); + diff_time = static_cast(((static_cast(end_time.QuadPart) - + static_cast(start_time.QuadPart)) / + freq)); + + total_time += diff_time; + clock_sessions++; + running = false; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Reset the timer to 0. Does not change the timer running state but does +//! recapture this point in time as the current start time if it is running. +//////////////////////////////////////////////////////////////////////////////// +inline void StopWatchWin::reset() { + diff_time = 0; + total_time = 0; + clock_sessions = 0; + + if (running) { + QueryPerformanceCounter(reinterpret_cast(&start_time)); + } +} + +//////////////////////////////////////////////////////////////////////////////// +//! Time in msec. after start. If the stop watch is still running (i.e. there +//! was no call to stop()) then the elapsed time is returned added to the +//! current diff_time sum, otherwise the current summed time difference alone +//! is returned. +//////////////////////////////////////////////////////////////////////////////// +inline float StopWatchWin::getTime() { + // Return the TOTAL time to date + float retval = total_time; + + if (running) { + LARGE_INTEGER temp; + QueryPerformanceCounter(reinterpret_cast(&temp)); + retval += static_cast(((static_cast(temp.QuadPart) - + static_cast(start_time.QuadPart)) / + freq)); + } + + return retval; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Time in msec. for a single run based on the total number of COMPLETED runs +//! and the total time. +//////////////////////////////////////////////////////////////////////////////// +inline float StopWatchWin::getAverageTime() { + return (clock_sessions > 0) ? (total_time / clock_sessions) : 0.0f; +} +#else +// Declarations for Stopwatch on Linux and Mac OSX +// includes, system +#include +#include + +//! Windows specific implementation of StopWatch +class StopWatchLinux : public StopWatchInterface { + public: + //! Constructor, default + StopWatchLinux() + : start_time(), + diff_time(0.0), + total_time(0.0), + running(false), + clock_sessions(0) {} + + // Destructor + virtual ~StopWatchLinux() {} + + public: + //! Start time measurement + inline void start(); + + //! Stop time measurement + inline void stop(); + + //! Reset time counters to zero + inline void reset(); + + //! Time in msec. after start. If the stop watch is still running (i.e. there + //! was no call to stop()) then the elapsed time is returned, otherwise the + //! time between the last start() and stop call is returned + inline float getTime(); + + //! Mean time to date based on the number of times the stopwatch has been + //! _stopped_ (ie finished sessions) and the current total time + inline float getAverageTime(); + + private: + // helper functions + + //! Get difference between start time and current time + inline float getDiffTime(); + + private: + // member variables + + //! Start of measurement + struct timeval start_time; + + //! Time difference between the last start and stop + float diff_time; + + //! TOTAL time difference between starts and stops + float total_time; + + //! flag if the stop watch is running + bool running; + + //! Number of times clock has been started + //! and stopped to allow averaging + int clock_sessions; +}; + +// functions, inlined + +//////////////////////////////////////////////////////////////////////////////// +//! Start time measurement +//////////////////////////////////////////////////////////////////////////////// +inline void StopWatchLinux::start() { + gettimeofday(&start_time, 0); + running = true; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Stop time measurement and increment add to the current diff_time summation +//! variable. Also increment the number of times this clock has been run. +//////////////////////////////////////////////////////////////////////////////// +inline void StopWatchLinux::stop() { + diff_time = getDiffTime(); + total_time += diff_time; + running = false; + clock_sessions++; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Reset the timer to 0. Does not change the timer running state but does +//! recapture this point in time as the current start time if it is running. +//////////////////////////////////////////////////////////////////////////////// +inline void StopWatchLinux::reset() { + diff_time = 0; + total_time = 0; + clock_sessions = 0; + + if (running) { + gettimeofday(&start_time, 0); + } +} + +//////////////////////////////////////////////////////////////////////////////// +//! Time in msec. after start. If the stop watch is still running (i.e. there +//! was no call to stop()) then the elapsed time is returned added to the +//! current diff_time sum, otherwise the current summed time difference alone +//! is returned. +//////////////////////////////////////////////////////////////////////////////// +inline float StopWatchLinux::getTime() { + // Return the TOTAL time to date + float retval = total_time; + + if (running) { + retval += getDiffTime(); + } + + return retval; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Time in msec. for a single run based on the total number of COMPLETED runs +//! and the total time. +//////////////////////////////////////////////////////////////////////////////// +inline float StopWatchLinux::getAverageTime() { + return (clock_sessions > 0) ? (total_time / clock_sessions) : 0.0f; +} +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +inline float StopWatchLinux::getDiffTime() { + struct timeval t_time; + gettimeofday(&t_time, 0); + + // time difference in milli-seconds + return static_cast(1000.0 * (t_time.tv_sec - start_time.tv_sec) + + (0.001 * (t_time.tv_usec - start_time.tv_usec))); +} +#endif // WIN32 + +//////////////////////////////////////////////////////////////////////////////// +//! Timer functionality exported + +//////////////////////////////////////////////////////////////////////////////// +//! Create a new timer +//! @return true if a time has been created, otherwise false +//! @param name of the new timer, 0 if the creation failed +//////////////////////////////////////////////////////////////////////////////// +inline bool sdkCreateTimer(StopWatchInterface **timer_interface) { +// printf("sdkCreateTimer called object %08x\n", (void *)*timer_interface); +#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) + *timer_interface = reinterpret_cast(new StopWatchWin()); +#else + *timer_interface = + reinterpret_cast(new StopWatchLinux()); +#endif + return (*timer_interface != NULL) ? true : false; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Delete a timer +//! @return true if a time has been deleted, otherwise false +//! @param name of the timer to delete +//////////////////////////////////////////////////////////////////////////////// +inline bool sdkDeleteTimer(StopWatchInterface **timer_interface) { + // printf("sdkDeleteTimer called object %08x\n", (void *)*timer_interface); + if (*timer_interface) { + delete *timer_interface; + *timer_interface = NULL; + } + + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Start the time with name \a name +//! @param name name of the timer to start +//////////////////////////////////////////////////////////////////////////////// +inline bool sdkStartTimer(StopWatchInterface **timer_interface) { + // printf("sdkStartTimer called object %08x\n", (void *)*timer_interface); + if (*timer_interface) { + (*timer_interface)->start(); + } + + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Stop the time with name \a name. Does not reset. +//! @param name name of the timer to stop +//////////////////////////////////////////////////////////////////////////////// +inline bool sdkStopTimer(StopWatchInterface **timer_interface) { + // printf("sdkStopTimer called object %08x\n", (void *)*timer_interface); + if (*timer_interface) { + (*timer_interface)->stop(); + } + + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Resets the timer's counter. +//! @param name name of the timer to reset. +//////////////////////////////////////////////////////////////////////////////// +inline bool sdkResetTimer(StopWatchInterface **timer_interface) { + // printf("sdkResetTimer called object %08x\n", (void *)*timer_interface); + if (*timer_interface) { + (*timer_interface)->reset(); + } + + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +//! Return the average time for timer execution as the total time +//! for the timer dividied by the number of completed (stopped) runs the timer +//! has made. +//! Excludes the current running time if the timer is currently running. +//! @param name name of the timer to return the time of +//////////////////////////////////////////////////////////////////////////////// +inline float sdkGetAverageTimerValue(StopWatchInterface **timer_interface) { + // printf("sdkGetAverageTimerValue called object %08x\n", (void + // *)*timer_interface); + if (*timer_interface) { + return (*timer_interface)->getAverageTime(); + } else { + return 0.0f; + } +} + +//////////////////////////////////////////////////////////////////////////////// +//! Total execution time for the timer over all runs since the last reset +//! or timer creation. +//! @param name name of the timer to obtain the value of. +//////////////////////////////////////////////////////////////////////////////// +inline float sdkGetTimerValue(StopWatchInterface **timer_interface) { + // printf("sdkGetTimerValue called object %08x\n", (void *)*timer_interface); + if (*timer_interface) { + return (*timer_interface)->getTime(); + } else { + return 0.0f; + } +} + +#endif // COMMON_HELPER_TIMER_H_ + diff --git a/montecarlo b/montecarlo new file mode 100755 index 0000000000000000000000000000000000000000..26d7dffde60412c130477336073e801746ef7949 GIT binary patch literal 652832 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%0DY4pgdXFsa4YRCzzPQSyCaQg9l z-6JSfbCE-lnB4R6mdX+|W7lor1KB5UJkE^Wu9&ggglFtJyu<3GK{aOVt_#oDy}V8m zhRs>|)=A#8j_cZ2q!N&3?4FDSW_!zHR?GS=`WQ1P+Ux%_pwcWc;pw4=zVNrq(`lkNAr|NgS1Ec z9z53jSVZ`yleZnh;X6Ch+hrjM-%#akjP`a8yqy*PtC}&5!;Oi(C6yEpMv6>Xe_WBQ}x$K{ZZpNlwtE#mmyh+`_?>5tr&@DU$Z zX+QD2QL&#@de4KEGaf;3V(I&H)`DqZ>09g+G!zXS{_y$!I`6Mb!t;s0m-)liVSB>A zNt|yyfr%X#p(w{-Yuk00>q~Z;p-szU0yL8yowtEJsxy#F(Ir-ulTNqv1h8i5G*|%k z#7O#Z6n@uYFntg{M0gd()BB_rSXbh6iFxS-R!{Ux_vz@duIy-6BV+K2l*Dq+$h#(D zay`wVi1C!}Z0tFAqbGJPd|Zdm$-_hJpL8ue9<&V}!s9-eGH@k4&iff2rg{Q{4&iHy z@E8wI&yN1F6JwRP9DdXgz(-+Lw{?W73$R1ewjo*``X*!wN}yDfpdJg~estqgyUB&t zr-8hQG!>vP`md+ny0i-dWoII=DEGNuqlRZU6lAzF92HvV)`Um&9by!5TdDrCA8kUi zq0lnLH+0{_dHI{Aq6$OAjLLFvCd5^ z5AJS~Xy?FJe=bF@=9B334(D1*`Dx@>_gBbxIeILt&(%vTFspWSq4rp`=`X-tjvzURvk@}#dO)NLcpa}Cw1yrAqAup{vCh-5Masrc4fwB1=C>m4e9T)|sw{X61v1F7~q z?8iim6V9h%gKjfKc|*&^d6tW$0bU^_4Tj-5CHTwW{YPTGH~Nn>@?K2etwodU>Ueud z*h?zW5U>-Jk2H!bJ}zhk?-E@B&H;iw#Usd?Z2%J;nUAjQGserruk(jLU!BKKU?s1#jl{;F><_g{(>%wyu zZ$AOnGxBp{z)O%e+dY`|-2|=?af$Yw%&k`38WomS!gU81N8HJFK66K+?!DRGe>X+Z zcRD2%q9;k!7fFSuHDMv7!sE0oJz|*JjwOErp7cPo;%b-mC?)08YJ6S!WPf?AE9)6P zUuAE(k3zqnW4IajJV4>Hi}`Ne&uiYGuX}SgsCoAI@aDAtm>2DH;waDw3rv(bNO z0DG)K*lJ)xiq!{`DFsmmUX_ddkV*XQn;sO2W0rX7UJrcX+F-SdoUG}ye2bBYc)9x0pIqTFgRvroKxW?llh zDnO7c5sa$5))IzP&X-kr>2z9&kp0Iz?src@_=bZL>a;hotw_tMZDlW$z=ULc5WbqW z7^%budHMUfSgytohqv{#ds1S&&8FScF~)lms{V9T{TU^*$`>|A(5Mw7?Hi7d#3e5o z^B3x#Q+VPd!V_ONJgBhH6evjB=0+9%GisJ!ken#(w&C=9{!+5rYGF-?xB8syw(?Ge z&QJ|ADDqPAfnnAOznp~dIfp|wjnq^1?UFj}E7yR6;HxuXrw=7#u_IQ!?YEoID^g$z z+B}65(X8^FRD-^cdy=Vz)zy=AmXAh;y`2KZ@4_ACYFK>04Xgl?9S_qvn828fh7V4v zy=P*IW1{W1s7n-ga19OJfHxJ7)r?%!e2I^UC)RA!`f(GeAUKzT#LXh=ncx zQ8GnLMoFDQM(IbdgcEBPn)WQ7tdxS_@Qwv|(h7ooMic~RP(#@hd|(~@)Ok)k!5KC# zM?Y%$RXq}M5&c{}lI2&PxqKCgsyq)}R*zo3dTjB_G*WvanLXh)Ruu<Y21%=;?G6k4Gzno-aqyE!18alfdq{ zkHZPFR^r0badYZyit$g1$3%{caov9zKI@$@Yf@VflapH>IQWJCherNM>9H-VPgrxX z+W%eh3186uL5|`y_N6xp$_ug-9=J2Ub|4R!QKJYRU}<67G#CRDI+Ay;TJ(ItX$bf9 z1jfO7K~v>)zazQl#V+M~1?&ZZ9MJCGrA~1=XR{4I0FYRUMhek(GU?912UOOL>SCzUV0dxE}L5|b>Rk(I8%fN9z^D(GuepaNGg@(Z|nP@D3DzPN(G z5antOTm`i0LNxAi%X@-SA5#-!C|-0z@6UCo^uO@>%Db`>cv2);-U z9xY8DhTZ|}oqn2nyXT*yMwzE9S)5lQI7et)dF=4&ry=6-oPI?abI^ ze-*wU@6-R6+Yf)2r=ct)Nkn-%fSLlRWCDHCF-g+b6dTnvL9RvXV}-RG`^yYK6V=*C zn-AE$vp|TtqklZ+rZP1y*<>c8jF_M5Y&o+l%DOvjRoA)qdJpY6vzhy#Y0nv#>{8=8 z__I}=A2@YA>U*B8HwZ5lo~%iUzQmeSJy{bIy{TL|Q%^Gbqp`ybbs={m2m=G5i|7EG z!i122smZO{-y5jjpw;f^`LD)`d~ZHAfD=EWr9t*~JU5iDec11T-V1^W-`dh-|Z@*+4)r6(WH`zZCi7X;eaiIXTeRRz`$ z_UiX=hz3oQz{Er}gyJo`W`&(N1qDKxT2GIX0vng)TNkI*%tc}G)7`MW61^UyUVJdd z!SU%H5ufHdKG<{!^V_F&iSe~Tw?`sv3{bC-;@2LYU(OM!+2#qfvio659D`A}CJ(hWoThw_&vqZ&DEFy*ig80NrkZPmW!*78~9xHk^bpjY_~>4ohg ztj0C_`2HRY0c`VFcc}tfjSm<4ikO6sDql|TwUy%W$tjK^7R%E~^ z>mFmxs1BPN%79&T222iJK!@2A6FI!tAC8vka7O$Q8IgOFaVgXU6#6Tv{fqedf5N*H z@|yh>CyNie$_+?E5f3fUMHc7q((*WRZ*GP%&#eude;0$Z0Kcw$ZET+Wsc(cxEhE{ zwMx#u_i;2(CtM%s5synlvhRJ0PWz)ph|_}Xd!M6IcVOJf#Rt6IvfuwVon{7lC!-9z zF#BJ#=(Js+$EkqN%D(quI&I;YyT&nhdG^0%(%A|8KxQY7Z@1_K3XW+ETI-J09Gpdy z5(XdOs;A7iUcE2&Mk(F2rrcgTj^x;lLf9^P2Zy+;syGtR)meiMofv!7czY-PTaRjq{~$8hmbr@W#1QuSBSt}xhN_Eyw_)_!_z4vbIEsHGka z>CccI)i}r$wPa-El+YhoITc;LpvqPC?>?@K@kpdgi55h?#INI(cExY1_Qm$0Qu}VW zg*IoUyW!mkwJ!Cb$Q|v+aSzK5OUuII?&;_saSh71YV)U8(MvP!{i4PI5aX_C?!dEj znTIN0M(X6FL%~ecUWq;kN6}N9W@p)L??OAc&g}GNd@W+8M~pybrpM0{$VT+j_wpIaVrpFQmpwo|Mr@x~BJ=5bEvFn*0gVaRr_H|~bPXLx*mB+8-_~o~M zR~1H2C<9{SBJ?1;0}s)wdH(bY`r)~@Z-S#of+eUw*Y+HB@5sqwO;z~JWU(WdWlFCH zdV>BgK97*#D+TDuE}tsENU&G|T7owfpe2|ib}hj`CBbOyywsCQ3zUyY+>Q1)aQRia zN`qXbK`vnfDc7lzCnOTA2qGpp}^}cC8G; z?DAJ)i2Gs;apy)#GZ-)tY*B!Y@G1qE2rp8Aj_?}_ z&=G!8>^i~?l>y^`HBbgnR;Q^B)c5Kr3UV$Uo@~3+jqgGC4m#Mj+8x!MZ$tTo3w!Ld z6fsN_O%+j~i6hv3f}a0uP5i_cc3}yf@?(o4T54jYBJkAi388|+*j{UX8gm1aM_?pr zL@tH0bG&&DcVYKaJcBZSS3iSA;%(IOp*xh%CUJ(Vd+XAvj{;0?yj%e~aV}JVNt`nj zpc5xa0XlJx{FCFa6NjI{3Os|@q&4~({0v~j&tL(U(rIa~Kras@;7K#t==V`25frF_ z0<#V9|i~?O1pcUw#0HZ)F1!x6MQh-+A@ST5Afog!q zQ{ZII1g=28j!>W@z0c=1ic|noa8!w;6_}=O9jU-Ad@VwOAp#i%dMm&vaG3(M0_Q2f zD9};?T7eT3pcVM-j=!kDI)KMhAYLhOV+s^Vp+RbzkErv2w5oEg-KJ#LI!sgnh}2;e zUyIP8zd%NZ9ttozbW(uU;T#1R9hxaX>kz8|t;62i|Dq1d0XD1y8ghvd!^TuVhfcww z6{?y-N!XH*1qq#r79(Fe5vykz+RF!c1Vi_skCG|uH+eT&zv9A+cLF*3CrTaFUOrxX zF~H*Z+a%_Z39y~7MI=DAKqdjo6krnIJq73lcwPY}0cI&cC%`lX=mfY! z?7A>&sHVsV)<8`m4WkZefoCEbi_{E$2~7smR@`A)M7pXxaBF=5zT;~V0<0Iv2vDj3 zBfz@~&;mTC03*Ny3eW=FqW~?y?PAvgG}t!C1J_X70C6*I#o?3UF!G`w%Y_kbMXI8n zh-fP2T6^(W$~%O9EWf>_z9_5tT7)Pc3uHujO94idISSCC1QcLInWO+M%1sK;qFf_( zElR`9#0-E9KbE=J2$NqM=7yVzc>m0`wj<)vtMu%f>qq=Ez7`Sja)C_5=PAHM`~?N* zh(DwN6Y=Q^&=J2=0XpK>iCss$!Q7AquA$tJ8)(lHw#tv+R6KA~{TP48*CJxPULX_W zQU#b8zpDTp=_d+z*asF3$Rw~e=fi)02>xSzb)hjdT~pU zJ1z<$nu@trjVY9MZPZ`gJ5quxRQQYp7Ybw~I8y;ef+PiK365Y&ZPePopZG#}?cY}l z&=0|3Ch?ZlIHJMkCYPNe>wa9fc_+v~Ix(SE#{ z+lm+J{(0JuORaGl=n2lH{zTeX+7ozy4r$l(El7yK1JqV12ri(X+zd23$D;??QG6Dv zkpR!+!7M3iV$nrEUURSb)iNmGa2%v~FxG~I z>Yhpm7{%nJPd+yeI?@#syx18I2c2+`LkH*LfR;M>QgP6i4qD(~FdZ~i%bR=;hYnIO zc^S_x9O-2szl@}WFX3f8D{$R~W)n4v9^^)mEaQ>>vr4m+rx;w+LJsta2M1JODURNI z{kl2}Ij~gc|6}i5;Nz;Q{h#y!0b3?O3jqrR93Tj2Mk^*fGy@Yj0~0CILX-kku(ryh z=nPb$keUf_90sZvy?6!xc(2zdUSEjirRg&i1lsZ_QiXy7GlW8+&=#=m|NC3}oOvZh zd|e;cem>2dz0W@9?8jPbueJ7iq~xlzv&CMIrQ=nP5A_79jorTD1No`&)Mg$1CI!FPFhW4m)f+Rngzc(Vh95i0-1x zUAZIR|n$*VbKa?3f00(K+;*n?Vu;AsSo{KV zd$>vt?9Q&jEkU4AD_EwM_}q;y4@NN4PjK(-=o_MzB|QSrhFPa4hC!`|I6rybooJ?; zwKn7~YLXXZB>O3m?b6vlYqU$!Usc?j&82z>X(7!e0iapuHH3tNwC2(fo)NHcaYU$n)@o!c#PB}A2Czs zvU^Mi-p*$%53pwq$={Lv)$5$El+pw3f{P5`cF#_Nr&4+#iz-?HZa3NOzpYbayUPx= zC*7Cs;=zh->!{NiL?6(GQs*_6Dv>)EvcK3|fG!tR4AYI=O}Y^|FQzZ8+H(ArUFMiL z5|1!>9!{;ls1o2txHQk!X{)@`x+;mqagjPi^mEYHXcNZ8;m zK%BtrXNuxtef^y>9$h$9IF#}~)>!O<-%-A;d$f4|s}}9g`8kf`jx%mPmF9u3sxwE( zkG**;nM-qrzPSVmEmBFk(84cu2h$}VR+dhulj9`Y?m zQX2xmtMG~J5%4fVZqcVNmt0Pl%3zN>HaG(hkMPs?}pQUij{_MIYEoCORN2N-ZToO3^19?n=> z`6YpueRd$64|B$?9Z*I3oLaD~^~Eg@m;5(2o{EPp_s)^nHoQOOx62uO7@(f8smy`( z*%GK^6Bh{VlseQ4t?3UmNiSV4uZryWj#PJ#F6& zqGS2-2kuyArN2ru$ksTks$``jeLcF>yO5oedYIl%bAhpIf94Zh7(4wDE}B)-%>`C= z{h1TFFn0P_E{vT%ii-~2!qCpK(+6{5?DT$I7(2a3iJgY+YBIJmhzuakI{j?8oL}p< zL@Ea!NZ3zqsJ5QW7e8B%OWGNe>~s+{NFV$Shz8R{I5^ZdPz zW5>DvUBf!Z8$vqgSeSo)U(tjzEXal>~`feS7F=(agU?4gVtoZ3K{1&6Yd}e zPnmMuD3*e6812Acku0&4FksNvFxbKN;>nc1kZ1?#v6wBga>1fGD!MZx6#un7z$Rpq z1@)V9{J&C9pMWSme2;>nbpR-2@R(GUuoPAL5%k(aun~#>Kyf z`l`(?APi*}|LUz$L}vm!<-xX7zFSnXimE(xVt!nqEEv{O6+%=T`A9iL!*En(aQn*L zVDc2lWg@s$Y>6KXiOb-lrSqUv{<2m@J$tw^aa6ZC{(8Bc@ZFGnM1-lnk;X4z2b{`% zgkAHQ!n`9Dbb1CU$X+PCJUPH*=J*=p6raWZSC(8m67KC6GE*rmrwtA@&@7lQT&@z) z=3a_2Y-&~sIxGoB&6&)4^D@IMWs_CdZG&*i07P^!_NZsI}`9r{?dZ(>fET{1?? zZFq|`bz-_j=&fWfgSWzNM=1<+Bn$AFQ_6un@{4AkFL?Ar4zLhH9z@#i%6$k4@Fco4 z8y~uE1~;k6Z|p(}p;vghBSFP;@6{aql*0fB?qNHW3GPpkyg-Y$SyeT`{SVzL6WmCj zuL?(WBYl^+f(UPuSH*L+>>@fR@5)xDm z@4r+L4)4pZ;D+bBf*al?uHc4uzAL!lebg1)@TRze8=mJ1Zg>hb9_%>`+!fsL_En*B zcz04!H@K66pSN;VXJtX00o#7Kzw{RC`5KTmr@ogrckDFa6J4(NkSt-UAyP#xwIk2AO*$NqTf3N z0v8Mvi|)F@!6&(~zKvh;BUjT9tUbF+3EyeITmraHH~@8$KT~bM=V-u_qi?f;X=6)8 z_g5=#?kmo0{i$$V2gGB)j?Y}IBF)Z@9+-#~g7mtpr2AQ=JHrn%F>}z}d@And3F&SX z0_v7PKy67K@u`N)u7e1wvlvT{);E&9-*gFqN@!jNLq9gT<;DAu4`OSJ^$f>p_nw3n zhC9G+lLG2RkRC#BVEpBC}l)n@5)*I;eCZ8CvBjP}`;jL#~Ezp8Amlk3v zrPnxEW_ekhbE5m|4=bArS60fa1LJcyIJLu;U=`C*VEKil6S;ZtlIQ`kC0?K{f*0`| zFA|TfE@j?)xXVRcvgc}JFm0^lO456$09^DAyGfs#I>Kv6k125}0e=$7DhE%9#*yrP ztYsp17Lh8RtLOYO;h#nBgRxYWP&xri2}3^{C&nvM8Kv-qrswETJ27!^+QF&Iknuv_ts>nqnBByI}*Gb;GefPN8ut8a>g`DP}(@c9&r6!4#llA)1dxIOki zNmJ#|V7KmI5BIR=BN`Qs{1w5dPA$ix%Fy_4&ysF0j`U)ra>?_r!mVgECC=|txb_6M zgvF`chNu_YpkIy;_qkOu0l03BeR{+wfJQ;M82TU7X3VGc-+u6pA8!*PuFf1<$-7>6 zd_cR3dvaHEQam7JT#I`%4g8FS*s4b=uzKb;wlZ!b20wc&{J$?}Lkikk!&Ymx|9 z{9StPs1UKn%Ib}|HlPY3;;%}Q-&e;Yz9k1fvxbD!=Jy?`#fzyJ4wM& zMS>X8I3|Q6EE9;y4$Se1We1J~>Ww39u~@ZtmsTw*U54m+oHz+D#g>_yg8#aFBb=mx zvshE%#HFIjc(G*mkoTb?m!cWL35Z{1?YYcjcJO;h_-g{m)P)X$@!+%u0|VQ{bUKxi z{&{M2*U*jAJTBE_TxZQe4NO^=O95? z?Z2%&9q62uO+{PGLqK5&!^@7PdjVD^xX&S6(y1IpwVf6h5WWkQAuLqtxdM7!`j&dueX`m<27y%!17B-{LXRj8EykYBFQpmIAE@i~UJXv6&wJbehO zdnF83jpJJi7?v3S-5Sb_f29U;7@ptp^cH^;o^1#5e5Tq7_2c28{z0~d42{p}c)n!r za3i=w<8#(LFP@KmZJ0CtX~zWnX2|oO&)CHtwUl{&SU-1$ufJ1uRCiA4On9mtHl}sJ zZMPsG+zJ}0`{8*+aSB;6rhJoZX*=32cc9(z7s3cFgx@@K{k z?h(juB~Cw$KC;aJWv^u@rjzUlZ4+?a4-V;#_KWIsRBt`ytUeWOb)sll!XD?mrpG7T zDR*b=l};zJxX~bk2F}owCqwxQfnh>C_ORsfz%&6DY?De8v4;Yo6fwNgb-zV|))B{> zA1MC#$S;xXGJ$N>*(oAyB)b`&#mjvV|M$o(Cp7mQUY8!7T^9LL|CL0%Tij8$R#@aB zc)+zMeK=Y|r{oSRjw^{U-+;n|0G*1L0eUe29iEO%st{y5{YA(yj~ngH4yC=rgqy7( zpQUiKp^Zwd2m?Ayl?YU!QLlKs9By_W7zl{>wl(Ts=qQ1+nW$K#_f&2SUL!$}Ujp?B6Lv4?H<_Z$GmW6uhL$0ujLW_$aqb`I@1J|MQxbAV4I zkylayh{RTT&b}cYyC;AEnP~VAqfTEJ#17tRaMyX;g5O_4nxr6U>C9zX(YLjBN}YJ7 zV1@IWjb)14Etuf^#;U3*?oql`NpTM`_z5WPKCa*>?k=w2DDG%ia1?hF!XUKRQQSdS za1{43S8x<}g)2CUyVw;R#r>HpbQ@v*t_qbDSAbh_-b0!oQ=hUl@Mwl;rDeJ#x~tZ1 zoEl((66hEV&8+!&7_Q*-pYl}M31AJh!WPWg351+kY)QhAm@-bAMk$Q?TwxoK!#2Pi zw$l?*N8qeYd<{8kr{7gZPm8a?_J1Lg7n-mSAC8urQB}~Lg~g+^aJV6_aw6FVHuI85 z2EAngPkv=2;^>=_$69Fmx8~=<^O5UVP)Vbkp(&Lz*(gRRtCe#&Pq>gaj?37BC2ncl z@*9v+JwNu;7d7^3QCv{~LRoyd3k=J1WQCz$o3w59hAk zDdqqUcQpy@3aRgX@G~LnyAy3IgGJ8?XOxqqp%ST)$k@j9#LHtl$=Ae+t|FiaaN`~^ zc7X%UcMWBJOSciG0h zbppp*WtnvNv$0*x>T&4V7+s$Dh#8q26bPhM{FMo$rTG|sL~SKW^zHD0)@i42vOEEm z@uS{IK8@Ta9x{+mJ>*lbT0VWeow@pFmQS~|F~I!TpFPLVw&m07?DpTSe0q=u@lPn9 ze&oHw$)|4w&o9icfahtz^R#Msj_}5RYIuIfVFu3!7T*w_8|?PqEj)kdJ^!5W{Dq0b z!n5=(*h77M8pcqjacM)mm%!JYyJ%WTyK*kO?J(Mvqs4~HZXiE;#Qyt3%M|X6;Da(5 z*xDGVR=$d?DNV)hyuyF$R>JN-z&;k!b> z;k!b>;k!b>;k!b>;k!b>;j2)|;TJolKN%<-O-c}mLtChcl`Lj_y3;S9SwI*wj(^uu zc&1QtrW#eOlb=gcxgBo9^V>5RHCHv>J#4Hqr&LUBZ}`jxKF5GFnN5I zR%NI>t{l=Od3-|8XNj2F_f;U~%A-e_?janji8LBQr4og1BY2i1nwC)Yyix)S;t2Qg z3+Qw*OFXvLR4DP8n{}JaH0~hW%%2q^(4Io=5PP)zMCZ(V!^UM}=dwVvokgF*h-Gha3|zm8)HUDOc_Sr_p&l9VJ@&k&GB+W8NEsG4pXvy_N@8k9&e+ZMUT6 z>S5`G^z3f2LXdX%IdlPY-Jh2*jP#YKjC-Z6<6QJ_(VI!-FJ51E%3z+!pGF z7CC*9;Inudi|!Uxv2nviJ>s3^MO|!*Iu6qYluw^w=uX#r36}Un=g9dWb@(*1obrpSh7G zisw$BhAL>9V2X^w<`CEcd8=XC-!p%w@-|B1-DN$ zxPsd!UUzCCw@*Cp3T~fx!WG;;@t`ZXePX~B+&*!eE4Y2)`zloK6WSXpG(o6q7Z$&a z=0Lwva@o#0uWAA4ifNli|zb7}tfGX6tFe^zJSRXO&1-yW(?BHXn*#j^kcyE1=N z0c%LBuAy}(nLSQ@Ct-r@_#1Mi{3iC4DI4x7DX@EnkgGqWKB+RL9jZPl-F`D?hr=G| zkAPr>L%QRj@{o>U;FY$;mHLy)^kHsDRr-@aYojxLDRrv#CncW*87b&IwAu}a%s^xp zE0|A$?WucL?Wq;+5O$zH?2yVQ`TN)CPsD1xY5mDffxMZ<-?sV~-@*=mvbAu1%gDOi z2}J+Yxqtds{|x8*I|B}0&d&FLjuA2hZsV_owKYCv%Ojya^bx!LcOh?1(Wz<8`F`<$ zGDyFN`~NKG`};C3JKvwCy%+$r^Ziq?k8i5T3eFLKQ^%F0nk1%pQn}Fb(M75D-$t@K zV&kr`mU5=v7h;w2*LVj#;`J69yak1ky=%6|Fdkav^)5mYzN^mv`kuG)ruy_}JdzWn zKhEEg=_&jjm3}{eM`MqhK7fnuNM&B}*w1QS^R1flzt@ya&0cywb8-1yne)B;F%8M~ z#T;8H2!gtmIgM06Xz{xnRQLb|q~-2L72*^y%jt%*SSk0PN$l3$a26{wgfX4OsYf@Q z#mdZ{6iAuV4QH`3GnPUd1vrb9=`VQxLz}smKJF%eLHc7}j=5W#A)w3*CLbd{3X>=>`4}@&IEDg~?=ksnGlx-N@;xSht>PNY zVDdeC!2}9SzQ^RR%|y6pD|J47jpyG}B#JrP@1=ZTYr3)LlIZqzL@Uql^}w$C*KOUk z6ddz|1b7buV0HRWlwv)F0kB@#Pc#6+V6f$axjtca6#;;jyGEtx8vQ|oQgn?U1P#LI z8vie7Pzo?|b`6qAdIeYp1U7L*Vtyrqho2et&m49Cs3}@grd|K)(wa!Mr>uI zr>|@6a{CmvV3krk>}Rd6V%WcOjY`8_7Bnagdw$R$9QL<^2Bl&Dd(a>p_7y>caM%~Q z`)=4uxB(tbK>;OOp5DdSF*Qf7I7+)t7%cW!Jz$4(rK~qDk<9>TqoHwxo@E~zeEy?@`TI0D>U{{zd5637rxCd;5o4$iU!)a=W8WG9v|39Q@&{`g1wxIyIe)EpHuNOR}t*#RD9D_1p7J_Uvd?}-cChU724ZN zW6mmmQ1Kk<1AG1w-x29MUac$27*R}qW{cI$3e5sZh5TU|vk9xA@=DnfoGl2tCw;uon+<}dZ)xeGl-fq{QBzHhyu zg@VTnDyAG{VM(0Yn@+$D;cLrA#c=CX&DC5aOS5d~3AGwM$ zp4{jv%6M{(t0?2irK%VPPo}HB0wadSkP?R;$sTGicEZEnc3puHV_ikibD;V64w}mt zG3YAF81bm9C}YGjS5d}@`L3b{BmR?Ghu>ZK^QOgf=S@oz{+gX)Ft*l^!Vy&M6`ucW zq)*KFFx$oZ4em?Z1+l(_7Y8|P0HPx9YGnEZL6plsGf`kgg2a%2uiP)VS9;l-!jk`~ z*hdO4vlaoCEM4QUWDV-Np;+>BS`LpTKi(FWe8u4gW4a{7lCw0XdE{i$c!cXt9x3f7 zvxWll=|iiIA6oU^p;hvFufaLfN@%)Dq`Pm60H^}m9$v4}OR9+UJ!!yIfhQ|mMHx@} zT}2sBe&8y~c=9z@QO1+Jt0?1%WRv0WL~aH{_miWobtu0^vQkEb`-OsMz{oe)s3mKU zcNJyq809L;*s*@W%XQEdCw|J>>$A*9=)k6@Rb6R1k%) z5$B7{!L2F(S@Nb7&OAy7*KvO!y$kv^@||xAjTVV_R=9x1sr*lu8;p_+*MC0czf}0@ zS?;h~w)43@eMP7Y8i#s~LyTIMPlGQ1kP6W4?E~)U7wT`67F)bu14@%3C@_&n> zBYoHK6s2O{{ieZk$eD)wu1)Yr^an;E>$Xi#&K^nwP8wSEzM)kI53On%S~YrT)l0&# z3VPybh@&SD8}?PulO?XAOiylh6=izzU#_A|Prm3X%JhUplc0mtAJRQRwPvYen0?n$ zNRndpVYnbkec!UP&>%I;6G*)-vUMo+ZNJMAQ`^x^yIO5WY;}B~6P(nk<8H~^d2H5aKU9}$ ze~L7M29ad&A-kIYC_y_z3@=ov+nhpe3C!;lnnF=G1}GlM&T&^G(w`8Tr%x@T_`Edx zF#O-nWVbIrd8f6nsJN-N!lD>eKJxkM7MVE}FU-vH@|{kRwge@r>tCS8)H}*(j`%|% zP-CJ^qY$Vu(WX%d)R<_~CjqZ5ZOcMCx?g99FsP>tj8P<&xtZ^T0Pm(I1-{bG6i%=#Nc} zxms#W^v9;gTrD*w`eRdLu9g}T{jsSrS0mWuz+qEkuC7pH>Vr~a-fL>icp76Bh%CPJ1Tt~e@B<`T^yO@>CDiLS1zpfzA|rr;?OG7k5)?nmYA@* zYPX>ej#O2}zTR)caQpf*ZVLwYb$-Ma9BlO9zs``T2sZliz8-A!<$XQa=*#dK`eF9!Y*KVH&<7<^~Nyf^vbo9}<*p zvI9xl4Pgh?hBMHW|DXA+Up)6^{RCpXQ~3VnIREsA1;NJe8|P2DtWe&q)a&;BOpqk_ z3$%WJm6OfCCg)EW4~9_Kj@W+{B=~13M}n`0F({p|O{Ne4+Hkwpzv1Sr&Aal1?J}#Y z0J8I3qY{vv5i}?PSy#{?1hS)o1|=XnBxn!<*@U1$2xMd2{cQo+Jd0s$d(u_L^~^z@ z*-*IUC`S-)sM0br@yYgIN3y>$8X@|X9vu8-7`VyBZ&DCCXW#7&W8dwS?7P1VQO#M@ zc}_6O-t%W8#Rm4>dv1)vNeyS;eLLK~4xBr9$1mEnUWaWr(%E-o1Mf;b~WZcct(vSLm?9 zFI~a2!Y^E5k`;dJ3f)%tZxt$y`-&Y5N%)K*csnt*{>}}-R|+;|2u?I>=aGG$mZZue z8ZJMQRqoi51^8Y)pB-Hn>H7*Wb>-2c|6we^32L#txDm|L`fStw`_WI8m4qf2fSFJH-CG%ftR#aTr4T@6&H#wSp}o zu>U^Zs;ak$e^mQ#d6&!n`@a<~ z%3?_eiRim!Fwy8@yb*)9LyU6n6Vp%xWb^2@{1<*M4Od~x)0?qYgY_UjQ_uDiM=zab zcZeKTXbW$W4+e8ZgwzkTlEebKnchFPq31L2HY?7VP5wIafqVWTM3BUGf82nVOTy(Y z%lyV2Q14whfBhCtpKkrtl4Z=f1vz zzNL4GTyqtSKe8D7RHW}lNe#2PVdv3>*I#9UWmx87MRU~GA^xH%>Ho6JKdB+^f2c9Y zw~jlU`Hm)g7Z4f)QWqMYg@$PH0fY_yS+KigZ$Dj1L|c-C%vLSGjrQwrP5PS$j%&3- z?*LixmP{Ks&U0;!3)&uMZ3m8<=BizO_)rUw`%!^v1)yn>@k)OD^zW6oork%FWOA}q zRc|}mZ>uB|cg!CIpt(VJT_S-<-#k}nHu0g?6(pHtJ{w3SsEvb!0yDT^o%$`Smn4x4 z;;Tz2psZe!K*;Llq>oItco6eH_w`44rL9L+XFPLX|4pepjk5oE;lEx6qKMrbYIryS zb&%(^`+STdm5O99*_NA7^*Hyqblz-+}Fh68xER@tzN)m11P>RqFf zvf;%IdZ;4x`x>iQoeq@^%Yz0bWy3Fm2BEUy2SI~S+3^3|{cR~5kkHcDE37J9M7t1{ z`8ALa^;uyC({=>Bk|F0%1Lldrrz+Je%|Ulc=>a3IQE9|mU#S`K^HxzF@nb=Q(unU3 z8iXUhGiVTw`1|gDIO1&?a$ZieT0_pjic_|`Ex8sgvN@JJ6O!`IgxvpLTY6R?!jn3sKX%9hfe<)jCfx&Bi?W# z+JYWbPDC{5WoaUIb&X0BF*0aSnuwRyS5L%~R<4+c6+we=A{GPVgV*9S>dSZg4_>N=RBs7r4`4l)ns4&og9tHar#|cUJ`vbe^b$kIum`b z#e*-!!Cz#q>k_lx(-~WyoY^0g6VbzB3p^LrD=v{a=@Q_@W5wjmSJent+rW9+9&}-* z?<++TTp#yWogfe6;hm=m4ey+%(+7LK%!x_=4e`jA>NW1rkJ<*!v;sB7m6+Z*9(|ve znD7BjEG93rh`L9RTDHcvZv;I0EH-_jOjm}ss`1YpOVhs>{(LhVBS*6-+du-})I*7* z?m}BV&RyY6F^?L-%#$ufNHfiDR#F={Dtsz_%#I$}8H<+_k~`c;A6h45aGblWge%<~ zb+{jTZoYBkV)NWAr&c=S4I>XLlTVeGdRP9COUomir$(21XpkQ9{Bl4DBYkJLT+wjZ8<^VUIP#BY<%; znaXb6h0#i}=x-LbHB+i9tUBLmX43onkH|@(LsnmHvJLY@*d__Ex>Iy#8ZbFy5kdZ= zt*JZ|FXh9GzLdhWYw|hLS*J(&iw1AU9X~qJ%cr7;z^Qt^fuH^m71|#YEqupQ)67G> zwB?9&^pNxp^I@6lcycbEXg%VR=)}xgqa)6{GWS`|TOba-1LF$kx@W%vV~ieOjPPl$ z<_d79r7@D#VkRKkt%)NNyyw3Y@VYIDBj`)!D;h>~yywy;jGxSOCO>-f6VbZZG6E?w zs~0wIZHzBHwh4rwow}YsrP=FUI-#)fIQ3X@wXnv3F=p7_K)gkB=ia&W*jBF2W`=pR zu`pogDYVDPiZ+4L{RNIu3g=+vRQxh)7aS|l?L(R)eMuIVh<|^ zXQ%wfQ>=1hVG^>Mi}!NC^CJ{vf+<~?@>{)t^H$*8WUjLTKqv9HKdCY4PiaWxzW+mB z6z^S9pYZL{{80*vh)ippFTO%=w9hrC@<(l669pG$qmG<3A)cGn9N)S-TWjaU3fiACd+_Up$BUcc?G_i`N{54dJ%15+JPxyVF~ffbJbq)wn})|dj{Vc& z@i(3JYy~{t<7)mycs%#=uv_~pSr8y?@y z%Z9?^xsUxZ@Oa`gZwQa~1oRQQnDk#U(rCoeoBNz_O(e3_=ws6VeV0Gb1-%Lxl2U%2 z!uLL5u(>3CuwM|F>=tHB6Y|dxt(>JX%ueO*i1z4}a~JE)iwNhGTOH-F{w0a?xT7G2 z>vJ6#v~6wFsn<8u+W(bza7wok*M*TC60kvO_5sciMI}8_PkH;Uhd+vBCBh~N{4H@F z(}T&;lwLVGnfnY@#n8(5F@^$T{Ut>iQU>8Q91}fx1JYVCD3D|{6 zi6bUQC#O9}mzNZG;qic8ah_IuYBSiW88HqolGWS!$aByU6Vl{jbEinU^7Y8RBEdX) zi6f>)Q<RubSgi3_OG?bnMOy5*`N!WSIvpm<59Bc%jM zkgE^qN&mDKap$e^rAN2c+hmX{3+i zGr)jWddVcDAjPk9$=JMRo*+KAMwQIp95o2>H%e2~R9K4Ckz^)k8~AHEn+snoi2G%C zuw%P8=ge;}F~L513I)VxrL$M_UJ+-gQh zVLki-3!qjwuR|cy$xB^t6WCss2;5qubXvHa%O&?hN7*$N3 z2j`UnKQliSfVBk(*{^}+_kTtc6mUfuFlbz~gpqBP82R}797ZnAWQ2i?(U{CnfRBtg zzBJxiFHr3e>)7VyuCh7t4nn7S=v92e!7b@IYz5#l4io_M+_6CELZCFjNSSVj7+Ksz z{|nR6ezN@ujp@)vF;=^t1{zB?=*nL%T0Hwj`}%Kxhb}&;XL@P`lI$ITl>NLAx}5*dVCJ}^z&PHJ!+X=8D|LZjIFj# ze7$&~L2C~;>Xvpk*0-+K3wCiYxEgT(_~Vw#f3s1WRFyQoSB6 zOx*vh)PD4PkMIRHRgSi#-|ECFpn+Fvo|-gI$QFxR2s?$F%QJ;>e7|?oJ0NWj#J1|O z!Fyajnp04cKw(`9kHABjjF^CTci}{mY~TysEz6M6Otd-jpe0C%H92yjDV1(u5~W@H z?GuuKtL?S!x4H@y>d#%Hl2Yk^f(9j}(hWg_P=%Tg8kDqamjn$$rP4V;gHWk7)!h#j zifmkxOgh^SLBj3SGKM=3wwv`zgw3Rr(O4A4WHfehBW3m>B&Sec!`^*Ud@) z!4f-XRE41DC*xBh)->G=o^8Nad7GI2i&?Bl;olx-lJm0~u!-;X@^ar=6sV?x^C2%V z7U#E7O9<(04t`toJJ8YXiZ1d40=6|P?1<-==YJBR`>Yn((y`Es$fXF}dmCXf~g=M&8onpMDqD_{K`V^2j>XM?oc+UiUKlOM@LDoH znEhv*hu#MVtm>^VcA|hvfQ(s_(6hT&W6YjECz2+HOhUeF}9j) zZJ2L#)fLC6iYzaWPk%>bpDYsqgLJCrzY1|8WqN!H43U|+_z&0-fU|VD-x<50V`?gF zK^n^Kn#x^_`e4+mWIJLuO6W*d9#`a)l$xn;Z$l8OQwPB_7s}D%v`Z#?2aua~R|os# z<|e9Mxl3--->ULK`TA9sC0{pdDbISKJ7bNrS`0eyIiI@3w*EQ#Anaa;b zx(ht2DU|651!#5PYDocF9k^OjfK~^tmK31XfvY8jHVWx$(2O9?F1dPS9kYd-B)ke| zCz0$oN73orxwwxkX+i+wPNSEf_`27=Ui04?$v%MzhubkCeZRJAWtgvVYRfa!N{5r@ zt;`%>#7vJcuj-L$I32dkqxefalVSYToiAmXozeVOzEtyDS=RiP%W`E6pOr5q(h>73 z{!YB|UppcnzLXE?ylE0UV#=QwjktJB$ODt;B@;L?8e8UKRU*_Ey1E?&pCh{=v;#c0 zfrQPdBT&zzWoDi1PWCSCCcqr=J0pF2*=fAvWWFnpIIkT|VkDahfSzFv@rwJteOK%V zF#&~vnjYh32*@W>PESh#Z#)TTB-*t)-TXS1`#yAt-F;Gnf~2X0Jec=+~uwU-bVW_qtCbs_!~u8 zq(X5pcn3TVp0cVq*;T;j1fFp&CPr06CUNma#a5EM(uF~gk)3{>wXR;p%sBJ^S90yp!s)Old%S93;FJAk!+m`vhMk&q5l@51i63!TZ|BFF|lR~4u%%r zbIa)TyS?5mE}jm`GY$vzQ75vD|12Lx8bF!|>g@=*moJ4C&il5aVy=C)RB>UN=fma~ z63wezz|WCF`)lcwg0~SdOrBfq3od*=7frf2j0=(jFSzhfE?RWK1mmg2#ap@13|+Vj z7ah9TffsV|TIL7w_U-J%`}=e1;EYY$?{-BloCXhy?ocCddB3e5gXrVGs!k}TR^cXp^_ zJL$ArwBt1vcDNINH;Sl9OrgD%V03x_=J<>Y+=;{eD(6T>&dxfaP~fycV!iPRyaLd{ z+@fzo?mxs+MzX)>uUP9@MRb&l>Yec{y7>w9k*oW-hu$*McZpt^KlG+Mb@YV(lJ`si zBd$iB4JsXaE%n;R8)9n*$D;9TKPNgNa`lsXh<=zgN1^}y>PH5JnrU7yZgA?;%yP4Y zex|UlU^>#wIHw`C^Nhitpq@IFuwZ(qS!_Q#XwJG!JFhLj1Cr(~0;VE;uW2*N@3k*o zVHTVCHa+Gz4<)pe^J%nQnIFaa=Ryqcc}rd0MK{fl(PZ$yHRkLgEGqb0xCj4mTxTJ( z8qCVV#kX&<$-9L6uH*SbzjcQc+!rewG77XE=Syo|9*NuX~@HEx2g05pmIM7XU~Lg(F?9$QUs2tVish z*oLi>G}w1Zo7U19+kl}6htuoSf9Qc({6N+2! zi$roXTDkuNLG6(`E>itU>JvPCWZ}BSib=!?+*3E-&D&( zyC5MjM}gCJNluZ%X+-*y{2iJ85Pyw6126Du|7-r=NL>FbeDoL4@!BLAKO|yN_{beX zxAc)(^%fSx=6Zu!_dH%me^}7^c;TjHBkGErwgLM+f*{tVxI~9{w=GS6;lkJaVM+=^?*sOi^daKnfrB=p11C7~l3Hsp)BU#Zju12KKQ{o3XJ~nncgfbna>iuE)*qZWTHRS_p%DdH+w+qTPs*ggV z!WXYKa&-(JY6eJb@g7xG#kcRa=F^Ntw+6Sm3S-f&LR@_+H?3JLx>bm)rvm!b4Vwto zh^wcQEo+u(kNh^7<#RI!on0)*u(nzAtHc^W(4Vfny1r0*yDxkIh)s z(GA|*1!9^YzY6Of@F5h=gMUB(@6UXU3xtV&V(~gZanz~eI;c6G3k2?d#Y2MY-~tWl z(H**YCl{VB4&VYAuRpUF7u~uT$7i~|_PaCJ#(xe`uPa7jam|?Qh0qxEuBFCgRCra4 z!Q~VV<9fzp);687s+20^#0gD#Lr&b0RqpCUKHvO53} zgopZ0W1Wp}mW2|$w6V`JzX&*Jtm$6&f>UG9#i>gAFN3*Q0Qt|r2X$oEX4)Yf8RI9# z`o@rr$3=C9K2;VR=jgcpY#BHhb14%m88|q5Iso^Vg1w1E&xFb>$=oF_HzLEM6}Q3m z5Tl;EhiwS%?x`CyU>OI$9N6OpT^qcdJK`@-(9K>>HAQrwoDvOed{TsMdw`)-;6`Yc z9gI;Um3_er75rX9Y_$!~bmT~%jB&W(1^ay}|DGp)1i$A$6W_WUv-B=1?y`y(T*bbO z?>6WroY(V(^8|7r^pR2BT%Gw3rY8r>aLb*t(-_Q6pC`3+d@`~QkwRZN*%Z@_S+{~xG5{xb7=8=iF z*Iv%e^ZVI<50t7CYyL=9re*-aQCcPutJCWWr~g94N?P&S72BfCRF+DU8j2R_)_=7q z}OY;!QvNj z@`aGiaTmV3>(S}b`9S#@r~faPo&G;8OaEWGzM$fokglcr4>=v? zQg#%9a*l&{PD(flC&Doohs!-j7cnki_f}?FxMLY-0^Y)k-lU3i~?!qY`Rw1bh$vGnyw7EHe{-*hnXQYot#K>&o(nYRbu)a(hkrpqla?Dw_^?Y5Ia-?jn5_#m>!NXhv#t80jklK*2n6 zbmR(}%Shk-uAuph^euD+%_-Kct^f=y=%6BfO;J(orq4ro>s{QSK+Mj*O`xcq@loKB zy>DcdzNvw2B({=WU}wqc4L^nvc)aj-)O7wrA+*2zv_-L%#XYE~+P~I`;Bt2O99-8q z(cN{V0xAFTPqu6=%)w5{>z&Qh7j9a6lteQa1v!)*haibCr|EN_1G_J-}67U6*66`dgQ9=ip*sd zcQc<#5??kr^(4Y<(7o{3lVb!h!U9RB@)Z$gDHtkRgjouPjt2@IDHuvxgjot@w4`8Y zd3DlXf#v>v7icqT)rn@CrY^gRgG_Tk$Xx`O0Y`S!nI8pBVCg4G!%l0qUoQuA0Yf^x zGZAG>v@q{TZTw1@8tJG7yHz?bGw00z#H3K5TFsTR%jv;iiezJYR$X_o{a%G6xFe%iM@arq z^w3u=eD$lShbSLU+4T3XR_gEd+VS?~@wd%l2M+c3s^6^9mt|ivfz(#4uC2Jcw&K>> zif@M%?JtRDAZhDUUsP=viLK8SSYz(Yb_Ld$!Y5sUHKuTeE3n2CPI3j-m_ou8SV#)* zRiSqwy8f3k*O*nW7OuH)u>`ByQzPTk<@KNPS=SjqD@iD0g2dzLJ0-80x11PtJ6GaQ zDjJutsk5c2QO=fdJ9O3<&a6UA89Z5P<^v&5)|rT{3Zf$E!D9(zm2~Gs_KM?_8rK*) zT>Qf4%8$@GNYU*V;v3g-UX-73Um%|DJh+?IyHY;IRd-(Id9U|~x=7!D0ygG^Ya{&f zElk1y&?Yt*M_hk)qYrY)`8EZt_b%XkNf&^Bo8X(1lgQ<^UF8q`{CUA46PnouFMp?l z)Mu@U@r42%9WsqDNac{p9W?5YNmPN8B#Xnk#l^4xC}p#s+v46mF(K3f7)b>|=Em}yj0o`DKReKq`1g(z%G@%qgbz-C7Qvg@A&42#saVp0bW(Usf5 zDE&!NDi8rXIAq?#tN|eW!yGb;$xP*Tw8zXOM$Aum$m~w!;J3CJ4>x6B9CE(w-dA3n&a&X+ydPMt3=)A_O& zoG&la`Lfr{9h8U5biVAdhwFTKS%&jv52c~bmzPzXFRK^ne3A&*gW9_V@zTCUvUf4p z0W)t4b@We+p@)Yzil6;0_e=3jZr8$SV?Yy^@cUuu2aHH-bX9KErYf5(Rovm8kG5^c z^yyVz*~;!sa_|yUUXxF^@^+}1s7U@@dE2q{j14p7KC*A>~WTbqaxp6(8i~G2pPgqw{+>~@L3mGA1a#zSX zsrWS=Wv(vn$Ox^+#XJ?xKjDwEH@g~@?7!^IupO&py#5q>vneySVQ&Ua`j@@gpOFFf zkF+=Y4X3x_j{aqD_Ah%gq~U+roBa{?W^sc043Qj$*qbHZ$llE40ORx%v4zs`VsB>b z{;>9DPSYEE)QJX(nJXnl$W(h_rM=l2r`7!{*qcrJF0APr*_&PV(Z7Mc*^YelA5#$c zL-uCtzWoR7&F-WLqQU@>C(z=XR!aQ+f;CMGp4cV6 zV9l5v7UYf_lh|Rwf;HRiupqI+vbnF;*Tspsu@?i0TqCn_YChM@VbJSb^YJV{y7gfi zs4=(DM?|tYCNy$QE~u^Jfg=!G=e}A;3*^h}H-Zv(XrGA=Y^SLj7-4HVZ}8IIO?=e? z3v6mu`=gi(TQWQUT$E_<&#WsZsMITan$u@SuDOC2%zbslsCXmoU$YJ?vlI=eiew>c zoYjZ@J&Y2KH8_3$8w2Dn(D${V)92-O%OAhB_tp9fNB6$QlEwNL4QwX}85psn-5-2x zU^~IsfV3U7AG|MoUabcEH4~p}CJ(lHq4~JR;%)N1o@O^cC#pABEpYu)+rGUSO!yXk zrFan)!TF{J*})ieo}lM1J6B(*qvpr<242Rs^3JLy*L};;n}>6{gWe`}J`eS1fwVsE z%eIu;yXSPP?>c+V&4t#Y_#zdWD1CmSeLkU{H@WA7`HS=^UTD~R`<~AAt&!_~#a`rLzs%E{4a3nnGD)hqQ16JYQZC_VF zi16Lk;ztz~)}0%z!j0HkTw@h(%2i#Im09=|>)*K*k64ST6)g-_POu8s59{gS6^~fQ z4yvfI7EKiu*0Jra!VS)regoojI2NmT$|_t7d+CEz2p)T1Ylc|A)lS&G2cF!xa1@A< z-Z?+&Fz-6g-yZxi++F0&Z{TSS!RuR|*<<5E;ScbUUgMqhFjUXqornyHy1M+RpVFo- ze0bg;j6cD#BsR$RUMm}b7j-B@u$TK~cbwtlux|~E2+qP!apeu0Eq+WGkIw8=&2kkh z1gUZ{Y9=xr$3We(shFm)F|s0+0~N~AMhhQQT+}nP_%(CTY6nILSy* znOJaS7XYsCn~%z%Ieoq}GUT-w{+=xzD?#jJx$4;&0{!a_sQR{E6#bor(fFB*;G>fX z_cc46uur~LXnoo~_V&Rqyiu#yraK#JJ0&y~`6Dg$b;S=uC4zW;p*_dzmG&I3ga#|! zO!waZW+oRl&F@Er+|>JO^Mz4cX^pg16UZQO%g{&}q&%H8$a$FK9r^$skoS9MO}x#k ze|YQDm|wj2dg5g)jn5aT#VsxmXDJhUUt{lX7MNVIg&V!E)n{(N(#oPtZs3DDaKSXh z^wvj4FPi&vgRTdj-ndjS80lLpIJ&hAb}wQJOx4Dv0zL06TozAY%&1ZYekZqiksojx zcX4aVKcOY%pWK}Ak0Ar>Sz{9ZCo$gm^tgn78XEHxIz0d2;_f^cpWn>e;&#+fOj(7H zDX2K2)S?r`l;V8E=j*mg`&dbXRcYr^OE>glU8!+U@d8Au_qCDfx3eWh`V^e6(_h+& zg%qLfURFtQH#ZEf%TL?|WGcR$=T-hqew6gD40U-?MxCY)!>nbKMHN}9_ygV8&6JIg zN;Wz~YSDuwBlMEVHWw}SN-kQ%i?;BhLl=eHASTkNrgy;2l{M$&mJ?D;@4xT`Oz-h4 zofvg?=WAH`qy9sNH)F(xekM0j-?Y?GB*9BehPuJ_*WgVBBf=g8! z0S%fo2;75f8a=WS4G{sJpbBgKh+$O-N!ofz;a6JLCSZL zxHNAwL~>_|)WZ96U|#tA-ulAz(Kh?iP0K8vIGOD}hmElK2->!aURD>@%8fv&?f zxH5rx0A(8$Z{hNfSq44Y!t3=<*R8>I;c^t$S{}J>YI&M#m*=U=6jpzY&?o5s##fv# z0&6u-J@)UgAZ_7VUB{cWMhRxS!}EbS3R>XntnpRRM<_>bxkuet!=-wnIce6SUr9+b zNPsF%xNX(U4nZrdHPt!i?u8W-^v3ILp)`SRp}r9;)J?Wf3ZphdZ=>6@^yRsWwHmVJ z$nqk6Gu)4B@CjqW(w1C}Pf10&1Et6h06y7{e7&unVV3$H4$3~j0RNhpb1cO2> zlaYJmmit3+WVnW7vxQ?0X|vHDRpx*L?xu*Y_-$)+lTlKwxx-T|lH7V1PTRw+qDT8b z8tW?QWevU&OtE4Kg|k|}HP#!rO}B}4`HNHjJ*6Fti<_+D;RtDM$oJPoxDUVL7Vn#U zYdD0v?X#5#XWU`9jg=5iD^b0Rm9Wj$_gdT1Si5`q|8O;~-DL3~wWa;gMw^Jv;MeeM zmM(&=?Rs0m!cDttnf^4SlYC|L(NN8Y9k*yBER%)Lmasz2BZP+)#%YHWP{C_NZn@Uc z`2Yh`SQa#iRKhNod5?AKE&nvUP43dJLu_NSi(EN5x)Zk>G-3Qx)5ePHri$z4itCn& z>(=19@b&dtIHH?|Ikqu+i*2x-&J5wO#Mv@?^HzL(_=>Pf7{&I`5ki+<6zO|R{a{A* z-WV|#UQ)ou_D3VV)2T?dKOf1?wH7R7icPVHLh_*JwPi*0m`1JnoUKTodPgdM$yg>Y z72Qb!3m8t|PpU`=gmft3%89I^;=>w?*6pR zF&v%e|0Z?NQyS9ec7=a0ZT(17glMG0Zct3o4Ce|E@&I7+B55a@{ zEN3W%jc7{WbMV}$%W!+aYJ0$|f2cT;O5uyX zvc?bvhr$YyCaI^yX*h(@mc%?db|>7dBDY*+yo6&iy8NYvHiE!Eh%VKra%Bp5`*YCc zQ|n6T@+(b4o@Fbc%i|u#YlZtWwdkUaNYGe~GOJWG9Lk(QTi`2wu`Q0RB)B3xU}8WR z;fNtj@UU1;FyzQ+vi`XcxwK%-e1NHUv4Qn2PZ8l~l-H7p7=kEY*yYbf6!b^ouqtq6 z&u!yM6%3YGX3)iR=%Ueu9k($JJAx9P+`qHK6LYByrYOV{iRtQ}Llx+64XRva6KfNi ztS{*ERh<($Fo{>WO=kE$30rEB5Xl7ey%64Gy_^u0^Ev zV_omAr6)snn^({wx$`$eoqvk`X2i24^!c@xIX`s2ITI7XGJ7U;86JiH;C^$dJn|h6 zWBX0OiG>gr?lNBevm(H=`H<~sJ-XnZbX>B-Q_)}3Mz*~{SwklCGdxkX1Fcq-vHGBUnIp;vt|xeg8il# z?l)k`RY8XWEHCx6s!w2wp~-Mt&N9xS)TLp!oSo>C!xZ;d`^_4OErme-TqoqwsmpA1 zs8UD6azR1oX+?A2aA^%F_h`~eZnA$FO?Bflf_P$TN8utlu<&wYq65d^peSHEYg)?x zBnaY!?Cv@r|S^=wY)OYsf=p2pYubTGc=%JDS^<7;4ia62co zaiH-=V;jmZY;*ly+1C1@pVKVRK1`(3aII4fO(EDLRGamRE15uX2P6e}ml+jNqg(>Qm z51^mdp;~_Q_zO889RltQ%F~9{2xMyOY|^hPn!}4gt+370HH&zDFb8L&I1uRTpFR)g zayM0v>PY(e)l3zKX&j}6{5|mIu~vn*F`B`9-`sgRCP>&SDjEm7bb3q|NVZe(zTiwf z+n?UQGrJQ1!Q&Y1{pl!s@k;C5W5IFzS?Ilye`u86g(lZmG`W3nH8r2BsQJ#|GHQA% zYW{ujXLer6e9ApAeN-o(+^;jcj5wnC(eI;WN92|b_Qm~zFTOZu^VWH4@eW#ysc4aT zEaKF{8`eDJ1_KA3!DYBv8aWAn;71!MgT8-o1`etm-U z1{}%su%N=PS;ibw&}K24Z~;=l-Do$R3=+v6K7yu7d=TTJOF{ZtRMY!3T%^aNf}hVbSY&Rq!6pJ@js5G2UH}{fjt<_UgA; zemo{G?1}4!I^E!-deF`#o+7dledJ$QBj z&q|HelI&er-_?${<@Z&i5!rk64qg?!$6mr4cn=-Wd+xVW)y$mW2@D^&tpru}2v3JS zpK5tb68^Yo;j8YMq&=g~@(5EOKEZ3%SJ!Qy^P^9?_IucDkFuxC{Gg1FtQo9}8I(xz z!qp@hTtF$qgoyK*-@3tv1vY((mDT01i`;Top{`cyTp3y08-35p~X5F-yu=*M_y*QT92AO99 zei8hKgfwNBk;6JadaqegvOdtX!5=8rq3Nf79QCi9Ur}H93?~5j(Z$NT2dT6DEI;~* z%KAH~ui{Uuzn8CUJCC-(_dZrxKihrpLzQ)Bm%n#XWqoRx@6p%s=c)fgjh6PJ`H=ZY z`pZ)IoJD>>fbOm7(ej?&M@FO`mcr>{k^@?8wiW%Y3n-uXoBZg1KUZcuE8_Di- zmz}}OYWPRJFF*PyYdv(lhw{LX@zQ>@_58(cTX(&DQLw)5{WqMWkpj%CI3Muu8*XYB z@&xB$;rL$4;PbS>MxNdw2*lIsM#}f6*!vjjs?r#L7mV?{&f2Y12gTbF-tZaam~cyHwDdI-H@Xk37W zaU^>HCAV&%t|zR63Y;w}fGryfHpAK1#hu|QL;94a6yBlL%bkMh@dpVOsW`QoD(oLc zk)aZ>5kS+VVCwmVcNV8g4>6N0DsN94Lj`6rA@{bDOOknbsS?LzL((56T5)>H@6DZGCfm=jTnhgZXSeF2_g%2f z4McCigiv;b^uJ5iCvl=h#4(I5>X2A}@em|v7`|Q6 z^%tAD9yrF>$KvOh$LaI5Sfi@wh43OG-`HLG1KVI(Oll+;M5E7%m(;Ky!WBE5_oYY=@S89s+7sc26up)q zhUagTz6{lZ4joZ$0Y6FqVQ?d*qv2E(GImF_hqn>&o5@DRN(SO$Bx@|K+(7o>PQu^R zyQUuDhll{k22b!ve8a$~bbGenDG3~hYETkz}%FF)>s zUj52s`@@8VP#ZM6jS>giD46(Z1VuG90;&I)m@`0GS*G#9YAOj4x@gtog^Tai)RPzP zME`k=JjZ=JTG#2X?es0SN~30^NizbGw%z2CXd5Usrep=G0Gre$A(ew;kzW`|`sj+( zoCy7FXXTwtv|)y5!z^e6nm3rANcIty#?2F9eYqa|IgIIc5!sVxeqvcjh^+38y$biB z!zR?**MnX7|NQ#heowf534g=E1f?`v-S>RVmeFI;+!~gb&qT(G^;5+3wk|}K|DE-F z%XwAnC(#^M3H_9!LPe75D`LWTW#d zu7Ak2{sH05+BW!|t=~fIOvDNrKcc(*)Ae$9S?BfM*`v$!`?<1hBK;n&=2_jry?0*6 z#i;pMhSXiOPcE+#hVbA12F`tFjrzQ~wpGY;*GJc=0a}FuztV!QQ+e*V=eAOu&rwIs>CoQcIya5Y7Rfd_5K!bsna`cz;pr(fMo`VS!B z-q2&0%VYgroMirxLMrzqEm0TE=36nZuj=dlDn@?L$sRU}bImzqs5c#H2F{2>QADmO zp0W{llP+hH#ygGFF5Rk`QA|L12$9oFpCZ|dtze(=a9oI7{uFO!TrFPvPkXq$s6Bv= z`U|)7j+oMR(Lru%=ee9GN%nNupw5;qE<8E{fy5HG_yb-$Uk;DOhuMSp+BEx`yqG*U zDEGC`(+%#J?`h$c4+_^hTe$(Ab?M@s7m>XX5XDO( zvt94Svqz=J%zp;(VvlG-7dp^q_@{T}E=G|{WX4>tKmZ0}S}K>jkxSSF_LW`@8cxCD z)i-i&`(uMHdM|E9%=(HxckyhlzRQ&v0LWvr??GBfmDF%6)okZ0labE5&FEEsOt$L% zA$Pou=A_iuW9@ql{(NIBz1;2nYT(=aDazAE!hG9c*jvm~QxBy9sC< zGmS=wdZ*2h=y7^?Fy!1Zvn_n!?Yy$LFhbW?C@!Cy3iT15sD+U>GbJ8V0&n!`Nqncx zM%TBRwu2WSA8Sm8ckk5tx34hL0wclw;smO~58Ybvp>s+f5{kQtQ>Z9D*}Cmd&fqC8 z_mg=%LO(i+pDDeC8m9ULShp^^dotafLU)g$yPXi6-X3ljWA^l?+a%I97M`-BJyO3@ zTeO(*!HcCVFAM~CkJ8;o#4Z|uh{mb2Xv}jb!yiuJW5@8Z&K9P35|dl{*kYbZj!y348$}0PKa0i|cZ83-1LvPTe8a?0*;GOAs(N9f`D%hhm#X9REhAbwp?C*MY zQ{fs!(&8kLjEDQfE+Cg$gKfM)5JUq$p*M8t4Lk9MP+mDXNdQ`ZeZs$s-I1x)DhW_p z6=}UqmJ1!}(Riz0i1Rtq(tH{jHO3!!Jsx}guqtl;+`K#yxn%`sF!!-?45^I~wOVSw z#my*jSkcppYktjlt&v$#HqZ=NfH3eH@un0J8U+Bn=J z!6=&wNAgJVWCj@U^Of-PfboST_(9di0rmZ&(gr^|`kbZ_3w)*mJ_ka!)B7daWG-qm z@JX;yJNRk;>YIe0uJ#2X{M^B+J;19$A++%haKtg_41zA0Xr0Ez-H#eEiw(50@0{2 z)wEEVJ#Z49EP!jEZ};(km7>O8!#*TSJngAs_xo*+{6_RH`^6aBes7LGV!wD}@QWCr zub0kuCCr!2f(v&f<^6D#^-OLi1q~K%c^$v9&z1<0pkAU+igpe5n>DL`b)iY0KsC`~ zzc-tOypb()nA4lv?9R1jXDqKUqg8Cj*}!A(dUFJ`Rn;1_>1*Bgm8+af7|(R1Xg))g z@R>byNi*&xV92$@$tKBh0rIl}bio<0R6UrbFV0TEZHl8)M|*;fUTMEPXutoTyzhat zYRvx+VRl7hiShs9viY-#^(X)DFmZ<)L!l)ZTM}BbigwXXn&|E{WH*e}a;@0V5*xy7 zGZf{|Qr4f)HEm?z&yk*i_6O;M;jYq3Ro%%?HoYYk7;iTkv!|cIS<+i0;s}_A7Y@mZVQ{Q%QaKrd`k31PoR30%!j^Rwh!b@tbYNibNBf}ML=y`?|QyQaDIE`xHS zexHLgKa}&QYR`edq4U8n)|{!T&cnDc|2v+~AI$9QQ7Bb9z1q6zZ{5VLo0xUe-MWeJ zhJ6jtrLTEqUk_(r_iDX`blSeCQiCC?yxOR??&DEXA#Lh~Y^2@UZL&&owJFy6EY#yL zZHoDqWc8k_O}$#rU`dD?4syeMFZsrZEyu3uJiXi1TVW`(;(tSXI`Yp5Hj{h>L5%() z>L;ZCb23&W=>_p+xtcM;sgMfM+mLT%=)Y2ynO=-F_GOR3r={z-m)H;Wn_pK&V!`+D zwqY??248b7tnYkff_mk5*{{5eGm_swJ*$8QBqQae?3B?e<)G{= z2dk8CvcEY+r97LR(vvCq`}2oe*`F_=Kb7SSgZx6zuB0v_eQ6MNU_*PjgbogZM>`3j}MjDS$- z_3U!4WYqGeuG>~8LaeHQUErb-yRLn@lnKdqzIp(siF|efJj?EQzU!Zwdp$qmQoOz# z5BOfG^&XZe@al+@({J=+9p|RM!*yKqGc^CeHV7vMcve~=C`LonLiJ1V7;L2AK$f=u z@4o5vCO!a36j088>6uW@<2T*+bvKl5PG9qpeX#8_LBqu7=~Lk?0CkYraL}J8SGA9kgZ@JNrayU$T=nP;wQ(ii z(-w6^VCF1SJDo%8XyD7(my^PkvX}!EEWYtR+)@a8SmoF`F-+XrV2~q2z<3(tDpnPb zz5{u+;pC9|tv3bt;Edk7TM*>09$Ryn2Mpb8W4wNbsxUI|kKZT^^KRMlMMZ8DmtA@` zRiM|Y{q~}+72#{RR`V&YgZY~YL*+(lfY}93r?I<+>+ia25_P|cqsCBLN)vS##ZXD9 zaCsXdJ}@@|j26aJp`53*^(}#p&Teg;g0b7OA835B_FtKV4}i7AS((Hp8Edwr^;G~m znU%vI!DR>VFTEd(avI#x(*)dz0{1|$EWk}9m~&hD%8R7>%p1l zu=mXEEPF~Eok9o`^`4rJ>DdaF zN}68b7r+qvxIjmI4JU5lwu%Y3_LE1r5i(#c1VPpQ!KVF*x{(ULvlV>0k`{dZEclSQ z6sf>t&$T`W@Lc;7z^VAnF;Iq{F>_efY^MmM zNYsOaj~wLrfY2X4e}MXf0+M5x6o_6F`DY{?WnfPZVUec$Srd$CLlp)}^vOef)eDJU z7@QwN_oc_eRSndq+SHrU4~IL+*p*B8F>lrR{IGR}j9fLiwf8$iH3`=LzdObB|7-U< z`+uU<|Erce>bgGq|4I1pq5p5WKVbh)LBq59UmoV||Gk}UD!Bidci#SQp; zjVtM%hDO>aX$qv_F($ufh@FxKB3dU&uW&PkAx-Sx@WG^|5#xDh%+W`1c?*tA>BWf0 z38G~6SO6#KmeG`q7Qt^8*j=vLcsgbd8)d20{7ltD*+~-_)=^qmRsAMud+HQbe;C15 zvwiglh(fFBeEi@R=Y?{epbWhk_DqH+YLRs1LITiZqxidiP%KONxeU6GmeE@M>2~~= zLUs+~Np=%dv%&t&$b#(OiOmN>)UWtQ#viW9&DwhnH-n~|k;YD}riiHGo6tY;-9+3m z4Y!l{6o1UFLEWNfMH{jZrS-a6I(Cu{DK;Sk(FqDk*yyTQGmR)0!Xi}LyHm^7h{C)m zu%^2Vb0BJy`N)`~Gs@e}j_5ifUmz?Bv^0wv81-aQL~ASUK`3p$D9L*LvPDmZoFPWX zEHA_R<;k}yldr>97I`nS+KhW5%fED|lMKP1b*~Woev07dAr<70wbzx{VNoF~IGm1kQ+Wlw!FSJ!?9r&K zsGzH6Bm&L|=?O?dK*QKlId*m|!PP%3N{G0|dJSQuR$YxvHYG4{$qY)V*B^W?!+Y-= z)$pETR-i9-0O?EGfii~TH!1|HFDa})fsGNpc+(+#6GT6rSG?JiZ{j+f3Am2nZziyo ztR`xLl`!bo=rq-PSaoIBMHL;eNOA@%Txw=ZtUW(0u@vqR=qhA~`I6K?@|5`!zi+L{ zo-Y+LA1+V&&WFD}(NMyv2!8|Y^?Y~^%EK?thbz>4_}MMjS(84}z&xpF5%XaxZsf?K z=fhuqCSYGw8+JZ?Fq;C{-Sc5S1;B%G5u}A!ETr{(Sa(fo3)3|Y>6d#xEQJz!HL5kD zl&tx1i;QQC7Yw?0k7w+Du=Hfs4u2GHlzRM2?|Fg&_3FP0s5m5^dL6_qL9O6f%xmec zYAfL>e8>@JDy|%HrptAjUfWPy39|-^#fVd(V5`9|OW&)fu4fwq*ini4tac1v!euF7R1EthzaT?Vv!Kw2 zC-dq=vK0ynT?4S@%dxB^o;)y`9-~HAmP*M=C68bB#FeZ_EsvvXOs+Gu_SUF$kuh`F z0{B?<3mGWCH0n=W&5WgXwWjx2V zMUs_`6BvrB2L_K5=$>%lk6~AWfR3S=UR3aa;((~^qOK)|Iq2KB| zgnmy}^viw%{a#st*2kHhrZsc{n-A?4o3%eg+x0$WIFEv86Dy??SQLr2M1M$jA<>q} zb()^J%+NEJM&Mv7{|b7+fc zNmi;IH3?EK$f4&bTos9e?Bwic`p-Z+7ZQbWT9K%1_rNiuTtxs|iuQQyz3`_<)bDob zb)?5hYA6I<3X{NCBuz#cECN*=5UnP0f*Nf-QfW4%%NSp3+6VsuiyB5sK3ivB2PDF5K`%kjInjNglpEC0w`^VKcn-w}rXs{bVP*F(ua z8uUPa1Ib`zy+!mJk(chK$c#CX%qVUsA4L{G%&o@nd^2CIFJgR#X+U`o$>i6H^veNv zCi8(*YsQtv6%N$gZIZ$jQp7bGE_FMtYPO98pY{L=w7q?*VMxwsk(N~g$RHS1LeH^qo^sVI;grF68Of2+LUndlAX5fmB{4G|jzfRP zCN9f`#(gB2S}(vsWLPi2(N7S$99Q}0Qk~}i!jRTJNg*x0UXa3@Ahf={WxYVQDu~hh zQDw|wW?`j}=X!x130$ogP*rM1A(<*t(Di~x-w~Npc12j3)158#k~vK9l{s85K&M%~ zCtWuJ0p~N+qk`58qy}KTGKYTTUN5lqqhjfy`2a%?-EMNy!(_D9iylr_#>^iLJ>2t_ z&_nm%grx^KaC*}N69Uo0_BJb7f}$XLkQ(Hq2l3Z}TtJW!SxOYA%E~0p^jox75k1Ag!Otw zy0fsmtS9Y?;5r?@Uh(Y$0qdSi6j(LvT!5uOE5wiTs7(l#$9fVI0F&=}(t(IesM{N4 zy@J{LtXG7_=iq$}J~!g5Td09MZ-;f$$KgG6f{Dz%X(bzI~zM7q0H}rT|3mk zYFKI@d?bRW7d}kLh0pSE>wV1D7auIa7P8)sZF3Nip2G6RsDbMJKRATt4P~1PD>?kn zpWW0fDu)-AunbX1Dq-19>+LtZCYaU@2`C_q|2dDG7Ewt#7y(I$faFvB_7{-0|9NT? z(>0Wi1^J&#p&7z)ijV!MApIzZe@$vHgYq}m3(8twUZ@yS``6g|@;&Rxza~>(<^-!* z^|#BU7*t>W19p*vt!EBaB#=UuWb65IEyTa(a3KK?{~9KM3cPKKT3>eg*9;EnUn4ch zqaU?|^S`(k(G>M~`7Pr0*z)*Ihddsj>OGlV)^YOqMQpvNJRTHQ9v`N8H_QKm3AyC) zFtupP_68X*nQbn4T%i7n16ln<@>e*!U85EMy`Z(PvYX6TXq}yKDrTFjW)!2ss`UUa z0r)Di(;tqrli3Rh&M;0#%PGi0^u zIlZ2Op%~+FJK(>ojsGYo{;zuBf4|+Hu%mK^;s2uGf7JzH@&BbK{(M?E{v(w=IvD;^ zaAEitsgHfTvjP9qs|9@R|2R*9@6g9iwObMv`Sr6O@XI-Z^TX!{#M$U$hX~G@{*Qc` z2WM-mWKU%xw?HmPACp2eFm~%>!rw*WyTeWf-^)fg@tu=}@ApH@lzZdC_h+*O-(}~8 z#rI%OeEGCMd|T9p$w2r@q51JGUVi^_M+5Qr-#X=Y7d54FkKgy(O$m!~N6GJ+AC^750CZ&3{g^W2KGMVcai*kcsB!n-Eb#=H)rwp zsdh`kBENp*_aRM!^Qrv<;%wwM9YwR}(|no-XCuD{8PQkpd|C?4z_|V8_u1PSd>_8t ziEl}kz2tkfE0~nJap8OBzXad9v%}(hf+xOwS|GkHYQwO_#08DdQfPjBi`nn}yKN1) zuOYH0=E)H?^J-MgYwg!R_<5Jv+UPD_&L-5AX8`N?3g-x@7FI<{yy2&K)BUqPX6RcFaXq{ zKQBX+YZ%NoKK^|CX~Fh@zG3;ZhsM^ue~3>D2jNfVoR>d~*N?aB zVo)4eFt7E3 z{IA+;J?Wsw1^%*xf#_T*80VUlE<$-B!C{#J1jr{Tmbcu$4tn> z&kJzoP6+*qIp^Z%qUG_LbqsJS!9Y(t*NI<)8^0xwnEG!h{I+>e@Vn#0u=wrkhaVI2 z;J4%-ru{+2Q|6otzxI>IJ%2Djj_dD~$CG^I@uTlZi+(ivao4{K{4>kL%Hw?meh+!f zgh29m1P%xbqaRBR)~`I??|VZAqj6xTEsrO<`T4oi3_Wisem?Gg0dz}5d3l@P5<&Amb@>&V^t5$>Y*54UiWhMmK=e_TyR~d3=E_RDKll`1892{{BaVmB&2# z)pP$Y69UQO=z?(aSZYv^JT4D=KEh8BvP;i*2O{*h&CjDWKjWZoo{w;FZ$r=FhsL88mJWR0?h? zPWuTZfbe(*^ZfkVwU&j2h{^g%ft&ldgi`~Yg2nM1-5~hvcxYIBHbs%1@|FpH_^_#+ z?WP6+huJ#7dD|miLTG#*TW;{#0-?kK%2wjXbV6qfpL^^|cMLv@Zx?*-I3z4Spk;4- zn2-yf8Q&OE41y1{&5IBAdla*N_7iMBx8xrpVB7Lzg;(T z$;UBv{WlbT>uwSJEIv z<8BuGKG{DkevN+kF(D6rj~x>VKjyq%@w?F*`Cl5X{znN~+8=tULd)$B zeg9EHYa(s{+dK^$BVBOs$wIkKlPHEf`GzYO2}Cqs$@larpdIB8{ponYdb52M))QF; zI8kz&Okshmp5~ibfvflwKo7>nJ8+dNKElW&O@9^c4=n}5_T>y*mF*90*+Y~6vBMeS z5MY@Ts+eW!m@iQ4uKM8L^5m=WxhI#f>T^#n<)wG>h2Dq+k6;k1`4fNXFBkpLHg;6m zrj^MTIdQM5syks<@bDF=(5~_N>!Oj~$u-IMdMDEr$tCHF{=2q~XR}6lgl_`Qq1_Y7 z>q{!|ZqJJ3$kKQ+P3|tibe7y5BpN=8L%7VPs1jr0S63j&8Oe!fBrTV#A}e4~Jqo`u zzih#!vhF0D!;s*yywAmWgJAZr>mc`~NQ^PSehM!lh9;7>#~}u9t790Rxsmj;+gE#& zUM49LMzl=!3;Sm(uKZ(=p5eUV;b0^x9uC%kYtxqUV?wk>uC>A(_>ct0BxW)mSN`F4 zhPso-GxfcyAA>q0;=S(f7zq*bvrF7V@0sd8oAz!*eKE0(0%hV*F1^JgD?&q$VahdIW96UsnN zr|ZLKCw*n?BVh+`Ghb!zhO@8EsufwW<6dFMg)P{nUgH82{Ko~E|J?ee>4G3b19Nr^ z4YL4W`<_4By3pWv9D;w_^H;J2ep&XR$EFzlBP@i)?nhjAgWz{fBrJZ%`QgWeJor6! zpJ{&({Ft)?KkxZ#k^2$%g=3c<+^!PbnHjGOnDg>GqSIr{os3z5p18` zJ>WQQ_Jbd*v32i9`STc!Vb*>`CgkDI1@``dApFUk^YUjg_$A@zpqX=V z4<~+9ZyfSRn*vPT;~$?EIR3TVX1a!x*n-ACDK!81S0uhCy=L&e3vst?d^v5zF9*I4 z+l|<`@I7Ia;9IvtSbUH4#FtMC#CPJP;P^_RIq|jZ6Y*rboR@aqs|M=n2*3?+k5bW5 zS`^fSDPCh@XfOxEnFBrKh`u$dnQPfyA&nCDso`{`Ddb2GdQq{4?R}<4m#axN-9~Ot zstI$ZM=xC|nl5P5h~a9T>A^IZC~El#e@@GV^H4s!H!=?O;Ng%w)#Ii=3t_RxEoa<9 zPxX-MfxaSYbYK>(a8kgj9;#N(^Z1I5Pu%HcLt1C;Bc!GM0T-cE5L(uL^3QLTb}^Zh zl$Ps8yr2Aot3<>M{h1OmDb^RJP>yXhg-Sa>0z>f|1{C|;Msxo65q#6@JP#(|%fk1Q z&zNYs&LW9|_LEBuKo9G2Klz%uh73;ITgV`yBuwdME`5ASRGKiEeX@b{@oj!9fId~K z0IgwF0O&-y782)w4&U_B^OyiY`{5#Dp}*YVTn0ItMeJ2e_BQPgqK`9YhpOjo?5V&;BZWJwpo4 z&=s=RGsHi?NPY0|IR^Z?Jp_EM@AF(>w?25S-IB1#uOEH?kjn+<^R^C%v$1!bMkKTJ zeLl^JvwfaG^`0(}3)1(c&d?Omb$wSR@UcY5Ca$Zk&g%=ke7H=+HNw^hg%C!dS+ z*S>t1V7OzKu=4p-jbWC(iwS=6*=oOnkL?d4pP6%R`5e+-a&NQ2?b}@hH*GIrOakDh z>?IL1sE{2~s7wdgOJ2NGaJuEEVR1Tz_4FD?nc#;L{kGTcVcHu6BxdUX$!#xD_>?Et zQ8|`i@M)gVvJ&T3&17|IqdeP}e^mHK@h085$$;}K1pfvc8l2&3`TzI|RCW&)<(*#> z98ohc+iJjX+D1}xwGPiwXBT3%pJmP_AJyO{m_L1wOBDb7#EHvwI6?~As?-AYk0V#n zR(mFr6+D$b5gp3o3L{Oz`Cgzf!4DL+^9U8woFxPSh1n`l_+{(6T#1vT>SZn7CGX0U zZI0FYG0PXSMzvAqz(3Bk*t`5oU-B;l&8#w~yc?$dpTO@G*q?HSsP-D&xR`S+IGxd@34IQT{^R@naSBEj~R%@ww4 zj-h=hz>ZR3WZoZT2sYCvy6g^8S*#0Pm+WH8; zZS~eiD#Pv{d+BKd?(T@Y4bd4<^Th$0Keda)W4|<_p2$vRcL3Sx(wvTo*SmO-VEFUS zVfph8R@zIXGQp2Ot@a;c+8=~JnR71wY-ju8_fHu#s}N-yXr8Rl9HD0aS61LS-#9cD z%g)#*xtc-{4o|I#3a)B-}^X00<2H@&B3ctbb!lpP*n66T#kXzH6d~BewOiqPb zAz2%GN<|bQvT3bY@@pG{@x37WDAcz!duLdWJb72pMnKOjn(*_!0%3|2K_NfhV;jz zBOWv~)^4`4Ul8;%2Dzko;$ch?o+>(>Kj3gTQ?89N8gW3Ghu?Ady`^vkiV=&P>ub&mCr z!s+GIe;Rs8ZR4bu!MW(Ax81rQDZOlWzR=6sA2tzblOh0t=;d90;YBY@2u?3w{WcW6 zNG;l(Ui$dUmt7t+^fDYFura=A`Ep=qQAL$}Q3BMKFHh`iTGvtZ!kwb+C|~}2uF%W! z@59o|R+N=q^umNf>BXFPpB}W2>CqtaMQTwXz2sRBE0^=_bHrC(i2#4v(AFCMT6}=u-k^D4~ltbD-P%9$Ej6$CAmFerPh9GsmeS5`Me!aiY#OgI+Y2v4TG{FR4 zn&5ez=rq@Pom12T1iQ{6hl19_qz0geJnLb_uc!QXnjwZ>h`SA9(CaCy)i~o`Pub_k zv!3$u*-G(Pt%zWv9!N-UG&42w3Ml*I3LPjxYlqBh&3ei@zJUby!RCC5&vMOc9qUiu zxJ~VaohKy)1AC`$sn2>!G5(3I4;kc-L#S;aA5j|VLNpP-EdSCoMvFw7%<+79Fo@zXuI|qdPnC zdlMx)@Y~j||AxZvxW0nlJ70&z?=V07n2-m*ZLbT3A9K!)UyGcV>}ikh#c`rG+65Q> zaVE$)8voK){@vjAA|h)8scRMAy($v7>$nu&qFq2)BPK_y@g-+@LvfAQ)kcTQ?^^8* zH6vOj&!Z1`~Q`OqVfzq20PH{m3Bc5>}5SA=5<^z}X3n zkrBC0i*}dmjA&23H)akSHM{E`HK?9^rs^?S%1_iylJXOnv9rFm@6aS^2eXy>V+y*O z-(w02i91ms63$C29uEZ69$2cWT)DMbrRMjh(oP;Lo zFT=b~+qkv)x?58f$#3(8Uv7eOCkQGOAI->uLjjR-8X`Cl4A<)olaxIVy*jGtE546T ztme2;g&+8}7|2o#F%7qq_!NK4u0h?RE5y6PLNtL6SBOrM9$}BEp0p61ppe9TzKS)| zh;qISMElVq1zV9q6c!zUHNEIU2co^%BQiA~8FO?-dE40$T}R{#q%q@7E|zAMx4~Qt z(jrB)BK`>UL)-pQtiD-;4MbYse5>sThrT&gsTkS%rZNcsX!OksP80Fguu_S)6bT^E zob^+F;WY+ALJ4}kWQw8$`t$1blA~V{s~)qVh>{s2MAUrzrYu<~*W5diJ=aS($4KF0^lG^E zlHVo->{nJOu*v)cn{CXgR~r9~R=x=_;`Z0(Q`E^{ue7@+^0Mg~hxF6z9Iv}BT19q_ zFgNnK*sr9}44u-wUQ#f>SIYddck)FbOFH8pQ6@C}OHWK0lt233$?r9q-+L!lCX#Cs zW`23WHHK)3wG08kdL=R=)+DNYR!-0PB~6>eg%ZEBiOE&1xN*&-itmk?!xqfOer1S& zUPhU%9|2_*>Jc?qyvlk};BZi)PD;tgFagbS)k|dv@GXK1GKhl}L=g2%ilP>IO)cI5 zTv27ABx11+VHM(IUyQ}6zhei2EY?BSQ>!aVsl{R*7QbGjdK!T=f?B(zH>q#3Djf@U zrL0|jw{u%bjT55M59s;vD3yQgs8Q4-tD6?%Cl~&PQ=`NRo{EBCv|D^M5pVD<-1@1u zTtDl{fCjo>ptiD`WXVp=1@x*NP8Q?f1Wz8AHXQ4Bd#dvZSWioYb+?Zo)2&7!5jCo* zn&4$Mut^)F3Vo@-GMCoP>7k=1D%O0(q0i=^UlIou?(Rk#F9i?Cf8|tW;R35%o<%YvyF8&dJQ`62Xra^duM zz#WGEYQA*R-_TI>_o`C2{}<`+xtP%3AD6Zp{k;d6HT~(^_N2dZrQQ>Yp!CPubP)YL zjNNv6{O*K6+feFysqwp7(ciE25KED-{Wi?9WAeag`r%iN*G5=@rHMyZj~RZ0avny zqYQ@%&J2a8FwT#{Zw!kVc=d1#BNE4&{!P>mSg8hHsS)665g5}zYk3K5g1tEsL$6tn zgqsYyJ$jochy3Qhug4QRc2B3;|Sf8xSx!>zV zY$()nrU3!1A!qdZyz*B&8+oFK1IF!?MSZvx__SOFM&V#fvtJNjufx6 zeW7eyk`xT=3s|2lWPKX=SBhUtBdX3nDsk)v{-sa6*~TA+X&e7Hl`wF}FMO-BkTY{y zkN8s#6pw!|!N2dKu=qd0MrPs9r#bO=#V@>nGt*y%<1YmlhJP{Z)0Gnp@^^nC$g8a@ zCyW9SSn=g56yTFJ;6#NCPx2wdi`2&NX8Elgk2u+%&-cd6;n;>1tqLXD$MYqycnz=h zg9Gf37tY zR~WJjf~-$7XUF=cM|`;!S>LSm+HW)uAA?I-CjZE>Y%KrMxBk)K_Ax?i11!DeXsMFe zvL9@~Oc6X5ZYg|7+=w4>n=V)Fn2O0;GtW^nYgi92oS5K`)2j5ar%Zc;fW&MaAbITv3yjYf;|)G1Ep_7arUM^GeJMy&Z1?)d zXNO-3K27h0#pfH=(+eLa@RA>9sgW|-$^$a zsP6hupwjDQofTAlu)ipw_7@${$w>0BBcE%%jDoNM^`Wkl!WEqtZoTY;g9X#A-VQj< znf0>g*ek%)yNsD|G>Kg*^k0w)MNk++Wn$cP0jK%5$(^~k)k=RujZRE z{II6k&FVJSG#lo4aV=5ZGDCy$o$+)@9wRO`Fb;fzjg!>ON`Y1S!+#ktJXEaVVy>|) z+bkZPj$X%>16E0F8%n^inX)+rmhBiC;TcaMQ@#*OC0{&=@8cT`@g2Qbh_6x+9}c>r z3)$~Tbc*C#gcukqXwWC+y=6BxEah4IRkU#%gTJCb`n-U6N%vmsx}-nS zo%9;$jr3=&%~(WNiTK!c=f^9@&H>#e=tyJjjdaqTwKoz=D>ojPljN>h;7xM%Qg%L) z<6Dpf!ATAfXlsv6a-RbZA-VLKjV^l2mUhEEsg1SCq_!iuj-v4Zye`Q$A?&x>}JJiy?VY zw(wom114wTal?jC%yP6hH7w=6g)Qqg?a7CC>_j zvkQVuC782ARrQ$f6|b+}4p&e||>LW!E_7v$>U3Dbzz*&4?G@ z;xE660A%)LRuF%#`TTRgH=yqDwu3Kk7_8*C%;#SXf8=9V%l=Y>l7r3XKaL7qr@tJQ z5AS4Sz2=Kd@aMx-=|$nrePp%{CUno|i|4-`erKS%>`j46&ljr|R1OxrRyBZhwsEoG z&-NBf@0u5u1sgP`?)f607RZ9tUk7JFDb#}n?Rb_2>FcXe%N+KA!{HdGI<@Cuh>m+d1Q82T*^?SCoW9L zg-gG1xG-A>F70|A^`5^q_+0&OCq6?hd_H)@5K~a*35U;Vy9z$LJ|7mJo&E4(LN0v1 z{)cI55WZoy>kFST!wo)fzv9HFzlG01Hc@p9K9B4y_#~Ud;F~d)^!C50Oun9D|Hk~w4Pg5qbT&{@E*B>Z!0p-A_5&+8z~c`|ix#m* zFfyg(8f^1M*F7MNw57z$|AuQ3Gm&q5?caE`OyF;rrQlDo%Jq6txV{kon;rRum;VhD z0Drc5hNd;{*UH?#G2%hfdtx1~gO{|^1*4iDB0vqi(wHx-V(4WUhouIRr?@?{_gk;e zw#VdKpID9Wa{FJ*9%hK4Y@QH?bW6ytC4?xhCl9tg4xc(wg)Fm5e>i|E5fev#X$ ze{KN#+luW4#8uCPmESwD-d=hs6M$nb``ez1%qQc`AVVy3c8G9q`&%*i?R1I3@A5fL z{Hh%IEmf4q%5OmYdTb~7o%D2A{I+NPz3^i~9{iR}H6$DaKjxelzarQB&qk0?Jr#WT zd55sQp_iHpI_x(Ot5#475J(#E$cXcC<%DpdTm$TnZMXIQGq)9NuYD?@fHmv=udyk> z)@{Gx)0_g_j-T9`jv{mltaH7jy>8M$O@A-w7e#Hb(!3bQ$kUmOo zv>{#Zhqn||*&kcGpXs_l`jylmL%*sCr(ePUBZq(MAcW%3#4vM~5QFw_jw@oIf2;BH zNZ+QKQw-PV@NcFcM+!aKE{fJETMH5V=br)PfQi5K1~JZ3wD>fq9B}p5Mcs{8RN;!2 z6r3Royy7plgj-L!5}`UY;x9Hj#_1an9fwXAYCYv*Gf0u;iAo39`)=P#FuUUMu;cRe zf|-XOD--<3Wvr(RG3^a9C^K8fpzK~x35m~w3k*K{BEGlLgKt>rz-L#xz8#3qw?7el zKA#>IpX>baVL~o^4!kH7KFrn^p90pqXidlwe|_J92C8eH7O3=kS4C%GCF)B$p2#al zh$NWC4gf>Vl&j?^up#5G?^Pn09{s3WPNrDF`ai0EX_4%YOYkGjscs0?tvMeO$6JAr-mILl`CncJ%LXP93Nw9 zjA7RlJU&XHImbuX6XcYc%H&$vC&J0Z%09_|C$J@awOYv;vs_%Ckr07vXm|1Nt$;bY zj9b`ZXaHmW$Jr2dECVViu3Ia4gTM3^XKDOrr_Y;C{JW0(9Iwag`c~E5&`W5bYi&1( z<9OY$Xas8y@PkH>$U1}-M3#-n0&g?-dHOaElRQ-?%h9@i7Zk<=aZ@J+0}q z-qRWtufIM~y&on~p_J26Wp&N!NAtv+XV_r8(5SyD~ChOlnX2{xg+{k~=l(6H@E`-HPZ(xGo zxWn`160e!|1{rjitz*z}&zCVDD`x%S&MJe`iiZWKh|>4^E1ax&(qH`BR6VT9fcRWR z>3ffSC%D~oUs&9B@WYJ>{G9J-K=Y`u3ddMol^t_b9bRsK=#Q~}e9A>4$$h<#( zW5l)>;LZBb_8L?7`VgPuv%&m~1JO{qak$vqT@z8ka9C2o`kWMsLE5?a?p`1A^zRLb z@7bpsd>?+miEknc-^=VqP>ON@ZI|`GqVYZR8^QP4yTjtUohQD0S|GkvDu7lXe5KI* z_!cuh{;tx1``Q%e_!w8F zJ8>gy&V6*^8>Q@7FB$zH$oR;d9irD`eDtt42jtHuPc{&4b)SChy2~jCc=%2 zKOg@>u)PeEDF&YkE`RGtn9vm6@|RBw~bu=?Q6uzV;}QLp(06a4vbReJf{P)x{d9Zcxfe?sC@ zUSaUL{T?SiQ3pPg?fQ1){BMQeb3sE`e3GOiFMODg3!iB(hQf#0wl_Zao?!6#_ODKS zx;yYm*!Ar|d|q5G_`G?0SbYBIhYu5S;WOZcQ1~!gUwqX3JhVN3P0ZkQ8iH@z>oH{t zCu==s6T9k!YAU+`qK*nWEk`ruYOS1lZ?P_RJ!YF_g4;Q_g~jbgR@#fNnBa$-UeefP zPAKS@vjaL0{UfaWLx@H_KfnDiPX5~7!Cz}ee+_9BoL>KPSe(ZB;lu<#oM`{* zVz)PllE`cwAhpZ*bnmeSpKlwS`0Tp5?awperVWA5i=PNSkNznvJ}3L>@l42t&*U3T zdxPM^Y<=-5(muK7XoJ&fcR1zWOyy~3&A+ZZ-Bdli{435rxy{Fd+m@kmTj9r7Oz_7| z=3iHyX4)SFI_B(v&O`nciQkb&8T@X(&57TP4E*f+Zz%juTPpZnJTWZaeddQB6Y}BL zClr3nIWK;h_RGw8Q)y(9!(Z#_UIxNf{wxq``(<|pp~GM6vSw+;#_{n_2T`KE-GL_DkDet4f7;3$z|Bh1&CHe(U3}6=X$5LHL&|NkfWv?ash^QIp@Ovr`LgaxL( zLGWR=dGPT(&y|y2_$N%jg@0UN8pWIRl!Fa8YY?v*;OO8G3EUo!gILplQpoUAA|vAk zIHv)>Ih{_))r#by4yHiNIupxU;_6yY zZg0hrOgR6EXHi6&wnKs^$1uSU5w`Oog$PRsf(Wx!i15qScg1rghAPNl%S-xJ7I-ROiYNc`}hq3=9VV}d_wqVGRvhvE(b z9CLQCl866d$nofm9tO7ul1`SYAWKm=KYFzbv=kd(;9$ggSq9Me-j(_x!vsHMDDR$89x*}X9kb0T??T7V+zGDO8k);*bjrK!Dev@Q0dKn3 zvBD_dBJYZ`Z}fOeAUom)CuBk79V~0!{KN!5)N~gtu$PL0uoQE4u#|_qgMA}2-bQ)y z8|}}_?Zac1uSO;&9(W^u@Q>b()75RKbYJZ7)F@7^6%_S;(6vh2<9RpO4_c92fpydL z6OW5{U``yq=E*hKE^v?ipxhTs{e=5Lsqs?}N#Tl))jmIr8T)=5@w@3$i{QK;$T3;{ za4Q}+I69_s?DKGBeVdWV)uFjZ{YNk#RHHDTi2Mrj`!V}L+xP_(l~L5bBKX1jRP!mW zx#rD|{u=j~>94}~gG#~n+?k!->a`yf_!ns(Is4}Z{D%>m8+@znBatlo$k9EeCDTwD zB2RshV_-9`R4Yjd^zWT7S9Q)Ay~bPc8|q~mm)Wims>E7huFfm5u|7ZEC;2Abrb`$& z8&ucU7m<$%yM;9f0W`2!;d~}0JrKutjdtUlV!;L3M}&y8>?3@d2WM-mU*sUuH3j>3 zNuf5z?AG?SkNj>Q1MX`Gi4Aade3eqlXKfsqVXtd!Kz;P)*9F5>*M*hO@M!Xu&rAS} zp8h|&3m$u3;G^IPBA=OaZuuNiAAN3bgWC>&5Zv?>uM2P!ee@o?#sn>enyg=abj7~~ zpKGoSix0$!H$F`8!-x9ljORju!)zVkgwjXtN%uk68==R@+Uo_8tyGxlocQ_XSKCLxqb-W%MSy=Treu&|qlsBAq zW9JNxLvHHA=V}6uO&~fBxIDyH-TATyAm_)>oos2}sI(Na7(?J?Vp zuzs7c48#pX?ou8;ZiQ`)v7>5P0xDqb&+wfO*!}-##Pok>MEpjlZ=*c@D}Xb8oxqBn zTLc6#Q8{W*uVC}Ew_le2zh_jC{$C)?7Xygh|MIYq{=X`4|1)d$Kh_c4{hy9QnSziS z99>CGVm0(d4(l$vQ*E>ckNB6~Zx4gQXoToSzwfBH;6U6Sn*RMz;nWFul{~<)okA&v zD;0#Pa#d~}mc7a9Y&qqCfk>Ul9Aq7)b;(Q8*=Jtk?CcB^6KTdx?~$ghSQCrhyK8!v zhj_Uc5`F1C{lLYJHWf_p%v%W`c1A0Fw%R6=-UIgc)4Q4e-Ue~D?f&jA{e6_PZtJ7J z*UXjv-t_8#{ryukI;+3sVcz~8qM}?V8Y;NInYUMegS1CPSNqBr7oA)7)rwtBr{8&v zbhaE`wPn;iZmfQ-mK?2ie+#78+=l|Evc zX=f14h}k;upovxJU*Qq>{J6(=3<3?aRnV}fTHWhK%3mV%dhAbjGB^z!Avi_UD7_Zi07RDM z@3+LRI-%mgz=2{qt{vs?xBG0t?WQZk;`Rqt+RMJm1V7yLd}B$tc#h230bODKF69B@ zXH@QJ@Vgr!u7Q}wuan|4`YTl=+tPcs2Y!}4k7j@xv@B7N@!zQrJxzQ|G$-y{evtboR|9AUM!2ZA1tN-O;-u}N&9rY2g|Cx8*{tu}i-1;+v!^gi79JIkv|b^@IK(edyJ@;=(_! zG%zv=|I)3c2B+f?R8^19@mEVY^A-}Pbz$+{ra5ZRC$3+h2l7R&J9){2tu!KZt4(ZN0S+De7s;5|G z=H6ZB(i2yf+DoqL{8KCZ2@Ts-d~eJgHW(*F%cm?jfhDcF2Dt$Wi`s&kL z8-Cg55|L{WrBBbZ^)WOty+Ad=5^dr1X-gjq7tidqr$o+uG9;{=dz`f3rB5@#U(Sg? z$%2MZqK-K`M4g8|-QpkLA`ZAgx}I`wlP(4~#@D8tBgZK0=4d%L4NpkX6eE-Y{dvXN zqYxiTEKJklqSlA#rwNm&gP6VKn;bVQHeU+4->5#agj@uran40y$I^Ssb($7-GbGj% zgd1BqThlWtrnqvF=0-~pPtt-|$!c;9+eG;$Z9?uf{Oy!)lwU3E06bLkZIY31O0LaN zLI;zBdF(pKGs-=NdZK(YG7a*r0J*mHK~D&I4jrt>vzb{!u9dQ0kZaN_K$9r(k8)x- z<-{n;l4{cB(5A(ouA=j9kU#?MZ#SQ9{bq`I_kgE}bCt(kl_pFfv9z@cEkZU9n ztZ>UJxVKD$+)MxAb|ciBcKSkO8r$KLY5x|PCia^ml>Au8*uNgcJk*8H-9dfw88mv z;G=@!s)1qo^B)?+to;;B$itsY{%qPGgg=>cZvJcuv0gE0GXq*Hf>Xn2rzgKH3N%@- zcvRI`&DlF*y<*ls1fOfpcj8mB8tZp3g#fk!Hx;lm(A|yI>(b;@#!^KktuPuMǩN{o4;RCip?7{fW!R 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 H`q=wlp{x>u literal 0 HcmV?d00001 diff --git a/montecarlo.cu b/montecarlo.cu new file mode 100644 index 0000000..25a3856 --- /dev/null +++ b/montecarlo.cu @@ -0,0 +1,343 @@ +// Monte Carlo simulation of a snowball fight: + +// system includes +#include +#include +#include +#include +#include + +// CUDA runtime +#include + +// Helper functions and utilities to work with CUDA +#include "helper_functions.h" +#include "helper_cuda.h" + +// setting the number of trials in the monte carlo simulation: +#ifndef NUMTRIALS +#define NUMTRIALS 1024 +#endif + +#ifndef BLOCKSIZE +#define BLOCKSIZE 8 // number of threads per block +#endif + +#define NUMBLOCKS ( NUMTRIALS / BLOCKSIZE ) + + + +// ranges for the random numbers: +//#define PROJECT1 + +#ifdef PROJECT1 +const float TXMIN = -10.0; // truck starting location in feet +const float TXMAX = 10.0; // truck starting location in feet +const float TYMIN = 45.0; // depth distance to truck in feet +const float TYMAX = 55.0; // depth distance to truck in feet +const float TXVMIN = 10.0; // truck x velocity in feet/sec +const float TXVMAX = 30.0; // truck x velocity in feet/sec +const float SVMIN = 10.0; // snowball velocity in feet/sec +const float SVMAX = 30.0; // snowball velocity in feet/sec +const float STHMIN = 10.0; // snowball launch angle in degrees +const float STHMAX = 90.0; // snowball launch angle in degrees +const float HALFLENMIN = 20.; // half length of the truck in feet +const float HALFLENMAX = 20.; // half length of the truck in feet +#else +const float TXMIN = -10.0; // truck starting location in feet +const float TXMAX = 10.0; // truck starting location in feet +const float TXVMIN = 15.0; // truck x velocity in feet/sec +const float TXVMAX = 35.0; // truck x velocity in feet/sec +const float TYMIN = 40.0; // depth distance to truck in feet +const float TYMAX = 50.0; // depth distance to truck in feet +const float SVMIN = 5.0; // snowball velocity in feet/sec +const float SVMAX = 30.0; // snowball velocity in feet/sec +const float STHMIN = 10.0; // snowball launch angle in degrees +const float STHMAX = 70.0; // snowball launch angle in degrees +const float HALFLENMIN = 15.; // half length of the truck in feet +const float HALFLENMAX = 30.; // half length of the truck in feet +#endif + + +// these are here just to be pretty labels, other than that, they do nothing: +#define IN +#define OUT + + + +// function prototypes: +float Ranf( float, float ); +int Ranf( int, int ); +void TimeOfDaySeed( ); + + + +void +CudaCheckError() +{ + cudaError_t e = cudaGetLastError(); + if(e != cudaSuccess) + { + fprintf( stderr, "Cuda failure %s:%d: '%s'\n", __FILE__, __LINE__, cudaGetErrorString(e)); + } +} + + +// degrees-to-radians: +__device__ +float +Radians( float d ) +{ + return (M_PI/180.f) * d; +} + + +//Global means gpu and callable from cpu +__global__ +void +MonteCarlo( IN float *dtxs, IN float *dtys, IN float *dtxvs, IN float *dsvs, IN float *dsths, IN float *dhalflens, OUT int *dhits ) +{ + //Not sure about this, as it's differnt in the project video. + //__shared__ int numHits[BLOCKSIZE]; + + //unsigned int numItems = blockDim.x; + //unsigned int wgNum = blockIdx.x; + //unsigned int tnum = threadIdx.x; + unsigned int gid = blockIdx.x*blockDim.x + threadIdx.x; + + dhits[gid] = 0; + + //Get stuff based off the gid/thread. + // randomize everything: + float tx = dtxs[gid]; + float ty = dtys[gid]; + float txv = dtxvs[gid]; + float sv = dsvs[gid]; + float sthd = dsths[gid]; + float sthr = Radians(sthd); + float svx = sv * cos(sthr); + float svy = sv * sin(sthr); + + //I don't see anythign of the half len so I put this here. + //float halflen = dhalflens[gid]; + + // how long until the snowball reaches the y depth: + float tstar = ty / svy; + float truckx = tx + txv * tstar; + float sbx = svx * tstar; + + //check snowball location. + //Project video says HALF_LENGTH but I don't see that in the template file. + if( fabs(truckx - sbx) < dhalflens[gid]) + { + dhits[gid] = 1; + } +} + + +// main program: + +int +main( int argc, char* argv[ ] ) +{ + TimeOfDaySeed( ); + + //int dev = findCudaDevice(argc, (const char **)argv); + + + float *htxs = new float [NUMTRIALS]; + float *htys = new float [NUMTRIALS]; + float *htxvs = new float [NUMTRIALS]; + float *hsvs = new float [NUMTRIALS]; + float *hsths = new float [NUMTRIALS]; + float *hhalflens = new float [NUMTRIALS]; + + // fill the random-value arrays: + for( int n = 0; n < NUMTRIALS; n++ ) + { + htxs[n] = Ranf( TXMIN, TXMAX ); + htys[n] = Ranf( TYMIN, TYMAX ); + htxvs[n] = Ranf( TXVMIN, TXVMAX ); + hsvs[n] = Ranf( SVMIN, SVMAX ); + hsths[n] = Ranf( STHMIN, STHMAX ); + hhalflens[n] = Ranf( HALFLENMIN, HALFLENMAX ); + } + + int *hhits = new int [NUMTRIALS]; + + // allocate device memory: + + float *dtxs, *dtys, *dtxvs, *dsvs, *dsths, *dhalflens; + int *dhits; + + + //cudaError_t status; + cudaMalloc( (void **)(&dtxs), NUMTRIALS*sizeof(float) ); + CudaCheckError( ); + + //Malloc the space for the devices ones. + cudaMalloc((void **)(&dtys), NUMTRIALS*sizeof(float) ); + CudaCheckError( ); + + cudaMalloc((void **)(&dtxvs), NUMTRIALS*sizeof(float) ); + CudaCheckError( ); + + cudaMalloc((void **)(&dsvs), NUMTRIALS*sizeof(float) ); + CudaCheckError( ); + + cudaMalloc((void **)(&dsths), NUMTRIALS*sizeof(float) ); + CudaCheckError( ); + + cudaMalloc((void **)(&dhalflens), NUMTRIALS*sizeof(float) ); + CudaCheckError( ); + + cudaMalloc((void **)(&dhits), NUMTRIALS*sizeof(int) ); + CudaCheckError( ); + + + + // copy host memory to the device: + + cudaMemcpy( dtxs, htxs, NUMTRIALS*sizeof(float), cudaMemcpyHostToDevice ); + CudaCheckError( ); + + cudaMemcpy( dtys, htys, NUMTRIALS*sizeof(float), cudaMemcpyHostToDevice ); + CudaCheckError( ); + + cudaMemcpy( dtxvs, htxvs, NUMTRIALS*sizeof(float), cudaMemcpyHostToDevice ); + CudaCheckError( ); + + cudaMemcpy( dsvs, hsvs, NUMTRIALS*sizeof(float), cudaMemcpyHostToDevice ); + CudaCheckError( ); + + cudaMemcpy( dsths, hsths, NUMTRIALS*sizeof(float), cudaMemcpyHostToDevice ); + CudaCheckError( ); + + cudaMemcpy( dhalflens, hhalflens, NUMTRIALS*sizeof(float), cudaMemcpyHostToDevice ); + CudaCheckError( ); + + //The project video doesn't show this being done.....but it's part of the function... + cudaMemcpy( dhits, hhits, NUMTRIALS*sizeof(int), cudaMemcpyHostToDevice ); + CudaCheckError( ); + + // setup the execution parameters: + + dim3 threads(BLOCKSIZE, 1, 1 ); + dim3 grid(NUMBLOCKS, 1, 1 ); + + // create and start timer + + cudaDeviceSynchronize( ); + + // allocate CUDA events that we'll use for timing: + + cudaEvent_t start, stop; + cudaEventCreate( &start ); + CudaCheckError( ); + cudaEventCreate( &stop ); + CudaCheckError( ); + + // record the start event: + + cudaEventRecord( start, NULL ); + CudaCheckError( ); + + // execute the kernel: + + MonteCarlo<<< grid, threads >>>( dtxs, dtys, dtxvs, dsvs, dsths, dhalflens, dhits ); + + // record the stop event: + + cudaEventRecord( stop, NULL ); + CudaCheckError( ); + + // wait for the stop event to complete: + + cudaEventSynchronize( stop ); + CudaCheckError( ); + + float msecTotal = 0.0f; + cudaEventElapsedTime( &msecTotal, start, stop ); + CudaCheckError( ); + + // copy result from the device to the host: + + cudaMemcpy( hhits, dhits, NUMTRIALS *sizeof(int), cudaMemcpyDeviceToHost ); + CudaCheckError( ); + + // compute the sum : + + int numHits = 0; + //???? + for(int i = 0; i < NUMTRIALS; i++) + { + numHits += hhits[i]; + //fprintf(stderr, "hhits[%d] = %5d ; Total numHits = %5d\n", i, hhits[i], numHits); + } + + float probability = 100.f * (float)numHits / (float)NUMTRIALS; + + // compute and printL + + double secondsTotal = 0.001 * (double)msecTotal; + double trialsPerSecond = (float)NUMTRIALS / secondsTotal; + double megaTrialsPerSecond = trialsPerSecond / 1000000.; + fprintf( stderr, "Number of Trials = %10d, Blocksize = %8d, MegaTrials/Second = %10.4lf, Probability = %6.2f%%\n", + NUMTRIALS, BLOCKSIZE, megaTrialsPerSecond, probability ); + + // clean up memory: + delete [ ] htxs; + delete [ ] htys; + delete [ ] htxvs; + delete [ ] hsvs; + delete [ ] hsths; + delete [ ] hhits; + + cudaFree( dtxs ); + CudaCheckError( ); + cudaFree( dtys ); + CudaCheckError( ); + cudaFree( dtxvs ); + CudaCheckError( ); + cudaFree( dsvs ); + CudaCheckError( ); + cudaFree( dsths ); + CudaCheckError( ); + cudaFree( dhits ); + CudaCheckError( ); + + + return 0; +} + +float +Ranf( float low, float high ) +{ + float r = (float) rand(); // 0 - RAND_MAX + float t = r / (float) RAND_MAX; // 0. - 1. + + return low + t * ( high - low ); +} + +int +Ranf( int ilow, int ihigh ) +{ + float low = (float)ilow; + float high = ceil( (float)ihigh ); + + return (int) Ranf(low,high); +} + +void +TimeOfDaySeed( ) +{ + struct tm y2k = { 0 }; + y2k.tm_hour = 0; y2k.tm_min = 0; y2k.tm_sec = 0; + y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1; + + time_t timer; + time( &timer ); + double seconds = difftime( timer, mktime(&y2k) ); + unsigned int seed = (unsigned int)( 1000.*seconds ); // milliseconds + srand( seed ); +} diff --git a/performance_vs_blocksize.png b/performance_vs_blocksize.png new file mode 100644 index 0000000000000000000000000000000000000000..2c7c28ffda1b45dc2e48adc0ceea0c9860395c88 GIT binary patch literal 29530 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 literal 0 HcmV?d00001 diff --git a/performance_vs_numtrials.png b/performance_vs_numtrials.png new file mode 100644 index 0000000000000000000000000000000000000000..6253d8e20337eb7a06f6cadccedcadd8e28c63d6 GIT binary patch literal 24118 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 U#m%}2eDFtfGz~SX)NDil175>T-2eap literal 0 HcmV?d00001 diff --git a/script.sh b/script.sh new file mode 100644 index 0000000..13dd907 --- /dev/null +++ b/script.sh @@ -0,0 +1,10 @@ +#!/bin/bash +for t in 1024 4096 16384 65536 262144 1048576 2097152 4194304 +do + for b in 8 32 128 + do + echo "Running with $t trials and $b blocksize" + /usr/local/apps/cuda/cuda-10.1/bin/nvcc -DNUMTRIALS=$t -DBLOCKSIZE=$b -o montecarlo montecarlo.cu + ./montecarlo 2>&1 | tee -a data.csv + done +done diff --git a/uptime.txt b/uptime.txt new file mode 100644 index 0000000..2677189 --- /dev/null +++ b/uptime.txt @@ -0,0 +1 @@ + 17:40:16 up 154 days, 4:15, 62 users, load average: 5.86, 9.92, 12.18