Пример #1
0
    def setUp(self):
        from itertools import takewhile, product

        hello = find_spec("tests.benchmarks.concurrent_insert.hello").origin
        create_app(name="hello", executable=hello)
        self.launcherInfo = util.launcher_info()

        max_workers = self.launcherInfo.num_workers
        worker_counts = list(
            takewhile(lambda x: x <= max_workers, (2**i for i in range(20))))
        if max_workers not in worker_counts:
            worker_counts.append(max_workers)
        worker_counts = list(reversed(worker_counts))
        # ranks_per_node = [4, 8, 16, 32]
        ranks_per_node = [32]
        self.experiments = product(worker_counts, ranks_per_node)

        # Load mpi4py/Balsam on compute nodes prior to experiments
        hello = find_spec("tests.benchmarks.concurrent_insert.hello").origin
        python = sys.executable
        app_cmd = f"{python} {hello}"
        mpi_str = self.launcherInfo.mpi_cmd(
            self.launcherInfo.workerGroup.workers,
            app_cmd=app_cmd,
            envs={},
            num_ranks=max_workers,
            ranks_per_node=1,
            threads_per_rank=1,
            threads_per_core=1)
        stdout, elapsed_time = util.cmdline(mpi_str)
Пример #2
0
    def setUp(self):
        killer_name = find_spec("tests.ft_apps.dynamic_kill.killer").origin
        slow_name = find_spec("tests.ft_apps.dynamic_kill.slow").origin
        interpreter = sys.executable
        self.killer_name = f"{interpreter} {killer_name}"
        self.slow_name = f"{interpreter} {slow_name}"

        create_app(name="killer", executable=self.killer_name)
        create_app(name="slow", executable=self.slow_name)
Пример #3
0
    def setUp(self):
        launcherInfo = util.launcher_info()
        self.num_nodes = len(launcherInfo.workerGroup.workers)

        hello_path = find_spec("tests.ft_apps.concurrent.hello").origin
        insert_path = find_spec("tests.ft_apps.concurrent.mpi_insert").origin
        interpreter = sys.executable
        hello_path = f"{sys.executable} {hello_path}"
        insert_path = f"{sys.executable} {insert_path}"
        create_app(name="hello", executable=hello_path)
        create_app(name="mpi4py-insert", executable=insert_path)
Пример #4
0
 def setUp(self):
     aliases = "make_sides square reduce".split()
     self.apps = {}
     for name in aliases:
         interpreter = sys.executable
         exe_path = interpreter + " " + find_spec(
             f'tests.ft_apps.dag.{name}').origin
         pre_path = interpreter + " " + find_spec(
             f'tests.ft_apps.dag.{name}_pre').origin
         post_path = interpreter + " " + find_spec(
             f'tests.ft_apps.dag.{name}_post').origin
         app = create_app(name=name,
                          executable=exe_path,
                          preproc=pre_path,
                          postproc=post_path)
         self.apps[name] = app
Пример #5
0
    def setUp(self):
        self.app_path = os.path.dirname(
            find_spec("tests.ft_apps.c_apps").origin)
        self.app = create_app(name='omp')

        self.job0 = create_job(name='job0',
                               app='omp',
                               num_nodes=2,
                               ranks_per_node=32,
                               threads_per_rank=2)
        self.job1 = create_job(name='job1',
                               app='omp',
                               num_nodes=2,
                               ranks_per_node=64,
                               threads_per_rank=1)
        self.job2 = create_job(name='job2',
                               app='omp',
                               num_nodes=1,
                               ranks_per_node=2,
                               threads_per_rank=64,
                               threads_per_core=2)