Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Problems with Skylake support: missing hbwmalloc.h header #163

Closed
mmrmo opened this issue Jan 7, 2018 · 5 comments
Closed

Problems with Skylake support: missing hbwmalloc.h header #163

mmrmo opened this issue Jan 7, 2018 · 5 comments

Comments

@mmrmo
Copy link

mmrmo commented Jan 7, 2018

Thanks for the beautiful work. I have have however a problem in compiling it, if I try to specifically enable Intel Skylake optimizations, in attempt to replicate the comparison against MKL from: Intel simple SGEMM/DGEMM benchmark

./configure --enable-threading=openmp skx

./configure skx make clean ; make V=1

... fails, due to not finding the header hbwmalloc.h (from memkind, I understand?)

make V=1
./build/flatten-headers.py -c -v1 ./frame/include/blis.h include/skx/blis.h "./include" "./ ./config/skx/ ./kernels/skx/ ./kernels/skx/3/ ./frame/0/ ./frame/0/copysc/ ./frame/1/ ./frame/1d/ ./frame/1f/ ./frame/1m/ ./frame/1m/packm/ ./frame/1m/scalm/ ./frame/1m/unpackm/ ./frame/2/ ./frame/2/gemv/ ./frame/2/ger/ ./frame/2/hemv/ ./frame/2/her/ ./frame/2/her2/ ./frame/2/symv/ ./frame/2/syr/ ./frame/2/syr2/ ./frame/2/trmv/ ./frame/2/trsv/ ./frame/3/ ./frame/3/gemm/ ./frame/3/hemm/ ./frame/3/her2k/ ./frame/3/herk/ ./frame/3/symm/ ./frame/3/syr2k/ ./frame/3/syrk/ ./frame/3/trmm/ ./frame/3/trmm3/ ./frame/3/trsm/ ./frame/base/ ./frame/base/check/ ./frame/base/noopt/ ./frame/compat/ ./frame/compat/cblas/ ./frame/compat/cblas/f77_sub/ ./frame/compat/cblas/src/ ./frame/compat/check/ ./frame/compat/f2c/ ./frame/compat/f2c/util/ ./frame/include/ ./frame/include/level0/ ./frame/include/level0/1e/ ./frame/include/level0/1m/ ./frame/include/level0/1r/ ./frame/include/level0/io/ ./frame/include/level0/ri/ ./frame/include/level0/ri3/ ./frame/include/level0/rih/ ./frame/include/level0/ro/ ./frame/include/level0/rpi/ ./frame/ind/ ./frame/ind/cntx/ ./frame/ind/misc/ ./frame/ind/oapi/ ./frame/ind/tapi/ ./frame/ind/ukernels/ ./frame/thread/ ./frame/util/"
.....................................................................................................................................................................................................................................................................................................................................................................................................................................................
gcc -O3 -mavx512f -mavx512dq -mavx512bw -mavx512vl -mfpmath=sse -march=skylake-avx512 -Wall -Wno-unused-function -Wfatal-errors -fPIC -std=c99 -D_POSIX_C_SOURCE=200112L -fopenmp -I./include/skx -I./frame/3/ -I./frame/ind/ukernels/ -I./frame/1m/ -I./frame/1f/ -I./frame/1/ -I./frame/include -DBLIS_VERSION_STRING=\"0.2.2-137\" -c config/skx/bli_cntx_init_skx.c -o obj/skx/config/skx/bli_cntx_init_skx.o
In file included from config/skx/bli_cntx_init_skx.c:35:0:
./include/skx/blis.h:16156:34: fatal error: hbwmalloc.h: No such file or directory
 #include <hbwmalloc.h> // skipped
                                  ^
compilation terminated.
Makefile:452: recipe for target 'obj/skx/config/skx/bli_cntx_init_skx.o' failed
make: *** [obj/skx/config/skx/bli_cntx_init_skx.o] Error 1

Could you please indicate this dependence in future revisions of 'configure' ?

Thanks!

@devinamatthews
Copy link
Member

This should be fixed in f7df64d when it is merged. Note that this configuration is tuned for parts with 2 VPUs.

@mmrmo
Copy link
Author

mmrmo commented Jan 7, 2018 via email

@jeffhammond
Copy link
Member

jeffhammond commented Jan 7, 2018 via email

@devinamatthews
Copy link
Member

@fgvanzee maybe we could add aliases for missing architectures that don't have their own kernels: ivybridge, broadwell, skylake etc. Maybe also add skylake-x : skx...

@fgvanzee
Copy link
Member

fgvanzee commented Jan 8, 2018

@devinamatthews Creating these aliases wouldn't be too much work. That said, I can't help but notice that the only people the missing aliases might confuse are those who are configuring with explicit configuration targets. (Running ./configure auto will automatically select haswell on a Broadwell system, for example.) I thought we were the only ones who spelled out our configurations? :) But perhaps the overly cautious and curious users who try to understand what's going on before they execute anything might also get confused, stumbling upon config_registry and not finding their un-aliased microarchitecture listed, which might lead them to think that their system is unsupported.

On a side note, it's unfortunate there isn't a mechanism in my recently-rewritten configuration system that allows for these aliases without duplicating the contents of, for example, the make_defs.mk file of the "base" configuration. In that file, everything would remain the same between the aliased and base configurations except for the line that specifies the configuration name.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants