Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
elpa
elpa
Commits
48931833
Commit
48931833
authored
Oct 02, 2018
by
Pavel Kus
Browse files
Merge remote-tracking branch 'origin/master_pre_stage' into print_parameters
parents
53be9268
fba398fd
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/elpa2/elpa2_trans_ev_tridi_to_band_template.F90
View file @
48931833
...
...
@@ -276,19 +276,26 @@
else
! useGPU
! openmp only in non-GPU case
thread_width
=
(
l_nev
-1
)/
max_threads
+
1
! number of eigenvectors per OMP thread
#if REALCASE == 1
call
obj
%
get
(
"stripe_width_real"
,
stripe_width
,
error
)
#ifdef DOUBLE_PRECISION_REAL
stripe_width
=
48
! Must be a multiple of 4
!
stripe_width = 48 ! Must be a multiple of 4
#else
stripe_width
=
96
! Must be a multiple of 8
stripe_width
=
stripe_width
*
2
!stripe_width = 96 ! Must be a multiple of 8
#endif
#endif /* REALCASE */
#if COMPLEXCASE == 1
call
obj
%
get
(
"stripe_width_complex"
,
stripe_width
,
error
)
#ifdef DOUBLE_PRECISION_COMPLEX
stripe_width
=
48
! Must be a multiple of 2
!
stripe_width = 48 ! Must be a multiple of 2
#else
stripe_width
=
48
! Must be a multiple of 4
stripe_width
=
stripe_width
*
2
!stripe_width = 48 ! Must be a multiple of 4
#endif
#endif /* COMPLEXCASE */
...
...
src/elpa_index.c
View file @
48931833
...
...
@@ -83,6 +83,14 @@ static int band_to_full_cardinality(elpa_index_t index);
static
int
band_to_full_enumerate
(
elpa_index_t
index
,
int
i
);
static
int
band_to_full_is_valid
(
elpa_index_t
index
,
int
n
,
int
new_value
);
static
int
stripewidth_real_cardinality
(
elpa_index_t
index
);
static
int
stripewidth_real_enumerate
(
elpa_index_t
index
,
int
i
);
static
int
stripewidth_real_is_valid
(
elpa_index_t
index
,
int
n
,
int
new_value
);
static
int
stripewidth_complex_cardinality
(
elpa_index_t
index
);
static
int
stripewidth_complex_enumerate
(
elpa_index_t
index
,
int
i
);
static
int
stripewidth_complex_is_valid
(
elpa_index_t
index
,
int
n
,
int
new_value
);
static
int
omp_threads_cardinality
(
elpa_index_t
index
);
static
int
omp_threads_enumerate
(
elpa_index_t
index
,
int
i
);
static
int
omp_threads_is_valid
(
elpa_index_t
index
,
int
n
,
int
new_value
);
...
...
@@ -214,6 +222,11 @@ static const elpa_index_int_entry_t int_entries[] = {
INT_ENTRY
(
"blocking_in_band_to_full"
,
"Loop blocking, default 3"
,
3
,
ELPA_AUTOTUNE_MEDIUM
,
ELPA_AUTOTUNE_DOMAIN_ANY
,
band_to_full_cardinality
,
band_to_full_enumerate
,
band_to_full_is_valid
,
NULL
,
PRINT_YES
),
INT_ENTRY
(
"stripewidth_real"
,
"Stripewidth_real, default 48. Must be a multiple of 4"
,
48
,
ELPA_AUTOTUNE_MEDIUM
,
ELPA_AUTOTUNE_DOMAIN_REAL
,
stripewidth_real_cardinality
,
stripewidth_real_enumerate
,
stripewidth_real_is_valid
,
NULL
,
PRINT_YES
),
INT_ENTRY
(
"stripewidth_complex"
,
"Stripewidth_complex, default 96. Must be a multiple of 8"
,
96
,
ELPA_AUTOTUNE_MEDIUM
,
ELPA_AUTOTUNE_DOMAIN_COMPLEX
,
stripewidth_complex_cardinality
,
stripewidth_complex_enumerate
,
stripewidth_complex_is_valid
,
NULL
,
PRINT_YES
),
INT_ENTRY
(
"max_stored_rows"
,
"Maximum number of stored rows used in ELPA 1 backtransformation, default 63"
,
63
,
ELPA_AUTOTUNE_MEDIUM
,
ELPA_AUTOTUNE_DOMAIN_ANY
,
max_stored_rows_cardinality
,
max_stored_rows_enumerate
,
max_stored_rows_is_valid
,
NULL
,
PRINT_YES
),
#ifdef WITH_OPENMP
...
...
@@ -750,6 +763,100 @@ static int band_to_full_is_valid(elpa_index_t index, int n, int new_value) {
return
(
1
<=
new_value
)
&&
(
new_value
<=
max_block
);
}
static
int
stripewidth_real_cardinality
(
elpa_index_t
index
)
{
return
17
;
}
static
int
stripewidth_complex_cardinality
(
elpa_index_t
index
)
{
return
17
;
}
static
int
stripewidth_real_enumerate
(
elpa_index_t
index
,
int
i
)
{
switch
(
i
)
{
case
0
:
return
32
;
case
1
:
return
36
;
case
2
:
return
40
;
case
3
:
return
44
;
case
4
:
return
48
;
case
5
:
return
52
;
case
6
:
return
56
;
case
7
:
return
60
;
case
8
:
return
64
;
case
9
:
return
68
;
case
10
:
return
72
;
case
11
:
return
76
;
case
12
:
return
80
;
case
13
:
return
84
;
case
14
:
return
88
;
case
15
:
return
92
;
case
16
:
return
96
;
}
}
static
int
stripewidth_complex_enumerate
(
elpa_index_t
index
,
int
i
)
{
switch
(
i
)
{
case
0
:
return
48
;
case
1
:
return
56
;
case
2
:
return
64
;
case
3
:
return
72
;
case
4
:
return
80
;
case
5
:
return
88
;
case
6
:
return
96
;
case
7
:
return
104
;
case
8
:
return
112
;
case
9
:
return
120
;
case
10
:
return
128
;
case
11
:
return
136
;
case
12
:
return
144
;
case
13
:
return
152
;
case
14
:
return
160
;
case
15
:
return
168
;
case
16
:
return
176
;
}
}
static
int
stripewidth_real_is_valid
(
elpa_index_t
index
,
int
n
,
int
new_value
)
{
return
(
32
<=
new_value
)
&&
(
new_value
<=
96
);
}
static
int
stripewidth_complex_is_valid
(
elpa_index_t
index
,
int
n
,
int
new_value
)
{
return
(
48
<=
new_value
)
&&
(
new_value
<=
176
);
}
static
int
omp_threads_cardinality
(
elpa_index_t
index
)
{
int
max_threads
;
#ifdef WITH_OPENMP
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment