I am trying to apply dcopy to my parallel codes.In that, I want to chop one big array into several small arrays which sizes are defined by the number of threads applied.
* big_array(1~100)can beseparated into4 smallarrays such as small_array1(1~25),small_array2(26~50), small_array3(51~75), small_array4(76~100).
In this case, the small_array1,2,3, and 4 will copy values in the big_array so i need to assign the range which the small_arrays will copy from the big_array.
Rough idea for this function is
I am wondering if you have any ideas about this. Any comments will be helpful!
[fortran]subroutine sub(A,N,...) real(wp), dimension(N) :: A real(wp),allocatable, dimension(:) :: A1,A2,A3 ... nby3=N/3 ! N should be an exact multiple of 3 A1=A(1:nby3); A2=A(nby3+1:2*nby3); A3=A(2*nby3+1:N) [/fortran]How to go about this depends on what fate you have in store for the pieces so extracted.
By the way, the output variables (A1,A2,A3)will bedepend on the number of threadassigned.
So,I am wondering ifIuse two dimensional arrays such as
real(wp), dimension(N) :: A
real(wp),allocatable, dimension(:,:) :: A1
A1(start(1):end(1),1) = A(start(1):end(1));
A1(start(2):end(2),2) = A(start(2):end(2));
end subroutine sub