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