| #!/usr/bin/env bash |
| # Copyright 2017 The TensorFlow Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # ============================================================================== |
| |
| set -u # Check for undefined variables |
| |
| die() { |
| # Print a message and exit with code 1. |
| # |
| # Usage: die <error_message> |
| # e.g., die "Something bad happened." |
| |
| echo $@ |
| exit 1 |
| } |
| |
| echo "Collecting system information..." |
| |
| OUTPUT_FILE=tf_env.txt |
| python_bin_path=$(which python || which python3 || die "Cannot find Python binary") |
| |
| { |
| echo |
| echo '== check python ===================================================' |
| } >> ${OUTPUT_FILE} |
| |
| cat <<EOF > /tmp/check_python.py |
| import platform |
| |
| print("""python version: %s |
| python branch: %s |
| python build version: %s |
| python compiler version: %s |
| python implementation: %s |
| """ % ( |
| platform.python_version(), |
| platform.python_branch(), |
| platform.python_build(), |
| platform.python_compiler(), |
| platform.python_implementation(), |
| )) |
| EOF |
| ${python_bin_path} /tmp/check_python.py 2>&1 >> ${OUTPUT_FILE} |
| |
| { |
| echo |
| echo '== check os platform ===============================================' |
| } >> ${OUTPUT_FILE} |
| |
| cat <<EOF > /tmp/check_os.py |
| import platform |
| |
| print("""os: %s |
| os kernel version: %s |
| os release version: %s |
| os platform: %s |
| linux distribution: %s |
| linux os distribution: %s |
| mac version: %s |
| uname: %s |
| architecture: %s |
| machine: %s |
| """ % ( |
| platform.system(), |
| platform.version(), |
| platform.release(), |
| platform.platform(), |
| platform.linux_distribution(), |
| platform.dist(), |
| platform.mac_ver(), |
| platform.uname(), |
| platform.architecture(), |
| platform.machine(), |
| )) |
| EOF |
| ${python_bin_path} /tmp/check_os.py 2>&1 >> ${OUTPUT_FILE} |
| |
| { |
| echo |
| echo '== are we in docker =============================================' |
| num=`cat /proc/1/cgroup | grep docker | wc -l`; |
| if [ $num -ge 1 ]; then |
| echo "Yes" |
| else |
| echo "No" |
| fi |
| |
| echo |
| echo '== compiler =====================================================' |
| c++ --version 2>&1 |
| |
| echo |
| echo '== check pips ===================================================' |
| pip list 2>&1 | grep "proto\|numpy\|tensorflow" |
| |
| |
| echo |
| echo '== check for virtualenv =========================================' |
| ${python_bin_path} -c "import sys;print(hasattr(sys, \"real_prefix\"))" |
| |
| echo |
| echo '== tensorflow import ============================================' |
| } >> ${OUTPUT_FILE} |
| |
| cat <<EOF > /tmp/check_tf.py |
| import tensorflow as tf; |
| print("tf.version.VERSION = %s" % tf.version.VERSION) |
| print("tf.version.GIT_VERSION = %s" % tf.version.GIT_VERSION) |
| print("tf.version.COMPILER_VERSION = %s" % tf.version.COMPILER_VERSION) |
| with tf.Session() as sess: |
| print("Sanity check: %r" % sess.run(tf.constant([1,2,3])[:1])) |
| EOF |
| ${python_bin_path} /tmp/check_tf.py 2>&1 >> ${OUTPUT_FILE} |
| |
| LD_DEBUG=libs ${python_bin_path} -c "import tensorflow" 2>>${OUTPUT_FILE} > /tmp/loadedlibs |
| |
| { |
| grep libcudnn.so /tmp/loadedlibs |
| echo |
| echo '== env ==========================================================' |
| if [ -z ${LD_LIBRARY_PATH+x} ]; then |
| echo "LD_LIBRARY_PATH is unset"; |
| else |
| echo LD_LIBRARY_PATH ${LD_LIBRARY_PATH} ; |
| fi |
| if [ -z ${DYLD_LIBRARY_PATH+x} ]; then |
| echo "DYLD_LIBRARY_PATH is unset"; |
| else |
| echo DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH} ; |
| fi |
| |
| |
| echo |
| echo '== nvidia-smi ===================================================' |
| nvidia-smi 2>&1 |
| |
| echo |
| echo '== cuda libs ===================================================' |
| } >> ${OUTPUT_FILE} |
| |
| find /usr/local -type f -name 'libcudart*' 2>/dev/null | grep cuda | grep -v "\\.cache" >> ${OUTPUT_FILE} |
| find /usr/local -type f -name 'libudnn*' 2>/dev/null | grep cuda | grep -v "\\.cache" >> ${OUTPUT_FILE} |
| |
| { |
| echo |
| echo '== tensorflow installed from info ==================' |
| pip show tensorflow |
| |
| echo |
| echo '== python version ==============================================' |
| echo '(major, minor, micro, releaselevel, serial)' |
| python -c 'import sys; print(sys.version_info[:])' |
| |
| echo |
| echo '== bazel version ===============================================' |
| bazel version |
| } >> ${OUTPUT_FILE} |
| |
| # Remove any words with google. |
| mv $OUTPUT_FILE old-$OUTPUT_FILE |
| grep -v -i google old-${OUTPUT_FILE} > $OUTPUT_FILE |
| |
| echo "Wrote environment to ${OUTPUT_FILE}. You can review the contents of that file." |
| echo "and use it to populate the fields in the github issue template." |
| echo |
| echo "cat ${OUTPUT_FILE}" |
| echo |
| |