Real random numbers used now, paranoid data reset before tests

This commit is contained in:
Pietro Bonfa 2018-03-06 11:42:00 +01:00
parent ec93bfa319
commit 971d9de467
12 changed files with 30 additions and 4 deletions

View File

@ -65,6 +65,7 @@ PROGRAM test_mp_alltoall_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
snd_{vname}_h = {typeconv} ( 10.0 * rnd )
snd_{vname}_d = snd_{vname}_h
aux_h = 0
CALL mp_alltoall(snd_{vname}_d, rcv_{vname}_d, world_comm)
CALL mp_alltoall(snd_{vname}_h, rcv_{vname}_h, world_comm)
aux_h = rcv_{vname}_d

View File

@ -57,6 +57,7 @@ PROGRAM test_mp_bcast_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_bcast({vname}_d, i , world_comm)
CALL mp_bcast({vname}_h, i , world_comm)
aux_h = {vname}_d

View File

@ -54,6 +54,7 @@ PROGRAM test_mp_circular_shift_left_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_circular_shift_left({vname}_d, 0, world_comm)
CALL mp_circular_shift_left({vname}_h, 0, world_comm)
aux_h = {vname}_d

View File

@ -75,6 +75,7 @@ PROGRAM test_mp_gather_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_gather({vname}_d, all_{vname}_d, i , world_comm)
CALL mp_gather({vname}_h, all_{vname}_h, i , world_comm)
aux_h = all_{vname}_d

View File

@ -87,6 +87,7 @@ PROGRAM test_mp_gatherv_{vname}_gpu
{vname}_d = {vname}_h
all_{vname}_h = {typeconv} ( -1 )
all_{vname}_d = {typeconv} ( -1 )
aux_h = 0
CALL mp_gather({vname}_d, all_{vname}_d, recvcount , displs, i , world_comm)
CALL mp_gather({vname}_h, all_{vname}_h, recvcount , displs, i , world_comm)
aux_h = all_{vname}_d

View File

@ -64,6 +64,7 @@ PROGRAM test_mp_get_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_get({vname}_d, {vname}_d, mpime, i, 0, 0, world_comm)
CALL mp_get({vname}_h, {vname}_h, mpime, i, 0, 0, world_comm)
aux_h = {vname}_d

View File

@ -54,6 +54,7 @@ PROGRAM test_mp_max_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_max({vname}_d, world_comm)
CALL mp_max({vname}_h, world_comm)
aux_h = {vname}_d

View File

@ -54,6 +54,7 @@ PROGRAM test_mp_min_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_min({vname}_d, world_comm)
CALL mp_min({vname}_h, world_comm)
aux_h = {vname}_d

View File

@ -54,6 +54,7 @@ PROGRAM test_mp_put_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_put({vname}_d, {vname}_d, mpime, 0, i, 0, world_comm)
CALL mp_put({vname}_h, {vname}_h, mpime, 0, i, 0, world_comm)
aux_h = {vname}_d
@ -64,6 +65,7 @@ PROGRAM test_mp_put_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_put({vname}_d, {vname}_d, mpime, i, 0, 0, world_comm)
CALL mp_put({vname}_h, {vname}_h, mpime, i, 0, 0, world_comm)
aux_h = {vname}_d

View File

@ -56,6 +56,7 @@ PROGRAM test_mp_root_sum_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_root_sum({vname}_d, root_{vname}_d, i , world_comm)
CALL mp_root_sum({vname}_h, root_{vname}_h, i , world_comm)
IF (mpime == i) THEN

View File

@ -57,6 +57,7 @@ PROGRAM test_mp_sum_{vname}_gpu
CALL RANDOM_NUMBER(rnd)
{vname}_h = {typeconv} ( 10.0 * rnd )
{vname}_d = {vname}_h
aux_h = 0
CALL mp_sum({vname}_d, world_comm)
CALL mp_sum({vname}_h, world_comm)
aux_h = {vname}_d

View File

@ -37,14 +37,28 @@ SUBROUTINE save_random_seed(test_name, mpime)
CHARACTER(len=*), INTENT(IN) :: test_name
INTEGER, INTENT(IN) :: mpime
!
INTEGER, PARAMETER :: out_unit=20
CHARACTER(len=60) :: fname
INTEGER :: n
INTEGER, PARAMETER :: in_unit=20, out_unit=21
CHARACTER(len=80) :: fname
INTEGER :: n, istat
INTEGER, ALLOCATABLE :: seed(:)
!
CALL random_seed(size = n)
ALLOCATE(seed(n))
CALL random_seed(get=seed)
! First try if the OS provides a random number generator
OPEN(UNIT=in_unit, file="/dev/urandom", access="stream", &
form="unformatted", action="read", status="old", iostat=istat)
IF (istat == 0) THEN
READ(in_unit) seed
CLOSE(in_unit)
ELSE
! Fallback to stupid algorithm. Actually we do not really need
! high-quality random numbers
CALL random_seed(get=seed)
seed = seed + mpime
CALL random_seed(put=seed)
END IF
!
WRITE(fname, '("rnd_seed_",A,I4.4)') TRIM(test_name), mpime
fname = TRIM(fname)