-
Notifications
You must be signed in to change notification settings - Fork 28
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
KNL planning #391
Comments
@kpamnany I've updated the SHAs. Yichao's patch to LLVM has been merged so latest svn version works with Julia master. |
I've ported rr to Cori/KNL (rr-debugger/rr#1904). For any segfaults, etc. capturing such a problem in rr and keeping the trace would allow me to easily diagnose. I suspect it won't work with MPI out of the box, but looking at that is on my todo list for the end of next week. |
I've updated the SHAs to versions with Keno's fixes included. I've also rebuilt |
@kpamnany I've now managed to built with icc. See the top post for a link to the binary. |
On KNL, the memory allocation required by Julia's threads and LAPACK (eigenvalue problem in Newton's method) through OMP can collide such that Julia crashes. We should probably set |
I always set |
Linking JuliaLang/julia#19640 |
I've updated the top comment with the extra info for building with the Intel compilers. |
Building with Intel compilers, I get:
Any ideas? |
This must be a version of Julia with JuliaLang/julia#17057. I don't know why it wouldn't work on KNL but we are still adjusting to that change. If you want something running now, I'd try to build 374c3d6b3c3e15c00f7d3df8b5cb7c8a763aa746 instead of latest master. |
I've updated and tagged most packages to work and not show warnings on Julia master. The main exception is A minor problem is DataFrames and DataArrays. I don't think they are critical in the computations but they still throw a lot of warnings and it is not likely that DataArrays will be fixed. We should check that we don't call any code that uses DataArrays or DataFrames when we benchmark because the deprecation warnings are slowing things down a lot. Finally, the Intel build in the |
Regarding the build info of 26 January 2017, |
I've just updated the commit hashes to the versions we use now. Could you try them instead? |
Thanks! This time I have the opposite problem. Julia checks out fine but LLVM does not. |
Hm. Just checked and it looks right. It is this commit llvm-mirror/llvm@72258b4 |
I tried again with a virgin git clone of the repo, but the second checkout doesn't work. Am I doing something wrong? $ make -C deps get-llvm [output omitted] $ git checkout 3181500e361991b25a0ed8d63a821eb3c7a2e4bf You are in 'detached HEAD' state. You can look around, make experimental If you want to create a new branch to retain commits you create, you may git checkout -b new_branch_name HEAD is now at 3181500... Fix missing root across safe-point |
Maybe there is an issue with the make target. Try to |
The LLVM repo was two commits behind, so I did a git pull and then was able to checkout. Compilation worked. Thanks!
Transcendental functions are 4x slower though... |
You're now getting the same performance with Julia on KNL that we are. Andreas and Keno have been working to improve things (see the issue Keno linked above), but it's going to be a moving target for some time. |
I'd expect MKL's gemms to be close to what you can possibly get. Isn't the 6 teraflops for If you are not already doing it, you should try to make vectorized calls to VML for transcendental functions. I see a 50x difference between using Julia's |
Ah you're right. The analog of I'm puzzled by your 50x number. I tried
VML.jl gave me 4x speedup on my MacBook but only a few percent on KNL. Only a single thread is used on both machines. |
Did you change the path to the library as described in https://github.com/JuliaMath/VML.jl#using-vmljl? It should point to the |
Oops forgot to say that this did solve my problem. Thanks! |
Is there any status update of this topic after the release of Julia v0.6? I am trying to build Julia v0.6 on KNL with Intel's compiler, but I still haven't been able to build it. It would be great if you can update the information provided above. |
Julia 0.6 doesn't support KNL out the box. You can use Julia 0.6 on KNL but you'll need a more recent LLVM. I think building Julia with the Intel compilers works fine but I gave up on building LLVM with the Intel compilers. GCC worked fine. Notice that you can use MKL without building Julia with the Intel compilers. |
I did not yet build 0.6 for KNL, but I did manage a MKL build for a regular Intel CPU. As Andreas says, LLVM does not build properly with Intel's icc. I think I got an error message about linking to |
Thank you, @andreasnoack and @hsseung. I have managed to compile Julia and LLVM with GCC. I used the commits suggested on the first Andreas's comment. However, I haven't been able to compile the released v0.6 even with the GCC compiler. |
Which version of LLVM are you using? The problem is that LLVM's API changes over time so Julia has to be adjusted a bit every time the LLVM version changes. |
I have checked out the commit you suggested on the first comment for LLVM and checked out the release-v0.6 for Julia. Which version would you suggest for LLVM? |
After trying out different versions of LLVM, I was able to compile the release-0.6 of Julia with release-40 of LLVM! Thank you for your help! |
Hi. I am using Julia on Cori. Currently on Haswell (downloaded binaries for julia 1.0.2). Is there a way to get your compile script for julia on KNL? |
Have you tried just to run Julia 1.0.2 on a KNL node? We have upgraded LLVM in the meantime so I believe Julia should just run on KNL now. You might want to build a custom system image to the KNL, see PackageCompiler.jl and you most likely would like to use MKL, see what I'm doing in https://github.com/JuliaComputing/MKL.jl. The current trick is to adjust the paths in |
UPDATED: I'll try to maintain KNL builds. You can use
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
putand execute
make -C deps get-llvm
. Then checkoutIntel 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 withmaster
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.
The text was updated successfully, but these errors were encountered: