WiscSort / wiscSort / Delta / header / config.h
config.h
Raw
#pragma once
#include <vector>
#include <string>
#define GIB(x) (x * 1024 * 1024 * 1024ull)
#define GB(x) (x * 1000 * 1000 * 1000ull)

#define KEY_SIZE 10   // 250
#define VALUE_SIZE 90 // 502 // 6
#define INDEX_SIZE 5

// To sort 159999840000 gb (160GB) or 199999800000 gb (200)
// #define BLOCK_SIZE 4200
#define BLOCK_SIZE 4000          // 4096
#define WRITE_BLOCK_SIZE 4095    // 4095
#define READ_ARRAY_SIZE GB(50)   // Should be a multiple of IDX_RECORD_SIZE.
#define READ_BUFFER_SIZE GB(50)  // RUNs are equal to READ buffer size
#define WRITE_BUFFER_SIZE GB(50) // NOTE: This has no use in WiscSort
#define READ_SIZE 1              // in BLOCK_SIZE
#define WRITE_SIZE 1
////////////////////////////////////////////////////////////////////

#define RECORD_SIZE (KEY_SIZE + VALUE_SIZE)
#define REC_PER_BLOCK (BLOCK_SIZE / RECORD_SIZE)
#define READ_BUFFER_COUNT (READ_BUFFER_SIZE / BLOCK_SIZE)
#define WRITE_BUFFER_COUNT (WRITE_BUFFER_SIZE / BLOCK_SIZE)
#define REC_PER_WRITE_BUFFER ((WRITE_BUFFER_COUNT * BLOCK_SIZE) / RECORD_SIZE) // Not required.
#define REC_PER_READ_BUFFER ((READ_BUFFER_COUNT * BLOCK_SIZE) / RECORD_SIZE)

//// Index
#define IDX_RECORD_SIZE (KEY_SIZE + INDEX_SIZE)
#define IDX_REC_PER_BLK (WRITE_BLOCK_SIZE / IDX_RECORD_SIZE)

//// Beta
#define READ_ARRAY_COUNT (READ_ARRAY_SIZE / RECORD_SIZE)

struct Config
{
    std::vector<std::string> files;
    std::string output_dir;
    size_t read_buffer_size;
    size_t merge_read_buffer_size;
    size_t write_buffer_size; // Maybe needed for version 1?
    size_t block_size;
    int mode; // Three concurrency modes
    int read_thrds;
    int sort_thrds;
    int write_thrds;

    // Not from cmdline
    int record_size;
    size_t recs_per_blk;
    size_t read_buff_blk_count;
    size_t write_buff_blk_count;
    size_t read_buff_rec_count;
    size_t write_buff_rec_count;

    int idx_record_size;
    size_t idx_recs_per_blk;
};

// Initialize a global struct, perhaps replace this with a singleton?
extern struct Config conf;