Giter VIP home page Giter VIP logo

qex_staghmc's Introduction

QEX: Quantum EXpressions lattice field theory framework

Description of QEX fork:

Modular code for fast deployment of Hybrid Monte Carlo (HMC) with many options for simulating with/without nHYP smeared (or unsmeared) staggered fermions and Pauli-Villars (PV) bosons. Most options (gauge action, boundary conditions, nHYP smearing parameters, and much more) are provided in an XML file, such that the action being simulated can be quickly/easily modified without needing to modify the source code and/or recompile. Source code can be found here. See input_hmc.xml for a complete list of tunable parameters for the gauge-fermion-PV action, HMC specifications, etc.

For deployment, make sure that you 1.) follow the installation instructions given in the base QEX respository and 2.) install MDevolve using Nimble. Once you've done this, simply run "make staghmc_spv" in your build directory and you're done. If you're confused because the whole process seemed far too easy, I assure you that it really was that easy and encourage you to thank James Osborn and Xiao-Yong Jin for the time & effort that they've put into QEX. Instructions for running the code can be found at the top of staghmc_spv.nim.

This fork of QEX also ships with a modular gauge flow code, allowing for Wilson, adjoint-plaquette, and any variation of rectangular action for the flow. The gauge flow code can be found here.

There is also an XY model code with Wolff cluster updates that can be found here. The XY model simulation code also comes with options for performing U(1) gradient flow with the XY model action as the flow action, which is equivalent to a gradient flow of the XY model action with an explicit constraint that preserves the unit norm of the spins on the lattice.

For the U(1) gradient flow of the XY model action, I use Arraymancer for vectorization. The latter gradient flow code is not as efficient as the gauge flow code that is native to QEX, and it would be desireable to have a version of the U(1) gradient flow code that is build within the QEX framework. One option is simply to compile the gauge flow code in this repository with --nc=1 and to modify the action to be the XY model action; this may come in a future version of this repository, but it is unlikely.

Description of QEX:

QEX is a high-level framework for lattice field operations written in the language Nim.

It provides optimized lattice field operations, including SIMD support, for CPU architectures (native GPU support is currently experimental). Since Nim compiles to native C/C++, directly calling any C/C++ lattice code or library from QEX is relatively easy to do.

Some simple code examples are here ex0.nim ex1.nim.

It currently supports

  • U(1), SU(2..4) gauge fields in any dimension
  • SciDAC I/O
  • Gauge fixing
  • Staggered solver and forces (Asqtad, HISQ, nHYP)
  • Wilson solver (no clover yet)
  • Interface for Chroma, Grid, QUDA interoperability

Installation guide: INSTALL.md

Build guide: BUILD.md

Further examples:

qex_staghmc's People

Contributors

jxy avatar jcosborn avatar ctpeterson avatar etneil avatar weinbe2 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.