86 lines
2.2 KiB
C++
86 lines
2.2 KiB
C++
/*!
|
|
* \file
|
|
* \brief Build configuration file.
|
|
*
|
|
* \author
|
|
* Christos Choutouridis AEM:8997
|
|
* <cchoutou@ece.auth.gr>
|
|
*/
|
|
|
|
#ifndef CONFIG_H_
|
|
#define CONFIG_H_
|
|
|
|
#include <cstdint>
|
|
|
|
/*
|
|
* Versioning:
|
|
* - RC1: Model version
|
|
* - RC2: Parallel full sort
|
|
* - RC3: Vanila
|
|
* - RC3a: Exchange optimization
|
|
* - RC3b: MPI Pipeline
|
|
* - RC4: Include all version
|
|
*/
|
|
static constexpr char version[] = "0.4";
|
|
|
|
/*
|
|
* Defines for different version of the exercise
|
|
*/
|
|
#define BITONIC (1)
|
|
#define BUBBLETONIC (2)
|
|
|
|
|
|
// Fail-safe version selection
|
|
#if !defined CODE_VERSION
|
|
#define CODE_VERSION BITONIC
|
|
#endif
|
|
|
|
// Default Data size (in case -q <N> is not present)
|
|
static constexpr size_t DEFAULT_DATA_SIZE = 1 << 16;
|
|
|
|
// The maximum MPI size we support (in Nodes x Processes)
|
|
static constexpr size_t MAX_MPI_SIZE = 1024UL;
|
|
|
|
// The maximum pipeline size we support
|
|
static constexpr size_t MAX_PIPELINE_SIZE = 64UL;
|
|
|
|
|
|
/*!
|
|
* Value type selection
|
|
*
|
|
* We support the following compiler types or the <cstdint> that translate to them:
|
|
* char - unsigned char
|
|
* short - unsigned short
|
|
* int - unsigned int
|
|
* long - unsigned long
|
|
* long long - unsigned long long
|
|
* float
|
|
* double
|
|
*/
|
|
using distValue_t = uint32_t;
|
|
|
|
/*!
|
|
* Session option for each invocation of the executable.
|
|
*
|
|
* @note
|
|
* The values of the members are set from the command line.
|
|
*/
|
|
struct config_t {
|
|
size_t arraySize{DEFAULT_DATA_SIZE}; //!< The array size of the local data to sort.
|
|
bool exchangeOpt{false}; //!< Flag to request the exchange optimization
|
|
size_t pipeline{1UL}; //!< Pipeline stages (1 to disable)
|
|
bool validation{false}; //!< Request a full validation at the end, performed by process rank 0.
|
|
bool ndebug{false}; //!< Skips debug trap on DEBUG builds.
|
|
size_t perf{1}; //!< Enable performance timing measurements and prints and repeat
|
|
//!< the sorting <perf> times.
|
|
bool verbose{false}; //!< Flag to enable verbose output to stdout.
|
|
};
|
|
|
|
/*
|
|
* Exported data types
|
|
*/
|
|
extern config_t config;
|
|
|
|
|
|
#endif /* CONFIG_H_ */
|