mirror of
https://github.com/autc04/Retro68.git
synced 2025-03-02 10:30:00 +00:00
62 lines
1.1 KiB
C
62 lines
1.1 KiB
C
#include <omp.h>
|
|
#include <stdlib.h>
|
|
|
|
int main (void)
|
|
{
|
|
int d = omp_get_default_device ();
|
|
int id = omp_get_initial_device ();
|
|
|
|
if (d < 0 || d >= omp_get_num_devices ())
|
|
d = id;
|
|
|
|
unsigned int a = 0xcdcdcdcd;
|
|
#pragma omp target enter data map (to:a)
|
|
|
|
a = 0xabababab;
|
|
unsigned char *p = (unsigned char *) &a;
|
|
unsigned char *q = p + 2;
|
|
|
|
#pragma omp target enter data map (alloc:p[:1], q[:1])
|
|
|
|
if (d != id)
|
|
{
|
|
if (!omp_target_is_present (&a, d))
|
|
abort ();
|
|
if (!omp_target_is_present (&p[0], d))
|
|
abort ();
|
|
if (!omp_target_is_present (&q[0], d))
|
|
abort ();
|
|
}
|
|
|
|
#pragma omp target exit data map (release:a)
|
|
|
|
if (d != id)
|
|
{
|
|
if (!omp_target_is_present (&a, d))
|
|
abort ();
|
|
if (!omp_target_is_present (&p[0], d))
|
|
abort ();
|
|
if (!omp_target_is_present (&q[0], d))
|
|
abort ();
|
|
}
|
|
|
|
#pragma omp target exit data map (from:q[:1])
|
|
|
|
if (d != id)
|
|
{
|
|
if (omp_target_is_present (&a, d))
|
|
abort ();
|
|
if (omp_target_is_present (&p[0], d))
|
|
abort ();
|
|
if (omp_target_is_present (&q[0], d))
|
|
abort ();
|
|
|
|
if (q[0] != 0xcd)
|
|
abort ();
|
|
if (p[0] != 0xab)
|
|
abort ();
|
|
}
|
|
|
|
return 0;
|
|
}
|