You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by GitBox <gi...@apache.org> on 2017/11/11 13:50:59 UTC
[GitHub] expnn opened a new issue #8617: Failed to detect tcmalloc or jemalloc for Fedora 26
expnn opened a new issue #8617: Failed to detect tcmalloc or jemalloc for Fedora 26
URL: https://github.com/apache/incubator-mxnet/issues/8617
The wildcard given by the current Makefile failed to detect the gperftools/jemalloc malloc libraries.
Currently, it uses the following snippet to detect these libraries, which assumes the `.so` file is located in the '*/lib' subdirectories.
https://github.com/apache/incubator-mxnet/blob/35ceea73ccc1acfb2ec62cdaa841822e51c13456/Makefile#L168-L213
This is not true for Fedora 26 (and for many 64-bit systems), which put the shared library files into 'lib64' subdirectories. For example, on my system, it is located in the `/usr/lib64` directory.
```bash
$ locate libtcmalloc.so
/usr/lib64/libtcmalloc.so.4
/usr/lib64/libtcmalloc.so.4.4.5
```
I suggest to using the following snippet to replace the above-mentioned codes.
It simply replaces 'lib' into 'lib*' in the wildcard matching.
```Makefile
# gperftools malloc library (tcmalloc)
ifeq ($(USE_GPERFTOOLS), 1)
# FIND_LIBNAME=tcmalloc_and_profiler
FIND_LIBNAME=tcmalloc
FIND_LIBFILEEXT=so
FIND_LIBFILE=$(wildcard /lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
ifeq (,$(FIND_LIBFILE))
FIND_LIBFILE=$(wildcard /usr/lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
ifeq (,$(FIND_LIBFILE))
FIND_LIBFILE=$(wildcard /usr/local/lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
ifeq (,$(FIND_LIBFILE))
USE_GPERFTOOLS=0
endif
endif
endif
ifeq ($(USE_GPERFTOOLS), 1)
CFLAGS += -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
LDFLAGS += $(FIND_LIBFILE)
endif
endif
# jemalloc malloc library (if not using gperftools)
ifneq ($(USE_GPERFTOOLS), 1)
ifeq ($(USE_JEMALLOC), 1)
FIND_LIBNAME=jemalloc
FIND_LIBFILEEXT=so
FIND_LIBFILE=$(wildcard /lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
ifeq (,$(FIND_LIBFILE))
FIND_LIBFILE=$(wildcard /usr/lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
ifeq (,$(FIND_LIBFILE))
FIND_LIBFILE=$(wildcard /usr/local/lib*/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
ifeq (,$(FIND_LIBFILE))
FIND_LIBFILE=$(wildcard /usr/lib*/x86_64-linux-gnu/lib$(FIND_LIBNAME).$(FIND_LIBFILEEXT))
ifeq (,$(FIND_LIBFILE))
USE_JEMALLOC=0
endif
endif
endif
endif
ifeq ($(USE_JEMALLOC), 1)
CFLAGS += -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc \
-fno-builtin-free -DUSE_JEMALLOC
LDFLAGS += $(FIND_LIBFILE)
endif
endif
endif
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services