Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
solverstack
ScalFMM
Commits
45652265
Commit
45652265
authored
Feb 02, 2016
by
BRAMAS Berenger
Browse files
use new prio and update starpu mpi
parent
b58f3e3d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp
View file @
45652265
...
...
@@ -21,6 +21,7 @@
#include
<starpu.h>
#include
"../StarPUUtils/FStarPUUtils.hpp"
#include
"../StarPUUtils/FStarPUFmmPriorities.hpp"
#include
"../StarPUUtils/FStarPUFmmPrioritiesV2.hpp"
#include
"../StarPUUtils/FStarPUReduxCpu.hpp"
#ifdef STARPU_USE_CPU
...
...
@@ -139,6 +140,9 @@ protected:
std
::
unique_ptr
<
char
[]
>
p2pTaskNames
;
std
::
unique_ptr
<
char
[]
>
p2pOuterTaskNames
;
#endif
#ifdef SCALFMM_STARPU_USE_PRIO
typedef
FStarPUFmmPrioritiesV2
PrioClass
;
// FStarPUFmmPriorities
#endif
public:
FGroupTaskStarPUAlgorithm
(
OctreeClass
*
const
inTree
,
KernelClass
*
inKernels
)
...
...
@@ -164,7 +168,7 @@ public:
struct
starpu_conf
conf
;
FAssertLF
(
starpu_conf_init
(
&
conf
)
==
0
);
#ifdef SCALFMM_STARPU_USE_PRIO
FStarPUFmmPrioritie
s
::
Controller
().
init
(
&
conf
,
tree
->
getHeight
(),
inKernels
);
PrioClas
s
::
Controller
().
init
(
&
conf
,
tree
->
getHeight
(),
inKernels
);
#endif
FAssertLF
(
starpu_init
(
&
conf
)
==
0
);
...
...
@@ -996,7 +1000,7 @@ protected:
STARPU_VALUE
,
&
wrapperptr
,
sizeof
(
wrapperptr
),
STARPU_VALUE
,
&
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosP2M
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosP2M
(),
#endif
STARPU_R
,
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
symb
,
STARPU_RW
,
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
up
,
...
...
@@ -1054,7 +1058,7 @@ protected:
task
->
cl_arg_size
=
arg_buffer_size
;
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
m2mTaskNames
[
idxLevel
].
get
();
...
...
@@ -1090,7 +1094,7 @@ protected:
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
m2mTaskNames
[
idxLevel
].
get
();
...
...
@@ -1119,7 +1123,7 @@ protected:
STARPU_VALUE
,
&
idxLevel
,
sizeof
(
idxLevel
),
STARPU_VALUE
,
&
cellHandles
[
idxLevel
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2L
(
idxLevel
),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosM2L
(
idxLevel
),
#endif
STARPU_R
,
cellHandles
[
idxLevel
][
idxGroup
].
symb
,
STARPU_R
,
cellHandles
[
idxLevel
][
idxGroup
].
up
,
...
...
@@ -1146,7 +1150,7 @@ protected:
STARPU_VALUE
,
&
cellHandles
[
idxLevel
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
STARPU_VALUE
,
&
mode
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
#endif
STARPU_R
,
cellHandles
[
idxLevel
][
idxGroup
].
symb
,
(
STARPU_RW
|
STARPU_COMMUTE_IF_SUPPORTED
),
cellHandles
[
idxLevel
][
idxGroup
].
down
,
...
...
@@ -1165,7 +1169,7 @@ protected:
STARPU_VALUE
,
&
cellHandles
[
idxLevel
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
STARPU_VALUE
,
&
mode
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
#endif
STARPU_R
,
cellHandles
[
idxLevel
][
interactionid
].
symb
,
(
STARPU_RW
|
STARPU_COMMUTE_IF_SUPPORTED
),
cellHandles
[
idxLevel
][
interactionid
].
down
,
...
...
@@ -1232,7 +1236,7 @@ protected:
task
->
cl_arg_size
=
arg_buffer_size
;
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
l2lTaskNames
[
idxLevel
].
get
();
...
...
@@ -1271,7 +1275,7 @@ protected:
task
->
cl_arg_size
=
arg_buffer_size
;
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
l2lTaskNames
[
idxLevel
].
get
();
...
...
@@ -1301,7 +1305,7 @@ protected:
STARPU_VALUE
,
&
outsideInteractions
,
sizeof
(
outsideInteractions
),
STARPU_VALUE
,
&
particleHandles
[
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosP2PExtern
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosP2PExtern
(),
#endif
STARPU_R
,
particleHandles
[
idxGroup
].
symb
,
#ifdef STARPU_USE_REDUX
...
...
@@ -1328,7 +1332,7 @@ protected:
STARPU_VALUE
,
&
wrapperptr
,
sizeof
(
wrapperptr
),
STARPU_VALUE
,
&
particleHandles
[
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosP2P
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosP2P
(),
#endif
STARPU_R
,
particleHandles
[
idxGroup
].
symb
,
#ifdef STARPU_USE_REDUX
...
...
@@ -1361,7 +1365,7 @@ protected:
STARPU_VALUE
,
&
wrapperptr
,
sizeof
(
wrapperptr
),
STARPU_VALUE
,
&
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2P
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosL2P
(),
#endif
STARPU_R
,
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
symb
,
STARPU_R
,
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
down
,
...
...
@@ -1390,7 +1394,7 @@ protected:
for
(
int
idxGroup
=
0
;
idxGroup
<
tree
->
getNbParticleGroup
()
;
++
idxGroup
){
starpu_insert_task
(
&
p2p_redux_read
,
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2P
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosL2P
(),
#endif
STARPU_R
,
particleHandles
[
idxGroup
].
down
,
#ifdef STARPU_USE_TASK_NAME
...
...
Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp
View file @
45652265
...
...
@@ -11,6 +11,7 @@
#include
"../../Utils/FAssert.hpp"
#include
"../../Utils/FAlignedMemory.hpp"
#include
"../../Utils/FAssert.hpp"
#include
"../../Utils/FEnv.hpp"
#include
"../../Utils/FMpi.hpp"
...
...
@@ -25,6 +26,8 @@
#include
<starpu_mpi.h>
#include
"../StarPUUtils/FStarPUUtils.hpp"
#include
"../StarPUUtils/FStarPUFmmPriorities.hpp"
#include
"../StarPUUtils/FStarPUFmmPrioritiesV2.hpp"
#include
"../StarPUUtils/FStarPUReduxCpu.hpp"
#ifdef STARPU_USE_CPU
#include
"../StarPUUtils/FStarPUCpuWrapper.hpp"
...
...
@@ -125,6 +128,9 @@ protected:
starpu_codelet
p2p_redux_read
;
#endif
const
bool
noCommuteAtLastLevel
;
const
bool
noCommuteBetweenLevel
;
#ifdef STARPU_USE_CPU
StarPUCpuWrapperClass
cpuWrapper
;
#endif
...
...
@@ -152,11 +158,16 @@ protected:
std
::
unique_ptr
<
char
[]
>
p2pTaskNames
;
std
::
unique_ptr
<
char
[]
>
p2pOuterTaskNames
;
#endif
#ifdef SCALFMM_STARPU_USE_PRIO
typedef
FStarPUFmmPrioritiesV2
PrioClass
;
// FStarPUFmmPriorities
#endif
public:
FGroupTaskStarPUMpiAlgorithm
(
const
FMpi
::
FComm
&
inComm
,
OctreeClass
*
const
inTree
,
KernelClass
*
inKernels
)
:
comm
(
inComm
),
tree
(
inTree
),
originalCpuKernel
(
inKernels
),
cellHandles
(
nullptr
),
noCommuteAtLastLevel
(
FEnv
::
GetBool
(
"SCALFMM_NO_COMMUTE_LAST_L2L"
,
true
)),
noCommuteBetweenLevel
(
FEnv
::
GetBool
(
"SCALFMM_NO_COMMUTE_M2L_L2L"
,
false
)),
#ifdef STARPU_USE_CPU
cpuWrapper
(
tree
->
getHeight
()),
#endif
...
...
@@ -175,7 +186,7 @@ public:
struct
starpu_conf
conf
;
FAssertLF
(
starpu_conf_init
(
&
conf
)
==
0
);
#ifdef SCALFMM_STARPU_USE_PRIO
FStarPUFmmPrioritie
s
::
Controller
().
init
(
&
conf
,
tree
->
getHeight
(),
inKernels
);
PrioClas
s
::
Controller
().
init
(
&
conf
,
tree
->
getHeight
(),
inKernels
);
#endif
FAssertLF
(
starpu_init
(
&
conf
)
==
0
);
FAssertLF
(
starpu_mpi_init
(
0
,
0
,
0
)
==
0
);
...
...
@@ -232,6 +243,8 @@ public:
#ifdef SCALFMM_ENABLE_CUDA_KERNEL
FLOG
(
FLog
::
Controller
<<
"FGroupTaskStarPUAlgorithm (Max CUDA "
<<
starpu_cuda_worker_get_count
()
<<
")
\n
"
);
#endif
FLOG
(
FLog
::
Controller
<<
"SCALFMM_NO_COMMUTE_LAST_L2L "
<<
noCommuteAtLastLevel
<<
"
\n
"
);
FLOG
(
FLog
::
Controller
<<
"SCALFMM_NO_COMMUTE_M2L_L2L "
<<
noCommuteBetweenLevel
<<
"
\n
"
);
buildTaskNames
();
}
...
...
@@ -344,6 +357,50 @@ public:
buildRemoteInteractionsAndHandles
();
}
#ifdef STARPU_USE_CPU
void
forEachCpuWorker
(
std
::
function
<
void
(
void
)
>
func
){
starpu_resume
();
FStarPUUtils
::
ExecOnWorkers
(
STARPU_CPU
,
func
);
starpu_pause
();
}
void
forEachCpuWorker
(
std
::
function
<
void
(
KernelClass
*
)
>
func
){
starpu_resume
();
FStarPUUtils
::
ExecOnWorkers
(
STARPU_CPU
,
[
&
](){
func
(
cpuWrapper
.
getKernel
(
starpu_worker_get_id
()));
});
starpu_pause
();
}
#endif
#ifdef SCALFMM_ENABLE_CUDA_KERNEL
void
forEachCudaWorker
(
std
::
function
<
void
(
void
)
>
func
){
starpu_resume
();
FStarPUUtils
::
ExecOnWorkers
(
STARPU_CUDA
,
func
);
starpu_pause
();
}
void
forEachCudaWorker
(
std
::
function
<
void
(
void
*
)
>
func
){
starpu_resume
();
FStarPUUtils
::
ExecOnWorkers
(
STARPU_CUDA
,
[
&
](){
func
(
cudaWrapper
.
getKernel
(
starpu_worker_get_id
()));
});
starpu_pause
();
}
#endif
#ifdef SCALFMM_ENABLE_OPENCL_KERNEL
void
forEachOpenCLWorker
(
std
::
function
<
void
(
void
)
>
func
){
starpu_resume
();
FStarPUUtils
::
ExecOnWorkers
(
STARPU_OPENCL
,
func
);
starpu_pause
();
}
void
forEachOpenCLWorker
(
std
::
function
<
void
(
void
*
)
>
func
){
starpu_resume
();
FStarPUUtils
::
ExecOnWorkers
(
STARPU_OPENCL
,
[
&
](){
func
(
openclWrapper
.
getKernel
(
starpu_worker_get_id
()));
});
starpu_pause
();
}
#endif
protected:
/**
...
...
@@ -357,11 +414,16 @@ protected:
FTIME_TASKS
(
cpuWrapper
.
taskTimeRecorder
.
start
());
#endif
FLOG
(
FTic
timerSoumission
);
starpu_resume
();
postRecvAllocatedBlocks
();
if
(
operationsToProceed
&
FFmmP2P
)
insertParticlesSend
();
if
(
operationsToProceed
&
FFmmP2P
)
directPass
();
if
(
operationsToProceed
&
FFmmP2P
)
directPassMpi
();
if
(
operationsToProceed
&
FFmmP2M
&&
!
directOnly
)
bottomPass
();
if
(
operationsToProceed
&
FFmmM2M
&&
!
directOnly
)
upwardPass
();
...
...
@@ -375,14 +437,12 @@ protected:
if
(
operationsToProceed
&
FFmmM2L
&&
!
directOnly
)
transferPass
(
FAbstractAlgorithm
::
lowerWorkingLevel
-
1
,
FAbstractAlgorithm
::
lowerWorkingLevel
,
true
,
true
);
if
(
operationsToProceed
&
FFmmP2P
)
directPass
();
if
(
operationsToProceed
&
FFmmP2P
)
directPassMpi
();
if
(
operationsToProceed
&
FFmmL2P
&&
!
directOnly
)
mergePass
();
#ifdef STARPU_USE_REDUX
if
(
operationsToProceed
&
FFmmL2P
&&
!
directOnly
)
readParticle
();
#endif
FLOG
(
FLog
::
Controller
<<
"
\t\t
Submitting the tasks took "
<<
timerSoumission
.
tacAndElapsed
()
<<
"s
\n
"
);
starpu_task_wait_for_all
();
FLOG
(
FTic
timerSync
;
);
...
...
@@ -647,7 +707,6 @@ protected:
m2l_cl_inout
.
modes
[
3
]
=
STARPU_R
;
m2l_cl_inout
.
name
=
"m2l_cl_inout"
;
#ifdef STARPU_USE_REDUX
memset
(
&
p2p_redux_init
,
0
,
sizeof
(
p2p_redux_init
));
#ifdef STARPU_USE_CPU
...
...
@@ -1549,12 +1608,14 @@ protected:
void
bottomPass
(){
FLOG
(
FTic
timer
;
);
FAssertLF
(
cellHandles
[
tree
->
getHeight
()
-
1
].
size
()
==
particleHandles
.
size
());
for
(
int
idxGroup
=
0
;
idxGroup
<
tree
->
getNbParticleGroup
()
;
++
idxGroup
){
starpu_insert_task
(
&
p2m_cl
,
STARPU_VALUE
,
&
wrapperptr
,
sizeof
(
wrapperptr
),
STARPU_VALUE
,
&
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosP2M
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosP2M
(),
#endif
STARPU_R
,
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
symb
,
STARPU_RW
,
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
up
,
...
...
@@ -1610,8 +1671,9 @@ protected:
0
);
task
->
cl_arg
=
arg_buffer
;
task
->
cl_arg_size
=
arg_buffer_size
;
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
m2mTaskNames
[
idxLevel
].
get
();
...
...
@@ -1644,8 +1706,9 @@ protected:
0
);
task
->
cl_arg
=
arg_buffer
;
task
->
cl_arg_size
=
arg_buffer_size
;
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
m2mTaskNames
[
idxLevel
].
get
();
...
...
@@ -1732,7 +1795,7 @@ protected:
task
->
cl_arg
=
arg_buffer
;
task
->
cl_arg_size
=
arg_buffer_size
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosM2M
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
task
->
cl
->
name
;
...
...
@@ -1800,7 +1863,7 @@ protected:
STARPU_VALUE
,
&
outsideInteractions
,
sizeof
(
outsideInteractions
),
STARPU_VALUE
,
&
cellHandles
[
idxLevel
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
#endif
STARPU_R
,
cellHandles
[
idxLevel
][
idxGroup
].
symb
,
(
STARPU_RW
|
STARPU_COMMUTE_IF_SUPPORTED
),
cellHandles
[
idxLevel
][
idxGroup
].
down
,
...
...
@@ -1832,7 +1895,7 @@ protected:
STARPU_VALUE
,
&
idxLevel
,
sizeof
(
idxLevel
),
STARPU_VALUE
,
&
cellHandles
[
idxLevel
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2L
(
idxLevel
),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosM2L
(
idxLevel
),
#endif
STARPU_R
,
cellHandles
[
idxLevel
][
idxGroup
].
symb
,
STARPU_R
,
cellHandles
[
idxLevel
][
idxGroup
].
up
,
...
...
@@ -1860,7 +1923,7 @@ protected:
STARPU_VALUE
,
&
cellHandles
[
idxLevel
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
STARPU_VALUE
,
&
mode
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
#endif
STARPU_R
,
cellHandles
[
idxLevel
][
idxGroup
].
symb
,
(
STARPU_RW
|
STARPU_COMMUTE_IF_SUPPORTED
),
cellHandles
[
idxLevel
][
idxGroup
].
down
,
...
...
@@ -1879,7 +1942,7 @@ protected:
STARPU_VALUE
,
&
cellHandles
[
idxLevel
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
STARPU_VALUE
,
&
mode
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosM2LExtern
(
idxLevel
),
#endif
STARPU_R
,
cellHandles
[
idxLevel
][
interactionid
].
symb
,
(
STARPU_RW
|
STARPU_COMMUTE_IF_SUPPORTED
),
cellHandles
[
idxLevel
][
interactionid
].
down
,
...
...
@@ -2034,7 +2097,7 @@ protected:
task
->
cl_arg
=
arg_buffer
;
task
->
cl_arg_size
=
arg_buffer_size
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
task
->
cl
->
name
;
...
...
@@ -2066,8 +2129,9 @@ protected:
0
);
task
->
cl_arg
=
arg_buffer
;
task
->
cl_arg_size
=
arg_buffer_size
;
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
task
->
cl
->
name
;
...
...
@@ -2107,7 +2171,12 @@ protected:
task
->
dyn_handles
[
3
]
=
cellHandles
[
idxLevel
+
1
][
idxSubGroup
].
down
;
// put the right codelet
task
->
cl
=
(
idxLevel
==
FAbstractAlgorithm
::
lowerWorkingLevel
-
2
?
&
l2l_cl_nocommute
:
&
l2l_cl
);
if
((
noCommuteAtLastLevel
&&
(
idxLevel
==
FAbstractAlgorithm
::
lowerWorkingLevel
-
2
))
||
noCommuteBetweenLevel
){
task
->
cl
=
&
l2l_cl_nocommute
;
}
else
{
task
->
cl
=
&
l2l_cl
;
}
// put args values
char
*
arg_buffer
;
size_t
arg_buffer_size
;
...
...
@@ -2118,8 +2187,9 @@ protected:
0
);
task
->
cl_arg
=
arg_buffer
;
task
->
cl_arg_size
=
arg_buffer_size
;
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
l2lTaskNames
[
idxLevel
].
get
();
...
...
@@ -2140,7 +2210,12 @@ protected:
task
->
dyn_handles
[
3
]
=
cellHandles
[
idxLevel
+
1
][
idxSubGroup
].
down
;
// put the right codelet
task
->
cl
=
(
idxLevel
==
FAbstractAlgorithm
::
lowerWorkingLevel
-
2
?
&
l2l_cl_nocommute
:
&
l2l_cl
);
if
((
noCommuteAtLastLevel
&&
(
idxLevel
==
FAbstractAlgorithm
::
lowerWorkingLevel
-
2
))
||
noCommuteBetweenLevel
){
task
->
cl
=
&
l2l_cl_nocommute
;
}
else
{
task
->
cl
=
&
l2l_cl
;
}
// put args values
char
*
arg_buffer
;
size_t
arg_buffer_size
;
...
...
@@ -2151,8 +2226,9 @@ protected:
0
);
task
->
cl_arg
=
arg_buffer
;
task
->
cl_arg_size
=
arg_buffer_size
;
task
->
cl_arg_free
=
1
;
#ifdef SCALFMM_STARPU_USE_PRIO
task
->
priority
=
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
task
->
priority
=
PrioClas
s
::
Controller
().
getInsertionPosL2L
(
idxLevel
);
#endif
#ifdef STARPU_USE_TASK_NAME
task
->
name
=
l2lTaskNames
[
idxLevel
].
get
();
...
...
@@ -2179,7 +2255,7 @@ protected:
STARPU_VALUE
,
&
outsideInteractions
,
sizeof
(
outsideInteractions
),
STARPU_VALUE
,
&
particleHandles
[
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosP2PExtern
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosP2PExtern
(),
#endif
STARPU_R
,
particleHandles
[
idxGroup
].
symb
,
(
STARPU_RW
|
STARPU_COMMUTE_IF_SUPPORTED
),
particleHandles
[
idxGroup
].
down
,
...
...
@@ -2212,7 +2288,7 @@ protected:
STARPU_VALUE
,
&
outsideInteractions
,
sizeof
(
outsideInteractions
),
STARPU_VALUE
,
&
particleHandles
[
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosP2PExtern
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosP2PExtern
(),
#endif
STARPU_R
,
particleHandles
[
idxGroup
].
symb
,
#ifdef STARPU_USE_REDUX
...
...
@@ -2239,7 +2315,7 @@ protected:
STARPU_VALUE
,
&
wrapperptr
,
sizeof
(
wrapperptr
),
STARPU_VALUE
,
&
particleHandles
[
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosP2P
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosP2P
(),
#endif
STARPU_R
,
particleHandles
[
idxGroup
].
symb
,
#ifdef STARPU_USE_REDUX
...
...
@@ -2265,12 +2341,14 @@ protected:
void
mergePass
(){
FLOG
(
FTic
timer
;
);
FAssertLF
(
cellHandles
[
tree
->
getHeight
()
-
1
].
size
()
==
particleHandles
.
size
());
for
(
int
idxGroup
=
0
;
idxGroup
<
tree
->
getNbParticleGroup
()
;
++
idxGroup
){
starpu_insert_task
(
&
l2p_cl
,
STARPU_VALUE
,
&
wrapperptr
,
sizeof
(
wrapperptr
),
STARPU_VALUE
,
&
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
intervalSize
,
sizeof
(
int
),
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2P
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosL2P
(),
#endif
STARPU_R
,
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
symb
,
STARPU_R
,
cellHandles
[
tree
->
getHeight
()
-
1
][
idxGroup
].
down
,
...
...
@@ -2299,7 +2377,7 @@ protected:
for
(
int
idxGroup
=
0
;
idxGroup
<
tree
->
getNbParticleGroup
()
;
++
idxGroup
){
starpu_insert_task
(
&
p2p_redux_read
,
#ifdef SCALFMM_STARPU_USE_PRIO
STARPU_PRIORITY
,
FStarPUFmmPrioritie
s
::
Controller
().
getInsertionPosL2P
(),
STARPU_PRIORITY
,
PrioClas
s
::
Controller
().
getInsertionPosL2P
(),
#endif
STARPU_R
,
particleHandles
[
idxGroup
].
down
,
#ifdef STARPU_USE_TASK_NAME
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment