Giter Club home page Giter Club logo

parallel-preprocessor's Introduction

Ubuntu and MacOS CI Fedora CI

Parallel-preprocessor (PPP)

A prototype parallel CAE geometry preprocessing framework

by Qingfeng Xia, UKAEA

Copyright 2019-2020 UKAEA

License: LGPL v2.1

Documentation

For more information, please see the documentation website (which includes the contents of this Readme file).

Feature overview

This software provides multi-threaded geometry collision detection and imprinting via a command line interface and more advanced json configuration interface. It has faster and more controllable performance on large geometry assemblies (with 10k+ parts) than is possible with most existing CAD tools.

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)

CPU usage of parallel-preprocessor using 64 threads on a 32-core CPU

More details on benchmarking on parallel geometry imprinting can be found in wiki/Benchmarking.md.

Getting started

A quick start guide for using PPP can be found in wiki/GetStarted.md.

Future plans

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.

wiki/TechOverview.md explains more about why a parallel preprocessor is needed in the era of exascale computing.

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.

Disclaimer

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.

There is no warranty for this free library.

Platforms supported

This project has been designed to be cross-platform, and currently a number of Linux distributions are supported:

  • The latest LTS version of Ubuntu is the primary development platform, and a Debian package is generated by the CI build.

  • Fedora 30+ with OpenCascade 7.x package available from official repository, with an RPM binary package generated.

  • MacOS compiling and packaging is done via homebrew, with a DragNDrop binary package generated.

  • 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.)

  • 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.

  • Centos8 Docker image is ready for quick started without installation docker pull qingfengxia/ppp-centos This is a small image (size 1.6 GB) based on centos8, with only occt (v7.4) and PPP compiled from source.

  • Conda packages may be available in the future. See wiki/Packaging.md.

Installation guide

There are instructions for installation in wiki/Installation.md. Runtime dependencies must be installed before PPP release packages (and the easiest way to do this is probably by installing FreeCAD).

Developer guide

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.

Contributions

Please submit GitHub issues and pull requests!

See more about the workflow for contributions in wiki/Contribution.md.

Acknowledgements

Funding from August 2019 - April 2020 was provided by the STEP project in UKAEA.

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.

parallel-preprocessor's People

Contributors

johnnonweiler avatar luzpaz avatar qingfengxia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

parallel-preprocessor's Issues

missing file pppStartPipeline

This might be me making the error again but wanted to mention that I'm getting this error, Looks like PPP can't find the pppStartPipeline file and it appears to not have installed with the others

Screenshot from 2020-10-12 20-41-25

Screenshot from 2020-10-12 20-46-39

errors when running geompipline

When trying to use the geomPipeline.py in ubuntu 18.04 Conda env I get an error and was wondering

Screenshot from 2020-10-07 14-58-36

I have tried installing additional software sudo apt-get install libstdc++6 but this has not helped

Here are the commands I used to install and run the PPP

sudo add-apt-repository -y ppa:freecad-maintainers/freecad-stable
sudo apt update
sudo install -y freecad
sudo apt-get install -y libtbb2 libocct-foundation-7.3  libocct-data-exchange-7.3  libocct-modeling-data-7.3 libocct-modeling-algorithms-7.3  libocct-ocaf-7.3
wget https://github.com/ukaea/parallel-preprocessor/releases/download/dev/parallel-preprocessor-0.3-dev_ubuntu-20.04.deb
sudo dpkg -i parallel-preprocessor-0.3-dev_ubuntu-20.04.deb 
geomPipeline.py config.json
/home/jshim/anaconda3/bin/python /usr/bin/geomPipeline.py config.json

Shape hash or uniqueId algorithm has problem

ukaea/openmc_workshop task10

for small value like centerOfMess.X = 0.014 (before write brep) vs 0.012 (after write out brep in occ_faceter) has diff value,

No material found for ID: 4710765210376886256
with volume: 1.26734e+08, CentreOfMass: 0.0145901, -9.97406e-15, 268.845

"material": "copper",
"name": "divertor.stp",
"property": {
    "area": 2300829.253375523,
    "centerOfMass": [
        0.012942664269858002,
        -1.6442619387761406e-14,
        268.84456044917755
    ],
    "volume": 126733088.77402382
},
"uniqueId": 4710765210367973360

No material found for ID: 13934137247231662064
with volume: 1.26734e+08, CentreOfMass: 0.0145901, -1.254e-14, -268.845

"material": "copper",
"name": "divertor.stp",
"property": {
    "area": 2300829.253375234,
    "centerOfMass": [
        0.012942664144260964,
        -1.43356289324801e-14,
        -268.84456044879204
    ],
    "volume": 126733088.77435534
},
"uniqueId": 13934137247222749168

request for conda install

Not sure how useful this would be for others but I would be keen to see a conda install for this nice package

Lowering the bar for entry and quicker for users to get up and running

Conda forge is really quite a nice option these days and has lots of help for package making

I realize this is a big ask and would be a significant undertaking but it would also be great :-)

select multiple thread exectutor or serialExecutor by json config

if the thread count is 1, then serialExecutor is used instead, useful in benchmarking and validation.

use thread pool, thread count == 1, it is not equal to use serialExecutor, there is tiny cost. NOTE imprinting is a coupled operation, not supported/code for serial single thread SerialExecutor.

compiling failed on MacOS-latest

I am looking forwards someone with mac os can fix the error caused by std::make_shared<T>

while I have created a new wiki page "BuildOnMacOS.md" to describe the procedure to install dependencies.

command line usage with args -o not working

When running /usr/bin/python /usr/bin/geomPipeline.py manifest.json -o ppp.brep

I think I am using the geomPipeline correctly according to the --help instructurings I get a RuntimeError

Screenshot from 2020-10-14 09-32-28

Screenshot from 2020-10-14 09-32-53

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.