def METHOD_NAME(self, compute_real_residual=False):
    # typed up from J.R. Shewchuk,
    # An Introduction to the Conjugate Gradient Method
    # Without the Agonizing Pain, Edition 1 1/4 [8/1994]
    # Appendix B3
    q = self.operator(self.d)
    myip = gpuarray.dot(self.d, q)
    alpha = self.guarded_div(self.delta, myip)
    self.lc2(1, self.x, alpha, self.d, out=self.x)
    if compute_real_residual:
        self.residual = self.lc2(1, self.rhs, -1, self.operator(self.x))
    else:
        self.lc2(1, self.residual, -alpha, q, out=self.residual)
    s = self.precon(self.residual)
    delta_old = self.delta
    delta = AsyncInnerProduct(self.residual, s, self.pagelocked_allocator)
    self.delta = delta.gpu_result
    beta = self.guarded_div(self.delta, delta_old)
    self.lc2(1, s, beta, self.d, out=self.d)
    if compute_real_residual:
        self.real_delta_queue.append(delta)