@@ -770,64 +770,6 @@ void GPURecoWorkflowSpec::run(ProcessingContext& pc)
770770
771771 // ------------------------------ Actual processing ------------------------------
772772
773- if (mSpecConfig .nnLoadFromCCDB ) {
774- LOG (info) << " (NN CLUS) Fetching CCDB calib objects" ;
775-
776- auto dumpOnnxToFile = [](const char * buffer, std::size_t size, const std::string& path) {
777- const char * marker = " Accept-Ranges" ;
778- const char * pos = std::search (buffer, buffer + size, marker, marker + std::strlen (marker));
779-
780- // Compute the actual number of bytes to write
781- std::size_t writeSize = (pos != buffer + size)
782- ? static_cast <std::size_t >(pos - buffer)
783- : size;
784-
785- std::ofstream out (path, std::ios::binary | std::ios::trunc);
786- if (!out.is_open ()) {
787- throw std::runtime_error (" Failed to open ONNX output file: " + path);
788- }
789-
790- out.write (buffer, static_cast <std::streamsize>(writeSize));
791- if (!out) {
792- throw std::runtime_error (" Failed while writing ONNX data to: " + path);
793- }
794- };
795-
796- GPUSettingsProcessingNNclusterizer& nnClusterizerSettings = mConfig ->configProcessing .nn ;
797- std::vector<std::string> evalMode = o2::utils::Str::tokenize (nnClusterizerSettings.nnEvalMode , ' :' );
798-
799- DataRef m;
800- if (evalMode[0 ] == " c1" ) {
801- m = pc.inputs ().get (" nn_classification_c1" );
802- const char * buffer = const_cast <char *>(m.payload );
803- size_t size = DataRefUtils::getPayloadSize (m);
804- if (nnClusterizerSettings.nnCCDBDumpToFile == 1 ) {
805- dumpOnnxToFile (buffer, size, " net_classification_c1.onnx" );
806- }
807- } else if (evalMode[0 ] == " c2" ) {
808- m = pc.inputs ().get (" nn_classification_c2" );
809- const char * buffer = const_cast <char *>(m.payload );
810- size_t size = DataRefUtils::getPayloadSize (m);
811- if (nnClusterizerSettings.nnCCDBDumpToFile == 1 ) {
812- dumpOnnxToFile (buffer, size, " net_classification_c2.onnx" );
813- }
814- }
815-
816- m = pc.inputs ().get (" nn_regression_c1" );
817- const char * buffer = const_cast <char *>(m.payload );
818- size_t size = DataRefUtils::getPayloadSize (m);
819- if (nnClusterizerSettings.nnCCDBDumpToFile == 1 ) {
820- dumpOnnxToFile (buffer, size, " net_regression_c1.onnx" );
821- }
822- if (evalMode[1 ] == " r2" ) {
823- m = pc.inputs ().get (" nn_regression_c2" );
824- const char * buffer = const_cast <char *>(m.payload );
825- size_t size = DataRefUtils::getPayloadSize (m);
826- if (nnClusterizerSettings.nnCCDBDumpToFile == 1 ) {
827- dumpOnnxToFile (buffer, size, " net_regression_c2.onnx" );
828- }
829- }
830- }
831773 if ((int32_t )(ptrs.tpcZS != nullptr ) + (int32_t )(ptrs.tpcPackedDigits != nullptr && (ptrs.tpcZS == nullptr || ptrs.tpcPackedDigits ->tpcDigitsMC == nullptr )) + (int32_t )(ptrs.clustersNative != nullptr ) + (int32_t )(ptrs.tpcCompressedClusters != nullptr ) != 1 ) {
832774 throw std::runtime_error (" Invalid input for gpu tracking" );
833775 }
@@ -1138,6 +1080,12 @@ void GPURecoWorkflowSpec::doCalibUpdates(o2::framework::ProcessingContext& pc, c
11381080 newCalibValues.tpcTimeBinCut = mConfig ->configGRP .tpcCutTimeBin = mTPCCutAtTimeBin ;
11391081 needCalibUpdate = true ;
11401082 }
1083+ if (mSpecConfig .nnLoadFromCCDB ) {
1084+ for (int i = 0 ; i < 3 ; i++) {
1085+ newCalibObjects.nnClusterizerNetworks [i] = mConfig ->configCalib .nnClusterizerNetworks [i];
1086+ newCalibObjects.nnClusterizerNetworkSizes [i] = mConfig ->configCalib .nnClusterizerNetworkSizes [i];
1087+ }
1088+ }
11411089 if (needCalibUpdate) {
11421090 LOG (info) << " Updating GPUReconstruction calibration objects" ;
11431091 mGPUReco ->UpdateCalibration (newCalibObjects, newCalibValues);
@@ -1282,6 +1230,7 @@ Inputs GPURecoWorkflowSpec::inputs()
12821230
12831231 LOG (info) << " (NN CLUS) Enabling fetching of TPC NN clusterizer from CCDB" ;
12841232 mSpecConfig .nnLoadFromCCDB = true ;
1233+ mSpecConfig .nnDumpToFile = mConfig ->configProcessing .nn .nnCCDBDumpToFile ;
12851234 GPUSettingsProcessingNNclusterizer& nnClusterizerSettings = mConfig ->configProcessing .nn ;
12861235
12871236 std::map<std::string, std::string> metadata;
@@ -1300,7 +1249,7 @@ Inputs GPURecoWorkflowSpec::inputs()
13001249 }
13011250 };
13021251
1303- std::vector<std::string> evalMode = o2::utils::Str::tokenize (nnClusterizerSettings.nnEvalMode , ' :' );
1252+ mSpecConfig . nnEvalMode = o2::utils::Str::tokenize (nnClusterizerSettings.nnEvalMode , ' :' );
13041253 std::vector<o2::framework::CCDBMetadata> ccdb_metadata;
13051254
13061255 if (mConfParam ->printSettings ) {
@@ -1313,29 +1262,25 @@ Inputs GPURecoWorkflowSpec::inputs()
13131262 printSettings (metadata);
13141263 }
13151264
1316- if (evalMode [0 ] == " c1" ) {
1265+ if (mSpecConfig . nnEvalMode [0 ] == " c1" ) {
13171266 metadata[" nnCCDBEvalType" ] = " classification_c1" ;
13181267 convert_map_to_metadata (metadata, ccdb_metadata);
13191268 inputs.emplace_back (" nn_classification_c1" , " TPC" , " NNCLUSTERIZER_C1" , 0 , Lifetime::Condition, ccdbParamSpec (nnClusterizerSettings.nnCCDBPath , ccdb_metadata, 0 ));
1320- LOG (info) << " (NN CLUS) Loading NN clusterizer classification (c1) from CCDB" ;
1321- } else if (evalMode[0 ] == " c2" ) {
1269+ } else if (mSpecConfig .nnEvalMode [0 ] == " c2" ) {
13221270 metadata[" nnCCDBEvalType" ] = " classification_c2" ;
13231271 convert_map_to_metadata (metadata, ccdb_metadata);
13241272 inputs.emplace_back (" nn_classification_c2" , " TPC" , " NNCLUSTERIZER_C2" , 0 , Lifetime::Condition, ccdbParamSpec (nnClusterizerSettings.nnCCDBPath , ccdb_metadata, 0 ));
1325- LOG (info) << " (NN CLUS) Loading NN clusterizer classification (c2) from CCDB" ;
13261273 }
13271274
13281275 metadata[" nnCCDBEvalType" ] = " regression_c1" ;
13291276 metadata[" nnCCDBLayerType" ] = nnClusterizerSettings.nnCCDBRegressionLayerType ;
13301277 convert_map_to_metadata (metadata, ccdb_metadata);
13311278 inputs.emplace_back (" nn_regression_c1" , " TPC" , " NNCLUSTERIZER_R1" , 0 , Lifetime::Condition, ccdbParamSpec (nnClusterizerSettings.nnCCDBPath , ccdb_metadata, 0 ));
1332- LOG (info) << " (NN CLUS) Loading NN clusterizer regression (r1) from CCDB" ;
13331279
1334- if (evalMode [1 ] == " r2" ) {
1280+ if (mSpecConfig . nnEvalMode [1 ] == " r2" ) {
13351281 metadata[" nnCCDBEvalType" ] = " regression_c2" ;
13361282 convert_map_to_metadata (metadata, ccdb_metadata);
13371283 inputs.emplace_back (" nn_regression_c2" , " TPC" , " NNCLUSTERIZER_R2" , 0 , Lifetime::Condition, ccdbParamSpec (nnClusterizerSettings.nnCCDBPath , ccdb_metadata, 0 ));
1338- LOG (info) << " (NN CLUS) Loading NN clusterizer regression (r2) from CCDB" ;
13391284 }
13401285 }
13411286
0 commit comments