Helper routine
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(acc_stream_type), | DIMENSION(:), POINTER | :: | streams | |||
character(len=*), | intent(in) | :: | basename | |||
integer, | intent(in) | :: | n | |||
type(acc_event_type), | optional, | DIMENSION(:), POINTER | :: | events | ||
integer, | intent(in), | optional | :: | priority |
SUBROUTINE stream_array_force_size(streams, basename, n, events, priority) !! Helper routine TYPE(acc_stream_type), DIMENSION(:), POINTER :: streams CHARACTER(len=*), INTENT(IN) :: basename INTEGER, INTENT(IN) :: n TYPE(acc_event_type), DIMENSION(:), OPTIONAL, & POINTER :: events INTEGER, INTENT(IN), OPTIONAL :: priority CHARACTER(len=default_string_length) :: name INTEGER :: i IF (ASSOCIATED(streams)) THEN IF (SIZE(streams) /= n) THEN DO i = 1, SIZE(streams) CALL acc_stream_destroy(streams(i)) IF (PRESENT(events)) CALL acc_event_destroy(events(i)) END DO DEALLOCATE (streams) IF (PRESENT(events)) DEALLOCATE (events) END IF END IF IF (.NOT. ASSOCIATED(streams) .AND. n > 0) THEN ALLOCATE (streams(n)) IF (PRESENT(events)) ALLOCATE (events(n)) DO i = 1, SIZE(streams) WRITE (name, "(A,I3)") TRIM(basename), i CALL acc_stream_create(streams(i), name=TRIM(name), priority=priority) IF (PRESENT(events)) CALL acc_event_create(events(i)) END DO END IF END SUBROUTINE stream_array_force_size