Skip to content
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

Floating point registers are not preserved #232

Open
lifflander opened this issue Jun 21, 2023 · 1 comment
Open

Floating point registers are not preserved #232

lifflander opened this issue Jun 21, 2023 · 1 comment

Comments

@lifflander
Copy link

lifflander commented Jun 21, 2023

Our project (https://github.com/DARMA-tasking/vt) uses Boost context for our task-based runtime system for scientific applications in HPC. Recently, we found a bug in a scientific application that uses our library after a context switch that we finally figured was due to not preserving nonvolatile floating point registers (in this case we were running on PPC64, but I think the problem is more prevalent). According to the POWER9 specification, FP14-FP31 are nonvolatile and must be preserved for correct context switching (https://www.ibm.com/docs/en/aix/7.2?topic=overview-register-usage-conventions).

I've noticed looking back in the history that floating point preservation was dropped around v1.61. The argument for preserving in jump_fcontext was dropped. I'm trying to understand why this functionality was lost.

@olk

@olk
Copy link
Member

olk commented Aug 18, 2023

Probably a re-factoring in one of the merge-requests has dropped floting point registers from preserving.
Unfortunately I don't have access to PPC platforms.

Could you provide a merge-request that fixes your problem?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants