cms-patatrack / pixeltrack-standalone

Standalone Patatrack pixel tracking
Apache License 2.0
17 stars 35 forks source link

[alpaka] Initialise only the selected backends #286

Closed fwyzard closed 2 years ago

fwyzard commented 2 years ago

Only the backends enabled at build time are supported in the command line options, and listed in the help message. Only the backends selected on the command line are initialised.

fwyzard commented 2 years ago

Building alpaka without CUDA support now results in

$ ./alpaka --cuda
Invalid parameter --cuda

./alpaka: [--serial] [--tbb] [--numberOfThreads NT] [--numberOfStreams NS] [--maxEvents ME] [--data PATH] [--transfer] [--validation]

Options
 --serial            Use CPU Serial backend
 --tbb               Use CPU TBB backend
 --numberOfThreads   Number of threads to use (default 1, use 0 to use all CPU cores)
 --numberOfStreams   Number of concurrent events (default 0 = numberOfThreads)
 --maxEvents         Number of events to process (default -1 for all events in the input file)
 --runForMinutes     Continue processing the set of 1000 events until this many minutes have passed (default -1 for disabled; conflicts with --maxEvents)
 --data              Path to the 'data' directory (default 'data' in the directory of the executable)
 --transfer          Transfer results from GPU to CPU (default is to leave them on GPU)
 --validation        Run (rudimentary) validation at the end (implies --transfer)
 --histogram         Produce histograms at the end (implies --transfer)
 --empty             Ignore all producers (for testing only)
fwyzard commented 2 years ago

Building alpaka with CUDA enabled, but running with e.g. the serial backend, CUDA is never initialised:

$ compute-sanitizer --require-cuda-init yes --tool memcheck ./serial
========= COMPUTE-SANITIZER
Processing 1000 events, of which 1 concurrently, with 1 threads.
========= Error: No attachable process found. compute-sanitizer timed-out.
========= Default timeout can be adjusted with --launch-timeout. Awaiting target completion.
Processed 1000 events in 3.383860e+01 seconds, throughput 29.552 events/s.