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
[SuperLU_DIST] New Build #4672
[SuperLU_DIST] New Build #4672
Conversation
That's a new error. Hmm. I assume this is from the warning about libmetis |
That's better, now I just need to fix the Windows build (msmpi should work) (I don't think they recommend using Parmetis there, which is good), and then build the 64-bit version in a different directory |
For the PowerPC error
you need GCC 5 or 6, I don't remember exactly which one (I think the minimum that'd work is 5) |
Co-authored-by: Boris Kaus <61824822+boriskaus@users.noreply.github.com>
What in the heck. Oh it's a libgfortran3 thing. |
Want to turn off parametis for now? |
Well I think we can just turn it off for Windows, the SuperLU_Dist docs show how. I won't be able to do that until this evening. Strangely ParMETIS is not listed in the optional deps section of SuperLU_Dist, so I'm not sure what Windows will lose in the process. Then the last thing for SuperLU_Dist is to build the 64-bit version and rename it. |
Maybe @xiaoyeli can help here. Sherry - I believe it should be possible to build SuperLU_Dist without partitioning support. I think eventually we want parmetis, but it may not necessarily be useful for all problems to do the nested dissection ordering. |
You can disable (par)metis during installation with CMake: The default ordering is serial Metis. Since you are not linking with Metis, in your code, you need to set ColPerm option as something else. A good alternative is: |
Thanks a bunch! |
IMO, it should be ok to exclude Windows from MPI libraries. |
One of the users did a Window port of superlu_dist, with MPI support. If you are savvy with CMake, you can find the Window related setup in top level CMakeLists.txt and SRC/CMakeLists.txt. |
Unfortunately this project is specifically at the request of someone looking for Windows support for a class (in the Fall I think?). For the remaining xSDK builders we need I don't really plan to build for Windows for this reason.
The current problem seems to be CMake just not picking up MSMPI using the I'm still working on this problem, but I switched to work on some SuiteSparse (and SparseArrays) stuff this week that I'm almost done with. |
I am pretty sure most MPI packages are never actually tested on Windows. @xiaoyeli Do you know if SuperLU-Dist works on windows with MSMPI? I would love to learn more about this class and why do they want MPI on windows on the student's laptops. |
that would be me; I'm teaching a modelling class in the geosciences where students use our MPI-parallel/PETSc-based code LaMEM to perform simulations. Approximately 90% of the students have windows machines and there is nearly no-one with linux experience. MSMPI itself works ok under windows. See, e.g., MAGEMin_jll, which we tested on various machines. |
Thanks @boriskaus - that is very valuable. Does MPI parallel Petsc really make a huge difference on most laptops? Wouldn't you get sufficient parallelism from BLAS threads? Is using sequential Petsc for teaching, and a parallel one on linux clusters for scaling a good solution? We'll naturally try to see if we can find a solution here - but just wondering if you still have a path if it is tough. |
@Wimmerer One suggestion would be to get this merged without windows, so that upstream packages can be built, while windows support is worked on in a separate PR. |
Most students try their setup locally before sending this off to a cluster, so if possible it would be nice to have this on windows. Yet, if that is too difficult, it is not a disaster (SuiteSparse is an option that could work as well). In fact, using the Windows Subsystem for Linux (WSL) would allow running this in parallel on modern windows laptops. What would be important, though, is having |
I'm working on the SuiteSparse PR next. We can drop the SuperLU_dist dependency on Windows maybe? And work on Windows further at a later date. I'll rebuild the PRs this evening in light of that plan. |
S/SuperLU_DIST/build_tarballs.jl
Outdated
|
||
# These are the platforms we will build for by default, unless further | ||
# platforms are passed in on the command line | ||
platforms = expand_gfortran_versions(supported_platforms()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why expanding the libgfortran version?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Wimmerer bump
I don't think SuperLU_DIST can be possibly compiled for Windows with MinGW: https://github.com/xiaoyeli/superlu_dist/blob/3810da3a85baf516bfeafc316f1833acfee5b625/SRC/sec_structs.c#L134 |
Note: this still doesn't work because the source code uses the non-standard `getline`, not provided by MinGW.
What compiler are you using? I consulted a successful user, the following is his cmake script. He uses LLVM / clang compiler. '/winsame/user/dev2/contrib-llvm_vs2017/cmake-3.20.3-ser/bin/cmake.exe' |
The problem is with GCC + MinGW. See for example https://stackoverflow.com/q/27381903/2442087 |
@piyush314 |
Yes. Getfreq routine is not used anymore. Earlier it was used with time
stamp counter, to convert it into seconds.
…On Mon, May 2, 2022 at 9:03 PM X. Sherry Li ***@***.***> wrote:
@piyush314 <https://github.com/piyush314>
'getline' is used only in getFreq() routine, which in turn is not so
useful. Can we remove that? It causes trouble in gcc + MinGW (Windows)
—
Reply to this email directly, view it on GitHub
<#4672 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAZXO7SIYVYKNANJH63KEULVIB3OZANCNFSM5RMXOJSA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
@piyush314 |
@piyush314 has resolved this issue in master branch. |
Applying this upstream patch we can now build for Windows, thanks! This now looks good to me, except for the fact I don't know why this is expanding the libgfortran version, I believe we're building multiple duplicates. Input from @Wimmerer about this choice would be useful. |
We should just remove the gfortran expansion in here. I think most people are not sure when to do it or copy a recipe from another package. |
@xiaoyeli Do you have plans to tag a new release of superlu_dist with this fix included? If so, we can just use that instead of carrying the patch here. |
I believe there was a reason, I did not have it on initial commit I don't think. But locally it no longer seems necessary, so I've removed. I added 64-bit index builds so that's the only thing left to be checked I think. I think PETSc should happily consume these libraries despite the different names, though. |
@ViralBShah The patch is already in github master. I will not do a BugFix tag for the moment, because next week, we will have a new release with new functionality.
|
Yes - we can definitely wait till the next release since it is quite soon. |
I think this should be good to merge. We will only find out issues once we can try out these binaries which will happen post merging. |
This isn't ready yet, I need to build the 64 bit
XSDK_INDEX_SIZE
, and split them. I'm going to attempt to do what I did with PETSc by renaming filename and SONAME in subdirectories. Hopefully the PETSc build system is resilient to those renamings (I believe it is, you can do--with-lib=...
).We do, also, have a Windows issue with PARMETIS that I need to investigate.