Coder Social home page Coder Social logo

goracle / simulateqcd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from latticeqcd/simulateqcd

0.0 0.0 0.0 21.24 MB

SIMULATeQCD is a multi-GPU Lattice QCD framework that makes it simple and easy for physicists to implement lattice QCD formulas while still providing the best possible performance.

Home Page: https://latticeqcd.github.io/SIMULATeQCD/

License: GNU General Public License v3.0

Shell 1.19% C++ 91.87% Python 0.66% C 3.66% CSS 0.01% Makefile 0.03% HTML 0.01% CMake 2.14% Batchfile 0.03% Cuda 0.41%

simulateqcd's Introduction

SIMULATeQCD

Maintenance

a SImple MUlti-GPU LATtice code for QCD calculations

SIMULATeQCD is a multi-GPU Lattice QCD framework that makes it simple and easy for physicists to implement lattice QCD formulas while still providing the best possible performance.

Prerequisites

The following software is required to compile SIMULATeQCD:

  • cmake (Some versions have the "--phtread" compiler bug. Versions that definitely work are 3.14.6 or 3.19.2.)
  • C++ compiler with C++17 support (e.g. g++-9).
  • MPI (e.g. openmpi-4.0.4).
  • CUDA Toolkit version 11.0 (NOT 11.1 or 11.2. CUDA 11.4 has a fast compilation time, but we have not yet checked the performance.)
  • pip install -r requirements.txt to build the documentation.

Downloading the code

First download and activate git-lfs. The code can then be cloned to your machine using:

git clone https://github.com/LatticeQCD/SIMULATeQCD.git

Building the code

To setup the compilation, create a folder outside of the code directory (e.g. ../build/) and from there call the following example script:

cmake ../simulateqcd/ \
-DARCHITECTURE="70" \
-DUSE_GPU_AWARE_MPI=ON \
-DUSE_GPU_P2P=ON \

Here, it is assumed that your source code folder is called simulateqcd. Do NOT compile your code in the source code folder! You can set the path to CUDA by setting the cmake parameter -DCUDA_TOOLKIT_ROOT_DIR:PATH. -DARCHITECTURE sets the GPU architecture (i.e. compute capability version without the decimal point). For example "60" for Pascal and "70" for Volta. Inside the build folder, you can now begin to use make to compile your executables, e.g.

make NameOfExecutable

If you would like to speed up the compiling process, add the option -j, which will compile in parallel using all available CPU threads. You can also specify the number of threads manually using, for example, -j 4.

Popular production-ready executables are:

# generate HISQ configurations
rhmc                 # Example Parameter-file: parameter/applications/rhmc.param
# generate quenched gauge configurations using HB and OR
GenerateQuenched     # Example Parameter-file: parameter/applications/GenerateQuenched.param
# Apply Wilson/Zeuthen flow and measure various observables
gradientFlow         # Example Parameter-file: parameter/applications/gradientFlow.param
# Gauge fixing
gaugeFixing          # Example Parameter-file: parameter/applications/gaugeFixing.param

In the documentation you will find more information on how to execute these programs.

Example: Plaquette action computation

(See Full code example.)

template<class floatT, bool onDevice, size_t HaloDepth>
struct CalcPlaq {
  gaugeAccessor<floatT> gaugeAccessor;
  CalcPlaq(Gaugefield<floatT,onDevice,HaloDepth> &gauge) : gaugeAccessor(gauge.getAccessor()){}
  __device__ __host__ floatT operator()(gSite site) {
    floatT result = 0;
    for (int nu = 1; nu < 4; nu++) {
      for (int mu = 0; mu < nu; mu++) {
        result += tr_d(gaugeAccessor.template getLinkPath<All, HaloDepth>(site, mu, nu, Back(mu), Back(nu)));
      }
    }
    return result;
  }
};

(... main ...)
latticeContainer.template iterateOverBulk<All, HaloDepth>(CalcPlaq<floatT, HaloDepth>(gauge))

Documentation

Please check out the documentation to learn how to use SIMULATeQCD.

Getting help and bug report

Open an issue, if...

  • you have troubles compiling/running the code.
  • you have questions on how to implement your own routine.
  • you have found a bug.
  • you have a feature request.

If none of the above cases apply, you may also send an email to lukas.mazur(at)uni-paderborn(dot)de.

Contributors

L. Mazur, H. Sandmeyer, D. Bollweg, D. Clarke, L. Altenkort, P. Scior, H.-T. Shu, R. Larsen, M. Rodekamp, O. Kaczmarek, C. Schmidt, S. Ali, J. Goswami

Citing SIMULATeQCD

If you are using this code in your research please cite:

Acknowledgment

  • We acknowledge support by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) through the CRC-TR 211 'Strong-interaction matter under extreme conditions'โ€“ project number 315477589 โ€“ TRR 211.
  • This work was partly performed in the framework of the PUNCH4NFDI consortium supported by DFG fund "NFDI 39/1", Germany.
  • This work is also supported by the U.S. Department of Energy, Office of Science, though the Scientific Discovery through Advance Computing (SciDAC) award Computing the Properties of Matter with Leadership Computing Resources.

simulateqcd's People

Contributors

clarkedavida avatar dbollweg avatar goracle avatar jishnuxx avatar luhuhis avatar lukas-mazur avatar olaf-kaczmarek avatar rasmusnl avatar sajidali1031 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.