Skip to content
New issue

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

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

Already on GitHub? Sign in 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.

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

No branches or pull requests

4 participants