Previous Topic (Particle Channels Editor Examples) Up (Particle Channels Editor) Next Topic (None)

Performance and Benchmarks

Measured Speed Of Single-Threaded Operators

The initial implementation of the KCM Compiler in Beta 4 was single-threaded. Below you will find the results of the first benchmarks using that version, followed by the Multi-Threaded version in Beta 5.

  • Vector Channel Input: 9.14077 MP/sec
  • Vector Add: 37.594 MP/sec
  • Vector Multiply: 14.9031 MP/sec
  • Blend: 26.6667 MP/sec
  • Clamp: 11.8624 MP/sec
  • KCM Time Using 10M particles
    • Loading Position into Color channel: 1.094 seconds
    • Loading and Inverting Position into Color channel: 1.25 seconds
    • Loading Position and Adding a Vector: 1.36 seconds
    • Loading Position and Multiplying by a Vector: 1.765 seconds
    • Loading Position and Blending with a Vector using a Float: 1.469 seconds
    • Loading Position and Blending with a Vector using Position Channel: 1.422 seconds
    • Loading Position and Blending with Color Channel using Position Channel: 1.516 seconds
    • Loading Position, Multiplying by a Float and Blending with Color Channel using Position Channel: 1.844 seconds
    • Loading Position, Clamping by two vectors and outputting as Color: 2.016 seconds
    • Outputting one float to Density Channel: 1.001 seconds
    • Multiplying two Floats and outputting to Density: 1.126 seconds
    • Loading Density, Multiplying by Float and outputting to Density: 1.359 seconds
  • Simple KCM Comparison To Box #3
    • Created a Standard PFlow creating 10M particles on frame 0 with random Positions in a 100x100x100 box.
    • Added a Data Operator which reads the Position channel, multiplies by 0.01 and writes to the Vertex Color Channel.
    • Generating particles and rendering without the Data Operator took 15.89 seconds.
    • Generating particles and rendering with the Data Operator took 17.656 seconds.
    • The Data Operator overhead was thus 1.766 seconds.
    • Saved the same 10M particles to PRT file.
    • Loaded the PRT file using a PRT Loader.
    • Added a KCM with a Position channel node multiplied by a Float Input of 0.01 and writing to the Color channel.
    • Loading and rendering without the KCM took 11.204 seconds.
    • Loading and rendering with the Single-Threaded KCM took 12.187 seconds.
    • Thus, the Single-Threaded KCM overhead was 0.983 seconds, or 1.79654 times faster than a comparable Box #3 operator.
    • Loading and rendering with the Multi-Threaded KCM took 11.829 seconds.
    • Thus, the Mutli-Threaded KCM overhead was 0.625 seconds, or 2.8256 times faster than a comparable Box #3 operator.

Measured Speed of Multi-Threaded Operators

  • Using 5 partitions of 10MP each = 50MP
    • No KCM Reference Time: 53.297 sec.
    • Load Position Vector Channel and Output As Color: 57.391 sec. = 4.094 sec/50MP = 0.08188 sec/MP = 12.213 MP/sec.
    • Add Position and Color Channels and Output As Color: 58.047 sec. = 4.75 sec/50MP = 0.095 sec/MP = 10.5263 MP/sec.
    • Multiply Position and Color Channels and Output As Color: 57.036 sec. = 3.739/50MP = 0.07478 sec/MP = 13.3726 MP/sec.
    • Blending Position and Color Channels by Float Input and Output As Color: 57.735 sec. = 4.438/50MP = 0.08876 sec/MP = 11.2663 MP/sec.
    • Blending Position and Color Channels by Vector Input and Output As Color: 57.844 sec. = 4.547/50MP = 0.09094 sec/MP = 10.9963 MP/sec.
    • Same as above but also Clamping Output By 2 Vectors: 57.953 sec. = 4.656/50MP = 0.09312 sec/MP = 10.7388 MP/sec.