File: stream_update_kernels.f

package info (click to toggle)
libxsmm 1.17-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 14,976 kB
  • sloc: ansic: 119,587; cpp: 27,680; fortran: 9,179; sh: 5,765; makefile: 5,040; pascal: 2,312; python: 1,812; f90: 1,773
file content (95 lines) | stat: -rw-r--r-- 5,388 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
!=======================================================================!
! Copyright (c) Intel Corporation - All rights reserved.                !
! This file is part of the LIBXSMM library.                             !
!                                                                       !
! For information on the license, see the LICENSE file.                 !
! Further information: https://github.com/hfp/libxsmm/                  !
! SPDX-License-Identifier: BSD-3-Clause                                 !
!=======================================================================!
! Alexander Heinecke (Intel Corp.)
!=======================================================================!

      MODULE STREAM_UPDATE_KERNELS
        USE, INTRINSIC :: ISO_C_BINDING
        IMPLICIT NONE

        INTERFACE
          SUBROUTINE stream_update_helmholtz( i_g1, i_g2, i_g3,         &
     &                                        i_tm1, i_tm2, i_tm3,      &
     &                                        i_a, i_b, io_c,           &
     &                                        i_h1, i_h2, i_length )
            IMPORT :: C_DOUBLE, C_INT
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g1
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g2
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g3
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm1
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm2
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm3
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_a
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_b
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(INOUT) :: io_c
            REAL(KIND=C_DOUBLE),               INTENT(IN)    :: i_h1
            REAL(KIND=C_DOUBLE),               INTENT(IN)    :: i_h2
            INTEGER(C_INT),                    INTENT(IN)    :: i_length
          END SUBROUTINE

          SUBROUTINE stream_update_helmholtz_no_h2(                     &
     &                                        i_g1, i_g2, i_g3,         &
     &                                        i_tm1, i_tm2, i_tm3,      &
     &                                        io_c, i_h1, i_length )
            IMPORT :: C_DOUBLE, C_INT
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g1
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g2
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g3
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm1
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm2
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm3
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(INOUT) :: io_c
            REAL(KIND=C_DOUBLE),               INTENT(IN)    :: i_h1
            INTEGER(C_INT),                    INTENT(IN)    :: i_length
          END SUBROUTINE

          SUBROUTINE stream_update_var_helmholtz(                       &
     &                                        i_g1, i_g2, i_g3,         &
     &                                        i_tm1, i_tm2, i_tm3,      &
     &                                        i_a, i_b, io_c,           &
     &                                        i_h1, i_h2, i_length )
            IMPORT :: C_DOUBLE, C_INT
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g1
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g2
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_g3
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm1
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm2
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_tm3
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_a
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_b
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(INOUT) :: io_c
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_h1
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_h2
            INTEGER(C_INT),                    INTENT(IN)    :: i_length
          END SUBROUTINE

          SUBROUTINE stream_vector_compscale( i_a, i_b, io_c, i_length )
            IMPORT :: C_DOUBLE, C_INT
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_a
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_b
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(INOUT) :: io_c
            INTEGER(C_INT),                    INTENT(IN)    :: i_length
          END SUBROUTINE

          SUBROUTINE stream_vector_copy( i_a, io_c, i_length )
            IMPORT :: C_DOUBLE, C_INT
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(IN)    :: i_a
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(INOUT) :: io_c
            INTEGER(C_INT),                    INTENT(IN)    :: i_length
          END SUBROUTINE

          SUBROUTINE stream_vector_set( i_scalar, io_c, i_length )
            IMPORT :: C_DOUBLE, C_INT
            REAL(KIND=C_DOUBLE),               INTENT(IN)    :: i_scalar
            REAL(KIND=C_DOUBLE), DIMENSION(*), INTENT(INOUT) :: io_c
            INTEGER(C_INT),                    INTENT(IN)    :: i_length
          END SUBROUTINE
        END INTERFACE
      END MODULE