About Store Forum Documentation Contact



Post Reply 
100k+ Particle Rendering Performance Issue
Author Message
llynx Offline
Member

Post: #1
100k+ Particle Rendering Performance Issue
I need to draw over 100k particles for a research project and I've ran into an issue. My system specs are i7 2920xm @ 4.6GHz + 6990m @ (850 mHz core/4000 mHz mem) and newest drivers so its definitely not a hardware or driver issue.

When I draw a the standard sample world my GPU Load is ~100% all the time.

When I draw @ 1080p:

1K Particles - ~100% GPU Load - 300fps
10K Particles - ~ 90% GPU Load - 100fps
30K Particles - ~ 50% GPU Load - 60fps
60K Particles - ~ 20% GPU Load - 35fps
100K Particles - ~ 1-5% GPU Load - 22fps
200K Particles - ~ 0-2% GPU Load - 12fps

Cpu Usage remains about constant ~17-25% across 4 cores. ( I also noticed EE doesn't utilize hyperthreading so only 4 threads are created instead of 8)

Pallate vs Alpha makes no difference. The worst part about this is that I just moved from an old system (Q9000/9800GTX) and the 100k+ particle fps is about the same.

Any suggestions?
09-11-2011 06:45 PM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #2
RE: 100k+ Particle Rendering Performance Issue
(09-11-2011 06:45 PM)llynx Wrote:  I need to draw over 100k particles for a research project and I've ran into an issue. My system specs are i7 2920xm @ 4.6GHz + 6990m @ (850 mHz core/4000 mHz mem) and newest drivers so its definitely not a hardware or driver issue.

When I draw a the standard sample world my GPU Load is ~100% all the time.

When I draw @ 1080p:

1K Particles - ~100% GPU Load - 300fps
10K Particles - ~ 90% GPU Load - 100fps
30K Particles - ~ 50% GPU Load - 60fps
60K Particles - ~ 20% GPU Load - 35fps
100K Particles - ~ 1-5% GPU Load - 22fps
200K Particles - ~ 0-2% GPU Load - 12fps

Cpu Usage remains about constant ~17-25% across 4 cores. ( I also noticed EE doesn't utilize hyperthreading so only 4 threads are created instead of 8)

Pallate vs Alpha makes no difference. The worst part about this is that I just moved from an old system (Q9000/9800GTX) and the 100k+ particle fps is about the same.

Any suggestions?

I am mostly curious about the GPU load being reduced as more particles are added. o_o
09-11-2011 06:53 PM
Find all posts by this user Quote this message in a reply
llynx Offline
Member

Post: #3
RE: 100k+ Particle Rendering Performance Issue
(09-11-2011 06:53 PM)Zervox Wrote:  I am mostly curious about the GPU load being reduced as more particles are added. o_o

Yeah that's what I'm confused about as well. Would anyone mind running the same test? (You can use the Source\Advanced\2 - Animation, Physics, Rendering\Rendering\15 - Particles.cpp just increasing the # of particles of a particle stream and monitoring gpu load)
09-11-2011 07:05 PM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #4
RE: 100k+ Particle Rendering Performance Issue
Noticing same drop as you, although your CPU is clocked 800 mhz higher, I get 13-14 FPS and 0 GPU(some spikes up to 8-10%) load on 100k. and at 1k particles I only get 33-39% GPU load.
09-11-2011 07:16 PM
Find all posts by this user Quote this message in a reply
Seba Offline
Member

Post: #5
RE: 100k+ Particle Rendering Performance Issue
What you use to check GPU work? You have radeon so maybe it make a problem?
09-11-2011 07:29 PM
Find all posts by this user Quote this message in a reply
llynx Offline
Member

Post: #6
RE: 100k+ Particle Rendering Performance Issue
(09-11-2011 07:16 PM)Zervox Wrote:  Noticing same drop as you, although your CPU is clocked 800 mhz higher, I get 13-14 FPS and 0 GPU(some spikes up to 8-10%) load on 100k. and at 1k particles I only get 33-39% GPU load.

Interesting...

I also ran a few more tests... it has something to do with the type of particle being rendered.

100k Fountain - ~0% GPU Load

[Image: fountainf.jpg]

100K Smoke - ~70% GPU Load

[Image: smokexh.jpg]

100k Magic - ~19% GPU Load

[Image: magicx.jpg]

100k Fire - ~85% GPU Load

[Image: firevj.jpg]


The huge variations in GPU Load differences is startling.
(09-11-2011 07:29 PM)Seba Wrote:  What you use to check GPU work? You have radeon so maybe it make a problem?

GPU-Z, its very accurate and HWiNfo gives me similar readings.
The readings are right because you can tell by the temperatures, high GPU load -> Higher temp e.g. Fire vs Fountain images above

___________________________________

(09-11-2011 07:16 PM)Zervox Wrote:  Noticing same drop as you, although your CPU is clocked 800 mhz higher, I get 13-14 FPS and 0 GPU(some spikes up to 8-10%) load on 100k. and at 1k particles I only get 33-39% GPU load.

Interesting...

I also ran a few more tests... it has something to do with the type of particle being rendered.

100k Fountain - ~0% GPU Load

[Image: fountainf.jpg]

100K Smoke - ~70% GPU Load

[Image: smokexh.jpg]

100k Magic - ~19% GPU Load

[Image: magicx.jpg]

100k Fire - ~85% GPU Load

[Image: firevj.jpg]


The huge variations in GPU Load differences is startling.
(09-11-2011 07:29 PM)Seba Wrote:  What you use to check GPU work? You have radeon so maybe it make a problem?

GPU-Z, its very accurate and HWiNfo gives me similar readings.
The readings are right because you can tell by the temperatures, high GPU load -> Higher temp e.g. Fire vs Fountain images above

__________________________________
400K Particles Combined only ~35% GPU Load and const 12% cpu load :\

[Image: 400ku.jpg]
(This post was last modified: 09-11-2011 07:55 PM by llynx.)
09-11-2011 07:39 PM
Find all posts by this user Quote this message in a reply
Seba Offline
Member

Post: #7
RE: 100k+ Particle Rendering Performance Issue
I have the same GPU load value on the same particle type. But particle have different settings so maybe this is the problem? Particle in Esenthel are made using physix?
09-11-2011 08:08 PM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #8
RE: 100k+ Particle Rendering Performance Issue
(09-11-2011 08:08 PM)Seba Wrote:  I have the same GPU load value on the same particle type. But particle have different settings so maybe this is the problem? Particle in Esenthel are made using physix?

They are made from objects such as ball not PhysX directly.
Particles themselves does not use PhysX as far as I know, and they are not PhysX accelerated, if they were I am sure there would have been a use hardware accelerated particles like there is with PhysX Physics.(I can live with physics acceleration on Nvidia but accelerated particles on Nvidia only, not a chance, DirectCompute/OpenCL if there is to be made GPU acceleration on GPU's mostly because it is open for both GPU vendors and not Nvidia only).
(This post was last modified: 09-11-2011 08:21 PM by Zervox.)
09-11-2011 08:20 PM
Find all posts by this user Quote this message in a reply
Seba Offline
Member

Post: #9
RE: 100k+ Particle Rendering Performance Issue
Using CUDA I have 40 fps with 65536 particle. In Esenthel 15 fps with 100k. But don't know what the problem is. I check for 500k particle and GPU load drop about half of what i get when have 100k particle. I will try with game check how this value change. But maybe we have to many data to exchange with CPU, memory and GPU.

//EDIT

When I have more fps the load of gpu and memory is more used when I have more particle and less fps. So I think this problem is from data exchange.
(This post was last modified: 09-11-2011 08:36 PM by Seba.)
09-11-2011 08:32 PM
Find all posts by this user Quote this message in a reply
Esenthel Offline
Administrator

Post: #10
RE: 100k+ Particle Rendering Performance Issue
gpu load depends in this case on pixel shader operations (fillrate), size of particles and camera zoom matter

you get lower gpu load with more particles probably because of more memory transfer needed to copy particles from system memory to gpu memory

it's not only cpu usage + gpu usage, additional factor of performance is memory bandwidth and cpu/gpu synchronization, etc.
09-12-2011 10:44 AM
Find all posts by this user Quote this message in a reply
llynx Offline
Member

Post: #11
RE: 100k+ Particle Rendering Performance Issue
(09-12-2011 10:44 AM)Esenthel Wrote:  additional factor of performance is memory bandwidth

I just tested this by overclocking my ram.

Sisoftware Memory Bandwidth:

Stock Aggregate Memory Bandwidth (mem multi @ 16x): 7.8GB/s
OC Aggregate Memory Bandwidth (mem multi @ 21.33x): 17.0GB/s

I re-ran the particle tests @ 100k and FPS remained the same @ 20fps so Mem Bandwidth doesn't seem to be the bottleneck.

______________________________________________________
GPU Frequency Tests:

GPU Core @ 715mhz & Mem @ 2ghz - 18.7fps
GPU Core @ 715mhz & Mem @ 4ghz - 20.9fps

GPU Core @ 500mhz & Mem @ 4ghz - 17.0fps
GPU Core @ 850mhz & Mem @ 4ghz - 22.0fps

______________________________________________________
CPU Frequency Tests

CPU @ 2.4ghz - (GPU Core @ 850mhz & Mem @ 4ghz) - 22.0fps
CPU @ 4.8ghz - (GPU Core @ 850mhz & Mem @ 4ghz) - 22.2fps
(This post was last modified: 09-14-2011 12:23 AM by llynx.)
09-14-2011 12:12 AM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #12
RE: 100k+ Particle Rendering Performance Issue
Its the fillrate that is the problem, GPU core is not able to compute them faster(with EE particles).

http://realtimecollisiondetection.net/blog/?p=91
http://www.youtube.com/watch?v=bMiNPU03o2k
http://www.youtube.com/watch?v=ACHJ2rGyP10
http://www.youtube.com/watch?v=q8g-zeLLl8k


Worth noting first youtube video contains source code as well in its description link.
These uses different ways of handling lots of particles, I am curious as to what optimizations there is to the particles in EE?
(This post was last modified: 09-14-2011 03:14 AM by Zervox.)
09-14-2011 01:52 AM
Find all posts by this user Quote this message in a reply
llynx Offline
Member

Post: #13
RE: 100k+ Particle Rendering Performance Issue
I get 600k particles @ 40fps for the 2nd demo o_o
09-14-2011 02:43 AM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #14
RE: 100k+ Particle Rendering Performance Issue
Quote:600k particles meshes
ParticleType:Impostors
procedural
meshes
alpha+blend
particle rotation on = 50 FPS
Quote:600k particles meshes
ParticleType:Impostors
procedural
meshes
alpha+blend
particle rotation off = 122 FPS
Quote:600k particle points
ParticleType:Points
procedural
meshes
alpha+blend
particle rotation on and off = 194 FPS
(This post was last modified: 09-14-2011 06:31 AM by Zervox.)
09-14-2011 06:29 AM
Find all posts by this user Quote this message in a reply
llynx Offline
Member

Post: #15
RE: 100k+ Particle Rendering Performance Issue
There clearly is room for improvement in EE particle rendering but I'm not sure it's a really important topic atm. For my purposes I can implement a culling system to filter out unnecessary particles that don't need to be rendered which should bump me up to 24fps+ which is tolerable.
(This post was last modified: 09-14-2011 06:46 AM by llynx.)
09-14-2011 06:46 AM
Find all posts by this user Quote this message in a reply
Post Reply