Giter VIP home page Giter VIP logo

scale-validation's Introduction

SCALE Validation

This repository contains the scripts we use to build/test SCALE

It also serves as a place to store github tickets for user-reported bugs in SCALE.

Some of the scripts in this repository are for projects that do not currently work with SCALE. These are here to help facilitate testing, and to show how far we've gotten with various things.

Things that work

The current list of projects that are passing in our CI runs can be found here

Projects not listed there, but available here, have known issues.

Using a version of GCC >= 12, or the clang provided by SCALE, is recommended.

Patches

A small number of projects have patches. These are documented in the scripts for the specific projects that have them.

Typically, the patches are either:

  • Fixing upstream bugs relating to gcc14 compatibility.
  • Fixing upstream bugs due to newer dependency versions (we're using Arch over here).

These are patches that can be submitted upstream as valid bugfixes, rather than "things that will necessarily be needed to work with SCALE".

How to run these scripts

The simplest way to run a test is to use the test driver script, test.sh (found in thirdparty/ within this repository).

An example invocation is:

./test.sh ~/cuda_tests /opt/scale/targets/gfx1030 sm_86 xgboost

The arguments are, in order:

  • A temporary directory to be used for the test. The same temporary directory can be used for many tests runs, and runs of different tests from this repo (the tests make subdirectories for themselves). This directory will contain the build artefacts and source code for the project under test.
  • A path to a SCALE target directory.
  • The build architecture to pass to the project's build system.
  • The name of the project to test (must match a directory name under thirdparty/ in this repo).

This script just runs the specific scripts found in thirdparty/<name> in lexicographical order with the same arguments given.

Test scripts

Each script in the project directories accepts the following optional arguments:

  • -s: Build sequentially.
  • -v: Verbose

The scripts return one of three exit codes:

  • 0: Success.
  • 1: Failure. No later script from the same directory can run.
  • 222: Failure. Later scripts from the same directory can still run.

Script result file

Each script may create a result file in the test project's output directory. It will be named according to the script. The output file is a CSV file. Each row consists of the following fields:

  • Row name. This describes the result.
  • Result type. The type of result. Options are:
    • status: The overall status of the test/subtest. Either pass or fail.
    • count: Count something. For example, number of failures.
    • time: The amount of time taken by something, in seconds.
    • accuracy: The accuracy (from 0.0 to 1.0) of a result.
    • loss: A measure of inaccuracy of a result (0 is perfect, larger numbers are worse).
  • Result value. A value of the given type.

This format is chosen for easy sequential emission, and easy parsing.

Test directory paths

The first test script for a given test directory creates a subdirectory within the output directory for that test project. Aside from these directories, the following paths in the output directory may be created:

  • data: This directory is used to cache datasets used by the tests. Test data is placed here when the test scripts that use it run. If the test data already exists, it is used without extra download. Since the test data may be very large, it's a good idea to make this a symlink to somewhere persistent.

The util directory

This directory contains scripts used by the test scripts. See the individual scripts for information about what they do.

scale-validation's People

Contributors

chriskitching 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.