feat: Add cuda function in getAscanBlockPreprocessed.
This commit is contained in:
@@ -19,7 +19,7 @@ file(GLOB_RECURSE cpp_files ./src/*.cpp)
|
|||||||
file(GLOB_RECURSE cu_files ./src/*.cu)
|
file(GLOB_RECURSE cu_files ./src/*.cu)
|
||||||
file(GLOB_RECURSE cxx_files ./src/*.cxx)
|
file(GLOB_RECURSE cxx_files ./src/*.cxx)
|
||||||
file(GLOB_RECURSE header_files ./src/*.h)
|
file(GLOB_RECURSE header_files ./src/*.h)
|
||||||
add_executable(UR ${cpp_files} ${cu_files} ${cxx_files} ${header_files} ${Aurora_Source} ${Aurora_Source_Cu} ./src/Aurora.cu ${Aurora_DIR}/src/CudaMatrixPrivate.cu)
|
add_executable(UR ${cpp_files} ${cu_files} ${cxx_files} ${header_files} ${Aurora_Source} ${Aurora_Source_Cu} ${Aurora_DIR}/src/CudaMatrixPrivate.cu)
|
||||||
|
|
||||||
#target_compile_options(UR PUBLIC ${Aurora_Complie_Options} "-march=native")
|
#target_compile_options(UR PUBLIC ${Aurora_Complie_Options} "-march=native")
|
||||||
target_include_directories(UR PUBLIC ./src/)
|
target_include_directories(UR PUBLIC ./src/)
|
||||||
@@ -58,7 +58,7 @@ INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS})
|
|||||||
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
file(GLOB_RECURSE test_cpp test/*.cpp)
|
file(GLOB_RECURSE test_cpp test/*.cpp)
|
||||||
add_executable(UR_Test ${cpp_files} ${header_files} ${Aurora_Source} ${test_cpp} ${cu_files} ${Aurora_Source} ${Aurora_Source_Cu} ./src/Aurora.cu ${Aurora_DIR}/src/CudaMatrixPrivate.cu)
|
add_executable(UR_Test ${cpp_files} ${header_files} ${Aurora_Source} ${test_cpp} ${cu_files} ${Aurora_Source} ${Aurora_Source_Cu} ${Aurora_DIR}/src/CudaMatrixPrivate.cu)
|
||||||
|
|
||||||
target_include_directories(UR_Test PUBLIC ./test/ ./src/)
|
target_include_directories(UR_Test PUBLIC ./test/ ./src/)
|
||||||
# target_compile_options(UR_Test PUBLIC ${Aurora_Complie_Options} "-march=native")
|
# target_compile_options(UR_Test PUBLIC ${Aurora_Complie_Options} "-march=native")
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#include "getAScanBlockPreprocessed.h"
|
#include "getAScanBlockPreprocessed.h"
|
||||||
|
|
||||||
|
#include "CudaMatrix.h"
|
||||||
|
#include "Matrix.h"
|
||||||
#include "blockingGeometryInfo.h"
|
#include "blockingGeometryInfo.h"
|
||||||
#include "removeDataFromArrays.h"
|
#include "removeDataFromArrays.h"
|
||||||
#include "getAscanBlock.h"
|
#include "getAscanBlock.h"
|
||||||
@@ -8,6 +10,7 @@
|
|||||||
#include "common/preprocessAscanBlock.h"
|
#include "common/preprocessAscanBlock.h"
|
||||||
#include "transmissionReconstruction/dataFilter/dataFilter.h"
|
#include "transmissionReconstruction/dataFilter/dataFilter.h"
|
||||||
#include "reflectionReconstruction/dataFilter.h"
|
#include "reflectionReconstruction/dataFilter.h"
|
||||||
|
#include "Function2D.cuh"
|
||||||
|
|
||||||
using namespace Aurora;
|
using namespace Aurora;
|
||||||
using namespace Recon;
|
using namespace Recon;
|
||||||
@@ -60,7 +63,58 @@ AscanBlockPreprocessed Recon::getAscanBlockPreprocessed(Parser* aParser, const A
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
result.ascanBlockPreprocessed = ascanBlock.ascanBlock;
|
result.ascanBlockPreprocessed = ascanBlock.ascanBlock;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AscanBlockPreprocessedCuda Recon::getAscanBlockPreprocessedCuda(Parser* aParser, const Aurora::Matrix& aMp, const Aurora::Matrix& aSl, const Aurora::Matrix& aSn,
|
||||||
|
const Aurora::Matrix& aRl, const Aurora::Matrix& aRn, GeometryInfo& aGeom, const MeasurementInfo& aMeasInfo,
|
||||||
|
bool aApplyFilter, bool aTransReco)
|
||||||
|
{
|
||||||
|
AscanBlockPreprocessedCuda result;
|
||||||
|
AscanBlock ascanBlock = getAscanBlock(aParser, aMp, aSl, aSn, aRl, aRn);
|
||||||
|
|
||||||
|
result.ascanBlockPreprocessed = ascanBlock.ascanBlock.toDeviceMatrix();
|
||||||
|
result.gainBlock = ascanBlock.gainBlock.toDeviceMatrix();
|
||||||
|
result.mpBlock = ascanBlock.mpBlock;
|
||||||
|
result.rlBlock = ascanBlock.rlBlock;
|
||||||
|
result.rnBlock = ascanBlock.rnBlock;
|
||||||
|
result.slBlock = ascanBlock.slBlock;
|
||||||
|
result.snBlock = ascanBlock.snBlock;
|
||||||
|
GeometryBlock geometryBlock = blockingGeometryInfos(aGeom, ascanBlock.rnBlock, ascanBlock.rlBlock, ascanBlock.snBlock, ascanBlock.slBlock, ascanBlock.mpBlock);
|
||||||
|
|
||||||
|
result.receiverPositionBlock = geometryBlock.receiverPositionBlock;
|
||||||
|
result.senderPositionBlock = geometryBlock.senderPositionBlock;
|
||||||
|
if(aApplyFilter)
|
||||||
|
{
|
||||||
|
Matrix usedData;
|
||||||
|
if(aTransReco)
|
||||||
|
{
|
||||||
|
usedData = filterTransmissionData(ascanBlock.slBlock, ascanBlock.snBlock, ascanBlock.rlBlock, ascanBlock.rnBlock,
|
||||||
|
aGeom.sensData, geometryBlock.senderNormalBlock, geometryBlock.receiverNormalBlock);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
usedData = filterReflectionData(geometryBlock.receiverPositionBlock, geometryBlock.senderPositionBlock, geometryBlock.senderNormalBlock, reflectParams::constrictReflectionAngles);
|
||||||
|
}
|
||||||
|
|
||||||
|
CudaMatrix usedDataDevice = usedData.toDeviceMatrix();
|
||||||
|
result.ascanBlockPreprocessed = valid(result.ascanBlockPreprocessed, usedDataDevice);
|
||||||
|
result.mpBlock = removeDataFromArrays(ascanBlock.mpBlock, usedData);
|
||||||
|
result.slBlock = removeDataFromArrays(ascanBlock.slBlock, usedData);
|
||||||
|
result.snBlock = removeDataFromArrays(ascanBlock.snBlock, usedData);
|
||||||
|
result.rlBlock = removeDataFromArrays(ascanBlock.rlBlock, usedData);
|
||||||
|
result.rnBlock = removeDataFromArrays(ascanBlock.rnBlock, usedData);
|
||||||
|
|
||||||
|
result.senderPositionBlock = removeDataFromArrays(geometryBlock.senderPositionBlock, usedData);
|
||||||
|
result.receiverPositionBlock = removeDataFromArrays(geometryBlock.receiverPositionBlock, usedData);
|
||||||
|
result.gainBlock = valid(result.gainBlock, usedDataDevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ascanBlock.ascanBlock.getDataSize() > 0)
|
||||||
|
{
|
||||||
|
result.ascanBlockPreprocessed = preprocessAscanBlockCuda(result.ascanBlockPreprocessed, aMeasInfo);
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
#define GETASCANBLOCK_PREPROCESSED_H
|
#define GETASCANBLOCK_PREPROCESSED_H
|
||||||
|
|
||||||
#include "Matrix.h"
|
#include "Matrix.h"
|
||||||
|
#include "CudaMatrix.h"
|
||||||
#include "common/getGeometryInfo.h"
|
#include "common/getGeometryInfo.h"
|
||||||
#include "common/getMeasurementMetaData.h"
|
#include "common/getMeasurementMetaData.h"
|
||||||
|
|
||||||
@@ -25,6 +26,23 @@ namespace Recon
|
|||||||
AscanBlockPreprocessed getAscanBlockPreprocessed(Parser* aParser, const Aurora::Matrix& aMp, const Aurora::Matrix& aSl, const Aurora::Matrix& aSn,
|
AscanBlockPreprocessed getAscanBlockPreprocessed(Parser* aParser, const Aurora::Matrix& aMp, const Aurora::Matrix& aSl, const Aurora::Matrix& aSn,
|
||||||
const Aurora::Matrix& aRl, const Aurora::Matrix& aRn, GeometryInfo& aGeom, const MeasurementInfo& aMeasInfo,
|
const Aurora::Matrix& aRl, const Aurora::Matrix& aRn, GeometryInfo& aGeom, const MeasurementInfo& aMeasInfo,
|
||||||
bool aApplyFilter, bool aTransReco);
|
bool aApplyFilter, bool aTransReco);
|
||||||
|
|
||||||
|
struct AscanBlockPreprocessedCuda
|
||||||
|
{
|
||||||
|
Aurora::CudaMatrix ascanBlockPreprocessed;
|
||||||
|
Aurora::Matrix mpBlock;
|
||||||
|
Aurora::Matrix slBlock;
|
||||||
|
Aurora::Matrix snBlock;
|
||||||
|
Aurora::Matrix rlBlock;
|
||||||
|
Aurora::Matrix rnBlock;
|
||||||
|
Aurora::Matrix senderPositionBlock;
|
||||||
|
Aurora::Matrix receiverPositionBlock;
|
||||||
|
Aurora::CudaMatrix gainBlock;
|
||||||
|
};
|
||||||
|
|
||||||
|
AscanBlockPreprocessedCuda getAscanBlockPreprocessedCuda(Parser* aParser, const Aurora::Matrix& aMp, const Aurora::Matrix& aSl, const Aurora::Matrix& aSn,
|
||||||
|
const Aurora::Matrix& aRl, const Aurora::Matrix& aRn, GeometryInfo& aGeom, const MeasurementInfo& aMeasInfo,
|
||||||
|
bool aApplyFilter, bool aTransReco);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user