From 1147bfed6bd26b4c46c0f887dcaf689780004d82 Mon Sep 17 00:00:00 2001 From: Kiriti Gowda Date: Fri, 12 Apr 2024 09:33:09 -0700 Subject: [PATCH 01/16] Update CMakeLists.txt Version Upgrade --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bfb58c239..1b951e0a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_STANDARD 17) # RPP Version -set(VERSION "1.6.0") +set(VERSION "1.7.0") # Set Project Version and Language project(rpp VERSION ${VERSION} LANGUAGES CXX) From 5e3fc7af950296a9d7ecf182b416628aa7dd1952 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Apr 2024 10:55:23 -0600 Subject: [PATCH 02/16] Bump rocm-docs-core[api_reference] from 0.38.1 to 1.0.0 in /docs/sphinx (#337) * Bump rocm-docs-core[api_reference] from 0.38.1 to 1.0.0 in /docs/sphinx Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.38.1 to 1.0.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.38.1...v1.0.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Use Python 3.10 in RTD config --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sam Wu --- .readthedocs.yaml | 2 +- docs/sphinx/requirements.in | 2 +- docs/sphinx/requirements.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 9e6678abe..b3299fa4e 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -15,4 +15,4 @@ python: build: os: ubuntu-22.04 tools: - python: "3.8" + python: "3.10" diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 5671f15ad..68e04ec12 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1 +1 @@ -rocm-docs-core[api_reference]==0.38.1 +rocm-docs-core[api_reference]==1.0.0 diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 1b5e8f64c..b06b45e3a 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -110,7 +110,7 @@ requests==2.28.2 # via # pygithub # sphinx -rocm-docs-core[api-reference]==0.38.1 +rocm-docs-core[api-reference]==1.0.0 # via -r requirements.in smmap==5.0.0 # via gitdb From fe1a3e6867c163dd3b8981f897a569377414a47b Mon Sep 17 00:00:00 2001 From: sampath117 Date: Thu, 25 Apr 2024 15:10:05 -0400 Subject: [PATCH 03/16] Add Pre emphasis filter HIP implementation --- include/rppt_tensor_audio_augmentations.h | 3 + .../hip/hip_tensor_audio_augmentations.hpp | 6 ++ .../hip/kernel/pre_emphasis_filter.hpp | 78 +++++++++++++++++++ .../rppt_tensor_audio_augmentations.cpp | 43 ++++++++++ 4 files changed, 130 insertions(+) create mode 100644 src/modules/hip/hip_tensor_audio_augmentations.hpp create mode 100644 src/modules/hip/kernel/pre_emphasis_filter.hpp diff --git a/include/rppt_tensor_audio_augmentations.h b/include/rppt_tensor_audio_augmentations.h index 1941df0da..a14381732 100644 --- a/include/rppt_tensor_audio_augmentations.h +++ b/include/rppt_tensor_audio_augmentations.h @@ -94,6 +94,9 @@ RppStatus rppt_to_decibels_host(RppPtr_t srcPtr, RpptDescPtr srcDescPtr, RppPtr_ * \retval RPP_ERROR* Unsuccessful completion. */ RppStatus rppt_pre_emphasis_filter_host(RppPtr_t srcPtr, RpptDescPtr srcDescPtr, RppPtr_t dstPtr, RpptDescPtr dstDescPtr, Rpp32s *srcLengthTensor, Rpp32f *coeffTensor, RpptAudioBorderType borderType, rppHandle_t rppHandle); +#ifdef GPU_SUPPORT +RppStatus rppt_pre_emphasis_filter_gpu(RppPtr_t srcPtr, RpptDescPtr srcDescPtr, RppPtr_t dstPtr, RpptDescPtr dstDescPtr, Rpp32s *srcLengthTensor, Rpp32f *coeffTensor, RpptAudioBorderType borderType, rppHandle_t rppHandle); +#endif // GPU_SUPPORT /*! \brief Down Mixing augmentation on HOST backend * \details Down Mixing augmentation for audio data diff --git a/src/modules/hip/hip_tensor_audio_augmentations.hpp b/src/modules/hip/hip_tensor_audio_augmentations.hpp new file mode 100644 index 000000000..96de563ca --- /dev/null +++ b/src/modules/hip/hip_tensor_audio_augmentations.hpp @@ -0,0 +1,6 @@ +#ifndef HIP_TENSOR_AUDIO_HPP +#define HIP_TENSOR_AUDIO_HPP + +#include "kernel/pre_emphasis_filter.hpp" + +#endif // HIP_TENSOR_AUDIO_HPP \ No newline at end of file diff --git a/src/modules/hip/kernel/pre_emphasis_filter.hpp b/src/modules/hip/kernel/pre_emphasis_filter.hpp new file mode 100644 index 000000000..f119e576e --- /dev/null +++ b/src/modules/hip/kernel/pre_emphasis_filter.hpp @@ -0,0 +1,78 @@ +#include +#include "rpp_hip_common.hpp" + +__device__ void pre_emphasis_filter_hip_compute(d_float8 *src1_f8, d_float8 *src2_f8, d_float8 *dst_f8, float4 *coeff_f4) +{ + dst_f8->f4[0] = src1_f8->f4[0] - *coeff_f4 * src2_f8->f4[0]; + dst_f8->f4[1] = src1_f8->f4[1] - *coeff_f4 * src2_f8->f4[1]; +} + +__global__ void pre_emphasis_filter_tensor(float *srcPtr, + uint2 srcStridesNH, + float *dstPtr, + uint2 dstStridesNH, + RpptImagePatchPtr srcDims, + float *coeffTensor, + RpptAudioBorderType borderType) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8 + 1; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_x >= srcDims[id_z].width) || (id_y >= srcDims[id_z].height)) + { + return; + } + + uint srcIdx = (id_z * srcStridesNH.x) + (id_y * srcStridesNH.y) + id_x; + uint dstIdx = (id_z * dstStridesNH.x) + (id_y * dstStridesNH.y) + id_x; + + float4 coeff_f4 = (float4)coeffTensor[id_z]; + d_float8 src1_f8, src2_f8, dst_f8; + rpp_hip_load8_and_unpack_to_float8(srcPtr + srcIdx, &src1_f8); + rpp_hip_load8_and_unpack_to_float8(srcPtr + srcIdx - 1, &src2_f8); + pre_emphasis_filter_hip_compute(&src1_f8, &src2_f8, &dst_f8, &coeff_f4); + rpp_hip_pack_float8_and_store8(dstPtr + dstIdx, &dst_f8); +} + +RppStatus hip_exec_pre_emphasis_filter_tensor(Rpp32f *srcPtr, + RpptDescPtr srcDescPtr, + Rpp32f *dstPtr, + RpptDescPtr dstDescPtr, + RpptImagePatchPtr srcDims, + RpptAudioBorderType borderType, + rpp::Handle& handle) +{ + int globalThreads_x = (dstDescPtr->w + 7) >> 3; + int globalThreads_y = dstDescPtr->h; + int globalThreads_z = handle.GetBatchSize(); + + float *coeff = handle.GetInitHandle()->mem.mgpu.floatArr[0].floatmem; + + for(int i = 0; i < srcDescPtr->n; i++) + { + int id_x = i * srcDescPtr->strides.nStride; + if(borderType == RpptAudioBorderType::ZERO) + dstPtr[id_x] = srcPtr[id_x]; + else + { + float border = (borderType == RpptAudioBorderType::CLAMP) ? srcPtr[id_x] : srcPtr[id_x + 1]; + dstPtr[id_x] = srcPtr[id_x] - coeff[id_x] * border; + } + } + + hipLaunchKernelGGL(pre_emphasis_filter_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint2(srcDescPtr->strides.nStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint2(dstDescPtr->strides.nStride, dstDescPtr->strides.hStride), + srcDims, + coeff, + borderType); + + return RPP_SUCCESS; +} \ No newline at end of file diff --git a/src/modules/rppt_tensor_audio_augmentations.cpp b/src/modules/rppt_tensor_audio_augmentations.cpp index e2c9b18f7..8329d3173 100644 --- a/src/modules/rppt_tensor_audio_augmentations.cpp +++ b/src/modules/rppt_tensor_audio_augmentations.cpp @@ -27,6 +27,10 @@ SOFTWARE. #include "rppt_tensor_audio_augmentations.h" #include "cpu/host_tensor_audio_augmentations.hpp" +#ifdef HIP_COMPILE + #include "hip/hip_tensor_audio_augmentations.hpp" +#endif // HIP_COMPILE + /******************** non_silent_region_detection ********************/ RppStatus rppt_non_silent_region_detection_host(RppPtr_t srcPtr, @@ -186,3 +190,42 @@ RppStatus rppt_resample_host(RppPtr_t srcPtr, return RPP_ERROR_NOT_IMPLEMENTED; } } + +/********************************************************************************************************************/ +/*********************************************** RPP_GPU_SUPPORT = ON ***********************************************/ +/********************************************************************************************************************/ + +#ifdef GPU_SUPPORT + +/******************** pre_emphasis_filter ********************/ + +RppStatus rppt_pre_emphasis_filter_gpu(RppPtr_t srcPtr, + RpptDescPtr srcDescPtr, + RppPtr_t dstPtr, + RpptDescPtr dstDescPtr, + RpptImagePatchPtr srcDims, + Rpp32f *coeffTensor, + RpptAudioBorderType borderType, + rppHandle_t rppHandle) +{ +#ifdef HIP_COMPILE + Rpp32u paramIndex = 0; + copy_param_float(coeffTensor, rpp::deref(rppHandle), paramIndex++); + + if ((srcDescPtr->dataType == RpptDataType::F32) && (dstDescPtr->dataType == RpptDataType::F32)) + { + hip_exec_pre_emphasis_filter_tensor(static_cast(srcPtr), + srcDescPtr, + static_cast(dstPtr), + dstDescPtr, + srcDims, + borderType, + rpp::deref(rppHandle)); + } + return RPP_SUCCESS; +#elif defined(OCL_COMPILE) + return RPP_ERROR_NOT_IMPLEMENTED; +#endif // backend +} + +#endif // GPU_SUPPORT \ No newline at end of file From 77e14ef0ace563860a50c1af12b34de0b14b8058 Mon Sep 17 00:00:00 2001 From: Abishek <52214183+r-abishek@users.noreply.github.com> Date: Tue, 7 May 2024 11:56:45 -0700 Subject: [PATCH 04/16] Minor common-fixes for HIP (#345) * Use scratchBufferHip * minor fix * remove additional variable use * Add CHECK_RETURN_STATUS to hip API * handle fix --- .../hip/hip_tensor_arithmetic_operations.hpp | 6 +- src/modules/hip/kernel/copy.hpp | 2 +- src/modules/hip/kernel/gamma_correction.hpp | 9 +- src/modules/hip/kernel/gaussian_filter.hpp | 86 +++++++++---------- .../hip/kernel/noise_salt_and_pepper.hpp | 2 +- src/modules/hip/kernel/noise_shot.hpp | 2 +- src/modules/hip/kernel/ricap.hpp | 19 ++-- src/modules/hip/kernel/spatter.hpp | 4 +- src/modules/hip/kernel/warp_affine.hpp | 2 +- src/modules/hip/kernel/water.hpp | 19 ++-- .../rppt_tensor_effects_augmentations.cpp | 11 ++- utilities/test_suite/HIP/Tensor_hip.cpp | 62 ++++++------- utilities/test_suite/HIP/Tensor_voxel_hip.cpp | 36 ++++---- utilities/test_suite/rpp_test_suite_common.h | 12 +-- 14 files changed, 126 insertions(+), 146 deletions(-) diff --git a/src/modules/hip/hip_tensor_arithmetic_operations.hpp b/src/modules/hip/hip_tensor_arithmetic_operations.hpp index 0345171fc..37d2220b2 100644 --- a/src/modules/hip/hip_tensor_arithmetic_operations.hpp +++ b/src/modules/hip/hip_tensor_arithmetic_operations.hpp @@ -22,8 +22,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#ifndef HIP_TENSOR_ARITHMEETIC_OPERATIONS_HPP -#define HIP_TENSOR_ARITHMEETIC_OPERATIONS_HPP +#ifndef HIP_TENSOR_ARITHMETIC_OPERATIONS_HPP +#define HIP_TENSOR_ARITHMETIC_OPERATIONS_HPP #include "kernel/fused_multiply_add_scalar.hpp" #include "kernel/add_scalar.hpp" @@ -31,4 +31,4 @@ SOFTWARE. #include "kernel/multiply_scalar.hpp" #include "kernel/magnitude.hpp" -#endif // HIP_TENSOR_ARITHMEETIC_OPERATIONS_HPP +#endif // HIP_TENSOR_ARITHMETIC_OPERATIONS_HPP diff --git a/src/modules/hip/kernel/copy.hpp b/src/modules/hip/kernel/copy.hpp index fdcc7bf6f..45ff91d38 100644 --- a/src/modules/hip/kernel/copy.hpp +++ b/src/modules/hip/kernel/copy.hpp @@ -58,7 +58,7 @@ RppStatus hip_exec_copy_tensor(T *srcPtr, { if (srcDescPtr->layout == dstDescPtr->layout) { - hipMemcpy(dstPtr, srcPtr, dstDescPtr->n * dstDescPtr->strides.nStride * sizeof(T), hipMemcpyDeviceToDevice); + CHECK_RETURN_STATUS(hipMemcpy(dstPtr, srcPtr, dstDescPtr->n * dstDescPtr->strides.nStride * sizeof(T), hipMemcpyDeviceToDevice)); } else if ((srcDescPtr->c == 3) && (dstDescPtr->c == 3)) { diff --git a/src/modules/hip/kernel/gamma_correction.hpp b/src/modules/hip/kernel/gamma_correction.hpp index f98790de3..04acdd1b3 100644 --- a/src/modules/hip/kernel/gamma_correction.hpp +++ b/src/modules/hip/kernel/gamma_correction.hpp @@ -227,9 +227,7 @@ RppStatus hip_exec_gamma_correction_tensor(T *srcPtr, int globalThreads_y = handle.GetBatchSize(); int globalThreads_z = 1; - float *gammaLUT; - hipMalloc(&gammaLUT, 256 * handle.GetBatchSize() * sizeof(Rpp32f)); - + Rpp32f *gammaLUT = handle.GetInitHandle()->mem.mgpu.scratchBufferHip.floatmem; hipLaunchKernelGGL(gamma_correction_lut_compute, dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X_1DIM), ceil((float)globalThreads_y/LOCAL_THREADS_Y_1DIM), ceil((float)globalThreads_z/LOCAL_THREADS_Z_1DIM)), dim3(LOCAL_THREADS_X_1DIM, LOCAL_THREADS_Y_1DIM, LOCAL_THREADS_Z_1DIM), @@ -238,9 +236,6 @@ RppStatus hip_exec_gamma_correction_tensor(T *srcPtr, gammaLUT, handle.GetInitHandle()->mem.mgpu.floatArr[0].floatmem); - - - globalThreads_x = (dstDescPtr->strides.hStride + 7) >> 3; globalThreads_y = dstDescPtr->h; globalThreads_z = handle.GetBatchSize(); @@ -307,7 +302,5 @@ RppStatus hip_exec_gamma_correction_tensor(T *srcPtr, } } - hipFree(&gammaLUT); - return RPP_SUCCESS; } diff --git a/src/modules/hip/kernel/gaussian_filter.hpp b/src/modules/hip/kernel/gaussian_filter.hpp index b2ae7a878..8e4336be1 100644 --- a/src/modules/hip/kernel/gaussian_filter.hpp +++ b/src/modules/hip/kernel/gaussian_filter.hpp @@ -1912,9 +1912,6 @@ static RppStatus hip_exec_create_gaussian_kernel(Rpp32f *filterTensor, Rpp32f *stdDevTensor, rpp::Handle &handle) { - int localThreads_x = 256; - int localThreads_y = 1; - int localThreads_z = 1; int globalThreads_x = handle.GetBatchSize(); int globalThreads_y = 1; int globalThreads_z = 1; @@ -1922,8 +1919,8 @@ static RppStatus hip_exec_create_gaussian_kernel(Rpp32f *filterTensor, if (kernelSize == 3) { hipLaunchKernelGGL(create_gaussian_kernel_3x3, - dim3(ceil((float)globalThreads_x/localThreads_x), ceil((float)globalThreads_y/localThreads_y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X_1DIM), ceil((float)globalThreads_y/LOCAL_THREADS_Y_1DIM), ceil((float)globalThreads_z/LOCAL_THREADS_Z_1DIM)), + dim3(LOCAL_THREADS_X_1DIM, LOCAL_THREADS_Y_1DIM, LOCAL_THREADS_Z_1DIM), 0, handle.GetStream(), filterTensor, @@ -1933,8 +1930,8 @@ static RppStatus hip_exec_create_gaussian_kernel(Rpp32f *filterTensor, else if (kernelSize == 5) { hipLaunchKernelGGL(create_gaussian_kernel_5x5, - dim3(ceil((float)globalThreads_x/localThreads_x), ceil((float)globalThreads_y/localThreads_y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X_1DIM), ceil((float)globalThreads_y/LOCAL_THREADS_Y_1DIM), ceil((float)globalThreads_z/LOCAL_THREADS_Z_1DIM)), + dim3(LOCAL_THREADS_X_1DIM, LOCAL_THREADS_Y_1DIM, LOCAL_THREADS_Z_1DIM), 0, handle.GetStream(), filterTensor, @@ -1944,8 +1941,8 @@ static RppStatus hip_exec_create_gaussian_kernel(Rpp32f *filterTensor, else if (kernelSize == 7) { hipLaunchKernelGGL(create_gaussian_kernel_7x7, - dim3(ceil((float)globalThreads_x/localThreads_x), ceil((float)globalThreads_y/localThreads_y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X_1DIM), ceil((float)globalThreads_y/LOCAL_THREADS_Y_1DIM), ceil((float)globalThreads_z/LOCAL_THREADS_Z_1DIM)), + dim3(LOCAL_THREADS_X_1DIM, LOCAL_THREADS_Y_1DIM, LOCAL_THREADS_Z_1DIM), 0, handle.GetStream(), filterTensor, @@ -1955,8 +1952,8 @@ static RppStatus hip_exec_create_gaussian_kernel(Rpp32f *filterTensor, else if (kernelSize == 9) { hipLaunchKernelGGL(create_gaussian_kernel_9x9, - dim3(ceil((float)globalThreads_x/localThreads_x), ceil((float)globalThreads_y/localThreads_y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X_1DIM), ceil((float)globalThreads_y/LOCAL_THREADS_Y_1DIM), ceil((float)globalThreads_z/LOCAL_THREADS_Z_1DIM)), + dim3(LOCAL_THREADS_X_1DIM, LOCAL_THREADS_Y_1DIM, LOCAL_THREADS_Z_1DIM), 0, handle.GetStream(), filterTensor, @@ -1982,9 +1979,6 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, if (roiType == RpptRoiType::LTRB) hip_exec_roi_converison_ltrb_to_xywh(roiTensorPtrSrc, handle); - int localThreads_x = LOCAL_THREADS_X; - int localThreads_y = LOCAL_THREADS_Y; - int localThreads_z = LOCAL_THREADS_Z; int globalThreads_x = (dstDescPtr->strides.hStride + 7) >> 3; int globalThreads_y = dstDescPtr->h; int globalThreads_z = handle.GetBatchSize(); @@ -2010,8 +2004,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, if (kernelSize == 3) { hipLaunchKernelGGL(gaussian_filter_3x3_pkd_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2026,8 +2020,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 5) { hipLaunchKernelGGL(gaussian_filter_5x5_pkd_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2042,8 +2036,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 7) { hipLaunchKernelGGL(gaussian_filter_7x7_pkd_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2058,8 +2052,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 9) { hipLaunchKernelGGL(gaussian_filter_9x9_pkd_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2077,8 +2071,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, if (kernelSize == 3) { hipLaunchKernelGGL(gaussian_filter_3x3_pln_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2094,8 +2088,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 5) { hipLaunchKernelGGL(gaussian_filter_5x5_pln_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2111,8 +2105,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 7) { hipLaunchKernelGGL(gaussian_filter_7x7_pln_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2128,8 +2122,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 9) { hipLaunchKernelGGL(gaussian_filter_9x9_pln_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2150,8 +2144,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, if (kernelSize == 3) { hipLaunchKernelGGL(gaussian_filter_3x3_pkd3_pln3_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2166,8 +2160,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 5) { hipLaunchKernelGGL(gaussian_filter_5x5_pkd3_pln3_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2182,8 +2176,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 7) { hipLaunchKernelGGL(gaussian_filter_7x7_pkd3_pln3_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2198,8 +2192,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 9) { hipLaunchKernelGGL(gaussian_filter_9x9_pkd3_pln3_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2219,8 +2213,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, if (kernelSize == 3) { hipLaunchKernelGGL(gaussian_filter_3x3_pln3_pkd3_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2235,8 +2229,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 5) { hipLaunchKernelGGL(gaussian_filter_5x5_pln3_pkd3_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2251,8 +2245,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 7) { hipLaunchKernelGGL(gaussian_filter_7x7_pln3_pkd3_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -2267,8 +2261,8 @@ RppStatus hip_exec_gaussian_filter_tensor(T *srcPtr, else if (kernelSize == 9) { hipLaunchKernelGGL(gaussian_filter_9x9_pln3_pkd3_tensor, - dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x/tileSize.x), ceil((float)globalThreads_y/tileSize.y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, diff --git a/src/modules/hip/kernel/noise_salt_and_pepper.hpp b/src/modules/hip/kernel/noise_salt_and_pepper.hpp index bb377417a..6564ed9c9 100644 --- a/src/modules/hip/kernel/noise_salt_and_pepper.hpp +++ b/src/modules/hip/kernel/noise_salt_and_pepper.hpp @@ -279,7 +279,7 @@ RppStatus hip_exec_salt_and_pepper_noise_tensor(T *srcPtr, Rpp32u *xorwowSeedStream; xorwowSeedStream = (Rpp32u *)&xorwowInitialStatePtr[1]; - hipMemcpy(xorwowSeedStream, rngSeedStream4050, SEED_STREAM_MAX_SIZE * sizeof(Rpp32u), hipMemcpyHostToDevice); + CHECK_RETURN_STATUS(hipMemcpy(xorwowSeedStream, rngSeedStream4050, SEED_STREAM_MAX_SIZE * sizeof(Rpp32u), hipMemcpyHostToDevice)); if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) { diff --git a/src/modules/hip/kernel/noise_shot.hpp b/src/modules/hip/kernel/noise_shot.hpp index 77e72d192..a28b0d19f 100644 --- a/src/modules/hip/kernel/noise_shot.hpp +++ b/src/modules/hip/kernel/noise_shot.hpp @@ -320,7 +320,7 @@ RppStatus hip_exec_shot_noise_tensor(T *srcPtr, Rpp32u *xorwowSeedStream; xorwowSeedStream = (Rpp32u *)&xorwowInitialStatePtr[1]; - hipMemcpy(xorwowSeedStream, rngSeedStream4050, SEED_STREAM_MAX_SIZE * sizeof(Rpp32u), hipMemcpyHostToDevice); + CHECK_RETURN_STATUS(hipMemcpy(xorwowSeedStream, rngSeedStream4050, SEED_STREAM_MAX_SIZE * sizeof(Rpp32u), hipMemcpyHostToDevice)); if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) { diff --git a/src/modules/hip/kernel/ricap.hpp b/src/modules/hip/kernel/ricap.hpp index 795538451..4f72d57d2 100644 --- a/src/modules/hip/kernel/ricap.hpp +++ b/src/modules/hip/kernel/ricap.hpp @@ -174,9 +174,6 @@ RppStatus hip_exec_ricap_tensor(T *srcPtr, if (roiType == RpptRoiType::LTRB) hip_exec_roi_converison_ltrb_to_xywh(roiPtrInputCropRegion, handle); - int localThreads_x = LOCAL_THREADS_X; - int localThreads_y = LOCAL_THREADS_Y; - int localThreads_z = LOCAL_THREADS_Z; int globalThreads_x = (dstDescPtr->strides.hStride + 7) >> 3; int globalThreads_y = dstDescPtr->h; int globalThreads_z = handle.GetBatchSize(); @@ -184,8 +181,8 @@ RppStatus hip_exec_ricap_tensor(T *srcPtr, if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) { hipLaunchKernelGGL(ricap_pkd_tensor, - dim3(ceil((float)globalThreads_x / localThreads_x), ceil((float)globalThreads_y / localThreads_y), ceil((float)globalThreads_z / localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x / LOCAL_THREADS_X), ceil((float)globalThreads_y / LOCAL_THREADS_Y), ceil((float)globalThreads_z / LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -199,8 +196,8 @@ RppStatus hip_exec_ricap_tensor(T *srcPtr, else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) { hipLaunchKernelGGL(ricap_pln_tensor, - dim3(ceil((float)globalThreads_x / localThreads_x), ceil((float)globalThreads_y / localThreads_y), ceil((float)globalThreads_z / localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x / LOCAL_THREADS_X), ceil((float)globalThreads_y / LOCAL_THREADS_Y), ceil((float)globalThreads_z / LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -217,8 +214,8 @@ RppStatus hip_exec_ricap_tensor(T *srcPtr, if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) { hipLaunchKernelGGL(ricap_pkd3_pln3_tensor, - dim3(ceil((float)globalThreads_x / localThreads_x), ceil((float)globalThreads_y / localThreads_y), ceil((float)globalThreads_z / localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x / LOCAL_THREADS_X), ceil((float)globalThreads_y / LOCAL_THREADS_Y), ceil((float)globalThreads_z / LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -233,8 +230,8 @@ RppStatus hip_exec_ricap_tensor(T *srcPtr, { globalThreads_x = (srcDescPtr->strides.hStride + 7) >> 3; hipLaunchKernelGGL(ricap_pln3_pkd3_tensor, - dim3(ceil((float)globalThreads_x / localThreads_x), ceil((float)globalThreads_y / localThreads_y), ceil((float)globalThreads_z / localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil((float)globalThreads_x / LOCAL_THREADS_X), ceil((float)globalThreads_y / LOCAL_THREADS_Y), ceil((float)globalThreads_z / LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, diff --git a/src/modules/hip/kernel/spatter.hpp b/src/modules/hip/kernel/spatter.hpp index 3df78b4c3..ab0831c07 100644 --- a/src/modules/hip/kernel/spatter.hpp +++ b/src/modules/hip/kernel/spatter.hpp @@ -243,8 +243,8 @@ RppStatus hip_exec_spatter_tensor(T *srcPtr, float *spatterMaskPtr, *spatterMaskInvPtr; spatterMaskPtr = handle.GetInitHandle()->mem.mgpu.scratchBufferHip.floatmem; spatterMaskInvPtr = handle.GetInitHandle()->mem.mgpu.scratchBufferHip.floatmem + maskSize; - hipMemcpy(spatterMaskPtr, spatterMask, maskSizeFloat, hipMemcpyHostToDevice); - hipMemcpy(spatterMaskInvPtr, spatterMaskInv, maskSizeFloat, hipMemcpyHostToDevice); + CHECK_RETURN_STATUS(hipMemcpy(spatterMaskPtr, spatterMask, maskSizeFloat, hipMemcpyHostToDevice)); + CHECK_RETURN_STATUS(hipMemcpy(spatterMaskInvPtr, spatterMaskInv, maskSizeFloat, hipMemcpyHostToDevice)); if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) { diff --git a/src/modules/hip/kernel/warp_affine.hpp b/src/modules/hip/kernel/warp_affine.hpp index 8de7a6697..451501e36 100644 --- a/src/modules/hip/kernel/warp_affine.hpp +++ b/src/modules/hip/kernel/warp_affine.hpp @@ -330,7 +330,7 @@ RppStatus hip_exec_warp_affine_tensor(T *srcPtr, int globalThreads_z = handle.GetBatchSize(); float *affineTensorPtr = handle.GetInitHandle()->mem.mgpu.scratchBufferHip.floatmem; - hipMemcpy(affineTensorPtr, affineTensor, 6 * handle.GetBatchSize() * sizeof(float), hipMemcpyHostToDevice); + CHECK_RETURN_STATUS(hipMemcpy(affineTensorPtr, affineTensor, 6 * handle.GetBatchSize() * sizeof(float), hipMemcpyHostToDevice)); if (interpolationType == RpptInterpolationType::BILINEAR) { diff --git a/src/modules/hip/kernel/water.hpp b/src/modules/hip/kernel/water.hpp index e496b1670..e808a5ed2 100644 --- a/src/modules/hip/kernel/water.hpp +++ b/src/modules/hip/kernel/water.hpp @@ -222,9 +222,6 @@ RppStatus hip_exec_water_tensor(T *srcPtr, if (roiType == RpptRoiType::XYWH) hip_exec_roi_converison_xywh_to_ltrb(roiTensorPtrSrc, handle); - int localThreads_x = 16; - int localThreads_y = 16; - int localThreads_z = 1; int globalThreads_x = (dstDescPtr->strides.hStride + 7) >> 3; int globalThreads_y = dstDescPtr->h; int globalThreads_z = handle.GetBatchSize(); @@ -232,8 +229,8 @@ RppStatus hip_exec_water_tensor(T *srcPtr, if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) { hipLaunchKernelGGL(water_pkd_tensor, - dim3(ceil(static_cast(globalThreads_x)/localThreads_x), ceil((float)globalThreads_y/localThreads_y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil(static_cast(globalThreads_x)/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -251,8 +248,8 @@ RppStatus hip_exec_water_tensor(T *srcPtr, else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) { hipLaunchKernelGGL(water_pln_tensor, - dim3(ceil(static_cast(globalThreads_x)/localThreads_x), ceil((float)globalThreads_y/localThreads_y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil(static_cast(globalThreads_x)/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -273,8 +270,8 @@ RppStatus hip_exec_water_tensor(T *srcPtr, if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) { hipLaunchKernelGGL(water_pkd3_pln3_tensor, - dim3(ceil(static_cast(globalThreads_x)/localThreads_x), ceil((float)globalThreads_y/localThreads_y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil(static_cast(globalThreads_x)/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, @@ -293,8 +290,8 @@ RppStatus hip_exec_water_tensor(T *srcPtr, { globalThreads_x = (srcDescPtr->strides.hStride + 7) >> 3; hipLaunchKernelGGL(water_pln3_pkd3_tensor, - dim3(ceil(static_cast(globalThreads_x)/localThreads_x), ceil((float)globalThreads_y/localThreads_y), ceil((float)globalThreads_z/localThreads_z)), - dim3(localThreads_x, localThreads_y, localThreads_z), + dim3(ceil(static_cast(globalThreads_x)/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), 0, handle.GetStream(), srcPtr, diff --git a/src/modules/rppt_tensor_effects_augmentations.cpp b/src/modules/rppt_tensor_effects_augmentations.cpp index f089b7cde..24cc8e032 100644 --- a/src/modules/rppt_tensor_effects_augmentations.cpp +++ b/src/modules/rppt_tensor_effects_augmentations.cpp @@ -895,7 +895,7 @@ RppStatus rppt_spatter_gpu(RppPtr_t srcPtr, { #ifdef HIP_COMPILE RpptROI roiTensorPtrSrcHost[dstDescPtr->n]; - hipMemcpy(roiTensorPtrSrcHost, roiTensorPtrSrc, dstDescPtr->n * sizeof(RpptROI), hipMemcpyDeviceToHost); + CHECK_RETURN_STATUS(hipMemcpy(roiTensorPtrSrcHost, roiTensorPtrSrc, dstDescPtr->n * sizeof(RpptROI), hipMemcpyDeviceToHost)); if (roiType == RpptRoiType::XYWH) { for(int i = 0; i < dstDescPtr->n; i++) @@ -1011,7 +1011,7 @@ RppStatus rppt_salt_and_pepper_noise_gpu(RppPtr_t srcPtr, RpptXorwowState *d_xorwowInitialStatePtr; d_xorwowInitialStatePtr = (RpptXorwowState *) rpp::deref(rppHandle).GetInitHandle()->mem.mgpu.scratchBufferHip.floatmem; - hipMemcpy(d_xorwowInitialStatePtr, &xorwowInitialState, sizeof(RpptXorwowState), hipMemcpyHostToDevice); + CHECK_RETURN_STATUS(hipMemcpy(d_xorwowInitialStatePtr, &xorwowInitialState, sizeof(RpptXorwowState), hipMemcpyHostToDevice)); if ((srcDescPtr->dataType == RpptDataType::U8) && (dstDescPtr->dataType == RpptDataType::U8)) { @@ -1096,7 +1096,7 @@ RppStatus rppt_shot_noise_gpu(RppPtr_t srcPtr, RpptXorwowStateBoxMuller *d_xorwowInitialStatePtr; d_xorwowInitialStatePtr = (RpptXorwowStateBoxMuller *) rpp::deref(rppHandle).GetInitHandle()->mem.mgpu.scratchBufferHip.floatmem; - hipMemcpy(d_xorwowInitialStatePtr, &xorwowInitialState, sizeof(RpptXorwowStateBoxMuller), hipMemcpyHostToDevice); + CHECK_RETURN_STATUS(hipMemcpy(d_xorwowInitialStatePtr, &xorwowInitialState, sizeof(RpptXorwowStateBoxMuller), hipMemcpyHostToDevice)); if ((srcDescPtr->dataType == RpptDataType::U8) && (dstDescPtr->dataType == RpptDataType::U8)) { @@ -1451,9 +1451,8 @@ RppStatus rppt_ricap_gpu(RppPtr_t srcPtr, #ifdef HIP_COMPILE if(srcDescPtr->n == 1) // BatchSize should always be greater than 1 return RPP_ERROR; - Rpp32u* permutationHipTensor; - hipMalloc(&permutationHipTensor, sizeof(Rpp32u)* 4 * dstDescPtr->n); - hipMemcpy(permutationHipTensor, permutationTensor, sizeof(Rpp32u)* 4 * dstDescPtr->n, hipMemcpyHostToDevice); + Rpp32u *permutationHipTensor = reinterpret_cast(rpp::deref(rppHandle).GetInitHandle()->mem.mgpu.scratchBufferHip.floatmem); + CHECK_RETURN_STATUS(hipMemcpy(permutationHipTensor, permutationTensor, sizeof(Rpp32u)* 4 * dstDescPtr->n, hipMemcpyHostToDevice)); if ((check_roi_out_of_bounds(&roiPtrInputCropRegion[0],srcDescPtr,roiType) == -1) || (check_roi_out_of_bounds(&roiPtrInputCropRegion[1],srcDescPtr,roiType) == -1) diff --git a/utilities/test_suite/HIP/Tensor_hip.cpp b/utilities/test_suite/HIP/Tensor_hip.cpp index 1ee8dd3b4..23c3f19fe 100644 --- a/utilities/test_suite/HIP/Tensor_hip.cpp +++ b/utilities/test_suite/HIP/Tensor_hip.cpp @@ -250,12 +250,12 @@ int main(int argc, char **argv) // Initialize ROI tensors for src/dst RpptROI *roiTensorPtrSrc, *roiTensorPtrDst; - CHECK(hipHostMalloc(&roiTensorPtrSrc, batchSize * sizeof(RpptROI))); - CHECK(hipHostMalloc(&roiTensorPtrDst, batchSize * sizeof(RpptROI))); + CHECK_RETURN_STATUS(hipHostMalloc(&roiTensorPtrSrc, batchSize * sizeof(RpptROI))); + CHECK_RETURN_STATUS(hipHostMalloc(&roiTensorPtrDst, batchSize * sizeof(RpptROI))); // Initialize the ImagePatch for dst RpptImagePatch *dstImgSizes; - CHECK(hipHostMalloc(&dstImgSizes, batchSize * sizeof(RpptImagePatch))); + CHECK_RETURN_STATUS(hipHostMalloc(&dstImgSizes, batchSize * sizeof(RpptImagePatch))); // Set ROI tensors types for src/dst RpptRoiType roiTypeSrc, roiTypeDst; @@ -315,7 +315,7 @@ int main(int argc, char **argv) // Run case-wise RPP API and measure time rppHandle_t handle; hipStream_t stream; - CHECK(hipStreamCreate(&stream)); + CHECK_RETURN_STATUS(hipStreamCreate(&stream)); rppCreateWithStreamAndBatchSize(&handle, stream, batchSize); int noOfIterations = (int)imageNames.size() / batchSize; @@ -333,30 +333,30 @@ int main(int argc, char **argv) bitDepthByteSize = (testCase == 87) ? sizeof(Rpp64u) : sizeof(Rpp8u); else if ((dstDescPtr->dataType == RpptDataType::F16) || (dstDescPtr->dataType == RpptDataType::F32)) bitDepthByteSize = sizeof(Rpp32f); // using 32f outputs for 16f and 32f - CHECK(hipHostMalloc(&reductionFuncResultArr, reductionFuncResultArrLength * bitDepthByteSize)); + CHECK_RETURN_STATUS(hipHostMalloc(&reductionFuncResultArr, reductionFuncResultArrLength * bitDepthByteSize)); } // Allocate hip memory for src/dst - CHECK(hipMalloc(&d_input, inputBufferSize)); - CHECK(hipMalloc(&d_output, outputBufferSize)); + CHECK_RETURN_STATUS(hipMalloc(&d_input, inputBufferSize)); + CHECK_RETURN_STATUS(hipMalloc(&d_output, outputBufferSize)); if(dualInputCase) - CHECK(hipMalloc(&d_input_second, inputBufferSize)); + CHECK_RETURN_STATUS(hipMalloc(&d_input_second, inputBufferSize)); RpptROI *roiPtrInputCropRegion; if(testCase == 82) - CHECK(hipHostMalloc(&roiPtrInputCropRegion, 4 * sizeof(RpptROI))); + CHECK_RETURN_STATUS(hipHostMalloc(&roiPtrInputCropRegion, 4 * sizeof(RpptROI))); RpptROI *cropRoi, *patchRoi; if(testCase == 33) { - CHECK(hipHostMalloc(&cropRoi, batchSize * sizeof(RpptROI))); - CHECK(hipHostMalloc(&patchRoi, batchSize * sizeof(RpptROI))); + CHECK_RETURN_STATUS(hipHostMalloc(&cropRoi, batchSize * sizeof(RpptROI))); + CHECK_RETURN_STATUS(hipHostMalloc(&patchRoi, batchSize * sizeof(RpptROI))); } bool invalidROI = (roiList[0] == 0 && roiList[1] == 0 && roiList[2] == 0 && roiList[3] == 0); Rpp32f *intensity; if(testCase == 46) - CHECK(hipHostMalloc(&intensity, batchSize * sizeof(Rpp32f))); + CHECK_RETURN_STATUS(hipHostMalloc(&intensity, batchSize * sizeof(Rpp32f))); // case-wise RPP API and measure time script for Unit and Performance test printf("\nRunning %s %d times (each time with a batch size of %d images) and computing mean statistics...", func.c_str(), numRuns, batchSize); @@ -396,10 +396,10 @@ int main(int argc, char **argv) convert_input_bitdepth(input, input_second, inputu8, inputu8Second, inputBitDepth, ioBufferSize, inputBufferSize, srcDescPtr, dualInputCase, conversionFactor); //copy decoded inputs to hip buffers - CHECK(hipMemcpy(d_input, input, inputBufferSize, hipMemcpyHostToDevice)); - CHECK(hipMemcpy(d_output, output, outputBufferSize, hipMemcpyHostToDevice)); + CHECK_RETURN_STATUS(hipMemcpy(d_input, input, inputBufferSize, hipMemcpyHostToDevice)); + CHECK_RETURN_STATUS(hipMemcpy(d_output, output, outputBufferSize, hipMemcpyHostToDevice)); if(dualInputCase) - CHECK(hipMemcpy(d_input_second, input_second, inputBufferSize, hipMemcpyHostToDevice)); + CHECK_RETURN_STATUS(hipMemcpy(d_input_second, input_second, inputBufferSize, hipMemcpyHostToDevice)); int roiHeightList[batchSize], roiWidthList[batchSize]; if(invalidROI) @@ -677,8 +677,8 @@ int main(int argc, char **argv) testCaseName = "lut"; Rpp32f *lutBuffer; - CHECK(hipHostMalloc(&lutBuffer, 65536 * sizeof(Rpp32f))); - CHECK(hipMemset(lutBuffer, 0, 65536 * sizeof(Rpp32f))); + CHECK_RETURN_STATUS(hipHostMalloc(&lutBuffer, 65536 * sizeof(Rpp32f))); + CHECK_RETURN_STATUS(hipMemset(lutBuffer, 0, 65536 * sizeof(Rpp32f))); Rpp8u *lut8u = reinterpret_cast(lutBuffer); Rpp16f *lut16f = reinterpret_cast(lutBuffer); Rpp32f *lut32f = reinterpret_cast(lutBuffer); @@ -710,7 +710,7 @@ int main(int argc, char **argv) break; - CHECK(hipHostFree(lutBuffer)); + CHECK_RETURN_STATUS(hipHostFree(lutBuffer)); } case 36: { @@ -1140,7 +1140,7 @@ int main(int argc, char **argv) break; } - CHECK(hipDeviceSynchronize()); + CHECK_RETURN_STATUS(hipDeviceSynchronize()); endWallTime = omp_get_wtime(); wallTime = endWallTime - startWallTime; if (missingFuncFlag == 1) @@ -1215,7 +1215,7 @@ int main(int argc, char **argv) } else { - CHECK(hipMemcpy(output, d_output, outputBufferSize, hipMemcpyDeviceToHost)); + CHECK_RETURN_STATUS(hipMemcpy(output, d_output, outputBufferSize, hipMemcpyDeviceToHost)); // Reconvert other bit depths to 8u for output display purposes convert_output_bitdepth_to_u8(output, outputu8, inputBitDepth, oBufferSize, outputBufferSize, dstDescPtr, invConversionFactor); @@ -1278,29 +1278,29 @@ int main(int argc, char **argv) } // Free memory - CHECK(hipHostFree(roiTensorPtrSrc)); - CHECK(hipHostFree(roiTensorPtrDst)); - CHECK(hipHostFree(dstImgSizes)); + CHECK_RETURN_STATUS(hipHostFree(roiTensorPtrSrc)); + CHECK_RETURN_STATUS(hipHostFree(roiTensorPtrDst)); + CHECK_RETURN_STATUS(hipHostFree(dstImgSizes)); if(testCase == 46) - CHECK(hipHostFree(intensity)); + CHECK_RETURN_STATUS(hipHostFree(intensity)); if(testCase == 82) - CHECK(hipHostFree(roiPtrInputCropRegion)); + CHECK_RETURN_STATUS(hipHostFree(roiPtrInputCropRegion)); if(testCase == 33) { - CHECK(hipHostFree(cropRoi)); - CHECK(hipHostFree(patchRoi)); + CHECK_RETURN_STATUS(hipHostFree(cropRoi)); + CHECK_RETURN_STATUS(hipHostFree(patchRoi)); } if (reductionTypeCase) - CHECK(hipHostFree(reductionFuncResultArr)); + CHECK_RETURN_STATUS(hipHostFree(reductionFuncResultArr)); free(input); free(input_second); free(output); free(inputu8); free(inputu8Second); free(outputu8); - CHECK(hipFree(d_input)); + CHECK_RETURN_STATUS(hipFree(d_input)); if(dualInputCase) - CHECK(hipFree(d_input_second)); - CHECK(hipFree(d_output)); + CHECK_RETURN_STATUS(hipFree(d_input_second)); + CHECK_RETURN_STATUS(hipFree(d_output)); return 0; } diff --git a/utilities/test_suite/HIP/Tensor_voxel_hip.cpp b/utilities/test_suite/HIP/Tensor_voxel_hip.cpp index 5834e4307..b39f461cc 100644 --- a/utilities/test_suite/HIP/Tensor_voxel_hip.cpp +++ b/utilities/test_suite/HIP/Tensor_voxel_hip.cpp @@ -122,7 +122,7 @@ int main(int argc, char * argv[]) // set src/dst xyzwhd ROI tensors void *pinnedMemROI; - CHECK(hipHostMalloc(&pinnedMemROI, noOfFiles * sizeof(RpptROI3D))); + CHECK_RETURN_STATUS(hipHostMalloc(&pinnedMemROI, noOfFiles * sizeof(RpptROI3D))); RpptROI3D *roiGenericSrcPtr = reinterpret_cast(pinnedMemROI); // Set buffer sizes in pixels for src/dst @@ -139,16 +139,16 @@ int main(int argc, char * argv[]) // Allocate hip memory in float for RPP strided buffer void *d_inputF32, *d_outputF32; - CHECK(hipMalloc(&d_inputF32, iBufferSizeInBytes)); - CHECK(hipMalloc(&d_outputF32, oBufferSizeInBytes)); + CHECK_RETURN_STATUS(hipMalloc(&d_inputF32, iBufferSizeInBytes)); + CHECK_RETURN_STATUS(hipMalloc(&d_outputF32, oBufferSizeInBytes)); // set argument tensors void *pinnedMemArgs; - CHECK(hipHostMalloc(&pinnedMemArgs, 2 * noOfFiles * sizeof(Rpp32f))); + CHECK_RETURN_STATUS(hipHostMalloc(&pinnedMemArgs, 2 * noOfFiles * sizeof(Rpp32f))); rppHandle_t handle; hipStream_t stream; - CHECK(hipStreamCreate(&stream)); + CHECK_RETURN_STATUS(hipStreamCreate(&stream)); rppCreateWithStreamAndBatchSize(&handle, stream, batchSize); // Run case-wise RPP API and measure time @@ -166,8 +166,8 @@ int main(int argc, char * argv[]) inputU8 = static_cast(calloc(iBufferSizeU8, 1)); outputU8 = static_cast(calloc(iBufferSizeU8, 1)); - CHECK(hipMalloc(&d_inputU8, iBufferSizeU8)); - CHECK(hipMalloc(&d_outputU8, iBufferSizeU8)); + CHECK_RETURN_STATUS(hipMalloc(&d_inputU8, iBufferSizeU8)); + CHECK_RETURN_STATUS(hipMalloc(&d_outputU8, iBufferSizeU8)); } printf("\nRunning %s %d times (each time with a batch size of %d images) and computing mean statistics...", funcName.c_str(), numRuns, batchSize); @@ -220,11 +220,11 @@ int main(int argc, char * argv[]) { for(int i = 0; i < iBufferSizeU8; i++) inputU8[i] = std::min(std::max(static_cast(inputF32[i]), static_cast(0)), static_cast(255)); - CHECK(hipMemcpy(d_inputU8, inputU8, iBufferSizeU8, hipMemcpyHostToDevice)); + CHECK_RETURN_STATUS(hipMemcpy(d_inputU8, inputU8, iBufferSizeU8, hipMemcpyHostToDevice)); } //Copy input buffer to hip - CHECK(hipMemcpy(d_inputF32, inputF32, iBufferSizeInBytes, hipMemcpyHostToDevice)); + CHECK_RETURN_STATUS(hipMemcpy(d_inputF32, inputF32, iBufferSizeInBytes, hipMemcpyHostToDevice)); for (int perfRunCount = 0; perfRunCount < numRuns; perfRunCount++) { @@ -367,7 +367,7 @@ int main(int argc, char * argv[]) } } - CHECK(hipDeviceSynchronize()); + CHECK_RETURN_STATUS(hipDeviceSynchronize()); endWallTime = omp_get_wtime(); wallTime = endWallTime - startWallTime; maxWallTime = std::max(maxWallTime, wallTime); @@ -383,7 +383,7 @@ int main(int argc, char * argv[]) } // Copy output buffer to host - CHECK(hipMemcpy(outputF32, d_outputF32, oBufferSizeInBytes, hipMemcpyDeviceToHost)); + CHECK_RETURN_STATUS(hipMemcpy(outputF32, d_outputF32, oBufferSizeInBytes, hipMemcpyDeviceToHost)); if(testType == 0) { cout << "\n\nGPU Backend Wall Time: " << wallTime <<" ms per batch"<< endl; @@ -406,7 +406,7 @@ int main(int argc, char * argv[]) if(inputBitDepth == 0) { Rpp64u bufferLength = iBufferSize * sizeof(Rpp8u) + descriptorPtr3D->offsetInBytes; - CHECK(hipMemcpy(outputU8, d_outputU8, bufferLength, hipMemcpyDeviceToHost)); + CHECK_RETURN_STATUS(hipMemcpy(outputU8, d_outputU8, bufferLength, hipMemcpyDeviceToHost)); // Copy U8 buffer to F32 buffer for display purposes for(int i = 0; i < bufferLength; i++) @@ -498,10 +498,10 @@ int main(int argc, char * argv[]) free(niftiDataArray); free(inputF32); free(outputF32); - CHECK(hipHostFree(pinnedMemROI)); - CHECK(hipHostFree(pinnedMemArgs)); - CHECK(hipFree(d_inputF32)); - CHECK(hipFree(d_outputF32)); + CHECK_RETURN_STATUS(hipHostFree(pinnedMemROI)); + CHECK_RETURN_STATUS(hipHostFree(pinnedMemArgs)); + CHECK_RETURN_STATUS(hipFree(d_inputF32)); + CHECK_RETURN_STATUS(hipFree(d_outputF32)); if(inputBitDepth == 0) { if(inputU8 != NULL) @@ -509,9 +509,9 @@ int main(int argc, char * argv[]) if(outputU8 != NULL) free(outputU8); if(d_inputU8 != NULL) - CHECK(hipFree(d_inputU8)); + CHECK_RETURN_STATUS(hipFree(d_inputU8)); if(d_outputU8 != NULL) - CHECK(hipFree(d_outputU8)); + CHECK_RETURN_STATUS(hipFree(d_outputU8)); } return(0); diff --git a/utilities/test_suite/rpp_test_suite_common.h b/utilities/test_suite/rpp_test_suite_common.h index 8360a846c..3ec123d7f 100644 --- a/utilities/test_suite/rpp_test_suite_common.h +++ b/utilities/test_suite/rpp_test_suite_common.h @@ -59,12 +59,12 @@ using namespace std; #define GOLDEN_OUTPUT_MAX_HEIGHT 150 // Golden outputs are generated with MAX_HEIGHT set to 150. Changing this constant will result in QA test failures #define GOLDEN_OUTPUT_MAX_WIDTH 150 // Golden outputs are generated with MAX_WIDTH set to 150. Changing this constant will result in QA test failures -#define CHECK(x) do { \ - int retval = (x); \ - if (retval != 0) { \ - fprintf(stderr, "Runtime error: %s returned %d at %s:%d", #x, retval, __FILE__, __LINE__); \ - exit(-1); \ - } \ +#define CHECK_RETURN_STATUS(x) do { \ + int retval = (x); \ + if (retval != 0) { \ + fprintf(stderr, "Runtime error: %s returned %d at %s:%d", #x, retval, __FILE__, __LINE__); \ + exit(-1); \ + } \ } while (0) std::map augmentationMap = From 34f3f6de1f4e519598a8a89345b6c5e9b9914fa2 Mon Sep 17 00:00:00 2001 From: Kiriti Gowda Date: Tue, 7 May 2024 19:11:08 -0700 Subject: [PATCH 05/16] Readme Updates: --usecase=rocm (#349) --- CHANGELOG.md | 19 ++++++++++++++++++- README.md | 16 ++++++++-------- docker/rpp-on-ubuntu20.dockerfile | 2 +- docker/rpp-on-ubuntu22.dockerfile | 2 +- docs/install/install.rst | 2 +- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c439d35d..b10e35b47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,24 @@ Full documentation for RPP is available at (https://rocm.docs.amd.com/projects/rpp/en/latest/). -### RPP 1.5.0 (unreleased) +### RPP 1.8.0 (unreleased) + +### Changes + +* Prerequisites - ROCm install requires only --usecase=rocm + +### Tested configurations + +* Linux distribution + * Ubuntu - `20.04` / `22.04` + * CentOS - `7` + * RHEL - `8`/`9` +* ROCm: rocm-core - `6.1.0.60100` +* Clang - Version `5.0.1` +* CMake - Version `3.22.3` +* IEEE 754-based half-precision floating-point library - Version `1.12.0` + +### RPP 1.5.0 ### Changes diff --git a/README.md b/README.md index c9349c394..1235faed1 100644 --- a/README.md +++ b/README.md @@ -26,14 +26,14 @@ Input
(nifti1 .nii medical image) | fused_multiply_add_scalar
(brightened ## Prerequisites * Linux - * **Ubuntu** - `20.04` / `22.04` - * **CentOS** - `7` - * **RedHat** - `8` / `9` - * **SLES** - `15-SP4` + * Ubuntu - `20.04` / `22.04` + * CentOS - `7` + * RedHat - `8` / `9` + * SLES - `15-SP4` * [ROCm supported hardware](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) -* Install ROCm with [amdgpu-install](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/amdgpu-install.html) with `--usecase=graphics,rocm --no-32` +* Install ROCm with [amdgpu-install](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/amdgpu-install.html) with `--usecase=rocm` * Clang Version `5.0.1` and above @@ -74,15 +74,15 @@ Input
(nifti1 .nii medical image) | fused_multiply_add_scalar
(brightened sudo apt-get install half ``` -> [!NOTE] -> You must use the appropriate package manager for your operating system. - * Compiler with support for C++ Version `17` and above * OpenMP * Threads +> [!NOTE] +> You must use the appropriate package manager for your operating system. + ## Build and install instructions ### Package install diff --git a/docker/rpp-on-ubuntu20.dockerfile b/docker/rpp-on-ubuntu20.dockerfile index 568b427ab..cff7071c3 100644 --- a/docker/rpp-on-ubuntu20.dockerfile +++ b/docker/rpp-on-ubuntu20.dockerfile @@ -15,7 +15,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get -y install initramfs-tools libnuma-de wget ${ROCM_INSTALLER_REPO} && \ sudo apt-get install -y ./${ROCM_INSTALLER_PACKAGE} && \ sudo apt-get update -y && \ - sudo amdgpu-install -y --usecase=graphics,rocm + sudo amdgpu-install -y --usecase=rocm # install rpp dependencies - half.hpp RUN wget https://sourceforge.net/projects/half/files/half/1.12.0/half-1.12.0.zip && \ unzip half-1.12.0.zip -d half-files && mkdir -p /usr/local/include/half && cp half-files/include/half.hpp /usr/local/include/half diff --git a/docker/rpp-on-ubuntu22.dockerfile b/docker/rpp-on-ubuntu22.dockerfile index b5571d039..dd94379ff 100644 --- a/docker/rpp-on-ubuntu22.dockerfile +++ b/docker/rpp-on-ubuntu22.dockerfile @@ -15,7 +15,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get -y install initramfs-tools libnuma-de wget ${ROCM_INSTALLER_REPO} && \ sudo apt-get install -y ./${ROCM_INSTALLER_PACKAGE} && \ sudo apt-get update -y && \ - sudo amdgpu-install -y --usecase=graphics,rocm + sudo amdgpu-install -y --usecase=rocm # install rpp dependencies - half.hpp RUN wget https://sourceforge.net/projects/half/files/half/1.12.0/half-1.12.0.zip && \ unzip half-1.12.0.zip -d half-files && mkdir -p /usr/local/include/half && cp half-files/include/half.hpp /usr/local/include/half diff --git a/docs/install/install.rst b/docs/install/install.rst index 7693cc5af..cc0a4a0a1 100644 --- a/docs/install/install.rst +++ b/docs/install/install.rst @@ -22,7 +22,7 @@ Prerequisites * `ROCm supported hardware `_ -* Install ROCm with `amdgpu-install `_ with ``--usecase=graphics,rocm --no-32`` +* Install ROCm with `amdgpu-install `_ with ``--usecase=rocm`` * Clang Version `5.0.1` and above From ab526834c59231a5854b8c44aff4b89ca32ff119 Mon Sep 17 00:00:00 2001 From: Abishek <52214183+r-abishek@users.noreply.github.com> Date: Wed, 8 May 2024 11:37:44 -0700 Subject: [PATCH 06/16] RPP Tensor Audio Support - Spectrogram (#312) * Initial commit - Non slient region detection Includes unittest setup * Initial commit - To Decibels Includes unittest setup * Intial commit - pre_emphasis_filter * Intial commit - down_mixing * Replace vectors with arrays * Cleanup * Minor cleanup * Optimize downmixing Kernel Includes cleanup * Replace Rpp64s with Rpp32s * Cleanup * Optimize and precompute cutOff * Fix buffer used * Fix buffer used * Additional Cleanup * Optimize post incrmeent operation * Optimize post increment operation * Update testsuite for Audio * code cleanup * Add Readme file for Audio test suite * changes based on review comments * minor change * Remove unittest folders and updated README.md * Remove unit tests * minor change * code cleanup * added common header file for audio helper functions * removed unncessary audio wav files fixed bug in ROI updation for audio test suite resolved issue in summary generation for performance tests in python * removed log file * added doxygen support for audio * added doxygen changes for to_decibels * updated test suite support for to_decibels * minor change * added doxygen changes for preemphasis filter * updated changes for preemphasis filter in test suite * removed the usage of getMax function and used std::max_element * modularized code in test suite * merge with latest changes * minor change * minor change * minor change * resolved codacy warnings * Codacy fix - Remove unused cpuTime * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * resolved issue with file_system dependency in test suite * Doxygen changes changed malloc to new in NSR kernel * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * added ctests for audio test suite for CI made changes to add more clarity on the QA Tests results * Cmake mods for ctest * HOST-only build error bugfix * added qa mode paramter to python audio script added golden output map for QA testing of Non silent region detection * minor change * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * added example for MMS calculation in comments for better understanding * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * updated info used to for running audio test suite * removed bitdepth variable from audio test suite * added more information on computing NSR outputs in the example added * Fix doxygen for decibels Also removes extra QA reference files * move tensor_host_audio.cpp to host folder * Fix build errors and qa tests in Audio Test suite * Fix build errors and qa tests in Audio Test suite * Add reference output and test samples for downmix * Add down_mix in augmentation list and supported cases * Remove auto-merge repeated funcs * Improve clarity of header docs * Remove blank line * Improve clarity on header docs * Add Doxygen comments * minor change * converted golden outputs to binary file for downmixing * removed old golden output file for preemphasis and todecibels * modified info for downmixing as per new changes used handle memory for temporary buffers * formatting changes * Initial commit - Spectrogram * Add QA .bin reference file * License - updates to 2024 and consistency changes (#298) * Match all CMakeLists.txt license as per RPP's outermost LICENSE file * Match all python files' license as per RPP's outermost LICENSE file * Match all .hpp files' license as per RPP's outermost LICENSE file * Match all .cpp files' license as per RPP's outermost LICENSE file * Match all .h files' license as per RPP's outermost LICENSE file * Remove all rights reserved as per LICENSE file * Remove double space in "Copyright (c) 2019 - 2023 Advanced Micro Devices, Inc." * Match all .cmake files' license as per RPP's outermost LICENSE file * Match all .cpp.in files' license as per RPP's outermost LICENSE file * Replace 283 occurrences in 282 files - 2023 to 2024 * Add "MIT License" title to 281 instances * Add missing license * Test - Update README.md for test_suite (#299) * Address internal review comments * Modify cmakelist * Fix QA mismatch * Bump rocm-docs-core[api_reference] from 0.33.0 to 0.33.1 in /docs/sphinx (#301) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.0 to 0.33.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.0...v0.33.1) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump rocm-docs-core[api_reference] from 0.33.1 to 0.33.2 in /docs/sphinx (#302) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.1 to 0.33.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.1...v0.33.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update doc codeowners (#303) * Documentation - Bump rocm-docs-core[api_reference] from 0.33.2 to 0.34.0 in /docs/sphinx (#304) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.2 to 0.34.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.2...v0.34.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Test suite - upgrade 5 qa perf (#305) * experimental changes for adding qa mode for performance tests * made changes to add display more information w.r.t QA results summary for performance tests * minor changes * Add changes to dump qa results to excel file * Add performance QA for three new tensor functions * update prerequisites in readme * added changes to handle unsupported cases * removed treshold dictionary and added performance Noise treshold add new dataset for performance QA * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Changes to the performane summary dataframe * minor changes * Update CMakeLists.txt to add ${CMAKE_CURRENT_SOURCE_DIR} for CI * Update CMakeLists.txt fix * Update CMakeLists.txt fix * remove tabulate dependency * Update README.md to remove tabulate pip install * Fix for CI machine failure * Add note on performance --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: Abishek <52214183+r-abishek@users.noreply.github.com> Co-authored-by: Snehaa Giridharan Co-authored-by: r-abishek * RPP Color Temperature on HOST and HIP (#271) * Initial commit - Color Temperature HOST Tensor * Initial commit - Color Temperature HIP Tensor * Add color temperature golden outputs * address review comments * Use reinterpret_cast instead of static_cast * Combine templated functions to support all datatypes into one (got minor perf difference of order 3%) Also fixes indentation * Fix i8 datatype * Cleanup * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Fix PLN3 variant outputs Also modifies reference outputs * Update color_temperature.hpp license * Delete color_temperature_u8_Tensor_PKD3.csv * Delete color_temperature_u8_Tensor_PLN3.csv --------- Co-authored-by: snehaa8 Co-authored-by: HazarathKumarM Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> * RPP Voxel 3D Tensor Add/Subtract scalar on HOST and HIP (#272) * added HOST support for voxel add kernel * added HIP support for voxel add kernel * added test suite support for add scalar * added Doxygen support and modified hip kernel function names as per new standard * added HOST support for voxel subtract kernel * added HIP support for voxel subtract kernel * added test suite support * updated the golden outputs for subtract with correct values * removed unnessary validation checks * Remove double spaces * Fix header * Fix all retval docs * Fix docs to add memory type * Fix comment * Add divider comment * Use post-increment efficiently * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted add and subtract scalar golden outputs to bin files * changed copyright from 2023 to 2024 * Update add_scalar.hpp license * Update subtract_scalar.hpp license --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * RPP Magnitude on HOST and HIP (#278) * Initial commit - Magnitude HOST Tensor * Add QA reference outputs * Update runTests.py * Initial commit - Magnitude HIP Tensor * Add dual input support in testsuite * Optimize HOST kernel further * Optimize i8 datatype further * Modify comments * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Bump rocm-docs-core[api_reference] from 0.31.0 to 0.33.0 in /docs/sphinx (#294) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.31.0 to 0.33.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.31.0...v0.33.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update Copywright year * Combine templated functions to support all datatypes * Modify format of reference outputs * Update rppi_arithmetic_operations.h license * Update rppt_tensor_arithmetic_operations.h license * Update host_tensor_arithmetic_operations.hpp * Update magnitude.hpp license * Update hip_tensor_arithmetic_operations.hpp license * Delete magnitude_u8_Tensor_PKD3.csv * Delete magnitude_u8_Tensor_PLN1.csv * Delete magnitude_u8_Tensor_PLN3.csv * Update rpp_test_suite_common.h license * Update runTests.py license * Update Tensor_hip.cpp license * Update runTests.py license * Update Tensor_host.cpp license --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> * Bump rocm-docs-core[api_reference] from 0.34.0 to 0.34.2 in /docs/sphinx (#309) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.34.0 to 0.34.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.34.0...v0.34.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Tensor Audio Support - Down Mixing (#296) * Initial commit - Non slient region detection Includes unittest setup * Initial commit - To Decibels Includes unittest setup * Intial commit - pre_emphasis_filter * Intial commit - down_mixing * Replace vectors with arrays * Cleanup * Minor cleanup * Optimize downmixing Kernel Includes cleanup * Replace Rpp64s with Rpp32s * Cleanup * Optimize and precompute cutOff * Fix buffer used * Fix buffer used * Additional Cleanup * Optimize post incrmeent operation * Optimize post increment operation * Update testsuite for Audio * code cleanup * Add Readme file for Audio test suite * changes based on review comments * minor change * Remove unittest folders and updated README.md * Remove unit tests * minor change * code cleanup * added common header file for audio helper functions * removed unncessary audio wav files fixed bug in ROI updation for audio test suite resolved issue in summary generation for performance tests in python * removed log file * added doxygen support for audio * added doxygen changes for to_decibels * updated test suite support for to_decibels * minor change * added doxygen changes for preemphasis filter * updated changes for preemphasis filter in test suite * removed the usage of getMax function and used std::max_element * modularized code in test suite * merge with latest changes * minor change * minor change * minor change * resolved codacy warnings * Codacy fix - Remove unused cpuTime * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * resolved issue with file_system dependency in test suite * Doxygen changes changed malloc to new in NSR kernel * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * added ctests for audio test suite for CI made changes to add more clarity on the QA Tests results * Cmake mods for ctest * HOST-only build error bugfix * added qa mode paramter to python audio script added golden output map for QA testing of Non silent region detection * minor change * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * added example for MMS calculation in comments for better understanding * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * updated info used to for running audio test suite * removed bitdepth variable from audio test suite * added more information on computing NSR outputs in the example added * Fix doxygen for decibels Also removes extra QA reference files * move tensor_host_audio.cpp to host folder * Fix build errors and qa tests in Audio Test suite * Fix build errors and qa tests in Audio Test suite * Add reference output and test samples for downmix * Add down_mix in augmentation list and supported cases * Remove auto-merge repeated funcs * Improve clarity of header docs * Remove blank line * Improve clarity on header docs * Add Doxygen comments * minor change * converted golden outputs to binary file for downmixing * removed old golden output file for preemphasis and todecibels * modified info for downmixing as per new changes used handle memory for temporary buffers * formatting changes * moved the common code for SSE and AVX to outside * Update down_mixing.hpp license * Update rppt_tensor_audio_augmentations.h * combined the srcLength and channels tensors into single tensor --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sundarrajan98 * RPP Voxel 3D Tensor Multiply scalar on HOST and HIP (#306) * added HIP support for voxel scalar multiply kernel * added HOST support for voxel multiply kernel added golden outputs for voxel multiply kernel * merge with master * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted multiply scalar voxel golden outputs to bin files * changed copyright from 2023 to 2024 --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Test Suite Bugfix (#307) * experimental changes for adding qa mode for performance tests * made changes to add display more information w.r.t QA results summary for performance tests * minor changes * Add changes to dump qa results to excel file * Add performance QA for three new tensor functions * update prerequisites in readme * added changes to handle unsupported cases * removed treshold dictionary and added performance Noise treshold add new dataset for performance QA * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Changes to the performane summary dataframe * minor changes * Update CMakeLists.txt to add ${CMAKE_CURRENT_SOURCE_DIR} for CI * Update CMakeLists.txt fix * Update CMakeLists.txt fix * remove tabulate dependency * Update README.md to remove tabulate pip install * Fix for CI machine failure * Add note on performance * Fix segmentation fault * Revert QAmode to restrict HIP bitdepths * Use Rpp64u for HOST while comparing outputs * Fix ambiguous abs call * Fix for SLES CI HIP fail - error: incompatible pointer types assigning to 'unsigned long *' from 'unsigned long long *' - refOutput = TensorSumReferenceOutputs[numChannels].data(); --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: Snehaa Giridharan Co-authored-by: Pavel Tcherniaev * Fix build errors on OCL backend * Merge remote-tracking branch 'origin' into sn/audio_spectrogram_master_merge * Fix build error in tensor testsuite * Bump rocm-docs-core[api_reference] from 0.35.0 to 0.35.1 in /docs/sphinx (#319) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.35.0 to 0.35.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.35.0...v0.35.1) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump rocm-docs-core[api_reference] from 0.35.1 to 0.36.0 in /docs/sphinx (#322) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.35.1 to 0.36.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.35.1...v0.36.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Docs - Bump rocm-docs-core[api_reference] from 0.36.0 to 0.37.0 in /docs/sphinx (#328) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.36.0 to 0.37.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.36.0...v0.37.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Link cleanup (#326) * link updates * update tables * pare down index * API cleanup * consistency * verbiage * Update notes * Address review comments * Revert change in runTests.py * Docs - Bump rocm-docs-core[api_reference] from 0.37.0 to 0.37.1 in /docs/sphinx (#329) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.37.0 to 0.37.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.37.0...v0.37.1) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Voxel Flip on HIP and HOST (#285) * added support for flip voxel * added test suite support * added golden outputs for flip voxel made changes in test suite to run QA tests for flip * updated golden outputs with correct values * minor bug fix in the hip test suite * made changes to variable names for better readability fixed comments in test suite minor cleanup * combined the flip axis factor as ternary operator in HIP kernel added new enum for error handling when source and destination layouts are not matching * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted flip voxel golden outputs to bin files * changed copyright from 2023 to 2024 * Update flip_voxel.hpp license * License - updates to 2024 and consistency changes (#298) * Match all CMakeLists.txt license as per RPP's outermost LICENSE file * Match all python files' license as per RPP's outermost LICENSE file * Match all .hpp files' license as per RPP's outermost LICENSE file * Match all .cpp files' license as per RPP's outermost LICENSE file * Match all .h files' license as per RPP's outermost LICENSE file * Remove all rights reserved as per LICENSE file * Remove double space in "Copyright (c) 2019 - 2023 Advanced Micro Devices, Inc." * Match all .cmake files' license as per RPP's outermost LICENSE file * Match all .cpp.in files' license as per RPP's outermost LICENSE file * Replace 283 occurrences in 282 files - 2023 to 2024 * Add "MIT License" title to 281 instances * Add missing license * Test - Update README.md for test_suite (#299) * Bump rocm-docs-core[api_reference] from 0.33.0 to 0.33.1 in /docs/sphinx (#301) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.0 to 0.33.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.0...v0.33.1) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump rocm-docs-core[api_reference] from 0.33.1 to 0.33.2 in /docs/sphinx (#302) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.1 to 0.33.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.1...v0.33.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update doc codeowners (#303) * Documentation - Bump rocm-docs-core[api_reference] from 0.33.2 to 0.34.0 in /docs/sphinx (#304) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.2 to 0.34.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.2...v0.34.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Test suite - upgrade 5 qa perf (#305) * experimental changes for adding qa mode for performance tests * made changes to add display more information w.r.t QA results summary for performance tests * minor changes * Add changes to dump qa results to excel file * Add performance QA for three new tensor functions * update prerequisites in readme * added changes to handle unsupported cases * removed treshold dictionary and added performance Noise treshold add new dataset for performance QA * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Changes to the performane summary dataframe * minor changes * Update CMakeLists.txt to add ${CMAKE_CURRENT_SOURCE_DIR} for CI * Update CMakeLists.txt fix * Update CMakeLists.txt fix * remove tabulate dependency * Update README.md to remove tabulate pip install * Fix for CI machine failure * Add note on performance --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: Abishek <52214183+r-abishek@users.noreply.github.com> Co-authored-by: Snehaa Giridharan Co-authored-by: r-abishek * RPP Color Temperature on HOST and HIP (#271) * Initial commit - Color Temperature HOST Tensor * Initial commit - Color Temperature HIP Tensor * Add color temperature golden outputs * address review comments * Use reinterpret_cast instead of static_cast * Combine templated functions to support all datatypes into one (got minor perf difference of order 3%) Also fixes indentation * Fix i8 datatype * Cleanup * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Fix PLN3 variant outputs Also modifies reference outputs * Update color_temperature.hpp license * Delete color_temperature_u8_Tensor_PKD3.csv * Delete color_temperature_u8_Tensor_PLN3.csv --------- Co-authored-by: snehaa8 Co-authored-by: HazarathKumarM Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> * RPP Voxel 3D Tensor Add/Subtract scalar on HOST and HIP (#272) * added HOST support for voxel add kernel * added HIP support for voxel add kernel * added test suite support for add scalar * added Doxygen support and modified hip kernel function names as per new standard * added HOST support for voxel subtract kernel * added HIP support for voxel subtract kernel * added test suite support * updated the golden outputs for subtract with correct values * removed unnessary validation checks * Remove double spaces * Fix header * Fix all retval docs * Fix docs to add memory type * Fix comment * Add divider comment * Use post-increment efficiently * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted add and subtract scalar golden outputs to bin files * changed copyright from 2023 to 2024 * Update add_scalar.hpp license * Update subtract_scalar.hpp license --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * RPP Magnitude on HOST and HIP (#278) * Initial commit - Magnitude HOST Tensor * Add QA reference outputs * Update runTests.py * Initial commit - Magnitude HIP Tensor * Add dual input support in testsuite * Optimize HOST kernel further * Optimize i8 datatype further * Modify comments * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Bump rocm-docs-core[api_reference] from 0.31.0 to 0.33.0 in /docs/sphinx (#294) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.31.0 to 0.33.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.31.0...v0.33.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update Copywright year * Combine templated functions to support all datatypes * Modify format of reference outputs * Update rppi_arithmetic_operations.h license * Update rppt_tensor_arithmetic_operations.h license * Update host_tensor_arithmetic_operations.hpp * Update magnitude.hpp license * Update hip_tensor_arithmetic_operations.hpp license * Delete magnitude_u8_Tensor_PKD3.csv * Delete magnitude_u8_Tensor_PLN1.csv * Delete magnitude_u8_Tensor_PLN3.csv * Update rpp_test_suite_common.h license * Update runTests.py license * Update Tensor_hip.cpp license * Update runTests.py license * Update Tensor_host.cpp license --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> * Bump rocm-docs-core[api_reference] from 0.34.0 to 0.34.2 in /docs/sphinx (#309) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.34.0 to 0.34.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.34.0...v0.34.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Tensor Audio Support - Down Mixing (#296) * Initial commit - Non slient region detection Includes unittest setup * Initial commit - To Decibels Includes unittest setup * Intial commit - pre_emphasis_filter * Intial commit - down_mixing * Replace vectors with arrays * Cleanup * Minor cleanup * Optimize downmixing Kernel Includes cleanup * Replace Rpp64s with Rpp32s * Cleanup * Optimize and precompute cutOff * Fix buffer used * Fix buffer used * Additional Cleanup * Optimize post incrmeent operation * Optimize post increment operation * Update testsuite for Audio * code cleanup * Add Readme file for Audio test suite * changes based on review comments * minor change * Remove unittest folders and updated README.md * Remove unit tests * minor change * code cleanup * added common header file for audio helper functions * removed unncessary audio wav files fixed bug in ROI updation for audio test suite resolved issue in summary generation for performance tests in python * removed log file * added doxygen support for audio * added doxygen changes for to_decibels * updated test suite support for to_decibels * minor change * added doxygen changes for preemphasis filter * updated changes for preemphasis filter in test suite * removed the usage of getMax function and used std::max_element * modularized code in test suite * merge with latest changes * minor change * minor change * minor change * resolved codacy warnings * Codacy fix - Remove unused cpuTime * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * resolved issue with file_system dependency in test suite * Doxygen changes changed malloc to new in NSR kernel * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * added ctests for audio test suite for CI made changes to add more clarity on the QA Tests results * Cmake mods for ctest * HOST-only build error bugfix * added qa mode paramter to python audio script added golden output map for QA testing of Non silent region detection * minor change * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * added example for MMS calculation in comments for better understanding * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * updated info used to for running audio test suite * removed bitdepth variable from audio test suite * added more information on computing NSR outputs in the example added * Fix doxygen for decibels Also removes extra QA reference files * move tensor_host_audio.cpp to host folder * Fix build errors and qa tests in Audio Test suite * Fix build errors and qa tests in Audio Test suite * Add reference output and test samples for downmix * Add down_mix in augmentation list and supported cases * Remove auto-merge repeated funcs * Improve clarity of header docs * Remove blank line * Improve clarity on header docs * Add Doxygen comments * minor change * converted golden outputs to binary file for downmixing * removed old golden output file for preemphasis and todecibels * modified info for downmixing as per new changes used handle memory for temporary buffers * formatting changes * moved the common code for SSE and AVX to outside * Update down_mixing.hpp license * Update rppt_tensor_audio_augmentations.h * combined the srcLength and channels tensors into single tensor --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sundarrajan98 * RPP Voxel 3D Tensor Multiply scalar on HOST and HIP (#306) * added HIP support for voxel scalar multiply kernel * added HOST support for voxel multiply kernel added golden outputs for voxel multiply kernel * merge with master * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted multiply scalar voxel golden outputs to bin files * changed copyright from 2023 to 2024 --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Test Suite Bugfix (#307) * experimental changes for adding qa mode for performance tests * made changes to add display more information w.r.t QA results summary for performance tests * minor changes * Add changes to dump qa results to excel file * Add performance QA for three new tensor functions * update prerequisites in readme * added changes to handle unsupported cases * removed treshold dictionary and added performance Noise treshold add new dataset for performance QA * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Changes to the performane summary dataframe * minor changes * Update CMakeLists.txt to add ${CMAKE_CURRENT_SOURCE_DIR} for CI * Update CMakeLists.txt fix * Update CMakeLists.txt fix * remove tabulate dependency * Update README.md to remove tabulate pip install * Fix for CI machine failure * Add note on performance * Fix segmentation fault * Revert QAmode to restrict HIP bitdepths * Use Rpp64u for HOST while comparing outputs * Fix ambiguous abs call * Fix for SLES CI HIP fail - error: incompatible pointer types assigning to 'unsigned long *' from 'unsigned long long *' - refOutput = TensorSumReferenceOutputs[numChannels].data(); --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: Snehaa Giridharan Co-authored-by: Pavel Tcherniaev * Bump rocm-docs-core[api_reference] from 0.34.2 to 0.35.0 in /docs/sphinx (#313) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.34.2 to 0.35.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.34.2...v0.35.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Reduction - Tensor min and Tensor max on HOST and HIP (#260) * Minor Change * Add Validation check for DST_FOLDER path * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * Add Validation checks for all options in testAllScript.sh * Add sanity check for dual Input cases Set Max Dimension and Max Image Dump Replaced Fast DCT tag with Accurate DCT * Regenerate golden outputs using accurate dct Flag Add golden outputs for some new augmentations * Fix Flip golden outputs mismatch Fix PLN3 variants mismatch in QA mode * Add MAX_BATCH_SIZE check removed Augmentations function calls for failing Qa modes code cleanup * Add crop and gamma correction augmentations code cleanup * Add comments to functions in rpp_test_suite_common.h * minor change * code cleanup * minor code changes * Change roi and Image sizes for crop augmentation * Change numIterations option to numRuns Addressed PR comments * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * Add turboJpeg header to update maxHeight and maxWidth values * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Change the performance Timings logic * Add Avx2 implementation for F32 and U8 toggle variants * minor change to support u8_f16 and u8_f32 cases * Regenerate LUT golden outputs with ACCURATE_DCT tag * Minor code changes * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * Made changes to the runTests.py in Host to remove testAllScipts.sh * Made changes to the runTests.py in HIP to remove testAllScipts.sh * Initial commit - Image min and max Reduction kernel Includes * u8 datatype for both min and max HOST Tensor of all variants. * Testsuite changes. * NWC -initial code for min max PLN3 - PLN3 * made changes to split min and max kernels seperately * splitted kernels for min and max * made changes to print final max/min in the R,G,B channels * fixed inaccuracies in min/max computation * made changes to typecast intermediate output to output requested by user added comments for the code code cleanup and minor changes in test suite * fixed build issues removed image folders used for min, max and sum reverted unwanted file changes * minor changes in test suite * removed support for unwanted test case in Tensor_hip.cpp * Adds new option roi * remove testAllScripts.sh * Adds roi Option in HIP backend * Implement f32 variants * Implement f16 and i8 datatype variants * change F32 load and store logic * Add build flags in CMakeLists.txt to set AVX/SSE flags based on the system configuration * minor code changes * Initial commit - Image sum Reduction kernel Includes u8 PLN1 -> PLN1 conversion for HOST Tensor * Implement PKD3 and PLN3 for Image sum Tensor HOST * Support i8, f16 and f32 datatypes * Initial commit - Image sum Reduction HIP kernel Includes u8 PLN1 -> PLN1 conversion for Tensor * Implement PKD3 and PLN3 for Image sum Tensor HIP * Add support in testsuite Revert normalization for i8 HOST Tensor variants * Fix HIP testsuite Remove additional blanks for 1 channel output * Modify print statement in HIP testsuite * Improve readability for testsuite outputs * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * Fix HIP to support larger inputs * optimized load and store functions for water U8 and F32 variants in host removed commented code * Cleanup * removed golden outputs for water * minor changes * Cleanup Support Reduction QA test in testsuite * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * Remove unused variables and C style casting * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * Optimize u8 datatype further * Fix static_cast * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * added rotate case with golden outputs changed generic bilinear HOST codes to match with HIP codes * Add golden output for remaining all tensor augmentations * fix python script issues * Optimize u8 and i8 datatype Uses uint and int internal processing instead of float * Fix testsuite build errors * minor change * Fix QA check * Modify api naming from image_sum to tensor_sum Includes changes for both HOST and HIP * Support HIP Backend for RICAP * change rcm and rmn golden outputs * Fix HIP pkd3->pkd3 variant * changes based on review comments * change test_suite folder to tests * Optimize u8 and i8 datatype of HIP Includes modification in naming of shared memory * minor fix * changed generic nn F32 loads using gather and setr instructions * Optimize and cleanup U8 HIP * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Fix i8 datatype variants Includes cleanup * Fix the issues with color_to_greyscale * remove the empty folder creation * reverting back the folder name change * minor change * added comments for latest changes * minor change * Improve readability and Cleanup * Fix QA for HIP Includes cleanup * resolved review comments * minor change * Modify api naming from image_ to tensor_ for HOST * Add support for QA tests * removed range check for RMN U8-F32 and U8-F16 variants changed from hipMemset to hipMemsetAsync for RMN HIP Kernel removed multiplication by 255 for stdDev in RMN HOST U8-F16 and U8-F32 variants * Modify naming of shared memory with _smem in HIP Includes cleanup * Typecast and reuse markArr for HIP U8 and I8 * Cleanup and minor optimization * minor fix * fix codacy warnings * Additional cleanup * Cleanup and move #define * Changed the complexity of if statements in runTests.py * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Codacy fixes * Fix codacy warnings * Codacy fix * Address other codacy warnings * cleanup * Change Image functions to generic * Update ricap.hpp with reference paper * resolved minor issues happened with merge * minor changes * fixed minor issue with getting profiler times * minor formatting changes * resolved build issues in test suite renamed the min and max kernel file names * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * Cmake fix to prevent warning * Fix paths in new python scripts * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * Test suite fixes after tensor_min / tensor_max HOST merge * Fix max case * QA tests fix for hip and host * naming convention changes as per new std * Substitute imagePartial with partial * Substitute imageMin/imageMax with min/max * Replace hipMemset with hipMemsetAsync, and replace hipDeviceSynchronize with hipStreamSynchronize * Use variable instead of batchCount*4 * Use post increment effectivly * Resolve codacy warnings * Additional cleanup * remove unused variable * Documentation - Bump rocm-docs-core[api_reference] from 0.28.0 to 0.29.0 in /docs/sphinx (#265) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.28.0 to 0.29.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.28.0...v0.29.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Remove auto merge boost * Spaces formatting * Bump rocm-docs-core[api_reference] from 0.29.0 to 0.30.1 in /docs/sphinx (#268) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.29.0 to 0.30.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.29.0...v0.30.1) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * add support for mi300 (#269) * Documentation - Bump rocm-docs-core[api_reference] from 0.30.1 to 0.30.2 in /docs/sphinx (#273) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.30.1 to 0.30.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.30.1...v0.30.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Cleanup by removing oneliner functions as inline * RPP Tensor Audio Support - To Decibels (#258) * Initial commit - Non slient region detection Includes unittest setup * Initial commit - To Decibels Includes unittest setup * Replace vectors with arrays * Cleanup * Replace Rpp64s with Rpp32s * Optimize and precompute cutOff * Fix buffer used * Fix buffer used * Additional Cleanup * Update testsuite for Audio * code cleanup * Add Readme file for Audio test suite * changes based on review comments * minor change * Remove unittest folders and updated README.md * Remove unit tests * minor change * code cleanup * added common header file for audio helper functions * removed unncessary audio wav files fixed bug in ROI updation for audio test suite resolved issue in summary generation for performance tests in python * removed log file * added doxygen support for audio * added doxygen changes for to_decibels * updated test suite support for to_decibels * minor change * removed the usage of getMax function and used std::max_element * modularized code in test suite * merge with latest changes * minor change * minor change * resolved codacy warnings * Codacy fix - Remove unused cpuTime * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * resolved issue with file_system dependency in test suite * Doxygen changes changed malloc to new in NSR kernel * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * added ctests for audio test suite for CI made changes to add more clarity on the QA Tests results * Cmake mods for ctest * HOST-only build error bugfix * added qa mode paramter to python audio script added golden output map for QA testing of Non silent region detection * minor change * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * added example for MMS calculation in comments for better understanding * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * updated info used to for running audio test suite * removed bitdepth variable from audio test suite * added more information on computing NSR outputs in the example added * Fix doxygen for decibels Also removes extra QA reference files * Fix build errors and qa tests in Audio Test suite * Remove auto-merge repeated funcs * Improve clarity on header docs * made changes based on review comments * stored golden outputs of to_decibels in binary file removed golden output text files for non silent region * removed unused parameter in verify_output function * updated list of cases supported in python script * added error handling for opening golden output file * Codacy fix and tests warning fix * Codacy fix * Codacy fix trial * codacy fix for checking boundaries of fstream --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Documentation - Bump rocm-docs-core[api_reference] from 0.30.2 to 0.30.3 in /docs/sphinx (#274) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.30.2 to 0.30.3. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.30.2...v0.30.3) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Adding issue template (#270) * Add files via upload * added ROCm v6, MI300, default component * Fix cast used in testsuite Includes minor fixes * Fix displaying f16 outputs * Optimize HOST min/max reduce function further * Fix spacing in HIP kernels * Fix PLN1 outputs for u8 and i8 datatypes of HOST backend * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Bump rocm-docs-core[api_reference] from 0.31.0 to 0.33.0 in /docs/sphinx (#294) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.31.0 to 0.33.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.31.0...v0.33.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Store reference outputs via map for min and max kernels * Update tensor_max.hpp license * Update tensor_min.hpp license * Fix output comparison check * Merge branch 'ar/opt_tensor_min_tensor_max' of https://github.com/r-abishek/rpp into sn/tensor_min_max * Modify exit condition used in outer most kernel * Modify srcIdx for HIP Tensor min * Using maximum as 255 for HIP Tensor min * Modify srcIdx for HIP Tensor max kernel Also fixes build error in testsuite * Fix corrupted outputs displayed for Tensor sum * Fix corruption issue seen with tensor sum kernel * Fix minimum for I8 Tensor max kernel * Modified HIP buffer initialization with a common function * Fix redefinition * Remove additional variables xAlignedLength * Remove unwanted xAlignedLength and xDiff * Remove redefinition of TensorSumReferenceOutputs * Fix for CI issue * Add parenthesis --------- Signed-off-by: dependabot[bot] Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Snehaa Giridharan Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: fiona-gladwin Co-authored-by: Kiriti Gowda Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Lakshmi Kumar Co-authored-by: abhimeda <138710508+abhimeda@users.noreply.github.com> * CI - Update precheckin.groovy * added separate kernels for doing flip when horizontal flip is not set * fixed build issue * Add supported case * reverted incorrect changes happened with merge --------- Signed-off-by: dependabot[bot] Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sam Wu Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa Giridharan Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: Sundarrajan98 Co-authored-by: Pavel Tcherniaev Co-authored-by: fiona-gladwin Co-authored-by: Lakshmi Kumar Co-authored-by: abhimeda <138710508+abhimeda@users.noreply.github.com> * RPP Vignette Tensor on HOST and HIP (#311) * Add Vignette Tensor HOST and HIP Implementation * License - updates to 2024 and consistency changes (#298) * Match all CMakeLists.txt license as per RPP's outermost LICENSE file * Match all python files' license as per RPP's outermost LICENSE file * Match all .hpp files' license as per RPP's outermost LICENSE file * Match all .cpp files' license as per RPP's outermost LICENSE file * Match all .h files' license as per RPP's outermost LICENSE file * Remove all rights reserved as per LICENSE file * Remove double space in "Copyright (c) 2019 - 2023 Advanced Micro Devices, Inc." * Match all .cmake files' license as per RPP's outermost LICENSE file * Match all .cpp.in files' license as per RPP's outermost LICENSE file * Replace 283 occurrences in 282 files - 2023 to 2024 * Add "MIT License" title to 281 instances * Add missing license * Test - Update README.md for test_suite (#299) * Bump rocm-docs-core[api_reference] from 0.33.0 to 0.33.1 in /docs/sphinx (#301) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.0 to 0.33.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.0...v0.33.1) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump rocm-docs-core[api_reference] from 0.33.1 to 0.33.2 in /docs/sphinx (#302) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.1 to 0.33.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.1...v0.33.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update doc codeowners (#303) * Documentation - Bump rocm-docs-core[api_reference] from 0.33.2 to 0.34.0 in /docs/sphinx (#304) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.2 to 0.34.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.2...v0.34.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Test suite - upgrade 5 qa perf (#305) * experimental changes for adding qa mode for performance tests * made changes to add display more information w.r.t QA results summary for performance tests * minor changes * Add changes to dump qa results to excel file * Add performance QA for three new tensor functions * update prerequisites in readme * added changes to handle unsupported cases * removed treshold dictionary and added performance Noise treshold add new dataset for performance QA * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Changes to the performane summary dataframe * minor changes * Update CMakeLists.txt to add ${CMAKE_CURRENT_SOURCE_DIR} for CI * Update CMakeLists.txt fix * Update CMakeLists.txt fix * remove tabulate dependency * Update README.md to remove tabulate pip install * Fix for CI machine failure * Add note on performance --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: Abishek <52214183+r-abishek@users.noreply.github.com> Co-authored-by: Snehaa Giridharan Co-authored-by: r-abishek * RPP Color Temperature on HOST and HIP (#271) * Initial commit - Color Temperature HOST Tensor * Initial commit - Color Temperature HIP Tensor * Add color temperature golden outputs * address review comments * Use reinterpret_cast instead of static_cast * Combine templated functions to support all datatypes into one (got minor perf difference of order 3%) Also fixes indentation * Fix i8 datatype * Cleanup * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Fix PLN3 variant outputs Also modifies reference outputs * Update color_temperature.hpp license * Delete color_temperature_u8_Tensor_PKD3.csv * Delete color_temperature_u8_Tensor_PLN3.csv --------- Co-authored-by: snehaa8 Co-authored-by: HazarathKumarM Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> * RPP Voxel 3D Tensor Add/Subtract scalar on HOST and HIP (#272) * added HOST support for voxel add kernel * added HIP support for voxel add kernel * added test suite support for add scalar * added Doxygen support and modified hip kernel function names as per new standard * added HOST support for voxel subtract kernel * added HIP support for voxel subtract kernel * added test suite support * updated the golden outputs for subtract with correct values * removed unnessary validation checks * Remove double spaces * Fix header * Fix all retval docs * Fix docs to add memory type * Fix comment * Add divider comment * Use post-increment efficiently * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted add and subtract scalar golden outputs to bin files * changed copyright from 2023 to 2024 * Update add_scalar.hpp license * Update subtract_scalar.hpp license --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * RPP Magnitude on HOST and HIP (#278) * Initial commit - Magnitude HOST Tensor * Add QA reference outputs * Update runTests.py * Initial commit - Magnitude HIP Tensor * Add dual input support in testsuite * Optimize HOST kernel further * Optimize i8 datatype further * Modify comments * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Bump rocm-docs-core[api_reference] from 0.31.0 to 0.33.0 in /docs/sphinx (#294) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.31.0 to 0.33.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.31.0...v0.33.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update Copywright year * Combine templated functions to support all datatypes * Modify format of reference outputs * Update rppi_arithmetic_operations.h license * Update rppt_tensor_arithmetic_operations.h license * Update host_tensor_arithmetic_operations.hpp * Update magnitude.hpp license * Update hip_tensor_arithmetic_operations.hpp license * Delete magnitude_u8_Tensor_PKD3.csv * Delete magnitude_u8_Tensor_PLN1.csv * Delete magnitude_u8_Tensor_PLN3.csv * Update rpp_test_suite_common.h license * Update runTests.py license * Update Tensor_hip.cpp license * Update runTests.py license * Update Tensor_host.cpp license --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> * Bump rocm-docs-core[api_reference] from 0.34.0 to 0.34.2 in /docs/sphinx (#309) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.34.0 to 0.34.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.34.0...v0.34.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Tensor Audio Support - Down Mixing (#296) * Initial commit - Non slient region detection Includes unittest setup * Initial commit - To Decibels Includes unittest setup * Intial commit - pre_emphasis_filter * Intial commit - down_mixing * Replace vectors with arrays * Cleanup * Minor cleanup * Optimize downmixing Kernel Includes cleanup * Replace Rpp64s with Rpp32s * Cleanup * Optimize and precompute cutOff * Fix buffer used * Fix buffer used * Additional Cleanup * Optimize post incrmeent operation * Optimize post increment operation * Update testsuite for Audio * code cleanup * Add Readme file for Audio test suite * changes based on review comments * minor change * Remove unittest folders and updated README.md * Remove unit tests * minor change * code cleanup * added common header file for audio helper functions * removed unncessary audio wav files fixed bug in ROI updation for audio test suite resolved issue in summary generation for performance tests in python * removed log file * added doxygen support for audio * added doxygen changes for to_decibels * updated test suite support for to_decibels * minor change * added doxygen changes for preemphasis filter * updated changes for preemphasis filter in test suite * removed the usage of getMax function and used std::max_element * modularized code in test suite * merge with latest changes * minor change * minor change * minor change * resolved codacy warnings * Codacy fix - Remove unused cpuTime * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * resolved issue with file_system dependency in test suite * Doxygen changes changed malloc to new in NSR kernel * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * added ctests for audio test suite for CI made changes to add more clarity on the QA Tests results * Cmake mods for ctest * HOST-only build error bugfix * added qa mode paramter to python audio script added golden output map for QA testing of Non silent region detection * minor change * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * added example for MMS calculation in comments for better understanding * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * updated info used to for running audio test suite * removed bitdepth variable from audio test suite * added more information on computing NSR outputs in the example added * Fix doxygen for decibels Also removes extra QA reference files * move tensor_host_audio.cpp to host folder * Fix build errors and qa tests in Audio Test suite * Fix build errors and qa tests in Audio Test suite * Add reference output and test samples for downmix * Add down_mix in augmentation list and supported cases * Remove auto-merge repeated funcs * Improve clarity of header docs * Remove blank line * Improve clarity on header docs * Add Doxygen comments * minor change * converted golden outputs to binary file for downmixing * removed old golden output file for preemphasis and todecibels * modified info for downmixing as per new changes used handle memory for temporary buffers * formatting changes * moved the common code for SSE and AVX to outside * Update down_mixing.hpp license * Update rppt_tensor_audio_augmentations.h * combined the srcLength and channels tensors into single tensor --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sundarrajan98 * RPP Voxel 3D Tensor Multiply scalar on HOST and HIP (#306) * added HIP support for voxel scalar multiply kernel * added HOST support for voxel multiply kernel added golden outputs for voxel multiply kernel * merge with master * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted multiply scalar voxel golden outputs to bin files * changed copyright from 2023 to 2024 --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Test Suite Bugfix (#307) * experimental changes for adding qa mode for performance tests * made changes to add display more information w.r.t QA results summary for performance tests * minor changes * Add changes to dump qa results to excel file * Add performance QA for three new tensor functions * update prerequisites in readme * added changes to handle unsupported cases * removed treshold dictionary and added performance Noise treshold add new dataset for performance QA * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Changes to the performane summary dataframe * minor changes * Update CMakeLists.txt to add ${CMAKE_CURRENT_SOURCE_DIR} for CI * Update CMakeLists.txt fix * Update CMakeLists.txt fix * remove tabulate dependency * Update README.md to remove tabulate pip install * Fix for CI machine failure * Add note on performance * Fix segmentation fault * Revert QAmode to restrict HIP bitdepths * Use Rpp64u for HOST while comparing outputs * Fix ambiguous abs call * Fix for SLES CI HIP fail - error: incompatible pointer types assigning to 'unsigned long *' from 'unsigned long long *' - refOutput = TensorSumReferenceOutputs[numChannels].data(); --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: Snehaa Giridharan Co-authored-by: Pavel Tcherniaev * Add Vignette Tensor HOST and HIP Implementation * Address review comments * Update rpp_hip_common.hpp * Update vignette.hpp to add rpp_hip_math_nearbyintf8() * Update Tensor_hip.cpp to add hipHostFree * Fix init * Repeated initialization bugfix * Add host case 46 --------- Signed-off-by: dependabot[bot] Co-authored-by: HazarathKumarM Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sam Wu Co-authored-by: Kiriti Gowda Co-authored-by: sampath1117 Co-authored-by: Snehaa Giridharan Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: Sundarrajan98 Co-authored-by: Pavel Tcherniaev * Bump rocm-docs-core[api_reference] from 0.37.1 to 0.38.0 in /docs/sphinx (#333) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.37.1 to 0.38.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.37.1...v0.38.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Move independent computes outside loop * Use memset instead of manually filling values and move this outside loop * Replace c style cast with static cast * Revert "Use memset instead of manually filling values and move this outside loop" This reverts commit d95baee3ccc1fa90f95d0013a16fd415df745679. Leads to mismatch when testing large datasets * RPP Tensor Audio Support - Resample (#310) * Initial commit - Non slient region detection Includes unittest setup * Initial commit - To Decibels Includes unittest setup * Intial commit - pre_emphasis_filter * Intial commit - down_mixing * Intial commit - slice_audio * Intial commit - mel_filter_bank * Intial commit - spectrogram * Intial commit - resample * Replace vectors with arrays * Cleanup * Minor cleanup * Optimize downmixing Kernel Includes cleanup * Remove unused variables in header file * Add axes parameter * Replace Rpp64s with Rpp32s * Replace vectors with arrays Includes optimization * Cleanup * Cleanup * Cleanup and optimize * Move malloc outside openMP loop * Optimize and precompute cutOff * Cleanup * Fix buffer used * Fix buffer used * Additional Cleanup * Fix buffer allocation Includes minor optimization * Optimize post incrmeent operation * Optimize post increment operation * Optimize post increment operation * Update testsuite for Audio * code cleanup * Add Readme file for Audio test suite * changes based on review comments * minor change * Remove unittest folders and updated README.md * Remove unit tests * minor change * code cleanup * added common header file for audio helper functions * removed unncessary audio wav files fixed bug in ROI updation for audio test suite resolved issue in summary generation for performance tests in python * removed log file * added doxygen support for audio * added doxygen changes for to_decibels * updated test suite support for to_decibels * minor change * added doxygen changes for preemphasis filter * updated changes for preemphasis filter in test suite * removed the usage of getMax function and used std::max_element * modularized code in test suite * merge with latest changes * minor change * minor change * minor change * resolved codacy warnings * Codacy fix - Remove unused cpuTime * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * resolved issue with file_system dependency in test suite * Doxygen changes changed malloc to new in NSR kernel * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * added ctests for audio test suite for CI made changes to add more clarity on the QA Tests results * Cmake mods for ctest * HOST-only build error bugfix * added qa mode paramter to python audio script added golden output map for QA testing of Non silent region detection * minor change * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * added example for MMS calculation in comments for better understanding * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * updated info used to for running audio test suite * removed bitdepth variable from audio test suite * added more information on computing NSR outputs in the example added * Fix doxygen for decibels Also removes extra QA reference files * move tensor_host_audio.cpp to host folder * Fix build errors and qa tests in Audio Test suite * Fix build errors and qa tests in Audio Test suite * Add reference output and test samples for downmix * Add down_mix in augmentation list and supported cases * move Tensor_host_audio.cpp to host folder * fix qa mismatches * move Tensor_host_audio.cpp to host folder * fix qa mismatches * move Tensor_host_audio.cpp to host folder * Add spectrogram case in Tensor_host_audio.cpp * move Tensor_host_audio.cpp to host folder * fix qa mismatches * Remove auto-merge repeated funcs * Improve clarity of header docs * Remove blank line * Improve clarity on header docs * Add Doxygen comments * Add Doxygen comments * Add Doxygen comments * minor change * License - updates to 2024 and consistency changes (#298) * Match all CMakeLists.txt license as per RPP's outermost LICENSE file * Match all python files' license as per RPP's outermost LICENSE file * Match all .hpp files' license as per RPP's outermost LICENSE file * Match all .cpp files' license as per RPP's outermost LICENSE file * Match all .h files' license as per RPP's outermost LICENSE file * Remove all rights reserved as per LICENSE file * Remove double space in "Copyright (c) 2019 - 2023 Advanced Micro Devices, Inc." * Match all .cmake files' license as per RPP's outermost LICENSE file * Match all .cpp.in files' license as per RPP's outermost LICENSE file * Replace 283 occurrences in 282 files - 2023 to 2024 * Add "MIT License" title to 281 instances * Add missing license * Test - Update README.md for test_suite (#299) * Bump rocm-docs-core[api_reference] from 0.33.0 to 0.33.1 in /docs/sphinx (#301) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.0 to 0.33.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.0...v0.33.1) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump rocm-docs-core[api_reference] from 0.33.1 to 0.33.2 in /docs/sphinx (#302) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.1 to 0.33.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.1...v0.33.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update doc codeowners (#303) * Documentation - Bump rocm-docs-core[api_reference] from 0.33.2 to 0.34.0 in /docs/sphinx (#304) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.33.2 to 0.34.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.33.2...v0.34.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Test suite - upgrade 5 qa perf (#305) * experimental changes for adding qa mode for performance tests * made changes to add display more information w.r.t QA results summary for performance tests * minor changes * Add changes to dump qa results to excel file * Add performance QA for three new tensor functions * update prerequisites in readme * added changes to handle unsupported cases * removed treshold dictionary and added performance Noise treshold add new dataset for performance QA * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Changes to the performane summary dataframe * minor changes * Update CMakeLists.txt to add ${CMAKE_CURRENT_SOURCE_DIR} for CI * Update CMakeLists.txt fix * Update CMakeLists.txt fix * remove tabulate dependency * Update README.md to remove tabulate pip install * Fix for CI machine failure * Add note on performance --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: Abishek <52214183+r-abishek@users.noreply.github.com> Co-authored-by: Snehaa Giridharan Co-authored-by: r-abishek * RPP Color Temperature on HOST and HIP (#271) * Initial commit - Color Temperature HOST Tensor * Initial commit - Color Temperature HIP Tensor * Add color temperature golden outputs * address review comments * Use reinterpret_cast instead of static_cast * Combine templated functions to support all datatypes into one (got minor perf difference of order 3%) Also fixes indentation * Fix i8 datatype * Cleanup * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Fix PLN3 variant outputs Also modifies reference outputs * Update color_temperature.hpp license * Delete color_temperature_u8_Tensor_PKD3.csv * Delete color_temperature_u8_Tensor_PLN3.csv --------- Co-authored-by: snehaa8 Co-authored-by: HazarathKumarM Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> * RPP Voxel 3D Tensor Add/Subtract scalar on HOST and HIP (#272) * added HOST support for voxel add kernel * added HIP support for voxel add kernel * added test suite support for add scalar * added Doxygen support and modified hip kernel function names as per new standard * added HOST support for voxel subtract kernel * added HIP support for voxel subtract kernel * added test suite support * updated the golden outputs for subtract with correct values * removed unnessary validation checks * Remove double spaces * Fix header * Fix all retval docs * Fix docs to add memory type * Fix comment * Add divider comment * Use post-increment efficiently * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted add and subtract scalar golden outputs to bin files * changed copyright from 2023 to 2024 * Update add_scalar.hpp license * Update subtract_scalar.hpp license --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * removed unnecessary files * removed debugging print statement * updated copyright * updated description for resample based on latest changes * converted golden outputs for resample to binary files * Passed resampling window as a parameter to resampling function * RPP Magnitude on HOST and HIP (#278) * Initial commit - Magnitude HOST Tensor * Add QA reference outputs * Update runTests.py * Initial commit - Magnitude HIP Tensor * Add dual input support in testsuite * Optimize HOST kernel further * Optimize i8 datatype further * Modify comments * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Bump rocm-docs-core[api_reference] from 0.31.0 to 0.33.0 in /docs/sphinx (#294) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.31.0 to 0.33.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.31.0...v0.33.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update Copywright year * Combine templated functions to support all datatypes * Modify format of reference outputs * Update rppi_arithmetic_operations.h license * Update rppt_tensor_arithmetic_operations.h license * Update host_tensor_arithmetic_operations.hpp * Update magnitude.hpp license * Update hip_tensor_arithmetic_operations.hpp license * Delete magnitude_u8_Tensor_PKD3.csv * Delete magnitude_u8_Tensor_PLN1.csv * Delete magnitude_u8_Tensor_PLN3.csv * Update rpp_test_suite_common.h license * Update runTests.py license * Update Tensor_hip.cpp license * Update runTests.py license * Update Tensor_host.cpp license --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> * removed unnecessary files removed unncessary validation checks in test suite * modified sinc to use ONE_OVER_6 macro * combined srcLength and channels into single tensor removed the usage of quality parameter since not used in the kernel * minor change * Bump rocm-docs-core[api_reference] from 0.34.0 to 0.34.2 in /docs/sphinx (#309) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.34.0 to 0.34.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.34.0...v0.34.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Tensor Audio Support - Down Mixing (#296) * Initial commit - Non slient region detection Includes unittest setup * Initial commit - To Decibels Includes unittest setup * Intial commit - pre_emphasis_filter * Intial commit - down_mixing * Replace vectors with arrays * Cleanup * Minor cleanup * Optimize downmixing Kernel Includes cleanup * Replace Rpp64s with Rpp32s * Cleanup * Optimize and precompute cutOff * Fix buffer used * Fix buffer used * Additional Cleanup * Optimize post incrmeent operation * Optimize post increment operation * Update testsuite for Audio * code cleanup * Add Readme file for Audio test suite * changes based on review comments * minor change * Remove unittest folders and updated README.md * Remove unit tests * minor change * code cleanup * added common header file for audio helper functions * removed unncessary audio wav files fixed bug in ROI updation for audio test suite resolved issue in summary generation for performance tests in python * removed log file * added doxygen support for audio * added doxygen changes for to_decibels * updated test suite support for to_decibels * minor change * added doxygen changes for preemphasis filter * updated changes for preemphasis filter in test suite * removed the usage of getMax function and used std::max_element * modularized code in test suite * merge with latest changes * minor change * minor change * minor change * resolved codacy warnings * Codacy fix - Remove unused cpuTime * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * resolved issue with file_system dependency in test suite * Doxygen changes changed malloc to new in NSR kernel * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * added ctests for audio test suite for CI made changes to add more clarity on the QA Tests results * Cmake mods for ctest * HOST-only build error bugfix * added qa mode paramter to python audio script added golden output map for QA testing of Non silent region detection * minor change * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * added example for MMS calculation in comments for better understanding * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * updated info used to for running audio test suite * removed bitdepth variable from audio test suite * added more information on computing NSR outputs in the example added * Fix doxygen for decibels Also removes extra QA reference files * move tensor_host_audio.cpp to host folder * Fix build errors and qa tests in Audio Test suite * Fix build errors and qa tests in Audio Test suite * Add reference output and test samples for downmix * Add down_mix in augmentation list and supported cases * Remove auto-merge repeated funcs * Improve clarity of header docs * Remove blank line * Improve clarity on header docs * Add Doxygen comments * minor change * converted golden outputs to binary file for downmixing * removed old golden output file for preemphasis and todecibels * modified info for downmixing as per new changes used handle memory for temporary buffers * formatting changes * moved the common code for SSE and AVX to outside * Update down_mixing.hpp license * Update rppt_tensor_audio_augmentations.h * combined the srcLength and channels tensors into single tensor --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sundarrajan98 * RPP Voxel 3D Tensor Multiply scalar on HOST and HIP (#306) * added HIP support for voxel scalar multiply kernel * added HOST support for voxel multiply kernel added golden outputs for voxel multiply kernel * merge with master * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * converted multiply scalar voxel golden outputs to bin files * changed copyright from 2023 to 2024 --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Test Suite Bugfix (#307) * experimental changes for adding qa mode for performance tests * made changes to add display more information w.r.t QA results summary for performance tests * minor changes * Add changes to dump qa results to excel file * Add performance QA for three new tensor functions * update prerequisites in readme * added changes to handle unsupported cases * removed treshold dictionary and added performance Noise treshold add new dataset for performance QA * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Changes to the performane summary dataframe * minor changes * Update CMakeLists.txt to add ${CMAKE_CURRENT_SOURCE_DIR} for CI * Update CMakeLists.txt fix * Update CMakeLists.txt fix * remove tabulate dependency * Update README.md to remove tabulate pip install * Fix for CI machine failure * Add note on performance * Fix segmentation fault * Revert QAmode to restrict HIP bitdepths * Use Rpp64u for HOST while comparing outputs * Fix ambiguous abs call * Fix for SLES CI HIP fail - error: incompatible pointer types assigning to 'unsigned long *' from 'unsigned long long *' - refOutput = TensorSumReferenceOutputs[numChannels].data(); --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM Co-authored-by: Snehaa Giridharan Co-authored-by: Pavel Tcherniaev * used std functions for floor and ceil use static_cast instead of floor in the resample kernel * Bump rocm-docs-core[api_reference] from 0.34.2 to 0.35.0 in /docs/sphinx (#313) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.34.2 to 0.35.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.34.2...v0.35.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Reduction - Tensor min and Tensor max on HOST and HIP (#260) * Minor Change * Add Validation check for DST_FOLDER path * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * Add Validation checks for all options in testAllScript.sh * Add sanity check for dual Input cases Set Max Dimension and Max Image Dump Replaced Fast DCT tag with Accurate DCT * Regenerate golden outputs using accurate dct Flag Add golden outputs for some new augmentations * Fix Flip golden outputs mismatch Fix PLN3 variants mismatch in QA mode * Add MAX_BATCH_SIZE check removed Augmentations function calls for failing Qa modes code cleanup * Add crop and gamma correction augmentations code cleanup * Add comments to functions in rpp_test_suite_common.h * minor change * code cleanup * minor code changes * Change roi and Image sizes for crop augmentation * Change numIterations option to numRuns Addressed PR comments * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * Add turboJpeg header to update maxHeight and maxWidth values * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Change the performance Timings logic * Add Avx2 implementation for F32 and U8 toggle variants * minor change to support u8_f16 and u8_f32 cases * Regenerate LUT golden outputs with ACCURATE_DCT tag * Minor code changes * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * Made changes to the runTests.py in Host to remove testAllScipts.sh * Made changes to the runTests.py in HIP to remove testAllScipts.sh * Initial commit - Image min and max Reduction kernel Includes * u8 datatype for both min and max HOST Tensor of all variants. * Testsuite changes. * NWC -initial code for min max PLN3 - PLN3 * made changes to split min and max kernels seperately * splitted kernels for min and max * made changes to print final max/min in the R,G,B channels * fixed inaccuracies in min/max computation * made changes to typecast intermediate output to output requested by user added comments for the code code cleanup and minor changes in test suite * fixed build issues removed image folders used for min, max and sum reverted unwanted file changes * minor changes in test suite * removed support for unwanted test case in Tensor_hip.cpp * Adds new option roi * remove testAllScripts.sh * Adds roi Option in HIP backend * Implement f32 variants * Implement f16 and i8 datatype variants * change F32 load and store logic * Add build flags in CMakeLists.txt to set AVX/SSE flags based on the system configuration * minor code changes * Initial commit - Image sum Reduction kernel Includes u8 PLN1 -> PLN1 conversion for HOST Tensor * Implement PKD3 and PLN3 for Image sum Tensor HOST * Support i8, f16 and f32 datatypes * Initial commit - Image sum Reduction HIP kernel Includes u8 PLN1 -> PLN1 conversion for Tensor * Implement PKD3 and PLN3 for Image sum Tensor HIP * Add support in testsuite Revert normalization for i8 HOST Tensor variants * Fix HIP testsuite Remove additional blanks for 1 channel output * Modify print statement in HIP testsuite * Improve readability for testsuite outputs * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * Fix HIP to support larger inputs * optimized load and store functions for water U8 and F32 variants in host removed commented code * Cleanup * removed golden outputs for water * minor changes * Cleanup Support Reduction QA test in testsuite * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * Remove unused variables and C style casting * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * Optimize u8 datatype further * Fix static_cast * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * added rotate case with golden outputs changed generic bilinear HOST codes to match with HIP codes * Add golden output for remaining all tensor augmentations * fix python script issues * Optimize u8 and i8 datatype Uses uint and int internal processing instead of float * Fix testsuite build errors * minor change * Fix QA check * Modify api naming from image_sum to tensor_sum Includes changes for both HOST and HIP * Support HIP Backend for RICAP * change rcm and rmn golden outputs * Fix HIP pkd3->pkd3 variant * changes based on review comments * change test_suite folder to tests * Optimize u8 and i8 datatype of HIP Includes modification in naming of shared memory * minor fix * changed generic nn F32 loads using gather and setr instructions * Optimize and cleanup U8 HIP * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Fix i8 datatype variants Includes cleanup * Fix the issues with color_to_greyscale * remove the empty folder creation * reverting back the folder name change * minor change * added comments for latest changes * minor change * Improve readability and Cleanup * Fix QA for HIP Includes cleanup * resolved review comments * minor change * Modify api naming from image_ to tensor_ for HOST * Add support for QA tests * removed range check for RMN U8-F32 and U8-F16 variants changed from hipMemset to hipMemsetAsync for RMN HIP Kernel removed multiplication by 255 for stdDev in RMN HOST U8-F16 and U8-F32 variants * Modify naming of shared memory with _smem in HIP Includes cleanup * Typecast and reuse markArr for HIP U8 and I8 * Cleanup and minor optimization * minor fix * fix codacy warnings * Additional cleanup * Cleanup and move #define * Changed the complexity of if statements in runTests.py * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Codacy fixes * Fix codacy warnings * Codacy fix * Address other codacy warnings * cleanup * Change Image functions to generic * Update ricap.hpp with reference paper * resolved minor issues happened with merge * minor changes * fixed minor issue with getting profiler times * minor formatting changes * resolved build issues in test suite renamed the min and max kernel file names * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * Cmake fix to prevent warning * Fix paths in new python scripts * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * Test suite fixes after tensor_min / tensor_max HOST merge * Fix max case * QA tests fix for hip and host * naming convention changes as per new std * Substitute imagePartial with partial * Substitute imageMin/imageMax with min/max * Replace hipMemset with hipMemsetAsync, and replace hipDeviceSynchronize with hipStreamSynchronize * Use variable instead of batchCount*4 * Use post increment effectivly * Resolve codacy warnings * Additional cleanup * remove unused variable * Documentation - Bump rocm-docs-core[api_reference] from 0.28.0 to 0.29.0 in /docs/sphinx (#265) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.28.0 to 0.29.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.28.0...v0.29.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Remove auto merge boost * Spaces formatting * Bump rocm-docs-core[api_reference] from 0.29.0 to 0.30.1 in /docs/sphinx (#268) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.29.0 to 0.30.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.29.0...v0.30.1) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * add support for mi300 (#269) * Documentation - Bump rocm-docs-core[api_reference] from 0.30.1 to 0.30.2 in /docs/sphinx (#273) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.30.1 to 0.30.2. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.30.1...v0.30.2) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Cleanup by removing oneliner functions as inline * RPP Tensor Audio Support - To Decibels (#258) * Initial commit - Non slient region detection Includes unittest setup * Initial commit - To Decibels Includes unittest setup * Replace vectors with arrays * Cleanup * Replace Rpp64s with Rpp32s * Optimize and precompute cutOff * Fix buffer used * Fix buffer used * Additional Cleanup * Update testsuite for Audio * code cleanup * Add Readme file for Audio test suite * changes based on review comments * minor change * Remove unittest folders and updated README.md * Remove unit tests * minor change * code cleanup * added common header file for audio helper functions * removed unncessary audio wav files fixed bug in ROI updation for audio test suite resolved issue in summary generation for performance tests in python * removed log file * added doxygen support for audio * added doxygen changes for to_decibels * updated test suite support for to_decibels * minor change * removed the usage of getMax function and used std::max_element * modularized code in test suite * merge with latest changes * minor change * minor change * resolved codacy warnings * Codacy fix - Remove unused cpuTime * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * resolved issue with file_system dependency in test suite * Doxygen changes changed malloc to new in NSR kernel * RPP RICAP Tensor for HOST and HIP (#213) * Initial commit - Ricap HOST Tensor Includes testsuite changes * Add QA tests for RICAP Used three_images_224x224_src1 folder to create golden outputs * Add three_images_224x224_src1 into TEST_IMAGES * Support HIP Backend for RICAP * Fix HIP pkd3->pkd3 variant * regenerated golden outputs for RICAP minor changes in HOST shell script for handling RICAP in QA mode * minor bug fix in RICAP HIP kernels * Improve readability and Cleanup * Additional cleanup * Cleanup testsuite Includes new golden outputs * Additional testuite fixes * Minor cleanup * Fix codacy warnings * Address other codacy warnings * Update ricap.hpp with reference paper * Add RICAP dataset path in readme * Make changes to error codes returned * Modify roi crop region for unit and perf tests * RPP Tensor Water Augmentation on HOST and HIP (#181) * added water HOST and HIP codes * added water case in test suite * added golden outputs for water * added omp thread changes for water augmentation * experimental changes * fixed output issue with AVX2 instructions * added AVX2 support for PKD3 load function minor changes in PLN variant load functions * nwc commit - added avx2 changes for u8 layout toggle variants but need to add store functions for completion * Add Avx2 implementation for F32 and U8 toggle variants * Add AVX2 support for u8 pkd3-pln3 and i8 pkd3-pln3 for water augmentation * change F32 load and store logic * optimized the store function for F32 PLN3-PKD3 * reverted back irrelevant changes * minor change * optimized load and store functions for water U8 and F32 variants in host removed commented code * removed golden outputs for water * minor changes * renamed few functions and removed unused functions updated i8 pln1 load as per the optimized u8 pln1 load * fixed bug in i8 load function * changed cast to c++ style resolved spacing issues and added comments for AVX codes for better understanding made changes to handle cases where QA Tests are not supported * added golden outputs for water * updated golden outputs with latest changes * modified the u8, i8 pkd3-pln3 function and added comments for the vectorized code * fixed minor bug in I8 variants * made to changes to resolve codacy warnings * changed cast to c++ style in hip kernel * changed generic nn F32 loads using gather and setr instructions * added comments for latest changes * minor change * added definition for storing 32 and 64 bits from a 128bit register --------- Co-authored-by: sampath1117 Co-authored-by: HazarathKumarM * Fix build error * CMakeLists - Version Update 1.5.0 - TOT Version * CHANGELOG Updates Version 1.5.0 placeholder * Boost deps fix for test suite --------- Co-authored-by: Snehaa Giridharan Co-authored-by: sampath1117 Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: HazarathKumarM Co-authored-by: Kiriti Gowda * Documentation - Readme & changelog updates (#251) * readme and changelog updates for 6.0 * minor update * added ctests for audio test suite for CI made changes to add more clarity on the QA Tests results * Cmake mods for ctest * HOST-only build error bugfix * added qa mode paramter to python audio script added golden output map for QA testing of Non silent region detection * minor change * Documentation - Bump rocm-docs-core[api_reference] from 0.26.0 to 0.27.0 in /docs/sphinx (#253) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * RPP Resize Mirror Normalize Bugfix (#252) * added fix for hipMemset * remove pixel check for U8-F32 and U8-F16 for HOST codes --------- Co-authored-by: sampath1117 * added example for MMS calculation in comments for better understanding * Sphinx - updates (#257) * Sphinx - updates * Doxygen - Updates * Docs - Remove index.md * updated info used to for running audio test suite * removed bitdepth variable from audio test suite * added more information on computing NSR outputs in the example added * Fix doxygen for decibels Also removes extra QA reference files * Fix build errors and qa tests in Audio Test suite * Remove auto-merge repeated funcs * Improve clarity on header docs * made changes based on review comments * stored golden outputs of to_decibels in binary file removed golden output text files for non silent region * removed unused parameter in verify_output function * updated list of cases supported in python script * added error handling for opening golden output file * Codacy fix and tests warning fix * Codacy fix * Codacy fix trial * codacy fix for checking boundaries of fstream --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Documentation - Bump rocm-docs-core[api_reference] from 0.30.2 to 0.30.3 in /docs/sphinx (#274) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.30.2 to 0.30.3. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/RadeonOpenCompute/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.30.2...v0.30.3) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Adding issue template (#270) * Add files via upload * added ROCm v6, MI300, default component * Fix cast used in testsuite Includes minor fixes * Fix displaying f16 outputs * Optimize HOST min/max reduce function further * Fix spacing in HIP kernels * Fix PLN1 outputs for u8 and i8 datatypes of HOST backend * RPP Test Suite Upgrade 4 - CSV to BIN conversions for file size reduction (#293) * change golden outputs from .csv files to .bin files * Changed comparision funtions to use .bin files * Address review comments * minor change * Address review comments * minor change --------- Co-authored-by: HazarathKumarM * Bump rocm-docs-core[api_reference] from 0.31.0 to 0.33.0 in /docs/sphinx (#294) Bumps [rocm-docs-core[api_reference]](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.31.0 to 0.33.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.31.0...v0.33.0) --- updated-dependencies: - dependency-name: rocm-docs-core[api_reference] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Store reference outputs via map for min and max kernels * Update tensor_max.hpp license * Update tensor_min.hpp license * Fix output comparison check * Merge branch 'ar/opt_tensor_min_tensor_max' of https://github.com/r-abishek/rpp into sn/tensor_min_max * Modify exit condition used in outer most kernel * Modify srcIdx for HIP Tensor min * Using maximum as 255 for HIP Tensor min * Modify srcIdx for HIP Tensor max kernel Also fixes build error in testsuite * Fix corrupted outputs displayed for Tensor sum * Fix corruption issue seen with tensor sum kernel * Fix minimum for I8 Tensor max kernel * Modified HIP buffer initialization with a common function * Fix redefinition * Remove additional variables xAlignedLength * Remove unwanted xAlignedLength and xDiff * Remove redefinition of TensorSumReferenceOutputs * Fix for CI issue * Add parenthesis --------- Signed-off-by: dependabot[bot] Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Snehaa Giridharan Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: fiona-gladwin Co-authored-by: Kiriti Gowda Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Lakshmi Kumar Co-authored-by: abhimeda <138710508+abhimeda@users.noreply.github.com> * CI - Update precheckin.groovy * Png update (#316) * PNG file conversion * reference .png files * remove JPG files * edit IMAGE_PATH * RPP Test Suite Upgrade 6 - Restructure common HIP/HOST code (#315) * moved the common functions used in a python test suites to to a common python script created helper function for displaying QA test summary * reversed the order of performance runs loop and decode loop in all test suites * modified remaining python scripts to use print qa helper function for displaying QA results * added new helper function for print the performance test results as a summary * added caseMax, caseMin variables in image test suite made changes to run only necessary bitdepths needed incase of qa mode --------- Co-authored-by: sampath1117 * Fix build error * removed outBegin variable * remove duplicate line in readme --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sundarrajan98 Co-authored-by: Sam Wu Co-authored-by: Pavel Tcherniaev Co-authored-by: fiona-gladwin Co-authored-by: Lakshmi Kumar Co-authored-by: abhimeda <138710508+abhimeda@users.noreply.github.com> Co-authored-by: randyh62 <42045079+randyh62@users.noreply.github.com> * Docs - Missing input and output images for Doxygen (#331) * added missing outputs for image augmentations modified the description with correct output names * added gif for voxel input and outputs * modified the output images for water, resize_crop_mirror and resize_mirror_normalize --------- Co-authored-by: sampath1117 * Scratch buffers rename for HOST and HIP (#324) * Change all maskArr to scratchBufferHip * Change all tempFloatmem to scratchBufferHost * Update CMakeLists.txt Version updates * Update CMakeLists.txt Version Upgrade --------- Signed-off-by: dependabot[bot] Co-authored-by: Snehaa Giridharan Co-authored-by: HazarathKumarM Co-authored-by: sampath1117 Co-authored-by: Kiriti Gowda Co-authored-by: Snehaa-Giridharan <118163708+snehaa8@users.noreply.github.com> Co-authored-by: Lisa Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sundarrajan98 Co-authored-by: Sam Wu Co-authored-by: Pavel Tcherniaev Co-authored-by: fiona-gladwin Co-authored-by: Lakshmi Kumar Co-authored-by: abhimeda <138710508+abhimeda@users.noreply.github.com> Co-authored-by: randyh62 <42045079+randyh62@users.noreply.github.com> --- CMakeLists.txt | 1 + include/rppdefs.h | 9 + include/rppt_tensor_audio_augmentations.h | 22 ++ include/third_party/ffts/ffts.h | 110 ++++++++ include/third_party/ffts/ffts_attributes.h | 111 ++++++++ libs/third_party/ffts/libffts.a | Bin 0 -> 106000 bytes .../cpu/host_tensor_audio_augmentations.hpp | 1 + src/modules/cpu/kernel/spectrogram.hpp | 246 ++++++++++++++++++ .../rppt_tensor_audio_augmentations.cpp | 42 +++ utilities/test_suite/HIP/Tensor_hip.cpp | 4 +- utilities/test_suite/HOST/Tensor_host.cpp | 7 +- .../test_suite/HOST/Tensor_host_audio.cpp | 50 ++++ utilities/test_suite/HOST/runAudioTests.py | 3 +- utilities/test_suite/README.md | 4 + .../spectrogram/spectrogram.bin | Bin 0 -> 693900 bytes utilities/test_suite/rpp_test_suite_audio.h | 17 ++ 16 files changed, 623 insertions(+), 4 deletions(-) create mode 100644 include/third_party/ffts/ffts.h create mode 100644 include/third_party/ffts/ffts_attributes.h create mode 100644 libs/third_party/ffts/libffts.a create mode 100644 src/modules/cpu/kernel/spectrogram.hpp create mode 100644 utilities/test_suite/REFERENCE_OUTPUTS_AUDIO/spectrogram/spectrogram.bin diff --git a/CMakeLists.txt b/CMakeLists.txt index f5659a8e6..0e35bf13c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -308,6 +308,7 @@ message("-- ${White}${PROJECT_NAME} -- Link Libraries: ${LINK_LIBRARY_LIST}${Col target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARY_LIST}) set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX) +target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/libs/third_party/ffts/libffts.a) set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}) target_include_directories(${PROJECT_NAME} diff --git a/include/rppdefs.h b/include/rppdefs.h index 99b9bb601..82539e139 100644 --- a/include/rppdefs.h +++ b/include/rppdefs.h @@ -425,6 +425,15 @@ typedef enum REFLECT } RpptAudioBorderType; +/*! \brief RPPT Spectrogram Layout enum + * \ingroup group_rppdefs + */ +typedef enum +{ + FT = 0, //Frequency Major + TF, //Time Major +} RpptSpectrogramLayout; + /*! \brief RPPT Tensor 2D ROI LTRB struct * \ingroup group_rppdefs */ diff --git a/include/rppt_tensor_audio_augmentations.h b/include/rppt_tensor_audio_augmentations.h index 1941df0da..09e4cbd56 100644 --- a/include/rppt_tensor_audio_augmentations.h +++ b/include/rppt_tensor_audio_augmentations.h @@ -110,6 +110,28 @@ RppStatus rppt_pre_emphasis_filter_host(RppPtr_t srcPtr, RpptDescPtr srcDescPtr, */ RppStatus rppt_down_mixing_host(RppPtr_t srcPtr, RpptDescPtr srcDescPtr, RppPtr_t dstPtr, RpptDescPtr dstDescPtr, Rpp32s *srcDimsTensor, bool normalizeWeights, rppHandle_t rppHandle); +/*! \brief Produces a spectrogram from a 1D audio buffer on HOST backend + * \details Spectrogram for 1D audio buffer + * \param [in] srcPtr source tensor in HOST memory + * \param [in] srcDescPtr source tensor descriptor (Restrictions - numDims = 3, offsetInBytes >= 0, dataType = F32) + * \param [out] dstPtr destination tensor in HOST memory + * \param [in] dstDescPtr destination tensor descriptor (Restrictions - numDims = 3, offsetInBytes >= 0, dataType = F32) + * \param [in] srcLengthTensor source audio buffer length (1D tensor in HOST memory, of size batchSize) + * \param [in] centerWindows indicates whether extracted windows should be padded so that the window function is centered at multiples of window_step + * \param [in] reflectPadding indicates the padding policy when sampling outside the bounds of the signal + * \param [in] windowFunction samples of the window function that will be multiplied to each extracted window when calculating the Short Time Fourier Transform (STFT) + * \param [in] nfft size of the FFT + * \param [in] power exponent of the magnitude of the spectrum + * \param [in] windowLength window size in number of samples + * \param [in] windowStep step between the STFT windows in number of samples + * \param [in] layout specifies output layout of spectrogram + * \param [in] rppHandle RPP HOST handle created with \ref rppCreateWithBatchSize() + * \return A \ref RppStatus enumeration. + * \retval RPP_SUCCESS Successful completion. + * \retval RPP_ERROR* Unsuccessful completion. + */ +RppStatus rppt_spectrogram_host(RppPtr_t srcPtr, RpptDescPtr srcDescPtr, RppPtr_t dstPtr, RpptDescPtr dstDescPtr, Rpp32s *srcLengthTensor, bool centerWindows, bool reflectPadding, Rpp32f *windowFunction, Rpp32s nfft, Rpp32s power, Rpp32s windowLength, Rpp32s windowStep, RpptSpectrogramLayout layout, rppHandle_t rppHandle); + /*! \brief Resample augmentation on HOST backend * \details Resample augmentation for audio data * \param[in] srcPtr source tensor in HOST memory diff --git a/include/third_party/ffts/ffts.h b/include/third_party/ffts/ffts.h new file mode 100644 index 000000000..cc85a885b --- /dev/null +++ b/include/third_party/ffts/ffts.h @@ -0,0 +1,110 @@ +/* + + This file is part of FFTS. + + Copyright (c) 2012, Anthony M. Blake + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the organization nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef FFTS_H +#define FFTS_H + +#if defined (_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if (defined(_WIN32) || defined(WIN32)) && defined(FFTS_SHARED) +# ifdef FFTS_BUILD +# define FFTS_API __declspec(dllexport) +# else +# define FFTS_API __declspec(dllimport) +# endif +#else +# if (__GNUC__ >= 4) || defined(HAVE_GCC_VISIBILITY) +# define FFTS_API __attribute__ ((visibility("default"))) +# else +# define FFTS_API +# endif +#endif + +/* The direction of the transform + (i.e, the sign of the exponent in the transform.) +*/ +#define FFTS_FORWARD (-1) +#define FFTS_BACKWARD (+1) + +struct _ffts_plan_t; +typedef struct _ffts_plan_t ffts_plan_t; + +/* Complex data is stored in the interleaved format + (i.e, the real and imaginary parts composing each + element of complex data are stored adjacently in memory) + + The multi-dimensional arrays passed are expected to be + stored as a single contiguous block in row-major order +*/ +FFTS_API ffts_plan_t* +ffts_init_1d(size_t N, int sign); + +FFTS_API ffts_plan_t* +ffts_init_2d(size_t N1, size_t N2, int sign); + +FFTS_API ffts_plan_t* +ffts_init_nd(int rank, size_t *Ns, int sign); + +/* For real transforms, sign == FFTS_FORWARD implies a real-to-complex + forwards tranform, and sign == FFTS_BACKWARD implies a complex-to-real + backwards transform. + + The output of a real-to-complex transform is N/2+1 complex numbers, + where the redundant outputs have been omitted. +*/ +FFTS_API ffts_plan_t* +ffts_init_1d_real(size_t N, int sign); + +FFTS_API ffts_plan_t* +ffts_init_2d_real(size_t N1, size_t N2, int sign); + +FFTS_API ffts_plan_t* +ffts_init_nd_real(int rank, size_t *Ns, int sign); + +FFTS_API void +ffts_execute(ffts_plan_t *p, const void *input, void *output); + +FFTS_API void +ffts_free(ffts_plan_t *p); + +#ifdef __cplusplus +} +#endif + +#endif /* FFTS_H */ diff --git a/include/third_party/ffts/ffts_attributes.h b/include/third_party/ffts/ffts_attributes.h new file mode 100644 index 000000000..bdfd6162f --- /dev/null +++ b/include/third_party/ffts/ffts_attributes.h @@ -0,0 +1,111 @@ +/* + + This file is part of FFTS -- The Fastest Fourier Transform in the South + + Copyright (c) 2012, Anthony M. Blake + Copyright (c) 2012, The University of Waikato + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the organization nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef FFTS_ATTRIBUTES_H +#define FFTS_ATTRIBUTES_H + +#if defined (_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Macro definitions for various function/variable attributes */ +#ifdef __GNUC__ +#define GCC_VERSION_AT_LEAST(x,y) \ + (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y) +#else +#define GCC_VERSION_AT_LEAST(x,y) 0 +#endif + +#ifdef __GNUC__ +#define FFTS_ALIGN(x) __attribute__((aligned(x))) +#elif defined(_MSC_VER) +#define FFTS_ALIGN(x) __declspec(align(x)) +#else +#define FFTS_ALIGN(x) +#endif + +#if GCC_VERSION_AT_LEAST(3,1) +#define FFTS_ALWAYS_INLINE __attribute__((always_inline)) inline +#elif defined(_MSC_VER) +#define FFTS_ALWAYS_INLINE __forceinline +#else +#define FFTS_ALWAYS_INLINE inline +#endif + +#if defined(_MSC_VER) +#define FFTS_INLINE __inline +#else +#define FFTS_INLINE inline +#endif + +#if defined(__GNUC__) +#define FFTS_RESTRICT __restrict +#elif defined(_MSC_VER) +#define FFTS_RESTRICT __restrict +#else +#define FFTS_RESTRICT +#endif + +#if GCC_VERSION_AT_LEAST(4,5) +#define FFTS_ASSUME(cond) do { if (!(cond)) __builtin_unreachable(); } while (0) +#elif defined(_MSC_VER) +#define FFTS_ASSUME(cond) __assume(cond) +#else +#define FFTS_ASSUME(cond) +#endif + +#if GCC_VERSION_AT_LEAST(4,7) +#define FFTS_ASSUME_ALIGNED_16(x) __builtin_assume_aligned(x, 16) +#else +#define FFTS_ASSUME_ALIGNED_16(x) x +#endif + +#if GCC_VERSION_AT_LEAST(4,7) +#define FFTS_ASSUME_ALIGNED_32(x) __builtin_assume_aligned(x, 32) +#else +#define FFTS_ASSUME_ALIGNED_32(x) x +#endif + +#if defined(__GNUC__) +#define FFTS_LIKELY(cond) __builtin_expect(!!(cond), 1) +#else +#define FFTS_LIKELY(cond) cond +#endif + +#if defined(__GNUC__) +#define FFTS_UNLIKELY(cond) __builtin_expect(!!(cond), 0) +#else +#define FFTS_UNLIKELY(cond) cond +#endif + +#endif /* FFTS_ATTRIBUTES_H */ diff --git a/libs/third_party/ffts/libffts.a b/libs/third_party/ffts/libffts.a new file mode 100644 index 0000000000000000000000000000000000000000..b30b1147133391c403074dbd380d91f356c094dd GIT binary patch literal 106000 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

-2dAk02)Dn?7T5{=BKPrfd26@4jq6Kuw@^<1jjp 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 literal 0 HcmV?d00001 diff --git a/src/modules/cpu/host_tensor_audio_augmentations.hpp b/src/modules/cpu/host_tensor_audio_augmentations.hpp index 0c6ccf211..e38d2d843 100644 --- a/src/modules/cpu/host_tensor_audio_augmentations.hpp +++ b/src/modules/cpu/host_tensor_audio_augmentations.hpp @@ -29,6 +29,7 @@ SOFTWARE. #include "kernel/to_decibels.hpp" #include "kernel/pre_emphasis_filter.hpp" #include "kernel/down_mixing.hpp" +#include "kernel/spectrogram.hpp" #include "kernel/resample.hpp" #endif // HOST_TENSOR_AUDIO_AUGMENTATIONS_HPP \ No newline at end of file diff --git a/src/modules/cpu/kernel/spectrogram.hpp b/src/modules/cpu/kernel/spectrogram.hpp new file mode 100644 index 000000000..e072b7633 --- /dev/null +++ b/src/modules/cpu/kernel/spectrogram.hpp @@ -0,0 +1,246 @@ +/* +MIT License + +Copyright (c) 2019 - 2024 Advanced Micro Devices, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "rppdefs.h" +#include "third_party/ffts/ffts.h" +#include "third_party/ffts/ffts_attributes.h" +#include + +bool is_pow2(Rpp64s n) { return (n & (n-1)) == 0; } +inline bool can_use_real_impl(Rpp64s n) { return is_pow2(n); } +inline Rpp64s size_in_buf(Rpp64s n) { return can_use_real_impl(n) ? n : 2 * n; } +inline Rpp64s size_out_buf(Rpp64s n) { return can_use_real_impl(n) ? n + 2 : 2 * n; } + +// Compute hanning window +inline void hann_window(Rpp32f *output, Rpp32s windowSize) +{ + Rpp64f a = (2.0 * M_PI) / windowSize; + for (Rpp32s t = 0; t < windowSize; t++) + { + Rpp64f phase = a * (t + 0.5); + output[t] = (0.5 * (1.0 - std::cos(phase))); + } +} + +// Compute number of spectrogram windows +inline Rpp32s get_num_windows(Rpp32s length, Rpp32s windowLength, Rpp32s windowStep, bool centerWindows) +{ + if (!centerWindows) + length -= windowLength; + return ((length / windowStep) + 1); +} + +// Compute reflect start idx to pad +inline Rpp32s get_idx_reflect(Rpp32s loc, Rpp32s minLoc, Rpp32s maxLoc) +{ + if (maxLoc - minLoc < 2) + return maxLoc - 1; + for (;;) + { + if (loc < minLoc) + loc = 2 * minLoc - loc; + else if (loc >= maxLoc) + loc = 2 * maxLoc - 2 - loc; + else + break; + } + return loc; +} + +RppStatus spectrogram_host_tensor(Rpp32f *srcPtr, + RpptDescPtr srcDescPtr, + Rpp32f *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32s *srcLengthTensor, + bool centerWindows, + bool reflectPadding, + Rpp32f *windowFunction, + Rpp32s nfft, + Rpp32s power, + Rpp32s windowLength, + Rpp32s windowStep, + RpptSpectrogramLayout layout, + rpp::Handle& handle) +{ + Rpp32s windowCenterOffset = 0; + bool vertical = (layout == RpptSpectrogramLayout::FT); + if (centerWindows) windowCenterOffset = windowLength / 2; + if (nfft == 0) nfft = windowLength; + const Rpp32s numBins = nfft / 2 + 1; + const Rpp32f mulFactor = (2.0 * M_PI) / nfft; + const Rpp32u hStride = dstDescPtr->strides.hStride; + const Rpp32s alignedNfftLength = nfft & ~7; + const Rpp32s alignedNbinsLength = numBins & ~7; + const Rpp32s alignedWindowLength = windowLength & ~7; + bool useRealImpl = can_use_real_impl(nfft); + const auto fftInSize = size_in_buf(nfft); + const auto fftOutSize = size_out_buf(nfft); + + Rpp32f *windowFn = static_cast(calloc(windowLength, sizeof(Rpp32f))); + + // Generate hanning window + if (windowFunction == NULL) + hann_window(windowFn, windowLength); + else + memcpy(windowFn, windowFunction, windowLength * sizeof(Rpp32f)); + Rpp32u numThreads = handle.GetNumThreads(); + + // Get windows output + omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for (Rpp32s batchCount = 0; batchCount < srcDescPtr->n; batchCount++) + { + Rpp32f *srcPtrTemp = srcPtr + batchCount * srcDescPtr->strides.nStride; + Rpp32f *dstPtrTemp = dstPtr + batchCount * dstDescPtr->strides.nStride; + Rpp32s bufferLength = srcLengthTensor[batchCount]; + Rpp32s numWindows = get_num_windows(bufferLength, windowLength, windowStep, centerWindows); + Rpp32f windowOutput[numWindows * nfft]; + std::fill_n(windowOutput, numWindows * nfft, 0); + for (Rpp32s w = 0; w < numWindows; w++) + { + Rpp32s windowStart = w * windowStep - windowCenterOffset; + Rpp32f *windowOutputTemp = windowOutput + (w * nfft); + // Pad when either windowStart less than zero or length greater than input srclength + if (windowStart < 0 || (windowStart + windowLength) > bufferLength) + { + for (Rpp32s t = 0; t < windowLength; t++) + { + Rpp32s inIdx = windowStart + t; + if (reflectPadding) + { + inIdx = get_idx_reflect(inIdx, 0, bufferLength); + *windowOutputTemp++ = windowFn[t] * srcPtrTemp[inIdx]; + } + else + { + if (inIdx >= 0 && inIdx < bufferLength) + *windowOutputTemp++ = windowFn[t] * srcPtrTemp[inIdx]; + else + *windowOutputTemp++ = 0; + } + } + } + else + { + Rpp32f *srcPtrWindowTemp = srcPtrTemp + windowStart; + Rpp32f *windowFnTemp = windowFn; + Rpp32s t = 0; + for (; t < alignedWindowLength; t += 8) + { + __m256 pSrc, pWindowFn; + pSrc = _mm256_loadu_ps(srcPtrWindowTemp); + pWindowFn = _mm256_loadu_ps(windowFnTemp); + pSrc = _mm256_mul_ps(pSrc, pWindowFn); + _mm256_storeu_ps(windowOutputTemp, pSrc); + srcPtrWindowTemp += 8; + windowFnTemp += 8; + windowOutputTemp += 8; + } + for (; t < windowLength; t++) + *windowOutputTemp++ = (*windowFnTemp++) * (*srcPtrWindowTemp++); + } + } + + // Generate FFT output + ffts_plan_t *p; + if(useRealImpl) + p = ffts_init_1d_real(nfft, FFTS_FORWARD); + else + p = ffts_init_1d(nfft, FFTS_FORWARD); + + if (!p) + { + printf("FFT Plan is unsupported. Exiting the code\n"); + exit(0); + } + + // Set temporary buffers to 0 + Rpp32f FFTS_ALIGN(32) *fftInBuf = static_cast(_mm_malloc(fftInSize * sizeof(Rpp32f), 32)); // ffts requires 32-byte aligned memory + Rpp32f FFTS_ALIGN(32) *fftOutBuf = static_cast(_mm_malloc(fftOutSize * sizeof(Rpp32f), 32)); // ffts requires 32-byte aligned memory + + for (Rpp32s w = 0; w < numWindows; w++) + { + Rpp32f *dstPtrBinTemp = dstPtrTemp + (w * hStride); + Rpp32f *windowOutputTemp = windowOutput + (w * nfft); + for(int k = 0; k < fftInSize; k++) + fftInBuf[k] = 0.0f; + + for(int k = 0; k < fftOutSize; k++) + fftOutBuf[k] = 0.0f; + + Rpp32s inWindowStart = windowLength < nfft ? (nfft - windowLength) / 2 : 0; + // Copy the window input to fftInBuf + if (useRealImpl) + { + for (int i = 0; i < windowLength; i++) + fftInBuf[inWindowStart + i] = windowOutputTemp[i]; + } + else + { + for (int i = 0; i < windowLength; i++) + { + Rpp32s off = 2 * (inWindowStart + i); + fftInBuf[off] = windowOutputTemp[i]; + fftInBuf[off + 1] = 0.0f; + } + } + + ffts_execute(p, fftInBuf, fftOutBuf); + auto *complexFft = reinterpret_cast *>(fftOutBuf); + Rpp32s outIdx = w; + if (vertical) + { + if (power == 1) + { + for (int i = 0; i < numBins; i++, outIdx += hStride) + dstPtrTemp[outIdx] = std::abs(complexFft[i]); + } + else + { + for (int i = 0; i < numBins; i++, outIdx += hStride) + dstPtrTemp[outIdx] = std::norm(complexFft[i]); + } + } + else + { + if (power == 1) + { + for (int i = 0; i < numBins; i++) + *dstPtrBinTemp++ = std::abs(complexFft[i]); + } + else + { + for (int i = 0; i < numBins; i++) + *dstPtrBinTemp++ = std::norm(complexFft[i]); + } + } + } + ffts_free(p); + _mm_free(fftInBuf); + _mm_free(fftOutBuf); + } + if(windowFn) + free(windowFn); + return RPP_SUCCESS; +} \ No newline at end of file diff --git a/src/modules/rppt_tensor_audio_augmentations.cpp b/src/modules/rppt_tensor_audio_augmentations.cpp index e2c9b18f7..b629d1590 100644 --- a/src/modules/rppt_tensor_audio_augmentations.cpp +++ b/src/modules/rppt_tensor_audio_augmentations.cpp @@ -155,6 +155,48 @@ RppStatus rppt_down_mixing_host(RppPtr_t srcPtr, } } +/******************** spectrogram ********************/ + +RppStatus rppt_spectrogram_host(RppPtr_t srcPtr, + RpptDescPtr srcDescPtr, + RppPtr_t dstPtr, + RpptDescPtr dstDescPtr, + Rpp32s *srcLengthTensor, + bool centerWindows, + bool reflectPadding, + Rpp32f *windowFunction, + Rpp32s nfft, + Rpp32s power, + Rpp32s windowLength, + Rpp32s windowStep, + RpptSpectrogramLayout layout, + rppHandle_t rppHandle) +{ + if ((srcDescPtr->dataType == RpptDataType::F32) && (dstDescPtr->dataType == RpptDataType::F32)) + { + spectrogram_host_tensor(static_cast(srcPtr), + srcDescPtr, + static_cast(dstPtr), + dstDescPtr, + srcLengthTensor, + centerWindows, + reflectPadding, + windowFunction, + nfft, + power, + windowLength, + windowStep, + layout, + rpp::deref(rppHandle)); + + return RPP_SUCCESS; + } + else + { + return RPP_ERROR_NOT_IMPLEMENTED; + } +} + /******************** resample ********************/ RppStatus rppt_resample_host(RppPtr_t srcPtr, diff --git a/utilities/test_suite/HIP/Tensor_hip.cpp b/utilities/test_suite/HIP/Tensor_hip.cpp index 23c3f19fe..f6c9276ef 100644 --- a/utilities/test_suite/HIP/Tensor_hip.cpp +++ b/utilities/test_suite/HIP/Tensor_hip.cpp @@ -329,8 +329,10 @@ int main(int argc, char **argv) if (reductionTypeCase) { int bitDepthByteSize = 0; - if ((dstDescPtr->dataType == RpptDataType::U8) || (dstDescPtr->dataType == RpptDataType::I8)) + if (dstDescPtr->dataType == RpptDataType::U8) bitDepthByteSize = (testCase == 87) ? sizeof(Rpp64u) : sizeof(Rpp8u); + else if (dstDescPtr->dataType == RpptDataType::I8) + bitDepthByteSize = (testCase == 87) ? sizeof(Rpp64s) : sizeof(Rpp8s); else if ((dstDescPtr->dataType == RpptDataType::F16) || (dstDescPtr->dataType == RpptDataType::F32)) bitDepthByteSize = sizeof(Rpp32f); // using 32f outputs for 16f and 32f CHECK_RETURN_STATUS(hipHostMalloc(&reductionFuncResultArr, reductionFuncResultArrLength * bitDepthByteSize)); diff --git a/utilities/test_suite/HOST/Tensor_host.cpp b/utilities/test_suite/HOST/Tensor_host.cpp index 2a4558401..19aa5452f 100644 --- a/utilities/test_suite/HOST/Tensor_host.cpp +++ b/utilities/test_suite/HOST/Tensor_host.cpp @@ -322,11 +322,16 @@ int main(int argc, char **argv) if (reductionTypeCase) { int bitDepthByteSize = 0; - if ((dstDescPtr->dataType == RpptDataType::U8) || (dstDescPtr->dataType == RpptDataType::I8)) + if (dstDescPtr->dataType == RpptDataType::U8) { bitDepthByteSize = (testCase == 87) ? sizeof(Rpp64u) : sizeof(Rpp8u); reductionFuncResultArr = static_cast(calloc(reductionFuncResultArrLength, bitDepthByteSize)); } + else if (dstDescPtr->dataType == RpptDataType::I8) + { + bitDepthByteSize = (testCase == 87) ? sizeof(Rpp64s) : sizeof(Rpp8s); + reductionFuncResultArr = static_cast(calloc(reductionFuncResultArrLength, bitDepthByteSize)); + } else if ((dstDescPtr->dataType == RpptDataType::F16) || (dstDescPtr->dataType == RpptDataType::F32)) { bitDepthByteSize = sizeof(Rpp32f); // using 32f outputs for 16f and 32f diff --git a/utilities/test_suite/HOST/Tensor_host_audio.cpp b/utilities/test_suite/HOST/Tensor_host_audio.cpp index df3fb8dbd..35ce3a752 100644 --- a/utilities/test_suite/HOST/Tensor_host_audio.cpp +++ b/utilities/test_suite/HOST/Tensor_host_audio.cpp @@ -215,6 +215,56 @@ int main(int argc, char **argv) break; } + case 4: + { + testCaseName = "spectrogram"; + bool centerWindows = true; + bool reflectPadding = true; + Rpp32f *windowFn = NULL; + Rpp32s power = 2; + Rpp32s windowLength = 320; + Rpp32s windowStep = 160; + Rpp32s nfft = 512; + RpptSpectrogramLayout layout = RpptSpectrogramLayout::FT; + + int windowOffset = 0; + if(!centerWindows) + windowOffset = windowLength; + + maxDstWidth = 0; + maxDstHeight = 0; + if(layout == RpptSpectrogramLayout::FT) + { + for(int i = 0; i < noOfAudioFiles; i++) + { + dstDims[i].height = nfft / 2 + 1; + dstDims[i].width = ((srcLengthTensor[i] - windowOffset) / windowStep) + 1; + maxDstHeight = std::max(maxDstHeight, (int)dstDims[i].height); + maxDstWidth = std::max(maxDstWidth, (int)dstDims[i].width); + } + } + else + { + for(int i = 0; i < noOfAudioFiles; i++) + { + dstDims[i].height = ((srcLengthTensor[i] - windowOffset) / windowStep) + 1; + dstDims[i].width = nfft / 2 + 1; + maxDstHeight = std::max(maxDstHeight, (int)dstDims[i].height); + maxDstWidth = std::max(maxDstWidth, (int)dstDims[i].width); + } + } + + set_audio_descriptor_dims_and_strides_nostriding(dstDescPtr, batchSize, maxDstHeight, maxDstWidth, maxDstChannels, offsetInBytes); + + // Set buffer sizes for src/dst + unsigned long long spectrogramBufferSize = (unsigned long long)dstDescPtr->h * (unsigned long long)dstDescPtr->w * (unsigned long long)dstDescPtr->c * (unsigned long long)dstDescPtr->n; + outputf32 = (Rpp32f *)realloc(outputf32, spectrogramBufferSize * sizeof(Rpp32f)); + + startWallTime = omp_get_wtime(); + rppt_spectrogram_host(inputf32, srcDescPtr, outputf32, dstDescPtr, srcLengthTensor, centerWindows, reflectPadding, windowFn, nfft, power, windowLength, windowStep, layout, handle); + + break; + } case 6: { testCaseName = "resample"; diff --git a/utilities/test_suite/HOST/runAudioTests.py b/utilities/test_suite/HOST/runAudioTests.py index ab824766c..dec6ffa9c 100644 --- a/utilities/test_suite/HOST/runAudioTests.py +++ b/utilities/test_suite/HOST/runAudioTests.py @@ -38,7 +38,6 @@ caseMin = 0 caseMax = 6 - # Get a list of log files based on a flag for preserving output def get_log_file_list(): return [ @@ -179,7 +178,7 @@ def rpp_test_suite_parser_and_validator(): subprocess.run(["make", "-j16"], cwd=".") # nosec # List of cases supported -supportedCaseList = ['0', '1', '2', '3', '6'] +supportedCaseList = ['0', '1', '2', '3', '4', '6'] if testType == 0: if batchSize != 3: diff --git a/utilities/test_suite/README.md b/utilities/test_suite/README.md index 067bedb1d..41ee5109c 100644 --- a/utilities/test_suite/README.md +++ b/utilities/test_suite/README.md @@ -127,6 +127,10 @@ python runTests.py --case_start 0 --case_end 89 --test_type 0 --qa_mode 1 --batc ``` python python runTests.py --case_list 21 36 63 --test_type 1 --qa_mode 1 --batch_size 8 --num_runs 100 ``` +- QA mode (Performance tests) - Tolerance based PASS/FAIL tests for RPP HIP/HOST functionalities checking achieved improvement in performance percentage over BatchPD versions after comparison to a threshold percentage of improvement +``` python +python runTests.py --case_list 21 36 63 --test_type 1 --qa_mode 1 --batch_size 8 --num_runs 100 +``` - Unit test mode - Unit tests allowing users to pass a path to a folder containing images, to execute the desired functionality and variant once, report RPP execution wall time, save and view output images Note: For testcase 82(RICAP) Please use images of same resolution and Batchsize > 1 RICAP dataset path: rpp/utilities/test_suite/TEST_IMAGES/three_images_150x150_src1 diff --git a/utilities/test_suite/REFERENCE_OUTPUTS_AUDIO/spectrogram/spectrogram.bin b/utilities/test_suite/REFERENCE_OUTPUTS_AUDIO/spectrogram/spectrogram.bin new file mode 100644 index 0000000000000000000000000000000000000000..bf471cb09a10be393ab76a5b85fed817ffcd11a9 GIT binary patch literal 693900 zcmWKXcU+HM7{=R68X8(Eky1t)zvt}pl#rH$5JEOtDI=uPR-!E_LM5U}3!xX0Y#C8P zl9gTN+h5P;{QG>)eV^;TuJ28Um!k_?^Mvxy4sgyc4ljAq1|~^|fb#pxgtQfx!O<2^ zWS+4Nee?DKod-svZTF^uDT4^`z085-wpB=oc@L#0)C0%1cW_>u0{G;<61_x=B}PX- z2nT=1Vro;29=YB^b2L2gxfDi6?43tmM*86h<5pO*Viz&SN;KxI6|O#*29@iig;x1z zaKyiB@Xi+zA3d0WHCPO})c%!pWb0D9ffupmq_K8SjdSTH0&jg*l1yoC!Rdb|k+1%9puw+VaK*L(X$*dZ=ZsEA#xoy6%Q64qZ{``u z!NLaHkBx(JBV_EPJ7xpJh&OQG%1TrmYzXH|*$O}W!*92dAa*l;@AIMwlacX;KZ@;P*JzQ39vL{zoFlE+qZ~S2F3ab7)`O zDx4gjhZ7v;LAUYOvERQw^fKcNd?3F>g5-|F(7Y*F0_Ve{r<=gY>>#{TX9Zq(&jD^d zigD#5b#Qa^5WMNfIvn$d;ow*0Xxh&p@VD|hX>1%w{-({xGp3r6k9Mz6Nb^rJxXhE) zPW{cmcWr)(+VJ*&g#J5!oVv>y6H#w6RsVPl3tkae-Qgn6RgK3n(&0$@tB7-J9-$4* z*U&ep4C3sJ$)?X5q(|=*HeYLmkIbJ6y+N?BOJx<=>S~7$T)sxYupfBr6MM9HNj6%f zD#3An3(4&j(bT_p7yG^A7^|_SVe^F6*``sA)_j?D-YP^rW<+#HR zuTAK`J~iamIUdelPtf0=t!T!XAL!)kO-Nhk40M&>3O7BJMg7Q27Qv6iZbhF0@E|kV9iSz;a9LOZa&!u z6{CwJ%Wn-4WQ=FxAP-Hr<@9{8E7=K-_A3N;#C+I;{gJx4GP-E0ix$nx6#VPfVK4LF zFyYA-RJ5`cemt24Us%VY6Vj>ZoLLNf{ALacq&{ffw=3{bz-##7NFs{7=Z>_$3`FH} zM(AhP0JPDk1MM{#imFEHpnq>8@%~qXk+^gip09Ti$SO z>6#O7y=Xl0@?o57Fb4H%973O5+|dWyE6DWsPW0vDS+ra(2JX_YL62Q+ z;7tWjm~Hk#u(>e>h2_qNZ|(m>+B3$WQdw7|5&^Kx)_r*N!UAkFavL#TZbR~m(h&-t zO3OcPrV(olm`}+?EV12ymd!hlH|TzXiLz^OpyOq@-G(bf2s0p|>rbM| z@3hGtvoUDg-NR(*4@IW*c_mx3x`wAKNb{>j4m4;zpcNB_lMU`V^ci}OvP(U%#o-+| z>7xUla_0(~<8Fbc&)SMld`U)sDu04cWot;+O>L5z@fN3f%VC{{ a4~M>UBa&!a ztmu(Ro_(soSxJ_7{_3yDC`%XbZ~lU}n5M9_vjdoC!y{J3!szig226V7Bh>Y{7}tDw zitCMo2q;*DrVIA?)sqP@J8%=~*^q&%<>cT;=N~9^?0)nwwi+2}JwQV3GSnRK96kG+w>r0=G=pte;TCyWK?6|zPpPfF3r{3UQ`NjhrDv4aOaW$=}hmFO^N z0@@8v;pa6EQCYJe+&T9H^z}1Ar5)-hqI4>30#D$(3jkK8Pefn;Cd8qo^7i6C^4#7Wt@UGWkbh$POC1?&sroYV4dZlzU)+!cFYYjtP zsXI{7*<_SbyA?@G17x=4DB_mN_{QH2NX@nuWqg=~M|{YF$K}lM`3on69^)xQY5QmR zu*(_GYFviO8eZUut~W586NKhkPecbctjF=2wD9_+MMxK?qrDRd8FW*gME=`LH>6#l zbs=xih@CBTs%IVTn-+<8je3M?tp?!h`CpJz?g_kX&Jdg&wgT3pi`X+ffI?l0SDiojPEW`L8=;cXjS@qSYP}ZHIfD-m0W`geD|Q1konl?cp|cP zJ4G_x9LVAmt6|IHL-f_j0_rdCMZZLU$4WifXywR-xR`lD^%oiFk>UmP`C>GV*>M=v zKR6EyhZvCWd&}XxZ8LC(zY6-@QipoH3{keODOR-_g3v;ahn}&(%Xtx8Sk{O(uQ-j| ze-#o*a2?kEP=!LHHsL`wfej=~|nvWR#dAm;Y_v7%cKjvO107t6-N zlN*2GqEFg*?)d_QOQpzp8Edrl`A%H5>IZU}$&m6CDWaTg#BE0;l9#Jxc+N9N>JsxG z{qw02?LA(MPYfSKw%z_f(jSjTM&9#r_BUg+AgU0RZx;$B{xJT$KKiTn4jR5XjPC9} zgNzCX;Hxhhkz`XMN;2GqQv0SLJUOl*wU#OZcoGE<~{i2_&emm z1vBR2#!1$&fkg3w5-rr$qdSY_sQ%aMB(14{)JlGkiIaBHS(ERRO=lL9!0W~YL`LIU zty%c??rQuY+7Zj%_ePgP-axE=9`*8KQvTVFDD1UGe!VMj)n#eCr&br|mCwLy+oEBU z&3J6}xCNPAZzCznC(yt*E;#>2Idy%JND6>GHBJm9k#74*j&cGyGqRXW|966Xug8Qc z{D+m}+i+auMr^z+i;S7NA8whdhnpuPK`G^1uztHDnzm{^x|dlCW9K!X8Z;3_$Vs8j zlvnUXcMEzZ>q(@{U!WT&T+sLUBosE+1zCOxN8_|JvEi}mS^Q7>?6~{1sb_WMqAH&yIFCeQ2cM#>$LG-S%AMq{MChFyG z*#5u`6-Ki$?dM%UM%2YDWZ?%bSHa96k>oIO!qtGim5`ody0ujrfsU?}_vF zTddXOIVQ{9=yA=x=)hJD@;)yQuhRZPd{!1fm(S->ipeW5cGhmBA$B2!Mi-*U zS9TD{%Yj9OZ{dkfjFxRMNAuiFFx`KNP8Is~h3ZH&L7@UI74l%mh^y#yWdt@m`5unz zE5>;-qtSSc**J9VPE;4N4{dXsBq*e>M(fTAc==}yEXM+{JrRhP-dMbWP2I-t8Q@^{qos74?wq=Sn#6vKmTm z7>iWS4n#+1X2IVo%aM*|1UUF`C;Z|h50$P2K!d2$(Dc_0xG-QS2&qtp6N^pYch|u% zakncp>#&8-*2zmQdo;o!R!VSn#V|OmH3@d;N(0*++kirB1e{~`4n!p+N)|Q$feDjO z!L?q}ATL`FF8)0Wo*gq6uIcm##vVoRS@0=f2;Ts-&;y*x2?EV|A@I<*fpFB%NO<^^ z42t+r1C88d(TQXCL10P&-QzcomRs7R7g9f|_m_0K@758x!DLy%SrN$Lb4&)h*@3RNDn8RWJkuAv&YqS%=K~= zdwA?LOV&TmG6%-8z7k*d{e>mF{~(9nTDOvRm%T^w$;H?mD1p?G1V|r!1KzhO!fuNb zg6SteIGDu%8<%8Q`d}=$VSk|Y$9%Y;H3m((ngHd0oI@_^8}RJ)vNXl| zA4{#UAoDa{A}9;UXr#&BokY6@Qg(&c<0>rU?w{OJeU%!*1ZYir`;32N6rF6%>uy@heJ>* zN)ak6TLPCCI`GA|-M~-i5)8aUz{4q*;I_YZpa2yCcb)*uWvyWJk|W@slL9;t?FjuZ zm%&v-^?^r~3tYKlicqzy63+X20X*}o1ucJLg=gd9Kz+qe!Mm z;P_c{xWsrj$n&U$3I7=&ABExYZTcPf^!!=+`NAR6@JtE4G`K@;bYc9XA!dzUql9&9%hv zXR6|;6Vl>`%jx{4(Q2M(?8m*ly?Lv&$Tdssc$Ma8E_KU{Cs_^T(u=y-j`2H~iSrfq z%`KO;hOK1};2ahiyO`}r%VVEIud~C;75Ln~p*%+EGt1jiPc^r@(=>%l_I;Zo4_vy3 z_emx4+?&}v_i8pz+?TdW6Feq&csT>)OSO1pB?u+K3|D66w zZuOeu@h?803*TJG@J>UvYn*^RCwxa0M=Ve@H6@dJeVA>~0CBFDifHRTNK9I0DCWE| z7mv*vCiYx15hJDy5leRIiuD~2c+Iv7zWq-Me;d1v=Xvko;ASLO{4s@>Xee@Qna|b~ zd9dTn(oDDEIK7p(gl>H5PJe$i;8*R9$%@@$SZF{o?#sPHUVcy@sS7sY_VgaKUVI7_ zzMsV@zoPIkZy&t-%yOJ+>y8U=8Q{jyEvSTbp%Kg59Bz;Ig+b{lARuS2VCzr^jRya~ z&JM=Jsl|zGvr(XFL+j}11Ey^0;xN`W<`UDIF3n3uj^stFrt!L$tN0CdS{RmY~SCTPU(AJ1$aZ9!w9ve@Vt4l_!}-8(_-CKH!(;0{;4r zh9MEI!luDnLBh3x;I4-)kpH>{Tz4n{-OKL@BbyaK{?O&%#`3E|%2sI@r>g`*X4?rB zN=v|;VPWuG{%JvN=_nW#6$gF7KfrDGe8AS@2Oy4lfytk-|495y-X_ZFnb^-bNLhtaqFiIVyZ{9ILuc@^beWF=1=ROE03OG!iXo_{fMQQ zw|Jgtt+PV3TRlN^@^%oTevcIAZ88*BxT}gcZ1?dI4`aCVtZ=Taxsx9>3ghK#ck-G= zd-+;iz)^lB_mjHFf2%#<0lPKDxy|z8?&eNjH~AVbI#RIAM?-dVv zx`apC-J#y^=FzP$&a#2x4jyfGh&O1Y@q>$sc=OOw9_~=gYeyd9*Pf*C^JW`(^M8TpyC%G!zUTbSPvmvX5GZ?h4;y>&O_vNdI&4|{fGpO+JOD8D4>?wa4Z!p z@BwjG#rOdwqL*o|xb*HG@!o?daboZ)@vN0b#k`7o1QFPe(nzc#~-5_OvTwu@{zdyM#5zro^edAzu=8RkSSfLhC}iD{BDO+tz2 zjFJ~&T1=`G6XW|>l0Yr$Jxwd;!-ws)dpsjWXYVLUZtDf zjHPoAj3Wb0=b(o+W1xD=NO?wmDCqE@6sT>&>7naI9rKjL-0E5vKv=SBHd-^IzvH^rmV!o`1s znmIUSNWsL3wBF8)Jv+06U-f;$AAarSn}t`r>D&qaOlcSI*bv2kDQ@FehtJ{zluonU zoNm@Dcb_fBk6ChAH`_B&m9N@3j_X!z;Gy3R_P?byHUj?;6t=IK?YzayAQOW8BeP2JRe@mu2JwUKy!QiaP6rGTu;eaX6ew%}R# zIN{fG3*ab)h0L~eiM;xGL2kt~m~PK7Pt7xV7Wn2?*4p=x;BHh;sT(9b>cx!Q%==x`qnAy$5=_?0|s-xfY5n*Tfp+yyZ z@upZ_RB6E{FZ1DXCe!(>zms|2ut@GBdzIhPQxqT1HWZaSEX6u!YtdkvgP0AbiGLN= ziLH6-MYXnv{7-xix-;hzJ>jK}|9N|noE9U}mU9@JUM<6Y3-&SJqbs>K^X0dR9uI%@ zl7-)_W&t}+umcXwEHqWZ#>{fWSBBjHy?0gvuq#7&<=U^i7Y;|+lU?}>(O7IfVK0t} zcM&b^-Nh?mE@Fi@7E6bW6dxVc5;aE3i$Bpz9$|fwmwrs+yWC^AH(1IQtPyXH(dX&w zpRl#Bi`lq+kxbI*%$lo3);rUP$sPYpWz}!cbsop5=aK-r2l!L_6Z2?|Z4`ZsifGN6 zKeWk6n}vD|Vf&2k(hXh#bo?O)g-!{uc3CeJTsH#ICm#sMu0%^F+Nl7u z!e+2!;%wk}tY2f>c!2rJJUyclQ< zJST?0AJ1OHunn&Siw*anrA-iUjlL{g99jWv3PT)>FS>%2X%~TSpa-SDxWv9H*I{!@o={-E0))=j0K!Z~@NeZ6_;%)4pp+;J z6QZ{wyYMn}*YW?_f*za=>XOxqFypZVg~6VNa+< z@ilrgt(i&KL?azcq+dbXa~ZM@7L^lQ?M z_!%!#RuaEwj}V=94HJJ=D2ewo?(wZ%ncVl@68>~E<32<5xo>0+Teo5e&hmVT=Je-r zrHKdV=AW+Q^4t{CQ7zEsUxR5u<}%vy+lIEQo6))(GW5l&$z<7USvq7~4E2gzMPB*( z5}hk%;PD|hVcW0^k`V`eBv~Zfz>^Ln7`6SD92-##yLy{g#uY)lbl63l z8Zt@TGTca1`~87$+GQpN&CV5Xh5>QLm`0k5PGhV3hd|4612RsJ;QyKhab-p^KM}Hq zPrWM3x120sucwEw>}UrzHhdU+u;)H4TYZd-jcKI$JEhpleYdFpQ+@U!@i<%jVifm1 z9nGbCPxJ1{ZM;HFLo`rx7Xw#EiFnjr(R*YqKVmnK*k7`w$;PEnr*USEk zO=jJ9H!{=l3z=TI1#`H6o$gwcOr5DY<$;AHFFu9ThhHK_OFHolYbUa1`D9}ClH+eT zL-3~+UD(+5C3^dg;Ctix^O^HLqeP{6a{uVGZ;HR+sS{vw{e;lg3g@R$saX8`9B*~PlND%1J3I;YV zbI4CVBrG%w2c41?&;XZ%?3p@(jp{IP&1^1sF;Gs(?3)UfzWyfIyjPXX7-=ZEAAUx7 zl_Ui^RpsD}s0Toz8wdBe{1wVy9hH;}wk3}=lW^wl75GokaoiL69$%QMLz)au;>K)K zy7~AW{_~DJn^m%c=6{J`0c*4zhpka|beVco-0d=2ECl+z-Z-1ujXF<8ze&MMzgZK% zix`tl@xxhSvumsO?0DFJ#)=0XZnLx_#lZISD5{l#a=(cI@XM2MW;%s zI4hp6+G|kOH5Du+7QHPE3lUMyss7E=wL zOLL7I$&TSFBxgqzzFwe7=K1PUi}L$4!e9GQ*4O>v%hYFnll zzTQdv9e16nrrP3_D@O==17v{Nm?5BQ^E~uGQI^E6h2qIImg4r(6I{`DIluR3Glvmt!v2FNnON9vX%y~ zO{FT2cG32*Sek1SN%#7GBQFOJr)wkMkweRhNWq-Ae(fcaD%(k<%rp*HHl$$Z%s^Zr zZbw>w87!H!2CjvV1cisgp+8#;uPvGk^Mj^IVw-{_Y6_!4>ahxmLUpqs^ZY*{A*xLn zw019;7#JxmxZEzxE*=Q&4Q>f7okzf(`6b}rv&rCaw7szDya9B1HwVfq=YjPZZ9>d) z5xRe=7IKnuLFMx_FgP?6MEw%s_#FU-u6x*h>mj4ptU-3w0fvKpJI~E^% z>fLFs5VDjHY}v#V)V$WOI6`@9`$#7VeVg`w1Ie{txV?Q~j57Fjp>EV{GoF-Sm{sD0JFelJv$ zn`m0_oB@VhX__Y2b(Q6lww+@)eja6;?e{Z@jsyFfbDSu3yuiyp9L6RiMuX?^h7yzJ znSudml-&JK0VL0u3Ywx`3!^7^Ns449Nt&+o!EG=8u!1-p(Q96ocol0qZa3KB__Vsf zagRftusTvT6a^=3K{nEMKB9{_?4B6 zna(2;GkLXR50V?5U|t(DOKa;r>9rUD`!# zh#Vv8TX9iYe~S2T{6g_>#!Rub^ey-L;?Mr{YT(;a(he2H5yFd0Cj_6h;YeZAOSEjW zk!X4QBMVyfonF{xOY;_HleztKO56M4B!d~^qWkBO{el^|reHYG-$D+e)SvsT*ur;>I}iKR=f zJ5hFnQpvw&(zs6>LCC&YQzeXoqe!~>SwylGb(dSTmz*Hf`=qN0kmM#g)>XIx7 z>JyxHopfkDcUoxDZ<36w)D)s)MKJ1ljKtn+3cw39fMLiG!LdmLuD@vnRyTyf-q8=i zW9OT&;%PUmwx0y|j%=6wvzCQaYZMGRz`&ljr@-{)I&i1tHayej4bH8XhC8+x0Pg$` zE_H|imv$WjZt`Y8`=Jw1Q=2HH+;}0mbutRnYP}X5W!DQETaF1eL1mIqO(QgDb0^%= z^$Tv-(?SJXZ19}9Ls?f$9^W%NnmdaHyyT*SIJ$qf5Dz>SH_n{shzvwWwc}^#*!OC5 zvF}l+j&mB52VkLeodzoChV@qA`Z%%EFQ6th?SF-#1j$0oD?|lqEYtTyugGnlkR1`AF`S9Tt^mq zyo%N}iWHic5YK82?4{p^pWlt*Pq(UwZ@;~2l5W``Q52}VBao&aOoO8(*SdicolAUES|lu zH=@eR&GDIK=J@uK(cq;~xqZtQIblTf49S}DErOcgB!D6w3xz5pC232Pg@nz;FgPin z8Pq4Svc_co;g+X(v`f~JCC+dRQ(xeCTK|jqIXQ<789kePX^KRyRwn4(E_3*&D}#3b zXU+QTR`MP6K2J*25GTH7;$sD0aqF`wVzsrsXmQL$+_$NS=e#TDQOd`-#{C%HvwaNT z*U&+oy|QV!S|~9+ri@ipB`B+=1)V?Af@BM1P~MhyboHq>)tNe)UcLX2OxRO~=jx3| z*V6~0*^wJ?Q7b}9Co!8}GKeoeaGGrvKC^FO2K-HzBad~R#8dyf#Jql|(t$7!`Q7;@ z`LOhYL}~VXN&Fu}6r--&uVYW~-cm*S$=eHs#kb&Fn;gk6?-0CY)gH3`!A82p#Ejil zEMLpR0&Ha3zEx+&k9D%ogFUtYB=odOcugdo|WV-X#`gX z+!Vk-U%~CTAK24hH!0uRpvl_t@LEkjXXERKa=S0X|4Jtbt2^u=bA1hE6+eT&r+Wk+ zUjedfVQ3KhE^M=U3_rU`fr|Ev(DKJJ==A0i=sC0)ELAWAzjSkjyEX1$#=S65v$#Oe zju`+hJX$Bj5AYGrMy^CR*Tf^6C^z(M(;DV-5f*wmdMbvua9%T0R!l(m~nJ@{TH%qr2=1H@RdpKy`jHe zc%y7>bK*EamaIQ;jV#hTOpR?z*pE3`Y~_Xve9QD9BGS+o8w_N`jaM_cvVSgH;$q69 z(gyLsTPl3gjF0TQ1Eg9)fVoUX>urBW=yvg4J&knu-b;d4ae!8xFM3gH}9<;W9ehlD)-Pdx{ zW*6?8kGaz^JuZ`cg-yJx!v<>>)1|K>u|c64UXyjjA=uSlvh?&#Nkx*HplfXbKKz{q zKJY$aeEAJYhm%BDCp{Sc-86zts8%C;)(xTqRH7IW_H%Xf;bOLiv8dIM#AnYR%zDJ1 z_`^v*)cbWG)D_-?5v8U$<^B@B#5`Q|-DgjDe@+9`g2>mlktG8emNbn@#P zApbk)Ft@s0&Ueo_$v^(i;mJ=Fd9dkI)+mW%;x8HIA3TDJ;XdTuV?8|O^Cnc{X-72l z22nSCfQOy3q2q2yld|{}l$W#w`3f#ziHtNhyufMS#T~?=bOWYSO7NktV+n3>ApYnG zk<>d8ojOQ9-%>@PdozUfEjp3|(-S25-NtBC@=#hfa|A#5MV(5{ea3#bR+1ZUa_KD^ z&62mO^WXz3xzEEBd~)|A{@~v|zH@6WFE2aH)%^Q?+PEaHF+7Mbah%GFKP&Tx>u<2q z39;;2$RbuV$cxEdQDp1WU(y~@N^?}U()zbU>E9-io;Ds$PpunAeM=CH*X|^DFQk## zgR{uDKb)9<`+?8*&rh1~I+3f~9tc*~f>T!~2noL0lBT=|f~C(niJR0}VTj)z~SxZ!K+_xl2c6uaKO7#2ul(`pKUAhAF~g2O;ALEvfqU1 zI~PKq@v`XW$en`BKWSt?OXdy$5nJYfcU8|MMFw4xa(RpfFS~_Ct{;Jv?bJ~Gr6wfT`hgbM z4HM65?-Wm7st`lRN;xk0FxK(2fv;o4ut|=Z4T_HIe2-Bp*(o^r-5WAT)`>?hze@<0 zWnU`NI1L#h-rHHkRI~T>dskCn$K$4c&ZQ84Og~9}J+`OcO#NBY++?=ZZV=yQWXD@# z^|^D!Yqpy#U=>EGSgsDUYwL%wTSJDi0TKG_-bT!hoSe)G$1Gykv?E#Z=oq#_I+NbW z2xn#uE=+yuaAy6{kjcl`vH^>?v*hO~>|5pqmazK?YkhCY?rhdV`&Lat%Qji!rycL; znvbC@yM6%km%(i5+cgaAjb`yGx@-X+$%5(tvtM$G${5@rPfA|Vn@@`Iwza#k&5tOd z*(jyIhpG$5XKoR`cSM4jmn7hnu09C(;UiQ!-j_J_9sv=56Dh-gNPJNaR@{G_G;79@ zhn1QXLRnhAUzQ+|TR8mg^~^Z?=c{a?NnD zUgrZp@;8-tHrn&RB2}((u9)WUXkmmX@QFDFyyS};f8PI=%wX2MDq}3)U7*D~EUMT= z*+neCN{+?5InmlVQWQT-BYQ3`BVXmV(2E(j@V&VX7*uqji1qqN$4>!;4qc09o%ALP zRCeL3H%-y-Lyr9+Kt1LkDgN0QjDNe0L^Vyr;5xiQxS;SxQh%db;u`LR5?4Q@g~!jb z$%>(L!cZTkdUhdC*RSVZg9nI72E)X_0*SaFV3gQ8)4kKPfj@+`7GIe@$glO_C-9x0z3iA|!ju?RIt zivA!na%wP{F>gF+UXhJU?naWvXf1N%Vhq;ab{};P(L#HauYmP^--HK0)r5I-&N@8s z{2_GTe=lj)IU|hHz9_N0SRz@Zyi%g{(p1LqMgD|cC#COv z>HfiaRPN(++M8`nZynlBR!`6(opdK@E__NV2Y2IW#Vq{M+LR>e8EkaU$7`W@xCZq?+gF8n?g0lH9?6+jJfYH{T z6i##|`&7(OMX)DctauP_>03*d_3x+Db$U}aMVBeNPD7LPRx9L>l%^5k&qsEzbRt==DgA$m3uQT0zw~4%n6KP&|EM50kk5#U& zWmlixWL(FbH{?y_KbCs(oCkLN+Dd88YSWm9tu=d?dk>DXYaxYa_t1{MMEv>Mdc5_E z1D-DUBg=mU=&^?t>G`}8jf$?rkv)U)+NgclV?M`{C~Mr2H51FM>_g9P6#)4?s|9CS zB6ti~AjvlLKtl_nSWWZ-ra(7y>OVs~BeO?r&dm^g{v?P`PA(L$6-&h7_RqPpc@|%? z5AYYN=}fa~Ci8lPSX+7#&0E$&0t2jQdeSMpX8s=X`}Z)qbLI%D`9hQKkQ+){_ns%J z1vf~_;z|$`AxwVmL0ey311Q(e%TttC`ZWg$FitmLk6QSjUx2G+is z4~otm05`OCVcCXYShn>K?2XBW)(XWf@UKcigm&WeGc%FBYdDHL?3#S5V`j|r)Zhl8rS zL6XE#O+wR@a^R%@2d3IR7j{Q&flI4Jc#K;RF}{`Fbo@mRuJ3o4Xe7&%3uC92k748g zsZ;L{2iZxTv$QdM8X~-tFmj47uN@<<`aa2Vl}?gl@~rV~zXqa^Qowp#RsRxKv{VwCkH5)_?p_jd<|9ch-i57W(s7S|0y;gg z3l92t9J;<80Oi^(amkcfWYAkXnnYdMEww_HwY8L;GAU(mPN%Y&F9O)o6GNGj*(KV1 z>L?9_gzg>E??uQSMU}%V;jo=AKycMTs_?RqUA`T~;O4XJ_m>{_^J_ip)p)?d15UF! zR?)2WWior#(|^C;t)gAOBJkdANAQa6e7k(i_!D`)1 zaQnNn;Pk=@#tcuQAHqh^?e4~i$ys90;&WKK;vMp}tAQtB{p*RJE$l(ANI1% zXzBNEA*7{+23~r^^A|etgL~50?w#Z5@1RU_9^asU+6kX7J%<-Pe8~U0%wsiD1?2YE z?fBZW5vb3?6F2YIpt;$5Xtv#SHrVD4`?^`3U!G#i3$EMq$qSYF>5dep9P2?gZVM)* zCONdN$QVzXABBT_qOi`)X=p>jYgBVPkt)?X(97@c68z*ODeiuQKc<>u%foT_Mz;|O zU$UP}4HygGU7akbzSR}>cvdCci@vOXJCmh_C01cx;A?pZmI)fz=Uw9C-j@E+AxoW~wjRw4-k=poViyoz+ZOvCZMmQbatf1fI>8pMY> zf>DZcAYq)oaPJ`y%$PM;I4f0fmG+i+|5_-qKXF&c)5Jnq@H#<3`?BPpdAbm?>YU{F z8ZBY>TqVKyXQL4Is#nrbAUU0kw_x5cX@~*=bX7^~oKmVD>`% z>ez66x$!H?ZJB}ttCYyq7Ybz1(*IbbZ3C@az~R}ZKcq=g%U9_Rb8HGMbd;Jh&vAio zCGSZeLv@N6-DPNiw?Dl=n%4!=zeEa~zlp+EJ#S*ua5-90E`S*MWsn*hrrPxzk5cU*PrBi^(=kDnV7$Co$j@_V`CXlRo?o(L6*+nOf8?`ng9Sxoq4 zVhY+$tAoQkWx@5&)e`l*Q-aztEAX^#GAu|hqtBggGC#ReI(e`_p1OGw&;M5AnU8jo z-B6hY9ns+3vc+)!#SFMcqKBaKet6_b3-up=js=_@#vHYx>7`{8*`;;MIa>-v)AjYD z>zW$z!NvXJQm033Zl^43{G3TiUJto3y%#_3oQ20-XvKF@oJbA~pg$`+XqU-q7Ph8| z4ZLuM(Pr@>ehl2uJF13vfla9`amUjBa3Ge~-5tU8 z`9{7pEQYW77{dp61n~o53;4wEcDzSNiN8~5V`m!**vo&**|Hja=7As4{6E1|PklJ8 z`n!+(*!2}K2yx2GBweoKz)6D<4joBNP_uptinOtZ zBbqom(U1l9O?8I@jZ9$Y7gLlz@IRR5^aOs?N)X1M8U;PaZiG4GhoaMF70{<(9%SPs zLS11Iu=LS_Iw=vt`Ezds6nReQdA3lv5Ew2P4?HhfD_dcg7wQbuZ?1;>6)a&$;8w`) z>%p^c9>LaMndsf64TxPlg>=SYlqm5=UTs4$svd*xtlWUV%hU!h7G(Y%TRKa58E){^A+HpoiR{laaB-S5UNE~AAATE4 zzfWFAyZ`3V@csF8z@Hkb0FTpADnqII$`&%Q>ln#CbCzgD)sh9?hsfH4;iP(FKX0|# z7UQx6p{B?a{XTL4r@Xs{qwoB{#+em(#Wx1j>xY!iqAYM|{#am@EnIHDOk zFnzEpcGWz^lH1ipyMh<|+SV@|q#B6|2h2s8jYi_bx*=j#SRcn$XL)qoES^0^lN~8; zhXt`Oh<$Pmj4o6IGaS?f)mX>BS5J!f8_qCamoRqo?hIz%&ppSiFk)>9k4aY2 zG#WFh6NP9DBL?GL$;364B;{%XRsEGse>z+uwkhWHSV$O-)V)lf0x8mUF$v$ut3wlP zHlV!{jJ;c5(bz@GVsuuhDD8J#R2^0*8ol2lPJYqL+lI<=;yR5U7*Zw3&8ran#+N#D zMQ@WR`^`c2F>*ZM4AJ)|mL8g-d#fK-0U+l5Q-m2jJRsytxM3D)walqKjd zXY$F)Y}WZA8Z{wcyFbT+2 z8URjt?GctB2pan`1eL{~g^e>hB?nVZNp25Hkj${O2M4PkNG`PJ3X|KTgs($19A=w- zl|j7b2#; zw!3q*%7M*&DJWX!!C9@-;h6<)NVCZuy!&K;9`h9NGQtg*mqtQ3^(}Pl8IHEbVBB4s zjT$HIf%YpAlN<}9ttJqD(;7r2lYev7;SJ*B)KQ|%gDN&MXaIX2{)=2wDIixGhv1`% zJF)M*vH0_-4O?W8q#D)^@VXXOV5#h4me2O8yb-#fmvi{{vxvI zS`f(?v5DBFa>Lp2tNRp-OvM(VCQ9|DNFdyccPjk(6=DDBy{{4S9F;G5=g8!yb zIn^2X=p#GQHMJaxvqG?};k%dAyD85pZ)&I1;Wf#I9|^;o@4Bl(c|<^;uDjUA{oPa`>XS zAaID}e8_yslmEOWjb87>yvb&wRZk{cKHh_$yuqCxKgXRn`B}kFIjbr}yQ~uapwqm` zY%8X7D~bHJ>m@D|r;{i$8UNb!3{JNBO&!iIC-42Av0>su96V|~&2!TxLH(WN_U}Mi z)0<51>Q54+(B`Ndx?sB?KbwH#*3yaHADQj>+kqQr^f)`$WzI=oWU?At9G zZQds4Wv&&6zn?FPuZN4@bUTF5l10MWH4k|65GOv)Er9=MYswpai(=!>Ut{SRGa3J; zjv57+(~u)E)Go=7ewZ0cN5ye;tJYqkd_;zcOl|05%@H z3s#z%!8SM;Ts2aF_txCt?65aC=*%R0wcP*?>|Fx9R=?v$t{4oS-pc3X?#qEiJ8yFp zzwANZGc7bWqY8b?vqxF>9k6##Cfu~-6nZ))321kZNBb4la=l7JVB+>S@WLf;IOX}ZD7s_o4Q(j?Q6@Zn+8!x=KZ8@v&*N<>Dfq(~X^${R#GXUa z`M$bs%+0MI4KCGZPYs_7H9fqr9v^4*-EA~vRXLmJrNn+mSrEI5lUOH*BPUW)sJpWn zwL7*Vs_KCzya3X3RVPwD_BXT<4l}tLy6OEOF zXuIhuy8e1TJ^RFro_2J_YNK|tg16HA%ff0l;lO;R_j@4=+VYu=-*||R`)VXijExi4 z8#f8Xi!Fq)H&u{e5(j?j?!^;dDe%(jSa@2i%Wo5sSiHO&Kje`wpMR&8Jx_Gu|748k zugvOYPisc{^fANpUAR-+O&bo?EXHueMf`NPoO@$PlIpSJ<{{JYQkS@1df#v_J8*{IEzv!B=kWeO)zgG z?i)H;Y3KqnulYG?bvC56H(yeH(_9+21Kme*Ozf+S&s zPpnwbF-Y=tm9xaJ-bwOd#z4uYyUF5&UO~LR)kI9a_FdRFW|5GX%L!L7Jvj?)-N=#P;aWKN<~n>mcsEvmuR}h{e8+oI{qT)Bd(p*$ zE~M+Jftok?L(9Llpn0Ss7~7Y{mHWKmCfcDR7__6{}k-72?rlr_X3SO zrl8Iu2}Zu}0AaICfDQ=&fxT*+*l-^@78sD=UsZU;j9ZwlQzh<7AJO$?t5NZUZhZ8; z8_v8sg&cFdj^9=Mz>A_DlBGw(*yKA)1h^@H{WswkI_bBXer6HEvYHgyYCDL{KBvWU zKONu|-f7cIKBZ)>+evil0wUeU8PxNI79C{z0E=6W(JCD!`X*%^z2=ffyRJmD$8W<} z#ZgVZY1U!VbY~bc*F4D0LGEx`@@6RaY%<>IuS90_UL|XEYDm!BTliVk3zm8zM_8$t zBgpRX5gzGDgwBIYg}kZhLWa>X!E1A=P%)=S@VM8@Ck}aza#qNK(fS7D?Wv2bVZu{> zXnq2FnH|aBn=A4`=}%e9wF7jTo;z)`E+cQ>dNIqBtJ!|-8N5o(b@VTMC+i=sOWXa^ z;KSG2c1>P@D?FJ1=C#Lg8jlpY*-P>{i&dF0#Oe&}ekr}n;q%m1ZmLidZYw$^eiP69 z=PJoo4wtOW|0#MH8S;T24I!81gnHM<^ko+n!i&KpUylge7&6| z2t{sE=IjvfKC*}f%(f!W(nnDt^%*{GosChyjgs~J>hVXooMb7EuQ=pCtf}% z5nJOc1s#Jre#N6mmXy}Zl*{%|snUV&eq712rR-2hz9Me;F@X-|FncrNC()ZJVcRXf z^L0ki{FEFhhG|4=3L!O9#1JbxNg3HISvKZ`#8DwdQWQE?^4sg6DD(P|a8=bzcv60k zzdUy*-|t+_G&Y}MA%E2vuCeD|oeJXJhfUyXLWc5JQ!cagb5E#d=@z=fL!aJIN+)G6 zmXXZ6vFN+*7-Z0V967$jXw>8Husp#NO?TY~3v-r&yX$9hD$nG>?Tr&bz9r${`nOzv z{cgLI0h;jYo>;rsztz&AdL#%)a^&_ti3V&zCU6{|2^#F>z=K=60cR`$K0XJy>5W$K z+==DriB&xus<;FC_N$^B54WP`v#O|?%z($6A96?3txVa9AQQQ4N87Wf#A+jNCI znIK2vJYPt2$S+8ISS;S|`<$FiUrG*XjUXSFXp@B_lj)g*Q>Bb!FV%bK$Jg2J6K~bM zplP;8;Mkv)bRK=oe{!iKOT-Ks_+u^aI6zOxT$E1VKeMGv!eq&oE=K(G5vJO9xwlV4yulFxQm z;AM^F_!SCYn4(rD`l)HeK33$B>2I=Ot4R?@FHE)nG}i=_%`CF<7^}e@aoW!nt@nn$ zuoRjifBw>!FHHB%SY{KXF8pech~~9jV#{VlNytlCv3~M9cHmDGG(l<7Inowu%SgzeikQ0?hoN_2CQQaYig-#bPsJ9_k{Q1g7`^KV)@FMee`sjGyOQ>09o=g z7PapiM`jL{2o89v(A8lr_I)Z8U+lgv=KBixoq7^;;#&5#Un1#pPHY@d?i_?^;5z&iCXM-`DgO;MLTw_ zuZ8>2Vf$Bi)PZW*Wo~L%7m`g~!0HBP^Wg!D*?eUi;oJV>V$kI<$-WscCF5T`lemYb zO71A?No-b67H6a^5mwhuV`%7B7IteH)xGD;>S{K!_TBOP?V6dw=DEp&j#iRz;Q7>!o5EmxuqKFU;4EMUCOnnV(o}~;U%k|(J z*;8P7_AR?)mZ2DwSjh z8!&OzFe@Oh2$0EgwB>^ zTFH)}^OlE^&qPH$1m(iKA;X|&w;8-S>jtR5SIT`kZH(@mO=IPO#^V0hR$@$~uK0B4 zKjHSjBB5MXMOY}UDK$rqqlvZuXy1kX$irq9K0Zbc>3o=i`3?U3zoHYuT-zn0qffS| zJae&lB-2nF5`9r<%=QwlA9}zmJ<8-2RA=%Y3*6bshn>jnaV%XFq=NhFwm`D&0QeJ- z1orKzbi?Gp`OfnJgWeJlEqWlt!-%wz~}sdtmgU9n_?dN1?ua}Elr4d;X~ zozeX80W$0w@&Q4L_d%7577p^7LtZS;qy<&_f`_2aKb9|~C9jp3A)d^8n8^vgp7{cJ zRVCbGyfC_J7pq=u!#0@6uxW3j=(FAGB;br2e}1_!b~G{+^j41)AOFb_*QvCKi`{EQ zySZWF`7bR(xXWg0FkF*X{7j=Cy^m9yU4y9Z#jWJkx)OTm!wGUQ z1c|lChX)j|knc-la8mPl9AwmnCA$v8vz$2?GL8ps8-qY-a0_yF{X@kpz=uw~&cAa` z618fVOC%#2B~~{YC9)%fBv+^Ai9sRPgg+OC^XA6Y)LbEozu2oFnChP43!IRU9D824 zZ=)j)l^-qsSg#<;E7u5a%QgzdCBuc{mR#Q3O^N?X=Ci~8+4Q^K1iG}so5&d7K*RqW zNB_(QV!umX=-C=aoSA0IDeuw*S<*aG`jeO3q!;nP^4(Y%dOFeGMbHEOLpE@8#{B^w zX{dduvjD^P>p-VQHEvWuBUs+o2ks5n4Eq25;8yRFBDVCn{o)a4>{@4ig+spV1;b}1 zqC;9HDB|mGyn4(LG-a1FdO0@}Hq5h!Wt!=DZpr~T<5w#(dGrr~$HO6iKN9CZ+KR!@ zG^qD{3etUf8C-Aag*U>_z{EA$=;I&{Xg;nPK6X-v_hh3u*@ViwDo{(`VO1L*nLmc|~pLmv~Nos!omXuwOl=P=xr!^Ls1Q;%% zx20%UJUhq|{(R!&g!#hSWMh8&OHKMxy8#!?;HYBFe5~~C6e&!zr0uN_=+<`%Ox-Ji zSt+j-7J@cGf8H&@<4&}2Ci4z|wP!V5m(haump7t6#|&}O#~k!9GYlEDk4DXJKij)b zZv>*g2yR`@rY6nN!nfzY$(;%x^4fec)>83<_wW8f>vsB~opo6#Fk>-p+@t|h_OAwZcLpK1fEloE zhz_{1PaSq8H`}kDxSDf&X~N}vdjwMB0yx-d3qOpF1edlob0e%0z_`j~pzV(wIC5nO z*z)cu7{2s{{iVBVu)919>AG5i>X1ql91)AAfctofULKzF_ARPh=Lk9ne}q4z84%<8 zQq)~|05#S6VXv@*Ak3#7?YS6_*1S4^1|3dA-uKRfy!sn3SLrj1kPkqab(>(ZdmHq8 z*ayr~&)Tm})5Z!*kKlyKGIV(HC)!|jlr9HXX+u&sO&{JOSdK^)J3jV{TOO^E9DObC z@a2c2L*aXggSnHvo%PD*|#Q}AD-2{R1GeFupWte_R8+@B^ z3iK@O0Asv$(Cfc}$e=oxT#wTg-Yj1reCl1y`YxTK9{%^p@%t5Q_O>-lChG`)@__>z z=bi=?JN@BpxE8-VaTcfR{iXGr_A_g@6TAUGK?wKXBP1=)5ytIF6ZWPY5=s~B5afop z@b~w`QeOor?~p>6t*jTTzkH3^G~eg9yg4n%H@#$?DQfIqv^DE;I>CRQ5G}ZFYY_A& zc?d~8BiQ_<6X}YFBk18rjCuSWLbaD_l0z+#)MT90XZP|6U9!T4egB+6gFVlYtcTh7 zqt0Qx$5@rv`fWhBKbGTZF&*}{+yL-ae+HKkl?kku?MJcUSu|qq3+AV!E*dSpC_3n8 zh$VkVi!<#?`8w5|EGXNPg;xLKJC}VFs?J7=7L#6zT@9Z^Ps8it=dN0DL`b^Wz}&@o ziz9^2aVK~c$8zTObR~10^MH0L=uolsBw3`RNt6y1!CK=9n5HoFY{YO*|AZ2@ewYO< zK1HJa5(!pZY=I179bmwwI5c+QJ$O2yk)vsK;6TeD`{&cF>@}*B?E6*k0jH5?xYye% zfi&f58~D2vOph=F#|CABSyKlAUV6u$cz!6H6!@HLT;&Yk=siH!<9~q9v42pcQx&?` zatOPjUIg}zQ{|FEb|Rmtjde2do z1=v#h*-Kj-XCckx*2PN9te#4C$lE(e5etXRjn5^|W+#Ya&fFny#sor>&KUMx)08jd zp7S=5BJUiPLP`BNHh7O49eu_Y$9&JBZlhD^i3|C(>a9HX3<_ZT-rZ&KH%>DL^FM6% z+@JKW=ugXPe$fWMEE4?wCHXRb1jzrJ59Et0;na_lpn=On_@Y1w?f7bio>-_Lxst0e z>~#sfc=H_%Q8>!(O5Hwu<~!OCP3Wr&huOK!r-e#|gJRLDZZY@KG2#BnJ{WTH0RH)6 zGd9y0z*a0*=hZHCu~rSl^5^Tbf;Y}=!kc`0Zow()-b85a?P_vtoif#*ew5zV48yTu_%`&Z#|Y03RK8a_@rs!MJsIrQGGq4e#AS$ zdf-rAc4s%;qIZL3-(SM|K0oBOmGt=dfj&s=ngyLb4&i9qbbNTWI@_cX%(@a53*NDb zQuj-spe&;+d^5VhFMht6uN`Z{H}5^hk{fhMTT>Eo=cWF)!6~%PGK9tb^%WA+YDAke z6GYFYyZE&E!`S)mSa$yH4z{g=Nwb75{G{eo+UBi9KQ3>?mVf2hsJLasF4CIp@l&Rw zmkuV5)8t8do;!b48tR9J~_Yd?beyIQ%Ctq`P~ z+s!Sy9mg46YPVl|HWhRjj0YpNdh8eGe&^DnwBXzi7T|2mbD(-U9xM&~W?z#$7CtD` z2C8VEeNk;0a#*2+wiI@v0HSKy?JqF`G!$COVejd;bO+aQ5Gf8Y*3$6`%1*(@K zeB<7Bcq7DB zT`OVe0Xd@Ypa_?}uV8VtUzlHE8egP+f|hBw;*AO~Xjj}}%#RsGI-Omq-_}fe`&u>i z{pwBfGY-CN_9xHzN+U+}xm*_=)S_y7E7-!Ul;9LH0+|9)KpZS&2b^XAu_ z;i!wKF=h?P8$3*?zHwJ#?Y&EK_3&n~cTp+tQ~raUdAXZh*gZ&4cv-+lsO>}L&n|%A z&}wW>2-dAPVD@Pyyjggt(62gFaGkY`FR$IhoSiFajO{Vfc=i<$)*PYha{KU$%g2$` zsB~%Zn2+aOcc!&Ug0S%LFiEkqtK{C?jwJrrU2*CFEAhWg=Y^2ZVS=HgmtVELj7^3~?3JQ7bzeJ|JrtU4qDyc2kqxt1OJ)ZxM|A^Kty6HH~!*4kfyhT3*R;u?6ls)Y4^_p7LM}p zY4%s{UAheH^R5DY8z+OZ;>%#WtP+1ei@O&x|jI3*-}{|X*SJ&xtyN}xxDD?I#c zGn}pI3XkYJ!wqTUz{*|MIb@w;BfI$k3N}24JLXKFJ<~CLyH%bxp4~zBWd9@M21E%j ziZ2LL^f>X~g{k7+J8q(`bcPj?=fH1&n?n@?*W)*pmtkvJ0b8nE#YlNFD;~FqZ16vi zmrR?%u+deFd{yYqGdqdGS6O=IqSOz3c{06fNvZDbNbJ1oDABixqBCDd^OdH{`3n&7 zwSpr{T>Ak1Jb4eIl|g9SzmG8Hg&K?wZ?Zpn+8P9?l|fh8R;U-U0}U7o8Jwmql-Onn zy$QF3T&5#(<_E>|zrTt#LvwfSTJLvo8dTRQ@V7#6|ysAX7k@jj0JJwe#er|00VX6xW`xmq$)(N?_D zuTL$Sy4W#|6N1X5FTCT)1t`-f1!!Gp!RHPRLs8c|>1WTwyl~_tzj@a!_T1HoS}${v zo?yr6z|BT{l&1o(1a`9^V?X++cNI~&*^0k6EJhn<#NfrpFYzNKcf^SAyCg??(sLyg)W&`jA*lpXw+yf-~g)pzF*nez!W zwTTJOq@KCpdg)xFH%s9Cp-^>v8NYWgU^dY=$lPNF@Xp}?E?997SS?op?jFC0{xfuD zjX53kt8~V=$w!A?ns|lIHgMo~z1SgGsl|!`2|vUc|YX zv5K4(X5#D+2dvRK2=DaXir`Z-v_wU30r;4!S)_?GR$s#mS@ji;$ zu^pDZUJ7T!c5aqCLO*xDhoDRYzR(zmj_ag>LFxJ6#!?565IM$ve&8Ydv~NYo`05J0 zU+PZKPaH%)SUx6OW{1#~E2`+9t_a(_zl94B1N46?8_!6B=M#LiKKB zAuiqyX>^A(y;MyGtvkuP8GrErsn_%N(F9ieaT`%`dO^ZhJj27U)#AVFzhkTR0J^b2 zh9=D&M@~LcrZs;IS+RdLpL(yHS3R(kZ<6>h_rgPHc0nbwoY9PQ(o<1E-%ptMb~yZ4 zK9tj)`V>&u0sge?hJM4VshaIN;cIGu*x&RZvM6A4L*56I)8G+Ab#lh z>ulM$hcskZ33;bC6c6xOj>3cn@bgVM7x14s$S5q}N`ofby()I*EKmLhxsQF|m+(Mb zW*Lv8y=O_!k~5MS$;J*geYOrd3j-t@7v~F0^1lf8A%uKn=A*3iR*$t0cE2 ziVUay=vJdOZyM1k4Ev=c`Lyzw#IE_gWQXr8iP$fQ4|Ov5j1LR=_NK9HSBpB`y@AsB zBWlds@fzN6_X*htZ_qriokU~r61v;*7603-gHPM#D0Hmy6Q=7~2$^Fx^WBM0s9i=n zamYCa{P#`ew(Tkhf2}G(Ak)UbD-u~nX9u z6Wx^uh;h>Y%CcqWSRGhF%e^Yu-4wtsz1YUqe!k5_yG1-y2fWV>8L3M$pS7m0WzS;d z*}a%Hy3p?oEl}(s56VoX8Er?BU^bTcFaL*}58T1FpRS_fvkTFSVcDqjwgPybISg^> zZJg6_0H->}gInix?LCslg71|I;JD#q?s@hz``9z5xYKzt;F~T5Dwal|D&rkDbCwg_ zdnN_UY>x!7K3f5o@q&9(D&;&UnsWo*nB&#Oa_HT*$MBz}DY7&_j9m7bqTN&Dp)mF( zW}nXCp(|EkhXr!zqs3#~c`gZWy-{s{)3%TcZ7_pZKSiLQimPE>@?@9^d6cE#50~GI z0;SOc=j`y-&a~^Ay;bBAwAi5;r+(c+-foyn!gedtpUqw5%FOqa=HDg<>PIjb>BWZU zN3qj|`s{-D5_m_T${hvlV(+{ahrQ-m;E=7qyAM-($>c-*`_md}MG_ zVKG{GGXdQuhf#~s7<*PlW^E1qqr8DsQIOM>OV(7R&N?txvH1bslUP5 zhU;-7&&>sE-3-7bn`%&aS`pveI0cJ|3k2)rG%@nIyJY=hIfwFq8Ml)2o2hxo^{-cz<@%dIxzd3FS&3f6o{$2UH)cc?Hw z@IHUF!<-M*gEU|M7pZ9(PCrVY+r8WLsp35u#%(j_ugVt*W|Id=hI~nv6h7Z8@rYEE zDD+$q$b&weHluAhmBmq{^VLezAd_*@CDGn3T39&6m_It;3t92(D80Q*>Q?-m%Ihzf!LRV$!z=!G zj2|k$n;&#YgAY3s#zu|YL5KfaN}K$jlVzVz5UY{r$cYorv8%&iywU0^UcF}l&a_y9 z)SsA>;?;>r^6wrr4y=H72~OzN=uoup(OBT2s|59z{o+=)ezbd0JDQWt2?ALK@!ZS9 z>fGkxE5NR0x!~%HaB#O?9bBuBgp0&HkzS$+NvX^EF7uf0OfN2t$F*4#@kgl(Yx)pnH2HNm>75rw%Ni(g@_9st z#b}V4W$Nrl@M^a4>T33@;5Qw+-GbgP2t;?s)WON_kr3C8Mmv1VprPa>9K22*ZC*JU znt%Ha-l-hqv`VMpnyktEg3pfxk8j1ITFiOz#k%2QnAaYD#Bygga9|=c`>ad9_Lb8a zg@;jSs|osDbQ2GHG)c+;}%y)zJo(DN6wM_0&lRV(1JX7hMDIjEVAh&mG61W#BqJ{FFIH}iF zSP_@Q4{uEtcC`N!t)3-IY+|6KZ^;k|?`kTxUYNr3Sq)I#vJoomo`AcvpP{T%k@!dP zJEA|ng%lng$xNnwV(N>R^TN(r{$kf&{_HdhUgzFy7Ig45zT%=z#FNcLW9T?q-J3-{ zU2^Cs=OpU5=po(DZ4vquvc=D{MoA2R%S#rUT8o9%-}vr=P&&Omp2*DbCx3>TF!u*@ z$WP5EYCA;AA9dQ1OS6@v-gkl8v}`A@=X^(xH{_85{l#=zn;nh$rARaaE0M>d0=PXX zl^gzC6C5zT%o%j);a9e|nd~xGTKMxREh>e4-lq$EP2^ZXVTzrgY>>vI8Kc?;H6ZfT2d=MqHWwYU3wVuG0Ih#FgWi>nz{>G7Nd6uJtgT;z z{u~d`=cfX%Tp4Ej;d~SHO1H+^bB(1rK|55jsthUbjX@7DsiHNx-RRMSUL1RUGm^J> zjx8@nBhTT6DB_wb`4**x-fMma-S^hRNvm%`HB}z^d-rgcXG}*A=LR6viMmjI*)bU1 z>;$(T&IL2CWZStm6rfCRZ&I-%6KhYlApgyArz6=F`e?oZKJ+S{-kGUNzU~@E)+JQa zx3~PLf8PzPWYL17f4nC@HnpRu>}kkv+C6e0@-1>iqp9NrFLu?+g4a{1>uL!Vb%8(T+P|hpvar}n`lJ$XNly)JPoA2 zVKW&9p5nzWqlnknpLobuj--~KASoAg$eE*8(Gi0w-rWQ0W^j?FuvCOnN?E1Jn%7N`7|DSnT+&qJv@ z=6dZ8F4lMv%9cz=`MX}AWT!~1v(uAqJZ8(191b!osY5IJ%@bzlb&LJDJe;*HUO^iR zPLf7=1iAkAh$|XVg9i+VA{&X^dB<>kaT;<*pwkj9P7FuA}S~JXB z*GaSG@6n%ed1w_rgwk5mk6! zIThaMEM(8?oaoVx9FnhN&CiIv&rh5=R>+T)5!8RS^Rp+O;m-v}@k{@Ovd$wTm?J0c zaOv99qG>+#(Kango#W~Iu;H{ht)2|ra2&_4TZ#8uZ^EV5QjyEHBiPit1I0$>;WH1C zv9MN&c&GZ{XAyyD$$=n{bMz-zs^bAJX@_&$r)YpT#dCpC`$JA+UK7_k!yh!7aCXHN zYGBu2Q{dPY2|BV(fz!EO(D@VthiN+SxYQdf?y|y}RN60#dynG7>bMH!D){X|A{fo| z@tC^~*yBYxc9m5{v(kCYozX>F33@oumB+F-)`OtyDF8SZz%C6XxYSJ^`sXc&rO7){ z(YvYWX4NyhX0vek!6yK|OC12MmiOD46&hm|gBl!jYXnruHYHo8|E9rinrxz&i`ThK zruQ8pNq~C|z9#jzTPofr1y3!>@@!cgdSo{l)!2b<4=snO390m<$3W6=_LEv0a%^hl z12RfwFtJJxA*C5A_^1uQGP{oAqTxfS+{;VY+jkrZqhrZr$7+1iD+k&1bRdo6h zed-@gssHLoSeq39Uo<|3HLs1KZ?y~va?Azi<==whA5pM=<6;y!l;IqS3pM_}A59JO zB#$1{lWS#TX?>O({bZiS-b;O4YVn77r6<$qhD#Py@8VLpV?;Pq9J>uE7bnnx4ue^V zrybk1T!|^2ze5N7JU}nmn{60$)~pm^BEztiP_mPeEH5>EatM8 zkY8#hI4D%H2$S8k`fCClWR!|NByT`l9z2CxG_K)k(%I}ct30OKF_rCdeN1<1ZKi{i zD@fuhZ}R2F8dkAo=*nYQa=ZmEZ1~3Q|2%@bzt9*Y^k{<-`Ll3kdq4ZS zX&{|&sD;gz>|tXq$56e&4&?ARX;!9h0o}CUjK9jPg>%+Z1fgQM;6H8w@9|fizu0_% z`FLosgAE?!g`y$-Y`KqqIJ1C_+rF7u^MGZZAH_~KpQGDcW>SN+Wn{k>#cO?waK6_N zyeQdN>W-^`>fS0u9C`&u%r+p79Wm&AdMxyrZ2)W!`2j9G6%>yhYcDKUlh({;z~Z7g zSGz?3$6ra=(WklGk@1RPc(wvpJJ=L_nzR_~|8WF3Z+8OKQg>n1shc3cXAzEBS&C&^ zOHjc2DC9BuJ2YSa0v>d?!CDo1_)e1&Zn2C`c>EU>S_gF?^ZY|ezptDQvA_bx$j zQDnJu+VG55TbceHFPd)Xf#T5~CWXb3$nyS?ntgTaN!X-qO`3mZu$Nc&pUY%=Tr zr%1P?pTjkNAFzeS1@f!Gh8eg~W_9B_{TC%i_q0tV*>xHC;mKxbV^NBZ-W|jm*ZJ^T zz>YupvYhF;9U;5#x{&TqiZoo%p`qv{E!;Pq@W#7HMbJ1RKX@rIe149|xFzD3)&p>V z@(^N{d>omaJ|dkp9Y)4RzPLhdGHe)i2+GG6A-ysH6g^U~<(l`L?6Cx{^4dl2^;c|j zAFsp3^JVyt)^2p2N*YuC`NE~+g=Ig3gduI}f|1iI{$f!T z-O~M+^i8TG4$~`1MxicEFED4WLz~!|m}WM@rij&F31I%W%vgAGB2ABF^kQ`)k<(N| zGU-q8?)TO>Y{FMO##WU-oCDcZkM|xxmwIuU+Y#2JY_4NMKl?1sW|KK~G~E_${de zkN?!6?k6_5G}#878#)5(-yz6p)jD))>~7S1M+Xm@VuPMfw}RuzNs!}Tg_<_rM6$+- za9Mmlm}fp16g(?IzCX7^HS;~--mJawe#i}YA?FSJ>ZuI}>`VsTo2`Ma?`Tk58_pHC zPsUyoJJ9yldg2h>PM+R0W8;Pg(cpuMbX<;fPwX^T+Nq0KNu?(pv0@7`2@WL=ku~&B z;bUax`2ot8nxK^~yP05=MrJE+#HN%0KDbAe29yC@{kF z|JE(0(Q00(;M*10nVJFnjQ^rF2QQN_mqX0__8+$CX*cU#+QFVS-eYT0*0UEbMr_Qj zXbQgFAy<78$)mGzxW#icRII*)%>F}lN>jYGDhy9Zbq$8fV)BmKqm{#m)CPDmXGFelD&Ki{f%D0w7pV&f_ zuwWdT#2J#mof1}gPls-}G7m@BO(H#a$J6N1n8mKT!8WGcWXYz44YbguTlZWezQ(%= z+^kJ{ND$&a=TeE(@h;kZW%h<{yw$|L%)90qxnQb8>&mW@3qFHrYs(yLQ5r=?C0-`C zk`>983UwUQa zg9YEpKm6P~I()W^21^~BP(!S%MEZ6rp$97d)J&0gk_C4b}?R$nbg1(|I`}@b{aRvXz zf}00LF7}BAIJ^-6mpvt5f5bv4b9XzcGEawQbwlvoy#rD1K|6G*tQuxC4#nn|RG{zv z6f}7|LT=67$g=Y?nsBH9&9=#f)wu}f9R7&vI$NOMpI|8CHV^pZrNjFlBcOAs8q9LP z&jrr6;a(nH!L@h`+*(cpZ^%&~ymdV(tQbvF-&WC!!LD@m^CLuSpb78x*_wrPU&J}H z-%#JtO1zfC0Dj)V5;paKGD*q`gYi%N(S+7rZ2f|N)ZaRg%HU$jyDeYI35U}_ z?!z6F%bp-ltca^50ceZT5RAlDm_9ES=fAV1TcxrJz4Ab6veBGolpLbwk~UlwauAD_ znm9O325(DN!}DHF!P8AHA!Em3XwJE3VEnBHu6p|dG^3Hy;#>uO&iVsqklV9#yx{zjdKZdDLm9(%!_nzaM9{ z!Y^9+dm;JqbPxGG@c{vw%1PwWJmTu%OSW&gOtMr?Q?0v``LoWGcpto-=^yi^Ki#A~ z)FUUz-Ow}W)UqwaVM#sdt0={V=ar%Hu)|onUmL51^RRxa1@0{DqeopAu_b4dn5K*c zvl_LJCP%2yE%CR=1fOTzl}{77xDDgD*Z23^JGH0*X6A#1t*_Z3Er0sU8Imr&Fr>6* zJf#Mz{L{8!!mzeUf?oM&K1b^ct6Vyr#=mpKI(FJ@+L{cu&u2d~yDqI4DxCNq8TR}e z|NShyKcA+r*P=ptGO3*S39SiDCX=(5;Dg~#_+iW<^7ONGN9ybxC{Y0L+c$l*t@Al5 z%#Q_i^BO?M>}a5|%o=JBWJv#jA-p}&0iGzc11d+RavA$%K+E2dT;r=MkbWVFb6&2? zeSDt+PF&t;Z@7iCmpe|l!PBXEQWLOQRC*eIoeO#n2ait3yAEx=_Gaqhp$Xir6peF zbXA2k>)>~X_w7m)Hg>NT9u1x=Y`q>Uq?#xTxOvbkm~<{bL_Q7}h_=?G!XD?V z@V%2CDZKuaoK8AM`2A`meB&~rAErZLQXBp;pAz>KmDqhrEK<)~hi861jJIaHA(zA3 zQ1_N4z<8J&n0YjYi$3xP7<`lk#ZUHf4TY|tP>A7%pW2C%^<&9-=F& z=Sw0=XkxA!$+FNSKX#e3>co9iZh0)Y;WY^q`5(f1{j=~xBTsyDq$=IhdkT-PsiPLt z_OQ2g`&eb|Ha2tkFc#<8N~ca#r17syQE_S>j@`F}2&KD-vx6CJogzIO2c96O5A@(S zJ4@NqXOuTQKb=>rZDuQeU8n82(sOE(260q6O*RGR6Qey^_{vZTdRcJ~tF9P^<6?HA zoyVF`igz8oeQXUYPH$rMZyMOl!HFz3`yUOTZ9vB;YNAtruX8fCLENLL<6NcZPVNLh z4_6Ji&b}&)piLEP$%RSBNNeV1);lbhm$^Pd@NUWD|EK7@*-w4T2`D9^WdgtOOAXVdS`Wr+MYo*MbZ zky`I_wBFT}O-=toqobr~t%zmd7gU1pl)QuGZySMX?^C#O;uzGwp$SNC>js4vZ*a>u zdkqgxL*St(3RK*K3xmvYP<8nmt%7|!%wN)?o=kFUX=e-VURvv(#|45+ama9}i#e)%Zlg}O&j;H@d-X37a<=FKC~%!LdNtspBJ^3iar6DhtZhOc&yAy!#_ zB>#&Q9HIg+eEJ)RoE-#iRz|`3+)LoDv;u8RdxLW9rE!>?0a$SU2&#W`n8vb?OgVEo zf2z@xpJhLd_iE3i>gXlie880c0BJ<7UO-p4Zb6s)o`KG+5cqsJkjO3Z7VWsl(f$BS zQu%BWvAD7h?>TV~dl+3u=PtCuKPpZ5|~Js@d;;T6#_c7A9Mc=odZg)InYDIoQmCJ%RddcDQv1-Ypau=A}rZDlWj?8Mio1v zah0YCAM!qoT3ZJLL&JX{zwt1p_X(C2 zfO#!0e`QQk8hgQMB}-UxOA7n`NWfnU+DY>#QbE2c+=IFaO|)uYP#KTV2$#Wg`k$k&XHuS<#C|MfBw? zcP8ha%G4&DW&JkV>`g}vae99ab#xhkituKxNlXcF(>+D}F;(35-vxGeauT`Ue~i4_ zGoFS2e8JM~!uUV?xAAj(OxgWq`*F_>QFi8iHj^r};qwh$c{^`IzTn+Ne$q%ki?FPt zS}cwF;Z4Lxvzm%m+ps77qTIP&B+Fy3*)G>?rh4-Zy{0{$E;niPHuck zAa5_4prg^-sCjWS4b+=YzU-Px?EW5sGH>6b_}V-ae~pqP&0v&uDi8YEPbcp7lW>BO z0x2+aphKSj(G%KLbfwpEDp@RvWE(%B=WFEfAF*Sw^y)YGXuUaHeODhQ2VF$X9bClo9FPQCO|x0e!vg1r?@0q}*XV;dP^fd>It5u;CkQi(v-;-$8v5x!eeD-&z1>IuxTr`3F$N)B;>SFqvjvC+vC1 zVpi>+O4XFll6dR$Sj;t;+zu@#o2I-V&ko1nX2)eHTB-t0KQIInDzD*lEr9K~-^oC3 z1Bw0g7q9$PCd#>*u?5Y_e3o|}GoKJdBQ0i=)%ULwv*yLrV1XPK%`$OEUIVfUyM&}8I|lCOA5;zhyaVxb6q)flGh+TwA)l`wh@jnPhIFqav{Ja|6rn#t9Z# zzeX)aLCo;v7&3hMFn#%sHc$(tV|P@K_GTtEckgW5fBL_T{{5>0>5y z*^+%QL~K(;GOf3nkEiTRq~4$RFlV|1Ei{kK54yp=G-ohN{XDw!?m6;0 z+6y(kQ$%)+L-4hWIP%kb!adtw2ey9>2E(Vqz$PCr!SfYDPBEYfez_eA+vZ1dxhK@Y z=9XDN?#~xaVXrB8QR2n@@Gt}#FX9C!#%||qor+vXTwR}8Ro|S z*96>@4x`Bnz5zCT1E?FkM1B3&(4D_O1q(#Z&hgnUC?T>MWrp6y0pmkZU@wn0wrX>O z^KQa}k)j?`;0^Rkcn|)OXak>qUgciuZ-6p3i6A#z8y)Pt4+p#!0D0S)AmFSGH@ct_ zwzXsGn&yGpzHrni^B}F*D#@N6KgdGQ92dq(A={#VF1F81I)t?@(!w_BM0RgTf>N*R zpj=@U^jj>AYVz-pYL!VO)m?)WUmC+EOo3GQPCag2AA~LLU4p*FXV98aW%!}(Af~fY zQMs@H?9x;w=Q_%eu86;?Y(>NCEz`!Vj_1M%`z6LHWl zd!(>y40rpqHu8OW7=JdMLMjyQk@`gmC~+{B+T9z2R|ct2FJM4Tr4(3TwHla84m)mjbAK66~ zjii#%A0&uVcoeqPJOM9`lLgI>o(tMfr2>_Cs)B~c=GIZKAm~Y|2dz14I47${03!`y z^0*-48~uX0eTZhQmYTf2w3jduOcU<%zt5{)@8iP`p5$%sttA$L3s82^6u2+?FW4v| zCr+#>!q@9()1ldhth&IBzExJidtX?QX}jN%?K$7+?E7uhH6WPsyJnHzX93ti#J1ew z8UYu~&q4D~RMJtWWcXIo1g3EL0Rab-;oEJS$*A@T%jH*X9{~Xs7?RAts)|(9IhEQV6_=@ z`Q>Ua`9Dw7_?YUOEOWzgdezGUe^R}VH@D3vjjP|%fX3%+$BwDIobE4HQX^nvT#VTa z2VGWru7D;?_)Obo)RKDB6L|9`JEUz)z(YAFIR3_I_(IVV$UN5su4D}Ndz?1N|Gt=e zn_k3itlJBE`uD^1`TucA3D#V=;1;(MHgXbaJGfNsss==8}{z(1$Sk$Ll1zVT@fU~cveZ%u7V!vLr|yc5L|mKoSuEEh?C_7^pW&1jjfnV7KIuU9owl` z*SZ1j>Y0Y_2WESTh* z?^QZv`txsik7EhGQJ#TK7EZ)f_7|XgwEz`nR-oS*b4gZAA+`EaOfOh&rky*llgf{U zWJ%{NW;FXapOLwQ-)Q`Ug_Lwr?WZXuk6~!0eF#Y0J`cCvv?pI}hNvA?W;tV;srUvX zR@q>}Tx4_T>B&j-?p+lTH_DaFPM?b-XPw7G$^eeKdITga_v4~I9s|FoJ{34DZW3JA zv;`@DXM+D4+XeC4w}a4FFDMhejEpslVFtw~S>3#;w5Cy?-`!v#+;wrCu&dBkSnp8J z9*>U2ajh@V@`~Ni^u|-L-$E6;`&Qs>&n{8(6_T_kI0~EW>_=X|Lx}&$$?TGd85-Sg z$;NLzNQ{I<2*sw?fvrM24$r*6RaP$mM~&1u;3kiQwvJ{gAJ36vfhX9oi#~m` zZZz6@z8#m!-J}+B@%&$BZJ~1c13p$mp5Ie`mbx7|kLTz`)4^+%)M;S>lWhmQl}

R<(5IFYT=JpPq0O!j) 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

j>WM~L;5ephj$mKmbL@3C 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

7l!IZQKF$JnKN^V^^P8b2+X>`k&ER$6D15ZL zj0^?UK$Xa8`X+|Ickdv$ZNeogm6JnaZav0qlP7TdaxUF5IvVw}$*Rc533j*gvZJu7qQ z#m3;ZXy-{_!oq4?^(O#6JvFAUr^?bKS2G;mpH707@!gL5cQF4yIs6+f4Z=Bd;cR~v zbT3?oikh1R&P0GIodHBOx}49lg}`#Lqo^ONj+>0G;elNbX-TXkn>t#D$yZim=Xx#f zlvp>ua?Hmu+p9>WSul)_NW#Wf$6@4jX`}}i(%VWSm}P`Bn<%G38!z%8AU<*4S9JkA z-rXesZX1JcNhajXS!hwwBaZ7XNRvCMk)(m&n(BYs3nsU;@$%=Z;CgK-X(MX*>tPaR zXiTDsazivk#*{mEEsvWRMX{^clasmLL}$!JW@~m2RJBK;eDxj3^)1Hfe=As#q%G?f zk2qQxSaW_=ldKBF&Xv zxs77?len$rb?l3+BfDo^!bJ~;v57YP7WRo#^x>jUY~A!e7^hl+SHk^iLbW>XA3B8^ zm=Cuf@4zjsTk(5Poj{w{=wECJz?y->_+o7k23F~y^Q%d8tk`S3qsD8B6Yr70n(dH# z?huTBlMAo>&qL*&F<81T6u%n;QA?R4)bX-3Cs@6f#cq1YMg2;lhxQ#}Ew#z$(({F9 zbokNSr=#e=Z=TC6eg-+&$<(B+ABbic+AQqH92E^(byERsAABO_%fIpLLOm?tJxKrQ z9fJPtW)PZm1x5~LkT~6R((vpd>~ahzzaSVyT36z%G64}G!=PQH1A%tCNu%8=7}MHm zAvPr%JXIFrmcwCW(eoj}mOKU1pq?`@uj3&JRTsm5^EQy=KE50EPzrk|PC(aeJv{Pd z7rD9Ch^+RJL6K9pKt48=PSt85g*o%-tvyt$dnHruvtoU>Oqg9|ARAqv z%lD{b(AZ6smA9AS@Z?WexJ(=ylX~H#-x~p6L4r?#@vzQaAG+;jk*@mypHLGeOBNIK z$OhXwUFyR%(+S_>X;)HG(Q=M6EfnQ8?fJ%@fA^*4PE9N{W;eTHU(W3C@)UgITaGOt#VmH6tNeIPWcSB~}=l&66;qL3euNFV&lb7Q0&(s z*-y5x*4{J*Z}o+HwJliDA%BkbsxiMy3Dj__j^K&qHEe%(42P0?p{ejHTOTRQL}e2p zY0?S!sh5gd-iqL$oi63w4Px?EjmGDHAx^m|`2Bf2-Ke{fj#r4Lk&hhNfz|aa%jhs9 zx18ealzJJnJI>U~mAIN5Q*I5vDW)ZO&jL4jv!*H+n$(a1%6&2{HCG9HXYGR$_colh zc{K*bkA=ot*(BD{5Y=4{;*C|0@Riywe11srGQPme;VzX_DY zJcP&9U(}rwHXWwtdYY*Dtqsgpp_+b7xkuL~ zAHtlTx`+s66R9+3-6Oy!jlz%Iz6&{g@`Kb~_K7 z?;gYT%^5IhsVB5;j3nb1{Skb)t%y@OO&IlJK3qASN5lf!A-Vk!Hh(}g8R>^QFH!L2 z`FS$2|2)i;O~o7X{AP2dHQgVpMypnApsG1mbXWgZe62Er8I`BAy?Q0o{%{k$6BkP- z?2n`eTTJQ9tWi|ac?Z6*&w-&<0bUEXAniOq_?xXW=&q_D5}maWH^v^jFWiJp(T(JQ zaT`hR4uUp=1w7B<6m^*tNB55!gY`wmxMxo;{nr#v*Vkp!0xxqa{VBoXOR6i&*>#nc zrm0h(jBgmcT?)SDY6&By;<(03d^KT88OwB^&5hfb#Vn^e(`Q%s-O_A5F5*TJdn@yj z9g|;8ziu~SL$0}W!t|+BM9qRF@Ls}(1_7%5-h(>=I^j~wD|ncE6J(v1k+m=9p`XG> z!Oi7vSchqX`QM}XzK}A^?$9)U^kyWusm-9a(S#|M^^%8A9zt@W3FjTNga%7B;Hi6i zvB}E-FWXyCQ(qahj(!9Z|Dy1FuLxO@#`kVg(vS_u6I>}n#Yf)8#qu)Hyf+Gajz$U+ zZ0ZDiE7gI-T7qO^EPTxxCQVYuEoMk3!ZfCUHpeW$PhN`pW@Ms{(@8vaA>=l`|`VmW|u@k=eR=jJ|s?mj{r0?Dub&0ZA@jV279Y< z6CFqL_f3Z$jNL0i<;G`XJV}A@1BYc7RUlLU5Xm}rC{TrG zH)vf3g2y5iOxC5qT^WTIA2_`5briMR7>uC31oacQVug7;K2o;E+YPVrT1-1Ra$y4a zxW>cDl=1LCiq6BGtM`rLRfl`+mP)FOiH;_%kgA_ig$|x4)I(&s_RS^GhD^ z&gV9>y+3ZUr7Gt13UTIrPAg;Q9VwQYtPeShV^P)bG3q$|pdWT+&_*|k7nhdf!3+0k zocKMQHF-KLEI0uHuBV`SY!az92t$`T8`wIh557tE!;=N+Ci6@7K&hi76ir@3)>T_U z-;tw4CM<~j*?eBey+p!Ow1OjQ=U}+pX<@JQ%vAhn5sbC3CZBKnLsg0&UUPAQaPLgA zr$QN8(!3#|`wpI5)d3xjT39UN1SQQ2A;)(a=q;6@Hf2e4iGDrp_*R8(Pu%FAE6pfc zx)N1I4$@UF<5}^S=Ts(e05c#|?Psi;Z zLEqlJLlvF{;W;%m931nBn)im$TH$XSQ*#}YFN}d%>279^COze2mQEKO_3!Cm(M_iG z-vOo(A4a{pPcr6qnwOT3Wt;b&V9yU_)3W|bmYx~J3}0Dc^x1Xn@1o^2#9eu!!X{U5Bk#oz*FPDMEav9)IQrt{up?3bFa*X7fHeN@x=w~ z{76x1{Omd%lojC>KE&dSj19PN*ikw)b{CHCA5YKpxnpVl6=HM74o96|1x|u{CwRQT z_n5?yMa#vZ%!7jBbwfBmDGKP)PI6shIT>o3j62GuP-4b^u;KO*7;*e2`S7R&s-@;a z#8?);PXJ6W`@nuD>d|IR!zbX7brs@2L zezGv77DD${!i?Z*&zZPXE}c54j%ED2?~w6fC)lVppvwq%dMvOGecRrEcwIGkHw!(M z8Y%Q#dH@$R?u6&gku>yoHmVA}%B9vjG1%=EjVfZ% zR`D-Hj(EV0zpjPvwb!B8+~?T!b~PysL((dG3e@jiCryjxQPxdxz1Nr1>DeEc=SRVh z_FdIXx_$<$KB33ol@;S3eGTV*_*%Ms+i&`8djM`2RDnkVCzrpFLsie4unxN;_$xb% z?%TG6iX0E6g}FaTjK(L@FP~3pMixL?ztB~weFal0sFBdiFvUUweSh0Rg=C_)4ULreq%!C zC;7mn>M1m9OBG(JIE&uvUFl?{T(n4j&t6w?9bNUb`>nR<(uimwZVsRxhK zecvC`&C6fW>)b)6VRV=sS{6PDhG0Qx43D}A&}{QkhJ(&W1w;%ZJV@@-Owg{`;SSym|`29w78h5 z-V0;Dr_ZJ_x1YkbB}n7H_TiQhC*aMaKUll364y);7$~nD@!HteND7wG2-`gLgiWy)`}O7seo0*GwaCF*|5XSnpO}I(|hPI8~u=HkQLnA!qQnxfk8- zCPjCwSO=?=_JP7BDKvuHxUk|R?mJuzVZ9=7sj&*$oso;Ejs(}wo1o*T6rJ#80jro? z!=~-H$p7-Ur<-owW*BM3?@gV`?=XsHB3Bxy|A!k?OPKRa>Hk2NDxRTmv!5Ptd4rPf z<#bc@MmYbkfX;~5!rTX;@Z#TWjNj^oS?+g<;=l!gv-}xOE$rk1{;Gr2dq*-5mSJq+ zU_;iHxpGodw78T>3*dbHSkzefg*5FRiC7PY41^# zlE4LBoaH4de10yrXhq?aS$W{0Z^m6c`4p^w20^dBG5%WT&bHalW(BHB)UHP!s=Acv zipWJYUtH)F_N>P2IV~_}`f&W0ra^Nid11Vn4AYX`2+G$4j`+?=W??P$)LgESkFAC-S+zsti+9u^{Rmqv5ijI)nC)k{-S!FWO)g>2ia0b+ z-VOd|(=ne@q8t1rXlc%5++}Wp#!}{JHC}Ls#~s1QOg%J991ETWH%)J>(iQd~HJndQ z7>KMo4m;nfV@B^Y^7e-ox5y<8bnGt?^#%TLXt0|a?taWP$Hp+RoOS&5MQ7phzl-c| z?JU-LJc?E=o{Nd)XQ}a{IJ%+8p2eBk(Z^4(&>+WfSffa=xDmiVNr_bzB-3&AM=`c? zHq8<4acw^`aYw~bu#%jM3tsur6#)gX#k7uYw{d4yS7mu|wc|`BqLSUT)n-%XiU^!b z85&?Q$kvtWVCMD3*l@doE&F9>CaQ1B;$ug%rN`Xp;kin*I!K=8CUn6b<11*(j?nVs zMfCQL(daZT0(Xet1atqZXuHH34?LDZ=O>$C-tmIyan!}-+(?zpshVeujA(Gum6oy0TiaR>%}MULMZ+Teq>4YkKUl&pT3Vac!FH*siJ zBcj7kb2+`s!NDqo(})QbGWyvN5_A$m<{kvDJc?UUo`d<%l&F_@B19(;)?-)bE%2eG~VH%5ijCI&0@pf(Ph(SQX_$xnZB)s_Lv-km2R8K@T2Xp zxqS}IJ-UojiD?6kTeYC{^BUy9HyFItNal-)!-JCP_;bArI21)fY5qa*pSsKRhkp{} z4Cknw?g0!=F~QeOXXwAC&Gd!A0vd3#8M8WPvi^|6c+EnUNXg743ufJdbXnnDvZ4{S zn}*TWm{G9j*-CW1Bu-yPAE*6tYPcc19Wz_rBK4jDW0tSMUyY(@vf(*AYBd4LCgHat zkK^jR718(k4TxF#SLnKo1Q#0#Vi;Kn+BgTU1X#hbKTFx_xe9zjdIJ6E6T^=Qu%S_7 zirK=fBAT=EI6YzjIQQ&Xnx_{{#~*#dY&K+3v)WpES-zZH@ruJ;xrgA$E@Y;6`)O(C zW!h<@Pj5dEr9%y^_`a(OCXF}3J0EqZFx#e5Qyghl%@RgUvzdsOG=JH;i;exZlJ=gu z$yzSdQ?Ds+Scj`9sy@oYg0>uX=aREofXghV#q^n$9>a(UMuPEJnU>yMhrbIif^s%T zn+4YMz|S36;yaA)mDk2wEk$sB_*6Jn^bHp8t|9iJ5u~xVi6{nD5S?fZv{RBsqwQhP zWn;j9D0HKq>R;LO(QoKM@g&~Kt&GMOS2J#J59FPTVqQmbSWQa~TYmR09j2U0`)j3H z>+C3cX26)$z7(e~{k`d<6Do9{n@a!4Thb=WWYs74;+pS$BPvhI&?U*3I{OxLmm*M^&L-Sr}Q zIVV=wZ)DSZO~I%y7h%(Id9zbhyzjc;T;yj#V!qS-7_zsr(Km zqG!Nx!b9%nSP8TZP6D;d<3aAwC2~&A7PRW;fk)&pIOeKH+6^7pf0q+kWJ)~u$muXY zF}ewoSi(q@^A=n(xA-cg3{e z&S83TnF_1;Jqi6!O{I@t_+sevix9TN319i#MenlZH0gmS=H&D2QtU`-{cAP9b@4&A zn^F2_WgW|X@rC9tjAd88pM|^k##1h;j-3;qWcET$mCa8!Whn;5Sp zT5xdH-h7W||If&~B}pBU#Oaj6h3F~p;HN%O1gDY?NEGcOCr2M9@Try9zik4(N0-*h zt)ih0`)P*B4&L*>2-?u6&ujeo!CIWl`SOxD{GNMS@Ob{DLAOKLLPrVyzl$zxQ=E_B zxa*)j4jY6l&k`#8Xe@j2ejaG`Y0?T=Q|f#-MPT2a6ZXP(`v@=okMfCsmf_Ptk1J-7GU?29LY_4)9R%;iLt2u9BWK9%YHEhkZr&H|eza z^jsQKT*wxm9?OCf?WoPmQ21>eO9PXmsB+s6`YP!uzMZ*&iEopmA#%s)@zqlJ*RB%7 zOY5kYo;|7EZ~~jTP*T1z1PT;Q$oEy<;Beyxkw5Q7o?lhL_77QP%+^jko^p%&>p5db z=Q)}$a7&(^e}(s)XJhQ26}U^j3{^VrnfT_e!;^D9kQ)68T4@IyY##;6`njA&Wi?ZE zZ)IW&x3K2E|JZixA}qb}inw8tPaGVZVFFhJY>O{hTSQ6-p4TCT*O?c-e#)?ZE>5W>U3lV3{ z$1I$}X1o~3p2i=<(N6JnqyIw^%v~qp{~V~ptI144wm=x2mcb&+gJ_~}KxLjTrLS*> z;!!@BK20j2of{Om7xUiXMZrzwI_)LcJI+I`f?K%vTs6jrDdCUo7gR==b&c3&$~TR2 zV5!+HH}85nr5ir&9H6Ycu~S>6R(hz{M0 zPDbMN&JPW0SeQ;-)z?r_ssHFDA(L)D@hyx`nuZfpB4JAR1+bdhK`Q*$k%7;?I77Xf zZr1Fj(%VNfwE#ap>2xz&R(Xv@PL<^4;sW?G=T4@3eLKB+|mL>JakbL2F5fL=>5_V*o5(E+B*Pe@su0UI=kL7r8|FdMs-d zJWJuyg3C;gu8dTnidIFmVAlkC{LOvLJb#tp;TZOLrwH|_U&EZ+TCi+;54E{wgSX^I z(`OdN)Mxn_Vo(r*Ro!i5TD}>6@>Jy{HA-Pkc`8}kS;{>;rGS4@^0^bsjd5Ly5;K;| zrmvm{unjLpu+eFkaGOa0c2CI=vZY^jFfg(Q zTDTp57lmNK7FRIZ*AJrSYRJ$=UD7m171yO6;_@=b!aG+JD4ul%bmJe8TYiGa^rtS_ zX+0eJ5BH(kJyF*1Jb@MN)uHF4SJU2c_WVTN1LaofF%#W)nDWsWU9T2`rAs6^=kp2F z_MF1YV~<0m(-fSN+K68|ui&1xD%{}^N8=wPVfnr-C=1K+z}~aCulW?DlxgDl`PWGQ zm~PlOznBEr3oNdltzf6M3DX_)!B<8R?_)l3O`MAl^6NlN=!zyei7@FOT2!GohsDo) z!xV-tvz&r$*kY+n$Erlo-(oAVNXX=PyG^I3XX;U7C!lLLOoPDITL<)pA!Gyf?TGV6V7YRtYnvSTlkBc^O@w)5xi0b&<=$Zc0k*o(qA{w z!1^Z3S`|#c&;}ayD*%cr`f(*jf_9EId73E%H*B-CWy?wj_*2l(nW>`X@H_O8~)-Z2KL^8_JuDYxX}nN)n~wrYrgp4a~vr> zm|C7ZavA+?Z|Fy3S^C z9P_&VhF=;au&wfB_|)(aIzQwxRU6j?8>6ylx7RpYzIi%z4UNJtzEg3o>0>%L^&_mG zU$Fd9y{`u1M+6`jCA;dIx(|Rr}pu+@PoO?%w|Si;w(dC5_@ql zfr>mn#lkh`(1H4P`sPO$PWQH=lOKA*yC<&rYuN(Sbt;6FezQP6)fMw@O~BqicT8=J z`nZfSuVHzVCRwSJ3+@81Jtbo$r(WX=(3@adUi6;W#)_b(#33-=kO$j#i^0TtGiZtc z)ZcrCv=2(+^y$GQcgbeceY-D{nUYqVPDLgRoD74+5l%o}j^_HESHm+i;Y&+uQF~7# z<{B$A#pZmLux3AVj>%%pyU)-uwO<4ly(a&_KLLLZO=f-hCsDO)JZ-KULnp2t%??Dn zfZC4RI5OS_lJ~qO1*?-#U3P=eJ^5#POH3RyPp*JFpJ%`_MP=0a>j{U_FJbt$82t9l zi0>AWWjQC-6N?_Uk4C6)VXyjVw-o{2Y?xF&8{yTTPehsKC!9bD(sS4MrAc!4|nB zB4$@c{yu2~DYaZ0;#0zG!{qpc_aS^q(|BIe!kdY1*(^ANwo-NZVBC1Gm#nH(BP$jy zgNBMZ*tfM4ZWe2j@OA5PU`IGLYHOgobWXGNms@be+gl{|Y7kVHuYpRHVqzY-8KY)a z!@v!Bj5MA=t{?Ek#qT`uX8n6o9+(U!?LnBarh>b7UmNFjr3$;US!5#jgl;k%$G*Q_ z$crd<(GsU|>~Y8()@l@iVuK>IvFRHsU@s1Lvx9K9oz9oe!=IVMQ2O)~-0mvIuKc-7 zD^v%m_05;~8&j!?3c`Z3N!cx z1y=mev;y8~S0G=;wXrYThEU<{DEd@Blsq33M;8eT`H$Tt@YK?l2L9(P%+us(NA-I! z(2j>;Nems7w&A2&!OiZHjhBzgvi16(=z)2ms3@>@j_Mmh{%kW6cvuYYv_yffUOI_i zvxRQauApa9BzQs0f&aCs@czMnSldf6vm-Ya^8@Ws{3cOtm=!Dl+&WeR`CCzy(4^m^qz3f(xDqMsQU<*(kd*;zR%6p?l5MvOwhx281(*)h3%gYf!~cI;J#Xk&TPzu zh7Fp$%hCVX`JW>6zxx6wv3Mu-f(y8BnJ<>k-bnT9gxvV0P?{ML&W`^(jHmn(a7f5W zmR_69``IhAKUXKPHM5rDc9S&fn%@JBsn5 ziG6Faz)}|fd8kA2lx>)1B8NKr_QK++3(;T-!EB;TqzCrFgs^BdU33SYtLd=^$e6R{ zHl7A|v9C@OSg&d{%SjtX<7GZ#dCXCaEFZ)Ja{0vXMmK#^f0jI7`5h)|K7kNr3C5if zrKgOKQSRh#DD}*t@|+_nGf>1e)n7>bzc9GAl?Xw!1GsjE92|9jg9LT-`&| zRUG}+)N3F`CqG}F9k#CJp#@>zNZ*vssFyzi86^xx{|Y>8<&YoC3V z?SHVEMO;-z*_}@8&QBK%J0roKKTSs!fx#fIt4BlZUtxo*4jLpj!l*}!amJehFwxow zA1-)+Dj!LDHkuQ!Iz?!jH=Uf1)g}Q?t;s37wd7vE2S_xCqUBgqq~H9Ba%VO1_lUr( zlG)IE#t0j7n&E|5Cdg#?m^?S12EU}GaN|*5)c#TqZVwG1uG$uy2YzvrejUe^-=?Ew zgf*=Sw4!=%PEv&hr&(ynDK^*OGTPSOXMe&M@a^*Rn5U5@%MtkW)dd|iq|A&xk`7~0 zS7Yg}q?6=rS2eVL6*A3^P533%i|ZBsZ*SsSVZql|T=5=Vc#~WQUvx)d){4>er|50` zdN!Di&6*(etgC35eLR|33*5h#3H03Z^YGVx1dSfhqIS7z%vN`RdVBnU=-Ysj*K&mO z!YRJ@s2)7ZS}B}ss0pCwi&6IXj4pPm-AqebcakheFYv}Pat=*C!m+-ZZf(v zgwsh&A*}*?{cG6^+9z}=6*4G0vRj#5ZjGgn{>3rh=0a+%n2448b1^JV;GK7QkX3_g zpgXb`WF`uZ?HnuA?KDMI*?agQev`oPjA1r6$6G zy4Di|xv}K)-!hO0+s!`o4QITvz*epLL*K}2nng+5u=x-2`QKx=(1nh+tmEMc_H;%B zTR%^f9S%sOnPZN#KD#3L*RRTwmBVQDdJkIPFp3`9_z6YQ58;Wl9w>9Fg?Oh%*w{2m z*uv$)^1>jp{K6CNy1+Ykt!svjo@$}xBJD>g$k_S8EwXkp0~jY#Y0%v9*jNTPQWh3y|6uKJPx0{8y0PrC5;Qt zLUZ0oI^&Q$T^`qu33YBP;afQCoxg_0>&x?ff_KwAP?mks7v~GEi14Zp^Kt)21Ll*Q z%-q(hP)Dt3gq{YtvCaTDbeu(ITu46N5_sv?%gLUtZy`NWkwl3rVZ>V}v^2Pntz)w2 z)}OQBOiU3@*w{p8w%$YMap5#SA(*C#_u;Y|i5N4chF(s$7V;IT81Ao++^lWTral4Q zoo?aF^m*FQodq_1i5T=omlknXiN)IUIREr9+89~DxT~@Jy)zNie2pwkKP&7*W2*!n zNgiy6*gCj$nu`fzNx z5!|#Ji6vJK;-WY2$e)qBa3-%!_xbL|h#JD=bt^$WaX2hExe&e=xZzsCNAzXtN*sFD z3KMGO04L8unJEE+8!elptxY7hC%%I7u@DkyCJSxzKAP^%j>Cf<6402DPICs0>9(iU ztXW!8=ydV|^wx=uJ*B~l1)kuMb4i#{=tT93IWQBLAqE*zG_`vZZTos19L}7gk1Ysf zi=2eA{MDpUa3nxX7?HYd4}pum2E z%yM4jh&{`E|CF~b|4zx+WL9%2m5$AHg>C(v^h5M$_G)A|joI-SbPV2rY<@Gkru3r7 zPC2xxki{w9BAD|~@PH)?&czZZ)ZdtaY*h*R-`Ph>?Ja;8x|iR455i!O8|j%95C2{- zfbKClCSZWq5uHD4U@{Sr?Ki<|XMdCX%w+!L)1V6i2jRlQV3}S&}yJ)zX zFfXt@%xXW+WBr<;ICQR;-i)wir-fXy|K|5t(AR}KP9&kT=4ez=4k2MBE?7ZaNutIR zIQ6WbOkW*J)FdY0hKRXBo>lOHEmsEK%NPa%rLpXGsmU!#RW!Ue$uz+FK6gFM7Jr-0 zgV3&Z81It@owCU|a{X|jgCmOS0(;O!&Ii>rFT>DleHhbXg`>{R#6{0mL1mT`bmUy5 z(FIYckfuv#UHCu^4-HVyV+w+Av5uA1De+=)A@s~eC4S_N5xkZ88GN{>n$DWGlr>Kg z*lD^a>4i}j(NaH#tfzLkWK0J+btRSDv@V0l95XC;QXsD*S|ERhHWrBAM9LAEWKT1XDRFD?(?C6(8{v%NVvfwashb7Jrm*R|t?+1!0hO#RC4)Qsz$i-{ z5+%-H^6q*F-j~d|=cRD!+b#&_n-eIuF&s=tAlK_W83K%IApXWk!gX|lQfw{pZd8T- z8LcEEb_Z07MzUvjD%tD*_o|wvqLX7dtCJU@qYhiLZztu^=hj;+9&?{Nw!#-IX6nH1 zqHG*}F%dUD8xJW(2H2@{iHZrG+J+K=r&Ie2q8Bmn*l?1>e=CC4nF*Z3^7XiD%qzl< zbi$4#P26>k;Mpl_xS-E-h2@M1HfiS(jms%;MPHYzpDBUg=c*F9zb-g*Pnhq!_fx%P z|M4X$rfel^p*4?{*`eql3N^_XQ8|~wDlJ;>W<+g8FW~r(QM7LELmZ!+ONW*IgB=#> z@Obz*l<_(Qk=rfcuI@B)^O8I0ee*<*nZJnlB@N7;dz{jftTM7mtXO)Lo^?!tB(@8|7AE}cm-f;2zl6S!L7YA1Zg#vrl;>#66FFv z+&AMUIVo!;%y!Q(<#&BtEef!w_#)b6XVJlFY zYQwHP>}TemhB00*iVokDgVoQLF^$G%ynEIW1HIJf&&P+5A1#UWx(!#DdIZHK)4@ls z7V?@9a*U*benlQVJ4;E_it*PZm6d$TkcCO(h^ z5hpp!pFbXs>wBa1@F21(eMrci+#;Q6A7SyA6VNWRiR^F-fKM0gFxtNwsxKS?he$Qn zRd35SZaN`AXo6@l5B*ftNDy&9^S{`r8p|*(7xRF3*7i&jP-z z+6HtlJtG5C!?7a01{C@w@n?f3de3uam4AoxzeNQvnBo$8Lv}KKDtQ$06n0^tXE63J zT#vq8qL>%=gY-+MlP%XC6V0-3;D6u&aWBf|CSD37>akOyaKm;^_TV=-|8p!38<(z7N1LrvXxWQX+UHrT{raw_(-aPF87lY`FW45SSp2S#0>-Pzu^i6 zhoSATRPfMK#pA6Rc!S1!|Urv*M?ktpjt<3PI#<*3-_&9s$_$L^mp zSbw+xO3n3ggKrMm9~C-nrd>D*@>waIQBQ$=N(jD5jw0@Z(p2N0Go8M38y_e*lpjxz zWsmKO`4NXs@Iybn*^q;}a5j8TYX2=0+=WEo>{~Ox_`bbm+*83J}s9(sir*3NFmly=##dS?)GTbB9mQltYwwdtaFQ?Lg<{-B5 zMKqrjWyfZZT}982pHBycnRM35E%dnJ0L(7wL66eyH1h6F^!O12{l65*aR|pC-V939 z7>pF(2}>nZVQ6Iod@Q>~OmAc$KdF`kDXcS)c5#=#VKBbYKv z5ft0(pv!V1xik0()YU9t`lFj*G2e-^p@+!Ij!|&$K^{09UP-RZ`wxEjtD?-)M05-_ zVK#p+Gw~J$);xFsr*8;n%2BPTXybu?hF)yWt^hWpc?_!*i(y(p`{<4nyYND`JUvf8 zqxK(HYO_-Umv#xe*&FkPJ(>bMb1?;Rmn4Avj|80rj^kM=EUye9V$GXqkzOxLt{lq_ z*oiZ1o5?IWHyRpiy9G|=6XrWVfo=L*!Tck4u-GUeSJp*qN&jHmz=80Z!>mh!IDFmz{%3P|17cE_9i+gDpPf1 z6$}hi!QjwY5V&+P{9bvOjHz!T4Ic62K;Ki-VS5wFjLa?M?CfaH%!9+V30^S2bTrHn zSHa|D72LjfA$zdEjZb|P$|U@*(T0&K{LH5F^bT`mr$a-i-;9OCU~U7ESfq~ik0xL; zk)wZ3EeCfa3;e2i6y8m!r4v`#(QT30)VdYn*~k6lH>!{>$AeI@ItU+g49Dpyn-)lf z!6ua%aB-d`ltNSMCE2_OX>6Kk03BH3f#Shu1wXGE>Dlre zy|weWLC5>hawCbvl)mBiUsEO1nj^3^-wOiQzDD=yFQB5^f~vjmqlk9#Xi6M=XAlp3*K5U4k z9uXqcPw4CBuP|Z8w}W_}*XQ}a;WN#e+a35v->S{h)w21M-bU=T<}rTn)w`_tgWytc z`pH{v>!Fc?yZb#oL@O>Eu`yd_!}?}FS}fyA+oiWqze&ERV6YiJ-O1vjcW=cYS4mFx zh!$+NJpwY(99aIBLi!%~fKh)Ce%4cl3r8lC)?@Xi(W&p?ed{_BHsnrfLiE5!{5+}Z zYb8OSo|?uh>%jQ{V{l1wf{EovVannNlJ`1*R8P$$9|WeS%gaRgmoc9BcnzaNd3khQ zgDp#Ybeaie7WM@<(<_}KeAcFEG;SQC_l_azZxq9-G$v7Mt|7e6<7nnjhGppvc&k4X zw??^u;Z`%)@wyx9$Qmr)T~0QCP=NC#@5qSrDe#XQf$>3psB`BWDSQ?|Yb-Aa-n1bw zuR4V}OJZoGas*EM*TcNpec9`U<9WE4!4@72pqXYGnBjR3FY~D&t|Ja=>LD<8h9kds zvksa+_yeX}hC$^FJ2>9bO;(K^g_UjR+0cxI{LtKM>~!D?`sC?YddjjIRW7c^tqIpr zuE+uAYMp`m0#ofxpdzljI+-)i>EL?2ItcNx61vZEshtkAg&ALJK8 z{d6g`HMxchGMea?QYk(ta5(>Ecm})F)WdSFmojay0Q%y@acrD41t*K;a?{`0Vobj* z-mkiVOD=1H(Hl8DzRgwGnP$*$50~MAf;75&?PMsnmLlR!PNpk^cfr7bC-$z=$CHgy zxq(t=uuX7)v-Q8=SMq4=ojM9kJQ~QvtN%>Z{l>s5S9ko|*M#pv&f(#p;mlvVnFa}a z)K4cfSgFN&cI@$RHgj1Vj>+=H=g9#i_FNVQEMAWR-$zl^2Yqby&t|G({(_t3{2UHh ztKsh1esoiFCRums8_Zku5t4TJLa$vaoEvJvc@Y(4iRDz9*S8cc$LY~ikJJSJwQyeu za^z1$Ch$K#sPOPCfSDXq;v`H0ZLlfu~8 z<*4phOP-0J0&_JHxZ+YzJc8A+`neCh+x;0gpSHpT)fDJHo(^xWFXk3Ku7lmhDX?tP z9ON`#Q}uOK*l5$vj^riNDAzdtrfCd+%7>Vh?Qh`kDGxLA(^<@SZn=Wi%ii&wM??5( z{J~$ppTL`0w6hJfHTcaMp20n^JxEwR9- zffA5@zn}EmyTR+wV^DbR8>gds6@Fj%5370#p-gQNlz3%vVeiB+?$&IgHs&yi>{~_T zviFii_xYSm%w5j1BN+xa+C$d&6J(s$0>NXb05^81gZY;_vN6>bgU7jo!Rsif=#Qo6 zaU8omY6m;)Db2>4h0(R~;_PW}I}1GBBJ_dmah$O|t6RLBJ-lm8J2t*yu}-s@j>&wS zv1cS^aLQ;m%^j<6orT*8GAJQa4R6#mAb0;~qCIU9(U>p*DNgDTb=MGM?w*1TSHozE zqz?-zTS|{N&E?cSD&xC(8g!yxG~+CvW1h@!78F}dlXN$L;rWfIsQL@-U$n zb>XGz2e8bYh%y~{U{n2xQG!Xr>T;;d)XdaQCMzIzt{j*#LT`ig+P# zB0AZN;rB@l_Kb_e9wSG*xnvfzTFm%M7V8+FTP5r_*YPdWV_3iObgGgZi9crq344rx zkTXmHYL`vIAR`%pQ=J562~l+2Vp&%C={naxtCChb7Q%P`O=Pp#VXkk*BQk(p;4)VN za~?+!%f=C~UBd~|g}!Uv!Fm{49}Jl?U0mF?k)WISi`*!ygXX|WRE)^(5F$3U#NJ(A(SIv*0&Pbi39v+&QfR zVlSM>6bf{^V8FG8xqw)1l2Hne7BCY|#6Rao$ZR3N>)5_ac6C^Cw|WHRN98 zQwZ6%3)()-f&xts60@%ptP>`Z1-+_}GG7jVXlOuRT?&M5ok&!dY=l9tB-7Zm7-At! ziC4pTSh`_07rkGPcnJHr3imp=XEg-|M$Ca(qea2~SU-{eQcmX0bH%!&<4KCR9eDX1 zpofMH(x&?cEKvFwRxaN}4~|h_PgkB`gCA4rA|=5yV=UbAl@(a8hY5?lol6h-tY?0M zji7b+8pwOZV#<$kbZp)gj2t7}qyAPA<32AKe4a?mn-;+>_cP$uDG%2-I)TD<5$w8e zOP5xPvg=D^*xGAb5oTJ!;fmM7y-t$JJ`wg%Zx^!6Qwl+aa~$_YUmt$<{^k~`DuRrgGG}Kw3J1LeNFj72H%7h`i%gQpBmUx;Rh3qol(lY0AC*w984eUAuON~i?$e3 z(QWaJi_2uD$tPmb|ow!K7R; z7rVjz+|9wK*f_HBTL(99i##|9zd5Ue)j;)hHuR>Sq)HOkFb5EZxB(Ha9m?}wS!6BbylcjyhAe=_H$~mLRI3GvSohCyL zhUtO(T4iu>*hBhM=Mu{_E4Xm?FW|ZsFzdJrziK8!TgG8>@$sPPv8Ap8hb^B>iRmUes-oOh-#@w zvDcX;Bt*FcS~DNxfbL}>M^TG!$|4}m_$cWsq0sPN9EMNohaTkDp~{` z2d^C$K`lxa_21Nj$xaChSeXXqV%0IGqxj#E-k&c!fDO72?z=-(8VfA=z`n<3jGnx`;HDu79&#R%k z>m_dfT>@L}4KXt4D87}|q-meC$eI&QXnTDG9GZF%*7l!4S1U{Wz}A4X>b#WQ=TKFU<62+m?jvu? zq3-J=`bA8UDn8+|_)0gyxO@!sRJXuA`D>88Lki>R`3{1-A(bdzQ$sa%SU5ntW*4!YK9A}1dp7LIwODizXu`a- zLh|yVKgJ%~jZyLyD3i1w^xKUlUl*Pp#iZunRc!_*kKyegad9vBAoxlN>KFrS<{J5J6#(%^F7)i5(r7n4@a#~Z_y z;A=2MR4nX(z+dIlwn=D}_AH7DTH9FYAnu{>pCroaJb-`Rk9k}!37nzi3 z2Olq%)9Tj0RA;g;o2h%5W;8rS@u@2rdCuQqVkUqcWnE0&)Ny9#pa9&xl7%8sT2RyY zjZ~=}vs|Js0jqQh;pV>AxT&p>terC%4{qXE*2N#u-~mNTJA0ZR{sY%}`Lo428MHSe zj$T}|op;1=9#6;U8tb?7Kh%qoVeKY9;UdRACM)_q=Stvex+UJYgL5pH)WlGcf@Q2} zfG&GzA_FZ}e1W!$iQqSKoHX|+qvXI9@V9yZ$Az`XJX{OD5Gg*V^ zgJ`%d2_}wjp>BHvVYjO`D(QTO_&Mj`QLg|VuIPZ|E9tCl5&E}Fi6#bVq55nGw(f%wE(zD= zjr_jF@%WGMByRF}_R3mx)XjkR?RqPzG$>|=J=58dTkELCxAW}nX|HLT^+EQXs69rc zmE$?iJwNgw5ihi-VJw@9o4EOv%^DR_!f}S>&MhXU<$3rgn2*6(=T~2NwSUL^juP+eG8tc%Rz~A4{?9G05iTV zLEwHjr^j&F@L@jO!u0`PYMdmE;!UvirZW4;hGSPG$x?wlXPT+Dg)Y72iv8{^y|2qp zV}l=3k>|VUG>*O99Ue-HAE&UAf7VbFo5$$AL7H}b9m6=0Se%wf;NuJpd~wMcEIJ;- zf_D+<@k4`%*FA$qaTQW{c@yM3H--VXBeb?bkCvbAVfS8Bp_Ny*(p?K}X!7_`8r#^5 zuf+7J;7${^4jgF4&Uchw{vmyy5CW4lE|SZSM~H=WH>$PI`d;J-9>RJ#H|ShghWDlRL(9L1C>_5acUP*=8y|nrZ|h#M_ePEB zuGKE|z{WP-NZ<{2BIXHuRWqCZ`l-(HpW2U)Iu4TVig{eVYY~P!jX{OlF48*52*ua+ zV=McG+GRf>Q3_{aUr-u+YEdJ`s}I7ZGdV!zGr=l68P+%mV{98|R9bhD>|d*kDr-$( zv(-Vc9r{Y9P-&E(R7Ql11aZ5L8CLVo(As7dRwq@C&BzSr=9fTp`CZ%rqO@*e8zy2B-D~)px$2XRHalma_f3814|T)l$Y0FDbH0$Lm4?<8 z+K_ZO45a5>gt__ZAU!D*=Bn%Bbl305S9*oj{Qd^#YH9KE)(FmOC|}AueY}Z{nlHij zeA*5Z58Xi1(2x4K+{D#depvaFA2>L93!^2KIJM?A2225OI|lRd}Pp)fxmBFj0}Ps3!a2|PkVW@SU)@>THWT@AVL ziSxF~r<3<~F_vLmAF$c$EU7gtgBy=RKxyMs?sc9Cc#sDRyZG_A>P^zQ;;5zh>&xJw zkpXgx=fO11Zm5c6Ff-bN9QBcAT4sL-d8r8Yo@EC8B+O42FYX{Z%iqE9$;tG6(KgVz zRE2Nz1L)3e0<3cCTio@solU!9!|p2hiH5=JY3Ur6#@`U6Q8P=h#l;Gy+TI6+t$A>* zDHakHT`+aAGPMRo-(t@SWYAg%VRl_^8{NmOLu$cgmx7H*cF3za0H5 z#j!2a4svvEW9b<~cJT}Yp2^U3x`?#FuWYW3-?SQPnr>tB_fqJ5o<_p`B_Ta97rIB* z!-BIfh{w(Q5O^yEF4iUDpV70BG%XVRKRrjCYGwF*r3Me>6d*pEPG1YEu)70pu^H2k zv;F&~u}_;g#(XR14?Ypi4$uFDpYCPQXgmS&PS&tnBpesw)IR@kvR@)4HAK;+x8%APiH@_rh)OeK77-2`4uSK#{>} zTs1Nd%e>b^Ze$AiZ+RT^=B*wKoGF3Hr(fgkuSRUs93gh|B_r}gu0tdqO%ix@YM@V9J%5LA0OsIbB#DIkFX^#t1F>|Zwf4bDhQV^ zl#)qzpThUjVrGHk9k|z*KvwQa2j0~*NLjQ9gN>t^CgBs1^jZoH)>z?}4O~8Abq$>m zd`sh}6w$9c7V?&>&0zVBeRv-k8Qx_39rWnsU99db3-+C2Ive`eiuEXaO*eKdV#OU_ z(C3TI(e76xUI^U-eoKtdX`=<&*mAtbM|X+ao`;Y#XCJw4!*I;vIl$~bOG@3!;Gw%Y z$Xg#_$}g>kXYx}(;lT@LnW+$7j)^0=tT6n!>Iajuy1+m{AJ#ft1GBbd*!3-*)He+> zA(tkT<5w-2**}xuP!7Au7YjzR(haQn3`5N(4beBp+}G)fA2xk z)))`F{9VCvixfsMd5oF60m)mVO$=%{kN1sM_~#_ZS|o2`ZKd9@27ANUlp>Djc3>gf zt$B}q86e)BLJuT;WrDdMAE&3ZJi?nus z7)ic!(uQF!`{8TubHhuKbb;JdF6x<3{W$8XV~b+85| zWaQw-vOJ61zdiwV?wjb;h^2?4%-&bBI-X55#FuoL{@MLG_2Dh`YbMjMQJ3x% zAEA3r@X@nfGr+AQmUh0Cgr&2j*_sEw>DdrEJEXyr8e^29%!5_FoH-B4$Qd$l<( zU>n1}ih=U>UgpDTWqi8g0=fPtgUM|-CJ(nq!UKgIqGNxArku)Q$ND^3*PltOv0y26 zO$ucPWQth5C|!1`q$KM)TE;H@Sw!>BU!y+E2U-&)PCvIxV(P}#6>Q_(hUxxeS%qept8jJV{VEjGNBx!mBFEka5Wi2P0R~ z9-DT$(^Y~M`ZAN37gx#CVqDmq3|$^AG31H8%V35357W{GzSN5plH1=FW0RFD?g%}C zi=()^hDa4X85Gant7$^d&`ON@7DwjXJY(_hdMtdqwua=TZD!*3{wWC0MDd1?n6#%3z%mj_H|zvfMYaZGv#Wy+wpi_ZCT47i6DID`q{OpJMaY2J%)c z^W*7i-sim@Jw?O1(pfuE3EG&~4!+HUaOt@vYksF5=Xsn#Rj0K;TYo@rj1g4-+Dweo z9HGnF2TrfiBxhVy;D*_9kk}m!H~S=UQOkLFDlUuhF*iZeeGj;41<(h!3u$Z8M)tUa z4DYP&c{VO^CGW6k2SaJ9Gcx9SbbCMy z+9j^0^S(Ku@QfogVo;CWddz_J)S1iHe*1u(A|mYS0M74~eVXe2UCsvj>T^2+8kl`( zHWd@n;dpr4L7dBODz1vcV+&Kk_uMZM7N&xlFE28lCsu=g)*_f6EQCi^FT>k=4qDdl zX(tOS_&{pQ6*AlFG)(<8kNKiCXkl)i0NRG_#9`e5C^#zxv7B?g*y#rB_!3G=x^6-0 zMGLaa&X5@~Vk{SwXfQLJ?m-oMjEQg0hI1|d5${R8q=VyCt=Y4Qxi@t!v=k1(al;`@ z&z=n`4L*4K7E5#XpGBvbhs5!NE$0(YL6sb5Hh0?wGzvRH?eh0ww|g17*{jpU$W(gY z(4N$5ZG%mEjpSKuIT32+hZUp+%i2RV8i(JfMr)SPiTEMZkr!gk1B9vLIb}HU)|GrWRAu|t z2jIl$cCg$f0TQ}@0Ulfcoz<0~$#7?K?`odow_*Cv;4E!$T|uN?k69l7bBRox*a>EX zuc4~$E)HqN;DMGiWJ$6UmbBg>Epy&*{nG8A)olvf0v1D0bP%+4y5LUlV6^!rO=f2s zVM=c|zTf7~uK$3vrS>1|vtcRk+S6sM%Pni3=9=j|GbLGGrk*^zB61^r(Blb_9?3X0 zd^@f>RD@qv|3>f1WE$2}z}B^#q&q$H(fP$>GW^As`F7a?qJQon&)-y$6!yJ^^QsBr zT0IT*A|;5ao*|LF+YC=Nu7h-;4T^Al*WTe9OwYDLi>29L$=H9Buq@b=-5{^c^Kse2 z`k_zKjS zWDJ=;gx7TsL+7eJ^vyobBPl3OMI9TcuJwIPJmt=w|6PD0eq8SVSUDuuabaj(>&sr4OGI8Pd)-#jID$-iJ$V<*WN4gs$XWpK{v1zGhmkW@$QVIIqT1r-Bz zYF)jYn$UjB>6;}m3#{<=do$`R{?l@#K$4!=pM`gtZ&6aQpGL13$KtA`RHYxV-A9E= z=L%A(%sa6C0+(A!He}X?++&P$k3xG}3bYtdtmA2c{7z-?cy9yt7xZ!8?nl^?Yt1@e zdx4=7()#`ssQseQGaET}B_#k{_AqBkTYkI{D=N zBsn&?VhB>mMaU3Y1Yb1DL4Ar6gbezUM83&rp%4l#>3neyi z-j!u?xMlVM*upt#zPuNqBc1VVzVUw6G5$C!b^iw&lPb$o5tic(>n&uTshd#EALa0= z^ESH8=h!N@q)_twNj#*fNpr>-_QZoKs-19@+pm*h`u;c&HTsd{)~_Hs!;$b}LWcRO zvXZnq{RhWJ3AnhagUb{xw4HvPEIlrWfAYD#+nh)u|JK%$f1?O8xqmX6MYtJGts4a&#v9tRaaiYDvT7h-MJ_ zJ=H>JrX0Ba>Gz$`maT$EBD^8@Nfz}J zS7gs`5TGA9pUNeF9roR|0;=i!nSBryOp34Xhh)(#8diLeeoFWN?(Sx5pC;2FubcqZM>_iEn6y(3s zjAa}j;IhpIS>7FFi%;f;i?uACD^e zy5qEfEX*8ugFn0)nB7}%z_h6&B+ld+M}?Kz zUqSWgQTA!^SuA5eqiW>@>wf(d`@UOF}trQ@5y6p_EgZ1i@MO0?III- zl)YY3%p9>^1`i&qg1f0aXqs~T742&DRy51L=P z^27w~d6%u@SlcgzwNNW&^OSDWj4w~fjy2!$g~uwK`8FB%TK=U!oU`dl&h@O7d;-F1 zamFa;~mWu+;Gcs$VaAoXK^bevI?%aO0Gj~6Cy}<49 z`pZDR0{4EuF+{=OT;S(w7{8*0c=(wFmHqLWW+$?A>-$`~K%MiDlz8G&iyA6Ekb}Lw zLbTGb3d641qqo*Q^pZV<6OV2X|2rlSAG8afv0ZS7-w|%|zaZOG|8d;&WDp4%B5!Bz zXOu6lCzYqVNcP26=BAti9RB42mZoYDw|+LGuri;_Nk|6M1-BsKgEu5(oh3&vtpokU z68Kuw3Tfw4aC1j3)SjAz$pPiCpMRY3DEbHe+uF(WVtIV^vyF*gbqMsPKL&-~BjDW1 zPw&gh;pC(Q?C_Y1KJ00X*^)so?B+I0FfX-$F8X;29Tv`@XS74u179w%3X2+PU~(J#;dV7$bUTgpJ#?I2EO>wdXNo|4 zc_VSK3}o9m9`8fB$4vhVZue*)-%{UkJuZoV9cQ4N0<{NtF_vyitU8Xksyho5rsn8VdgkKPo6Y1tBJ6Se~H z)O*BmeG1r%@L|C;FWB9A7_DkHbKX&V+OtrYRj+PmzZhL%gG$|!%X13Zy>o`CcHlua+IB9;JkGUTkd{JyZofqz>q%IyD~=YCVdUo8 z*$|xchm?P7Bt{Z%pe*1VR9g)(r|zg)vKy8%WrO!E^<8=U`T0L){lN|7`XgyD z@!*3_MQ`S7(^0~U<9JGKCoJQX{83xG5d|f3P`5#b_1E|byDho9aij*_TBbs+6!=*A z`)w#IB0?XEeuZx>7vbh=0lK(p5Epyz0<(yf+poqe%CX?r|Cx>B@i%Zu z=zVZWSzuYj%p+Fz+F)BHPHc9bA}$MOFb}F$GN(^enwvLTz%JiDrsd`g>{Px_l+5MG zdT<5n4~=9@lO-!=6rxS-B3u<1056xdz+5{?aMZ7Y?5K9)t=kHb%?|MP#~Lsw{R?`p z)39Ed^THMF#CBO}d~poGt+^2dPp4zLO9DD6{bek5G-+OnDgL|Y&9*J*N7u70*!iOo zdftUmsmVGxbNm(bc1hCe(j*AhK8TK1^04^mb4K%Gf`wSjAMzz;4k_bH2J4by;44zW z@#B*0)T;s@{HKC`Uvi1s4!x(-f>+XAT2t7U^+jwbt!DX7Pp|_26_n5;;RZ+0`vK9B$CE?|uJiHnqhA9^w z!t*3IR5`eg#Fp@(f`=@((@Ifk$6AgX!(&(eYe1PPb*%g>8#c?zjF+S&$IYg+SQpNh z*eRq91AT|!>801usT+htMXsoxwtzkST9_T0bcFnf;G=mQYa}x9A0y9ISXFEW^le>) zcZ*`kwfU`}z0d*2j}Cxi{4vlTmc%KtN1*8jm!bQy97Q8HLV(&R+1IGdxCLe5J>%!} zgU2hnax=2G{noJ|r4M!?jd^WPQO0l+X;hBIDEqfK!4tu# zY%UW`xmmM_Ir!>?V8G=vWTz#AgK0KQu1+Q)BmFQm`r6Xibs;R}YHIT?C6qjH9yd;Z zgcq9|>ALT)X^PBs_L9Xv`qFSC`^YhceL0>=%y#`EIa<;5S*$8-TfK?AHW$MnaXx6Z zH^g&At3V-c2kAQ(ivHJKU^F7%^1VMpW{BJ--aTo|Iej%$8F~mMp?jDcmCexieF|}& zBT3w2GKlQkS47!mJ$Ws1h%{|(hUW|Zplp9HRyR&%EkAFdrriUyMX?oy1V%7U`x^bA z$T5m8U&dkOU5tK%BMNu<V%BE-p`ee- zzdA8j>?R(|Y~uQl>(Q){^Q;=rz=BspWc~W>Bw526@|2?>`k5?D@|upW3&in}$yJ<4 z+eYjDdxUa@Ygy3+CuzNrHG9!ihK4uB;uNtn?3pKAW>oGV&!oeiUC&=nrO$4~yy95+ z=^s8 z`%;C6LMq5!jx%6V+Qn#r1CBNM(EQdm_V~LqtbRi*tv!)Mbw2%I#rC-Ka$<6*s5xc7 zUQvPe=ebZWDhgG5eQ;#Q5MH@#%KGm6Km+vz;F*{jJ=YTrJrkKs&~eY>RV%rU&+3UIa%>6x#A~1jQ-Y~xPb6J^c^ST(C`U7SYw9Ce zh>LsH;gJP)Ojv&;4rEP6*4-NWrf=qSA8OX4(fsRcNOv{A%ev6@tD+)!6eaH9i4q7Ago0YzD^Q{7M(Qm zVM;I4%&vpnHVJTU>>w`t95Lk41Sx%~=A3PgdIh!$L#WQJDLKf@V?EZq2R zFJ+SRsLnor)>}UwRTT$0H=q!eURsErd{L~yd~McvRyhwoE3hqX#jI#&9;Rp-lg<}G zu%DYjX+N4q-2_U(ZEPt~+h+_xCq%Gcd(XI0!cVg>(Ggbgv!nyC+? zCMNJyQVEatUw|<#i>0#b0I8QOLV>Yh^547+MnWeLN8t#3aTBJN;d*#~)D&ZC&f~te zDcHp2b4J8XV2xA{MEO6*=;L?UumlZWeUcH~^(UXzxRA|e?{ngXy&I-`w=1xp=LkWg z^&{}TV#laHy@OhZtZ1OkJ-RN*n!fNDhhM@==(0Q3OpJde#OG+DpTbGFC|?bdHVl*< z{=qzP-VRONK5)FvOlJPv`<6W!Z^??jYIwLW24-}$GI}93q_o%t#%@O9W+#3+Hk;6h zee*Eo;2iaN)WEnTlGhJ*0C++}xTBy;0 z@LTA5;Ru^P{ESX4YN3*g-m_;^FR|Sg!^D~W0nge3=`>Yk+VArOPJ64Ndb%MVy^;-c zp@fMEb0+~Mx!9h@aRNi{TS$7`B{LSzL@T!!jC{Zrq8=X!Q$AdSd*54O)LK6PRTB-kpIJow{p!f&wtXb$#&lS@R1igWg%d&7Y@)&A2ltWl3}vs7 zE{+2i{^6)u3ZxSkYmO&28SqD9BcxooPRd4wVbXyY;I-o+Sr%jktu>dK>#d`f?72D+ ze4&EhwT)0mLYgK&F`{x0xjlK8Qut!Bf;x_0!zFPWXhG%y{I#)z>)F4-I15+YGU|=} z);y{hq#GtCkO`Mq*?c ztcDeApY?onxm-&6?ghaQ+5KD{wGcmk5QLp-SK+@|FHm*6CF?wKnq>T^i1`jF5Pfn4 znl7{xu|E@}>$e%!YS?k?xfX_Z`zR=0tbnio4v_KluklvNHKJs-6-RCwW1Vj-=;~zS zRhMiWzCRD7ja+cg)?N6E5R5U(o1lOxf$KZXb;_R!oUNjC0U z2Uc8|%F|U;e_}mz1-ZdEDp}U8nRrk zSx4MlB8ky0M=0==hKmDSEuwRVY~8_tGkUFr3fjfv z!F+l;SQjS4Ex88J+E@pZXD(vwpL8(Nw>E&ga}|>ku?6&QMne1CMrfV89(;;tppCc@ z(SEgs>3(DZ=Q=(^LUAT(w~ztbB924r8wmGYL|~Gg8)Ufg0SN3NQfZMy{g432N^s7s zgtIVnZX(I`RD!A94Cmg>g^`NQu+KD;jCq|RPBWTd_|zp5=q3YtfA$gS;e6N`%Iy$+ zkAmQGCyX{fhXtjX)V=Bsmdd}yU%U3wh$ow{@q#sq2ngWd=2KMdViXowbKZok%eZb_ zi7vXr-FjDrYY^GOF^$-oY3wg$ z9X#F5)o$x~)JVpFa}HJD@2p{3qBxVfD@d^b|$-X37F@G zvSUfgU_j21Z|};$&QB8t`J<4>)iLA$)!-QcMdIXninfN$guxrLAzN=A^50fLp~mwJ zd9#~2Ki&tbbEm?eh7a&OT#Ni$oemE^G{C}>()9MA6&y;afp3EI(K}tl@c1o2@=B<3E8N4e`2v_0<$E!o*i zGfW+MO4C#5`vW)GS1@uG7|Pc}b@eaPxorp8)!xH+Xzg>fTjxg8x9U=_9RW=Di>pK;@(L7v6(hz$ zUL?WPn@pTi1BK!avxUp-7`K-JARjM=Pgj+;~CV{Ee80QSlYICKMn=6q$*wm zC(YW8M`G&1Sm_?I-?;&II(U-&b~o4~)k^GqzB1d6orms28PH%Z55u8z;n!NAz(kp zvr^#hO)|M4T<;6<4Pr$7)+DCK>Nxy;Wd)5NJ;?MaqtKll38sbz$dQo>a{F*344Opa zZQVp>-VApv7e0pTR}|3ga^nzEtW9^}+1qNez5Z#*&g@1>Ld#WbrwFtw4e>ZSzYb13Q ze@_pd8m5l<19WDU0VaEKjAvOB_QUzxaPfE@onkwmUBG#MD}rnA<0>=cML3etYccT3 zD2&aVyp;Um|Bu_LlY!(5Qbha6Dhyra1=3s&V(XfZ&~mAX+g0emEpxTu@V$-LQs@EC z`8r|cc3G10{yF)n+Lmu4;!r)g2OGY}V(jWo_+Sp#LlsrR(%f0d zAMT3(^{SJR@fMPuv;xkJd1Cn8K2YKMLS;0W?z%LMeRI)+O;Tjo>{m^cYtZ2Kn+1gb zNRFjc)Ht}^+zQ#U2B(0wz%-a4WwEln-{J(X~0a^;Zhs zO6{c@%BsA>R>B~dG0eVwkx!#)*W(3+T0ApT6t`DX^6~F`3cisTar6~A{w^E#?Bqj3 z??}eD$PHq-d?8;~I5sls7$2-c+^8+APyR@FpUzpj&P8?CTLTx>n*9UF&!f9X}?qLHDevp^g;&ZRJn@6RE_;t8YQUM;8+5btqY(qztgK|CHYO73^= zCbOs7b6L2{u)X6ym{DuWF#YM^|EvJwYR%!_DNEe2@BoacE+=WJDMTtO)j~1sF+BKZ z0{d(Q&_THYpT6Bfi+%{8*A(!g(f={JX2ba+}6`*xE6isLy{> zBjbb5WX<5DM-8;h>BMo4nLD4$?(BSemu3%4WBH1L*rt)mY+j8T-OwXT?|7TRtJ`ad z`}Qv&7A4EQ?-ZF#j^%Y{ClQ%i1ZxGAXoq99<){Ay$%6Waq(Pn!+rmr8@5O}NH}5B+ z-3?%7q7OUG^+|hQ7OXM}fmx3dfW7mJyqu*AKIMnuSc@JxQJ{(gPFxl&WiGkH&BU+1 z9$*jIMdPH2Xm+*XTsEoc9sD|!i!19=(IoaJ2|palF6QNfPR%2z6t=@?JC1i|eZyk@ zArDw-{}@7crQ^@6OHh|32ND)aFlyvsv0T6ieVroU?YbbydYcQsvNoc@&Gqz?mnXHg z;dV{M}q*q`q)sKO3i$V{2l#Zw2Iq-=5{5`W>>&OpAB?76oZac z00}-81~V%Am^J?OB%(H%JYKK_Zcii-&xjM`^SYaG^!Iki7m(TsCHz4_tIr!<~62z-Ub$ z_)4eZ!RLKUM~yqmKYkBa6fTge9yzn%WAkCVU>RwR{mSg^%w;UM#DVv-VN51pO7}ga$>5s3qs;}z-3-A z++{N8JQBdJE-Bg}#BmO1orK<#a%f{-jbYlqn7T7{^u{!I+;!cBDCgTCe?kg0+*P5Q z&vcO9%q&>vqzCKfWx?uJH7t+`Be&ol#w*xnoP{=OzV zr{fVs-i-&9e@Dsu|MJW$uD#}5>H?_fBTr=?@8vkM_vsh4r_|(10NLyPog6a`w44~T z=fF7fI2_(dK1}dHAS4P)RvBTVlsbOg{t~a3G{g00O876xg@)D3)3_9CnlkSbrtYpK z@%P*Dv7#MZ;yB~y=6%N1rUCSR7{TRTK6K;9AX?;Z&T5K&q0jvq@kNa~m2TNi^f!1h zw=YM7x|1G$g%jwrjlngSF2dTplOTPe1JBNRM_M*Wkc{kSB={rSS6~A=tS1Htc>$Aafxf<2UZg9Bnt?+-t6QGHy5h z(_PONqzX`cdXE0^wPt^CbBJ4FcR|p)121{mqIctQHYdV|T;=lLGes|6t|sW9Aa4%c#8nJ*iAh(c5&$eAm{&fSqD^WHEly%z-=c7G?|pL03i<|km= zs(}0^O0YZA5{5nhL1CmA)%>>?y}N~RrA#l05SAj-&zuK?bRnFixCL&80%os&NBr+S z1HD7;XfS6M)IM4WSGk>9VcCOBUFsT3w6}$JWmB?bnFDEWa3&oUqG00r6e6ngLG_I; z1Iaeb(O!LSzT5=M!i`|f!h`Tn_#4^&`Wqx&&LhJ`g`hWahFpl3#`RV9XguCbB+b2G zQHdNTX(W{}`U$DIXn?->th^IwN) zjk7^#hr8vxr9S9h`xPU?jbS$5Dm=YqDaxe3hLg^o)OG%HxI1kXu{ie;WaX!!P?|A~ z)k}wfscB@fnhFFO^nr4M8Sd|wXL8+l!Iq&&%*;5?T#~e4^0F$J-Lm!Mfmb74_Wck> zUwMol8x?4L;BM5fD&;&k^`PHv%&NC-XXVeCvy1-@vY)oQvK_w<-~tgP)KWYFsU=cu zoY!**<(PYsm4C@=!*?Xx`y0f~DKX?I zoyA>gw@6K!I6Zc$6vdC1(fF=+#xl#7 zl>u+}T>LKj4tEDj;6Bq=AiqNdytJ?2^Gz?I-XP69yQPR~=ntfe&Z@@!ZaCPeGy1*yiJ2sZL*0_44&Lw^0+hladx7|qNB!-t75 z)D(+P*MBFzr^MkugH`DN%^& z^e*w-okx6XyhzKK2!4MV|=ICWSB ztT!r=ITv1&-Q$yxrWxWM2Ni~kn}RBzHR@e%VxksKW1iim(39;8VjcxF@~#3ozSa=m zOctj{9G1Xgz5!C(ZAN$YRnrT*ds20cnJ%nigCQ1iPX`!tj>B<`*iu{R?Fw>f-Tw8!T z>6X}3>;anV!^wduqNKlj3RbN70o@zN&_(qN%n?e(+{wAPzcLn{{1c=6DYuB3o*L$? zo(t}$&!9%mEWANWskXo}>@15yzXD)qXHBM_hfA>Uw+VZQe+4~L6%HO;|D=AWB>tIE z1`1e<7WKg}=gKwC^Pvoe@{dt}3g>O9nn`;6vq;*_rKI@p5m+>Sj^WE2hlzdpWcgS; zRQXRvJFg$aZo+_wb1qNbq&}ESrEvB$4G`Fz$b|e)(V2$T^l(u;QK4wiBq>D+g}P_2 zeQu?aOd%me>7OJ-WJ(#EB}%19Whf$*AGx^GX|dZsb$N@##orLsTio{7POS5fMweCH#3gk%xH_-Byz97* z;;FmS*!8mvaXW9qG%g7h`etZ1tsQ@AO~9t=9^A)h9A{i!jnT&IP<zKBJBVoeH%l@3u5reya9#bhNx0WgN}6>jWgH6 z*t1*k=>1>eOMHsNFyBhUml$Dix(ZsmtFn<}9xYz3f)8-#S?6 z?v%)r^o?kO-cL;Pk(j~1HzR1%cpk8)mVetx-Kk*`zaa325V$;>F70l^+C^EIcxO3w zet$1)I=Bxn{JrqBPa;apW8jt78?SfB*ydz2Hu)w{S=2)c(rJUxK_7Xx+XY)&UCg^4 ziczO@#L@NJSZkcA=$>_wQ%4#=W9Thdsb`D*o0iJ$+_%eZ`kUJp9~dT|*G@w;ul*v{ zYA@#n#`*A_>LFJ#F5#WFo6%nCxVZhX2M^AZ{7ZprP|?1Ko{Dg)875b-}fKKLw$oGGQ zUTNQv_dEnMt^U%pug&n>sLIA~4207zc0%jAq3Bxw2RlRK@a~Kenu7<+azD;tlxMQG z}2ywG&-*^u;Tg@m!<(f^?7mq35GxsY|XOIn(HChhNgPUbT^SXedQmUqu<#n3%Vu-fS_ z5|{QB9exLLcZv{W&-UlfFE@+I0}t>3%^WcBA@EJog6Gx5^_X}5ot)O^) z5GGZ1!>OYURM^{>js6>rl&~L^DKS6JS#?I2jp3NqJq@RWPhnw}6NV;E!>4iUW%5o= zWTsFiltg~CnVWludd;6jFRc0^DY*dwqn6Nsssr>(ai4H3K^@mTtR#q_1orU5(A-_#G1CKx7T}xtT9eO}<@0w*D+}%BLYEaCcwyj5)|LLZ zzHWa2pOs#G>+?N+HhQg8+w+C*D0ovcZ(f~Vuwju&KQHUw#}<7Af>Oya4|zI>-+ zg;=!zJ8#%JTArBQ%hq*dzNl8WReat5DNi2Rhq_BVS?!M2qEle1ID1H_7;^79i{5pJ zQLhjN{)@-n%Nitn13qZz^LWk2P(P$ezIIQ9-Y1`t;qvV?{Be6!-Z6v1P08bEC+%|y z(mnUpDqg=`K`hc}zyOli+l}_@G&hqw9{%+?_p!3gN^ts}$eOzf_{WPFS~o`n$$cw?!8azM zHsCI;9aYZvJ=P-ZX$M{?@yvQmdjpNLQ((W;f+`zwG3-DF89tp(GuJ{Wt_Qy>96F zZa7qi#N*;Dk?V~#Fk;6ua*^iIg-Q*u$y|@tEe5bieT}d6CNv=A5n#PZ$gl~;zAwgz z=@^1Z!#ly>?Y9tlaXi)B4nm)mv&pr5g0TJb7oj3ForcZU!;|xUv0w5C%nMx4gEw^G zUNwVg&Xoos>5nPQR9|vRh%1GM+?Y7G3Y#>S5h zN$(X+a(^fYOp>oMA^tEtK`ZHCwquL8#P&Jw<`ujg<+gU z5e9E2L8f(^gZEWocJwUXWEa6D_v%U2wHnER8Mxp)9r?k=NXdxfcZ+4L?54uE9+a^{ z=wxwfk8G}rQpNi?BieFsBfY$TgVdHra=)`<#8o-R#ho6i6gAgD46X7C^-NV=y*J#f>MPys8##Xx{w9Z9?FV+k2ZFnhM z-I0M;CNA8jDx;Sl_aSq8Hx6Ar2!2cQgk{${W8cQ5uujRug!hVk`mGgSt@pvN2|Muc zeg!)H~xPE|K=ol_HSE`4Fbf2m!Uo6jR zKFT@!O0n$EM07f|3M!ILU9E6Vn6+ppWhfjH3myNHKh<6$uC@&4-xbg3Mb!=J-)x93 zb!OytB7;Y{?7}AS7nz>Hj!nv1Z4sij&vj1JlRQIGH|~!yJIL9wJ^zuc zatrhuaK$&5)M9Ee)Ls*bQYXRM*<+;M>;p8fvOR14^ApruXGz&l2bo*YJWg8b$cZx< z2D=tR?Zf~y$IZsx?B%#Rv6$}1w?p_pZ^-9thDZ2Wdf)B}eDC+g&GX&lqwXe&eWKRM zmmSZSTNZZ}Eeof~1K+EN;$jyb<3N_ zY_`XB>m4`{t`2?AVzOP~kB)_9RCW6h4Bu{MJ-4^m*XM)~UDpq`uRhT8p`ZmS^)U4> z;`x77g_GvqlsbL`PM%1|9=DDBtJab24K=vzdIV*By@29E3`t|wFekqRD|B*QyZr(F7Q~sj2v9Oa6{>t#DU2~qTd|6xtD~h zovWxxkly3pT&Rf_lKE0Yw3AiQC9fN@c~h!o`eUR{j7SZ3)Cw0&nhP*IA{^+|L?3cH z@t)`m>iuz(5LOZ=gnKQAT0#y5KR%CTE>dT2P%Nc3NR>RBWYn|M2p%^3CRVu5qUnPs z$%54M;FmL>M@u~pJ39}>z-|Bd*tLRhF^r{@*`~1(p8?Ls46O^ILPmw3+D&&Me=dyqvVsvT%oVhT(IOf$yNJ3 z;IoEXu@>WL_00qDEpw)&*1D9nOxkIlrE|Y49ptlA$B28!o#8&I;{*jIPy8A)1}Qbs zBv0ytsR748)7iEPC@83HV4t-W}Hm^ zMqVm<7&r|$lk@>fHZx!vx`+O2cMv^8^%1wg4bLArkf(Pcteu}zc7?%4uI%2%mp>m?j<%#ga+& zH1+jH`tnSlN3YyNN(H@9Z*mz$Ap$g)X~O!&UfG@V6Qu6367qZ11*#!~*`(8c=xGn) z?-uD|PQSlA%&?MUCWMPGm;Vy))qcRMd~5NKr;ljzC?8*@y7GvDpXtW#Pbk;F4cBIt zZuXhDrDsaz(FKB8b~T>%)S;k1D#*I-M0-c}<_}@*;PfT}vB{AbKKlvX+V}`jf6REb z^B4?O>}zw;Y$TN*l`syadwNIjOtZoQKnVLW&;Srv0k4DdBr=*_w zV4A8WF+8$1W4>;bOcp44Pr^Epv-)n~)_tZM56Weym2Tj%_GHYxJRT)8y%DfmnO5|E zhx?{|X^>8mFyZ47T6TO7bbfWgQ%y6DI;+QJuQX}kRTFeLA}6{PjxhUn#DO31;%7%; z`GW)@vZxm>1vpCC`Syr7sVut9y-()f;j z-Eeoz58+s_=i?b?LBf zJ|%6{<6jqE(_!s0xcNQiUbFqV+;stLd!3;vb{;%n=pL?XS5N0hsvs`pHhMa-Xqu77 z-cQ!yP?3}s89qj=PVCRe4Ac0-zxJZ%&M0wu%L{&bz*~%4pLK*!7x6u{%b|hTbM~3H>rT>l5 z<`{KIj zWj$SPz0ykR1nDJg9X*d7^e(YcSvjvx874pGm%<4=iO!Y}$DQ}v@v~>9G>1#fns>!? zEXJ0vq*!v-2SqgNqof}RziITmZX7XQ7f#M8_;XbWFWSDM$ErdsQhNuX$OZ1RyNH+F zpCM?hj)=yWT)8=0JahE`cI@pTF23z8*1q0~)A_Ef<#rg^Sj|;MR$Mi@3b;Udx;BQ^cfWigwq>-!uax5IzLd3v$gxBT#nvy=bkM zbH#FL7Ej!Ux`)2Po1^c^Wwji}DXOwd>V8NMzX<=r!DyNhfj(>PFnauMjNR)fu}U{n z|KuQSHXe>G#}g2vVaGLfN~|6D181I3fy0vr)HHI=;I2slNH$q7&G?cqYutm5N_qae|h3nOlagXZNAKM7{W%xaqh?Xd4uZpQDF!kkD29daVF% zAJ>yoWs&5u8$rJw_vJq|Q|XS@R$D7d(S$i-s zUl}tmcN7yYpW^>4Bg7p~rL0EmGVz+>Joz#$U2&%P1&fn6$sDgFh{9TX48HW9Zfm5{ zpHbOV=XwKY=gda!fp_R*vWquPtKyRb5>cff=Od#Ukn5)+`FH#A%<7>OKl`!JBIPd( z98@F^@Y6;eO{4Z#)xI z_L;zb>@4!nA4Qs9)*xon1lgcj9|c$a(a?*LGEWYDI50m&jJ)S6nja70XVcQT4fe0`wiz5M6K+I_=(%@4mgJ9xm#m(q#Gc2*{|dP9 zs0U83Q01AQrek(yDNj4D$d;EzATX&LdWB~2<%vTXkK$PC&q>*Vr8bOLkAwyNO1SIV zDmGZv#7*lOC@rIkx0Gv&>f%!pB(Ck*CQsP(cjJcgH+W*{!DfS``(C&6La(h`=yLm0 zP>wrF8e3MR#+JB8R82kGpYo0NBG4LY3B zr8^$!QWv5kAJI-hM(`rOrdo;DE37e1X8^r_w*i}VLb;LVlB2X^?aGRQ+dBiklrxbB ziK;xxRJtqw9Yk+;o#9uH61da#J$$)C7n(gm3*OCVQF3fL9(TFRGb}Z!-t z1;=pnwM@ycmdKkc`p9{cxjcD98yh~>M#8C?G~B|PdWI~CgX+A}c*A8BAu`gY^GmjUk^yS=#)3B&|C~x-khxOwJ z{C9Ibhm7kb_Uo@MemdTSFv|^`81_zxG)tg{_Z!J*|494_`cBW3X3D6fxGh6ge{|QSghG2w4(I zvy+@CuZ% zGjzk|LrS9JvCjPX@C1o{^`7RsKH#n|mT_XqIiA_QnoL}VqgVJx!E=U;`!134`ng_w z)U^Z`A{4|M3!ZSp#XD5l^8iKO)uC>qr(kb!1SLz|IZ4Z}Lfs=?IMmYu?Q zsJoQ@4Qzti{s!rpWWtHcW+dKyNX?6@3EBIxd&+xCJQ*eHzGps8l;)COZMhI7CLuuL zdu0sVhVJ_Psr5l`VqGmh$at~Vdvte0d%&~Xd$YOOo2G9A7qI2eSCM+3c zy%wQ$b120{*&=m|9fw_di^Q$NrQK>PJ~nRSN<#;lHFYRV$4MT)4}B52*$Q{6wDH2I z9G#y$MN0c$G|Kmnjos&kLQHxbJ#~FX>t06C5P1}0mkosFm3%Us{f=@KG!b1q3GZgF zMEUV>m<=1w_aFU6w$=!!Z2xUtpgfq?#J{sb-fbq2xb4Y>-}2$I=L0>NmV$3TH$iE!fuL+D=YGi=vhyo+1q-<)w%AHpRO^Mf zk-r{WlOB@07>~;>QG!MJS{V2li>s#$!{hm3SQA+w{M;&7_qjyE-}nw5orspJ=YJ48^u8;Oyx2+DQ~XWXkzylWxv7NyIm*J8N6C1+)fC1v@1fPIiPpC0 z@Q#=q>25L{Qzs3DUhHBd`)aW2fh?Za?g?FAR7Kepe`G;N9H}+Y4VF5KcvHn}wk=Pf zd4*r;R{P5k)yx6!{@4?*%f=U%a-+K~W`r!qi{xo=&G|$1K@VX#O2nMaoy7_1`?zdo z7TZ?b<{b@d5nTR=YLsHB>qj{f^sNQ^E{CXcx|^^mwuufub)<#T4iNLV7x#bJllN## zx9~TeDO2)pTq@C^akC3yXZOeEth*+%UbjQQ_!E*Y|CwG&uTcr5#1rSeAlr&y7`8gm z6#bX9Zfke;eJ#x%3r4fS)j;%|vRy3vE-hL`N%9w0%*A&VlBfLbZ+^VjgLTCQ8o9Gx zxHu*ii%*K;mhMuYq5K@}9WJ0;H(AI%6$syM^|Ujjgi3~gL0qmGe)Rr}E31cKZ2Bvf z>cil%YKxF|_ymQ86!YSr?YX$$Tz>ZVCS0t0VWUNRw#=Br=SSAF^A9Cn?K6N?x_{;A zT}?${^%JUlwU(OW&r#ri*7W_EDHX1ZL3xc2|Nf?f;BR5D%x%T#;%FM|dPeBmR!8BR zzSHgB)9Gs60i0VBC3JRkgnZ0?-1}fg@m&(=Z>AO64t1p}uQ&8%vp!ikFQbE&TdCN_ z61yi(L;I~iFuds~Z3x~b_yx2>e-|(4pI*)$FLGqz=eFR*%dY&222jK4WL&Ou$Ex1; z6z;0chq|3d?~jKm$u*VdS3ZN^{cS9~awjd-W@FMqn> z&*%wg4(dXkSCz`jUU3m1Zp_vaaPHz~DmCtAH=GjjjjBlTZ;u;?@t z#|=v$|J4fT4jb{(P!l(0x@fPy6`hVe!x<$LELq-wnimx)FAX8@XUo}co;K&2RG}hm z4AzwTagcbDF8=F?oKtHdU#bT0RguK2dZFg*d{TaQTgbbWi-P@iG-5{$qAcuj`RHTn zChvs%n<|7I{c=%n9LquPoMjgpXW?dt)9_*GdT!b92$d<{ zsprz~dO&aZ*v6k0(>9b^)<;ZW|yl?e-!Sr`mVP(&5aCoyEXZlz1=wmaXoAeIZQ?9YX zHf`Jq7Rf`-PV;Lorj_YcuCW9{H4>5ccT(hY-J;v|+V?NsXhpw)ad*n==&iT9SpA&E4R) z{ytY;eau5upJH7>C1son7t2SP$rseR%2SnHdG~oOao_EFZprlHtzT1MI5$>Mw;ap$ zL-NJjPnCIEOesAcQA_&meS{XBd|Z6d8{IGbp)PJ~&~Ji0;=?qxtD!BTkfdrip(J;le{#_S-gt6IW<)?XziYnzbGKq6hNrEfSlk&v;Rz z*bMcPHwZr@U1eNI0WE7ZNB+iG3Rqpk{+b)mcq$IhN~$3=>7!w4qm8bj9!1ZyrKQcER@@Gck0Pv+!V%H+8i) zX6yKPWT`%(fN^a!zV~vWw{v%#j~vcViVEPq*Bwb$8ZgV}InD3kh{zo+G%S6ua5y7` zE2jjY(rPrdZW+yIGVkKm$FaO(v_4hLF-M%`HMrPrAm0gBC^jdS1{KcYQF(bn;Dgx+ z)EQ4XUx=pLcY}@lZ`nJ&^y z8@vZE_^ZkXT8?9a@=Bb~afbP?|EPX?0zN#<;HYEKT(M#+>px2o4-{$Q_=l15($|u| zwPTw6%-`Yk_`yQKw=zi_d}}iA)98q;>ugY?nZTYU*XV*Y*B`gu!dX{`h&nHB(vsaD z>BFHD6!NniYgcySO_2jh!+kGY7T=(ALO8whSkI6C43NBEdi?m@4tRS6pvt`)U!D^{ zyXGGv_xXj~`FIDm9oUucCrg>RGpV%pVN=nS3VZ!xgs8YW+j!@ApN;89n{wPv++ zJDX|hwOZltIy0mX(ucgNQCL0eA4Sic#u1zY&vubWE{kAaiN$s5Kmof<=z}bmHo@)8 zeyTa@gKZ_Rg-h{M1e2;bVdP9(Du(29>rz5jl9;ugeX_ph)gpLAAEu$4Nn;v2ig!*c za(!VwyWU-kzGwEcvaY%OM8|RR3!^sh#0Fh)zr+Igm|?^k9kS8=)mp!meRo7?qsF3Q8;wt6GRh2+) zBCi`ygbt#_1qq47G1+%|8d}WrHcN~Jn=r(Gxqy77BXoV+Skn3R7tQgvvHL|w`fo&E z_^-31*`4bswIB+Xed8%-ygzO?caS&~akS@4A!W53gM0l*J~^h19{#!_+#jpWBR(I3 zM@JJbvy6ai!%k`rKTnan58}}j8@3v@kn}B9VxMGk;)}#sm%tPm+3XHqdg*JgTz2D&=Z(Xk7a+L=^p&EgJP7*7ohe zHfGiI=h8wU-uoc>NdEZf1Z`Ly-;4L1jd-D-A$J(*#Ws~EIbJJ9V)Rd=7SFM~;rb=i zo9D<*C!MC4sv3GTcN=+H&PL~bQ>8Ae1Mr`x(EL8z z$84ctvogrYcYt`LPlBATRdauXXt70SISuQ65mk4Upm?$$scCTVXrd$2p3s1Y1*kB2i}YXH5F0%na{?rdg7%W0?M@VK+(Tof ze6Ogs5jq_gvrlObNB7){YdvDAq5XCIbV#F0-*V_*8AA6eliB8hAhGe2q#1D~eKzYP zb5^^6dwT7Vz4R!S{kudp^VD&5|6Z7%)x&=|TjKgFC!3oe?8pIOEF1FlhO)4z~yls&vR|S+AaO?V0{!W&e!0?KY_eW+Z2_B zN*FVJ4Mp5mM7LFsaQQ|zm}YOL*6CsB)A~nH4GyQL3yt~7=?N%VGYaBr>30?=BJ9#n zvawdjl>IBPY4>@dy3AWP*4xsWf(uZbQ6Oyok_)HYg}_@oatpeQrWf0V#jB+K z^Zp7buI><)$sU$cah&*d$t5 zQ$b2s6fkGRD~jCVMR(06qyBiR@L@=c(CgSi`1Mmn$gt;}IY>?+omrgHz^4m?pDEgp5AgUTb_(E8&ToU#X?dZ!{BZ0hmW zwnmtd*GZ`SBl#1(6>%zm7%cWUaSxS9UZA0hlTYGdx&8zO)vdsU^~uOTDe*KXCEL6! ziiOARO60YaLT6hszDo=O5Ny8`;k+Dt=je^kg)(WbbqyUrNn<&jA46kpLVggdwvh)HaN+w1gqP%nHr zZYeI3x`PiIThL00IW@y81sfLnK&k(1JPFLj%D%4LP$n^r+8>7U&o}7d{+ilWT*5}l zL)9xTh}vCCz}k6*!qcv^@UmhG+NY}HmrZvbyKXFeYLW!UJBJW6`8q`mP{K;L3#6}k zTJTEmis6T?dEAZ;QvcIBM3(yV-TR6BQ}ZomEAF8Y3a0emc4h9r=OgyjDv?X#dR+O{ zndZ-s?ki`@XubMw`W5$_>ZQ!a9;I(Iu*5;)Sc*JOtB%HoCsSl@6TW&rB<;DtUTa%C z8@(DOKI$~JohA+b5shNIR=nyPBcyjeKtmn9P&)R8@L`n1;s^~O&zM^@xMd<0d`P3W z=e|(sthrR#7KZH#+R$rzL_xdb5#>KXxbkKPrY@Iy9E0vr@?%59n7Ips)jRNpEpg}> ze+vFyVK7`(EP3Htaeitb8|Z;9~FV?OJ)6eDhplc^`x2p<)! zFs9^%>_s~@A>VH)G|*fwg}#c#e7_{5S5$s*Bq4?)|Go?iq(4F-iPt$q2czX-Q}*w zy!pSVSrph;M{r1$^Y4ORaJbPMhW|#e-|ic{{;>s@hnMlPh=KU{E0(WaIZt(e%a-l`@YL|AK7yTn8tG7EF`UYKbJ>qO z!Zt@em`iy`|G)S6epr@hw6usD^rV|^ZL+A-KABWaUSofJC|fuhBISY>cAf9cdG^O; zZQu3jMcP>K>J{kyejt68G@yc<85~rog`R(B!7XDwc8^l!?kLl0dx-Vmb2t z0z4VDm#pLuX~~I>!j?1LgeBXoFkDSZ?40=!gFk=6#uw@w*C&_O`1+uw?*uHHJYRHZ zuf*~{THLn0llXqeaqQkB{rozIwjOEYCG~-v@@t^PNm&8g10FooF#)y5C&GSNNBp?o znP0hTFn3H49;b_FdZ>@P{z>4(NMUsPCRi-rOg=sv@Z;cZQaO4?rf6F&RQ;DJdpi+S z?mn4Y*XywVTgj&}>?Cuw4Od(2!l(_|G-B2jdfG1wIVDf1s3DL9pAVRFVxCer z4RkL1BF*zxdZO|LM=r}qYEm3R~yuYF1XLo2qrbVc#YpX7fbgI2#>g0C&R z$w#fX?DVUB@bNFi#*9qb@<~o1r+1^B(Q{eBxMT#s*hc$eW62=Cfeb=7(51BhXQSGL z0edarF(Lw|PgRn~qn(tetB>_V18{%&2|Vf77dgjH(yRb;(iyJ8i&C8VQTiA(T)YX_ zd0{XgPzuF^WB6=ZCWVad!2WMsxL>vjJoaS5=hF~QK^;bHBu#VLn`K!CEdG<#U&$ib{1E)OXM|QTfqpQN3X=X^dP1^_70|oR!H~7(YbV z-``R2>(ZHvOEa)9>Xi_8`ZZtZBZ`evg0QRhA)h*)Nx5%K88aI&yk`Pz*4t5JMp0J2JIAB)^4 zCOGEtfed#~mNf5js61Z@-!O?CJaR8*-&iLmG>+k#@DeB=A1F@gkuDZa881$MuOoLa zJ0<@3EI{Lz8uqsaL#1aauYal`cX2TngEaE_(8)BaQ*on$Zr`a`Yc;Enm;wLkd;ib< zA?0a(DZ0M9Fn*>swz&M{cW3`l=$I^YSH6vbHtP}5{Sorl+ae$CVn}xt?h=>CzCImA zrz@?JH`bjq7buf*X^?2x_Z+L&b>lb9E;MEAY)<*PMIm4BVVVQ0n~=v7_L_ld4ij&a*E}`kB{m2;XLR8ADF>s1V`xF& zc2Edt#F_FQQf^5TclS2ZSe<&x3D`xi&a3jP2|Kvw#RqsN?~Fu`K?vw<4WkZwu%%Vv zVPy>D^ndwWf_qd}9R>3p9_(olgAXf4VdJ-R&`LLx_Wl@(*i|cB_5Nxj3st8TYnREA zen|T687=y#;7JZ|U3hH2O1Q-o3y(~9(ih32dvK5`cU`E5HHDAydru78zt7_Xs3U_( z8S>t@cZtsP9+2KA7x|H~HT-$e7Id6#ih^yE<>Su=(bDbq*W$-$3W`v zJ)k58xXSpQ`$kGUqs}_jFKDgg1v1~}16JHdshyV~wN4w)-n>Lk@P86pekhN$JtH*d zujBBUB0a9UE+`-BEo*FVA(Tj(%*ide6szilyXt3U)w4>;Qay`uPOPV8t9(#XVJu~O zq|D5a!8j3`&2v?fM4z9&>@;bhq|3_0edn~r)%`k)TCct3gRXBCjbe+)Sa}%+#%aUA zAsWxy28ey0^$^q7CG+b!(}d}IYe>nZ8&0QB=LN+fh#IwBIMgYDp6vXO=2avKmLq3F z-)sRl>7FP5?8lUr4XHy`x;2fhf&S8kFtgPb=kE{0s;V#!oMp&rr;XT9;_-KhHKdXh z7S}|)#lZz&+tyP z>0=wGbzi^@7K+f>S%Ru5rnsjy3c`tge9uzKJ+2rA_vB>GJg&qxGd|&)vWHN|8!%|2 z0S7#bp?meI!tSwpD86b+AC|om8V_x!CHsfLqu)k2C8@%E?NG|~kXYYM(ZcIUYaWug zh~^%yl&$IKO@(SBsMKXW>^|+q)D1_3=7)2TGv%Y;b1|A)ehHIJ%8mEBnYtH9tx| z)C~S{NaVGuU&vsO1`H2Nj6R(vv^9RivcMwJP~9tJ1s$PS-TktkPR|6z?^kduP@lWZ zipR_)mgLaM1GCn5f_my}Vbc?RWHgpw-j=Sc@S&9E_CG@huH3?=;uyZ2>5Do0eoOx9 zaIXKFjW6e42k9d2xs8QbrN#m#oGsoqaniZK%FcP2I*p3Jr9syfQfOtFeIwsl8ZKAaIZrISx`$G2(-8C7n<7_F!QgeX zgc(ND#rm&1_)A3}`WIIyoY|#<|9-gfwdPPr6h4Yh*hud!b*bvnO41yz1f>Ty5^KHz zcLFci{GPCe<}J*FL9;VDOE)H^_Z`Gun;iLmO+M>?Zx6-yf7q$+AWW+&Wpc^;KHT0= zRJY%Shnds3{`D4&4j3=YNcu)8=?3_*I)H}!ts#qV?7AwFy4*B`63Rjt7C~$<1vI^$JvG8$O3w)khFKDHbiJk=$ywM)Wz_ zlZ$s;rt11H7`7n=`1BJdy8Zb=Y8H$peZr(?8+cT=Qam!L#iI?EDQA^6UL+D*XdV^D zt}Yb(EWD^}{$W}F#~bMA91Lo+5`scjZR4i$r7;d=>vtUcI6)rveD^-w!*8})ztTL{ZY6r8(DEThVOSd+XH+E2a;6;s3M z{R{gWZ?98dR>ej)PDaUsBA8{RL+4=TnP|31e8STYc90KlZ;T;F z9*Qx4{Ke_sOW~zmBixLy6@BMi#-{t(u!}keQw>)!wPGRJNsL3)g*iNHm5$U!ry)8Q zpGNS)JSrJei2Dm922NHFd_H#s3J+(%yxxaijQb#Q%Cm)t?YGEh=yB+tyo;J6akSvg zTw1w6%Ip-4#kb=%!raw^F?~!i&Od3zfMf^@e-DMN>wG8#o#d3)C1@F>jkiDdNbID2 zY}wZw=EZmMXr(Jg)F)8V!y5R%j1ZJ04$$D-JocEio?22&In*^=aJqa1bH{f_%G-4O zsq&?dRr9&~&Lm{^aun=NnbX_ZVX}i?&eKAr{lazE=R)Y)O-M36h3C=B;B`sj81%?s zv-zrG$)zCH$a=@Yty=t5^#hlOSxLDNmgm(Qi6etYlJ}gcFp=_%ZDsAb+f*&yFh&qN zRQKa4Z`WaKiM?R6ejrlA?D*+ADaSr+59;n;rN^Chsc?@Y9d4c|*t}Gv=$LqPS*Z-8 zrf*a`Q0f!fb&IARi>DhGvpHLHBmbRO$usWGVV_|T3l>S<2ZbLrVdP?V%kdYDs;tm; zN+mCGDj>gay~whQz4ZL?bYig+R{5DxsO>Lnm)kE;o8Bbcd|ryAulo=>SIYIq&Vx#Y zK7aamgNmza&`&5vUi|?|N-m?92Yv`j{^8ia&?!?im!ZWo56$1BXo|T$uX?e78=W%vSnCDk{2kAMKI`B)^)1_8 z+K=yAQU~!?DI@>6HwNzLhiS(9WW9HlAUAnAADuWtrr`yZx}l}0m{Njfel4O0$!D-K`6&MA3Sxiu?PmAX>)@qxHF9O?l{&U0X;E818ZLAEC+ca+6RlnM2o{87qN7PEOq6xS+!}Qp@WLLyy^Vsx zjZ1Ke#18On>g0Ux-*9oUGN>oC!CB7*SmM$RjhD5^m-7;JPeg-wnXC(%`2H;pG&@Xh{Z3=E(|kT(osT2@b8uegXso?;9Rmirz&LmaXLC4J@R3hK&b zgRj^-tT}R6SSmA)6gFp2_PQwiY%qj!Rkl-@ohrFRrLhp}I_%;1m471bNb7kU$n6+~ zcjIbABc5cy-yv?e^xt-9ubl$-FVU%J_y#ZCbwx{KD?GLG2`f*3%PiVofsj*&cQXp`5B|iY zqk~|it{*l%41+%d{b=J62O-;GtWX~mDD2+7f;pBP##;p=DZ(y-a-KcFmb5`^-1#gB z6qS;jazO9Qe8XZ(K2V;XmJ8h9`S))uoK1a=wnOPOPIU+16wvz zgWdh7fu&BecxL@GaN2wo%MUu^f@{GdW7CObr=m_O$=ZTDDU#0QW?IOdUO#3%M2&1O zl-!^zSPya)&dq2O-H$`sdG-&=4pzhEUMBQ%@g7w2xr~k1o{Clm8;MT;`HNyR_MmRB zJsH2ZfS+O==%YWFiV{oVcZw8in!F2t{oI1pY1`3xT{RRoyn>18OX=6~7`#3_5x<5m zCWqbm_#?`TcVCwKbg-Zoi}QMKgqrMaM+rKDpDxPv_}nUKmC$Fu|B5?HJgT zfGw|z;B0{eMM^zJD^q7kNLGf+?QW=h>kw9r3V@&*aq!^XW}mkm(AS`cn?9>i`Sm{# z+u;XtBRQMl@O0~{??Z6$)B#xXEe=q)aup{6S zG!!db3sGm*CD1HzX8FnCqWK#9&g!8bz4M3%)kz_6V@?dum$hQ)7lfjDQ}D(Eeg@Kg zLfKRHk$*xC_8yYOKZnDxb($tR-BG2F9%>kK@Bw^_2|-a3&#vh0LYZ5oF#3QyWL|P2 z=@;AaWtkZ3Y`4d`^%CrGcpOGLjKbBtJ9Pb(Hf39yi`*oy!;-hR@s{sp_;$$-K|>C& zEq#vvDSFU~pwX0mYAt8=mD1gUY!*-!DEvA)g=~vMM0Z9l#q*Cp(BfMyxb1m54DT60 z)xEkx+S5m1G%A#4C`QqJ+fmfioq=b~HEI3rHukya8+Z4{;FqfJ`1$V===tS>XRijr zrhw7RGjS#(Sb5K?ohNs7l!sqDA-Qk(+(!kS{QL7|OZ#zggG&eBA zlcR;}+L7>Kd?no*bDZnW-ZPDZ5BZ#T3=JNC7O#|xq4FI)t815wp>03s_f`0UcBwsG zKV1YXEQZpwSNx2Z&<&NTQYe$K6N=MP(P)qaI4%|e<{srN&{8a15siyxHRGa9?pPSM z8k{{&L(l$5)RcD+gy~NyMP<0~$wv!b-1&lb)7J?@c8{W%hemkz>~Yq}-#vD0I;!Q> z?yZ9S4I>I4|L7UNI)l_UR@PXVybrdE?!>@OLAyq>iC;X?(p7wjA zYvDF*JoJJs?%fXt(-ts|m;1qO@fy;d5ktQJcXHg(7oN>A6+E6r<8)OEvY90Y^IA_) z!1EVmI;=+&eCRY{?qu#JN&&|uZ*ltaV(jx-h)uC0naA`8qOh-=ZNamO=Zx)9?$Z)- zNeUy2AO-pwR0)l<2gA*lSCBs50T)k~r1+DQG3DrGc#Aj4{QD}Z`?McN9FoKB+1d27 z-a#<)_ZNmNj-%t-FVi?feVp*nL`ZJ_21fk;Bse1nUnsxA9e+dd;rV@}aO4+GvKfZw zRFm;$R6N?0Dq!v4c32cTfwLZ$pz(1psGu>-Ebk>;T6Gih^t)h3`y`UCGk}FVUV@B8 z4eBfifQ=_7qI<p*3jD*a8fLdl#&g5z*Q9A(;1@XEsJm5`4CH z)6+HuoYYlEvN<|bH+wX;AH0fFL(_P_y$jcR7x65_Nz^Ksgh~^VaqLgdO)>UlZ)G%a z!I{tK+wMUS3PNPxyJs0#C{;h7*=8>_mAt zyZ*0;BKA(CswFA3CUP@|@L7w-JOdl$syQ_4fqJ!oCH+hD`ivP0k%dCH(bo2$Zg)P8HBX`lVM}{aL7KIJ}jNnS&3|u7Pf>E3J z>_7i7?AvApsZAC*GV@sR;qNuB+0mLPyQoODSJ=vWM zz8&_s`rd0e*trnrxTS-pvKlI8eu2l1zTnpLk9}~;#vT7{#zS}(UXDLb)AueSA@Uib z=?*ygE*cN&NJHKlV+;wFrLj{7qeKS(y|dRz^r4BuL*B!@T}q_7d7z+BwMXc_6h<0H z`=F#xMsS#yO<8Og$vi~R45b2aJ5`i7%jr9F{ZfPrbE=b(u9ren~0Ck zjT^JBsS003U*?_f-5Aj^4(0Ff!lRYB@JHepb-dn%-gEZBcAg*aFIx}hn!h0D)NVM( z@3pqy5r^+qUr_D27dUxnka#UWr%ZFgpFPqveZe?ByZQjG1K;3eJ$ZaPl;25sU12TL zmC!rop(v{-kR<(ODN=eW`2{S(&tD=TWk(J6dfL)N>p0Zo->U|{pX|2h_@6W5aQwTS zDAMo5<98Q9>Zf!;;i^8(tND(qHR_b5R*bQKmU7YVFoGw=pj4ChEN*GM%jLz$M&}R)^cR1XDJ8LE4B-R1_*F)aeL9y~A9rF-^n` zoY7R)It>#H+~`2h3+(p2kL9Z}sJ?Lq7A-wG=DlbhDdauDuk$a%c-<F}f8c=`<36J69<||BUZXU)QZ$|0nK9*j4 z3aqB@!|}CxxXYy%Hj0U{!?oj4kMHbPm1$w+jg=^M&luM^Nx~3gOZ+>*0w15Q7qsldA>3CrFs_rL=fA;v&0=__=uK`)gJC$^g^M>zT4!M?%igF6k^FsK zEt(5sr*>hWpLrm|hx&eFw(Ewe8M$kcw=HM+{^!`M zo6*A6qFi{%pX0Ztwv<5IiP^Z(=IDxy-vq!In zeJtvm3*J~UfCB1IGBsrZ&GyZJpL-lI{GKXC%u7d=l+jEz-Ixrso8=cIUUU=>p2;J-xu5Xkn8)zmI|HQt)ZwAsci=^)9VVn# zLSU0WE(n(A_fxUBz;DpryQY)E>ucU@zM5`DjFbN`+b0|@yj#DR_;YY{Q2vg@`aG*5K3X(&$l4M*j z;=RPI4rXo^1OY$8aQDw_tP6Ms$q~_T*~bj)Z;WGCzId_bP!k+AMjtzm>%xHfNAXkk z@G-gnEy21?_TXO`0;%JzVC%FZ_Eqc%d-*(v^LqL)_r*$*OmBzbbIjrE)q8ZbU^ni* zIgBDLm9S%R4n?;-puFMFFxA`@wK2Gd<< z;i&#J_I%$R-fxc~;C65=;zH zc+x74LNrM_eukjYI~LE(W+LaA(&T=E&#<>xko9UUTKUzDUT0h)+qU6C$JuyVU2}viZrR&d z%X3%gM_tMf%R%V`TfBc>NeHtYfi*YE=zh*T;hNtLX!zJID)=%PEQByDefSKPoVkMv ze2!$0sKuTR8iNzxoCW*z5jb?tSJ5)nQGD+zhPP#!FyT!TT(ru=O)k72<2)2@tnH#B zw$I_jdpQ=rjQ1&|cCx*7F?dNKpWZuFlC47o6joNlwR=&x#%cz7R43x96|$&xFct%) z!!h__0N$=&ikI5nGl^(1Tqhfj7uhXXs27d-FO=w&&o+>d?!(&moI}>~8P4#q+Q6OG z^dr%q=6xH7ZQt+G;%&ch;!{4;RrJLo?i9LGkwh952ZRkTxa(N_C3Q)OGvg;NY>lV~ zZ}9!C`J6e-Z>b9o%vne-S*3X7{zkqJisTvAIQ+2p3~V}m6?Td{;%kXju&u`*k1YNM zk+b%Ix&BU6{G&jde#?r~M(+>>d9K7_o^jCd8;VJ)y&zr{3TCj6joPn>2`^G0qY%Fp?Y7nMYy5n)c6@AlA#ica(mO9nGM zM?22$r@ote_;>Ui&8NHo-L^nHD)Sh8&fBBSWpO6GvAN%GcI9RWn9I31rMACg%7s{%80wJ~GpOV*pECG2Y7LruRg(Ik`K zq&+fQaCq-R-z7ygxtr3d(-N;_A78suO6`%K7W4h~HYD@eAvm*2` z&@~nrD5BF~F+Nw8z}-H*(9wQ^pM`Cypi7MOvyXUrn|Hnd@eeC~?;+Ht?kft=&{CSS4hW=^w=8 zhD=(;^U-dl8|Z~qfGF+aWD+Ih(lG18a4>BGyB+QVFMfn!PIosr%Nme3-CLi@I%V(QXibx0cDE>YWAb;%Gg{ zsI$VxnVyt4<2Y!`d&2JJ&Y062kKd8+ZFbr*#TT5jaQrYEa^e{D`4{1|oEWxcc_&`I z^$&YqDWj5-Hk_Ze2^U}3hnE$&Z_U93#*L7I-46`F=kzqzQoali`TgYGU>%W*S39VG z(T26hC&Ayn?V`%9ouE2C4i_0dgQ~6P@kVAW8f}&)t+pAY@lqPISA2z!>kre73zpPz zD;bRrTauV{9DC^W0>&5Z5k;){4X`W-6e^`@{PH{$()fL0j4OKiXyTVaFX5Pi20S01 zgd=rUi0=AFvtd2sF?|1QC>bt6g1!>&FrO`#z0~H4{@XDeo_^E^o-4;a7dONCMK@{h(RPZ}%cs(=Fky#Glu#TJ zL#nAWXtJL>-7S(6M$X?V46!i6rfHnlY}Ez*qdjSB{60*Gi6R%1{n&6eA7{Cpfb!y5 zpjs~mP65eaO$M-B`v&4fWs)CmOk<5VPN}GsipUFF=XSEl7UP z`(8Kq(xF}j((g(K<`N345;E|1TnDzka>orPQ^DheH^%DC#m;gcWBrMZnmxysMm((()E7U-pm%bDSzRnU z_09p7W*6Y~xASRt_#YY_r3=aKDWa(>yuiF_3HqPSg*84Vq{|{aHvDj1p59jk7X#T5hRHN8L#bKh|BkoNA0>`iKSHqdj3Rk|I1fEl0kC`CRC;Y@!5wwWIIH(98NVrp zl{1df_)JIgzi1%nCRAeAzjhp<`I$2F=ioQKW~MlV(O(HuJW?1BPA)Rwzvc;SmE+!T zrxq}La*CNo1w+3<6WW)!V`K0hws?^q$?9}N&tQG58lTSj#}%-|tpojgaxu{BI39d# z22G|t z>Z@YV+_#?@j@pSDYQ>_YjA*paz&=_Ip6^qul6S0V|ysz%WgXM z#ZktcCi=RWR`Fof9Jj#f3+sr6+{S|z9_JlK|F#KBvb1o^FfG!} zv>~H7bz$bN`;ez7C7N0_5~Ko?anA90;K@8H7+5IMYS71vBj)3!^cJ+XPKK5@#`wOE zyNU)HqqWaXxXZmmA7=-Umb4kkSvgYO>8&JveUxCKxrgH4T|zPKNE#Z?yJY?|gr=G9 zLdudSqKzukpv!3x7)qXmt!7sEy2Xrr5aaU=Q7q4k=EC|eL$d!-fHAF0nCSdLkl9rZ zug{1;%6lNHiC2r1-h1F%6;o1PZ;p49_CZKlFIK9Ipn+>wp{v(@nv{GSCU{lT?e2Qg ztgNT=55{1J>?hW7E1QhA+QGUb7WmS>iuyAb;)@y|?)9k>l`QIH7na5I{me+rvfTy6 z+AdIVB@bIypTRyA3pQ(wEqUM-s9;}FdhH~=W-${S6)r zO+$-NvCRS>YCL0qW}n7u3jFUCx(QPxW8trf8l;zwrzI(6wA#pCD0fRnmtF}xsS^j| zY&qxS^hJpC8%_;K9)il)3FD_HSGwxO@LYTsN6?YWI-7(zvy>#*ytxL9yuOaPz4bX1v&R?$=Wv*fGNJnYV`1ZIX{wXjBHVnklkR!%p;?uWF{dJrbE-N}z5hIlDJcsz zrY(5=T^q~aCBaUQRHV<1`#@Ft3TA>jdfNL#;s^8$r~0G(R6AxdrW$l*H$#2u z0jSWn#}6v0G;RGS?f}ci?~}Gt^`vpasL|hX*TEZb=g47tab-BZ5HBTDgNeds8Bg%u zr+_EI3Si#HRyefb3$k>C*SFXI=;=qU4asGZX@@N{F%e1F^Ah%c!lM0XHH!FVkG)EcN zsD$#p%LB;0%JWsVvCNCReto9h!qQ1RyK%LceGIq8u@U-c_RTtTjbP58g~c8J@Q&p^QJ`%Jlb&&(`59Wm%5$}Bjfnwd*CQ0}`j0yY)8X0j25fYh zDcbMx3@g=DG2Yl6Hr{K6Sj8A0tKp3K;NShitxD;cR|ZT78VO z3tBb`{@hK!_{CuiC&$^D^9e0PQ*iy> zyEt*taJal>Ag&3!gQFh2#IDv#TyeMz1FyE?xj#Mdw01PsxF_O_FI{XW_m_>)pNT!m zJF#fxXB<&=06#_>kgE4>^zL1YpK{CTo9Rw)ADd5A%S;62yc^(=S%nGy^Kt$|1MGT| zhb>GB*Lz!#*RX9Ezdrz-E!Ls)=oT3CFCPD@h2q$U8kF3670Nc8#QU>`L5}uKc+s~5 zUr2m~!LjSGiA*Ss|-Ej5_fxOpv94YyPZMdif0U2H}BT$dBam*bvab6u5=XjJLAZq+ySniNY?`}}t^ z5JQ=7^Wj!`89U-}Qsn;QmS|kef4EC!J)S!w3k8iDuu|_SjJY0)Gqp^uerjC8K<|?{ zY1;#)EN8&V&8DFf@Aye;axWlWhmVhEaR2!~7z(n)$0)*Puc6e)`>wHyKheJ69BE%$ zMWu1_SiRI7clDK_W9czsuEj{0LG4QNxH5g1aBxureKJv_v4=;%hac&v5xNjp>CeXp zWI$h1Tk%M99an~YV9kbM(0D=z&D2Jd^u%7YKYttk-kJ&-25oR^(HD{Z-C(rrSc)T)pM(41 zt1wPw4mM?~q19y0D5zY)b0&OE`Y{?{ss?)7zQTYr(Ks@608U?^K&4Oq(f5`5LY~}H zs`L*;yC+-mr+p#YIek64+SP!Lrxo^=T2j#RF%-2rpGK;#;trZfERas2OB*Xi8$K4n z*SK_CzjiDv{HKE95sA!uk0u=%%N#ERJ5A&6<5aK+94BB`@<~=jF+c$Lt}ioxdTqYAd(nuNH>1_ z;EB)SY{^}Hyl|_Pgg-IQ{)$9Ctd1qC2(0?^z~3pXdR9PFYdVf~6<} zDU|YpXIal@Vf`}+Sh+0+KOWVi`%&!}qk11ZZ*ND{)k9&M|8FdHZUu%%M6WkC!Ot27 zmg)*{XKo=|bo>WaZ`p=D2b|coE4&NBd5I^EZfExge1^x367>C_0yS^j1iI#vF@w)n zw*`H|o~lN;#T^`}ozl4Oi5%6RIEU@?=LrX7WohLqecbuI6T4E?1Yz$}I`Y+uZf%K# z^{65|;l3ild?a<8F{ZAsvDov^oCXw^(vK>2@}D~g#EPv@ad13-v>uKl^G~37qCC}{ zh=kH)ckBur&OKpqqghrfZDz?KSXrBJV^W)&rd^5@?OlG4WdRBQ=C|N z9;QA`gonkW(0{2m#jg;jlasD7hX?OL1xI4I$zX_W-h#i(vQaC|1h(Hj3GsK5u=VsI zaNf8WO}|K@3jbf;`nDCmeHKS~NoDl2$iy3$nxR6&npztFqFszC-Z-I4oR@_KW6FeuNeD{yGKuY2MhYrNtDh z7h#@m7G!-a$9Az3@bIZBOmJF+QHB<%{OS}7{5}BwWDcfF@wRZg{2}ITFQ)}=`|zuc zqfn)Bm>%p;6ou;bWARKLt|?ssmpJ$6cG*pIP&tkJ?U6nV+0QN*AHcOIUc=}iBk*3z ze|W!aE>s2>QeyREnEWOjyX`i>jqkVN!z3}9ZgUsd)u(W%U;$Yi`iKj7eqh9?T$*t6 zHaJ}QOijBx$t28|&%ig+DJjnkmP3$Y{L74?TWLR(?I=(v+TiZ&M7&;TO^S|t(b)VJRa}1$y_;2G zrdI(p+J|x%%0Ya;)q$3czK6Pr)9AqqN6h^zqTnyi@czF$EW*mrNJJehK}rS8*ng zjLfdk5hbuc??ET!{&NGf3-iG1&R@4*mMU z=sacuXE$5Iu%v0TVWeaF(q(%j^CDkrq;5`&buC zdJn?lCq|e*ECJv6?V)6;_i$qHAW~}{j_xmxqDH?o+O6LXOSWgCkL5bFKRFg>SdJub z-*I$;&sG(LX7>C=G*;FuhYyAYY?xjkIxMS3+mU)~x6?R0bm1d-QyMdz?SE70BN6@(O7Vtd~+bnOmj`?70T*uoaDjm&0Y z+j6m?^gOdNxCe`JUV-}8>#*=uAhyWPp}{3uq~}@%Nr5TQd`z8pig)18{Rv>1`T+_z z91`XJ5`!MIDt0T~luoEwv1KMl;XCs}k39!b^}H9pa`;1*Q#gn17=x3mKfxH>h@av( zlO?qmZ%4$U`Hh)mo-vqiv`Esj<$ECMvoq?%HQ~q?v)O>I9Zc!sKQ?}KCil-M!WH=) zyaRI@F4dXiL8Gx4QFsCMO%6hGh%5Xs7=<+h7t+!LAE2?dm06sTCGporur6*P);*9V zl`AB;@0=l68gD|m2nLQ;n_!SeI?3ln(zIEJNTT4OQ0A&*lNwaSXP6@4#-~gg-&RZR zx5oKgj&{h)y&gW!wJl!EXZxivDgN3IVSrAWeE2yLPD$`o@M~ z%%|OW`-2Phq)bB7-Cdyk%$s4KGX`#QfZ+SKIM%5K88Uo^o10)^8#u7+z!_a9>D!_7tWuQfF<*W z3y;&cpzM(wSRQsBjZRd8%y$=f6lqS6-16ZofA(mW7kEF<0P`#*vO3-c_l#_yKqC#4 zrT3w``Fre2GQkrm=5&Wvkh}2-I@%LS8g}7qy>mF-{Lg|a%;hPmy#>BkZXk!=7JM;A z6UF-Z49xx>E>=+lldL{$-0=p!bDqr8jLT@YeHRY>R>eMpUQ^tG1 zO%?2SWDZU)=DkJj^-%SP&qtq&!+=~jJRTq^eAVEe@sNYn%TnOu#0=cJX9ixKSO-@P z$7A~Z1^D$r6F$x21FjBlm}i!Zi^pxi$B#!tTEG)giGLnsRBGUNO$C(YeWR~o-LNuk z5M*nsW6l0ll-Z$(qp!z-$}bz#lv5z-bzi|Op0hU_X5(@5E7p5Q)!@OUcC@v&QgF%F z7ry?k!i^hE*zDwoq7d6avfJB^J7;bHlf~O@PCa`pu$fv3t}a2i_N)u$E&c=hqE)cb*nvhYm8bXd$I#>3 zFwkfojAv)az?~_NVbaMoOdF|#lO&enj_LQP{#b=wTO(-vi5IkCl^v|8Yl7>!;h;7}XD_rNyqJ(&90 z1l>Ojz^<#;*t?!8{5?bx&*Z40|H1osPcH|5ysUtLIRI|ST@bMLJZM)ogS6LLm@(oC zCIqbqcc0_vdvFU333a1;Tg#Y1;wPAp%GbYhZ^7{y;l-7e&}#bwW^WygQ_tukxee!> z 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 z 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

7b%kK* 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