Dear Satish,

Yes, I used the makefile you provided.


On 23.03.2018 19:00, Satish Balay wrote:
Have you compiled the my modified code with petsc makefile that I provided?

I've check with - but I can't reproduce this problem.

balay@es^/sandbox/balay/test $ gfortran --version
GNU Fortran (GCC) 6.2.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Satish


On Fri, 23 Mar 2018, Samuel Lanthaler wrote:

Thank you very much for your effort Satish. It appears that even in your
version of the example, I'm having the same problem with a pointer that is not
properly assigned. Seems weird, I also tried recompiling petsc, but that gave
me the same. The configure file for petsc is also attached.

Btw. It appears the latest version of gfortran I have access to on my work
station is gcc-6.3.

mpif90 --version
GNU Fortran (GCC) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Does anyone maybe have any ideas?

Thanks,

Samuel


On 03/23/2018 05:42 PM, Satish Balay wrote:
Attaching the modified version that works with complex [using complex build
of petsc]

BTW: I'm using the following gfortran [but I don't think the version makes
any difference] with petsc-3.8 (maint branch):

$ gfortran --version
GNU Fortran (GCC) 8.0.1 20180222 (Red Hat 8.0.1-0.16)

Satish

--------

balay@asterix /home/balay/download-pine
$ make ex2f
mpif90 -c -Wall -ffree-line-length-0 -Wno-unused-dummy-argument -g
-I/home/balay/petsc/include -I/home/balay/petsc/arch-cmplx/include    -o
ex2f.o ex2f.F90
mpif90 -Wall -ffree-line-length-0 -Wno-unused-dummy-argument -g   -o ex2f
ex2f.o  -Wl,-rpath,/home/balay/petsc/arch-cmplx/lib
-L/home/balay/petsc/arch-cmplx/lib
-Wl,-rpath,/home/balay/soft/mpich-3.3b1/lib
-L/home/balay/soft/mpich-3.3b1/lib
-Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/8
-L/usr/lib/gcc/x86_64-redhat-linux/8 -lpetsc -llapack -lblas -lX11 -lpthread
-lm -lmpifort -lgfortran -lm -lgfortran -lm -lquadmath -lmpicxx -lstdc++ -lm
-Wl,-rpath,/home/balay/soft/mpich-3.3b1/lib
-L/home/balay/soft/mpich-3.3b1/lib
-Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/8
-L/usr/lib/gcc/x86_64-redhat-linux/8 -ldl
-Wl,-rpath,/home/balay/soft/mpich-3.3b1/lib -lmpi -lgcc_s -ldl
/usr/bin/rm -f ex2f.o
balay@asterix /home/balay/download-pine
$ ./ex2f
   setting values
   assembling vector
   copying vector to array
   N =           10
   m =           10
   getting vecX size
   getting ownership range
   ownership range:            0          10
   copy values to global array
   vecX_pt:
   SIZE =           10
                    (1.0000000000000000,0.0000000000000000)
                    (2.0000000000000000,0.0000000000000000)
                    (3.0000000000000000,0.0000000000000000)
                    (4.0000000000000000,0.0000000000000000)
                    (5.0000000000000000,0.0000000000000000)
                    (6.0000000000000000,0.0000000000000000)
                    (7.0000000000000000,0.0000000000000000)
                    (8.0000000000000000,0.0000000000000000)
                    (9.0000000000000000,0.0000000000000000)
                    (10.000000000000000,0.0000000000000000)
   copy_buffer =
                    (1.0000000000000000,0.0000000000000000)
                    (2.0000000000000000,0.0000000000000000)
                    (3.0000000000000000,0.0000000000000000)
                    (4.0000000000000000,0.0000000000000000)
                    (5.0000000000000000,0.0000000000000000)
                    (6.0000000000000000,0.0000000000000000)
                    (7.0000000000000000,0.0000000000000000)
                    (8.0000000000000000,0.0000000000000000)
                    (9.0000000000000000,0.0000000000000000)
                    (10.000000000000000,0.0000000000000000)
   calling allreduce
   buffer =
                    (1.0000000000000000,0.0000000000000000)
                    (2.0000000000000000,0.0000000000000000)
                    (3.0000000000000000,0.0000000000000000)
                    (4.0000000000000000,0.0000000000000000)
                    (5.0000000000000000,0.0000000000000000)
                    (6.0000000000000000,0.0000000000000000)
                    (7.0000000000000000,0.0000000000000000)
                    (8.0000000000000000,0.0000000000000000)
                    (9.0000000000000000,0.0000000000000000)
                    (10.000000000000000,0.0000000000000000)
balay@asterix /home/balay/download-pine
$

On Fri, 23 Mar 2018, Satish Balay wrote:

I'm attaching the modified code - that appears to work fine for me. My
changes are:

1. use .F90 suffix - so the compiler does the f90 freeform/preprocessing
automatically
2. remove slepc references and use petsc only
3. compile with a petsc formatted makefile
4. replace complex with real*8 - thats compatible with PetscScalar

So perhaps you can modify your version of test code - to be closer to
this one [or vice versa] to see what is triggering the difference in
behavior.

Satish

On Fri, 23 Mar 2018, Samuel Lanthaler wrote:

Hi all,

I am having trouble using the function VecGetArrayReadF90 under gfortran.
I
have created a minimal example and put it in the attachment. Basically, it
appears that the input pointer is empty upon return from
VecGetArrayReadF90. The code runs fine, when compiled with ifort, so I
don't know what's going on.

I am attaching the code and makefile that I used, as well as the command
line output that I can see. Though the errors are just to do with the fact
that the output pointer is empty, so the command line output is not all
that helpful...

Thanks in advance for your help!
Sam



Reply via email to