-
Notifications
You must be signed in to change notification settings - Fork 15
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
Data invalidation and deinitialization do not signal about read dependency in a task afterwards in certain cases #39
Comments
I'm not sure how to use your reproducer since it only puts zeroes in the value in cpu memory. But I guess it's the missing initialized = 0 case that the starpu-1.3 branch indeed didn't have, and that was indeed uncovered by this new situation (in the past we wouldn't have replicates that are allocated but not initialized or planned to be). I have pushed a fix to the starpu-1.3 branch. |
The fix did not solve the problem. I believe you did not catch what I was trying to convey. You do not have to use my reproducer. You need to take a look at these lines:
|
order of tasks for handle
|
The behavior is unchanged completely?
Prohibited? Why? The |
With my fix, I see |
Method |
Just to conclude on my side:
I understand, that if it is done like I see it, then it might break My proposition: add a new access mode I am just wondering if my proposition makes sense to you. I described the way how I would implement it myself. |
Hi!
I have just added
starpu_data_invalidate_submit
to my code. Of course, I did it with mistakes. Some cases were reported by StarPU, signaling that some data is not initialized to be read. But some cases were not. I found out, that marking data withstarpu_data_set_reduction_methods
makes it immune to such an assert if the data remains on the same device and its access mode is STARPU_R.If the data is on GPU and reduction methods only support CPUs, then the following error is printed:
However, if the reduction methods are supported on device, where the data is allocated, then program is not stopped, no error is thrown and result of computations becomes silently wrong (undefined behavior).
Here is a simple program to reproduce:
The text was updated successfully, but these errors were encountered: