module array -> array passed by argument

1 view
Skip to first unread message

Noriyuki Kushida

unread,
Mar 25, 2020, 6:19:25 AM3/25/20
to omni-c...@googlegroups.com
Dear Nakao-san,

Sorry for the interruption.
I would appreciate it if you can give me comments on my problem.

I would like to use an array defined in a module, but as an array passed by an argument via a wrapper. I attach a sample code, but the rough idea is:
===== module =======
real(8) :: arr(nx,ny,2)
===================
======= wrapper =====
use module, only: arr
call sub(arr(:,:,1))
====================
========= subroutine====
subroutine sub(arr)
real(8) :: arr(nx,ny)
=====================
This basically works, but "shadow" causes an error:
[RANK:0] XcalableMP runtime error: unknown align manner
Is there a way to circumvent this problem?
Since, in the above case, arr(:,:,1) needs to be updated, I would like to avoid the entire update.

Apart from the above, this is not a problem but a question, I see that the native compiler generates the following message;
     3, include 'setValue.f90'
          22, Loop not vectorized/parallelized: contains call
     37, Possible copy in and copy out of xmp__arr in call to xmpf_array_set_local_array_

I feel that setValue.f90 does not have any function call in the loop, and I suspect the part is transformed by Omni Compiler. Does this prevent us from using OpenACC?
And also, should I add a pragma to tell the compiler that xmp__arr is already uploaded?
(this means, in my real code. In my real code, I used !$acc kernel present, but I see similar messages, because of the renaming of arrays.)

Thank you in advance for your help.

Best regards,
Noriyuki 

sample.tar.gz
Reply all
Reply to author
Forward
0 new messages