-
Notifications
You must be signed in to change notification settings - Fork 88
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
Half preconditioner, multigrid, log, and reorder #1713
base: half_factorization
Are you sure you want to change the base?
Conversation
3db59fd
to
cd9677a
Compare
6d2f717
to
e3bccda
Compare
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.
Mostly LGTM. I would suggest to change the default threshold parameter for MC64.
Additionally, I would prefer to add some explanaitions as to why tests are skipped.
cd9677a
to
5e5cd03
Compare
240e12f
to
3537d26
Compare
c276034
to
bbefde6
Compare
3537d26
to
046707c
Compare
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.
Same note here. If we are skipping tests or unable to solve/compute with half with the correct result, then I think we should not support that algorithm with half.
const experimental::distributed::Vector<ValueType>, | ||
experimental::distributed::Vector<ValueType>>; | ||
f(dynamic_cast<type*>(linop), std::forward<Args>(args)...); | ||
if constexpr (std::is_same_v<remove_complex<ValueType>, half>) { |
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.
Is there a reason we dont support half with distributed ? Or will it come in a future PR ?
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.
half precision transfer is trivial but the reduce operation and one side accumulation is not trivial.
I have tried adding the custom MPI_Op
to support reduce on custom type, which works.
However, one side accumulation does not allow any non-predefined operation.
We will only support half in this case.
Or, use relatively new compiler and MPI standard with its extension, so they can support half natively.
It will be future PR anyways. It might not be in this release, either.
046707c
to
82793ee
Compare
72d9d50
to
88967e6
Compare
1e9688c
to
de5c2a7
Compare
88967e6
to
e667ec0
Compare
de5c2a7
to
c443777
Compare
e667ec0
to
c32201d
Compare
d68a589
to
e1a3b3d
Compare
1af5199
to
c50371d
Compare
e1a3b3d
to
bea709e
Compare
c50371d
to
5cf1c61
Compare
bea709e
to
e4973cb
Compare
5cf1c61
to
5de19e4
Compare
e4973cb
to
f6291e6
Compare
382359f
to
d8a70e5
Compare
f6291e6
to
8ba9c5a
Compare
435eccc
to
91e2fed
Compare
8ba9c5a
to
f7519c6
Compare
91e2fed
to
abcb027
Compare
f7519c6
to
a291084
Compare
abcb027
to
20b4441
Compare
Co-authored-by: Marcel Koch <marcel.koch@kit.edu>
…i_kernels to make them work with single
a291084
to
f758d41
Compare
20b4441
to
62305a8
Compare
This PR adds the preconditioner, multigrid, and reorder with half precision support.
move multigrid here because multigrid require direct from #1712 and jacobi here
the reorder and log are not much, so I include them as well.