2#if defined(INCLUDED_BY_FACTORY) && defined(__linux__)
11 explicit GpuTensorChainSimulator(
bool isOperatorChain) : TensorChainRouting(isOperatorChain)
15 using MeetingPositionCallback = int64_t (*)(
void *,
const int64_t *);
17 virtual MeetingPositionCallback GetMeetingPositionCallback()
const
19 return &FindBestMeetingPosition;
22 static int64_t FindBestMeetingPosition(
void *thisPtr,
const int64_t *bonds)
noexcept
24 auto *self =
static_cast<GpuTensorChainSimulator *
>(thisPtr);
27 return self->PlanMeetingPosition(bonds, self->nrQubits ? self->nrQubits - 1 : 0);
31 self->InvalidateDummyHistory();
36 static void BondDimCallback(
void *thisPtr,
const int64_t *bondDims)
38 GpuTensorChainSimulator *self =
static_cast<GpuTensorChainSimulator *
>(thisPtr);
39 return self->BondDimCallbackFunc(bondDims);
42 static void BondSummaryCallback(
void *thisPtr, int64_t maximum)
44 auto *self =
static_cast<GpuTensorChainSimulator *
>(thisPtr);
46 self->curMaxBondDim = std::max(self->curMaxBondDim,
static_cast<size_t>(maximum));
49 void BondDimCallbackFunc(
const int64_t *bondDims)
54 for (
int i = 0; i < static_cast<int>(nQ) - 1; ++i)
55 if (
static_cast<size_t>(bondDims[i]) > curMaxBondDim)
56 curMaxBondDim =
static_cast<size_t>(bondDims[i]);
unsigned long int GetNumberOfQubits(void *sim)