MCPcopy Create free account
hub / github.com/QuEST-Kit/QuEST / setDiagMatrFromMultiDimLists

Function setDiagMatrFromMultiDimLists

quest/src/api/matrices.cpp:701–720  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

699
700
701extern "C" void setDiagMatrFromMultiDimLists(DiagMatr out, void* lists, int* numQubitsPerDim, int numDims) {
702 validate_matrixFields(out, __func__);
703 validate_multiVarFuncQubits(out.numQubits, numQubitsPerDim, numDims, __func__);
704
705 vector<qindex> listInds(numDims);
706
707 // set each element of the diagonal in-turn, which is embarrassingly parallel,
708 // although we do not parallelise - the DiagMatr is intendedly small
709 for (qindex elemInd=0; elemInd<out.numElems; elemInd++) {
710
711 // nested list indices = unsigned integer values of variables
712 fast_getSubQuregValues(elemInd, numQubitsPerDim, numDims, false, listInds.data());
713
714 // update only the CPU elems
715 out.cpuElems[elemInd] = util_getElemFromNestedPtrs(lists, listInds.data(), numDims);
716 }
717
718 // overwrite all GPU elems
719 syncDiagMatr(out);
720}
721
722
723extern "C" void setFullStateDiagMatrFromMultiDimLists(FullStateDiagMatr out, void* lists, int* numQubitsPerDim, int numDims) {

Callers

nothing calls this directly

Calls 5

validate_matrixFieldsFunction · 0.85
fast_getSubQuregValuesFunction · 0.85
syncDiagMatrFunction · 0.85

Tested by

no test coverage detected