Skip to content
/ fpydemo Public

Demo for packaging command line tool written in Python and Fortran

License

Notifications You must be signed in to change notification settings

banskt/fpydemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FPyDemo

About

Demonstration of packaging a command line tool written in Python and Fortran. This minimum working example (MWE) provides implementation of the following features:

  • use native Fortran codes for the shared libraries.
  • the shared libraries are compiled using F2Py.
  • use LAPACK routines for linear algebra in the FORTRAN code.
  • use mpi4py for MPI parallelization.
  • call a third-party Fortran library as use third_party_library from the main Fortran library.

Installation

Prerequisites.

  • any LAPACK library (MKL, OpenBLAS, libFLAME, Atlas, LAPACK (NetLIB))
  • MPI library.

For a quickstart, try:

conda install pip git
pip install git+git://github.com/banskt/fpydemo.git

Note this will automatically install the required packages. If you want to maintain the dependencies using conda, you can preinstall the dependencies before running pip install for fpydemo.

conda install numpy scipy mpi4py
pip install git+git://github.com/banskt/fpydemo.git

You can also clone the repository, change to the cloned directory and install using pip

git clone [email protected]:banskt/fpydemo.git
cd fpydemo
pip install .

If you are developing, install using the -e flag ("editable"). It allows real time changes in the code and the package does not need re-installing every time you make a change.

pip install -e .

Check installation

If installation finished without error, the fpydemo command line tool will become available. You can check the command line tool using:

fpydemo --test # run all tests 
fpydemo -a 3.2 -b 2.1 # print the sum and difference of the two numbers provided by the flags -a and -b
fpydemo -h # help

For testing MPI integration run

mpirun -n 8 fpydemo --test

Directory structure

$ tree . -I "__pycache__|*.egg-info"

├── configs.ini
├── dev
│   ├── fmath.cpython-39-x86_64-linux-gnu.so
│   ├── fmath.f95
│   ├── fmathmod.f95
│   ├── main.f95
│   └── primes.f95
├── LICENSE
├── MANIFEST.in
├── pyproject.toml
├── README.md
├── setup.py
└── src
    ├── cpuinfo.py
    ├── fpydemo
    │   ├── flibs
    │   │   ├── fmath.f95
    │   │   └── fmathmod.f95
    │   ├── __init__.py
    │   ├── main.py
    │   ├── stats
    │   │   ├── __init__.py
    │   │   ├── mathf2py.py
    │   │   └── tests
    │   │       └── test_mathf2py.py
    │   ├── unittest_tester.py
    │   ├── utils
    │   │   ├── __init__.py
    │   │   ├── logs.py
    │   │   └── project.py
    │   └── version.py
    ├── libfpydemo_fmath.cpython-39-x86_64-linux-gnu.so
    └── system_info.py

Resources

  1. Documentations
  • Read details and sources from my other packaging repository cpydemo.
  1. Example packaing

About

Demo for packaging command line tool written in Python and Fortran

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published