|
1 | 1 |
|
2 | | - |
3 | 2 |  |
4 | 3 |  |
5 | 4 |
|
6 | | -**Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework** |
| 5 | +# Parallel-preprocessor (PPP) |
| 6 | + |
| 7 | +A prototype parallel CAE geometry preprocessing framework |
7 | 8 |
|
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 |
12 | 10 |
|
| 11 | +Copyright 2019-2020 UKAEA |
13 | 12 |
|
14 | | -[**Documentation pages (including this Readme)**](https://ukaea.github.io/parallel-preprocessor/site/doxygen-docs.html) |
| 13 | +License: LGPL v2.1 |
15 | 14 |
|
| 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). |
16 | 19 |
|
17 | 20 | ## Feature overview |
18 | 21 |
|
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. |
20 | 23 |
|
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) |
22 | 25 |
|
23 | 26 |  |
24 | 27 |
|
25 | | -Screenshot for the CPU usage of parallel-preprocessor using 64 threads on a 32-core CPU (Source: Dr Andy Davis) |
| 28 | +## Getting started |
26 | 29 |
|
| 30 | +A quick start guide for using PPP can be found in [wiki/GetStarted.md](wiki/GetStarted.md). |
27 | 31 |
|
28 | | -## Get started (tutorial) |
| 32 | +## Future plans |
29 | 33 |
|
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. |
31 | 35 |
|
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. |
33 | 37 |
|
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. |
35 | 39 |
|
36 | 40 | ## Disclaimer |
37 | 41 |
|
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. |
39 | 43 |
|
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.** |
41 | 45 |
|
42 | 46 | ## Platforms supported |
43 | 47 |
|
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: |
45 | 49 |
|
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. |
48 | 51 |
|
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. |
50 | 53 |
|
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. |
54 | 55 |
|
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.) |
56 | 57 |
|
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. |
58 | 59 |
|
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). |
60 | 61 |
|
61 | 62 | ## Installation guide |
62 | 63 |
|
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). |
93 | 65 |
|
94 | | -## [Developer document and guide] (./DeveloperGuide.md) |
| 66 | +## Developer guide |
95 | 67 |
|
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). |
98 | 69 |
|
99 | | ---- |
| 70 | +## Contributions |
100 | 71 |
|
101 | | -## Contribution |
| 72 | +Please submit GitHub issues and pull requests! |
102 | 73 |
|
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). |
104 | 75 |
|
105 | | -## Acknowledgement |
| 76 | +## Acknowledgements |
106 | 77 |
|
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). |
108 | 79 |
|
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. |
0 commit comments