All Projects → ORNL-CEES → Profugus

ORNL-CEES / Profugus

Licence: bsd-2-clause
A set of radiation transport mini-applications used for performance optimization on HPC systems.

Labels

Projects that are alternatives of or similar to Profugus

Unity Script Collection
A maintained collection of useful & free unity scripts / library's / plugins and extensions
Stars: ✭ 3,640 (+15726.09%)
Mutual labels:  particles
Canvas Nest.js
♋ Interactive Particle / Nest System With JavaScript and Canvas, no jQuery.
Stars: ✭ 3,966 (+17143.48%)
Mutual labels:  particles
Particle
A simple portfolio Jekyll theme:
Stars: ✭ 747 (+3147.83%)
Mutual labels:  particles
Three.proton
three.proton is a magical 3d particle engine using three.js library. It is based on the Proton engine library.
Stars: ✭ 327 (+1321.74%)
Mutual labels:  particles
Android Particles
A lightweight Particle Animation Library for Android
Stars: ✭ 350 (+1421.74%)
Mutual labels:  particles
Pixi Particles
A particle system for PixiJS
Stars: ✭ 555 (+2313.04%)
Mutual labels:  particles
orkid
Orkid Media Engine (C++/Lua/Python3/Linux/MacOs/OpenVR/Qt5)
Stars: ✭ 20 (-13.04%)
Mutual labels:  particles
Regl Fire
Fire particle system made with regl
Stars: ✭ 16 (-30.43%)
Mutual labels:  particles
Beam
✨ Expressive WebGL
Stars: ✭ 383 (+1565.22%)
Mutual labels:  particles
Webgl Wind
Wind power visualization with WebGL particles
Stars: ✭ 601 (+2513.04%)
Mutual labels:  particles
React Particles Webgl
🔆 A 2D/3D particle library built on React, Three.js and WebGL
Stars: ✭ 330 (+1334.78%)
Mutual labels:  particles
Jparticles
A concise, lightweight, and efficient Canvas library for building some cool particle effects.
Stars: ✭ 350 (+1421.74%)
Mutual labels:  particles
Twinkle
✨ Twinkle iOS/tvOS app elements in Swift
Stars: ✭ 569 (+2373.91%)
Mutual labels:  particles
Gpu Particles
A GPU Particle System for Unity
Stars: ✭ 313 (+1260.87%)
Mutual labels:  particles
Flutter particle clock
The Grand Prize-winning entry of the #FlutterClock challenge.
Stars: ✭ 771 (+3252.17%)
Mutual labels:  particles
Gl Water2d
2D liquid simulation in WebGL
Stars: ✭ 260 (+1030.43%)
Mutual labels:  particles
Weatherview
WeatherView is an Android Library let you make cool weather animations for your app
Stars: ✭ 426 (+1752.17%)
Mutual labels:  particles
React Particles Js
Particles.js for React
Stars: ✭ 901 (+3817.39%)
Mutual labels:  particles
Korge
KorGE Game Engine. Multiplatform Kotlin Game Engine
Stars: ✭ 780 (+3291.3%)
Mutual labels:  particles
Glchaos.p
3D GPUs Strange Attractors and Hypercomplex Fractals explorer - up to 256 Million particles in RealTime
Stars: ✭ 590 (+2465.22%)
Mutual labels:  particles

Description


Profugus is an open-source mini-application (mini-app) for radiation transport and reactor applications. It contains the fundamental computational kernels used in the Exnihilo code suite from Oak Ridge National Laboratory. However, Exnihilo is production code with a substantial user base. Furthermore, Exnihilo is export controlled. This makes collaboration with computer scientists and computer engineers difficult. Profugus is designed to bridge that gap. By encapsulating the core numerical algorithms in an abbreviated code base that is open-source, computer scientists can analyze the algorithms and easily make code-architectural changes to test performance without compromising the production code values of Exnihilo.

Profugus is not meant to be production software with respect to problem analysis. The computational kernels in Profugus are designed to analyze performance, not correctness. Nonetheless, users of Profugus can setup and run problems with enough real-world features to be useful as proof-of-concept for actual production work.

Profugus is also used as a test-bed mini-app for the ASCR projects XPRESS and MCREX.

Profugus Development Team

Profugus contains the computational kernels from the Exnihilo code base. The core Exnihilo development team consists of the following scientists (listed alphabetically)

Profugus is developed and maintained by the following team:

Profugus Packages

Profugus constains the following code mini-apps:

SPn Mini-app of Simplified Spherical Harmonics ("SPn") computational kernel.

MC Mini-app of Monte Carlo computational kernel.

Documentation on the mini-apps (methods and execution) are given in Running The Mini-Applications. There are several support packages that are used by the mini-apps. These are:

Utils Utilities and testing framework used by other packages.

Matprop Data structures for storing material properties (cross-sections).

Minisweep Although contained in a separate code repository, the Profugus project also includes the Minisweep application developed by Wayne Joubert [email protected]. Minisweep is a deterministic Sn radiation transport miniapp used for performance optimization and performance model evaluation on HPC architectures. The Minisweep repository can be found at https://github.com/wdj/minisweep.

Profugus is designed to build and run with a minimum of dependencies. However, there are some requirements. The third-party software (TPLs) necessary to build Profugus is all open-source and freely available. The TPLs for Profugus are listed in the following table:

+-----------------------+---------------+---------------------------------------+ | TPL | Required | Comments | +=======================+===============+=======================================+ | TriBITS | Yes | TriBITS is the Trilinos build system | +-----------------------+---------------+---------------------------------------+ | Trilinos | Yes | Trilinos is an open-source solvers | +-----------------------+---------------+---------------------------------------+ | BLAS/LAPACK | Yes | Use vendor-specific implementation | +-----------------------+---------------+---------------------------------------+ | MPI | No | OpenMPI and MPICH are suggested | +-----------------------+---------------+---------------------------------------+ | HDF5 | No | Parallel HDF5 will allow output of | +-----------------------+---------------+---------------------------------------+

Building The Code


The most straightforward method for building Profugus is to use the scripts in Profugus/install. Profugus uses the TriBITS build system. This system is a set of package-based extensions to standard cmake. So, first you need to obtain Trilinos and TriBITS and put them in your top-level Profugus directory::

cd Profugus git clone https://github.com/TriBITSPub/TriBITS.git ln -s $PATH_TO_TRILINOS .

The preferred mechanism for using the build scripts is to make a target directory where the build is to be performed::

pwd /home/me mkdir debug cd debug mkdir target cd target pwd /home/me/debug/target

The install directory contains several example build scripts. General options for all platforms (which can be overridden at configure time) are specified in the install/base.cmake::

##---------------------------------------------------------------------------##

CMAKE BASE FILE

##---------------------------------------------------------------------------##

Default build all packages

SET(Profugus_ENABLE_Utils ON CACHE BOOL "") SET(Profugus_ENABLE_Matprop ON CACHE BOOL "") SET(Profugus_ENABLE_SPn ON CACHE BOOL "") SET(Profugus_ENABLE_MC ON CACHE BOOL "")

Turn on tests

SET(Profugus_ENABLE_TESTS ON CACHE BOOL "") SET(Profugus_TEST_CATEGORIES "BASIC" CACHE STRING "")

Turn on SS code and optional packages by default

SET(Profugus_ENABLE_ALL_FORWARD_DEP_PACKAGES OFF CACHE BOOL "") SET(Profugus_ENABLE_ALL_OPTIONAL_PACKAGES ON CACHE BOOL "") SET(Profugus_ENABLE_SECONDARY_STABLE_CODE ON CACHE BOOL "")

Up the max num procs

SET(MPI_EXEC_MAX_NUMPROCS 8 CACHE STRING "")

Turn off binutils

SET(Teuchos_ENABLE_BinUtils OFF CACHE BOOL "")

Turn off Zoltan2

SET(Profugus_ENABLE_Zoltan2 OFF CACHE BOOL "")

Compiler options

SET(BUILD_SHARED_LIBS ON CACHE BOOL "") SET(CMAKE_CXX_FLAGS "-std=c++11 -Wno-deprecated-declarations" CACHE STRING "") SET(Profugus_ENABLE_CXX11:BOOL=ON)

TriBITS stuff

SET(Profugus_ENABLE_INSTALL_CMAKE_CONFIG_FILES OFF CACHE BOOL "") SET(Profugus_DEPS_XML_OUTPUT_FILE "" CACHE FILEPATH "")

By default, all of the packages inside of Profugus are turned on. Furthermore, C++-11 is required. The default options specify the appropriate compiler flags for gcc. The tests are also turned on by default; to disable tests in any upstream package simply do not explicitly ENABLE that package. For example, to build the SPn package and all of its tests but only include required source from upstream packages, the user would specify::

SET(Profugus_ENABLE_SPn ON CACHE BOOL "")

In this case, only the pieces of Utils needed to build SPn are compiled. All tests can be turned off by setting Profugus_ENABLE_TESTS to OFF.

The install directory contains several build scripts that are all suffixed by the platform name. For example, to build on a Linux x86_64 system the "install/cmake_x86_64.sh" script can be used::

#!/bin/sh ##---------------------------------------------------------------------------##

CMAKE FOR X86_64

##---------------------------------------------------------------------------##

CLEANUP

rm -rf CMakeCache.txt rm -rf CMakeFiles

SOURCE AND INSTALL

SOURCE=<SET_SOURCE_DIR> INSTALL=<SET_INSTALL_DIR>

BUILD OPTIONS

BUILD="DEBUG" MPI="ON"

TPL PATHS

HDF5_PATH="/vendors/hdf5_parallel" MPI_PATH="/opt/openmpi/gcc/current"

##---------------------------------------------------------------------------##

cmake
-DCMAKE_BUILD_TYPE:STRING="$BUILD"
-DTPL_ENABLE_MPI:BOOL=$MPI
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL

-DMPI_BASE_DIR:PATH=$MPI_PATH

-DTPL_ENABLE_HDF5:BOOL=ON
-DHDF5_INCLUDE_DIRS:PATH=$HDF5_PATH/include
-DHDF5_LIBRARY_DIRS:PATH=$HDF5_PATH/lib

-DBLAS_LIBRARY_DIRS:PATH=/vendors/gcc/atlas/lib
-DLAPACK_LIBRARY_DIRS:PATH=/vendors/gcc/atlas/lib
-DBLAS_LIBRARY_NAMES:STRING="f77blas;cblas;atlas"
-DLAPACK_LIBRARY_NAMES:STRING="lapack"

-DProfugus_CONFIGURE_OPTIONS_FILE:FILEPATH="${SOURCE}/install/base.cmake"
-DProfugus_ASSERT_MISSING_PACKAGES:BOOL=OFF

${SOURCE}

##---------------------------------------------------------------------------##

end of cmake_x86_64.sh

##---------------------------------------------------------------------------##

The source and install locations must be set. Also, to enable a optimized build set BUILD to RELEASE. Adjust the paths and libraries for LAPACK to fit your platform. The example assumes that the ATLAS LAPACK is available. Any standard LAPACK distribution will work. HDF5 is not required, to build/run/test the applications; however, problem output will be severely curtailed if a parallel HDF5 option is not provided. If HDF5 is not available, setting::

-DTPL_ENABLE_HDF5:BOOL=OFF \

will disable HDF5.

To complete the configuration, execute this script inside the target directory and then make/test/install::

pwd /home/me/debug/target sh /home/me/Profugus/install/cmake_x86_64.sh make -j 8 ctest -j 8 make -j 8 install

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].