File: options.original.f90

package info (click to toggle)
cp2k 6.1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 204,532 kB
  • sloc: fortran: 835,196; f90: 59,605; python: 9,861; sh: 7,882; cpp: 4,868; ansic: 2,807; xml: 2,185; lisp: 733; pascal: 612; perl: 547; makefile: 497; csh: 16
file content (68 lines) | stat: -rw-r--r-- 2,079 bytes parent folder | download | duplicates (5)
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
MODULE option_module
  IMPLICIT NONE

  TYPE option_type
    INTEGER :: ig_loop_unroll_lxp=0
    INTEGER :: ig_loop_vector_notation=0
    INTEGER :: jg_loop_unroll_lxp=0
    INTEGER :: jg_loop_vector_notation=0
    INTEGER :: kg_loop_unroll_lxp=0
    INTEGER :: kg_loop_vector_notation=0
  END TYPE

  TYPE(option_type), DIMENSION(:), ALLOCATABLE, SAVE :: all_options

CONTAINS
  !
  ! this generates all acceptable options 
  !
  SUBROUTINE generate_all_options()
    INTEGER :: ig_loop_unroll_lxp,ig_loop_vector_notation,jg_loop_unroll_lxp, &
               jg_loop_vector_notation,kg_loop_unroll_lxp,kg_loop_vector_notation
    INTEGER :: nopt,iloop

    IF (ALLOCATED(all_options)) RETURN
     
    ! count and associate all legal options, iloop=0 : count, iloop=1 : init
    DO iloop=0,1

       nopt=0 
       DO ig_loop_unroll_lxp=0,1
       DO ig_loop_vector_notation=0,1
       DO jg_loop_unroll_lxp=0,1
       DO jg_loop_vector_notation=0,1
       DO kg_loop_unroll_lxp=0,1
       DO kg_loop_vector_notation=0,1
          ! skip certain combinations of options, for example, avoid vector notation
          ! IF (ig_loop_vector_notation==1) CYCLE
          ! IF (jg_loop_vector_notation==1) CYCLE
          ! IF (kg_loop_vector_notation==1) CYCLE
          nopt=nopt+1
          IF (iloop==1) THEN
             all_options(nopt)%ig_loop_unroll_lxp=ig_loop_unroll_lxp
             all_options(nopt)%ig_loop_vector_notation=ig_loop_vector_notation
             all_options(nopt)%jg_loop_unroll_lxp=jg_loop_unroll_lxp
             all_options(nopt)%jg_loop_vector_notation=jg_loop_vector_notation
             all_options(nopt)%kg_loop_unroll_lxp=kg_loop_unroll_lxp
             all_options(nopt)%kg_loop_vector_notation=kg_loop_vector_notation
          ENDIF
       ENDDO
       ENDDO
       ENDDO
       ENDDO
       ENDDO
       ENDDO

       IF (iloop==0) THEN
          ALLOCATE(all_options(nopt))
       ENDIF

    ENDDO

  END SUBROUTINE

  SUBROUTINE deallocate_all_options()
      IF (ALLOCATED(all_options)) DEALLOCATE(all_options)
  END SUBROUTINE

END MODULE