Skip to content

Conversation

@victorapm
Copy link
Contributor

@victorapm victorapm changed the base branch from master to hypre-3.0 August 25, 2025 04:17
@victorapm victorapm mentioned this pull request Aug 25, 2025
Copy link
Contributor

@ulrikeyang ulrikeyang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. This looks good to me.

@rfalgout
Copy link
Contributor

Hi @victorapm . Thanks for setting this up! I need to think about it a bit more before approving. I'm not crazy about moving the multiprecision machinery into the test directory, but maybe that's how it needs to be. I'll look this week when I get back.

@victorapm
Copy link
Contributor Author

Thanks, Rob! I wasn't sure about that either, but couldn't find a better solution for now. Thanks for looking! We can reevaluate this

@oseikuffuor1
Copy link
Contributor

@victorapm Thanks for this work! Just to add to the discussion, I also would prefer the multiprecision machinery to be outside of the test/ examples directories. I just think it is cleaner and perhaps makes things easier to maintain that way. That said, you have demonstrated how one can use the tools to enable the capabilities in the test directory, though there might be a lighter-weight option to do that. I think in the future, when the multiprecision build becomes the more standard build/ use of hypre, we may revisit this to streamline our regression testing. For now, my work on mixed-precision regression testing is keeping things local to the driver file. If we decide to build the helper functions in multiple precisions, it should be straightforward to adapt to use them.

@rfalgout
Copy link
Contributor

It looks like the only test driver that needed the different precisions for some of these Generate routines is ij_mp.c.

@oseikuffuor1 : Is the ij_mp.c driver something you plan on keeping around?

Since it doesn't look like runtime precision is needed, at a minimum I would change the mup_code script to use the onlydef option as we do in Euclid and a few of the other directories. This will minimize the number of files generated and only make the fixed precision interface symbols available (i.e., _flt, etc.). It will not generate mup_*.c files.

But, if the driver mentioned above is not needed, then we don't need the multi-precision machinery and we can just move the helper functions in the standard way.

@ulrikeyang
Copy link
Contributor

The ij_mp driver is needed for testing of single precision preconditioners with double precision solvers. It generates a single precision and a double precision matrix. However, one could just generate double precision matrix and convert it to a single precision matrix. That conversion routine is a true hypre routine which is located outside of the test directory. That would require providing these conversion routines in hypre-3.0, which we hadn't planned yet. Right now we just copy the vector back and forth for the mixed precision preconditioner/solver.

@victorapm victorapm added the After 3.0 Code changes that can wait to be merged after hypre 3.0 label Aug 29, 2025
@victorapm victorapm changed the title [hypre 3.0]: remove files from library Remove files from library Aug 29, 2025
Base automatically changed from hypre-3.0 to master September 26, 2025 14:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

After 3.0 Code changes that can wait to be merged after hypre 3.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants