- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i have started exploring openmp 4.0 constructs for intel xeon phi architecture by writing small code snippets.
So, i wrote the following code:
int a[100],b[100],c[100],i; #pragma omp target device(mic0) map(a,b) //offload target(mic:0) { for(i=0;i<100;i++) { a=i;b=i; c=a+b; } system("uname -r"); }
but the compilation of this code gives following error:
icc -openmp test.c
test.c(6): error: identifier "mic0" is undefined #pragma omp target device(mic0) map(a,b) //offload target(mic:0)
but if i change my code as:
#pragma offload target(mic:0)// map(a,b) //offload target(mic:0) { for(i=0;i<100;i++) { a=i;b=i; c=a+b; } system("uname -r"); }
the compilation succeeds.
What is the reason for this behaviour ? is the #pragma omp target device incorrect for icc?
Eagerly awaiting your reply
Regards,
Puneet Singh
PS: i can login to my mic0 card using ssh mic0 (passwordless ssh)
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
'#pragma omp target device()' and '#pragma offload target()' are different offload directives and have different syntax. For the 'omp' flavor, the argument for 'device' has to be an integer expression, eg:
int d = f ? omp_get_num_devices () : omp_get_default_device ();
#pragma omp target device (d)
For the non-omp flavor, the argument to 'device' is considerably more rich: target ( target-name [ :target-number ] ); target-name could be 'mic' or 'gfx', and target-number takes various integer values, eg, -1 lets the runtime system decide the target, as described in the compiler User and Reference Guide.
Patrick

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page