On Fri, Nov 13, 2015 at 17:41:53 +0100, Jakub Jelinek wrote:
> On Fri, Nov 13, 2015 at 07:37:17PM +0300, Ilya Verbin wrote:
> > I don't know which interface to implement to maintain compatibility in the
> > future.
> > Anyway, currently it's impossible that a process will use the same
> > liboffloadmic
> > for 2 different offloading paths (say GCC's in exec and ICC's in a dso),
> > because
> > in fact GCC's and ICC's libraries are not the same. First of all, they have
> > different names: liboffloadmic in GCC and just liboffload in ICC. And most
> > importantly, ICC's version contains some references to libiomp5, which were
> > removed form GCC's version. In theory, we want to use one library with all
> > compilers, but I'm not sure when it will be possible.
>
> Ok, in that case it is less of a problem.
>
> > > Do you get still crashes on any of the testcases with this?
> >
> > No, all tests now pass using emul. I'll report when I have any results on
> > HW.
>
> Perfect, I'll commit it to gomp-4_5-branch then.
make check-target-libgomp with offloading to HW also passed :)
And this:
+++ b/libgomp/testsuite/libgomp.c/target-32.c
@@ -3,6 +3,7 @@
int main ()
{
+ int x = 1;
int a = 0, b = 0, c = 0, d[7];
#pragma omp parallel
@@ -18,6 +19,7 @@ int main ()
#pragma omp target nowait map(alloc: b) depend(in: d[2]) depend(out: d[3])
{
+ while (x);
usleep (1000);
#pragma omp atomic update
b |= 4;
@@ -25,6 +27,7 @@ int main ()
#pragma omp target nowait map(alloc: b) depend(in: d[2]) depend(out: d[4])
{
+ while (x);
usleep (5000);
#pragma omp atomic update
b |= 1;
demonstrates 200% CPU usage both using emul and HW, so 2 target tasks really run
concurrently.
-- Ilya