コード例 #1
0
ファイル: command_line.py プロジェクト: sli259/gromax
def checkArgs(args: argparse.Namespace) -> None:
    good_modes: Iterable[str] = ("generate", "execute", "analyze")
    if args.mode not in good_modes:
        fatalError(
            "'mode' is a required positional argument - options are 'generate', 'execute', 'analyze'"
        )

    if args.mode == "generate":
        _checkGenerateArgs(args)
コード例 #2
0
ファイル: command_line.py プロジェクト: sli259/gromax
def _checkGenerateArgs(args: argparse.Namespace) -> None:
    if args.gmx_version not in _SUPPORTED_GMX_VERSIONS:
        fatalError("Invalid gmx version {}, must be one of {}".format(
            args.gmx_version, sorted(_SUPPORTED_GMX_VERSIONS)))
    if not args.cpu_ids and not args.num_cpus:
        fatalError("One of --cpu_ids or --num_cpus is required")
    if args.num_cpus:
        if args.cpu_ids:
            fatalError("Cannot specify both --cpu_ids and --num_cpus")
        args.cpu_ids = ",".join(
            [str(identifier) for identifier in range(args.num_cpus)])
    if not args.gpu_ids and not args.num_gpus:
        fatalError("One of --gpu_ids or --num_gpus is required")
    if args.num_gpus:
        if args.gpu_ids:
            fatalError("Cannot specify both --gpu_ids and --num_gpus")
        args.gpu_ids = ",".join(
            [str(identifier) for identifier in range(args.num_gpus)])
コード例 #3
0
ファイル: hardware_config.py プロジェクト: sli259/gromax
def checkProcessorIDContent(cpu_ids: List[int]):
    """
        Given an assigned value for cpu_ids, assure that
        1. It is a list
        2. The list contains all integers
        3. The stride between integers is consistent.

        Exits the program if a condition is not met.
    """
    if not isinstance(cpu_ids, list):
        utils.fatalError("Expected a list for parameter 'cpu_ids'")

    if not all([isinstance(i, int) and i >= 0 for i in cpu_ids]):
        utils.fatalError("Not all values in 'cpu_ids' are ints")

    # case of empty list
    if not cpu_ids:
        return

    if len(cpu_ids) > 1:
        diff: int = cpu_ids[1] - cpu_ids[0]

        for i, val in enumerate(cpu_ids[:-1]):
            if (cpu_ids[i + 1] - val) != diff:
                utils.fatalError("Inconsistent stride between cpu ids")
コード例 #4
0
ファイル: hardware_config.py プロジェクト: sli259/gromax
 def gpu_ids(self, gpu_ids: List[int]):
     try:
         for item in gpu_ids:
             if not isinstance(item, int):
                 utils.fatalError(
                     "All gpu ids must be integers: {} is not an int".
                     format(item))
             if item < 0:
                 utils.fatalError("Cannot have a negative GPU ID")
         self._gpu_ids = gpu_ids
     except TypeError:
         utils.fatalError("gpu_ids paramater must be iterable")
コード例 #5
0
 def testExitsCleanly(self):
     with self.assertRaises(SystemExit) as cm:
         utils.fatalError("message")
     self.assertEqual(cm.exception.code, 1)
コード例 #6
0
 def testWritesMessage(self):
     with self.assertRaises(SystemExit):
         utils.fatalError("message")