| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| |
| ifeq ($(USE_MKLDNN), 1) |
| MKLDNN_SUBMODDIR = $(ROOTDIR)/3rdparty/mkldnn |
| MKLDNN_BUILDDIR = $(MKLDNN_SUBMODDIR)/build |
| MXNET_LIBDIR = $(ROOTDIR)/lib |
| ifeq ($(UNAME_S), Darwin) |
| OMP_LIBFILE = $(MKLDNNROOT)/lib/libiomp5.dylib |
| MKLML_LIBFILE = $(MKLDNNROOT)/lib/libmklml.dylib |
| MKLDNN_LIBFILE = $(MKLDNNROOT)/lib/libmkldnn.0.dylib |
| MKLDNN_LIB64FILE = $(MKLDNNROOT)/lib64/libmkldnn.0.dylib |
| else |
| OMP_LIBFILE = $(MKLDNNROOT)/lib/libiomp5.so |
| MKLML_LIBFILE = $(MKLDNNROOT)/lib/libmklml_intel.so |
| MKLDNN_LIBFILE = $(MKLDNNROOT)/lib/libmkldnn.so.0 |
| MKLDNN_LIB64FILE = $(MKLDNNROOT)/lib64/libmkldnn.so.0 |
| endif |
| endif |
| |
| .PHONY: mkldnn mkldnn_clean |
| |
| mkldnn_build: $(MKLDNN_LIBFILE) |
| |
| $(MKLDNN_LIBFILE): |
| mkdir -p $(MKLDNNROOT) |
| cd $(MKLDNN_SUBMODDIR) && rm -rf external && cd scripts && ./prepare_mkl.sh && cd .. && cp -a external/*/* $(MKLDNNROOT)/. |
| cmake $(MKLDNN_SUBMODDIR) -DCMAKE_INSTALL_PREFIX=$(MKLDNNROOT) -B$(MKLDNN_BUILDDIR) -DARCH_OPT_FLAGS="-mtune=generic" -DWITH_TEST=OFF -DWITH_EXAMPLE=OFF |
| $(MAKE) -C $(MKLDNN_BUILDDIR) VERBOSE=1 |
| $(MAKE) -C $(MKLDNN_BUILDDIR) install |
| if [ -f "$(MKLDNN_LIB64FILE)" ]; then \ |
| mv $(MKLDNNROOT)/lib64/libmkldnn* $(MKLDNNROOT)/lib/; \ |
| fi |
| mkdir -p $(MXNET_LIBDIR) |
| cp $(OMP_LIBFILE) $(MXNET_LIBDIR) |
| cp $(MKLML_LIBFILE) $(MXNET_LIBDIR) |
| cp $(MKLDNN_LIBFILE) $(MXNET_LIBDIR) |
| |
| mkldnn_clean: |
| $(RM) -r 3rdparty/mkldnn/build |
| $(RM) -r $(MKLDNNROOT) |
| |
| ifeq ($(USE_MKLDNN), 1) |
| mkldnn: mkldnn_build |
| else |
| mkldnn: |
| endif |