MCPcopy Create free account
hub / github.com/NVIDIA/cuda-quantum / __migrateLists

Method __migrateLists

python/cudaq/kernel/ast_bridge.py:1135–1164  ·  view source on GitHub ↗

Replaces all lists in the given value by the list returned by the `migrate` function, including inner lists. Does an in-place replacement for list elements.

(self, value, migrate)

Source from the content-addressed store, hash-verified

1133 self.currentNode)
1134
1135 def __migrateLists(self, value, migrate):
1136 """Replaces all lists in the given value by the list returned by the
1137 `migrate` function, including inner lists.
1138
1139 Does an in-place replacement for list elements.
1140 """
1141 if cc.StdvecType.isinstance(value.type):
1142 eleTy = cc.StdvecType.getElementType(value.type)
1143 if self.containsList(eleTy):
1144 size = cc.StdvecSizeOp(self.getIntegerType(), value).result
1145 ptrTy = cc.PointerType.get(cc.ArrayType.get(eleTy))
1146 iterable = cc.StdvecDataOp(ptrTy, value).result
1147
1148 def bodyBuilder(iterVar):
1149 eleAddr = cc.ComputePtrOp(
1150 cc.PointerType.get(eleTy), iterable, [iterVar],
1151 DenseI32ArrayAttr.get([kDynamicPtrIndex],
1152 context=self.ctx))
1153 loadedEle = cc.LoadOp(eleAddr).result
1154 element = self.__migrateLists(loadedEle, migrate)
1155 cc.StoreOp(element, eleAddr)
1156
1157 self.createInvariantForLoop(bodyBuilder, size)
1158 return migrate(value)
1159 if (cc.StructType.isinstance(value.type) and
1160 self.containsList(value.type)):
1161 return self.__copyStructAndConvertElements(
1162 value, conversion=lambda _, v: self.__migrateLists(v, migrate))
1163 assert not self.containsList(value.type)
1164 return value
1165
1166 def __createFunctionWithinKernel(self, arguments, statements):
1167 """Returns a `cc.LambdaOp` used to represent functions defined within

Callers 3

bodyBuilderMethod · 0.95
processDecoratorCallMethod · 0.95
visit_ReturnMethod · 0.95

Calls 6

containsListMethod · 0.95
getIntegerTypeMethod · 0.95
getElementTypeMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected