tugrul512bit / Cekirdekler

Multi-device OpenCL kernel load balancer and pipeliner API for C#. Uses shared-distributed memory model to keep GPUs updated fast while using same kernel on all devices(for simplicity).
GNU General Public License v3.0
93 stars 10 forks source link

Load balancer sensitive to OS hiccups, need more resistance against temporary performance peaks. #1

Closed tugrul512bit closed 7 years ago

tugrul512bit commented 7 years ago

After CPU and GPU achieves a balance point of %50 - %50 work share for a simple stream, the load balancer keeps oscillating around %45 and %55 for small workloads.

Needs a performance-history backed, slower but more unstoppable load balancing function.

tugrul512bit commented 7 years ago

Added smoothing with hardcoded 10 layers of history. Starts after that amount of iterations(history runs from beggining, smoothing not).

Leaved definitions of PID, stencil methods empty to be filled later and be selectable instead of "average" which is being used for now.