* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
* MindIE is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#ifndef ISEQ_GROUP_COLLECTION_H
#define ISEQ_GROUP_COLLECTION_H
#include <deque>
#include "sequence_group.h"
namespace mindie_llm {
enum class OrderType {
FCFS,
PRIORITY,
};
enum class PDPriorityType : uint8_t {
PREFILL_FIRST,
DECODE_FIRST,
MIX,
};
enum class LwdPDelayType : uint8_t {
PREFILL_TO_DECODE,
PREFILL_SKIP,
PREFILL_KEEP,
INVALID,
};
class SeqGroupCollection {
public:
SeqGroupCollection() = default;
explicit SeqGroupCollection(PDPriorityType pdPriorityType);
virtual ~SeqGroupCollection() = default;
std::deque<SequenceGroupSPtr> waiting_;
std::deque<SequenceGroupSPtr> running_;
std::deque<SequenceGroupSPtr> swapped_;
PDPriorityType pdPriorityType_{PDPriorityType::PREFILL_FIRST};
};
using ISeqGroupCollectionSPtr = std::shared_ptr<SeqGroupCollection>;
}
#endif