Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
sfx
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
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
inmcm-mirror
sfx
Commits
3194dc60
Commit
3194dc60
authored
1 year ago
by
数学の武士
Committed by
Evgeny Mortikov
1 year ago
Browse files
Options
Downloads
Patches
Plain Diff
add memOut
parent
f8fc29bd
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
includeCXX/sfx_flux.h
+1
-1
1 addition, 1 deletion
includeCXX/sfx_flux.h
srcCXX/sfx_call_class_func.cpp
+6
-6
6 additions, 6 deletions
srcCXX/sfx_call_class_func.cpp
srcCXX/sfx_flux.cpp
+78
-61
78 additions, 61 deletions
srcCXX/sfx_flux.cpp
with
85 additions
and
68 deletions
includeCXX/sfx_flux.h
+
1
−
1
View file @
3194dc60
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
#include
"sfx_template_parameters.h"
#include
"sfx_template_parameters.h"
#include
<cstddef>
#include
<cstddef>
template
<
typename
T
,
MemType
RunMem
,
MemType
memIn
>
template
<
typename
T
,
MemType
memIn
,
MemType
memOut
,
MemType
RunMem
>
class
Flux
class
Flux
{
{
private:
private:
...
...
This diff is collapsed.
Click to expand it.
srcCXX/sfx_call_class_func.cpp
+
6
−
6
View file @
3194dc60
...
@@ -4,12 +4,6 @@
...
@@ -4,12 +4,6 @@
#include
"../includeCXX/sfx_flux.h"
#include
"../includeCXX/sfx_flux.h"
#include
<vector>
#include
<vector>
#ifdef INCLUDE_CUDA
Flux
<
float
,
MemType
::
GPU
,
MemType
::
CPU
>
F
;
#else
Flux
<
float
,
MemType
::
CPU
,
MemType
::
CPU
>
F
;
#endif
// -------------------------------------------------------------------------- //
// -------------------------------------------------------------------------- //
void
surf_flux_CXX
(
float
*
zeta_
,
float
*
Rib_
,
float
*
Re_
,
float
*
B_
,
float
*
z0_m_
,
float
*
z0_t_
,
float
*
Rib_conv_lim_
,
float
*
Cm_
,
float
*
Ct_
,
float
*
Km_
,
float
*
Pr_t_inv_
,
void
surf_flux_CXX
(
float
*
zeta_
,
float
*
Rib_
,
float
*
Re_
,
float
*
B_
,
float
*
z0_m_
,
float
*
z0_t_
,
float
*
Rib_conv_lim_
,
float
*
Cm_
,
float
*
Ct_
,
float
*
Km_
,
float
*
Pr_t_inv_
,
float
*
U_
,
float
*
dT_
,
float
*
Tsemi_
,
float
*
dQ_
,
float
*
h_
,
float
*
in_z0_m_
,
float
*
U_
,
float
*
dT_
,
float
*
Tsemi_
,
float
*
dQ_
,
float
*
h_
,
float
*
in_z0_m_
,
...
@@ -23,6 +17,12 @@ void surf_flux_CXX (float *zeta_, float *Rib_, float *Re_, float *B_, float *z0_
...
@@ -23,6 +17,12 @@ void surf_flux_CXX (float *zeta_, float *Rib_, float *Re_, float *B_, float *z0_
const
int
maxiters_charnock
,
const
int
maxiters_convection
,
const
int
maxiters_charnock
,
const
int
maxiters_convection
,
const
int
grid_size
)
const
int
grid_size
)
{
{
#ifdef INCLUDE_CUDA
static
Flux
<
float
,
MemType
::
CPU
,
MemType
::
CPU
,
MemType
::
GPU
>
F
;
#else
static
Flux
<
float
,
MemType
::
CPU
,
MemType
::
CPU
,
MemType
::
CPU
>
F
;
#endif
F
.
set_params
(
grid_size
,
kappa
,
Pr_t_0_inv
,
Pr_t_inf_inv
,
F
.
set_params
(
grid_size
,
kappa
,
Pr_t_0_inv
,
Pr_t_inf_inv
,
alpha_m
,
alpha_h
,
alpha_h_fix
,
alpha_m
,
alpha_h
,
alpha_h_fix
,
beta_m
,
beta_h
,
Rib_max
,
Re_rough_min
,
beta_m
,
beta_h
,
Rib_max
,
Re_rough_min
,
...
...
This diff is collapsed.
Click to expand it.
srcCXX/sfx_flux.cpp
+
78
−
61
View file @
3194dc60
...
@@ -9,8 +9,8 @@
...
@@ -9,8 +9,8 @@
#include
"../includeCXX/sfx_memory_processing.h"
#include
"../includeCXX/sfx_memory_processing.h"
template
<
typename
T
,
MemType
RunMem
,
MemType
memIn
>
template
<
typename
T
,
MemType
memIn
,
MemType
memOut
,
MemType
RunMem
>
Flux
<
T
,
RunMem
,
memIn
>::
Flux
()
Flux
<
T
,
memIn
,
memOut
,
RunMem
>::
Flux
()
{
{
kappa
=
0
,
Pr_t_0_inv
=
0
,
Pr_t_inf_inv
=
0
,
kappa
=
0
,
Pr_t_0_inv
=
0
,
Pr_t_inf_inv
=
0
,
alpha_m
=
0
,
alpha_h
=
0
,
alpha_h_fix
=
0
,
alpha_m
=
0
,
alpha_h
=
0
,
alpha_h_fix
=
0
,
...
@@ -28,8 +28,8 @@ Flux<T, RunMem, memIn>::Flux()
...
@@ -28,8 +28,8 @@ Flux<T, RunMem, memIn>::Flux()
allocated_size
=
0
;
allocated_size
=
0
;
}
}
template
<
typename
T
,
MemType
RunMem
,
MemType
memIn
>
template
<
typename
T
,
MemType
memIn
,
MemType
memOut
,
MemType
RunMem
>
void
Flux
<
T
,
RunMem
,
memIn
>::
set_params
(
const
int
grid_size_
,
const
T
kappa_
,
const
T
Pr_t_0_inv_
,
const
T
Pr_t_inf_inv_
,
void
Flux
<
T
,
memIn
,
memOut
,
RunMem
>::
set_params
(
const
int
grid_size_
,
const
T
kappa_
,
const
T
Pr_t_0_inv_
,
const
T
Pr_t_inf_inv_
,
const
T
alpha_m_
,
const
T
alpha_h_
,
const
T
alpha_h_fix_
,
const
T
alpha_m_
,
const
T
alpha_h_
,
const
T
alpha_h_fix_
,
const
T
beta_m_
,
const
T
beta_h_
,
const
T
Rib_max_
,
const
T
Re_rough_min_
,
const
T
beta_m_
,
const
T
beta_h_
,
const
T
Rib_max_
,
const
T
Re_rough_min_
,
const
T
B1_rough_
,
const
T
B2_rough_
,
const
T
B1_rough_
,
const
T
B2_rough_
,
...
@@ -65,7 +65,10 @@ void Flux<T, RunMem, memIn>::set_params(const int grid_size_, const T kappa_, co
...
@@ -65,7 +65,10 @@ void Flux<T, RunMem, memIn>::set_params(const int grid_size_, const T kappa_, co
memproc
::
realloc
<
RunMem
>
((
void
*&
)(
h
),
allocated_size
,
new_size
);
memproc
::
realloc
<
RunMem
>
((
void
*&
)(
h
),
allocated_size
,
new_size
);
allocated_size
=
0
;
allocated_size
=
0
;
memproc
::
realloc
<
RunMem
>
((
void
*&
)(
in_z0_m
),
allocated_size
,
new_size
);
memproc
::
realloc
<
RunMem
>
((
void
*&
)(
in_z0_m
),
allocated_size
,
new_size
);
}
if
(
RunMem
!=
memOut
)
{
const
size_t
new_size
=
grid_size
*
sizeof
(
T
);
allocated_size
=
0
;
allocated_size
=
0
;
memproc
::
realloc
<
RunMem
>
((
void
*&
)(
zeta
),
allocated_size
,
new_size
);
memproc
::
realloc
<
RunMem
>
((
void
*&
)(
zeta
),
allocated_size
,
new_size
);
allocated_size
=
0
;
allocated_size
=
0
;
...
@@ -93,8 +96,8 @@ void Flux<T, RunMem, memIn>::set_params(const int grid_size_, const T kappa_, co
...
@@ -93,8 +96,8 @@ void Flux<T, RunMem, memIn>::set_params(const int grid_size_, const T kappa_, co
}
}
}
}
template
<
typename
T
,
MemType
RunMem
,
MemType
memIn
>
template
<
typename
T
,
MemType
memIn
,
MemType
memOut
,
MemType
RunMem
>
Flux
<
T
,
RunMem
,
memIn
>::~
Flux
()
Flux
<
T
,
memIn
,
memOut
,
RunMem
>::~
Flux
()
{
{
kappa
=
0
,
Pr_t_0_inv
=
0
,
Pr_t_inf_inv
=
0
,
kappa
=
0
,
Pr_t_0_inv
=
0
,
Pr_t_inf_inv
=
0
,
alpha_m
=
0
,
alpha_h
=
0
,
alpha_h_fix
=
0
,
alpha_m
=
0
,
alpha_h
=
0
,
alpha_h_fix
=
0
,
...
@@ -110,31 +113,36 @@ Flux<T, RunMem, memIn>::~Flux()
...
@@ -110,31 +113,36 @@ Flux<T, RunMem, memIn>::~Flux()
if
(
ifAllocated
==
true
)
if
(
ifAllocated
==
true
)
{
{
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
U
);
if
(
RunMem
!=
memIn
)
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
dT
);
{
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Tsemi
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
U
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
dQ
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
dT
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
h
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Tsemi
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
dQ
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
zeta
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
h
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Rib
);
}
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Re
);
if
(
RunMem
!=
memOut
)
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Rib_conv_lim
);
{
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
z0_m
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
zeta
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
z0_t
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Rib
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
B
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Re
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Cm
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Rib_conv_lim
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Ct
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
z0_m
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Km
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
z0_t
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Pr_t_inv
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
B
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Cm
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Ct
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Km
);
memproc
::
dealloc
<
RunMem
>
((
void
*&
)
Pr_t_inv
);
}
ifAllocated
=
false
;
ifAllocated
=
false
;
allocated_size
=
0
;
allocated_size
=
0
;
}
}
}
}
template
<
typename
T
,
MemType
RunMem
,
MemType
memIn
>
template
<
typename
T
,
MemType
memIn
,
MemType
memOut
,
MemType
RunMem
>
void
Flux
<
T
,
RunMem
,
memIn
>::
set_data
(
T
*
zeta_
,
T
*
Rib_
,
T
*
Re_
,
T
*
B_
,
T
*
z0_m_
,
T
*
z0_t_
,
T
*
Rib_conv_lim_
,
T
*
Cm_
,
T
*
Ct_
,
T
*
Km_
,
T
*
Pr_t_inv_
,
void
Flux
<
T
,
memIn
,
memOut
,
RunMem
>::
set_data
(
T
*
zeta_
,
T
*
Rib_
,
T
*
Re_
,
T
*
B_
,
T
*
z0_m_
,
T
*
z0_t_
,
T
*
Rib_conv_lim_
,
T
*
Cm_
,
T
*
Ct_
,
T
*
Km_
,
T
*
Pr_t_inv_
,
T
*
U_
,
T
*
dT_
,
T
*
Tsemi_
,
T
*
dQ_
,
T
*
h_
,
T
*
in_z0_m_
)
T
*
U_
,
T
*
dT_
,
T
*
Tsemi_
,
T
*
dQ_
,
T
*
h_
,
T
*
in_z0_m_
)
{
{
if
(
RunMem
==
memIn
)
if
(
RunMem
==
memIn
)
...
@@ -145,18 +153,6 @@ void Flux<T, RunMem, memIn>::set_data(T *zeta_, T *Rib_, T *Re_, T *B_, T *z0_m_
...
@@ -145,18 +153,6 @@ void Flux<T, RunMem, memIn>::set_data(T *zeta_, T *Rib_, T *Re_, T *B_, T *z0_m_
dQ
=
dQ_
;
dQ
=
dQ_
;
h
=
h_
;
h
=
h_
;
in_z0_m
=
in_z0_m_
;
in_z0_m
=
in_z0_m_
;
zeta
=
zeta_
;
Rib
=
Rib_
;
Re
=
Re_
;
Rib_conv_lim
=
Rib_conv_lim_
;
z0_m
=
z0_m_
;
z0_t
=
z0_t_
;
B
=
B_
;
Cm
=
Cm_
;
Ct
=
Ct_
;
Km
=
Km_
;
Pr_t_inv
=
Pr_t_inv_
;
}
}
else
else
{
{
...
@@ -169,10 +165,25 @@ void Flux<T, RunMem, memIn>::set_data(T *zeta_, T *Rib_, T *Re_, T *B_, T *z0_m_
...
@@ -169,10 +165,25 @@ void Flux<T, RunMem, memIn>::set_data(T *zeta_, T *Rib_, T *Re_, T *B_, T *z0_m_
memproc
::
memcopy
<
RunMem
,
memIn
>
(
h
,
h_
,
new_size
);
memproc
::
memcopy
<
RunMem
,
memIn
>
(
h
,
h_
,
new_size
);
memproc
::
memcopy
<
RunMem
,
memIn
>
(
in_z0_m
,
in_z0_m_
,
new_size
);
memproc
::
memcopy
<
RunMem
,
memIn
>
(
in_z0_m
,
in_z0_m_
,
new_size
);
}
}
if
(
RunMem
==
memOut
)
{
zeta
=
zeta_
;
Rib
=
Rib_
;
Re
=
Re_
;
Rib_conv_lim
=
Rib_conv_lim_
;
z0_m
=
z0_m_
;
z0_t
=
z0_t_
;
B
=
B_
;
Cm
=
Cm_
;
Ct
=
Ct_
;
Km
=
Km_
;
Pr_t_inv
=
Pr_t_inv_
;
}
}
}
template
<
typename
T
,
MemType
RunMem
,
MemType
memIn
>
template
<
typename
T
,
MemType
memIn
,
MemType
memOut
,
MemType
RunMem
>
void
Flux
<
T
,
RunMem
,
memIn
>::
compute_flux
(
T
*
zeta_
,
T
*
Rib_
,
T
*
Re_
,
T
*
B_
,
T
*
z0_m_
,
T
*
z0_t_
,
T
*
Rib_conv_lim_
,
T
*
Cm_
,
T
*
Ct_
,
T
*
Km_
,
T
*
Pr_t_inv_
,
void
Flux
<
T
,
memIn
,
memOut
,
RunMem
>::
compute_flux
(
T
*
zeta_
,
T
*
Rib_
,
T
*
Re_
,
T
*
B_
,
T
*
z0_m_
,
T
*
z0_t_
,
T
*
Rib_conv_lim_
,
T
*
Cm_
,
T
*
Ct_
,
T
*
Km_
,
T
*
Pr_t_inv_
,
T
*
U_
,
T
*
dT_
,
T
*
Tsemi_
,
T
*
dQ_
,
T
*
h_
,
T
*
in_z0_m_
,
T
*
U_
,
T
*
dT_
,
T
*
Tsemi_
,
T
*
dQ_
,
T
*
h_
,
T
*
in_z0_m_
,
const
int
maxiters_charnock
,
const
int
maxiters_convection
)
const
int
maxiters_charnock
,
const
int
maxiters_convection
)
{
{
...
@@ -205,33 +216,39 @@ void Flux<T, RunMem, memIn>::compute_flux(T *zeta_, T *Rib_, T *Re_, T *B_, T *z
...
@@ -205,33 +216,39 @@ void Flux<T, RunMem, memIn>::compute_flux(T *zeta_, T *Rib_, T *Re_, T *B_, T *z
grid_size
);
grid_size
);
#endif
#endif
if
(
RunMem
!=
mem
In
)
if
(
RunMem
!=
mem
Out
)
{
{
const
size_t
new_size
=
grid_size
*
sizeof
(
T
);
const
size_t
new_size
=
grid_size
*
sizeof
(
T
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
zeta_
,
zeta
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
zeta_
,
zeta
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
Rib_
,
Rib
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
Rib_
,
Rib
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
Re_
,
Re
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
Re_
,
Re
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
Rib_conv_lim_
,
Rib_conv_lim
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
Rib_conv_lim_
,
Rib_conv_lim
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
z0_m_
,
z0_m
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
z0_m_
,
z0_m
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
z0_t_
,
z0_t
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
z0_t_
,
z0_t
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
B_
,
B
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
B_
,
B
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
Cm_
,
Cm
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
Cm_
,
Cm
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
Ct_
,
Ct
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
Ct_
,
Ct
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
Km_
,
Km
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
Km_
,
Km
,
new_size
);
memproc
::
memcopy
<
mem
In
,
RunMem
>
(
Pr_t_inv_
,
Pr_t_inv
,
new_size
);
memproc
::
memcopy
<
mem
Out
,
RunMem
>
(
Pr_t_inv_
,
Pr_t_inv
,
new_size
);
}
}
}
}
template
class
Flux
<
float
,
MemType
::
CPU
,
MemType
::
CPU
>;
template
class
Flux
<
float
,
MemType
::
CPU
,
MemType
::
CPU
,
MemType
::
CPU
>;
template
class
Flux
<
double
,
MemType
::
CPU
,
MemType
::
CPU
>;
template
class
Flux
<
double
,
MemType
::
CPU
,
MemType
::
CPU
,
MemType
::
CPU
>;
#ifdef INCLUDE_CUDA
#ifdef INCLUDE_CUDA
template
class
Flux
<
float
,
MemType
::
GPU
,
MemType
::
GPU
>;
template
class
Flux
<
float
,
MemType
::
GPU
,
MemType
::
GPU
,
MemType
::
CPU
>;
template
class
Flux
<
float
,
MemType
::
GPU
,
MemType
::
CPU
>;
template
class
Flux
<
float
,
MemType
::
GPU
,
MemType
::
CPU
,
MemType
::
CPU
>;
template
class
Flux
<
float
,
MemType
::
CPU
,
MemType
::
GPU
>;
template
class
Flux
<
float
,
MemType
::
CPU
,
MemType
::
GPU
,
MemType
::
CPU
>;
template
class
Flux
<
float
,
MemType
::
GPU
,
MemType
::
GPU
,
MemType
::
GPU
>;
template
class
Flux
<
double
,
MemType
::
GPU
,
MemType
::
GPU
>;
template
class
Flux
<
float
,
MemType
::
GPU
,
MemType
::
CPU
,
MemType
::
GPU
>;
template
class
Flux
<
double
,
MemType
::
GPU
,
MemType
::
CPU
>;
template
class
Flux
<
float
,
MemType
::
CPU
,
MemType
::
GPU
,
MemType
::
GPU
>;
template
class
Flux
<
double
,
MemType
::
CPU
,
MemType
::
GPU
>;
template
class
Flux
<
double
,
MemType
::
GPU
,
MemType
::
GPU
,
MemType
::
CPU
>;
template
class
Flux
<
double
,
MemType
::
GPU
,
MemType
::
CPU
,
MemType
::
CPU
>;
template
class
Flux
<
double
,
MemType
::
CPU
,
MemType
::
GPU
,
MemType
::
CPU
>;
template
class
Flux
<
double
,
MemType
::
GPU
,
MemType
::
GPU
,
MemType
::
GPU
>;
template
class
Flux
<
double
,
MemType
::
GPU
,
MemType
::
CPU
,
MemType
::
GPU
>;
template
class
Flux
<
double
,
MemType
::
CPU
,
MemType
::
GPU
,
MemType
::
GPU
>;
#endif
#endif
\ No newline at end of file
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