コード例 #1
0
    def cache(self):
        if self._cache is None:
            cache = K.create_gate_cache(self)

            qubits = sorted(self.nqubits - q - 1 for q in self.target_qubits)
            cache.qubits_tensor = qubits + [q + self.nqubits for q in qubits]
            cache.target_qubits_dm = self.qubits + tuple(q + self.nqubits for q in self.qubits)

            if K.name != "custom":
                cache.calculation_cache = K.create_einsum_cache(
                    cache.target_qubits_dm, 2 * self.nqubits)

            self._cache = cache

        return self._cache
コード例 #2
0
ファイル: gates.py プロジェクト: qiboteam/qibo
    def cache(self):
        if self._cache is None:
            cache = K.create_gate_cache(self)

            qubits = sorted(self.nqubits - q - 1 for q in self.target_qubits)
            cache.qubits_tensor = K.cast(qubits +
                                         [q + self.nqubits for q in qubits],
                                         dtype="int32")
            cache.target_qubits_dm = self.qubits + tuple(q + self.nqubits
                                                         for q in self.qubits)

            if not K.is_custom:
                cache.calculation_cache = K.create_einsum_cache(
                    cache.target_qubits_dm, 2 * self.nqubits)

            self._cache = cache

        return self._cache