Giter Site home page Giter Site logo

epcced / epcc-reframe Goto Github PK

View Code? Open in Web Editor NEW
6.0 11.0 14.0 49.1 MB

Repository for Reframe configuration and tests for EPCC systems

License: GNU General Public License v3.0

Python 64.00% C 17.46% C++ 0.04% Fortran 14.79% Shell 0.91% Makefile 0.19% CMake 2.60%

epcc-reframe's Introduction

EPCC ReFrame

Repository for ReFrame configuration and tests for EPCC systems.

Structure

  • configuration/: configuration files for different EPCC systems
  • tests/: test library. All tests should, wherever possible, be configured so that they can run on all systems

Executing the test suite

Run all tests

To run the full suite of tests on ARCHER2, run the following commands:

module load reframe
module load epcc-reframe

epcc-reframe -r

To run the full suite of tests on Cirrus, run the following commands:

module load epcc-reframe

epcc-reframe -r

The last command is just a wrapper around ReFrame to call all the tests and use the ARCHER2 configuration. The -r is the run flag in ReFrame.

Run specific tests

Alternatively you may only wish to run a subset of tests. To run a specific test

reframe -C ${EPCC_REFRAME_CONFIG} -c *path-to-a-test* -r

To run all tests in a directory:

reframe -C ${EPCC_REFRAME_CONFIG} -c *path-to-a-test-directory* -R -r

Where EPCC_REFRAME_CONFIG is set by the epcc-reframe module and is the path for the ARCHER2 configuration.

Contributing and style guide

Please see detailed instructions here.

epcc-reframe's People

Contributors

adrianjhpc avatar aturner-epcc avatar bigballoon8 avatar eleanor-broadway avatar holly-t avatar jirudaya avatar jprichings avatar juanfrh avatar kevinstratford avatar ruiapostolo avatar welucas2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

epcc-reframe's Issues

Create a style guide

Having a consistent style guide helps when creating new, or upgrading older tests.
Furthermore, including linter configuration files in the repository would ensure everyone can easily follow the rules.

I am partial to the philosophy behind Black - I think it makes for readable code.
Regarding PEP8, I don't like the 79 character limit (E501) and W503, as I feel the first pressures people into writing more cryptic variable names, and the latter is supposed to be reversed soon. I would suggest ignoring W503 and setting a line-length of 120 characters.

Add module tests

Add simple tests to ensure that all modulepaths that should be visible, are visible (on login and compute nodes)

Add Singularity tests

Add tests that Singularity works as expected:

  • Pull image from DockerHub and run on frontend
  • Run pre-existing image on compute nodes
  • Run prexisting parallel image across multiple compute nodes (and check performance)

Add runtime option on Lustre caching to benchio tests

At the moment it is up to the system if Lustre client caching is used or not which can lead to inconsistencies with test performance. We should update the benchio source code to allow the test to switch caching off at runtime for all the different tests.

For MPIIO:

  call MPI_File_sync(fh,ierr)
  call MPI_File_close(fh, ierr)

For HDF5:

  ! Close the file.
  CALL h5fflush_f( file_id , H5F_SCOPE_GLOBAL_F,ierr )
  CALL h5fclose_f(file_id, ierr)

For file-per-process:

! Declare the interface for POSIX fsync function
  interface
    function fsync (fd) bind(c,name="fsync")
    use iso_c_binding, only: c_int
      integer(c_int), value :: fd
      integer(c_int) :: fsync
    end function fsync
  end interface

...file writing...

  ! Flush and sync
  flush(10)
  ret = fsync(fnum(10))

  ! Handle possible error
  if (ret /= 0) stop "Error calling FSYNC"

Add placement tests

Add tests to verify that Slurm process/thread placement on compute nodes is behaving as expected.

Test MPMD job submission

Test that MPMD jobs run as expected. How these are implemented depends on the scheduler, for example, Slurm would typically use hetjob to run this type of job.

Configuration of directories for IO

The paths of the filesystem are currently configured in each test doing I/O. At the moment, they all write to a shared z19 directory on each of the archer2 filesystem. That means the tests will break when run from another project account or when run on a machine with different file systems , such as on the TDS.

It would be good for the base directories to be configured at run time. One would add an option to the reframe command or modify a config file and all the tests would perform output within those directories.

Add per OST Lustre IO tests

Suggestion from HPC Systems team

Thinking ahead to reframe tests we might want to run - on the spinning-rust lustre, there's one OST per server (and if the site E-1000 we have is anything to go by, this will also be the case for the NVMe) - it might be worth doing some kind of I/O tests on every OST in individually to look for slowdowns

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.