Skip to content

Commit 0c84f47

Browse files
committed
Update Readme and related documentation
This commit makes no significant changes to contents, but rewords a lot of the English, moves some bits around (including moving the installation guide into a separate file), and tidies up some of the formatting.
1 parent ae1dd2c commit 0c84f47

File tree

3 files changed

+95
-83
lines changed

3 files changed

+95
-83
lines changed

Readme.md

Lines changed: 36 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,80 @@
11

2-
32
![Ubuntu and MacOS CI](https://github.com/ukaea/parallel-preprocessor/workflows/ubuntu-macos/badge.svg)
43
![Fedora CI](https://github.com/ukaea/parallel-preprocessor/workflows/fedora-debian/badge.svg)
54

6-
**Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework**
5+
# Parallel-preprocessor (PPP)
6+
7+
A prototype parallel CAE geometry preprocessing framework
78

8-
by Qingfeng Xia
9-
Research Software Engineering Group of UKAEA
10-
License: LGPL v2.1
11-
Copyright UKAEA, 2019~2020
9+
by Qingfeng Xia, UKAEA
1210

11+
Copyright 2019-2020 UKAEA
1312

14-
[**Documentation pages (including this Readme)**](https://ukaea.github.io/parallel-preprocessor/site/doxygen-docs.html)
13+
License: LGPL v2.1
1514

15+
## Documentation
16+
17+
For more information, please see the
18+
[**documentation website**](https://ukaea.github.io/parallel-preprocessor/site/doxygen-docs.html) (which includes the contents of this Readme file).
1619

1720
## Feature overview
1821

19-
Currently, this software provides multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry **collision-detection, imprinting** on **large geometry assemblies (10k+ parts)** that is not possible on most existing CAD tools.
22+
This software provides multi-threaded geometry **collision detection and imprinting** via a command line interface. It has faster and more controllable performance on **large geometry assemblies (with 10k+ parts)** than is possible with most existing CAD tools.
2023

21-
This software aims to be a framework for more CAE/CAE **preprocessing operatons** for large geometry assemblies upto 1 million parts, such as fusion reactor, aeroplane, aero-engine as a whole, using high performance computation infrastructure like Exa-scale super-computer. Eventually, automatical and intelligent engineering design will be enabled through this framework and other software tools. see more [Technical Overview](./wiki/TechOverview.md) on why a parallel preprocessor is needed in the era of E-scale (10^18 FLops) computation.
24+
The following screenshot shows the software making good use of multiple CPUs, with high CPU usage across 64 threads on a 32-core CPU. (Source: Dr Andrew Davis)
2225

2326
![CPU usage of parallel-preprocessor using 64 threads on a 32-core CPU](./wiki/assets/ppp_multithreading_cpu_usage.png)
2427

25-
Screenshot for the CPU usage of parallel-preprocessor using 64 threads on a 32-core CPU (Source: Dr Andy Davis)
28+
## Getting started
2629

30+
A quick start guide for using PPP can be found in [wiki/GetStarted.md](wiki/GetStarted.md).
2731

28-
## Get started (tutorial)
32+
## Future plans
2933

30-
[wiki/GetStarted.md](wiki/GetStarted.md): quick started guide to use geometry processing pipeline
34+
This software aims to be a framework for more CAE preprocessing operations for large geometry assemblies with up to 1 million parts, such as fusion reactors, aeroplanes and aero engines, using high performance computing infrastructure in exascale supercomputers. Eventually, automatic and intelligent engineering design will be enabled through this framework and other software tools.
3135

32-
## Future plan
36+
[wiki/TechOverview.md](./wiki/TechOverview.md) explains more about why a parallel preprocessor is needed in the era of exascale computing.
3337

34-
[wiki/Roadmap.md](wiki/Roadmap.md): lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.
38+
[wiki/Roadmap.md](wiki/Roadmap.md) lists short-term and long-term plans which depend on funding status. Additional funding for enhancing existing modules or developing new modules would be very welcome.
3539

3640
## Disclaimer
3741

38-
This is **NOT** a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.
42+
This is **not** yet production quality software, but is a prototype which demonstrates the potential of accelerating CAE preprocessing on HPC systems. We hope to improve the software and apply better software engineering practices in future.
3943

40-
According to the open source [license](./LICENSE), **there is no warranty for this free library**
44+
**There is no warranty for this free library.**
4145

4246
## Platforms supported
4347

44-
This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.
48+
This project has been designed to be cross-platform, and currently a number of Linux distributions are supported:
4549

46-
+ Ubuntu latest LTS as the primary/baseline development platform, with deb binary package generated
47-
- Debian package should be achievable, since OpenCASCADE are available in official repository
50+
+ The latest LTS version of Ubuntu is the primary development platform, and a Debian package is generated by the CI build.
4851

49-
+ Fedora 30+ with OpenCascade 7.x package available from official repository, have rpm binary package generated.
52+
+ Fedora 30+ with OpenCascade 7.x package available from official repository, with an RPM binary package generated.
5053

51-
+ Compiling from source code for other Linux platforms is straight-forward, driven by cmake and cpack, guidance provided.
52-
- Centos8 should work without much effort, but OpenCASCADE must be compiled from source at first.
53-
- Centos7 software stack is outdated for compiler and cmake , using docker/singularity instead.
54+
+ MacOS compiling and packaging is done via homebrew, with a DragNDrop binary package generated.
5455

55-
+ Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows natively has been added.
56+
+ Windows 10 users are encouraged to use WSL with one of the supported Linux distributions. (A guide to native compilation on Windows has been added, but this build is experimental.)
5657

57-
+ MacOS compiling and packaging is done via homebrew, DragNDrop binary package is available.
58+
+ Versions can be built from the source code for other Linux platforms (using CMake and CPack). Centos8 should work without much effort (with OpenCascade compiled from source). The build tools in the Centos7 software stack are too old, so Docker/Singularity should be used for Centos7 support.
5859

59-
Conda package and Linux native package for Ubuntu LTS may be available in the future, see [packaging.md](wiki/Packaging.md)
60+
Conda packages may be available in the future. See [wiki/Packaging.md](wiki/Packaging.md).
6061

6162
## Installation guide
6263

63-
**Note: user must install runtime dependencies (TBB, OpenCASCADE, etc, see Compile guide wiki pages for each platform) then install the downloaded binary package. Hint: if user have freecad installed, then all dependencies should have installed**
64-
65-
66-
### Download (x86_64 architecture) binary packages
67-
Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on **github Release** for this public github. The unstable package build from the latest code on the main branch can be downloaded here <https://github.com/ukaea/parallel-preprocessor/releases/tag/dev>
68-
69-
**Note: choose the correct operation system, and the package is targeting at system-wide python3**
70-
71-
The package file has the name pattern: `parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix>` If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.
72-
73-
All the latest binary packages (built on each push/merge of the main branch) can be downloaded from
74-
https://github.com/ukaea/parallel-preprocessor/releases
75-
76-
For Ubuntu and Debian:
77-
remove the older version by `sudo apt remove parallel-preprocessor`, and install the downloaded
78-
`sudo dpkg -i parallel-preprocessor*.deb`
79-
80-
For Fedora:
81-
remove the older version by `sudo dnf remove parallel-preprocessor`
82-
`sudo rpm -ivh parallel-preprocessor*.rpm` or double click to bring up package installer.
83-
84-
Coming soon: parallel-preprocessor dmg package for MacOS 10.15
85-
86-
Coming later: conda package for Windows 10.
87-
88-
### Test the installation
89-
90-
[wiki/Testing.md](wiki/Testing.md): unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.
91-
92-
---
64+
There are instructions for installation in [wiki/Installation.md](wiki/Installation.md). Runtime dependencies must be installed before PPP release packages (and the easiest way to do this is probably by installing FreeCAD).
9365

94-
## [Developer document and guide] (./DeveloperGuide.md)
66+
## Developer guide
9567

96-
+ compiling and packaging on Linux, MacOS, Windows
97-
+ archicture, parallel, user interface, API, documentation design
68+
Information for developers, such as a guide for building from source, and documentation about the software design and implementation, can be found in [wiki/DeveloperGuide.md](wiki/DeveloperGuide.md).
9869

99-
---
70+
## Contributions
10071

101-
## Contribution
72+
Please submit GitHub issues and pull requests!
10273

103-
Please submit issue on gihtub issues, and send in your fix by PR, see more details in [workflow for contribution](./wiki/Contribution.md)
74+
See more about the workflow for contributions in [wiki/Contribution.md](wiki/Contribution.md).
10475

105-
## Acknowledgement
76+
## Acknowledgements
10677

107-
Funding from August 2019 ~ April 2020: STEP project in UKAEA <http://www.ccfe.ac.uk/step.aspx>
78+
Funding from August 2019 - April 2020 was provided by the [STEP project in UKAEA](http://www.ccfe.ac.uk/step.aspx).
10879

109-
Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.
80+
Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thanks to other colleagues, including John Nonweiler and Dr Jonathon Shimwell, for testing and reviewing this software.

wiki/GetStarted.md

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
1-
## Get Started
1+
# Get Started
22

3-
### Command line interface
3+
## Command line interface
44

5-
Geometry pipeline can be started in a terminal. `geomPipeline.py` takes 2 positional arguments, the first is the action, and the second is the input file path. For example, `geomPipeline.py imprint your_geometry_file_path` , just replace *your_geometry_file_path* by your geometry.
5+
Following installation (see [wiki/Installation.md](wiki/Installation.md)), the starting point for users is the command line:
6+
7+
```bash
8+
geomPipeline.py imprint your_geometry_file_path
9+
```
10+
11+
(with *your_geometry_file_path* replaced by the path to your geometry.)
12+
13+
This starts the geometry pipeline. `geomPipeline.py` takes 2 positional arguments, the first is the action, and the second is the input file path.
14+
15+
Optional arguments for all pipelines:
616

7-
Optional arguments for all pipelines, it is expected other pipelines also follow this convention.
817
```
918
-h, --help show this help message and exit
1019
-o OUTPUT_FILE, --output-file OUTPUT_FILE
@@ -22,7 +31,8 @@ Optional arguments for all pipelines, it is expected other pipelines also follow
2231
verbosity: for console or terminal: DEBUG, PROGRESS, INFO, WARNING, ERROR
2332
```
2433

25-
optional arguments for geometry pipeline
34+
Optional arguments for the geometry pipeline:
35+
2636
```
2737
--metadata METADATA input metadata file, only for brep input geometry
2838
--tolerance TOLERANCE
@@ -33,7 +43,7 @@ optional arguments for geometry pipeline
3343

3444
Always run `geomPipeline.py -h` to get the latest arguments.
3545

36-
### Geometry preprocessing features
46+
## Geometry preprocessing features
3747

3848
Implemented geometry processing actions are: `check,detect,merge,imprint,search`, some other planned actions `tessellate, fix, decompose` can be found in [Roadmap.md](Roadmap.md)
3949

@@ -48,31 +58,31 @@ Usage of other actions such as `search, check, detect, decompose`
4858
`geomPipeline.py check geometry_file` will check for errors, e.g. volume too small, invalid geometry, etc
4959
`geomPipeline.py detect geometry_file` will detect collision between solid shapes, see more shape spatial relationship types defined in the type `Geom::CollisionType`
5060

51-
### Input geometry format supported
61+
## Input geometry format supported
5262

5363
+ FreeCAD native format, *.FCStd
54-
+ Step geometry exchange format, *.step/*.step
55-
+ OpenCASCADE native format, *.brep/*.brp, may combined with `*.metadata.json` (parallel-processor output meta data format)
64+
+ Step geometry exchange format, *.step
65+
+ OpenCASCADE native format, \*.brep/\*.brp, may combined with `*.metadata.json` (PPP output meta data format)
5666
+ a json manifest file: a list of dict (geometry file path + material name)
57-
```json
67+
68+
```json
5869
[{"material": "Copper", "filename": "path_to_geometry_file1" },
59-
{"material": "Steel", "filename": "path_to_geometry_file2" },
60-
]
61-
```
62-
see doxygen generate document for this class for most updated information <>
70+
{"material": "Steel", "filename": "path_to_geometry_file2" }]
71+
```
6372

73+
see doxygen generate document for this class for most updated information <>
6474

65-
### Debug your installation
75+
## Debug your installation
6676

6777
`which geomPipeline` on Unix-like system, or `where geomPipeline` on Windows to see if executable has been installed on PATH.
6878

6979
NOTE: if installed using deb/rpm on ubuntu and fedora, while user has anaconda activated, then user will not be able to use c-extension module `ppp`. For example, on Ubuntu the ppp module `ppp.cpython-36m-x86_64-linux-gnu.so` is installed to `/usr/lib/python3/dist-packages/`. In that case, `python3 /usr/bin/geomPipeline.py manifest.json` will start an external process by python to run pipeline without using `ppp` module.
7080

7181
On windows, a batch file calling may be generated to run python script "geomPipeline.py" without "python path_to/geomePipeline.py".
7282

83+
## Advanced usage (adjust pipeline parameters)
7384

74-
### Advanced usage (adjust pipeline parameters)
75-
#### Pipeline configuration generation (python script)
85+
### Pipeline configuration generation (python script)
7686

7787
`geomPipeline.py` will generate a json configuration based on user input (by default `config.json` in the current folder), then starts the geometry preprocessing pipeline. For example, the imprint action will be organized into a pipeline of several GeometryProcessors, with default parameters written into the `config.json`.
7888

@@ -81,6 +91,6 @@ If the output is not ideal, users can edit parameters in the generated `config.j
8191
Actually, all the processing computation is done by `pppGeomPipeline` which is an executable compiled from C++ code. This executable only accepts a json configuration file, e.g. `pppGeomPipeline path_to_json_config.json`.
8292

8393
The split of high-level user-oriented python script and lower-level C++ program has the benefits:
94+
8495
+ to ease the debugging of mixed python and C++ programming
8596
+ to ease the parallel programming, since Python has the GIL problem
86-

wiki/Installation.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Installing PPP
2+
3+
## Install runtime dependencies
4+
5+
Runtime dependencies (TBB, OpenCascade, etc. - see the compilation guides for each platform) must be installed before PPP binary packages. Note: If FreeCAD is installed, then this includes the dependencies required by PPP.
6+
7+
## Download (x86_64 architecture) binary packages
8+
9+
Debian packages for Ubuntu and RPM packages for Fedora 30+ are available to download from <https://github.com/ukaea/parallel-preprocessor/releases>. (These are built automatically when PRs are merged on the main branch.) For other operating systems, please compile from source.
10+
11+
Package file names follow this pattern: `parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix>`.
12+
13+
**Note: Packages use system-wide python3.**
14+
15+
For Ubuntu and Debian:
16+
17+
- Remove old versions: `sudo apt remove parallel-preprocessor`
18+
- Then install: `sudo dpkg -i parallel-preprocessor*.deb`
19+
20+
For Fedora:
21+
22+
- Remove old versions: `sudo dnf remove parallel-preprocessor`
23+
- Then install: `sudo rpm -ivh parallel-preprocessor*.rpm`
24+
25+
Coming soon: DMG package for MacOS 10.15
26+
27+
Coming later: Conda package for Windows 10
28+
29+
## Test the installation
30+
31+
Please run the Python tests described in [wiki/Testing.md](wiki/Testing.md) to test your installation.

0 commit comments

Comments
 (0)