Commit 4b3b72de authored by COULAUD Olivier's avatar COULAUD Olivier

Merge branch 'develop' of gitlab.inria.fr:solverstack/ScalFMM into develop

parents 262c3021 c4990e32
...@@ -36,7 +36,6 @@ set(SCALFMM_MINOR_VERSION 0) ...@@ -36,7 +36,6 @@ set(SCALFMM_MINOR_VERSION 0)
set(SCALFMM_PATCH_VERSION rc0) set(SCALFMM_PATCH_VERSION rc0)
set(SCALFMM_VERSION "${SCALFMM_MAJOR_VERSION}.${SCALFMM_MINOR_VERSION}.${SCALFMM_PATCH_VERSION}" ) set(SCALFMM_VERSION "${SCALFMM_MAJOR_VERSION}.${SCALFMM_MINOR_VERSION}.${SCALFMM_PATCH_VERSION}" )
SET(CXX_STANDARD_REQUIRED ON) SET(CXX_STANDARD_REQUIRED ON)
SET(CMAKE_CXX_STANDARD 14) SET(CMAKE_CXX_STANDARD 14)
...@@ -113,6 +112,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_ ...@@ -113,6 +112,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_
option( SCALFMM_SIMGRID_NODATA "Set to ON to avoid the allocation of numerical parts in the group tree" OFF ) option( SCALFMM_SIMGRID_NODATA "Set to ON to avoid the allocation of numerical parts in the group tree" OFF )
option( STARPU_SIMGRID_MLR_MODELS "Set to ON to enable MLR models need for calibration and simulation" OFF ) option( STARPU_SIMGRID_MLR_MODELS "Set to ON to enable MLR models need for calibration and simulation" OFF )
# OPENMP 4/5 support # OPENMP 4/5 support
message(WARNING "OpenMP_VERSION: ${OpenMP_VERSION}")
option( OPENMP_SUPPORT_PRIORITY "Set to ON to enable tasks priority (OMP4.x/KSTAR/StarPU compiler only)" OFF ) option( OPENMP_SUPPORT_PRIORITY "Set to ON to enable tasks priority (OMP4.x/KSTAR/StarPU compiler only)" OFF )
# STARPU options # STARPU options
CMAKE_DEPENDENT_OPTION(OPENMP_SUPPORT_COMMUTE "Set to ON to let tasks commute (KSTAR/StarPU compiler only)" OFF CMAKE_DEPENDENT_OPTION(OPENMP_SUPPORT_COMMUTE "Set to ON to let tasks commute (KSTAR/StarPU compiler only)" OFF
......
...@@ -211,7 +211,7 @@ int main(int argc, char* argv[]) ...@@ -211,7 +211,7 @@ int main(int argc, char* argv[])
// ----------------------------------------------------- // -----------------------------------------------------
std::vector<MortonIndex> mortonLeafDistribution(2*app.global().processCount()); std::vector<MortonIndex> mortonLeafDistribution(2*app.global().processCount());
FAbstractAlgorithm * algorithm = nullptr; FAbstractAlgorithm * algorithm = nullptr;
FAlgorithmTimers * timer = nullptr; //FAlgorithmTimers * timer = nullptr;
{ // ----------------------------------------------------- { // -----------------------------------------------------
std::cout << "\n"<<interpolationType<<" FMM Proc (ORDER="<< ORDER << ") ... " << std::endl; std::cout << "\n"<<interpolationType<<" FMM Proc (ORDER="<< ORDER << ") ... " << std::endl;
...@@ -233,11 +233,11 @@ int main(int argc, char* argv[]) ...@@ -233,11 +233,11 @@ int main(int argc, char* argv[])
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
if(! periodicCondition) {// Non periodic case if(! periodicCondition) {// Non periodic case
algorithm = &algoNoPer ; algorithm = &algoNoPer ;
timer = &algoNoPer ; //timer = &algoNoPer ;
} }
else { // Periodic case else { // Periodic case
algorithm = &algoPer ; algorithm = &algoPer ;
timer = &algoPer ; //timer = &algoPer ;
} }
// //
// FMM exectution FFmmFarField // FMM exectution FFmmFarField
......
...@@ -1893,11 +1893,11 @@ protected: ...@@ -1893,11 +1893,11 @@ protected:
if( !offsets[idxNeig].equals(0,0,0) ){ if( !offsets[idxNeig].equals(0,0,0) ){
// Put periodic neighbors into other array // Put periodic neighbors into other array
FReal*const positionsX = periodicNeighbors[idxNeig]->getPositions()[0]; FReal*const positionsX = neighbors[idxNeig]->getPositions()[0];
FReal*const positionsY = periodicNeighbors[idxNeig]->getPositions()[1]; FReal*const positionsY = neighbors[idxNeig]->getPositions()[1];
FReal*const positionsZ = periodicNeighbors[idxNeig]->getPositions()[2]; FReal*const positionsZ = neighbors[idxNeig]->getPositions()[2];
for(FSize idxPart = 0; idxPart < periodicNeighbors[idxNeig]->getNbParticles() ; ++idxPart){ for(FSize idxPart = 0; idxPart < neighbors[idxNeig]->getNbParticles() ; ++idxPart){
positionsX[idxPart] += boxWidth * FReal(offsets[idxNeig].getX()); positionsX[idxPart] += boxWidth * FReal(offsets[idxNeig].getX());
positionsY[idxPart] += boxWidth * FReal(offsets[idxNeig].getY()); positionsY[idxPart] += boxWidth * FReal(offsets[idxNeig].getY());
positionsZ[idxPart] += boxWidth * FReal(offsets[idxNeig].getZ()); positionsZ[idxPart] += boxWidth * FReal(offsets[idxNeig].getZ());
......
/*
* genarateDistributions.cpp
*
* Created on: 23 mars 2014
* Author: Olivier Coulaud
*/
// Keep in private GIT
//
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
//
#include "Utils/FGlobal.hpp"
#include "Utils/FPoint.hpp"
#include "Files/FFmaGenericLoader.hpp"
#include "Utils/FParameters.hpp"
#include "Utils/FCompareResults.hpp"
#include "Utils/FParameterNames.hpp"
//
/// \file compare2files.cpp
//!
//! \brief compare2files: Gives the error between
//!
//! Driver to transform a FMA format and/or to build a visualization file<br>
//! For a description of the FMA format see FFmaGenericLoader<br>
//! <b> General arguments:</b>
//! \param -help (-h) to see the parameters available in this driver
//! \param -fmmfile1 name1: first file name to compare (with extension .fma (ascii) or bfma (binary)
//! \param -fmmfile2 name2: second file name to compare (with extension .fma (ascii) or bfma (binary)
//! \param -ewaldfile2 name2 if name2 contains the result done by the ewald method for 1/r kernel.
//!
//! Error code (return of the main)
//! -1 Number of points is different in the two files.
//!
//! \b examples
//!
//!
//! compare2files -file1 unitCubeXYZQ100.fma -file2 unitCubeXYZQ100
int main(int argc, char ** argv){
// const FParameterNames LocalParameterEwald{
// {"-ewaldfile2"},
// "-ewaldfile2 name2 if name2 contains the result done by the ewald method for 1/r kernel"
// };
FHelpDescribeAndExit(argc, argv,
"Driver to change the format of the input file.",
FParameterDefinitions::InputFileOne, FParameterDefinitions::InputFileTwow,
/*LocalParameterEwald*/);
const std::string filename1(FParameters::getStr(argc,argv,FParameterDefinitions::InputFileOne.options, "data.fma"));
const std::string filename2(FParameters::getStr(argc,argv,FParameterDefinitions::InputFileTwow.options, "data.fma"));
typedef double FReal;
FFmaGenericLoader<FReal> loader1(filename1);
FFmaGenericLoader<FReal> loader2(filename2);
//
// Allocation
//
FSize nbParticles = loader1.getNumberOfParticles();
const unsigned int nbData = loader1.getNbRecordPerline() ;
if(nbParticles != loader2.getNumberOfParticles()){
std::cerr << "Number of points is different in the two files."<<std::endl ;
return -1 ;
}
if( (nbData != 8) && (loader2.getNbRecordPerline()) ){
std::cerr << "Wrong files only " << std::min(loader2.getNbRecordPerline(),nbData)<< " to read."<<std::endl ;
return -2 ;
}
FmaRWParticle<FReal,8,8>* const particles1 = new FmaRWParticle<FReal,8,8>[nbParticles];
FmaRWParticle<FReal,8,8>* const particles2 = new FmaRWParticle<FReal,8,8>[nbParticles];
//
loader1.fillParticle(particles1,nbParticles);
loader2.fillParticle(particles2,nbParticles);
const FSize error = compareTwoArrays<FReal, FmaRWParticle<FReal,8,8>* >("TAG", nbParticles, particles1, particles2);
//
delete[] particles1 ;
delete[] particles2 ;
//
return int(error);
}
...@@ -83,7 +83,7 @@ using FmmType = FFmmAlgorithm<OctreeType,CellType,ContainerType,KernelType,Leaf ...@@ -83,7 +83,7 @@ using FmmType = FFmmAlgorithm<OctreeType,CellType,ContainerType,KernelType,Leaf
// Simply create particles and try the kernels // Simply create particles and try the kernels
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
const FParameterNames LocalOptionAlgo= { {"-algo"} , " Algorithm to run (task, newtask, sectiontask)\n"}; const FParameterNames LocalOptionAlgo= { {"-algo"} , " Algorithm to run (task, newtask, sectiontask, omp4)\n"};
const FParameterNames LocalOptionCmp = { const FParameterNames LocalOptionCmp = {
{"-cmp"} , "Use to check the result with the exact solution given in the input file\n" }; {"-cmp"} , "Use to check the result with the exact solution given in the input file\n" };
FHelpDescribeAndExit( FHelpDescribeAndExit(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment