Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:45

0001 import FWCore.ParameterSet.Config as cms
0002 from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA
0003 from Configuration.ProcessModifiers.gpu_cff import gpu
0004 
0005 # ECAL multifit running on CPU
0006 from RecoLocalCalo.EcalRecProducers.ecalMultiFitUncalibRecHit_cfi import ecalMultiFitUncalibRecHit as _ecalMultiFitUncalibRecHit
0007 ecalMultiFitUncalibRecHitCPU = _ecalMultiFitUncalibRecHit.clone()
0008 ecalMultiFitUncalibRecHit = SwitchProducerCUDA(
0009   cpu = ecalMultiFitUncalibRecHitCPU
0010 )
0011 
0012 ecalMultiFitUncalibRecHitTask = cms.Task(
0013   # ECAL multifit running on CPU
0014   ecalMultiFitUncalibRecHit
0015 )
0016 
0017 from Configuration.StandardSequences.Accelerators_cff import *
0018 
0019 # ECAL conditions used by the multifit running on GPU
0020 from RecoLocalCalo.EcalRecProducers.ecalPedestalsGPUESProducer_cfi import ecalPedestalsGPUESProducer
0021 from RecoLocalCalo.EcalRecProducers.ecalGainRatiosGPUESProducer_cfi import ecalGainRatiosGPUESProducer
0022 from RecoLocalCalo.EcalRecProducers.ecalPulseShapesGPUESProducer_cfi import ecalPulseShapesGPUESProducer
0023 from RecoLocalCalo.EcalRecProducers.ecalPulseCovariancesGPUESProducer_cfi import ecalPulseCovariancesGPUESProducer
0024 from RecoLocalCalo.EcalRecProducers.ecalSamplesCorrelationGPUESProducer_cfi import ecalSamplesCorrelationGPUESProducer
0025 from RecoLocalCalo.EcalRecProducers.ecalTimeBiasCorrectionsGPUESProducer_cfi import ecalTimeBiasCorrectionsGPUESProducer
0026 from RecoLocalCalo.EcalRecProducers.ecalTimeCalibConstantsGPUESProducer_cfi import ecalTimeCalibConstantsGPUESProducer
0027 from RecoLocalCalo.EcalRecProducers.ecalMultifitParametersGPUESProducer_cfi import ecalMultifitParametersGPUESProducer
0028 
0029 # ECAL multifit running on GPU
0030 from RecoLocalCalo.EcalRecProducers.ecalUncalibRecHitProducerGPU_cfi import ecalUncalibRecHitProducerGPU as _ecalUncalibRecHitProducerGPU
0031 ecalMultiFitUncalibRecHitGPU = _ecalUncalibRecHitProducerGPU.clone(
0032   digisLabelEB = 'ecalDigisGPU:ebDigis',
0033   digisLabelEE = 'ecalDigisGPU:eeDigis',
0034 )
0035 
0036 # copy the uncalibrated rechits from GPU to CPU
0037 from RecoLocalCalo.EcalRecProducers.ecalCPUUncalibRecHitProducer_cfi import ecalCPUUncalibRecHitProducer as _ecalCPUUncalibRecHitProducer
0038 ecalMultiFitUncalibRecHitSoA = _ecalCPUUncalibRecHitProducer.clone(
0039   recHitsInLabelEB = 'ecalMultiFitUncalibRecHitGPU:EcalUncalibRecHitsEB',
0040   recHitsInLabelEE = 'ecalMultiFitUncalibRecHitGPU:EcalUncalibRecHitsEE',
0041   containsTimingInformation = True
0042 )
0043 
0044 # convert the uncalibrated rechits from SoA to legacy format
0045 from RecoLocalCalo.EcalRecProducers.ecalUncalibRecHitConvertGPU2CPUFormat_cfi import ecalUncalibRecHitConvertGPU2CPUFormat as _ecalUncalibRecHitConvertGPU2CPUFormat
0046 gpu.toModify(ecalMultiFitUncalibRecHit,
0047   cuda = _ecalUncalibRecHitConvertGPU2CPUFormat.clone(
0048     recHitsLabelGPUEB = 'ecalMultiFitUncalibRecHitSoA:EcalUncalibRecHitsEB',
0049     recHitsLabelGPUEE = 'ecalMultiFitUncalibRecHitSoA:EcalUncalibRecHitsEE',
0050   )
0051 )
0052 
0053 gpu.toReplaceWith(ecalMultiFitUncalibRecHitTask, cms.Task(
0054   # ECAL conditions used by the multifit running on GPU
0055   ecalPedestalsGPUESProducer,
0056   ecalGainRatiosGPUESProducer,
0057   ecalPulseShapesGPUESProducer,
0058   ecalPulseCovariancesGPUESProducer,
0059   ecalSamplesCorrelationGPUESProducer,
0060   ecalTimeBiasCorrectionsGPUESProducer,
0061   ecalTimeCalibConstantsGPUESProducer,
0062   ecalMultifitParametersGPUESProducer,
0063   # ECAL multifit running on GPU
0064   ecalMultiFitUncalibRecHitGPU,
0065   # copy the uncalibrated rechits from GPU to CPU
0066   ecalMultiFitUncalibRecHitSoA,
0067   # ECAL multifit running on CPU, or convert the uncalibrated rechits from SoA to legacy format
0068   ecalMultiFitUncalibRecHit,
0069 ))
0070 
0071 # modifications for alpaka
0072 from Configuration.ProcessModifiers.alpaka_cff import alpaka
0073 
0074 # ECAL conditions used by the multifit running on the accelerator
0075 from RecoLocalCalo.EcalRecProducers.ecalMultifitConditionsHostESProducer_cfi import ecalMultifitConditionsHostESProducer
0076 from RecoLocalCalo.EcalRecProducers.ecalMultifitParametersHostESProducer_cfi import ecalMultifitParametersHostESProducer
0077 
0078 ecalMultifitParametersSource = cms.ESSource("EmptyESSource",
0079     recordName = cms.string('EcalMultifitParametersRcd'),
0080     iovIsRunNotTime = cms.bool(True),
0081     firstValid = cms.vuint32(1)
0082 )
0083 
0084 # ECAL multifit running on the accelerator
0085 from RecoLocalCalo.EcalRecProducers.ecalUncalibRecHitProducerPortable_cfi import ecalUncalibRecHitProducerPortable as _ecalUncalibRecHitProducerPortable
0086 ecalMultiFitUncalibRecHitPortable = _ecalUncalibRecHitProducerPortable.clone(
0087   digisLabelEB = 'ecalDigisPortable:ebDigis',
0088   digisLabelEE = 'ecalDigisPortable:eeDigis'
0089 )
0090 
0091 # replace the SwitchProducerCUDA branches with the module to convert the uncalibrated rechits from SoA to legacy format
0092 from RecoLocalCalo.EcalRecProducers.ecalUncalibRecHitSoAToLegacy_cfi import ecalUncalibRecHitSoAToLegacy as _ecalUncalibRecHitSoAToLegacy
0093 alpaka.toModify(ecalMultiFitUncalibRecHit,
0094     cpu = _ecalUncalibRecHitSoAToLegacy.clone()
0095 )
0096 
0097 alpaka.toReplaceWith(ecalMultiFitUncalibRecHitTask, cms.Task(
0098   # ECAL conditions used by the multifit running on the accelerator
0099   ecalMultifitConditionsHostESProducer,
0100   ecalMultifitParametersHostESProducer,
0101   # ECAL multifit running on device
0102   ecalMultiFitUncalibRecHitPortable,
0103   # ECAL multifit running on CPU, or convert the uncalibrated rechits from SoA to legacy format
0104   ecalMultiFitUncalibRecHit,
0105 ))