...
 
Commits (1449)
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
###### Other
AUTHORS
COPYING
INSTALL
NEWS
README
**/vtk/Makefile
**/src/Makefile
./Makefile
Makefile.in
config.status
configure
numerics
**/.deps
**/src/config
aclocal.m4
**/autom4te.cache
example.mk
src/pdata
vtk/cart_dec
vtk/dom_box
vtk/metis_dec
.autotools
.cproject
.project
.settings
ar-lib
compile
config.guess
config.sub
depcomp
install-sh
missing
install_dir
**/*.vtk
!**/test_data/*.vtk
*.csv
[submodule "openfpm_vcluster"]
path = openfpm_vcluster
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_vcluster.git
[submodule "openfpm_devices"]
path = openfpm_devices
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_devices.git
[submodule "openfpm_io"]
path = openfpm_io
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_io.git
[submodule "openfpm_data"]
path = openfpm_data
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_data.git
[submodule "openfpm_numerics"]
path = openfpm_numerics
url = ssh://git@git.mpi-cbg.de/openfpm/openfpm_numerics.git
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# Change Log
All notable changes to this project will be documented in this file.
## [1.1.0] February 2018
### Added
- Interface for Multi-vector dynamic load balancing
- Increaded performance for grid ghost get
- Introduced forms to increase the performance of the grid iterator in case of stencil code (see example 5_GrayScott)
- EMatrix wrapped eigen matrices compatibles with vector_dist_id
- General tuning for high dimension vector_dist_id (up to 50 dimensions) + PS_CMA_ES (Particle-Swarm Covariant Matrix Adaptation Evolution Strategy) example in Numerics
- Added Discrete element Method example (8_DEM)
- Added serial_to_parallel example VCluster (2_serial_to_parallel). The example it show how to port a serial example into openfpm gradually swtiching from
a serial section to a parallel section
- Introduced map(LOCAL) for fast communication in case we have small movement
### Fixed
- Installation/detection of PETSC
- CRITICAL-BUG scalar product in combination with vector product is broken (it return 0)
- Fixing 2D IO in binary for vector
- Fixing 1D grid writer in ASCII mode
- Fixing Intel compilation of Linear algebra
## [1.0.0] 13 September 2017 (Codename: Vortex)
### Added
- Introduced getDomainIterator for Cell-list
- New dynamic load balancing scheme to 7_SPH_opt (see Vector/7_SPH_opt)
- Increased performance of 7_SPH_opt
- Vortex in Cell example Numerics/Vortex_in_cell
- Interpolation functions (see Numerics/vortex_in_cell example)
- Gray-scott 3D example with stencil iterator optimization (see Grid/gray_scott_3d example)
- HDF5 Check point restart for vector_dist particles (see Vector/1_HDF5_save_and_load)
- Raw reader for grid (see ...)
- Added setPropNames to give names to properties (Grid and Vector see Vector/0_simple)
- Ghost put on grid (see Numerics/Vortex_in_Cell example)
- Stencil iterators for faster stencil codes see (Test3D_stencil function in Units tests src/Grid/Iterators/grid_dist_id_iterators_unit_tests.hpp)
- Algebraic multigrid solvers interface for linear systems (see Vortex in Cell example)
- Added setPropNames in vector_dist see Vector/0_simple
- Support for Windows with CYGWIN
### Fixed
- Bug fixes in installation of PETSC
- 2 Bugs in 7_SPH_opt and 7_SPH_opt error in Kernel and update for boundary particles
- Bug in VTK writer binary in case of vectors
- Bug in VTK writer binary: long int are not supported removing output
- Bug in FDScheme in the constructor with stencil bigger than one
- Bug Fixed Memory leak in petsc solver
- Bug Performance bug in the grid iterator
### Changed
- CAREFULL: write("output",frame) now has changed to write_frame("output",frame)
write() with two arguments has a different meanings write("output",options)
- getCellList and getCellListSym now return respectively
CellList_gen<dim, St, Process_keys_lin, Mem_fast, shift<dim, St>>
CellList<dim, St, Mem_fast, shift<dim, St>>
- getIterator in CellList changed getCellIterator
- Grid iterator types has changes (one additional template parameter)
- FDScheme the constructor now has one parameter less (Parameter number 4 has been removed) (see Stokes_Flow examples in Numerics)
- MPI,PETSC,SUPERLU,Trilinos,MUMPS,SuiteSparse has been upgraded
## [0.8.0] 28 February 2017
### Added
- Dynamic Load balancing
- Added SPH Dam break with Dynamic load balancing (7_sph_dlb)(7_sph_dlb_opt)
- Added automatic procedure for update ./install --update and --upgrade
(From 0.8.0 version will have a long term support for bug fixing. End-of-life of 0.8.0 is not decided yet, it should be still supported for bug fixing after release 0.9.0)
- Added video lessons for Dynamic load balancing (openfpm.mpi-cbg.de)
(website officially open)
- Added for debugging the options PRINT_STACKTRACE, CHECKFOR_POSNAN, CHECKFOR_POSINF, CHECKFOR_PROPINF, CHECKFOR_PROPNAN, SE_CLASS3.
- Added the possibility to write binary VTK files using VTK_WRITER and FORMAT_BINARY see 0_simple_vector for an example
### Fixed
- Installation of PETSC with MUMPS
### Changed
- BOOST updated to 1.63
- Eigen updated to 3.3.7
## [0.7.1] 28 January 2017
### Fixed
- Multiphase verlet single to all case generate overflow
## [0.7.0] 15 December 2016
### Added
- Symmetric cell-list/verlet list Crossing scheme
- VCluster examples
- Cell-list crossing scheme
### Fixed
- CRITICAL BUG: OpenFPM has a bug handling decomposition when a processor has a disconnected domains
(By experience this case has been seen on big number of processors).
- Found and fixed a memory leak when using complex properties
### Changed
- The file VCluster has been mooved #include "VCluster.hpp" must be changed to #include "VCluster/VCluster.hpp"
BECAUSE OF THIS, PLEASE CLEAN THE OPENFPM FOLDER OTHERWISE YOU WILL END TO HAVE 2 VCLUSTER.HPP
## [0.6.0] - 5 November 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)
- 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
### Added
- map communicate particles across processors mooving the information of all the particle map_list give the possibility to give a list of property to move from one to another processor
- Numeric: Finite Differences discretization with matrix contruction and parallel solvers (See example ... )
- vector_dist now support complex object like Point VectorS Box ... , with no limitation
and more generic object like std::vector ... (WARNING TEMPORARY LIMITATION: Communication is not supported property must be excluded from communication using map_list and ghost_get)
- vector_dist support expressions (See example ...)
- No limit to ghost extension (they can be arbitrary extended)
- Multi-phase CellList
- Hilber curve data and computation reordering for cache firndliness
### Fixed
- Removed small crash for small grid and big number of processors
### Changed
### Known Bugs
- On gcc 6.1 the project does not compile
- Distributed grids on 1D do not work
## [0.4.0] - 26-05-2016
### Added
- Grid with periodic boundary conditions
- VTK Writer for distributed vector, now is the default writer
- Installation of linear algebra packages
- More user friendly installation (No environment variables to add in your bashrc, installation report less verbose)
### Fixed
- GPU compilation
- PARMetis automated installation
- Critical Bug in getCellList, it was producing Celllist with smaller spacing
### Changed
## [0.3.0] - 16-04-2016
### Added
- Molacular Dynamic example
- addUpdateCell list for more optimal update of the cell list instead of recreate the CellList
### Fixed
- Nothing to report
### Changed
- Eliminated global_v_cluster, init_global_v_cluster, delete_global_v_cluster,
substituted by
create_vcluster, openfpm_init, openfpm_finalize
- CartDecomposition parameter for the distributed structures is now optional
- template getPos<0>(), substituted by getPos()
## [0.2.1] - 01-04-2016
### Changed
- GoogleChart name function changed: AddPointGraph to AddLinesGraph and AddColumsGraph to AddHistGraph
## [0.2.0] - 2016-03-25
### Added
- Added Load Balancing and Dynamic Load Balancing on Beta
- PSE 1D example with multiple precision
- Plot example for GoogleChart plotting
- Distributed data structure now support 128bit floating point precision (on Beta)
### Fixed
- Detection 32 bit system and report as an error
- Bug in rounding off for periodic boundary condition
### Changed
- Nothing to report
## [0.1.0] - 2016-02-05
### Added
- PSE 1D example
- Cell list example
- Verlet list example
- Kickstart for OpenFPM_numeric
- Automated dependency installation for SUITESPRASE EIGEN OPENBLAS(LAPACK)
### Fixed
- CRITICAL BUG in periodic bondary condition
- BOOST auto updated to 1.60
- Compilation with multiple .cpp files
### Changed
- Nothing to report
Common Mistake
1) Overshoot aggregate
2) Forget .template
3) Missing const
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.8.6 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title=""/>
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="modules" visible="yes" title="" intro=""/>
<tab type="namespaces" visible="yes" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="yes" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="examples" visible="yes" title="" intro=""/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<detaileddescription title=""/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<classes visible="yes" title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<classes visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>
* Try to install OpenFPM I get "cannot recover from this error"
It mean that the configuration phase has failed. Something has failed, what has failed should be reported some line before. We are trying to track the causes to understand if it is possible to produce a better error message but it seem that most of the time this error has been seen on OSX having a very old X-Code.
* I get a huge number of error
It can happen in compilation phase. The installation system in general should detect potential known incompatibility and try in the best case to silently workaround the problem, in the middle case provide an automatic solution and ask to the user the permission to perform it, in the worst case report to the user for manual fixation. Unfortunately the number of systems and possible configuration/missconfiguration make this task impossible to control.
* The program generate the file openfpm_vars in my "holy" home folder. why ?
If you show the hidden folder in your "holy" home, you will see how many program actually "violate" your home folder. They do costantly Creating/Reading/Writing such folder every time you open them, they are just hiding. OpenFPM create such text file only one time in installation and report it, mooving such file somewhere else after installation will bring the home folder to be "virgin" from OpenFPM forever.
* The examples does not scale on my 4 - x core PC.
Not all example are made for scalability. In particular example that do not have computation inside like the 0_simple_ ... . If instead is an example that has computation inside, when you are benchmarking in particular using all the cores of your PC, close all applications, like Browser, IDE, pdf reader, ..., unusefull shell running command (anything that could consume resources, consider that the Desktop environment consume resources, in particular if you have OpenGL/3D effects, disable them. The best would be close the X-server/Desktop environment). Check also that no program are running in background using resources, use top/Task manager to check this. Consider also that 99.9% of Laptop/Desktop today can adjust their frequency dynamically. In particular it is common that the system increase the CPU frequency at higher level when only one-core is used compared to N-core, and this can significantly affect scalability.
#!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
node ('windows10')
{
deleteDir()
checkout scm
stage ('build_win10')
{
sh "./build_sec_OS.sh $WORKSPACE $NODE_NAME pdata"
}
// stage ('run_taurus')
// {
// ./run.sh $WORKSPACE $NODE_NAME 24 1 24"
// }
}
#!groovy
node ('taurus')
{
deleteDir()
checkout scm
stage ('build_taurus')
{
sh "./build_sec_compilers.sh $WORKSPACE $NODE_NAME pdata"
}
// stage ('run_taurus')
// {
// ./run.sh $WORKSPACE $NODE_NAME 24 1 24"
// }
}
#!groovy
parallel (
"nyu" : {node ('nyu')
{
deleteDir()
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
stage ('build_nyu')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata 0 $BRANCH_NAME }"
}
stage ('run_nyu')
{
parallel (
"1" : {sh "./run.sh $WORKSPACE $NODE_NAME 1 0 0 $BRANCH_NAME"},
"2" : {sh "./run.sh $WORKSPACE $NODE_NAME 2 0 0 $BRANCH_NAME"},
"3" : {sh "./run.sh $WORKSPACE $NODE_NAME 3 0 0 $BRANCH_NAME"})
sh "./run.sh $WORKSPACE $NODE_NAME 5 0 0 $BRANCH_NAME"
sh "./success.sh 2 nyu opefpm_pdata"
}
}
},
"sb15" : {node ('sbalzarini-mac-15')
{
deleteDir()
env.PATH = "/usr/local/bin:${env.PATH}"
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
stage ('build_sb15')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata 0 $BRANCH_NAME"
}
stage ('run_sb15')
{
parallel (
"1" : {sh "./run.sh $WORKSPACE $NODE_NAME 1 0 0 $BRANCH_NAME"},
"2" : {sh "./run.sh $WORKSPACE $NODE_NAME 2 0 0 $BRANCH_NAME"},
"3" : {sh "./run.sh $WORKSPACE $NODE_NAME 3 0 0 $BRANCH_NAME"}
)
sh "./run.sh $WORKSPACE $NODE_NAME 4 0 0 $BRANCH_NAME"
sh "./run.sh $WORKSPACE $NODE_NAME 5 0 0 $BRANCH_NAME"
sh "./run.sh $WORKSPACE $NODE_NAME 6 0 0 $BRANCH_NAME"
sh "./run.sh $WORKSPACE $NODE_NAME 7 0 0 $BRANCH_NAME"
sh "./success.sh 2 sbalzarini-mac-15 opefpm_pdata"
}
}
},
"gin" : {node ('gin')
{
deleteDir()
env.PATH = "/usr/local/bin:${env.PATH}"
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
stage ('build_gin')
{
sh "./build.sh $WORKSPACE $NODE_NAME pdata 0 $BRANCH_NAME"
}
stage ('run_gin')
{
parallel (
"p1" : {sh "./run.sh $WORKSPACE $NODE_NAME 1 0 0 $BRANCH_NAME"},
"p2" : {sh "./run.sh $WORKSPACE $NODE_NAME 2 0 0 $BRANCH_NAME"},
"p3" : {sh "./run.sh $WORKSPACE $NODE_NAME 3 0 0 $BRANCH_NAME"},
"p4" : {sh "./run.sh $WORKSPACE $NODE_NAME 5 0 0 $BRANCH_NAME"}
)
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 "export PATH=\"/usr/local/binutils/bin/:$PATH\" && source $HOME/openfpm_vars_master && 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_master && cd example && make"
}
}
}
)
#!groovy
parallel (
"gin" : {node ('gin')
{
deleteDir()
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
stage ('build_gin')
{
sh "./build.sh $WORKSPACE $NODE_NAME numerics 0"
}
stage ('run_gin')
{
parallel (
"1" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 1 0 0 numerics"},
"2" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 2 0 0 numerics"},
"3" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 3 0 0 numerics"},
"4" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 4 0 0 numerics"}
)
sh "./success.sh 2 gin openfpm_numerics"
}
}
},
"sb15" : {node ('sbalzarini-mac-15')
{
deleteDir()
env.PATH = "/usr/local/bin:${env.PATH}"
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
stage ('build_sb15')
{
sh "./build.sh $WORKSPACE $NODE_NAME numerics 0"
}
stage ('run_sb15')
{
parallel (
"1" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 1 0 0 numerics"},
"2" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 2 0 0 numerics"},
"3" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 3 0 0 numerics"},
"4" : {sh "cd openfpm_numerics && ./run.sh $WORKSPACE $NODE_NAME 4 0 0 numerics"}
)
sh "./success.sh 2 sbalzarini-mac-15 openfpm_numerics"
}
}
}
)
SUBDIRS = src images openfpm_data openfpm_io openfpm_devices openfpm_vcluster openfpm_numerics
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
test_data:
cd openfpm_data/src && make test
test_devices:
cd openfpm_devices/src && make test
test_vcluster:
cd openfpm_vcluster/src && make test
test_io:
cd openfpm_io/src && make test
test_numerics:
cd openfpm_numerics/src && make test
test: test_devices test_data test_vcluster test_pdata test_io test_numerics
.PHONY: test_pdata test_data test_devices test_vcluster test_io test_numerics
Openfpm is a library for computer simulation, but with our documentation it is also a valid resource
to drive people to do simulation.
There are at the moment 3 way to try openfpm.
1) Without installation: We provide ready to use Docker image compatible with codenvy and IDE on browser. More ...
2) We provide Docker image, Ubuntu Virtual Machine and OSX Virtual Machine with OpenFPM preinstalled. More ...
3) Installation from source. More ...
This diff is collapsed.
#! /bin/bash
# Make a directory in /tmp/OpenFPM_pdata
echo "Directory: $1"
echo "Machine: $2"
echo "Branch name: $5"
if [ x"$5" == x"" ]; then
branch=$(git ls-remote --heads origin | grep $(git rev-parse HEAD) | cut -d / -f 3)
else
branch=$5
fi
#### If you have a dep_dir file change the branch name to the dep_dir
dep_dir=$(cat dep_dir)
if [ x"$dep_dir" != x"" ]; then
set -- "${@:1:4}" "$dep_dir"
fi
mkdir src/config
mkdir openfpm_numerics/src/config
if [ "$2" == "gin" ]
then
echo "Compiling on gin\n"
source "$HOME/.bashrc"
## Check if MPI folder exist if not copy MPICH
if [ ! -d $HOME/$branch/MPI ]; then
echo "COPY MPICH"
cp -R $HOME/MPI $HOME/$branch/MPI
echo 2 > $HOME/$branch/MPI/version
fi
### Activate MPI and binutils ###
export PATH="$PATH:$HOME/$branch/MPI/bin"
export PATH="/usr/local/binutils/bin/:$PATH"
mkdir $HOME/$branch
if [ x"$4" == x"full" ]; then
CC=gcc-4.9.2 CXX=g++-4.9.2 FC=gfortran-4.9.2 F77=gfortran-4.9.2 ./install -i $HOME/$branch -s -c "--prefix=/home/jenkins/openfpm_install"
echo "Moving environment variable"
mv $HOME/openfpm_vars $HOME/openfpm_vars_$branch
source $HOME/openfpm_vars_$branch
elif [ x"$3" == x"numerics" ]; then
branch=$(git ls-remote --heads origin | grep $(git rev-parse HEAD) | cut -d / -f 3)
CC=gcc-4.9.2 CXX=g++-4.9.2 FC=gfortran-4.9.2 F77=gfortran-4.9.2 ./install -i $HOME/$branch -m -s -c "--prefix=/home/jenkins/openfpm_install"
echo "Moving environment variable"
mv $HOME/openfpm_vars $HOME/openfpm_vars_$branch
source $HOME/openfpm_vars_$branch
make $3
else
CC=gcc-4.9.2 CXX=g++-4.9.2 FC=gfortran-4.9.2 F77=gfortran-4.9.2 ./install -i $HOME/$branch -m -s -c "--prefix=/home/jenkins/openfpm_install --no-recursion"
echo "Moving environment variables"
mv $HOME/openfpm_vars $HOME/openfpm_vars_$branch
source $HOME/openfpm_vars_$branch
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
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 gcc/7.1.0
module load openmpi/3.0.0-gnu7.1
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/incard/PARMETIS/lib:/home/incard/METIS/lib:/home/incard/HDF5/lib"
mkdir /scratch/p_ppm/$branch
./install -m -i "/scratch/p_ppm/$branch" -s -c"CXX=mpic++ --no-recursion"
mv $HOME/openfpm_vars $HOME/openfpm_vars_$branch
source $HOME/openfpm_vars_$branch
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
else
echo "Compiling general"
source ~/.bashrc
installation_dir=""
if [ x"$2" == x"sbalzarini-mac-15" ]; then
installation_dir="--prefix=/Users/jenkins/openfpm_install"
else
installation_dir="--prefix=/home/jenkins/openfpm_install"
fi
mkdir $HOME/$branch
if [ x"$4" == x"full" ]; then
./install -i $HOME/$branch -s -c "$installation_dir"
mv $HOME/openfpm_vars $HOME/openfpm_vars_$branch
source $HOME/openfpm_vars_$branch
elif [ x"$3" == x"numerics" ]; then
branch=$(git ls-remote --heads origin | grep $(git rev-parse HEAD) | cut -d / -f 3)
./install -i $HOME/$branch -m -s -c "$installation_dir"
mv $HOME/openfpm_vars $HOME/openfpm_vars_$branch
source $HOME/openfpm_vars_$branch
make $3
else
./install -i $HOME/$branch -m -s -c "$installation_dir --no-recursion"
mv $HOME/openfpm_vars $HOME/openfpm_vars_$branch
source $HOME/openfpm_vars_$branch
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
This diff is collapsed.
#! /bin/bash
# Make a directory in /tmp/OpenFPM_pdata
echo "Directory: $1"
echo "Machine: $2"
mkdir src/config
if [ "$2" == "windows10" ]; then
echo