// Hidden units, batch size, timesteps, RNN cell type
std::vector<std::tuple<int, int, int, std::string>> training_set = {
    std::make_tuple(1760, 16, 50, "vanilla"),
    std::make_tuple(1760, 32, 50, "vanilla"),
    std::make_tuple(1760, 64, 50, "vanilla"),
    std::make_tuple(1760, 128, 50, "vanilla"),
    std::make_tuple(2048, 16, 50, "vanilla"),
    std::make_tuple(2048, 32, 50, "vanilla"),
    std::make_tuple(2048, 64, 50, "vanilla"),
    std::make_tuple(2048, 128, 50, "vanilla"),
    std::make_tuple(2560, 16, 50, "vanilla"),
    std::make_tuple(2560, 32, 50, "vanilla"),
    std::make_tuple(2560, 64, 50, "vanilla"),
    std::make_tuple(2560, 128, 50, "vanilla"),
    std::make_tuple(512, 16, 25, "lstm"),
    std::make_tuple(512, 32, 25, "lstm"),
    std::make_tuple(512, 64, 25, "lstm"),
    std::make_tuple(512, 128, 25, "lstm"),
    std::make_tuple(1024, 16, 25, "lstm"),
    std::make_tuple(1024, 32, 25, "lstm"),
    std::make_tuple(1024, 64, 25, "lstm"),
    std::make_tuple(1024, 128, 25, "lstm"),
    std::make_tuple(2048, 16, 25, "lstm"),
    std::make_tuple(2048, 32, 25, "lstm"),
    std::make_tuple(2048, 64, 25, "lstm"),
    std::make_tuple(2048, 128, 25, "lstm"),
    std::make_tuple(4096, 16, 25, "lstm"),
    std::make_tuple(4096, 32, 25, "lstm"),
    std::make_tuple(4096, 64, 25, "lstm"),
    std::make_tuple(4096, 128, 25, "lstm"),
    std::make_tuple(1536, 8, 50, "lstm"),
    std::make_tuple(1536, 16, 50, "lstm"),
    std::make_tuple(1536, 32, 50, "lstm"),
    std::make_tuple(256, 16, 150, "lstm"),
    std::make_tuple(256, 32, 150, "lstm"),
    std::make_tuple(256, 64, 150, "lstm"),
    std::make_tuple(2816, 32, 1500, "gru"),
    std::make_tuple(2816, 32, 750, "gru"),
    std::make_tuple(2816, 32, 375, "gru"),
    std::make_tuple(2816, 32, 187, "gru"),
    std::make_tuple(2048, 32, 1500, "gru"),
    std::make_tuple(2048, 32, 750, "gru"),
    std::make_tuple(2048, 32, 375, "gru"),
    std::make_tuple(2048, 32, 187, "gru"),
    std::make_tuple(1536, 32, 1500, "gru"),
    std::make_tuple(1536, 32, 750, "gru"),
    std::make_tuple(1536, 32, 375, "gru"),
    std::make_tuple(1536, 32, 187, "gru"),
    std::make_tuple(2560, 32, 1500, "gru"),
    std::make_tuple(2560, 32, 750, "gru"),
    std::make_tuple(2560, 32, 375, "gru"),
    std::make_tuple(2560, 32, 187, "gru"),
    std::make_tuple(512, 32, 1, "gru"),
    std::make_tuple(1024, 32, 1500, "gru"),
    std::make_tuple(1024, 64, 1500, "gru")
};

// Hidden units, batch size, timesteps, RNN cell type
std::vector<std::tuple<int, int, int, std::string>> inference_server_set = {
    std::make_tuple(512, 1, 25, "lstm"),
    std::make_tuple(512, 2, 25, "lstm"),
    std::make_tuple(512, 4, 25, "lstm"),
    std::make_tuple(1024, 1, 25, "lstm"),
    std::make_tuple(1024, 2, 25, "lstm"),
    std::make_tuple(1024, 4, 25, "lstm"),
    std::make_tuple(2048, 1, 25, "lstm"),
    std::make_tuple(2048, 2, 25, "lstm"),
    std::make_tuple(2048, 4, 25, "lstm"),
    std::make_tuple(1536, 1, 50, "lstm"),
    std::make_tuple(1536, 2, 50, "lstm"),
    std::make_tuple(1536, 4, 50, "lstm"),
    std::make_tuple(256, 1, 150, "lstm"),
    std::make_tuple(256, 2, 150, "lstm"),
    std::make_tuple(256, 4, 150, "lstm"),
    std::make_tuple(2816, 1, 1500, "gru"),
    std::make_tuple(2816, 1, 750, "gru"),
    std::make_tuple(2816, 1, 375, "gru"),
    std::make_tuple(2816, 1, 187, "gru"),
    std::make_tuple(2816, 2, 1500, "gru"),
    std::make_tuple(2816, 2, 750, "gru"),
    std::make_tuple(2816, 2, 375, "gru"),
    std::make_tuple(2816, 2, 187, "gru"),
    std::make_tuple(2816, 4, 1500, "gru"),
    std::make_tuple(2816, 4, 750, "gru"),
    std::make_tuple(2816, 4, 375, "gru"),
    std::make_tuple(2816, 4, 187, "gru"),
    std::make_tuple(2048, 1, 1500, "gru"),
    std::make_tuple(2048, 1, 750, "gru"),
    std::make_tuple(2048, 1, 375, "gru"),
    std::make_tuple(2048, 1, 187, "gru"),
    std::make_tuple(2048, 2, 1500, "gru"),
    std::make_tuple(2048, 2, 750, "gru"),
    std::make_tuple(2048, 2, 375, "gru"),
    std::make_tuple(2048, 2, 187, "gru"),
    std::make_tuple(2048, 4, 1500, "gru"),
    std::make_tuple(2048, 4, 750, "gru"),
    std::make_tuple(2048, 4, 375, "gru"),
    std::make_tuple(2048, 4, 187, "gru"),
    std::make_tuple(1536, 1, 1500, "gru"),
    std::make_tuple(1536, 1, 750, "gru"),
    std::make_tuple(1536, 1, 375, "gru"),
    std::make_tuple(1536, 1, 187, "gru"),
    std::make_tuple(1536, 2, 1500, "gru"),
    std::make_tuple(1536, 2, 750, "gru"),
    std::make_tuple(1536, 2, 375, "gru"),
    std::make_tuple(1536, 2, 187, "gru"),
    std::make_tuple(1536, 4, 1500, "gru"),
    std::make_tuple(1536, 4, 750, "gru"),
    std::make_tuple(1536, 4, 375, "gru"),
    std::make_tuple(1536, 4, 187, "gru"),
    std::make_tuple(2560, 1, 1500, "gru"),
    std::make_tuple(2560, 1, 750, "gru"),
    std::make_tuple(2560, 1, 375, "gru"),
    std::make_tuple(2560, 1, 187, "gru"),
    std::make_tuple(2560, 2, 1500, "gru"),
    std::make_tuple(2560, 2, 750, "gru"),
    std::make_tuple(2560, 2, 375, "gru"),
    std::make_tuple(2560, 2, 187, "gru"),
    std::make_tuple(2560, 4, 1500, "gru"),
    std::make_tuple(2560, 4, 750, "gru"),
    std::make_tuple(2560, 4, 375, "gru"),
    std::make_tuple(2560, 4, 187, "gru"),
    std::make_tuple(512, 1, 1, "gru"),
    std::make_tuple(512, 2, 1, "gru"),
    std::make_tuple(512, 4, 1, "gru"),
    std::make_tuple(1024, 1, 1500, "gru"),
    std::make_tuple(1024, 2, 1500, "gru"),
    std::make_tuple(1024, 4, 1500, "gru")
};


// Hidden units, batch size, timesteps, RNN cell type
std::vector<std::tuple<int, int, int, std::string>> inference_device_set = {
    std::make_tuple(32, 1, 672, "vanilla"),
    std::make_tuple(64, 1, 96, "vanilla"),
    std::make_tuple(256, 1, 150, "lstm"),
};

