pic_transpose Interface

public interface pic_transpose

pic_transpose provides a blas-less, threaded alternative to the Fortran transpose intrinsic which will be slow for large matrix sizes. pic_transpose does not assume symmetric matrices

pic_transpose is implemented for (int32, int64, sp, dp) 2d arrays

Usage: call pic_transpose(matrix_to_transpose, result, [optional] threaded)

This subroutine is threaded for performance purposes if threaded is set to true

Note

If this subroutine is called inside a omp threaded region it will run serially because of nested parallelism

Calls

interface~~pic_transpose~~CallsGraph interface~pic_transpose pic_transpose proc~transpose_matrix_dp transpose_matrix_dp interface~pic_transpose->proc~transpose_matrix_dp proc~transpose_matrix_int32 transpose_matrix_int32 interface~pic_transpose->proc~transpose_matrix_int32 proc~transpose_matrix_int64 transpose_matrix_int64 interface~pic_transpose->proc~transpose_matrix_int64 proc~transpose_matrix_sp transpose_matrix_sp interface~pic_transpose->proc~transpose_matrix_sp

Module Procedures

private subroutine transpose_matrix_int32(A, B, threaded)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: A(:,:)
integer(kind=int32), intent(out) :: B(:,:)
logical, intent(in), optional :: threaded

private subroutine transpose_matrix_int64(A, B, threaded)

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in) :: A(:,:)
integer(kind=int64), intent(out) :: B(:,:)
logical, intent(in), optional :: threaded

private subroutine transpose_matrix_sp(A, B, threaded)

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(in) :: A(:,:)
real(kind=sp), intent(out) :: B(:,:)
logical, intent(in), optional :: threaded

private subroutine transpose_matrix_dp(A, B, threaded)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: A(:,:)
real(kind=dp), intent(out) :: B(:,:)
logical, intent(in), optional :: threaded