-
Notifications
You must be signed in to change notification settings - Fork 47
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
feat: Fedora packaging #759
base: develop
Are you sure you want to change the base?
Conversation
Can one of the admins verify this patch? |
Note that this CI/CD already highlights some issues: the current test builder is significantly slower on |
@LecrisUT thanks a lot for the work, I like it. |
Also, one of the reasons to carry our own |
Good question, it's
That one I did not research. Can you elaborate on it? I will port it upstream and propose a more portable approach if it's needed.
That's straightforward, just have the user (or in a preset) define the blas vendor. On the fedora script I don't do it because it's the only vendor available. Not sure about the nuance with openmp enabled though. |
Well, at the time when we started, this was the best/easiest way to get consistent flag configuration across multiple targets.
Sure, the best documentation is the history of our In particular this is the diff against The point is that CP2K (and DBCSR by extension) calls BLAS/LAPACK routines from OpenMP parallel regions (and also from non-OpenMP parallel regions). Hence we need OpenBLAS to be built with OpenMP. To submit it to CMake I thought about adding a component to explicitly request
This then requires that we have a runtime check on the flexiblas provider to ensure people are not passing along a non-thread-compatible BLAS/LAPACK implementation. Essentially what we have in the |
fyi, not approving the workflows since the changes in this PR would not be covered by the tests (yet) |
BTW, this is a Fedora packaging PR, we should discuss it on a CMake modernization one/issue. If you can open an issue can copy the discussion, we can continue there
It depends on where it is used. You can define a
Interesting, I will need some time to digest this, probably after the CECAM conference.
Flexiblas is runtime selecting the BLAS/LAPACK. Maybe we can check if we can impose static restrictions there |
If this PR targets the next release of CP2K/DBCSR, it would be the right time to finish/conclude it. |
Well one design question, do we want to implement the same structure as cp2k/cp2k repo? In either case this PR is finished and ready for review as-is. The only tasks to be done are on the project owner side to enable packit. |
Sorry for the slow response, I will see if I have time to review it in June... In any case, DBCSR is tested in CP2K, where the machinery is already in place, so I don't think there is any rush... |
I've already enabled the Packit-as-a-Service app for this repo. |
The testing here with packit and the CI in CP2K are completely different in subtle ways. Packit testing in cp2k never picks up the changes here, and the changes here never check that packaging and changes in Fedora rawhide. The former are accounted for in the cp2k testing, but the latter should be addressed with this approach as I've mentioned some of the subtleties in the cp2k PR for this. I would say the only issue here is, since cp2k has adopted a different integration approach here, do we wish to mirror that integration here? @oschuett opinion? |
/packit build |
@LecrisUT sorry, I was not clear in my message... As I said, I will take care of your changes. We do not need to follow any CP2K repo rule here (DBCSR is a much smaller project, at some point it will become standalone in CP2K). |
Of course, I was not assuming any dependencies, and I will be leaving that design issue to upstream. Packit does not have the tools yet to do reverse dependency testing either. As for the other comment, the design question still stands and I am in favor of consistency.
One softer design question there would be if the CI could be run more freely in this project's case |
I think so, CI here is github with very low new additions... |
This is unrelated, sorry...
It would be nice to pick-up DBCSR's changes since the last RC. I changed some common bits in OpenCL which are necessary for CP2K/DBM status. In any case, I think the OpenCL BE might become separate as well (not the DBCSR kernel/s however). For the latter, I would perhaps change the license to BSD-3. |
@hfp We had a long discussion and preparation time ago on making DBCSR standalone. There is a ticket for that in CP2K, back to 2019, and the discussion was repeated in several other places during the cmake activity. Now I see @oschuett is moving CP2K to cmake, so I think it is good time for CP2K to use DBCSR as a standalone library. Then, it will be much easier to provide new DBCSR as needed. |
/packit build |
The tests taking |
I'm checking this output: https://download.copr.fedorainfracloud.org/results/lecris/dbcsr/fedora-rawhide-x86_64/07625725-dbcsr/builder-live.log.gz I see that the test which takes most of the time is:
I can try to split this test in multiples, but clearly it doesn't solve the problem... In our CI we do run with the following options: dbcsr/.github/workflows/testing-linux.yml Line 58 in d332b30
According to the OpenMPI documentation, the |
Making the workload run with OpenMPI using |
In terms of performance, I agree with you, a proper binding is what we need. But in the context of the tests the goal is to check the correctness. I leave to @LecrisUT to decide what to do, the tests are running fine in our CI. |
Things are a bit muddy, because when building, the environment is very limited, and in the x86_64 case, there are only 2 cores available competing for both mpi and openmp resources. At least that's for upstream building in copr, downstream use a bit more resources so it fails less. I am considering a refactor so that the testsuite looks like this making it more easy to run the testsuite on pre-installed libraries. Normally I would still prefer to do unit tests in the spec file, but in this case, these tests are the more expensive parts, so I'll think about it a bit. |
I mean, if the rank-count is fixed and known and a lower number aka 2, one could use |
Note that the most expensive tests we have are really serial, so likely I will go for a single rank... |
Technically yes, but because these use ctest parallelization, the overall time is less
It's not as clear cut because on |
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
This adds packaging CI/CD for Fedora:
develop
, the packaging is tested in coprfind_package
. Needs some refactoring similar to spglibTo fully work the packit app needs to be installed on the repo. In the meantime the example run can be seen on my fork: LecrisUT#1
soft-depends-on: #757