26 {
28
30
31
32
33
34 ActsPlugins::ModuleMapCuda::Config gcCfg;
39 gcCfg.gpuBlocks = 512;
40 auto gc = std::make_shared<ActsPlugins::ModuleMapCuda>(
41 gcCfg,
m_logger->cloneWithSuffix(
"ModuleMap"));
42
43
44
45
46 std::shared_ptr<ActsPlugins::EdgeClassificationBase> gnn;
47 if (
m_gnnPath.value().find(
".onnx") != std::string::npos) {
48#ifdef ACTS_GNN_ONNX_BACKEND
49 ActsPlugins::OnnxEdgeClassifier::Config gnnCfg;
52 gnn = std::make_shared<ActsPlugins::OnnxEdgeClassifier>(
53 gnnCfg,
m_logger->cloneWithSuffix(
"GNN"));
54 m_runMutex.emplace();
55#else
56 ATH_MSG_FATAL(
"Not compiled with ONNX, cannot interpret *.onnx files");
57 return StatusCode::FAILURE;
58#endif
59 }
else if (
m_gnnPath.value().find(
".pt") != std::string::npos) {
60#ifdef ACTS_GNN_TORCH_BACKEND
61 ActsPlugins::TorchEdgeClassifier::Config gnnCfg;
64 gnn = std::make_shared<ActsPlugins::TorchEdgeClassifier>(
65 gnnCfg,
m_logger->cloneWithSuffix(
"GNN"));
66 m_runMutex.emplace();
67#else
68 ATH_MSG_FATAL(
"Not compiled with Torch, cannot interpret *.pt files");
69 return StatusCode::FAILURE;
70#endif
71 }
else if (
m_gnnPath.value().find(
".engine") != std::string::npos) {
72#ifdef ACTS_GNN_WITH_TENSORRT
73 ActsPlugins::TensorRTEdgeClassifier::Config gnnCfg;
77 gnn = std::make_shared<ActsPlugins::TensorRTEdgeClassifier>(
78 gnnCfg,
m_logger->cloneWithSuffix(
"GNN"));
79#else
80 ATH_MSG_FATAL(
"Not compiled with TensorRT, cannot interpret *.engine files");
81 return StatusCode::FAILURE;
82#endif
83 } else {
85 return StatusCode::FAILURE;
86 }
87
88
89 std::shared_ptr<ActsPlugins::TrackBuildingBase>
tb;
90 ATH_MSG_INFO(
"Configure CC&JunctionRemoval as graph segmentation algorithm");
92 ActsPlugins::EdgeLayerConnector::Config tbCfg;
94 tbCfg.blockSize = 512;
96 tb = std::make_shared<ActsPlugins::EdgeLayerConnector>(
97 tbCfg,
m_logger->cloneWithSuffix(
"ELC"));
98 } else {
99 ActsPlugins::CudaTrackBuilding::Config tbCfg;
100 tbCfg.doJunctionRemoval = true;
101 tb = std::make_shared<ActsPlugins::CudaTrackBuilding>(
102 tbCfg,
m_logger->cloneWithSuffix(
"CC&JR"));
103 }
104
105
107 gc, std::vector{std::move(gnn)},
tb,
m_logger->cloneWithSuffix(
"Pipeline"));
108
109 return StatusCode::SUCCESS;
110}
#define ATH_CHECK
Evaluate an expression and check for errors.
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)