mirror of
https://github.com/deepseek-ai/3FS
synced 2025-05-15 01:45:34 +00:00
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
from collections import Counter
|
|
import glob
|
|
import os.path
|
|
import pytest
|
|
|
|
from src.model.data_placement import DataPlacementModel
|
|
from src.setup.gen_chain_table import generate_chains
|
|
|
|
|
|
@pytest.mark.parametrize('num_nodes, num_disks_per_node, num_targets_per_disk, num_replicas', [(5, 10, 6, 2), (10, 10, 9, 3)])
|
|
def test_generate_cr_chains(num_nodes: int, num_disks_per_node: int, num_targets_per_disk: int, num_replicas: int):
|
|
model = DataPlacementModel(
|
|
chain_table_type="CR",
|
|
num_nodes=num_nodes,
|
|
num_targets_per_disk=num_targets_per_disk,
|
|
group_size=num_replicas,
|
|
qlinearize=True,
|
|
relax_lb=1,
|
|
relax_ub=1,
|
|
)
|
|
instance = model.run(pyomo_solver="appsi_highs", max_timelimit=15, auto_relax=True)
|
|
|
|
generate_chains(
|
|
chain_table_type="CR",
|
|
node_id_begin=1,
|
|
node_id_end=num_nodes,
|
|
num_disks_per_node=num_disks_per_node,
|
|
num_targets_per_disk=num_targets_per_disk,
|
|
target_id_prefix=1,
|
|
chain_id_prefix=9,
|
|
incidence_matrix=model.get_incidence_matrix(instance))
|
|
|
|
|
|
@pytest.mark.parametrize('num_nodes, num_disks_per_node, num_targets_per_disk, ec_group_size', [(20, 10, 6, 12), (25, 10, 12, 20)])
|
|
def test_generate_ec_chains(num_nodes: int, num_disks_per_node: int, num_targets_per_disk: int, ec_group_size: int):
|
|
model = DataPlacementModel(
|
|
chain_table_type="EC",
|
|
num_nodes=num_nodes,
|
|
num_targets_per_disk=num_targets_per_disk,
|
|
group_size=ec_group_size,
|
|
qlinearize=True,
|
|
relax_lb=1,
|
|
relax_ub=1,
|
|
)
|
|
instance = model.run(pyomo_solver="appsi_highs", max_timelimit=15, auto_relax=True)
|
|
|
|
generate_chains(
|
|
chain_table_type="EC",
|
|
node_id_begin=1,
|
|
node_id_end=num_nodes,
|
|
num_disks_per_node=num_disks_per_node,
|
|
num_targets_per_disk=num_targets_per_disk,
|
|
target_id_prefix=1,
|
|
chain_id_prefix=9,
|
|
incidence_matrix=model.get_incidence_matrix(instance))
|