- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi All,
I am trying to offload a do loop onto the intel MIC.
for every function call at its definition I added this.
!dir$ attributes offload:mic :: <function name>
The function turned out to be nested i.e each function had multiple function call within it.
Continuing I have reached a point where I got this error and I have no idea how to solve it.
/opt/intel/impi/5.0.3.048/intel64/include/mpif.h(82): error #8687: A variable appearing in a DECLARE TARGET directive it must not be an element of a common block or appear in an EQUIVALENCE statement. [MPI_STATUS_IGNORE]
INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
---------------^
/opt/intel/impi/5.0.3.048/intel64/include/mpif.h(83): error #8687: A variable appearing in a DECLARE TARGET directive it must not be an element of a common block or appear in an EQUIVALENCE statement. [MPI_STATUSES_IGNORE]
INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE,1)
---------------^
/opt/intel/impi/5.0.3.048/intel64/include/mpif.h(84): error #8687: A variable appearing in a DECLARE TARGET directive it must not be an element of a common block or appear in an EQUIVALENCE statement. [MPI_ERRCODES_IGNORE]
INTEGER MPI_ERRCODES_IGNORE(1)
---------------^
/opt/intel/impi/5.0.3.048/intel64/include/mpif.h(85): error #8687: A variable appearing in a DECLARE TARGET directive it must not be an element of a common block or appear in an EQUIVALENCE statement. [MPI_ARGVS_NULL]
CHARACTER*1 MPI_ARGVS_NULL(1,1)
-------------------^
/opt/intel/impi/5.0.3.048/intel64/include/mpif.h(86): error #8687: A variable appearing in a DECLARE TARGET directive it must not be an element of a common block or appear in an EQUIVALENCE statement. [MPI_ARGV_NULL]
CHARACTER*1 MPI_ARGV_NULL(1)
-------------------^
/opt/intel/impi/5.0.3.048/intel64/include/mpif.h(603): error #8687: A variable appearing in a DECLARE TARGET directive it must not be an element of a common block or appear in an EQUIVALENCE statement. [MPI_BOTTOM]
INTEGER*4 MPI_BOTTOM, MPI_IN_PLACE, MPI_UNWEIGHTED
-----------------^
/opt/intel/impi/5.0.3.048/intel64/include/mpif.h(603): error #8687: A variable appearing in a DECLARE TARGET directive it must not be an element of a common block or appear in an EQUIVALENCE statement. [MPI_IN_PLACE]
INTEGER*4 MPI_BOTTOM, MPI_IN_PLACE, MPI_UNWEIGHTED
-----------------------------^
/opt/intel/impi/5.0.3.048/intel64/include/mpif.h(603): error #8687: A variable appearing in a DECLARE TARGET directive it must not be an element of a common block or appear in an EQUIVALENCE statement. [MPI_UNWEIGHTED]
INTEGER*4 MPI_BOTTOM, MPI_IN_PLACE, MPI_UNWEIGHTED
Thanks,
Aketh
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Question - are you making calls to the MPI library from inside code that has been offloaded to the coprocessor? If so, you might need to rethink your programming model.
When using offload, create one (or if you have multiple coprocessors, one or more) MPI ranks on the host. Within that rank, offload work to the coprocessor and use OpenMP to multitask the work.
When you want to run multiple ranks on the coprocessor or use MPI to communicate with MPI ranks on the host(s) or other coprocessors, instead of offload, compile your code to run natively on the coprocessor (and natively on the host, if needed.)

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