Adding new Nc to Multigrid - lattice/quda GitHub Wiki

Adding support for additional coarse Nc to QUDA requires touching a large number of files. To simplify this process, a list of files which need modifications is given below, with remarks on what work needs to be done in a given file.

Please note that the total number of degrees of freedom per coarse site is 2 x N_c, where the two refers to the two chirality degrees of freedom.

  • blas_core.cuh - Instantiate another color.
  • block_orthogonalize.cu - Instantiate all combinations of colors that the new color could be coarsened from or to.
  • coarsecoarse_op.cuh - Instantiate another color.
  • color_spinor_pack.cu - Instantiate both the new color, as well as all products of the new color and those which it could be coarsened from or to. For example, if you wanted to add Nc = 16 for Wilson, you'd want to instantiate Nc = 16, 48 (3 for the Wilson op x 16), as well as likely one of 256 (coarsen 16 to 16), 384 (coarsen 16 to 24), and 512 (coarsen 16 to 32).
  • color_spinor_util.cu - Instantiate another color twice: once in the function genericSource, and again in genericPrintVector. (For debugging block orthonormalization routines, you may want to instantiate products of colors in the function genericPrintVector as well.)
  • copy_color_spinor_mg.cuh - Instantiate both the new color, as well as products of colors as described for color_spinor_pack.cu.
  • copy_gauge_mg.cu - Instantiate 2 times Nc, despite the conditional statement comparing against in.Ncolor() (this is a consequence of the convention of the total number of degrees of freedom equaling two times the number of colors).
  • cuda_color_spinor_field.cu - Instantiate another color. (For debugging block orthonormalization routines, you may want to instantiate products of colors as well.)
  • dslash_coarse.cu - Instantiate another color.
  • extract_gauge_ghost_mg.cu - Instantiate 2 times Nc, for the reason noted with copy_gauge_mg.cu.
  • multi_blas_core.cuh - Instantiate another color.
  • prolongator.cu - Instantiate all combinations of colors that the new color could be coarsed from or to.
  • reduce_core.cuh - Instantiate another color.
  • restrictor.cu - Instantiate all combinations of colors that the new color could be coarsened from or to.
  • spinor_noise.cu - Instantiate another color.

Please note that the addition of an Nc value increases the compile time for each relevant file. Please be mindful of this when adding support for a value. Likewise, for your own personal tests, consider disabling unneeded colors to offset the increase in compile time.