Skip to content

Auto tuning data distribution

Hüseyin Tuğrul BÜYÜKIŞIK edited this page Feb 8, 2021 · 3 revisions

When graphics cards in system have different amount of vram, their respective data share can be automatically chosen by VirtualMultiArray::MemMult::UseVramRatios parameter given to mem parameter of constructor of VirtualMultiArray.

VirtualMultiArray<Obj> data1(n,..,..,..,{1,1,1},VirtualMultiArray<Obj>::UseVramRatios);

This overrides the parameter before it. {1,1,1} is overwritten by actual memory size of each card but in GB units and becomes {2,2,2}.

If user disables a card like {0,1,1}, then new values become {0,vram_amount1,vram_amount2} that still disables same card.

If OpenCL driver fails to query value of vram of a card, then it is defaulted to 2GB which may overflow a 1GB card's vram or waste some vram of a card with bigger vram. In this situation, user can pick VirtualMultiArray<Obj>::UseDefault(which is default value) and use memMult parameter directly to increase that card's share like this: {2,16,2}.