code: def get_total_memory(self) -> int:
      # Return total memory in bytes using nvidia-smi in bytes
      if self.type is not DeviceType.GPU:
          raise Exception("Device type must be GPU")
      else:
          try:
              output = (
                  subprocess.check_output(
                      "nvidia-smi --query-gpu=memory.total "
                      "--format=csv,nounits,noheader",
                      shell=True,
                  )
                  .decode("utf-8")
                  .split()[self.idx]
              )
              return int(output) * 1024 * 1024
          except Exception:
              raise Exception(
                  "Unable to get total memory of device. "
                  "Please make sure nvidia-smi is available."
              )
  
imports: import subprocess
  from dataclasses import dataclass
  from enum import Enum
  from functools import cached_property
  from typing import Optional, Any, Union, Tuple, List, Dict
  import numpy
  from nebullvm.optional_modules.tensorflow import tensorflow
  from nebullvm.optional_modules.torch import torch
label_desc: Use image node_id 5 for calling the Device obj's underlying member method code with example usage: obj.get_total_memory() and returns: unknown