-
Notifications
You must be signed in to change notification settings - Fork 26
Description
UPDATED: I'll try to maintain KNL builds. You can use
/global/cscratch1/sd/noack/julia/julia # built with gcc 4.8.5
/global/cscratch1/sd/noack/juliaintel/julia # built with icc 17.0.0 20160721
Some adjustments are necessary before Celeste can run on KNL. My thoughts were that this issue could be a source for the relevant information related to KNL, i.e. updated build information for Julia and a list issue related to KNL runs.
The main issue is that we'll need LLVM's development version to run on KNL. To use LLVM-svn, as the development version is called, we'll need the development version of Julia. Hence, Celeste will be having two moving targets which might cause some headaches because LLVM changes might break Julia. In order to make this easier to manage, I'll suggest that we keep commits SHAs for a pair of Julia and LLVM-svn that work together. I'll try to keep them updated.
So the build info right now are
Build instructions
In Make.user put
override LLVM_VER=svn
override USE_INTEL_MKL=1
and execute make -C deps get-llvm. Then checkout
Julia df62c9922c320bff0f6d32bdf3faf87337925e2f
LLVM 584a5d174f2d0776a9390b12799abe8262ffc2ba
Updated 6 March 2017
Intel sepcific
If building with the Intel compilers, it is also necessary to apply this patch to LLVM.
https://reviews.llvm.org/D27610
Right now, Julia's master version is not much different from Julia 0.5 but it might change. If that happens, we'll need to decide what to do. We might need fixes from master so the best thing might be to keep Celeste up to date with master but that could be demanding. Alternatively, we could branch off and only cherry-pick the fixes we need but I'll suggest that we take that discussion only when it becomes relevant.
Finally, there are some performance considerations for KNL. To do well on KNL we'd need threading and vectorization to work well. Some of the code base might not vectorize in the form it's written now (I don't know yet) but we should be aware that some refactoring for vectorization might be needed.