Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Variables
Type
Visibility
Attributes
Name
Initial
integer(kind=default_int),
private
::
cols
integer(kind=default_int),
private
::
i
integer(kind=default_int),
private
::
ii
integer(kind=default_int),
private
::
j
integer(kind=default_int),
private
::
jj
integer(kind=default_int),
private
::
rows
logical,
private
::
use_threads
Source Code
subroutine transpose_matrix_dp(A,B,threaded)real(dp),intent(in)::A(:,:)real(dp),intent(out)::B(:,:)logical,intent(in),optional::threadedlogical::use_threadsinteger(default_int)::i,j,ii,jj,rows,colsrows=size(A,1)cols=size(A,2)if(size(B,1)/=cols.or.size(B,2)/=rows)then error stop"transpose: size mismatch"end if if(present(threaded))thenuse_threads=threadedelseuse_threads=use_threaded_defaultend if if(use_threads)then!$omp parallel do collapse(2) private(i,j,ii,jj)do jj=1,cols,block_sizedo ii=1,rows,block_sizedo j=jj,min(jj+block_size-1,cols)do i=ii,min(ii+block_size-1,rows)B(j,i)=A(i,j)end do end do end do end do!$omp end parallel doelseB=transpose(A)end if end subroutine transpose_matrix_dp