def init(config_filename, log_verbosity, remaining_args=()):
    """
  :param str config_filename: filename to config-file
  :param int log_verbosity:
  :param list[str] remaining_args:
  """
    rnn.init_better_exchook()
    rnn.init_thread_join_hack()
    print("Using config file %r." % config_filename)
    assert os.path.exists(config_filename)
    rnn.init_config(config_filename=config_filename,
                    command_line_options=remaining_args,
                    extra_updates={
                        "use_tensorflow": True,
                        "log": None,
                        "log_verbosity": log_verbosity,
                        "task": "search",
                    },
                    default_config={
                        "debug_print_layer_output_template": True,
                    })
    global config
    config = rnn.config
    rnn.init_log()
    print("Returnn %s starting up." % os.path.basename(__file__), file=log.v1)
    rnn.returnn_greeting()
    rnn.init_backend_engine()
    assert util.BackendEngine.is_tensorflow_selected(
    ), "this is only for TensorFlow"
    rnn.init_faulthandler()
    better_exchook.replace_traceback_format_tb()  # makes some debugging easier
    rnn.init_config_json_network()
示例#2
0
def setup():
    """
  Calls necessary setups.
  """

    # Disable extensive TF debug verbosity. Must come before the first TF import.
    import logging
    logging.getLogger('tensorflow').disabled = True
    # os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
    # logging.getLogger("tensorflow").setLevel(logging.INFO)

    # Get us some further useful debug messages (in some cases, e.g. CUDA).
    # For example: https://github.com/tensorflow/tensorflow/issues/24496
    # os.environ["CUDNN_LOGINFO_DBG"] = "1"
    # os.environ["CUDNN_LOGDEST_DBG"] = "stdout"
    # The following might fix (workaround): Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
    # (https://github.com/tensorflow/tensorflow/issues/24496).
    # os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true"

    import _setup_returnn_env  # noqa

    import returnn.util.basic as util
    util.init_thread_join_hack()

    from returnn.util import better_exchook
    better_exchook.install()
    better_exchook.replace_traceback_format_tb()

    from returnn.log import log
    log.initialize(verbosity=[5])

    # TF is optional.
    # Note that importing TF still has a small side effect:
    # BackendEngine._get_default_engine() will return TF by default, if TF is already loaded.
    # For most tests, this does not matter.
    try:
        import tensorflow as tf
    except ImportError:
        tf = None

    if tf:
        import returnn.tf.util.basic as tf_util
        tf_util.debug_register_better_repr()

    import returnn.util.debug as debug
    debug.install_lib_sig_segfault()

    try:
        import faulthandler
        # Enable after libSigSegfault, so that we have both,
        # because faulthandler will also call the original sig handler.
        faulthandler.enable()
    except ImportError:
        print("no faulthandler")
示例#3
0
# -*- coding: utf8 -*-

import sys
import os

my_dir = os.path.dirname(os.path.realpath(__file__))
import _setup_test_env  # noqa
from nose.tools import assert_equal, assert_not_equal, assert_raises, assert_true, assert_is
from numpy.testing.utils import assert_almost_equal
from returnn.util.basic import *
import numpy as np
import numpy
import unittest

from returnn.util import better_exchook
better_exchook.replace_traceback_format_tb()


def test_cmd_true():
    r = sys_cmd_out_lines("true")
    assert_equal(r, [])


def test_cmd_false():
    assert_raises(CalledProcessError, lambda: sys_cmd_out_lines("false"))


def test_cmd_stdout():
    r = sys_cmd_out_lines("echo 1; echo 2;")
    assert_equal(r, ["1", "2"])