==============================
Chapel implementation of LCALS
==============================

This directory contains a Chapel port of the LCALS benchmark. See the reference
version at https://codesign.llnl.gov/LCALS.php for more details.


------
Status
------

The Chapel version of LCALS is a work-in-progress. Several improvements remain
to improve both performance and elegance. See the list below for more details.


-----
Files
-----

This directory's contents are as follows:

./
  LCALSMain.chpl        : The main entry point in the Chapel source code

  RunARawLoops.chpl             :\
  RunBRawLoops.chpl             : \
  RunCRawLoops.chpl             :  \ The kernel implementations
  RunParallelRawLoops.chpl      :  /
  RunSPMDRawLoops.chpl          : /
  RunVectorizeOnlyRawLoops.chpl :/

  LCALSConfiguration.chpl   : Configuration constants to define what to run
  LCALSLoops.chpl           : Routines to initialize kernel data

  LCALSDataTypes.chpl   :\ Data types and enumerations
  LCALSEnums.chpl       :/

  LCALSParams.chpl      :\ Global variables and constants
  LCALSStatic.chpl      :/

  LCALSChecksums.chpl   : Checks the validity of computed checksums

  Timer.chpl            : A simple timer

  LongDouble.chpl       :\  An interface to the "long double" type in C
  longdouble.h          :/

  Makefile              : Build LCALS

  README                    : This file
  README-LCALS_license.txt  : The LCALS reference license

  Other files with the same base filenames as the Chapel test programs but
  different filename extensions, are for use by the automated test system.
  For example, LCALSMain.skipif supports automated testing of LCALSMain.chpl.
  $CHPL_HOME/examples/README.testing contains more information.


-----------------
Execution Options
-----------------

* The individual kernels and loop variants to run can be controlled with
  configuration constants with names starting with "run". To see the full
  list, type './LCALSMain --help'.

* checksumTolerance : allow computed checksums to be off by this amount from
  the expected values.

* noisyChecksumChecks : Print computed checksums and differences from expected
  values even if they are within 'checksumTolerance'.


-----
TODOs
-----

Performance issues
------------------

* The performance of this benchmark has not been deeply investigated or tuned.
