-
Notifications
You must be signed in to change notification settings - Fork 26
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
Please add standard Cmake support for MKL #32
Comments
Please always include your command line input (and any relevant environment variables) to help us replicate what you did. I'm not opposed to PKG_CONFIG_PATH, but I'm not quite sure how to support it. For instance, with MKL there are actually 17 different packages:
How would you see the user specifying which of those packages to use? MKL adds itself to CPATH, etc. when running CPATH is supported by a variety of compilers including GNU, Clang, and Intel compilers. You can also specify the include path via CXXFLAGS instead of CPATH. The include path is needed only for the tester, not for the BLAS++ library itself. You can also specify the library path via LDFLAGS instead of LIBRARY_PATH. For example:
Alternatively, you can use CMake's BLAS search. E.g., set
In some cases, that has fewer options, e.g., it has only one IBMESSL version, not specific ones for 32-bit/64-bit integers, sequential and multi-threaded. Note both MKL and OpenBLAS have pkg-config and cmake files. Haven't looked at other libraries yet. |
X-ref: icl-utk-edu/lapackpp#7 @mgates3 note that we try to build a CUDA-enabled BLAS++ here (target are TACC Lonestar6 A100 GPUs with CUDA 11.4). |
Oh right. Cmake doesn't even record how it was invoked. Trust me, if I ask for cmake supoprt it's not because I'm a fan.
Eh, you're the user. The
And I can use autoconf and makefiles....
BLIS does too. So use them? V. |
My question is for an end-user of BLAS++, what should that look like? Should they say:
and then BLAS++ should figure out which pkg-config file to load? Or they should say specifically which MKL variant they want, like:
When there's only one choice of a package, say I want to load FFTW, then it's clear how to use pkg-config. When there are many choices — Intel MKL with its many variants, OpenBLAS, BLIS, IBM ESSL with its variants, Cray libsci, Apple Accelerate, etc., some that have pkg-config or cmake configs, some that don't — it's less clear to me what that looks like. Our early hope was that environment modules would deal with this for us. The user would load whatever modules they want, then MKL, OpenBLAS, etc. are in their various paths. This doesn't turn out to work very well — in many cases, |
Got it. How about
? Environment modules are a mechanism, not a standard vocabulary. They differ greatly between systems. On my system I provide
et cetera. Different module for each configuration. If a module doesn't set all paths, that's on the module writer. We have an |
@mgates3 Reading through this, we've solved the majority of these problems in When we include
The same (general) procedure works for This is a really long way of saying that we have tested that
The |
I believe
CPATH
is a Gnu extension. Package discovery in Cmake is done throughCMAKE_MODULE_PATH
or (as in the case of MKL)PGK_CONFIG_PATH
.Could you add support for the latter?
The text was updated successfully, but these errors were encountered: