Skip to content
Snippets Groups Projects
Commit 2747cf08 authored by Yaroslav's avatar Yaroslav
Browse files

Latest version

parents 20812c9d 5f826f6a
No related branches found
No related tags found
No related merge requests found
Showing
with 478 additions and 40 deletions
[submodule "openfpm_vcluster"]
path = openfpm_vcluster
url = ssh://git@ppmcore.mpi-cbg.de/incardon/openfpm_vcluster.git
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_vcluster.git
[submodule "openfpm_devices"]
path = openfpm_devices
url = ssh://git@ppmcore.mpi-cbg.de/incardon/openfpm_devices.git
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_devices.git
[submodule "openfpm_io"]
path = openfpm_io
url = ssh://git@ppmcore.mpi-cbg.de/incardon/openfpm_io.git
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_io.git
[submodule "openfpm_data"]
path = openfpm_data
url = ssh://git@ppmcore.mpi-cbg.de/incardon/openfpm_data.git
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_data.git
[submodule "openfpm_numerics"]
path = openfpm_numerics
url = ssh://git@ppmcore.mpi-cbg.de/incardon/openfpm_numerics.git
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_numerics.git
# Change Log
All notable changes to this project will be documented in this file.
## [0.5.1] - Mid september
## [0.6.0] - End October 2016
### Added
- Symmetric cell-list/verlet list
- Multi-phase cell-list and Multi-phase cell-list
- Added ghost_get that keep properties
- Examples: 1_ghost_get_put it show how to use ghost_get and put with the new options
4_multiphase_celllist_verlet completely rewritten for new Cell-list and multiphase verlet
5_molecular_dynamic use case of symmetric cell-list and verlet list with ghost put
6_complex_usage It show how the flexibility of openfpm can be used to debug your program
- Plotting system can export graph in svg (to be included in the paper)
### Fixed
- Option NO_POSITION was untested
- Regression: Examples code compilation was broken on OSX (Affect only 0.5.1)
(Internal: Added OSX examples compilarion/running test in the release pipeline)
- gray_scott example code (variable not initialized)
### Changes
## [0.5.1] - 27 September 2016
### Added
- ghost_put support for particles
- Full-Support for complex property on vector-dist (Serialization) + example
- Full-Support for complex property on vector_dist (Serialization)
- Added examples for serialization of complex properties 4_Vector
- improved speed of the iterators
### Fixed
- Installation PETSC installation fail in case of preinstalled MPI
- Miss-compilation of SUITESPARSE on gcc-6.2
- vector_dist with negative domain (Now supported)
- Grid 1D has been fixed
- One constructor of Box had arguments inverted.
PLEASE CAREFULL ON THIS BUG
float xmin[] = {0.0,0.0};
float xmax[] = {1.0,1.0};
// Box<2,float> box(xmax,xmin) BUG IT WAS xmax,xmin
Box<2,float> box(xmin,xmax) <--- NOW IT IS xmin,xmax
Box<2,float> box({0.0,0.0},{1.0,1.0}) <---- This constructor is not affected by the BUG
### Changed
- On gcc the -fext-numeric-literals compilation flag is now mandatory
## [0.5.0] - 15 August 2016
......@@ -110,29 +143,26 @@ All notable changes to this project will be documented in this file.
# Planned in the next Releases
## [0.9.0] - Mid March
- Algebraic Multigrid solver
- Parallel VTK, improved visualization
## [0.8.0] - Mid January 2017
## [0.7.0] - December 2016
### Added
- Dynamic Load Balancies examples and interface fixation
- Check Point restart
- More example and documentations
### Proposal
- Algebraic Multigrid solver
- Parallel VTK, improved visualization
## [0.6.0] - Middle of October
## [0.7.0] - December of October
### Added
- Asynchronous communication
- Support for Microsoft Windows with Cygwin
- Support for Docker/codenvy
- Defining a domain an invalid domain like Box<2,float> box({0.0,1.0},{0.0,1.0}) (the correct is {0.0,0.0},{1.0,1.0} )
produce dead-lock or unclear error message in SE_CLASS1, not hint is given, added usefull error message
- Symmetric Cell list and Verlet (15 days)
- Semantic communication (??)
- Improved Finite difference interface (15 days)
## [0.6.0] - Beginning of September
- Complex properties and serialization interface (15 days)
#!groovy
node ('taurus')
{
deleteDir()
checkout scm
stage ('build_taurus')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata"
}
stage ('run_taurus')
{
parallel (
"24" : {sh "./run.sh $WORKSPACE $NODE_NAME 24 1 24"},
"48" : {sh "./run.sh $WORKSPACE $NODE_NAME 48 2 24"},
"96" : {sh "./run.sh $WORKSPACE $NODE_NAME 96 4 24"},
"192" : {sh "./run.sh $WORKSPACE $NODE_NAME 192 8 24"},
"240" : {sh "./run.sh $WORKSPACE $NODE_NAME 240 10 24"}
)
}
}
#!groovy
node ('gin')
{
deleteDir()
checkout scm
stage ('build_gin')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata"
}
stage ('run_gin')
{
sh "./run.sh $WORKSPACE $NODE_NAME 5"
sh "./run.sh $WORKSPACE $NODE_NAME 6"
sh "./run.sh $WORKSPACE $NODE_NAME 7"
sh "./run.sh $WORKSPACE $NODE_NAME 8"
sh "./run.sh $WORKSPACE $NODE_NAME 9"
sh "./run.sh $WORKSPACE $NODE_NAME 10"
sh "./run.sh $WORKSPACE $NODE_NAME 11"
}
}
#!groovy
parallel (
"nyu" : {node ('nyu')
{
deleteDir()
checkout scm
stage ('build_nyu')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata"
}
stage ('run_nyu')
{
parallel (
"1" : {sh "./run.sh $WORKSPACE $NODE_NAME 1"},
"2" : {sh "./run.sh $WORKSPACE $NODE_NAME 2"},
"3" : {sh "./run.sh $WORKSPACE $NODE_NAME 3"})
sh "./run.sh $WORKSPACE $NODE_NAME 5"
sh "./success.sh 2 nyu opefpm_pdata"
}
}
},
"sb15" : {node ('sbalzarini-mac-15')
{
deleteDir()
env.PATH = "/usr/local/bin:${env.PATH}"
checkout scm
stage ('build_sb15')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata"
}
stage ('run_sb15')
{
parallel (
"1" : {sh "./run.sh $WORKSPACE $NODE_NAME 1"},
"2" : {sh "./run.sh $WORKSPACE $NODE_NAME 2"},
"3" : {sh "./run.sh $WORKSPACE $NODE_NAME 3"}
)
sh "./run.sh $WORKSPACE $NODE_NAME 4"
sh "./run.sh $WORKSPACE $NODE_NAME 5"
sh "./run.sh $WORKSPACE $NODE_NAME 6"
sh "./run.sh $WORKSPACE $NODE_NAME 7"
sh "./success.sh 2 sbalzarini-mac-15 opefpm_pdata"
}
}
},
"gin" : {node ('gin')
{
deleteDir()
env.PATH = "/usr/local/bin:${env.PATH}"
checkout scm
stage ('build_gin')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata"
}
stage ('run_gin')
{
parallel (
"p1" : {sh "./run.sh $WORKSPACE $NODE_NAME 1"},
"p2" : {sh "./run.sh $WORKSPACE $NODE_NAME 2"},
"p3" : {sh "./run.sh $WORKSPACE $NODE_NAME 3"},
"p4" : {sh "./run.sh $WORKSPACE $NODE_NAME 5"}
)
sh "./success.sh 2 gin opefpm_pdata"
}
}
}
)
#!groovy
parallel (
"gin" : {node ('gin')
{
deleteDir()
checkout scm
stage ('build_gin')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata full && make install"
}
stage ('run_example_gin')
{
sh "source $HOME/openfpm_vars && cd example && make"
}
}},
"sb15" : {node ('sbalzarini-mac-15')
{
deleteDir()
checkout scm
env.PATH = "/usr/local/bin:${env.PATH}"
stage ('build_sb15')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata full && make install"
}
stage ('run_example_sb15')
{
sh "source $HOME/openfpm_vars && cd example && make"
}
}
}
)
#!groovy
parallel (
"gin" : {node ('gin')
{
deleteDir()
checkout scm
stage ('build_gin')
{
sh "./build.sh $WORKSPACE $NODE_NAME numerics"
}
stage ('run_gin')
{
parallel (
"1" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 1"},
"2" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 2"},
"3" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 3"},
"4" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 4"}
)
sh "./success.sh 2 gin openfpm_numerics"
}
}
},
"sb15" : {node ('sbalzarini-mac-15')
{
deleteDir()
env.PATH = "/usr/local/bin:${env.PATH}"
checkout scm
stage ('build_sb15')
{
sh "./build.sh $WORKSPACE $NODE_NAME numerics"
}
stage ('run_sb15')
{
parallel (
"1" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 1"},
"2" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 2"},
"3" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 3"},
"4" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 4"}
)
sh "./success.sh 2 sbalzarini-mac-15 openfpm_numerics"
}
}
}
)
......@@ -2,6 +2,27 @@ SUBDIRS = src images openfpm_data openfpm_io openfpm_devices openfpm_vcluster op
bin_PROGRAMS =
pdata:
cd src && make
data:
cd openfpm_data/src && make
devices:
cd openfpm_devices/src && make
vcluster:
cd openfpm_vcluster/src && make
io:
cd openfpm_io/src && make
numerics:
cd openfpm_numerics/src && make
test_pdata:
cd src && make test
......
build.sh 0 → 100755
#! /bin/bash
# Make a directory in /tmp/OpenFPM_pdata
echo "Directory: $1"
echo "Machine: $2"
mkdir src/config
git submodule init
if [ $? -ne 0 ]; then
echo -e "Configure\033[91;5;1m FAILED \033[0m"
exit 1
fi
git submodule update
if [ $? -ne 0 ]; then
echo -e "Configure\033[91;5;1m FAILED \033[0m"
exit 1
fi
mkdir openfpm_numerics/src/config
if [ "$2" == "gin" ]
then
echo "Compiling on gin\n"
source ~/.bashrc
module load gcc/4.9.2
if [ x"$4" == x"full" ]; then
./install -s -c "--prefix=/home/jenkins/openfpm_install"
elif [ x"$3" == x"numerics" ]; then
./install -m -s -c "--prefix=/home/jenkins/openfpm_install"
make $3
else
./install -m -s -c "--prefix=/home/jenkins/openfpm_install --no-recursion"
make $3
fi
if [ $? -ne 0 ]; then
curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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
exit 1 ;
fi
source $HOME/openfpm_vars
if [ $? -ne 0 ]; then
curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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
exit 1 ;
fi
elif [ "$2" == "wetcluster" ]
then
echo "Compiling on wetcluster"
## produce the module path
source ~/.bashrc
module load gcc/4.9.2
module load openmpi/1.8.1
module load boost/1.54.0
sh ./autogen.sh
./install -m -s -c "--with-boost=/sw/apps/boost/1.54.0/ CXX=mpic++ --no-recursion"
make $3
if [ $? -ne 0 ]; then
curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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
exit 1 ;
fi
elif [ "$2" == "taurus" ]
then
echo "Compiling on taurus"
source /etc/profile
echo "$PATH"
module load eigen/3.2.0
module load suitesparse/4.2.1-gnu-multimkl
module load boost/1.60.0
module load gcc/5.3.0
module load openmpi/1.10.2-gnu
module unload bullxmpi
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/incard/PARMETIS/lib:/home/incard/METIS/lib:/home/incard/HDF5/lib"
./install -m -i "/scratch/p_ppm/" -s -c"CXX=mpic++ --no-recursion"
make $3
source $HOME/openfpm_vars
if [ $? -ne 0 ]; then
curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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
exit 1 ;
fi
else
echo "Compiling general"
source ~/.bashrc
if [ x"$4" == x"full" ]; then
./install -s -c "--prefix=/Users/jenkins/openfpm_install"
elif [ x"$3" == x"numerics" ]; then
./install -m -s -c "--prefix=/home/jenkins/openfpm_install"
make $3
else
./install -m -s -c "--prefix=/Users/jenkins/openfpm_install --no-recursion"
make $3
fi
if [ $? -ne 0 ]; then
curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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
exit 1 ;
fi
fi
......@@ -213,12 +213,12 @@ then
export
which salloc
salloc --nodes=1 --ntasks-per-node=24 --time=00:10:00 --mem-per-cpu=1900 --partition=haswell bash -c "ulimit -s unlimited && mpirun -np 24 src/pdata --report_level=no"
salloc --nodes=1 --ntasks-per-node=24 --time=00:15:00 --mem-per-cpu=1900 --partition=haswell bash -c "ulimit -s unlimited && mpirun -np 24 src/pdata --report_level=no"
if [ $? -ne 0 ]; then
curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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
exit 1 ;
fi
salloc --nodes=2 --ntasks-per-node=24 --time=00:10:00 --mem-per-cpu=1900 --partition=haswell bash -c "ulimit -s unlimited && mpirun -np 48 src/pdata --report_level=no"
salloc --nodes=2 --ntasks-per-node=24 --time=00:15:00 --mem-per-cpu=1900 --partition=haswell bash -c "ulimit -s unlimited && mpirun -np 48 src/pdata --report_level=no"
if [ $? -ne 0 ]; then
curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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
exit 1 ;
......
......@@ -143,9 +143,21 @@ AX_LIB_PETSC()
## Check for quadmath
AC_CHECK_LIB(quadmath, sinq, [AC_DEFINE(HAVE_LIBQUADMATH,[],[Have quad math lib])
LIBQUADMATH=" -lquadmath "
], [])
have_quad_lib=no
have_quad_head=no
AC_CHECK_LIB(quadmath, sinq, [have_quad_lib=yes], [])
AC_CHECK_HEADER(quadmath.h,[have_quad_head=yes],[])
if [x"have_quad_math" == x"yes" $&& x"have_quad_math" == x"yes" ]; then
AC_DEFINE(HAVE_LIBQUADMATH,[],[Have quad math lib])
LIBQUADMATH=" -lquadmath "
fi
AC_SUBST(OPENMP_CFLAGS)
AC_SUBST(OPENMP_LDFLAGS)
echo "$OPENMP_CFLAGS" > openmp_flags
########
......@@ -167,6 +179,28 @@ if test x"$scancoverty" = x"yes"; then
fi
###### Checking for compiler flags -fext-numeric-literals
AC_LANG_PUSH([C++])
my_save_cflags="$CXXFLAGS"
CXXFLAGS=-fext-numeric-literals
AC_MSG_CHECKING([whether CXX supports -fext-numeric-literals])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
[AC_MSG_RESULT([yes])
AM_CXXFLAGS="-fext-numeric-literals"
echo "-fext-numeric-literals" > openfpm_flags
],
[
AC_MSG_RESULT([no])
echo "" > openfpm_flags
]
)
AC_LANG_POP([C++])
CXXFLAGS="$my_save_cflags"
AC_SUBST([AM_CXXFLAGS])
## Check for parMetis
IMMDX_LIB_PARMETIS([],[echo "Cannot detect parmetis, use the --with-parmetis option if it is not installed in the default location"
......
......@@ -15,7 +15,7 @@ grid: $(OBJ)
all: grid
run: all
source $$HOME/openfpm_vars; mpirun -np 2 ./grid
mpirun -np 2 ./grid
.PHONY: clean all run
......
......@@ -15,7 +15,7 @@ stencil: $(OBJ)
all: stencil
run: all
source $$HOME/openfpm_vars; mpirun -np 3 ./stencil
mpirun -np 3 ./stencil
.PHONY: clean all run
......
......@@ -15,7 +15,7 @@ periodic: $(OBJ)
all: periodic
run: all
source $$HOME/openfpm_vars; mpirun -np 4 ./periodic
mpirun -np 4 ./periodic
.PHONY: clean all run
......
......@@ -15,7 +15,7 @@ gray_scott: $(OBJ)
all: gray_scott
run: all
source $$HOME/openfpm_vars; mpirun -np 4 ./gray_scott
mpirun -np 4 ./gray_scott
.PHONY: clean all run
......
......@@ -261,7 +261,7 @@ int main(int argc, char* argv[])
//! \cond [time stepping] \endcond
// sync the ghost
size_t count;
size_t count = 0;
Old.template ghost_get<U,V>();
// because we assume that spacing[x] == spacing[y] we use formula 2
......
......@@ -15,7 +15,7 @@ pse_1d: $(OBJ)
all: pse_1d
run: all
source $$HOME/openfpm_vars; ./pse_1d
./pse_1d
.PHONY: clean all run
......
# This example does not work using clang
# Eliminate the comment to activate it
include ../../../example.mk
CC=mpic++
......@@ -7,17 +10,17 @@ LDIR =
OBJ_128 = main_float128.o
%.o: %.cpp
$(CC) -O3 -c -fext-numeric-literals --std=c++11 -o $@ $< $(INCLUDE_PATH)
$(CC) -O3 -c --std=c++11 -o $@ $< $(INCLUDE_PATH)
pse_1d_128: $(OBJ_128)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS_PATH) $(LIBS) -lquadmath
# pse_1d_128: $(OBJ_128)
# $(CC) -o $@ $^ $(CFLAGS) $(LIBS_PATH) $(LIBS) -lquadmath
all: pse_1d_128
#all: pse_1d_128
run: all
source $$HOME/openfpm_vars; ./pse_1d_128
run: #all
# source $$HOME/openfpm_vars;# ./pse_1d_128
.PHONY: clean all run
#.PHONY: clean all run
clean:
rm -f *.o *~ core pse_1d_128
......
......@@ -10,11 +10,16 @@
*
*/
#include "config/config.h"
#include "Vector/vector_dist.hpp"
#include "Decomposition/CartDecomposition.hpp"
#include "PSE/Kernels.hpp"
#include "data_type/aggregate.hpp"
#include <cmath>
// This example only work if there is HAVE_LIBQUADMATH
#ifdef HAVE_LIBQUADMATH
#include <boost/multiprecision/float128.hpp>
typedef boost::multiprecision::float128 float128;
......@@ -310,3 +315,11 @@ int main(int argc, char* argv[])
//
openfpm_finalize();
}
#else
int main(int argc, char* argv[])
{
}
#endif
......@@ -15,7 +15,7 @@ diff_1d: $(OBJ)
all: diff_1d
run: all
source $$HOME/openfpm_vars; mpirun -np 4 ./diff_1d
mpirun -np 4 ./diff_1d
.PHONY: clean all
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment