Skip to content

Releases: zer011b/fdtd3d

Multi-dimensional Parallel Solver for x64/Arm/Arm64/RISC-V/PowerPC architectures with MPI/CUDA support

11 Jan 16:06
Compare
Choose a tag to compare

Introducing version 1.2!

RISC-V and PowerPC support

RISC-V and PowerPC are now fully supported in sequential mode (in addition to x64, Arm and Arm64). Both native and cross compilations for RISC-V and PowerPC are supported, for both gcc and clang toolchains.

Bug fixes

Fixed input using bmp images.

Improved CI

CI now fully covers all supported arches (except cuda launches).

Multi-dimensional Parallel Solver for x64/arm/arm64 with MPI/CUDA support

13 Nov 09:58
Compare
Choose a tag to compare

Introducing version 1.1!

Arm32 and Arm64 support

Arm32 and Arm64 are now fully supported in sequential mode (in addition to x64, which was the only supported arch previously). Both native and cross compilations for arm32 and arm64 are supported, for both gcc and clang toolchains.

Performance improvements

Up to 25% speed improvement is achieved with this release in different scenarios for all architectures.

Improved command line interface

Coordinates setup is simpler now, for example one option --num-cuda-threads x:<Nx>,y:<Ny>,z:<Nz> can now be used instead of three --num-cuda-threads-x <Nx> --num-cuda-threads-y <Ny> --num-cuda-threads-z <Nz>.

Build system simplification

Some build flags are automatically set up now, some are fully removed. More build flags are going to be revised in future.

Test system improvements

Test process is now fully documented and test system is changed to support cross arch testing.

Code unification, code improvements and various bug fixes

Multi-dimensional Parallel Solver with MPI/CUDA support

28 Oct 23:35
Compare
Choose a tag to compare

Introducing version 1.0!

Cuda support for all modes

In the base of CPU/GPU computations lies pretty much the same source code, which makes it easier to support both scenarios. To enable GPU computations use --use-cuda command line option, and --cuda-gpus to setup GPU ids.

E/H centered layouts

Two different Yee grid layouts are now supported, the one with E at the center of the cell border surface, and the one with H at the center of the cell border surface. Choose E-centered using --layout-type 0, H-centered using --layout-type 1.

Separate compilation of modes

All computation modes (six 1D modes, six 2D modes and one 3D mode) can now be compiled either together or separately in all possible combinations. This allows to include only required modes in binary and reduce its size. Basically, this is trade off between binary size (+a bit of memory/speed) and functionality. For example, in a specific scenario, usage of only one of 13 modes leads to binary size reduction of 90%, usage of six modes leads to binary size reduction of 56%.

Easier parallel launch

No need to pass --parallel-grid option (it is removed now), just launch same sequential config under mpiexec.

Precalculated coefficients Ca, Cb, Da, Db

By passing --use-ca-cb command line option computational time can be significantly reduced because coefficients are cached. However, memory consumption increases. So, --use-ca-cb, --use-ca-cb-pml, --use-ca-cb-pml-metamaterials introduce trade off between computational time and memory consumption.

Current sources

In addition to hard point sources soft point sources are added (J and M).

Various optimizations

Grids are now stored in a bit different way, so memory consumption and computational time are reduced. For example, 30% speedup is achieved on sequential 3D mode with size 100^3 on 100 time steps with TF/SF and PML enabled.

MPI+Cuda support

Now CPU/GPU computations can be enabled separately on each computational node (see --cuda-gpus command line option). For small grids it is still more efficient to use GPU computations only. For large grids usefulness of this feature will be fully shown in next releases.

Design documentation

Some docs on design have been added.

Bug fixes

Many bugs were fixed for this release.

Multi-dimensional (1D, 2D and 3D) Parallel Solver

05 Sep 05:46
Compare
Choose a tag to compare
  • Various bug fixes
  • Split TF/SF for left and right borders
  • Added more examples
  • Added more tests in test suite
    • reflection & refraction tests for Eps material with PML (for all 1D modes)
    • tests for plane wave in vacuum for all modes
    • test for comparison of real value and complex value modes
  • Added sphere approximation for all dimensions
  • Added Doxygen documentation

Multi-dimensional (1D, 2D and 3D) Parallel Solver

19 Jun 11:59
Compare
Choose a tag to compare
  • Various bug fixes
  • Code unification for different grid dimensions (1D, 2D and 3D) and field components combinations (e.g. TEx, TMy modes, etc.)
  • Support of all dimension and --1d, --2d and --3d command line options in the same binary
  • Added new unit tests
  • Improved test suite
  • Significant refactoring of the source code
  • Added more comments to source code
  • Added new examples (see Examples/)

3D Parallel Solver

28 Dec 14:08
Compare
Choose a tag to compare
3D Parallel Solver Pre-release
Pre-release

2D mode is temporarily disabled.

  • Fixed bugs
  • Added material sphere approximation
  • Added parallel NTFF
  • Added test suite in CI
  • Performed code unification and some other changes

3D Parallel Solver

06 Oct 07:12
Compare
Choose a tag to compare
3D Parallel Solver Pre-release
Pre-release

2D mode is temporarily disabled.

  • Added command line interface and command line files support (see --help for all available options)
  • Added some docs to ./Dosc and examples to ./Examples
  • Added optimal virtual topology chooser
  • Added NTFF
  • Added double material resolution
  • Improved CI tests
  • Added .txt loader
  • Added setting of materials through command line interface (sphere)
  • Lots of internal improvements

2D,3D Parallel Solver

26 Mar 12:58
Compare
Choose a tag to compare
2D,3D Parallel Solver Pre-release
Pre-release
  • Fixed bug with wrong end calculation coordinate for parallel grid

2D,3D Parallel Solver

24 Mar 21:44
Compare
Choose a tag to compare
2D,3D Parallel Solver Pre-release
Pre-release
  • Added unit test and CI
  • Fixed 3D material (+metamaterial) borders approximation
  • Added arbitrary incident wave angle for 2D and 3D modes
  • Added orthogonal axis for 3D BMP dumper
  • Added parameters with part of grid to save for BMP dumper
  • Added TXT dumper (with gnuplot support)
  • Fixed minor bugs
  • Refactoring and code comments

2D,3D Parallel Solver

15 Jan 22:45
Compare
Choose a tag to compare
2D,3D Parallel Solver Pre-release
Pre-release

2D and 3D Parallel solver with support of MPI and Cuda GPU calculations, TF/SF, UPML, metamaterials with Drude model and complex/real field values