diff --git a/mace/examples/BUILD b/mace/examples/BUILD index 0e5f062fdfb06d12bb948a1437754e80b213f305..b1611be473ba34fd2d96e4148c4b0e8fa10dca1a 100644 --- a/mace/examples/BUILD +++ b/mace/examples/BUILD @@ -29,9 +29,7 @@ cc_test( cc_binary( name = "mace_run", - srcs = [ - "mace_run.cc", - ], + srcs = glob(["models/*/*.cc"] + ["mace_run.cc"]), copts = ["-std=c++11"], linkopts = ["-fopenmp"] + if_android(["-ldl"]), linkstatic = 1, diff --git a/mace/examples/mace_run.cc b/mace/examples/mace_run.cc index 97d27a5e120cd54a6f7f1f233afa1a7579e70ff2..aedcbfbcb64999074a6aa75670b12508fa45751a 100644 --- a/mace/examples/mace_run.cc +++ b/mace/examples/mace_run.cc @@ -21,7 +21,7 @@ using namespace std; using namespace mace; namespace mace { -extern NetDef CreateNet(); +extern NetDef CreateGCN512(); } void ParseShape(const string &str, vector *shape) { string tmp = str; @@ -95,7 +95,7 @@ int main(int argc, char **argv) { // NetDef net_def; // net_def.ParseFromIstream(&file_stream); // file_stream.close(); - NetDef net_def = mace::CreateNet(); + NetDef net_def = mace::CreateGCN512(); DeviceType device_type = ParseDeviceType(device); VLOG(0) << device_type; diff --git a/tools/validate_gcn.sh b/tools/validate_gcn.sh index 3817094fa0bd4021a36f2ae5853fa5902e0b6e21..930e3e3becb3c1b3eca67cc628b1b49d218e7ce8 100644 --- a/tools/validate_gcn.sh +++ b/tools/validate_gcn.sh @@ -12,6 +12,7 @@ fi TF_MODEL_FILE_PATH=$1 MODEL_DIR=$(dirname ${TF_MODEL_FILE_PATH}) +MACE_SOURCE_DIR=`/bin/pwd` MACE_MODEL_NAME='mace_model.pb' INPUT_FILE_NAME='model_input' OUTPUT_FILE_NAME='gcn.out' @@ -19,6 +20,7 @@ OUTPUT_LIST_FILE='gcn.list' PHONE_DATA_DIR="/data/local/tmp/${MACE_MODEL_NAME}" KERNEL_DIR="${PHONE_DATA_DIR}/cl/" IMAGE_SIZE=$2 +MODEL_TAG=GCN${IMAGE_SIZE} # Step 1: Generate input data echo "Step 1: Generate input data" @@ -27,18 +29,24 @@ python tools/validate.py --generate_data true --random_seed 1 \ --input_shape="${IMAGE_SIZE},${IMAGE_SIZE},3" # Step 2: convert tf model to mace model -#echo "Step 2: convert tf model to mace model and optimize memory" -#bazel build //mace/python/tools:tf_converter -#bazel-bin/mace/python/tools/tf_converter --input=${TF_MODEL_FILE_PATH} \ -# --output=${MODEL_DIR}/${MACE_MODEL_NAME} \ -# --input_node=input \ -# --output_node=GCN/br_result_2/fcn_br \ -# --data_type=DT_HALF \ -# --runtime=gpu +echo "Step 2: convert tf model to mace model and optimize memory" +echo $MACE_SOURCE_DIR +bazel build //mace/python/tools:tf_converter +mkdir -p ${MACE_SOURCE_DIR}/mace/examples/models/gcn +bazel-bin/mace/python/tools/tf_converter --input=${TF_MODEL_FILE_PATH} \ + --output=${MACE_SOURCE_DIR}/mace/examples/models/gcn/mace_gcn.cc \ + --input_node=input \ + --output_node=GCN/br_result_2/fcn_br \ + --data_type=DT_HALF \ + --runtime=gpu \ + --output_type=source \ + --template=${MACE_SOURCE_DIR}/mace/python/tools/model.template \ + --model_tag=${MODEL_TAG} \ + --confuse=True # Step 3: Run model on the phone echo "Step 3: Run model on the phone" -bazel build -c opt --strip always mace/examples:mace_run \ +bazel build -c opt --strip always mace/examples:mace_run \ --crosstool_top=//external:android/crosstool \ --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ --cpu=arm64-v8a @@ -46,7 +54,6 @@ bazel build -c opt --strip always mace/examples:mace_run \ adb shell "mkdir -p ${PHONE_DATA_DIR}" adb shell "mkdir -p ${KERNEL_DIR}" adb push mace/kernels/opencl/cl/* ${KERNEL_DIR} -#adb push ${MODEL_DIR}/${MACE_MODEL_NAME} ${PHONE_DATA_DIR} adb push ${MODEL_DIR}/${INPUT_FILE_NAME} ${PHONE_DATA_DIR} adb push bazel-bin/mace/examples/mace_run ${PHONE_DATA_DIR}