12 Commits

Author SHA1 Message Date
e62ba11a8d Merge pull request #238 from wanqing0421/main
fixed the error when insert particles from file with integer number
2025-07-17 20:52:19 +03:30
1b949e9eda Merge pull request #239 from wanqing0421/benchmarks
update results snapshot
2025-07-17 20:51:04 +03:30
9257823b7e Merge branch 'PhasicFlow:main' into benchmarks 2025-07-17 21:26:00 +08:00
35b32db30e Merge branch 'benchmarks' of https://github.com/wanqing0421/phasicFlow-dev into benchmarks 2025-07-17 20:26:40 +08:00
67559d5c6e update results snapshot 2025-07-17 20:25:34 +08:00
3cc3792e08 fixed the error when insert particles from file with integer number 2025-07-17 16:57:05 +08:00
b1ec396a1b updates on benchmarks readme files 2025-07-17 00:15:23 +03:30
a74e38bbec Merge pull request #236 from wanqing0421/benchmarks
update the performance curve figure
2025-07-16 08:44:21 +03:30
26bbdd3dce Merge branch 'PhasicFlow:main' into benchmarks 2025-07-15 22:29:39 +08:00
73ea794687 update the performance curve figure 2025-07-15 22:29:06 +08:00
1b557c8514 Merge pull request #234 from wanqing0421/benchmarks
update helical mixer benchmarks results
2025-07-14 13:31:54 +03:30
b2cfb57c82 update helical mixer benchmarks results 2025-07-13 16:49:57 +08:00
11 changed files with 139 additions and 10 deletions

View File

@ -12,7 +12,7 @@ dt 0.00001; // time step for integration (s)
startTime 0; // start time for simulation
endTime 2; // end time for simulation
endTime 7.5; // end time for simulation
saveInterval 0.05; // time interval for saving the simulation

View File

@ -12,7 +12,7 @@ dt 0.00001; // time step for integration (s)
startTime 0; // start time for simulation
endTime 2; // end time for simulation
endTime 7.5; // end time for simulation
saveInterval 0.05; // time interval for saving the simulation

View File

@ -12,7 +12,7 @@ dt 0.00001; // time step for integration (s)
startTime 0; // start time for simulation
endTime 2; // end time for simulation
endTime 7.5; // end time for simulation
saveInterval 0.05; // time interval for saving the simulation

View File

@ -12,7 +12,7 @@ dt 0.00001; // time step for integration (s)
startTime 0; // start time for simulation
endTime 2; // end time for simulation
endTime 7.5; // end time for simulation
saveInterval 0.05; // time interval for saving the simulation

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

View File

@ -1 +1,101 @@
# Helical Mixer Benchmark (phasicFlow v-1.0)
## Overview
This benchmark compares the performance of phasicFlow with a well-stablished commercial DEM software for simulating a helical mixer with varying particle counts (250k to 4M particles). The benchmark measures both computational efficiency and memory usage across different hardware configurations.
**Summary of Results:**
- phasicFlow achieves similar performance to the commercial DEM software on the same hardware.
- phasicFlow shows a 30% performance improvement when using the NVIDIA RTX A4000 compared to the RTX 4050Ti.
- Memory usage is approximately 50% lower in phasicFlow compared to the commercial software, with phasicFlow using about 0.7 GB of memory per million particles, while the commercial software uses about 1.5 GB per million particles.
## Simulation Setup
<div align="center">
<img src="./images/commericalDEMsnapshot.png"/>
<div align="center">
<p>Figure 1. Commercial DEM simulation snapshot</p>
</div>
</div>
<div align="center">
<img src="./images/phasicFlow_snapshot.png"/>
<div align="center">
<p>Figure 2. phasicFlow simulation snapshot and visualized using Paraview</p>
</div>
</div>
### Hardware Specifications
<div align="center">
Table 1. Hardware specifications used for benchmarking.
</div>
| System | CPU | GPU | Operating System |
| :---------: | :----------------------: | :--------------------------: | :--------------: |
| Laptop | Intel i9-13900HX 2.2 GHz | NVIDIA GeForce RTX 4050Ti 6G | Windows 11 24H2 |
| Workstation | Intel Xeon 4210 2.2 GHz | NVIDIA RTX A4000 16G | Ubuntu 22.04 |
### Simulation Parameters
<div align="center">
Table 2. Parameters for helical mixer simulations.
</div>
| Case | Particle Diameter | Particle Count |
| :-------: | :---------------: | :--------------: |
| 250k | 6 mm | 250,000 |
| 500k | 5 mm | 500,000 |
| 1M | 4 mm | 1,000,000 |
| 2M | 3 mm | 2,000,000 |
| 4M | 2 mm | 4,000,000 |
The time step for all simulations was set to 1.0e-5 seconds and the simulation ran for 7.5 seconds.
## Performance Comparison
### Execution Time
<div align="center">
Table 3. Total calculation time (minutes) for different configurations.
</div>
| Software | 250k | 500k | 1M | 2M | 4M |
| :---------------: | :----: | :-----: | :-----: | :-----: | :-----: |
| phasicFlow-4050Ti | 110 min | 215 min | 413 min | - | - |
| Commercial DEM-4050Ti | 111 min | 210 min | 415 min | - | - |
| phasicFlow-A4000 | 82 min | 150 min | 300 min | 613 min | 1236 min |
The execution time scales linearly with particle count. phasicFlow demonstrates approximately:
- the computing speed is basically the same as well-established commercial DEM software on the same hardware
- 30% performance improvement when using the NVIDIA RTX A4000 compared to the RTX 4050Ti
<div align="center">
<img src="./images/performance.png"/>
<p>Figure 3. Calculation time comparison between phasicFlow and the well-established commercial DEM software.</p>
</div>
### Memory Usage
<div align="center">
Table 4. Memory consumption for different configurations.
</div>
| Software | 250k | 500k | 1M | 2M | 4M |
| :---------------: | :-----: | :-----: | :-----: | :-----: | :-----: |
| phasicFlow-4050Ti | 260 MB | 404 MB | 710 MB | - | - |
| Commercial DEM-4050Ti | 460 MB | 920 MB | 1574 MB | - | - |
| phasicFlow-A4000 | 352 MB | 496 MB | 802 MB | 1376 MB | 2310 MB |
Memory efficiency comparison:
- phasicFlow uses approximately 0.7 GB of memory per million particles
- Commercial DEM software uses approximately 1.5 GB of memory per million particles
- phasicFlow shows ~50% lower memory consumption compared to the commercial alternative
- The memory usage scales linearly with particle count in both software packages. But due to memory limitations on GPUs, it is possible to run larger simulation on GPUs with phasicFlow.
## Run Your Own Benchmarks
The simulation case setup files are available in this folder for users interested in performing similar benchmarks on their own hardware. These files can be used to reproduce the tests and compare performance across different systems.

View File

@ -1,7 +1,9 @@
# Benchmarks
Benchmakrs has been done on two different simulations: a simulation with simple geometry (rotating drum) and a simulation with complex geometry (helical mixer).
Benchmakrs has been done on two different simulations: simulation with simple geometry (rotating drum) and a simulation with complex geometry (helical mixer). These benchmarks are used to show how PhasicFlow performs in different scenarios.
- [rotating drum](./rotatingDrum/readme.md)
- [helical mixer](./helicalMixer/readme.md)
- [rotating drum](./rotatingDrum/)
- [helical mixer](./helicalMixer/)
**Note:** If you have performed benchmarks with PhasicFlow using other hardware or software other than PhasicFlow, we would be happy to include them in this section. Please open an issue for more arrangements or send a pull request with the benchmarks results.

View File

@ -4,6 +4,12 @@
This benchmark compares the performance of phasicFlow with a well-stablished commercial DEM software for simulating a rotating drum with varying particle counts (250k to 8M particles). The benchmark measures both computational efficiency and memory usage across different hardware configurations.
**Summary of Results:**
- phasicFlow achieves approximately 20% faster calculation than the commercial DEM software on the same hardware.
- phasicFlow shows a 30% performance improvement when using the NVIDIA RTX A4000 compared to the RTX 4050Ti.
- Memory usage is approximately 42% lower in phasicFlow compared to the commercial software, with phasicFlow using about 0.7 GB of memory per million particles, while the commercial software uses about 1.2 GB per million particles
## Simulation Setup
<div align="center">

View File

@ -49,7 +49,14 @@ bool pFlow::positionFile::positionPointsFile()
is >> tok;
if(tok.good()&& tok.isNumber()&& !is.eof())
{
tempPoint.x() = tok.realToken();
if(tok.isReal())
{
tempPoint.x() = tok.realToken();
}
else
{
tempPoint.x() = static_cast<real>(tok.int64Token());
}
}
else
{
@ -71,7 +78,14 @@ bool pFlow::positionFile::positionPointsFile()
is >> tok;
if(tok.good()&& tok.isNumber()&& !is.eof())
{
tempPoint.y() = tok.realToken();
if(tok.isReal())
{
tempPoint.y() = tok.realToken();
}
else
{
tempPoint.y() = static_cast<real>(tok.int64Token());
}
}
else
{
@ -93,7 +107,14 @@ bool pFlow::positionFile::positionPointsFile()
is >> tok;
if(tok.good()&& tok.isNumber()&& !is.eof())
{
tempPoint.z() = tok.realToken();
if(tok.isReal())
{
tempPoint.z() = tok.realToken();
}
else
{
tempPoint.z() = static_cast<real>(tok.int64Token());
}
}
else
{