Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
libfortran-support
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
icon-libraries
libfortran-support
Commits
c43dabf7
Commit
c43dabf7
authored
7 months ago
by
Dylan Kierans
Browse files
Options
Downloads
Patches
Plain Diff
Additional sp interfaces for init and negation routines
parent
42572e17
No related branches found
No related tags found
1 merge request
!96
Draft: Trying out parameterized derived data types
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/mo_fortran_tools.F90
+72
-0
72 additions, 0 deletions
src/mo_fortran_tools.F90
with
72 additions
and
0 deletions
src/mo_fortran_tools.F90
+
72
−
0
View file @
c43dabf7
...
...
@@ -55,6 +55,7 @@ MODULE mo_fortran_tools
PUBLIC
::
init_zero_contiguous_dp
,
init_zero_contiguous_sp
PUBLIC
::
init_contiguous_dp
,
init_contiguous_sp
PUBLIC
::
init_contiguous_i4
,
init_contiguous_l
PUBLIC
::
init_contiguous
,
init_zero_contiguous
PUBLIC
::
minval_1d
PUBLIC
::
minval_2d
PUBLIC
::
resize_arr_c1d
...
...
@@ -239,6 +240,7 @@ MODULE mo_fortran_tools
MODULE
PROCEDURE
init_zero_4d_sp
MODULE
PROCEDURE
init_zero_4d_i4
MODULE
PROCEDURE
init_1d_dp
MODULE
PROCEDURE
init_1d_sp
MODULE
PROCEDURE
init_2d_dp
MODULE
PROCEDURE
init_2d_sp
MODULE
PROCEDURE
init_3d_dp
...
...
@@ -252,6 +254,7 @@ MODULE mo_fortran_tools
INTERFACE
negative2zero
MODULE
PROCEDURE
negative2zero_4d_dp
MODULE
PROCEDURE
negative2zero_4d_sp
END
INTERFACE
negative2zero
INTERFACE
var_scale
...
...
@@ -316,6 +319,16 @@ MODULE mo_fortran_tools
MODULE
PROCEDURE
cast_from_t_ptr_3d_arr
END
INTERFACE
cast_from_t_ptr
INTERFACE
init_contiguous
MODULE
PROCEDURE
init_contiguous_sp
MODULE
PROCEDURE
init_contiguous_dp
END
INTERFACE
init_contiguous
INTERFACE
init_zero_contiguous
MODULE
PROCEDURE
init_zero_contiguous_dp
MODULE
PROCEDURE
init_zero_contiguous_sp
END
INTERFACE
init_zero_contiguous
INTEGER
,
PARAMETER
::
SUCCESS
=
0
CONTAINS
...
...
@@ -1519,6 +1532,28 @@ CONTAINS
CALL
acc_wait_if_requested
(
1
,
opt_acc_async
)
END
SUBROUTINE
init_1d_dp
SUBROUTINE
init_1d_sp
(
init_var
,
init_val
,
lacc
,
opt_acc_async
)
REAL
(
sp
),
INTENT
(
OUT
)
::
init_var
(:)
REAL
(
sp
),
INTENT
(
IN
)
::
init_val
LOGICAL
,
INTENT
(
IN
),
OPTIONAL
::
lacc
LOGICAL
,
INTENT
(
IN
),
OPTIONAL
::
opt_acc_async
INTEGER
::
i1
,
m1
LOGICAL
::
lzacc
CALL
set_acc_host_or_device
(
lzacc
,
lacc
)
m1
=
SIZE
(
init_var
,
1
)
!$ACC PARALLEL LOOP DEFAULT(PRESENT) ASYNC(1) IF(lzacc)
!$omp do private(i1)
DO
i1
=
1
,
m1
init_var
(
i1
)
=
init_val
END
DO
!$omp end do nowait
!$ACC END PARALLEL LOOP
CALL
acc_wait_if_requested
(
1
,
opt_acc_async
)
END
SUBROUTINE
init_1d_sp
SUBROUTINE
init_2d_dp
(
init_var
,
init_val
,
lacc
,
opt_acc_async
)
REAL
(
dp
),
INTENT
(
OUT
)
::
init_var
(:,
:)
REAL
(
dp
),
INTENT
(
IN
)
::
init_val
...
...
@@ -1971,6 +2006,43 @@ CONTAINS
CALL
acc_wait_if_requested
(
1
,
opt_acc_async
)
END
SUBROUTINE
negative2zero_4d_dp
SUBROUTINE
negative2zero_4d_sp
(
var
,
lacc
,
opt_acc_async
)
REAL
(
sp
),
INTENT
(
inout
)
::
var
(:,
:,
:,
:)
LOGICAL
,
INTENT
(
IN
),
OPTIONAL
::
lacc
LOGICAL
,
INTENT
(
IN
),
OPTIONAL
::
opt_acc_async
INTEGER
::
i1
,
i2
,
i3
,
i4
,
m1
,
m2
,
m3
,
m4
REAL
(
sp
)
::
v
LOGICAL
::
lzacc
CALL
set_acc_host_or_device
(
lzacc
,
lacc
)
m1
=
SIZE
(
var
,
1
)
m2
=
SIZE
(
var
,
2
)
m3
=
SIZE
(
var
,
3
)
m4
=
SIZE
(
var
,
4
)
!$ACC PARALLEL LOOP DEFAULT(PRESENT) PRIVATE(v) ASYNC(1) COLLAPSE(4) IF(lzacc)
#if (defined(__INTEL_COMPILER))
!$omp do private(i1,i2,i3,i4)
#else
!$omp do collapse(4)
#endif
DO
i4
=
1
,
m4
DO
i3
=
1
,
m3
DO
i2
=
1
,
m2
DO
i1
=
1
,
m1
v
=
var
(
i1
,
i2
,
i3
,
i4
)
var
(
i1
,
i2
,
i3
,
i4
)
=
(
ABS
(
v
)
+
v
)
*
0.5_sp
END
DO
END
DO
END
DO
END
DO
!$omp end do nowait
CALL
acc_wait_if_requested
(
1
,
opt_acc_async
)
END
SUBROUTINE
negative2zero_4d_sp
SUBROUTINE
init_contiguous_dp
(
var
,
n
,
v
,
lacc
,
opt_acc_async
)
INTEGER
,
INTENT
(
IN
)
::
n
REAL
(
dp
),
INTENT
(
OUT
)
::
var
(
n
)
...
...
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
register
or
sign in
to comment