You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When looking towards larger systems and an increased amount of auxiliary operators (multiple hundreds to thousands), the performance of QubitMapper.mode_based_mapping becomes a serious bottleneck in the pre-processing step. Waiting times for all auxiliary operators to be mapped can reach on the order of minutes.
I believe, performance can be significantly improved if we:
cache the processed pauli_list object within QubitMapper (requires changing the mode_based_mapping from a static to an instance method)
refactor the iteration to deal with sparse labels rather than dense ones (requires sparse labels to be the default, a conversion of dense to sparse, and updating the VibrationalOp to be inline with the FermionicOp again; if this gets tackled before said update, we can also handle the mapping FermionicOps separately for the time being)
EDIT: updated the script above to reflect the new code locations.
Below is the timing report. Right now, this pretty much scales 1-to-1 with the number of operators but I believe we can significantly reduce the overhead.
What is the expected enhancement?
When looking towards larger systems and an increased amount of auxiliary operators (multiple hundreds to thousands), the performance of
QubitMapper.mode_based_mapping
becomes a serious bottleneck in the pre-processing step. Waiting times for all auxiliary operators to be mapped can reach on the order of minutes.I believe, performance can be significantly improved if we:
pauli_list
object withinQubitMapper
(requires changing themode_based_mapping
from a static to an instance method)VibrationalOp
to be inline with theFermionicOp
again; if this gets tackled before said update, we can also handle the mappingFermionicOp
s separately for the time being)TwoBodyElectronicIntegrals.to_second_q_op
performance #638 by constructing a singleSparsePauliOp
from a list of terms rather than performing the full computation each timeI put together a script which benchmarks the performance of the mapping.
EDIT: updated the script above to reflect the new code locations.
Below is the timing report. Right now, this pretty much scales 1-to-1 with the number of operators but I believe we can significantly reduce the overhead.
The text was updated successfully, but these errors were encountered: