예제 #1
0
 def _init_devices(self):
     """
 Initiates the required devices for a config. Same as the funtion initDevices in
 rnn.py.
 :param config:
 :return: A list with the devices used.
 """
     oldDeviceConfig = ",".join(self.config.list('device', ['default']))
     if "device" in TheanoFlags:
         # This is important because Theano likely already has initialized that device.
         config.set("device", TheanoFlags["device"])
         print("Devices: Use %s via THEANO_FLAGS instead of %s." %
               (TheanoFlags["device"], oldDeviceConfig),
               file=log.v4)
     devArgs = getDevicesInitArgs(self.config)
     assert len(devArgs) > 0
     devices = [Device(**kwargs) for kwargs in devArgs]
     for device in devices:
         while not device.initialized:
             time.sleep(0.25)
     if devices[0].blocking:
         print("Devices: Used in blocking / single proc mode.", file=log.v4)
     else:
         print("Devices: Used in multiprocessing mode.", file=log.v4)
     return devices
예제 #2
0
파일: rnn.py 프로젝트: orech/returnn
def initTheanoDevices():
    """
  Only for Theano.

  :rtype: list[Device]
  """
    if not BackendEngine.is_theano_selected():
        return None
    oldDeviceConfig = ",".join(config.list('device', ['default']))
    if config.value("task", "train") == "nop":
        return []
    if "device" in TheanoFlags:
        # This is important because Theano likely already has initialized that device.
        config.set("device", TheanoFlags["device"])
        print("Devices: Use %s via THEANO_FLAGS instead of %s." % \
                         (TheanoFlags["device"], oldDeviceConfig), file=log.v4)
    devArgs = getDevicesInitArgs(config)
    assert len(devArgs) > 0
    devices = [Device(**kwargs) for kwargs in devArgs]
    for device in devices:
        while not device.initialized:
            time.sleep(0.25)
    if devices[0].blocking:
        print("Devices: Used in blocking / single proc mode.", file=log.v4)
    else:
        print("Devices: Used in multiprocessing mode.", file=log.v4)
    return devices
예제 #3
0
파일: rnn.py 프로젝트: ZhangAustin/returnn
def initDevices():
    """
  :rtype: list[Device]
  """
    oldDeviceConfig = ",".join(config.list('device', ['default']))
    if BackendEngine.is_tensorflow_selected():
        if os.environ.get("TF_DEVICE"):
            config.set("device", os.environ.get("TF_DEVICE"))
            print("Devices: Use %s via TF_DEVICE instead of %s." % \
                             (os.environ.get("TF_DEVICE"), oldDeviceConfig), file=log.v4)
    if not BackendEngine.is_theano_selected():
        return None
    if "device" in TheanoFlags:
        # This is important because Theano likely already has initialized that device.
        config.set("device", TheanoFlags["device"])
        print("Devices: Use %s via THEANO_FLAGS instead of %s." % \
                         (TheanoFlags["device"], oldDeviceConfig), file=log.v4)
    devArgs = getDevicesInitArgs(config)
    assert len(devArgs) > 0
    devices = [Device(**kwargs) for kwargs in devArgs]
    for device in devices:
        while not device.initialized:
            time.sleep(0.25)
    if devices[0].blocking:
        print("Devices: Used in blocking / single proc mode.", file=log.v4)
    else:
        print("Devices: Used in multiprocessing mode.", file=log.v4)
    return devices
예제 #4
0
 def _get_devices_config(self):
   """
   :rtype: list[dict[str]]
   """
   from Device import getDevicesInitArgs
   if not self.config.value("device", None):
     # Better default: Use GPU if available.
     from TFUtil import is_gpu_available
     if is_gpu_available():
       print("Device not set explicitly, and we found a GPU, which we will use.", file=log.v2)
       self.config.set("device", "gpu")
     else:
       print("Device not set explicitly, and no GPU found.", file=log.v2)
   return getDevicesInitArgs(self.config)
예제 #5
0
 def init_devices(self, config):
     oldDeviceConfig = ",".join(config.list('device', ['default']))
     if "device" in TheanoFlags:
         # This is important because Theano likely already has initialized that device.
         config.set("device", TheanoFlags["device"])
         print("Devices: Use %s via THEANO_FLAGS instead of %s." % \
               (TheanoFlags["device"], oldDeviceConfig), file=log.v4)
     devArgs = getDevicesInitArgs(config)
     assert len(devArgs) > 0
     devices = [Device(**kwargs) for kwargs in devArgs]
     for device in devices:
         while not device.initialized:
             time.sleep(0.25)
     if devices[0].blocking:
         print("Devices: Used in blocking / single proc mode.", file=log.v4)
     else:
         print("Devices: Used in multiprocessing mode.", file=log.v4)
     return devices
예제 #6
0
 def init_devices(self, config):
     
     #very basic and hacky
     #TODO: make this closer to rnn.py version, as in make it a function in rnn.py which isn't bound to the local vars of rnn.py (?)
     
     oldDeviceConfig = ",".join(config.list('device', ['default']))
     if "device" in TheanoFlags:
       # This is important because Theano likely already has initialized that device.
       config.set("device", TheanoFlags["device"])
       print("Devices: Use %s via THEANO_FLAGS instead of %s." % \
             (TheanoFlags["device"], oldDeviceConfig), file=log.v4)
     devArgs = getDevicesInitArgs(config)
     assert len(devArgs) > 0
     devices = [Device(**kwargs) for kwargs in devArgs]
     for device in devices:
       while not device.initialized:
         time.sleep(0.25)
     if devices[0].blocking:
       print("Devices: Used in blocking / single proc mode.", file=log.v4)
     else:
       print("Devices: Used in multiprocessing mode.", file=log.v4)
     return devices