diff --git a/SAFT_TOFI/CMakeLists.txt b/SAFT_TOFI/CMakeLists.txt index 9e18232..3a0050d 100644 --- a/SAFT_TOFI/CMakeLists.txt +++ b/SAFT_TOFI/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.8 FATAL_ERROR) project(SaftTofi) set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc) enable_language(CUDA) - +find_package (OpenMP REQUIRED) add_library(SaftTofi SHARED ./src/SAFT_TOFI.cpp ./src/saft.cu ./src/processAScans.cpp ./src/saft.cpp ) target_include_directories(SaftTofi PRIVATE ../SAFT ./src /usr/local/cuda/include ) set_target_properties(SaftTofi PROPERTIES CUDA_SEPARABLE_COMPILATION ON) @@ -14,6 +14,8 @@ target_compile_options(SaftTofi PRIVATE $<$: >) target_link_libraries(SaftTofi PRIVATE ${CUDA_RUNTIME_LIBRARY} ) +target_link_libraries(SaftTofi PRIVATE OpenMP::OpenMP_CXX ) + get_filename_component(_DIR "${CMAKE_CURRENT_LIST_DIR}" PATH) set(SAFT_HEADER ${CMAKE_CURRENT_LIST_DIR}/src/SAFT_TOFI.h ${_DIR}/SAFT/SAFTStructs.h) set_target_properties(SaftTofi PROPERTIES PUBLIC_HEADER "${SAFT_HEADER}") \ No newline at end of file diff --git a/SAFT_TOFI/src/SAFT_TOFI.cpp b/SAFT_TOFI/src/SAFT_TOFI.cpp index 54e8ce3..89cb344 100644 --- a/SAFT_TOFI/src/SAFT_TOFI.cpp +++ b/SAFT_TOFI/src/SAFT_TOFI.cpp @@ -4,7 +4,11 @@ #include #include -#include // For German printf output format: Float with , instead of . +#include + +#include + +// For German printf output format: Float with , instead of . #include #include @@ -535,8 +539,7 @@ void preintegrateAscans( printf( "==> preintegrateAscans - Start\n"); #endif - float* AscanBuffer; - AscanBuffer = (float*)malloc(aScanLength * sizeof(float)); // Zweiten AScan-Buffer erzeugen mit Länge eines AScans (z.B. 3000) + // Zweiten AScan-Buffer erzeugen mit Länge eines AScans (z.B. 3000) // //Debuging: Test: Alle Daten uebertragen von Input-Ascans auf AscansOut_ptr[0..aScanLength] ueber AscanBuffer @@ -653,13 +656,11 @@ void preintegrateAscans( #ifdef preAscanIntegrationVersion2Ernst - int i, i_start, i_end = 0; - float nSample = 0.0f; + float windowWidth = 0.0f; float windowWidthHalf = 0.0f; - float windowWidthHalf_minus1 = 0.0f; - float windowSum = 0.0f; + // maximale Schrittweite ueber einen Voxel = sqr(3)*2*IMAGE_RESOLUTION*fs/c // sqr(3)*2 = 3.464101615 // width = ( ceil( 1.7*(( resz / speedz)/ (timeintz/INTERP_RATIO)) )); % Breite berechnen @@ -684,9 +685,14 @@ void preintegrateAscans( //printf( " => windowWidth = %5i (Ganze Breite) \n",(int)ceil(windowWidth)); //printf( " => windowWidthHalf = %5.2f (Halbe Breite) \n",windowWidthHalf); - + #pragma omp parallel for num_threads(32) for (int j = 0; j