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_ */
 |