Computational Science Technical Note CSTN-104


Cluster and Fast-Update Simulations of Regular and Rewired Lattice Ising Models Using CUDA and Graphical Processing Units

K. A. Hawick, A. Leist and D. P. Playne

Archived November 2009, Revised August 2010.


Models such as the Ising system in computational physics are still important tools for analysing phase transitions and universal behaviours for new irregular and distorted lattice networks. Data-parallelism can be exploited to speed up such simulations as well as their analysis using general purpose graphical processing units (GPU) and other accelerating devices. We report on the use of various GPU performance optimisation techniques for both local update schemes like checkerboard Metropolis as well as non-local cluster-update algorithms such as that of Wolff for the Ising model. We present some data-parallel algorithms and code fragments along with performance analysis and discussion of optimal GPU data memory models for this work including bit packed spin-coding techniques. We report some results on changes to the critical temperature arising from probabilistic small-world network rewiring as well as giving algorithms and performance data on parallelising irregular Ising model systems. We employ NVIDIA's compute unified device architecture (CUDA) programming language and report on performance data achieved using modern many-core GPUs to optimise the ``wall clock cost per decorrelated measurement'' on both regular and irregular Ising models.

Keywords: Ising model; Metropolis Monte Carlo; cluster update; Wolff algorithm; CUDA, GPU.

Full Document Text: PDF version.

Citation Information: BiBTeX database for CSTN Notes.

BiBTeX reference:

  author = {K. A. Hawick and A. Leist and D. P. Playne},
  title = {Cluster and Fast Update Lattice Simulations Using Graphical Processing
  institution = {Computer Science, Massey University},
  year = {2010},
  number = {CSTN-104},
  address = {Albany, North Shore 102-904, Auckland, New Zealand},
  month = {August},
  timestamp = {2009.12.16},
  url = {}

[ CSTN Index | CSTN BiBTeX ]