File indexing completed on 2023-03-17 11:05:43
0001 import FWCore.ParameterSet.Config as cms
0002 import sys
0003 import argparse
0004
0005 parser = argparse.ArgumentParser(prog=sys.argv[0], description='Test various Alpaka module types')
0006
0007 parser.add_argument("--accelerators", type=str, help="Set process.options.accelerators (comma-separated string, default is to use default)", default="")
0008 parser.add_argument("--moduleBackend", type=str, help="Set Alpaka backend for module instances", default="")
0009 parser.add_argument("--expectBackend", type=str, help="Expect this backend to run")
0010 parser.add_argument("--run", type=int, help="Run number (default: 1)", default=1)
0011
0012 argv = sys.argv[:]
0013 if '--' in argv:
0014 argv.remove("--")
0015 args, unknown = parser.parse_known_args(argv)
0016
0017 process = cms.Process('TEST')
0018
0019 process.source = cms.Source('EmptySource',
0020 firstRun = cms.untracked.uint32(args.run)
0021 )
0022
0023 process.maxEvents.input = 10
0024
0025 if len(args.accelerators) != 0:
0026 process.options.accelerators = args.accelerators.split(",")
0027
0028 process.load('Configuration.StandardSequences.Accelerators_cff')
0029 process.load("HeterogeneousCore.CUDACore.ProcessAcceleratorCUDA_cfi")
0030 process.load("HeterogeneousCore.AlpakaCore.ProcessAcceleratorAlpaka_cfi")
0031
0032 process.alpakaESRecordASource = cms.ESSource("EmptyESSource",
0033 recordName = cms.string('AlpakaESTestRecordA'),
0034 iovIsRunNotTime = cms.bool(True),
0035 firstValid = cms.vuint32(1)
0036 )
0037 process.alpakaESRecordBSource = cms.ESSource("EmptyESSource",
0038 recordName = cms.string('AlpakaESTestRecordB'),
0039 iovIsRunNotTime = cms.bool(True),
0040 firstValid = cms.vuint32(1)
0041 )
0042 process.alpakaESRecordCSource = cms.ESSource("EmptyESSource",
0043 recordName = cms.string('AlpakaESTestRecordC'),
0044 iovIsRunNotTime = cms.bool(True),
0045 firstValid = cms.vuint32(1)
0046 )
0047
0048 process.esProducerA = cms.ESProducer("cms::alpakatest::TestESProducerA", value = cms.int32(42))
0049 process.esProducerB = cms.ESProducer("cms::alpakatest::TestESProducerB", value = cms.int32(314159))
0050 process.esProducerC = cms.ESProducer("cms::alpakatest::TestESProducerC", value = cms.int32(27))
0051
0052 from HeterogeneousCore.AlpakaTest.testAlpakaESProducerA_cfi import testAlpakaESProducerA
0053 process.alpakaESProducerA = testAlpakaESProducerA.clone(appendToDataLabel = cms.string("appendedLabel"))
0054 process.alpakaESProducerB = cms.ESProducer("TestAlpakaESProducerB@alpaka", explicitLabel = cms.string("explicitLabel"))
0055 process.alpakaESProducerC = cms.ESProducer("TestAlpakaESProducerC@alpaka")
0056 process.alpakaESProducerD = cms.ESProducer("TestAlpakaESProducerD@alpaka",
0057 srcA = cms.ESInputTag("", "appendedLabel"),
0058 srcB = cms.ESInputTag("", "explicitLabel"),
0059 )
0060
0061 process.intProduct = cms.EDProducer("IntProducer", ivalue = cms.int32(42))
0062
0063 from HeterogeneousCore.AlpakaTest.testAlpakaGlobalProducer_cfi import testAlpakaGlobalProducer
0064 process.alpakaGlobalProducer = testAlpakaGlobalProducer.clone(
0065 eventSetupSource = cms.ESInputTag("alpakaESProducerA", "appendedLabel"),
0066 size = dict(
0067 alpaka_serial_sync = 10,
0068 alpaka_cuda_async = 20
0069 )
0070 )
0071 process.alpakaStreamProducer = cms.EDProducer("TestAlpakaStreamProducer@alpaka",
0072 source = cms.InputTag("intProduct"),
0073 eventSetupSource = cms.ESInputTag("alpakaESProducerB", "explicitLabel"),
0074 size = cms.PSet(
0075 alpaka_serial_sync = cms.int32(5),
0076 alpaka_cuda_async = cms.int32(25)
0077 )
0078 )
0079 process.alpakaStreamInstanceProducer = cms.EDProducer("TestAlpakaStreamProducer@alpaka",
0080 source = cms.InputTag("intProduct"),
0081 eventSetupSource = cms.ESInputTag("alpakaESProducerB", "explicitLabel"),
0082 productInstanceName = cms.string("testInstance"),
0083 size = cms.PSet(
0084 alpaka_serial_sync = cms.int32(6),
0085 alpaka_cuda_async = cms.int32(36)
0086 )
0087 )
0088 process.alpakaStreamSynchronizingProducer = cms.EDProducer("TestAlpakaStreamSynchronizingProducer@alpaka",
0089 source = cms.InputTag("alpakaGlobalProducer"),
0090 intSource = cms.InputTag("intProduct"),
0091 expectedInt = cms.int32(84)
0092 )
0093
0094 process.alpakaGlobalConsumer = cms.EDAnalyzer("TestAlpakaAnalyzer",
0095 source = cms.InputTag("alpakaGlobalProducer"),
0096 expectSize = cms.int32(10)
0097 )
0098 process.alpakaStreamConsumer = cms.EDAnalyzer("TestAlpakaAnalyzer",
0099 source = cms.InputTag("alpakaStreamProducer"),
0100 expectSize = cms.int32(5)
0101 )
0102 process.alpakaStreamInstanceConsumer = cms.EDAnalyzer("TestAlpakaAnalyzer",
0103 source = cms.InputTag("alpakaStreamInstanceProducer", "testInstance"),
0104 expectSize = cms.int32(6)
0105 )
0106 process.alpakaStreamSynchronizingConsumer = cms.EDAnalyzer("TestAlpakaAnalyzer",
0107 source = cms.InputTag("alpakaStreamSynchronizingProducer"),
0108 expectSize = cms.int32(10)
0109 )
0110
0111 if args.moduleBackend != "":
0112 for name in ["ESProducerA", "ESProducerB", "ESProducerC", "ESProducerD",
0113 "GlobalProducer", "StreamProducer", "StreamInstanceProducer", "StreamSynchronizingProducer"]:
0114 mod = getattr(process, "alpaka"+name)
0115 mod.alpaka = cms.untracked.PSet(backend = cms.untracked.string(args.moduleBackend))
0116 if args.expectBackend == "cuda_async":
0117 process.alpakaGlobalConsumer.expectSize = 20
0118 process.alpakaStreamConsumer.expectSize = 25
0119 process.alpakaStreamInstanceConsumer.expectSize = 36
0120 process.alpakaStreamSynchronizingConsumer.expectSize = 20
0121
0122 process.output = cms.OutputModule('PoolOutputModule',
0123 fileName = cms.untracked.string('testAlpaka.root'),
0124 outputCommands = cms.untracked.vstring(
0125 'drop *',
0126 'keep *_alpakaGlobalProducer_*_*',
0127 'keep *_alpakaStreamProducer_*_*',
0128 'keep *_alpakaStreamSynchronizingProducer_*_*',
0129 )
0130 )
0131
0132 process.t = cms.Task(
0133 process.intProduct,
0134 process.alpakaGlobalProducer,
0135 process.alpakaStreamProducer,
0136 process.alpakaStreamInstanceProducer,
0137 process.alpakaStreamSynchronizingProducer
0138 )
0139 process.p = cms.Path(
0140 process.alpakaGlobalConsumer+
0141 process.alpakaStreamConsumer+
0142 process.alpakaStreamInstanceConsumer+
0143 process.alpakaStreamSynchronizingConsumer,
0144 process.t
0145 )
0146 process.ep = cms.EndPath(process.output)