-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add optional flags to disable SOA->legacy conversion and GPU->CPU transfer #132
Add optional flags to disable SOA->legacy conversion and GPU->CPU transfer #132
Conversation
… to disable unnecessary GPU->CPU transfers
Validation summaryReference release CMSSW_10_2_2_patch1 at 400b27e
|
@makortel what is the use case of disabling the conversions but not the transfers ? |
To separate the costs of "GPU-SOA -> CPU-SOA" and "CPU-SOA -> CPU-legacy", eventually showing that the latter is very costly. (Ok, it's a bit cheating because if we want to persist the CPU-SOA on disk, very likely we can't use the |
That's because the framework needs to own the memory ? |
I hope I fixed the conflicts correctly... |
Seems so. |
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
It's more for serialization by ROOT. It may be possible to serialize In addition, in principle another reason to copy soon from non-pageable memory to regular memory on CPU is that non-pageable memory is somewhat limited resource (ok, up to ~4 GB should be relatively safe still what I've read, so I'd expect it to take some time before we hit that limit in practice). |
That one is actually a crucial part of the more slimmed customizations. The output module (apparently) needs a non-transient product to consume to create the correct dependencies. I.e. consuming e.g. |
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
Right, I should have grepped case insensitive... I've now restored it. |
OK, that's beyond my expertise - but why would it make a difference where the original memory comes from ? Do you mean that if we use something like a |
I think we can have as much non-pageable memory as the available physical memory. |
Going back to
Reading the documentation for |
@fwyzard Replying collectively
Something like that. If we store struct of pointers and ints, I'd guess ROOT can't serialize it without a custom streamer. With
Ok, I'm happy to stand corrected. I just recalled people wondering in NVidia forums why they can't allocate more than ~4 GB non-pageable even if the system has more.
While |
A new Pull Request was created by @makortel (Matti Kortelainen) for CMSSW_10_2_X_Patatrack. It involves the following packages: RecoLocalTracker/Configuration @cmsbot, @fwyzard can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
…nsfer (#132) Always produce the CPU cluster and rechit collections, since they are needed anyway. Add transfer and conversion flags to clusterizer, rechits and CA. Add a skeleton for the future pixel track producer. Add customize functions to disable conversions to legacy formats, and to disable unnecessary GPU->CPU transfers.
This PR simplifies the raw2cluster and rechits CPU output so that they are always produced (since by default the products are always needed in CPU, resolves #67). Then it adds explicit configuration flags to switch off the conversion from CPU-SOA to CPU-legacy, and the GPU->CPU transfers altogether. It also adds two customization functions extending the "profiling workflow" to disable the data conversion, and, in addition, disable the transfers.
The customize functions are useful to study the technical performance of a "what if" case where we would replace the legacy dataformats with SOAs.
@felicepantaleo @fwyzard @VinInn