code: def one_iteration(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)
  
file_path: pycuda/pycuda/sparse/cg.py
imports: from __future__ import division
  from __future__ import absolute_import
  from pycuda.sparse.inner import AsyncInnerProduct
  from pytools import memoize_method
  import pycuda.driver
  import pycuda.gpuarray
  import numpy
label_desc: Use image node_id 7 for calling the CGStateContainer obj's underlying member method code with example usage: obj.one_iteration(compute_real_residual) without return types