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

Explicit device selection #5

Closed tugrul512bit closed 7 years ago

tugrul512bit commented 7 years ago

Can be useful when developer doesn't need all GPUs at once in OpenCL. Maybe something like a device list in different categories:

  ClDevice.getGpuList()                                        
  ClDevice.getAccList()                                          // random order with device name so user can choose 
  ClDevice.getDeviceWithMaxComputeUnit()    // 20 thread CPU is not same as a 20CU -  HD7870 !!! 
  ClDevice.getDeviceWithBenchmark("nbody"); // gets top point awarded device
  ClDevice.activateDynamicDeviceSwitching() // switches to another device when performance becomes too much oscillated (GTX_titan 1ms 3ms 2ms 3ms 1ms then switches to gtx_950 10ms 11ms 10ms 9ms)
tugrul512bit commented 7 years ago

Also a device duplication feature can be equivalent to implicit pipelining, CPU-thread controlled instead of event or driver. 3rd type pipelining. Needs more threads.