Prohibit sloppy syncing#284
Merged
shakedregev merged 8 commits intodevelopfrom May 27, 2025
Merged
Conversation
9 tasks
shakedregev
approved these changes
May 27, 2025
Collaborator
shakedregev
left a comment
There was a problem hiding this comment.
This looks good. I suggest removing "Function call ignored", because this implies that the code otherwise executes normally. Which it doesn't because it errors.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Prohibit synchronizing memory space if it is already updated. Only memory space that is out of date can be synchronized with the updated space. For example, if host is up to date and device is out of date, then function
syncData(DEVICE);will copy data from the host to the device. If the device is up-to-date (i.e. flaggpu_updated_ == true), Re::Solve will return an error. The user is required to keep track of which memory space is current.Current behavior in Re::Solve is to do nothing if user tries to sync the memory space that is up to date. This provides a convenience for users -- if in doubt whether memory space has been synced, just sync again. This sloppy approach makes certain bugs difficult to track. For example, consider a case where
cpu_updated_ == falseandgpu_updated_ == true. If user changes vector elements on the host by accessing its raw data and forgets to to mark the host memory as updated, the device memory flag will still show that memory space is the current one. Then, if trying to sync the device with host, functionsyncDatawill quietly do nothing. By prohibiting sloppy syncing, this function will return an error alerting user something is wrong.Closes #282
Proposed changes
syncDatareturns an error when trying to sync the memory space which is up-to-date.Checklist
-Wall -Wpedantic -Wconversion -Wextra.Further comments