blob: 0412d06f615598729763f55155890e9b1ec4f6f7 [file] [log] [blame]
#include <stdlib.h>
#include <string.h>
#include <omp.h>
int main()
{
const char **strs = (const char **) malloc (sizeof (char*) * (omp_get_num_devices () + 1));
for (int i = omp_invalid_device - 1; i <= omp_get_num_devices () + 1; i++)
{
const char *str = omp_get_uid_from_device (i);
int dev = omp_get_device_from_uid (str);
// __builtin_printf("%i -> %s -> %d\n", i, str, dev);
if (i < omp_initial_device || i > omp_get_num_devices ())
{
if (dev != omp_invalid_device || str != NULL)
abort ();
continue;
}
if (i == omp_initial_device || i == omp_get_num_devices ())
{
if ((dev != omp_initial_device && dev != omp_get_num_devices ())
|| str == NULL
|| strcmp (str, "OMP_INITIAL_DEVICE") != 0) /* GCC impl. choice */
abort ();
dev = omp_get_num_devices ();
}
else if (dev != i || str == NULL || str[0] == '\0')
abort ();
strs[dev] = str;
}
for (int i = 0; i < omp_get_num_devices (); i++)
for (int j = i + 1; j <= omp_get_num_devices (); j++)
if (strcmp (strs[i], strs[j]) == 0)
abort ();
free (strs);
return 0;
}