-
Notifications
You must be signed in to change notification settings - Fork 13
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
Are task dependencies (depend clauses) in bolt working? #96
Comments
Thank you for a question. In my understanding, In your example, // I checked it with GCC 9.3.0, but it works for Clang too.
#pragma omp task depend(out:x) shared(x)
{
printf(" T1: OUTPUT setting x to 2\n");
x=2;
}
#pragma omp task depend(in:x) shared(x_is_not_equal_two,x)
{
if (x != 2) {
x_is_not_equal_two = 1;
printf(" T2: INPUT dependend clause x should now be 2 x:%d\n",x);
}
} BOLT should support |
Thank you, That makes sense now . So I reordered the code and added a sleep in T1 to force asynchronous behavior.
Here is the script I ran for testing.
And here is the final test code.
|
@gregrodgers Thank you for your report. We will also investigate this (hopefully within a couple of weeks). |
Thank you. As a follow-up. I tried LLVM 6 and AOMP13 with their native library builds, and they now pass and exhibit the desired async behavior. So I now conclude that I cannot plug in the bolt libraries for LLVM . Maybe we should leave this open. |
Thank you. Yes, the I'd be happy if you would allow me to use your code (with some modification) as a test. |
You are welcome to use the code above. |
Thanks! |
We have not fully checked all and understood why, but it "seems" that BOLT 2.x (it is now BOLT 2.0) based on LLVM 11.0 does not support https://jenkins-pmrs.cels.anl.gov/view/abt/job/bolt-review-support-check/
BOLT+Argobots passed BOLT+Argobots passed every Currently I can say this It is still under investigation and I do not say this happens because of GCC or LLVM OpenMP or anything else. Even if it is because of the combination issue, such support should be explicitly mentioned. I will update this CI and summarize the support (and fix it if possible). |
This testing does not cover all compilers and architectures. If you failed this |
It seems BOLT does not work well with task dependencies. It causes a segment fault. (null pointer) |
This could be my user error. I have a simple code where I am trying to get T2 to execute after T1 because T1 writes x which is input to T2. The code is not setting x to 2 before T2 runs. Here is the code. This fails the same way in both libgomp and libbolt. It fails in clang and gcc 7.5.
The text was updated successfully, but these errors were encountered: