unitaryfund / qrack

Comprehensive, GPU accelerated framework for developing universal virtual quantum processors
https://qrack.readthedocs.io/en/latest/
GNU Lesser General Public License v3.0
177 stars 38 forks source link

Total, API-conformant `QUnitMulti` refactor #882

Closed WrathfulSpatula closed 2 years ago

WrathfulSpatula commented 3 years ago

QUnitMulti was an attempt to code heterogeneous parallelism with relatively little physical multi-device hardware available. With a better multi-device environment, I realize I missed the fundamental mark, which would instead require a minor Qrack::OCLEngine redesign. However, I think QUnitMulti overloads the right methods, for intercepting allocation, to attempt load balancing.

I'm saying, I have a better development environment now, to test QUnitMulti, and I now realize it effectively doesn't yet do multi-device parallelism. It needs a total refactor. Specifically, I need to separate QEngineOCL calls to the OCLEngine resource counter by device index. Then, QUnitMulti should iterate over devices, instead of qubit shards, for proactive MakeEngine() load balancing.

WrathfulSpatula commented 3 years ago

QUnitMulti will stay about as simple as it already is, in terms of lines of code.

twobombs commented 3 years ago

Take your time. You know I've got a TeslaK80 avaliable for testing :)

WrathfulSpatula commented 2 years ago

Come to think of it, we already did what this issue proposed. Anyway, we can close it, then.