https://github.com/Microsoft/CNTK
Revision d1ad5fcc9b71c9b6122623a2a0c3d126a64cbe94 authored by Zhou Wang on 01 October 2016, 15:07:28 UTC, committed by Zhou Wang on 01 October 2016, 15:07:28 UTC
1 parent 0025e65
Raw File
Tip revision: d1ad5fcc9b71c9b6122623a2a0c3d126a64cbe94 authored by Zhou Wang on 01 October 2016, 15:07:28 UTC
update the banner info to ouput 1.7.2
Tip revision: d1ad5fc
generate_build_info
#!/bin/bash
#
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the MIT license. See LICENSE.md file in the project root
# for full license information.
# ==============================================================================
#
# Description: this script is used to generated buildinfo.h in Source/CNTK
# which will contain the following infomation to be displayed at runtime:
#   BUILDTYPE       (release/debug)
#   BUILDTYPE       (GPU/CPU-only)
#   WITH_1BITSGD    (whether 1bit-SGD support was enabled)
#   MATHLIB         (MKL)
#   CUDA_PATH       (if exists, i.e., for GPU builds)
#   CUB_PATH        (if exists, i.e., for GPU builds)
#   CUDNN_PATH      (if exists, i.e., only for GPU builds)
#   GIT_COMMIT      (SHA1, and whether working directory is modified)
#   GTT_BRANCH      (the current branch)
#   BUILDER         (user under which the build was done)
#   BUILDMACHINE    (build machine)
#   BUILDPATH       (build path)

usage ()
{
    echo "usage: $0 <Config.make>"
    echo "-------------------------------------------------------------------"
    echo "This script is used to generate buildinfo.h in Source/CNTK"
    echo "This script needs to be called from the top level directory of CNTK project"
    echo "This script assumes git can be used"
    echo "This script assumes Config.make has been made"
    echo "-------------------------------------------------------------------"
    if [ ! -z "$1" ] ; then
        echo "ERROR message: $1"
    fi
    exit 1
}

Has_Git()
{
    if hash git 2>/dev/null; then
        return 0
    else
        return 1
    fi
}

makebuildinfo()
{
    local target=$1
    local BUILDTYPE=$2
    local MATHLIB=$3
    local GIT_COMMIT=$4
    local GIT_BRANCH=$5
    local CUDA_PATH=$6
    local CUB_PATH=$7
    local WITH_1BITSGD=$8
    local BUILDER=$9
    local BUILDMACHINE=${10}
    local BUILDPATH=${11}

    (
        printf "#ifndef _BUILDINFO_H\n"
        printf "#define _BUILDINFO_H\n"
        printf "#define _GIT_EXIST\n"
        printf "#define _MATHLIB_ \"%s\"\n" "$MATHLIB"
        printf "#define _BUILDSHA1_ \"%s\"\n" "$GIT_COMMIT"
        printf "#define _BUILDBRANCH_ \"%s\"\n" "$GIT_BRANCH"
        if [ -z "$CUDA_PATH" ]; then
            printf "#define _BUILDTARGET_ \"CPU-only\"\n"
        else
            printf "#define _BUILDTARGET_ \"GPU\"\n"
            printf "#define _CUDA_PATH_ \"%s\"\n" "$CUDA_PATH"
        fi
        if [ ! -z "$CUB_PATH" ]; then
            printf "#define _CUB_PATH_ \"%s\"\n"  "$CUB_PATH"
        fi
        if [ ! -z "$CUDNN_PATH" ]; then
            printf "#define _CUDNN_PATH_ \"%s\"\n"  $CUDNN_PATH
        fi
        printf "#define _BUILDTYPE_ \"%s\"\n" "$BUILDTYPE"
        if [ ! -z "$WITH_1BITSGD" ]; then
            printf "#define _WITH_1BITSGD_ \"yes\"\n"
        else
            printf "#define _WITH_1BITSGD_ \"no\"\n"
        fi
        printf "#define _BUILDER_ \"%s\"\n"  "$BUILDER"
        printf "#define _BUILDMACHINE_ \"%s\"\n"  "$BUILDMACHINE"
        printf "#define _BUILDPATH_ \"%s\"\n"  "$BUILDPATH"
        printf "#endif\n"
    ) > "$target"
}

#//////////////////////////////////////////////////////#
#               main function                          #
#//////////////////////////////////////////////////////#
if [ $# -ne 1 ]; then
    usage
fi

config=$1

# Check whether we have git and what is the SHA-1 value
if Has_Git; then has_git=1; else has_git=0; usage "git does not exist"; fi
GIT_STATUS=' (modified)'
git diff --quiet && git diff --cached --quiet && GIT_STATUS=''
GIT_COMMIT=`git rev-parse HEAD`$GIT_STATUS
GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`

# Looking into Config.make
if [ ! -e $config ] ; then
    usage "Config.make not exists"
fi
source $config

# Whether we have CUDA_PATH
if [ -z "${CUDA_PATH+x}" ]; then
    CUDAPATH=""
else
    CUDAPATH=$CUDA_PATH
fi

# Whether we have CUB_PATH
if [ -z "${CUB_PATH+x}" ]; then
    CUBPATH=""
else
    CUBPATH=$CUB_PATH
fi

# Identify MKL variant being used
if [ "$MATHLIB" = "mkl" -a "$MKL_THREADING" = "sequential" ]; then
    MATHLIB=mkl-sequential
fi

# Build machine info
BUILDER=$USER
BUILDMACHINE=`hostname`
BUILDPATH=`pwd`

# Make buildinfo.h (only update if changed)
target=Source/CNTK/buildinfo.h
if [ ! -d Source ] ; then
    usage
fi

makebuildinfo \
    "$target\$\$" \
    "$BUILDTYPE" \
    "$MATHLIB" \
    "$GIT_COMMIT" \
    "$GIT_BRANCH" \
    "$CUDAPATH" \
    "$CUBPATH" \
    "$CNTK_ENABLE_1BitSGD" \
    "$BUILDER" \
    "$BUILDMACHINE" \
    "$BUILDPATH"

cmp -s "$target\$\$" "$target" || mv "$target\$\$" "$target"
back to top