Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Data transfer in coarray

Yuri1
Beginner
498 Views
Hello,

I have tested transfer of data in coarray Fortran :

array(:,:) = array(:,:)[2]

The array by dimension 1000x1000 is transferred more than 2.5 s!

So should be?
or it is possible for something to correct?

I used a computer in system Manycore Testig Lab.

Yurs faithfully,
Yuri.

P.S. It is the full program:

program main
real(8), allocatable:: array(:,:)[:]
integer c_t(8), h_t, m_t, s_t, t_t, dh_t, dm_t, ds_t, dt_t
real time_t

allocate(array(1000,1000)

  • )
  • np = this_image()
    array(:,:) = real(np)

    if ( np == 1 ) then
    call date_and_time(values=c_t)
    h_t=c_t(5); m_t=c_t(6); s_t=c_t(7); t_t=c_t(8)

    array(:,:) = array(:,:)[2]

    call date_and_time(values=c_t)
    dh_t=c_t(5)-h_t;dm_t=c_t(6)-m_t;ds_t=c_t(7)-s_t;dt_t=c_t(8)-t_t
    time_t=(dh_t*60+dm_t)*60 + ds_t + 0.001*dt_t
    print*, 'image=',np,'date_and_time=', time_t
    print*, 'array(1,1)=', array(1,1)

    sync images(*)
    else
    sync images(1)
    endif

    end program

    0 Kudos
    2 Replies
    Steven_L_Intel1
    Employee
    498 Views
    Well, I see .81 seconds on my system (Nehalem desktop), but I'll comment that copying 8 million bytes takes some time when done through an MPI layer, and coarray programs do best when they minimize data transfer between images.
    0 Kudos
    Yuri1
    Beginner
    498 Views

    I have reduced number of operators which contain transfer of data and it has reduced time of calculation.

    thanks,

    Yuri

    0 Kudos
    Reply