From 80c5a5e5de2aca8d5c7b96f0adc91b5738cc9025 Mon Sep 17 00:00:00 2001 From: Daniil Kazantsev Date: Mon, 16 Apr 2018 13:38:40 +0100 Subject: SB TV method CPU/GPU added --- Wrappers/Python/ccpi/filters/regularisers.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'Wrappers/Python/ccpi') diff --git a/Wrappers/Python/ccpi/filters/regularisers.py b/Wrappers/Python/ccpi/filters/regularisers.py index 376cc9c..53623c0 100644 --- a/Wrappers/Python/ccpi/filters/regularisers.py +++ b/Wrappers/Python/ccpi/filters/regularisers.py @@ -42,6 +42,25 @@ def FGP_TV(inputData, regularisation_parameter,iterations, else: raise ValueError('Unknown device {0}. Expecting gpu or cpu'\ .format(device)) +def SB_TV(inputData, regularisation_parameter, iterations, + tolerance_param, methodTV, printM, device='cpu'): + if device == 'cpu': + return TV_SB_CPU(inputData, + regularisation_parameter, + iterations, + tolerance_param, + methodTV, + printM) + elif device == 'gpu': + return TV_SB_GPU(inputData, + regularisation_parameter, + iterations, + tolerance_param, + methodTV, + printM) + else: + raise ValueError('Unknown device {0}. Expecting gpu or cpu'\ + .format(device)) def FGP_dTV(inputData, refdata, regularisation_parameter, iterations, tolerance_param, eta_const, methodTV, nonneg, printM, device='cpu'): if device == 'cpu': -- cgit v1.2.3 From 57727584760e6b1a980071587e1f1e8910c7d6a3 Mon Sep 17 00:00:00 2001 From: algol Date: Mon, 16 Apr 2018 15:16:32 +0100 Subject: SB TV demos all work --- Core/CMakeLists.txt | 1 - Wrappers/Python/ccpi/filters/regularisers.py | 4 ++-- Wrappers/Python/src/cpu_regularisers.pyx | 6 +++--- 3 files changed, 5 insertions(+), 6 deletions(-) (limited to 'Wrappers/Python/ccpi') diff --git a/Core/CMakeLists.txt b/Core/CMakeLists.txt index 92194e3..fecdeb1 100644 --- a/Core/CMakeLists.txt +++ b/Core/CMakeLists.txt @@ -132,7 +132,6 @@ if (CUDA_FOUND) ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_GPU/TV_FGP_GPU_core.cu ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_GPU/TV_SB_GPU_core.cu ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_GPU/dTV_FGP_GPU_core.cu - ${CMAKE_CURRENT_SOURCE_DIR}/regularisers_GPU/utils_cu.h ) if (UNIX) message ("I'd install into ${CMAKE_INSTALL_PREFIX}/lib") diff --git a/Wrappers/Python/ccpi/filters/regularisers.py b/Wrappers/Python/ccpi/filters/regularisers.py index 53623c0..50c4374 100644 --- a/Wrappers/Python/ccpi/filters/regularisers.py +++ b/Wrappers/Python/ccpi/filters/regularisers.py @@ -2,8 +2,8 @@ script which assigns a proper device core function based on a flag ('cpu' or 'gpu') """ -from ccpi.filters.cpu_regularisers_cython import TV_ROF_CPU, TV_FGP_CPU, dTV_FGP_CPU -from ccpi.filters.gpu_regularisers import TV_ROF_GPU, TV_FGP_GPU, dTV_FGP_GPU +from ccpi.filters.cpu_regularisers_cython import TV_ROF_CPU, TV_FGP_CPU, TV_SB_CPU, dTV_FGP_CPU +from ccpi.filters.gpu_regularisers import TV_ROF_GPU, TV_FGP_GPU, TV_SB_GPU, dTV_FGP_GPU def ROF_TV(inputData, regularisation_parameter, iterations, time_marching_parameter,device='cpu'): diff --git a/Wrappers/Python/src/cpu_regularisers.pyx b/Wrappers/Python/src/cpu_regularisers.pyx index b8d2523..417670d 100644 --- a/Wrappers/Python/src/cpu_regularisers.pyx +++ b/Wrappers/Python/src/cpu_regularisers.pyx @@ -20,7 +20,7 @@ cimport numpy as np cdef extern float TV_ROF_CPU_main(float *Input, float *Output, float lambdaPar, int iterationsNumb, float tau, int dimX, int dimY, int dimZ); cdef extern float TV_FGP_CPU_main(float *Input, float *Output, float lambdaPar, int iterationsNumb, float epsil, int methodTV, int nonneg, int printM, int dimX, int dimY, int dimZ); -cdef extern float TV_SB_CPU_main(float *Input, float *Output, float lambdaPar, int iterationsNumb, float epsil, int methodTV, int printM, int dimX, int dimY, int dimZ); +cdef extern float SB_TV_CPU_main(float *Input, float *Output, float lambdaPar, int iterationsNumb, float epsil, int methodTV, int printM, int dimX, int dimY, int dimZ); cdef extern float dTV_FGP_CPU_main(float *Input, float *InputRef, float *Output, float lambdaPar, int iterationsNumb, float epsil, float eta, int methodTV, int nonneg, int printM, int dimX, int dimY, int dimZ); @@ -152,7 +152,7 @@ def TV_SB_2D(np.ndarray[np.float32_t, ndim=2, mode="c"] inputData, np.zeros([dims[0],dims[1]], dtype='float32') #/* Run SB-TV iterations for 2D data */ - TV_SB_CPU_main(&inputData[0,0], &outputData[0,0], regularisation_parameter, + SB_TV_CPU_main(&inputData[0,0], &outputData[0,0], regularisation_parameter, iterationsNumb, tolerance_param, methodTV, @@ -176,7 +176,7 @@ def TV_SB_3D(np.ndarray[np.float32_t, ndim=3, mode="c"] inputData, np.zeros([dims[0], dims[1], dims[2]], dtype='float32') #/* Run SB-TV iterations for 3D data */ - TV_SB_CPU_main(&inputData[0,0,0], &outputData[0,0,0], regularisation_parameter, + SB_TV_CPU_main(&inputData[0,0,0], &outputData[0,0,0], regularisation_parameter, iterationsNumb, tolerance_param, methodTV, -- cgit v1.2.3