Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
solverstack
ScalFMM
Commits
e76a4d31
Commit
e76a4d31
authored
Nov 24, 2014
by
BRAMAS Berenger
Browse files
Prepare to use StarPU and check OMP4
parent
3b0047b0
Changes
6
Hide whitespace changes
Inline
Side-by-side
CMakeLists.txt
View file @
e76a4d31
...
...
@@ -64,6 +64,7 @@ OPTION( ScalFMM_USE_AVX "Set to ON to compile with AVX support"
OPTION
(
ScalFMM_USE_ASSERT
"Set to ON to enable safe tests during execution"
ON
)
OPTION
(
ScalFMM_USE_MIC_NATIVE
"Set to ON to compile in native mode for MIC"
OFF
)
OPTION
(
ScalFMM_BUILD_ONLY_LIB
"Set to ON to compile only the lib (examples are not compiled) "
OFF
)
OPTION
(
ScalFMM_USE_STARPU
"Set to ON to build ScaFMM with StarPU"
OFF
)
#OPTION( ScalFMM_ONLY_DEVEL "Set to ON to compile Development tools (only scalfmm team)" OFF )
# Set scalfmm to default libraries
SET
(
SCALFMM_LIBRARIES
""
)
...
...
Src/Utils/FGlobal.hpp
View file @
e76a4d31
...
...
@@ -95,5 +95,14 @@ typedef long long MortonIndex;
#endif
#endif
///////////////////////////////////////////////////////
// Test OMP4
///////////////////////////////////////////////////////
#if _OPENMP >= 201307
#define ScalFMM_USE_OMP4
#endif
#endif //FGLOBAL_HPP
Tests/noDist/testBlockedAlgorithm.cpp
View file @
e76a4d31
#include "../../Src/Utils/FGlobal.hpp"
#include "../../Src/GroupTree/FGroupTree.hpp"
#include "../../Src/Components/FSimpleLeaf.hpp"
...
...
@@ -29,15 +31,23 @@ int main(int argc, char* argv[]){
"The size of the block of the blocked tree"
};
FHelpDescribeAndExit
(
argc
,
argv
,
"Test the blocked tree by counting the particles."
,
FParameterDefinitions
::
OctreeHeight
,
FParameterDefinitions
::
OctreeHeight
,
FParameterDefinitions
::
NbThreads
,
FParameterDefinitions
::
NbParticles
,
LocalOptionBlocSize
);
// Initialize the types
typedef
FTestCell
GroupCellClass
;
typedef
FGroupTestParticleContainer
GroupContainerClass
;
typedef
FGroupTree
<
GroupCellClass
,
GroupContainerClass
,
2
,
long
long
int
>
GroupOctreeClass
;
typedef
FTestKernels
<
GroupCellClass
,
GroupContainerClass
>
GroupKernelClass
;
#ifdef ScalFMM_USE_STARPU
typedef
FGroupStarPUAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#elif defined(ScalFMM_USE_OMP4)
// Set the number of threads
omp_set_num_threads
(
FParameters
::
getValue
(
argc
,
argv
,
FParameterDefinitions
::
NbThreads
.
options
,
omp_get_max_threads
()));
typedef
FGroupTaskDepAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#else
//typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
typedef
FGroupTaskDepAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
typedef
FGroupTaskAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#endif
typedef
FTestCell
CellClass
;
typedef
FTestParticleContainer
ContainerClass
;
...
...
Tests/noDist/testBlockedChebyshev.cpp
View file @
e76a4d31
#include "../../Src/Utils/FGlobal.hpp"
#include "../../Src/GroupTree/FGroupTree.hpp"
...
...
@@ -42,8 +43,6 @@ int main(int argc, char* argv[]){
FParameterDefinitions
::
OctreeHeight
,
FParameterDefinitions
::
InputFile
,
FParameterDefinitions
::
NbParticles
,
FParameterDefinitions
::
NbThreads
,
LocalOptionBlocSize
,
LocalOptionNoValidate
);
// Set the number of threads
omp_set_num_threads
(
FParameters
::
getValue
(
argc
,
argv
,
FParameterDefinitions
::
NbThreads
.
options
,
omp_get_max_threads
()));
// Initialize the types
static
const
int
ORDER
=
6
;
...
...
@@ -52,9 +51,16 @@ int main(int argc, char* argv[]){
typedef
FP2PGroupParticleContainer
<>
GroupContainerClass
;
typedef
FGroupTree
<
GroupCellClass
,
GroupContainerClass
,
5
,
FReal
>
GroupOctreeClass
;
typedef
FChebSymKernel
<
GroupCellClass
,
GroupContainerClass
,
MatrixKernelClass
,
ORDER
>
GroupKernelClass
;
//typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
//typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
#ifdef ScalFMM_USE_STARPU
typedef
FGroupStarPUAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#elif defined(ScalFMM_USE_OMP4)
// Set the number of threads
omp_set_num_threads
(
FParameters
::
getValue
(
argc
,
argv
,
FParameterDefinitions
::
NbThreads
.
options
,
omp_get_max_threads
()));
typedef
FGroupTaskDepAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#else
//typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
typedef
FGroupTaskAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#endif
// Get params
const
int
NbLevels
=
FParameters
::
getValue
(
argc
,
argv
,
FParameterDefinitions
::
OctreeHeight
.
options
,
5
);
...
...
Tests/noDist/testBlockedRotation.cpp
View file @
e76a4d31
#include "../../Src/Utils/FGlobal.hpp"
#include "../../Src/GroupTree/FGroupTree.hpp"
#include "../../Src/Components/FSimpleLeaf.hpp"
...
...
@@ -41,19 +43,23 @@ int main(int argc, char* argv[]){
FParameterDefinitions
::
NbThreads
,
FParameterDefinitions
::
NbParticles
,
LocalOptionBlocSize
,
LocalOptionNoValidate
);
// Set the number of threads
omp_set_num_threads
(
FParameters
::
getValue
(
argc
,
argv
,
FParameterDefinitions
::
NbThreads
.
options
,
omp_get_max_threads
()));
// Initialize the types
static
const
int
P
=
9
;
typedef
FRotationCell
<
P
>
GroupCellClass
;
typedef
FP2PGroupParticleContainer
<>
GroupContainerClass
;
typedef
FGroupTree
<
GroupCellClass
,
GroupContainerClass
,
5
,
FReal
>
GroupOctreeClass
;
typedef
FRotationKernel
<
GroupCellClass
,
GroupContainerClass
,
P
>
GroupKernelClass
;
//typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
//typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
#ifdef ScalFMM_USE_STARPU
typedef
FGroupStarPUAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#elif defined(ScalFMM_USE_OMP4)
// Set the number of threads
omp_set_num_threads
(
FParameters
::
getValue
(
argc
,
argv
,
FParameterDefinitions
::
NbThreads
.
options
,
omp_get_max_threads
()));
typedef
FGroupTaskDepAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#else
//typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
typedef
FGroupTaskAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
GroupCellClass
,
GroupKernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
GroupContainerClass
>
GroupAlgorithm
;
#endif
// Get params
const
int
NbLevels
=
FParameters
::
getValue
(
argc
,
argv
,
FParameterDefinitions
::
OctreeHeight
.
options
,
5
);
...
...
Tests/noDist/testBlockedTree.cpp
View file @
e76a4d31
#include "../../Src/Utils/FGlobal.hpp"
#include "../../Src/GroupTree/FGroupTree.hpp"
...
...
@@ -24,6 +25,8 @@
#include "../../Src/Files/FFmaGenericLoader.hpp"
#include "../../Src/GroupTree/FGroupSeqAlgorithm.hpp"
#include "../../Src/GroupTree/FGroupTaskAlgorithm.hpp"
#include "../../Src/GroupTree/FGroupTaskDepAlgorithm.hpp"
#include "../../Src/GroupTree/FP2PGroupParticleContainer.hpp"
#include "../../Src/Utils/FParameterNames.hpp"
...
...
@@ -84,7 +87,14 @@ int main(int argc, char* argv[]){
typedef
FRotationKernel
<
CellClass
,
FP2PGroupParticleContainer
<>
,
P
>
KernelClass
;
typedef
FGroupSeqAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
CellClass
,
KernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
FP2PGroupParticleContainer
<>
>
GroupAlgorithm
;
#ifdef ScalFMM_USE_STARPU
typedef
FGroupStarPUAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
CellClass
,
KernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
FP2PGroupParticleContainer
<>
>
GroupAlgorithm
;
#elif defined(ScalFMM_USE_OMP4)
typedef
FGroupTaskDepAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
CellClass
,
KernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
FP2PGroupParticleContainer
<>
>
GroupAlgorithm
;
#else
//typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, CellClass, KernelClass, typename GroupOctreeClass::ParticleGroupClass, FP2PGroupParticleContainer<> > GroupAlgorithm;
typedef
FGroupTaskAlgorithm
<
GroupOctreeClass
,
typename
GroupOctreeClass
::
CellGroupClass
,
CellClass
,
KernelClass
,
typename
GroupOctreeClass
::
ParticleGroupClass
,
FP2PGroupParticleContainer
<>
>
GroupAlgorithm
;
#endif
KernelClass
kernel
(
NbLevels
,
loader
.
getBoxWidth
(),
loader
.
getCenterOfBox
());
GroupAlgorithm
algo
(
&
groupedTree2
,
&
kernel
);
...
...
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