| Server IP : 107.13.46.68 / Your IP : 216.73.216.232 Web Server : Apache/2.4.58 (Ubuntu) System : Linux mariOS 6.8.0-51-generic #52-Ubuntu SMP PREEMPT_DYNAMIC Thu Dec 5 13:09:44 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/thread-self/root/bin/ |
Upload File : |
#!/usr/bin/python3
import sys
import os
import argparse
import gi
gi.require_version('XApp', '1.0')
from gi.repository import XApp
helper = XApp.GpuOffloadHelper.get_sync()
def list_gpus():
info = helper.get_default_info()
print("{: <1} {: <6} {: <20} [{: <20}]".format(info.id, "default" if info.is_default else "", info.get_shell_env_prefix(), info.display_name))
for info in helper.get_offload_infos():
print("{: <1} {: <6} {: <20} [{: <20}]".format(info.id, "default" if info.is_default else "", info.get_shell_env_prefix(), info.display_name))
def check_id(_id):
if _id < 0 or _id >= helper.get_n_gpus():
print("A GPU with that ID does not exist", file=sys.stderr)
exit(1)
def _get_correct_info(_id):
info = None
if _id == -1:
infos = helper.get_offload_infos()
if infos:
info = infos[0]
else:
info = helper.get_info_by_id(_id)
if info is None:
info = helper.get_default_info()
return info
def print_env(_id):
info = _get_correct_info(_id)
print(info.get_shell_env_prefix(), end="")
def exec_command(_id, command):
info = _get_correct_info(_id)
env = os.environ
if info:
i = 0
strv = info.env_strv
while i < len(strv):
env[strv[i]] = strv[i + 1]
i += 2
os.execvpe(command[0], command, env)
parser = argparse.ArgumentParser(description="Launch a program using an alternate GPU, or if there are no others, like a normal program.",
formatter_class=argparse.RawDescriptionHelpFormatter)# epilog=mode_help)
parser.add_argument("command", type=str, nargs=argparse.REMAINDER, help="The program to run and arguments.")
parser.add_argument("-i", "--id", help="Specify the GPU to use. If omitted, the first non-default GPU will be used.",
action="store", type=int, default=-1)
parser.add_argument("-l", "--list-gpus", help="List available GPUs.",
action="store_true")
parser.add_argument("-p", "--print-env", help="Print the environment variables to be prepended to a shell command. A newline is omitted.",
action="store_true")
args = parser.parse_args()
if not args.command and not args.list_gpus and not args.print_env:
parser.print_help()
exit(0)
_id = -1
if args.list_gpus:
list_gpus()
exit(0)
if args.id > -1:
if (not args.print_env) and len(args.command) == 0:
print("The ID argument must be accompanied by --print-env or a command to run.", file=sys.stderr)
exit(1)
_id = args.id
check_id(_id)
if args.print_env:
print_env(_id)
exit(0)
if args.command:
exit(exec_command(_id, args.command))
exit(0)