test_matmul12 Program

Uses

  • program~~test_matmul12~~UsesGraph program~test_matmul12 test_matmul12 forunittest forunittest program~test_matmul12->forunittest kinds kinds program~test_matmul12->kinds module~formatmul formatmul program~test_matmul12->module~formatmul module~formatmul->kinds module~formatmul_opts formatmul_opts module~formatmul->module~formatmul_opts module~formatmul_opts->kinds

Calls

program~~test_matmul12~~CallsGraph program~test_matmul12 test_matmul12 check check program~test_matmul12->check

Variables

Type Attributes Name Initial
real(kind=rk), allocatable :: A(:,:)
real(kind=rk), allocatable :: B(:,:)
real(kind=rk), allocatable :: C_ref(:,:)
real(kind=rk), allocatable :: C(:,:)
integer :: m
integer :: n
integer :: o
integer :: im
type(unit_test) :: ut

Source Code

program test_matmul12

   use kinds
   use formatmul
   use forunittest

   implicit none

   real(rk), allocatable :: A(:,:), B(:,:)
   real(rk), allocatable :: C_ref(:,:), C(:,:)
   integer               :: m, n, o, im
   type(unit_test)       :: ut

#if defined(USE_COARRAY)
   im = this_image()
#else
   im = 1
#endif

   ! C(m,o) = A(m,n).B(o,n)
   m = 500
   n = 400
   o = 300

   allocate(A(m,n),B(o,n))
   call random_number(A)
   call random_number(B)
   A = A*100.0_rk
   B = B*100.0_rk

   C_ref = matmul(A,transpose(B))

   C = matmul(A,B, transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.1')

   C = matmul(A,B, option='m1', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.2')

   C = matmul(A,B, option='m2', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.3')

   C = matmul(A,B, option='m3', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.4')

   C = matmul(A,B, option='m4', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.5')

   C = matmul(A,B, option='m5', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.6')

   C = matmul(A,B, option='m6', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.7')

   C = matmul(A,B, option='m7', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.8')

   C = matmul(A,B, option='m8', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.9')

   C = matmul(A,B, option='m9', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.10')

   ! C = matmul(A,B, option='m10', transB=.true., coarray=.true.)
   ! if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.11')

   ! C = matmul(A,B, option='m11', transB=.true., coarray=.true.)
   ! if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.12')

   C = matmul(A,B, option='m12', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.13')

   C = matmul(A,B, option='m13', transB=.true., coarray=.true.)
   if (im==1) call ut%check(C, C_ref, tol=1e-5_rk, msg='test_matmul12.14')

end program test_matmul12