def _nvidia_smi_version(): cmd = util.which("nvidia-smi") if not cmd: return "not installed" try: out = subprocess.check_output(cmd) except subprocess.CalledProcessError as e: return _warn("ERROR: %s" % e.output.strip()) else: out = out.decode("utf-8") m = re.search(r"NVIDIA-SMI ([0-9\.]+)", out) if m: return m.group(1) else: log.debug("Unexpected output from nvidia-smi: %s", out) return "unknown (error)"
def _cuda_version(): nvcc = util.which("nvcc") if not nvcc: return "not installed" try: out = subprocess.check_output([nvcc, "--version"]) except subprocess.CalledProcessError as e: return _warn("ERROR: %s" % e.output.strip()) else: out = out.decode("utf-8") m = re.search(r"V([0-9\.]+)", out, re.MULTILINE) if m: return m.group(1) else: log.debug("Unexpected output from nvidia-smi: %s", out) return "unknown (error)"
def _virtualenv_cmd(): cmd = util.which("virtualenv") if not cmd: return None return [cmd]
def _find_cmd(cmds): for cmd in cmds: if util.which(cmd.split(" ", 1)[0]): return cmd return DEFAULT_DIFF_CMD
def _check_nbconvert(): nbconvert = util.which("jupyter-nbconvert") if not nbconvert: log.error("jupyter-nbconvert is required to run Notebooks - " "install it by running 'pip install jupyter' and try again") sys.exit(1)
def _check_cli(): if not util.which("aws"): cli.error("%s requires the AWS Command Line Interface\n" "Refer to https://docs.aws.amazon.com/cli/latest/" "userguide/installing.html for details." % NAME)
def _which_python(): from guild import util return util.which("python")
def _verify_terraform(): if not util.which("terraform"): raise remotelib.OperationError( "Terraform is required for this operation - refer to " "https://www.terraform.io/intro/getting-started/install.html " "for more information.")
def _which_guild_exe_for_win(): return util.find_apply([ lambda: util.which("guild.cmd"), lambda: util.which("guild.exe"), ])