@@ -510,7 +510,6 @@ DataProcessorSpec getCATrackerSpec(CompletionPolicyData* policyData, ca::Config
510510 }
511511 // a byte size resizable vector object, the DataAllocator returns reference to internal object
512512 // initialize optional pointer to the vector object
513- using O2CharVectorOutputType = std::decay_t <decltype (pc.outputs ().make <std::vector<char >>(Output{" " , " " , 0 }))>;
514513 TPCSectorHeader clusterOutputSectorHeader{0 };
515514 if (processAttributes->clusterOutputIds .size () > 0 ) {
516515 clusterOutputSectorHeader.sectorBits = processAttributes->tpcSectorMask ;
@@ -519,32 +518,34 @@ DataProcessorSpec getCATrackerSpec(CompletionPolicyData* policyData, ca::Config
519518 }
520519
521520 GPUInterfaceOutputs outputRegions;
522- using outputBufferType = std::pair<std::optional<std::reference_wrapper<O2CharVectorOutputType>>, char *>;
521+ using outputDataType = char ;
522+ using outputBufferUninitializedVector = std::decay_t <decltype (pc.outputs ().make <DataAllocator::UninitializedVector<outputDataType>>(Output{" " , " " , 0 }))>;
523+ using outputBufferType = std::pair<std::optional<std::reference_wrapper<outputBufferUninitializedVector>>, outputDataType*>;
523524 std::vector<outputBufferType> outputBuffers (GPUInterfaceOutputs::count (), {std::nullopt , nullptr });
524525
525526 auto setOutputAllocator = [&specconfig, &outputBuffers, &outputRegions, &processAttributes, &pc, verbosity](const char * name, bool condition, GPUOutputControl& region, auto && outputSpec, size_t offset = 0 ) {
526527 if (condition) {
527528 auto & buffer = outputBuffers[outputRegions.getIndex (region)];
528529 if (processAttributes->allocateOutputOnTheFly ) {
529- region.allocator = [name, &buffer, &pc, outputSpec = std::move (outputSpec), debug = processAttributes-> config -> configProcessing . debugLevel , verbosity, offset](size_t size) -> void * {
530+ region.allocator = [name, &buffer, &pc, outputSpec = std::move (outputSpec), verbosity, offset](size_t size) -> void * {
530531 size += offset;
531532 if (verbosity) {
532533 LOG (INFO) << " ALLOCATING " << size << " bytes for " << std::get<DataOrigin>(outputSpec).template as <std::string>() << " /" << std::get<DataDescription>(outputSpec).template as <std::string>() << " /" << std::get<2 >(outputSpec);
533534 }
534535 std::chrono::time_point<std::chrono::high_resolution_clock> start, end;
535- if (debug ) {
536+ if (verbosity ) {
536537 start = std::chrono::high_resolution_clock::now ();
537538 }
538- buffer.first .emplace (pc.outputs ().make <std::vector< char >>(std::make_from_tuple<Output>(outputSpec), size));
539- if (debug ) {
539+ buffer.first .emplace (pc.outputs ().make <DataAllocator::UninitializedVector<outputDataType >>(std::make_from_tuple<Output>(outputSpec), size));
540+ if (verbosity ) {
540541 end = std::chrono::high_resolution_clock::now ();
541542 std::chrono::duration<double > elapsed_seconds = end - start;
542543 LOG (INFO) << " Allocation time for " << name << " (" << size << " bytes)" << " : " << elapsed_seconds.count () << " s" ;
543544 }
544545 return (buffer.second = buffer.first ->get ().data ()) + offset;
545546 };
546547 } else {
547- buffer.first .emplace (pc.outputs ().make <std::vector< char >>(std::make_from_tuple<Output>(outputSpec), processAttributes->outputBufferSize ));
548+ buffer.first .emplace (pc.outputs ().make <DataAllocator::UninitializedVector<outputDataType >>(std::make_from_tuple<Output>(outputSpec), processAttributes->outputBufferSize ));
548549 region.ptrBase = (buffer.second = buffer.first ->get ().data ()) + offset;
549550 region.size = buffer.first ->get ().size () - offset;
550551 }
0 commit comments