Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
loadbalancing
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SLMS
loadbalancing
Commits
0b372abd
Commit
0b372abd
authored
Nov 7, 2019
by
Rene Halver
Browse files
Options
Downloads
Patches
Plain Diff
fixed compatibility issues between refactor and fortran-interface-fixes merges
parent
bb9bd212
No related branches found
No related tags found
No related merge requests found
Pipeline
#25563
failed
Nov 7, 2019
Changes
3
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
example/ALL_test_f.f90
+4
-3
4 additions, 3 deletions
example/ALL_test_f.f90
src/ALL_fortran.cpp
+6
-2
6 additions, 2 deletions
src/ALL_fortran.cpp
src/ALL_module.f90
+19
-23
19 additions, 23 deletions
src/ALL_module.f90
with
29 additions
and
28 deletions
example/ALL_test_f.f90
+
4
−
3
View file @
0b372abd
...
...
@@ -75,13 +75,14 @@ PROGRAM ALL_test_f
END
IF
END
DO
CALL
ALL_init
(
obj
,
3
,
4.0d0
)
CALL
ALL_init
(
obj
,
ALL_STAGGERED
,
3
,
4.0d0
)
CALL
ALL_set_work
(
obj
,
real
(
product
(
coords
,
1
)
*
64
,
8
)
)
CALL
ALL_set_vertices
(
obj
,
2
,
3
,
vertices
)
CALL
ALL_set_proc_grid_params
(
obj
,
coords
,
dims
)
CALL
ALL_set_communicator
(
obj
,
cart_comm
)
CALL
ALL_setup
(
obj
,
ALL_STAGGERED
)
CALL
ALL_balance
(
obj
,
ALL_STAGGERED
)
CALL
ALL_setup
(
obj
)
CALL
ALL_balance
(
obj
)
CALL
ALL_get_new_number_of_vertices
(
obj
,
n_vertices
)
ALLOCATE
(
new_vertices
(
3
*
n_vertices
))
...
...
This diff is collapsed.
Click to expand it.
src/ALL_fortran.cpp
+
6
−
2
View file @
0b372abd
...
...
@@ -29,6 +29,7 @@ POSSIBILITY OF SUCH DAMAGE.
*/
#include
"../include/ALL.hpp"
#include
<vector>
extern
"C"
{
...
...
@@ -48,10 +49,13 @@ extern "C"
}
// wrapper to set the minimum domain size
void
ALL_set_min_domain_size_f
(
ALL
<
double
,
double
>*
all_obj
,
ALL_LB_t
method
,
int
dim
,
double
*
domain_size
)
void
ALL_set_min_domain_size_f
(
ALL
<
double
,
double
>*
all_obj
,
int
dim
,
double
*
domain_size
)
{
if
(
all_obj
->
get_dimension
()
!=
dim
)
throw
ALL_Invalid_Argument_Exception
(
__FILE__
,
__func__
,
__LINE__
,
"Length of array does not match dimension"
);
all_obj
->
set_min_domain_size
(
method
,
domain_size
);
std
::
vector
<
double
>
t_domain_size
(
dim
);
for
(
int
i
=
0
;
i
<
dim
;
++
i
)
t_domain_size
.
at
(
i
)
=
domain_size
[
i
];
all_obj
->
set_min_domain_size
(
t_domain_size
);
}
// wrapper to set the work (scalar only for the moment)
...
...
This diff is collapsed.
Click to expand it.
src/ALL_module.f90
+
19
−
23
View file @
0b372abd
...
...
@@ -36,15 +36,16 @@ MODULE ALL_module
TYPE
(
c_ptr
)
::
object
=
C_NULL_PTR
END
TYPE
! definitions of enum type for different methods
INTEGER
(
c_
shor
t
),
parameter
::
ALL_STAGGERED
=
0
INTEGER
(
c_
shor
t
),
parameter
::
ALL_TENSOR
=
1
INTEGER
(
c_
shor
t
),
parameter
::
ALL_UNSTRUCTURED
=
2
INTEGER
(
c_
shor
t
),
parameter
::
ALL_
CELLS
=
3
INTEGER
(
c_
shor
t
),
parameter
::
ALL_
VORONOI
=
4
INTEGER
(
c_
in
t
),
parameter
::
ALL_STAGGERED
=
0
INTEGER
(
c_
in
t
),
parameter
::
ALL_TENSOR
=
1
INTEGER
(
c_
in
t
),
parameter
::
ALL_UNSTRUCTURED
=
2
INTEGER
(
c_
in
t
),
parameter
::
ALL_
VORONOI
=
3
INTEGER
(
c_
in
t
),
parameter
::
ALL_
HISTOGRAM
=
4
! interface functions / subroutines to C++
INTERFACE
FUNCTION
ALL_init_int
(
dim
,
gamma
)
RESULT
(
this
)
BIND
(
C
,
NAME
=
"ALL_init_f"
)
FUNCTION
ALL_init_int
(
method
,
dim
,
gamma
)
RESULT
(
this
)
BIND
(
C
,
NAME
=
"ALL_init_f"
)
USE
ISO_C_BINDING
INTEGER
(
c_int
),
VALUE
::
method
INTEGER
(
c_int
),
VALUE
::
dim
REAL
(
c_double
),
VALUE
::
gamma
TYPE
(
c_ptr
)
::
this
...
...
@@ -57,10 +58,9 @@ MODULE ALL_module
INTEGER
(
c_int
),
VALUE
::
nsize
INTEGER
(
c_int
),
DIMENSION
(
nloc
)
::
size
END
SUBROUTINE
SUBROUTINE
ALL_set_min_domain_size_int
(
obj
,
method
,
dim
,
domain_size
)
BIND
(
C
,
NAME
=
"ALL_set_min_domain_size_f"
)
SUBROUTINE
ALL_set_min_domain_size_int
(
obj
,
dim
,
domain_size
)
BIND
(
C
,
NAME
=
"ALL_set_min_domain_size_f"
)
USE
ISO_C_BINDING
INTEGER
(
c_int
),
VALUE
::
dim
INTEGER
(
c_short
),
VALUE
::
method
REAL
(
c_double
),
DIMENSION
(
dim
)
::
domain_size
TYPE
(
c_ptr
),
VALUE
::
obj
END
SUBROUTINE
...
...
@@ -81,15 +81,13 @@ MODULE ALL_module
TYPE
(
c_ptr
),
VALUE
::
obj
INTEGER
,
VALUE
::
comm
END
SUBROUTINE
SUBROUTINE
ALL_setup_int
(
obj
,
method
)
BIND
(
C
,
NAME
=
"ALL_setup_f"
)
SUBROUTINE
ALL_setup_int
(
obj
)
BIND
(
C
,
NAME
=
"ALL_setup_f"
)
USE
ISO_C_BINDING
TYPE
(
c_ptr
),
VALUE
::
obj
INTEGER
(
c_short
),
VALUE
::
method
END
SUBROUTINE
SUBROUTINE
ALL_balance_int
(
obj
,
method
)
BIND
(
C
,
NAME
=
"ALL_balance_f"
)
SUBROUTINE
ALL_balance_int
(
obj
)
BIND
(
C
,
NAME
=
"ALL_balance_f"
)
USE
ISO_C_BINDING
TYPE
(
c_ptr
),
VALUE
::
obj
INTEGER
(
c_short
),
VALUE
::
method
END
SUBROUTINE
SUBROUTINE
ALL_get_new_number_of_vertices_int
(
obj
,
n
)
&
BIND
(
C
,
NAME
=
"ALL_get_new_number_of_vertices_f"
)
...
...
@@ -119,11 +117,12 @@ MODULE ALL_module
END
INTERFACE
! module subroutines to be called from Fortran code
CONTAINS
SUBROUTINE
ALL_init
(
obj
,
dim
,
gamma
)
SUBROUTINE
ALL_init
(
obj
,
method
,
dim
,
gamma
)
TYPE
(
ALL_t
)
::
obj
INTEGER
::
method
INTEGER
::
dim
REAL
(
8
)
::
gamma
obj
%
object
=
ALL_init_int
(
INT
(
dim
,
c_int
),
REAL
(
gamma
,
c_double
))
obj
%
object
=
ALL_init_int
(
INT
(
method
,
c_int
),
INT
(
dim
,
c_int
),
REAL
(
gamma
,
c_double
))
END
SUBROUTINE
SUBROUTINE
ALL_set_proc_grid_params
(
obj
,
loc
,
ranks
)
TYPE
(
ALL_t
)
::
obj
...
...
@@ -131,12 +130,11 @@ MODULE ALL_module
INTEGER
,
DIMENSION
(
size
(
loc
))
::
ranks
call
ALL_set_proc_grid_params_int
(
obj
%
object
,
size
(
loc
,
1
),
loc
,
size
(
ranks
,
1
),
ranks
)
END
SUBROUTINE
SUBROUTINE
ALL_set_min_domain_size
(
obj
,
method
,
dim
,
domain_size
)
INTEGER
(
c_short
)
::
method
SUBROUTINE
ALL_set_min_domain_size
(
obj
,
dim
,
domain_size
)
INTEGER
::
dim
REAL
(
8
),
DIMENSION
(
dim
)
::
domain_size
TYPE
(
ALL_t
)
::
obj
CALL
ALL_set_min_domain_size_int
(
obj
%
object
,
method
,
dim
,
domain_size
)
CALL
ALL_set_min_domain_size_int
(
obj
%
object
,
dim
,
domain_size
)
END
SUBROUTINE
SUBROUTINE
ALL_set_work
(
obj
,
work
)
TYPE
(
ALL_t
)
::
obj
...
...
@@ -155,17 +153,15 @@ MODULE ALL_module
INTEGER
::
comm
CALL
ALL_set_communicator_int
(
obj
%
object
,
comm
)
END
SUBROUTINE
SUBROUTINE
ALL_setup
(
obj
,
method
)
SUBROUTINE
ALL_setup
(
obj
)
USE
ISO_C_BINDING
TYPE
(
ALL_t
)
::
obj
INTEGER
(
c_short
)
::
method
CALL
ALL_setup_int
(
obj
%
object
,
method
)
CALL
ALL_setup_int
(
obj
%
object
)
END
SUBROUTINE
SUBROUTINE
ALL_balance
(
obj
,
method
)
SUBROUTINE
ALL_balance
(
obj
)
USE
ISO_C_BINDING
TYPE
(
ALL_t
)
::
obj
INTEGER
(
c_short
)
::
method
CALL
ALL_balance_int
(
obj
%
object
,
method
)
CALL
ALL_balance_int
(
obj
%
object
)
END
SUBROUTINE
SUBROUTINE
ALL_get_new_number_of_vertices
(
obj
,
n
)
TYPE
(
ALL_t
)
::
obj
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment