Call as dynamic object
This commit is contained in:
@@ -9,7 +9,11 @@ set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)
|
|||||||
enable_language(CUDA)
|
enable_language(CUDA)
|
||||||
find_package(CUDAToolkit REQUIRED)
|
find_package(CUDAToolkit REQUIRED)
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
|
||||||
|
set(BUILD_SHARED_LIBS ON)
|
||||||
|
if (${BUILD_SHARED_LIBS})
|
||||||
|
set(MKL_INTERFACE_FULL intel_lp64)
|
||||||
|
set(MKL_LINK static)
|
||||||
|
endif()
|
||||||
find_package(Aurora REQUIRED)
|
find_package(Aurora REQUIRED)
|
||||||
find_package(Parser REQUIRED)
|
find_package(Parser REQUIRED)
|
||||||
find_package(Req REQUIRED)
|
find_package(Req REQUIRED)
|
||||||
@@ -18,10 +22,26 @@ find_package(DCMTK REQUIRED)
|
|||||||
set(DCMTK_WITH_JPEG OFF)
|
set(DCMTK_WITH_JPEG OFF)
|
||||||
file(GLOB_RECURSE cpp_files ./src/*.cpp)
|
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 header_files ./src/*.h)
|
file(GLOB_RECURSE header_files ./src/*.h)
|
||||||
|
|
||||||
|
if (${BUILD_SHARED_LIBS})
|
||||||
|
set(cxx_files ./src/UR.cxx)
|
||||||
|
|
||||||
|
find_package(MKL CONFIG REQUIRED)
|
||||||
|
set(MKL_INTERFACE_FULL intel_lp64)
|
||||||
|
add_library(UR SHARED ${cpp_files} ${cxx_files} ${header_files} ${Aurora_Source})
|
||||||
|
target_compile_options(UR PUBLIC $<TARGET_PROPERTY:MKL::MKL,INTERFACE_COMPILE_OPTIONS>)
|
||||||
|
target_include_directories(UR PUBLIC $<TARGET_PROPERTY:MKL::MKL,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||||
|
target_link_libraries(UR PUBLIC $<LINK_ONLY:MKL::MKL>)
|
||||||
|
target_link_libraries(UR PUBLIC OpenMP::OpenMP_CXX)
|
||||||
|
target_compile_options(UR PUBLIC "-march=native")
|
||||||
|
else()
|
||||||
|
set(cxx_files ./src/main.cxx)
|
||||||
add_executable(UR ${cpp_files} ${cxx_files} ${header_files} ${Aurora_Source})
|
add_executable(UR ${cpp_files} ${cxx_files} ${header_files} ${Aurora_Source})
|
||||||
target_compile_options(UR PUBLIC ${Aurora_Complie_Options} "-march=native")
|
target_compile_options(UR PUBLIC ${Aurora_Complie_Options} "-march=native")
|
||||||
|
endif()
|
||||||
|
|
||||||
target_include_directories(UR PUBLIC ./src/)
|
target_include_directories(UR PUBLIC ./src/)
|
||||||
target_include_directories(UR PUBLIC ${Aurora_INCLUDE_DIRS})
|
target_include_directories(UR PUBLIC ${Aurora_INCLUDE_DIRS})
|
||||||
target_include_directories(UR PUBLIC ${DCMTK_INCLUDE_DIRS})
|
target_include_directories(UR PUBLIC ${DCMTK_INCLUDE_DIRS})
|
||||||
|
|||||||
67
src/UR.cxx
Normal file
67
src/UR.cxx
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#include "Parser.h"
|
||||||
|
#include "Parser.h"
|
||||||
|
#include "config/config.h"
|
||||||
|
#include "log/notify.h"
|
||||||
|
#include "log/notify.h"
|
||||||
|
#include <exception>
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
#include <stdexcept>
|
||||||
|
#define EIGEN_USE_MKL_ALL
|
||||||
|
|
||||||
|
#include "src/common/fileHelper.h"
|
||||||
|
#include "startReconstructions.h"
|
||||||
|
#include "log/log.h"
|
||||||
|
extern "C" {
|
||||||
|
int ReconProcess(const char* reconID,const char* path,const char* refPath,const char* output,const char* config){
|
||||||
|
try{
|
||||||
|
int argNum = 5;
|
||||||
|
std::vector<std::string> args(argNum);
|
||||||
|
std::string outPutPath = output?output:Recon::DEFAULT_OUTPUT_PATH;
|
||||||
|
outPutPath = Recon::fixPathSlash(outPutPath);
|
||||||
|
std::string directoryPath = outPutPath;
|
||||||
|
if(!Recon::isDirectory(directoryPath))
|
||||||
|
{
|
||||||
|
printf("Output directory is not valid.");
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
auto defaultLogger = getLogger("Main",outPutPath.data());
|
||||||
|
spdlog::set_default_logger(defaultLogger);
|
||||||
|
if(!reconID)
|
||||||
|
{
|
||||||
|
RECON_INFO("No recon id.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
std::string ReconID = reconID;
|
||||||
|
if(!path)
|
||||||
|
{
|
||||||
|
RECON_INFO("No reconstruction data.");
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
std::string configPath = Recon::fixPathSlash(config?config:Recon::DEFAULT_CONFIG_PATH);
|
||||||
|
Recon::initalizeConfig(configPath);
|
||||||
|
if( !refPath && Recon::transParams::runTransmissionReco)
|
||||||
|
{
|
||||||
|
RECON_INFO("Running transmission reconstruction, but no refrence data.");
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
std::string dataPath = Recon::fixPathSlash(path);
|
||||||
|
std::string dataRefPath = Recon::fixPathSlash(refPath);
|
||||||
|
RECON_INFO("start");
|
||||||
|
Recon::notifyStart("");
|
||||||
|
int exitcode = Recon::startReconstructions(dataPath, dataRefPath, outPutPath);
|
||||||
|
if (exitcode == 0)
|
||||||
|
{
|
||||||
|
RECON_INFO("finish");
|
||||||
|
return exitcode;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return exitcode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(const std::exception& ex){
|
||||||
|
RECON_INFO("Recon fail by unknow{}", ex.what());
|
||||||
|
return -99;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -222,7 +222,7 @@ namespace Recon {
|
|||||||
{
|
{
|
||||||
allHitMaps.push_back(buildMatrixR.hitmap);
|
allHitMaps.push_back(buildMatrixR.hitmap);
|
||||||
}
|
}
|
||||||
#pragma omp parallel for num_threads(2)
|
// #pragma omp parallel for num_threads(2)
|
||||||
for (int i =0; i<2; i++){
|
for (int i =0; i<2; i++){
|
||||||
if (i ==0){
|
if (i ==0){
|
||||||
if(!data.isNull())
|
if(!data.isNull())
|
||||||
|
|||||||
Reference in New Issue
Block a user