This is an automated email from the ASF dual-hosted git repository.
taolv pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git
The following commit(s) were added to refs/heads/master by this push:
new 1238aa0 Revert "use mkl sparse matrix to improve performance
(#14492)" (#14806)
1238aa0 is described below
commit 1238aa09f068e3e6c6be436b995019712cca2e4a
Author: PatricZhao <[email protected]>
AuthorDate: Tue Apr 30 21:37:08 2019 +0800
Revert "use mkl sparse matrix to improve performance (#14492)" (#14806)
This reverts commit c437d5b789c9d9892522a9c32ef6e6f20785a3a2.
---
3rdparty/sparse-matrix/Makefile | 21 ---------------
3rdparty/sparse-matrix/sparse_matrix.cc | 45 -------------------------------
3rdparty/sparse-matrix/sparse_matrix.h | 48 ---------------------------------
Makefile | 34 -----------------------
ci/jenkins/Jenkins_steps.groovy | 2 +-
src/operator/tensor/dot-inl.h | 28 ++-----------------
6 files changed, 3 insertions(+), 175 deletions(-)
diff --git a/3rdparty/sparse-matrix/Makefile b/3rdparty/sparse-matrix/Makefile
deleted file mode 100644
index 214312f..0000000
--- a/3rdparty/sparse-matrix/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-CC = g++
-C = gcc
-MKLROOT = /opt/intel/mkl
-
-ifneq ($(USE_INTEL_PATH),)
- MKLROOT = $(USE_INTEL_PATH)/mkl
-endif
-
-CFLAGS = -fpic -O2 -I/opt/intel/mkl/include -c -Wall -Werror -DMKL_ILP64
-m64 -std=c++11
-LDFLAGS = -Wl,--start-group -L${MKLROOT}/../compiler/lib/intel64
${MKLROOT}/lib/intel64/libmkl_intel_ilp64.a
${MKLROOT}/lib/intel64/libmkl_intel_thread.a
${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm -ldl
-
-default: libsparse_matrix.so
-
-libsparse_matrix.so: sparse_matrix.o
- $(CC) -shared -o libsparse_matrix.so sparse_matrix.o $(LDFLAGS)
-
-sparse_matrix.o: sparse_matrix.cc sparse_matrix.h
- $(CC) $(CFLAGS) sparse_matrix.cc
-
-clean:
- $(RM) libsparse_matrix.so *.o *~
diff --git a/3rdparty/sparse-matrix/sparse_matrix.cc
b/3rdparty/sparse-matrix/sparse_matrix.cc
deleted file mode 100644
index fa362f0..0000000
--- a/3rdparty/sparse-matrix/sparse_matrix.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-#include <iostream>
-#include <string>
-#include <fstream>
-#include <mkl_spblas.h>
-#include "sparse_matrix.h"
-
-
-
-bool mkl_DotCsrDnsDns(SP_INT64* rows_start, SP_INT64* col_indx,
- float* values, float* X, float* y,
- int rows, int cols, int X_columns)
-{
-
- sparse_index_base_t indexing = SPARSE_INDEX_BASE_ZERO;
- sparse_status_t status;
- sparse_matrix_t A = NULL;
- sparse_layout_t layout = SPARSE_LAYOUT_ROW_MAJOR;
- float one, zero;
- one = (float)1.0;
- zero = (float)0.0;
-
- MKL_INT* rows_end = rows_start + 1;
- status = mkl_sparse_s_create_csr(&A, indexing, rows, cols, rows_start,
rows_end, col_indx, values);
-
- if (status != SPARSE_STATUS_SUCCESS)
- {
- std::cout << "mkl_sparse_s_create_csr status :" << status << std::endl;
- return false;
- }
- sparse_operation_t operation = SPARSE_OPERATION_NON_TRANSPOSE;
- struct matrix_descr descrA;
- descrA.type = SPARSE_MATRIX_TYPE_GENERAL;
-
- status = mkl_sparse_s_mm(operation, one, A, descrA, layout, X,
X_columns, X_columns, zero, y, X_columns);
- if (status != SPARSE_STATUS_SUCCESS)
- {
- std::cout << "mkl_sparse_s_create_csr status :" << status << std::endl;
- return false;
- }
-
- mkl_sparse_destroy(A);
-
- return true;
-
-}
diff --git a/3rdparty/sparse-matrix/sparse_matrix.h
b/3rdparty/sparse-matrix/sparse_matrix.h
deleted file mode 100644
index 93054a8..0000000
--- a/3rdparty/sparse-matrix/sparse_matrix.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef MXNET_OPERATOR_SPARSE_MATRIX_INL_H_
-#define MXNET_OPERATOR_SPARSE_MATRIX_INL_H_
-
-
-#if (!defined(__INTEL_COMPILER)) & defined(_MSC_VER)
-#define SP_INT64 __int64
-#define SP_UINT64 unsigned __int64
-#else
-#define SP_INT64 long long int
-#define SP_UINT64 unsigned long long int
-#endif
-
-
-#if defined _WIN32 || defined __CYGWIN__
- #ifdef BUILDING_DLL
- #ifdef __GNUC__
- #define SPM_API_PUBLIC __attribute__ ((dllexport))
- #else
- #define SPM_API_PUBLIC __declspec(dllexport) // Note: actually gcc seems
to also supports this syntax.
- #endif
- #else
- #ifdef __GNUC__
- #define SPM_API_PUBLIC __attribute__ ((dllimport))
- #else
- #define SPM_API_PUBLIC __declspec(dllimport) // Note: actually gcc seems
to also supports this syntax.
- #endif
- #endif
- #define SPM_API_LOCAL
-#else
- #if __GNUC__ >= 4
- #define SPM_API_PUBLIC __attribute__ ((visibility ("default")))
- #define SPM_API_LOCAL __attribute__ ((visibility ("hidden")))
- #else
- #define SPM_API_PUBLIC
- #define SPM_API_LOCAL
- #endif
-#endif
-
-
-
-extern "C"
-{
- extern SPM_API_PUBLIC bool mkl_DotCsrDnsDns(SP_INT64* rows_start,
SP_INT64* col_indx,
- float* values, float* X, float* y, int rows, int cols, int
X_columns);
-
-}
-
-#endif //MXNET_OPERATOR_SPARSE_MATRIX_INL_H_
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 29cfd57..981a868 100644
--- a/Makefile
+++ b/Makefile
@@ -144,7 +144,6 @@ ifeq ($(USE_MKLDNN), 1)
LDFLAGS += -L$(MKLDNNROOT)/lib -lmkldnn -Wl,-rpath,'$${ORIGIN}'
endif
-
# setup opencv
ifeq ($(USE_OPENCV), 1)
CFLAGS += -DMXNET_USE_OPENCV=1
@@ -416,14 +415,6 @@ ifeq ($(USE_DIST_KVSTORE), 1)
LDFLAGS += $(PS_LDFLAGS_A)
endif
-#sparse-matrix
-ifeq ($(USE_BLAS), mkl)
- SPARSE_MATRIX_DIR = $(ROOTDIR)/3rdparty/sparse-matrix
- LIB_DEP += $(SPARSE_MATRIX_DIR)/libsparse_matrix.so
- CFLAGS += -I$(SPARSE_MATRIX_DIR)
- LDFLAGS += -L$(SPARSE_MATRIX_DIR) -lsparse_matrix
-Wl,-rpath,'$${ORIGIN}'
-endif
-
.PHONY: clean all extra-packages test lint docs clean_all rcpplint rcppexport
roxygen\
cython2 cython3 cython cyclean
@@ -561,30 +552,11 @@ ifeq ($(UNAME_S), Darwin)
endif
endif
-ifeq ($(USE_BLAS), mkl)
-ifeq ($(UNAME_S), Darwin)
- install_name_tool -change '@rpath/libsparse_matrix.dylib'
'@loader_path/libsparse_matrix.dylib' $@
-endif
-endif
-
$(PS_PATH)/build/libps.a: PSLITE
PSLITE:
$(MAKE) CXX="$(CXX)" DEPS_PATH="$(DEPS_PATH)" -C $(PS_PATH) ps
-ifeq ($(USE_BLAS), mkl)
-$(SPARSE_MATRIX_DIR)/libsparse_matrix.so: SPARSE_MATRIX
-
-SPARSE_MATRIX:
-ifeq ($(USE_INTEL_PATH), NONE)
- $(MAKE) -C $(SPARSE_MATRIX_DIR)
-else
- $(MAKE) -C $(SPARSE_MATRIX_DIR) USE_INTEL_PATH=$(USE_INTEL_PATH)
-endif
- mkdir -p $(ROOTDIR)/lib
- cp $(SPARSE_MATRIX_DIR)/libsparse_matrix.so $(ROOTDIR)/lib/
-endif
-
$(DMLC_CORE)/libdmlc.a: DMLCCORE
DMLCCORE:
@@ -661,10 +633,6 @@ rpkg:
cp -rf lib/libmklml_intel.so R-package/inst/libs; \
fi
- if [ -e "lib/libsparse_matrix.so" ]; then \
- cp -rf lib/libsparse_matrix.so R-package/inst/libs; \
- fi
-
mkdir -p R-package/inst/include
cp -rl include/* R-package/inst/include
Rscript -e "if(!require(devtools)){install.packages('devtools', repo =
'https://cloud.r-project.org/')}"
@@ -710,7 +678,6 @@ clean: rclean cyclean $(EXTRA_PACKAGES_CLEAN)
(cd scala-package && mvn clean) || true
cd $(DMLC_CORE); $(MAKE) clean; cd -
cd $(PS_PATH); $(MAKE) clean; cd -
- cd $(SPARSE_MATRIX_DIR); $(MAKE) clean; cd -
cd $(NNVM_PATH); $(MAKE) clean; cd -
cd $(AMALGAMATION_PATH); $(MAKE) clean; cd -
$(RM) -r $(patsubst %, %/*.d, $(EXTRA_OPERATORS)) $(patsubst %,
%/*/*.d, $(EXTRA_OPERATORS))
@@ -721,7 +688,6 @@ clean: rclean mkldnn_clean cyclean testclean
$(EXTRA_PACKAGES_CLEAN)
(cd scala-package && mvn clean) || true
cd $(DMLC_CORE); $(MAKE) clean; cd -
cd $(PS_PATH); $(MAKE) clean; cd -
- cd $(SPARSE_MATRIX_DIR); $(MAKE) clean; cd -
cd $(NNVM_PATH); $(MAKE) clean; cd -
cd $(AMALGAMATION_PATH); $(MAKE) clean; cd -
endif
diff --git a/ci/jenkins/Jenkins_steps.groovy b/ci/jenkins/Jenkins_steps.groovy
index 23230ac..12c1a0a 100644
--- a/ci/jenkins/Jenkins_steps.groovy
+++ b/ci/jenkins/Jenkins_steps.groovy
@@ -33,7 +33,7 @@ mx_cmake_lib = 'build/libmxnet.so, build/libmxnet.a,
build/3rdparty/dmlc-core/li
// mxnet cmake libraries, in cmake builds we do not produce a libnvvm static
library by default.
mx_cmake_lib_debug = 'build/libmxnet.so, build/libmxnet.a,
build/3rdparty/dmlc-core/libdmlc.a, build/tests/mxnet_unit_tests'
mx_cmake_mkldnn_lib = 'build/libmxnet.so, build/libmxnet.a,
build/3rdparty/dmlc-core/libdmlc.a, build/tests/mxnet_unit_tests,
build/3rdparty/openmp/runtime/src/libomp.so,
build/3rdparty/mkldnn/src/libmkldnn.so.0'
-mx_mkldnn_lib = 'lib/libmxnet.so, lib/libmxnet.a, lib/libiomp5.so,
lib/libmkldnn.so.0, lib/libmklml_intel.so, lib/libsparse_matrix.so,
3rdparty/dmlc-core/libdmlc.a, 3rdparty/tvm/nnvm/lib/libnnvm.a'
+mx_mkldnn_lib = 'lib/libmxnet.so, lib/libmxnet.a, lib/libiomp5.so,
lib/libmkldnn.so.0, lib/libmklml_intel.so, 3rdparty/dmlc-core/libdmlc.a,
3rdparty/tvm/nnvm/lib/libnnvm.a'
mx_tensorrt_lib = 'build/libmxnet.so, lib/libnvonnxparser_runtime.so.0,
lib/libnvonnxparser.so.0, lib/libonnx_proto.so, lib/libonnx.so'
mx_lib_cpp_examples = 'lib/libmxnet.so, lib/libmxnet.a,
3rdparty/dmlc-core/libdmlc.a, 3rdparty/tvm/nnvm/lib/libnnvm.a,
3rdparty/ps-lite/build/libps.a, deps/lib/libprotobuf-lite.a, deps/lib/libzmq.a,
build/cpp-package/example/*'
mx_lib_cpp_examples_cpu = 'build/libmxnet.so, build/cpp-package/example/*'
diff --git a/src/operator/tensor/dot-inl.h b/src/operator/tensor/dot-inl.h
index 318254b..f81eb9c 100644
--- a/src/operator/tensor/dot-inl.h
+++ b/src/operator/tensor/dot-inl.h
@@ -38,9 +38,7 @@
#ifdef __CUDACC__
#include "./dot-inl.cuh"
#endif // __CUDACC__
-#if (MSHADOW_USE_MKL == 1)
-#include "sparse_matrix.h"
-#endif
+
namespace mxnet {
namespace op {
@@ -777,35 +775,13 @@ inline void DotCsrDnsDnsImpl(const OpContext& ctx,
}
using nnvm::dim_t;
-#if (MSHADOW_USE_MKL == 1)
- TShape lhs_shape = lhs.shape();
- TShape rhs_shape = rhs.shape_;
-#endif
+
const TBlob data_l = lhs.data();
const TBlob indptr_l = lhs.aux_data(csr::kIndPtr);
const TBlob col_idx_l = lhs.aux_data(csr::kIdx);
const TBlob& data_r = rhs;
const TBlob data_out = *ret;
-#if (MSHADOW_USE_MKL == 1)
- if (data_l.type_flag_ == mshadow::kFloat32
- && indptr_l.type_flag_ == mshadow::kInt64
- && col_idx_l.type_flag_ == mshadow::kInt64
- && !trans_lhs) {
- bool ret = mkl_DotCsrDnsDns(static_cast<SP_INT64*>(indptr_l.dptr_),
- static_cast<SP_INT64*>(col_idx_l.dptr_),
- data_l.dptr<float>(),
- data_r.dptr<float>(),
- data_out.dptr<float>(),
- lhs_shape[0],
- lhs_shape[1],
- rhs_shape[1]);
- if (ret) {
- return;
- }
- }
-#endif
-
MSHADOW_SGL_DBL_TYPE_SWITCH(data_l.type_flag_, DType, { // data type
MSHADOW_IDX_TYPE_SWITCH(indptr_l.type_flag_, IType, { // indptr type
MSHADOW_IDX_TYPE_SWITCH(col_idx_l.type_flag_, CType, { // col idx type