[RFC PATCH 2/2] drm/amdgpu: enable gfx wave limiting for high priority compute jobs
Nirmoy
nirmodas at amd.com
Thu Jan 28 16:01:51 UTC 2021
On 1/28/21 4:25 PM, Christian König wrote:
> Am 28.01.21 um 16:21 schrieb Nirmoy:
>>
>> On 1/28/21 3:49 PM, Christian König wrote:
>>> Am 28.01.21 um 15:35 schrieb Nirmoy Das:
>>>> Enable gfx wave limiting for gfx jobs before pushing high priority
>>>> compute jobs so that high priority compute jobs gets more resources
>>>> to finish early.
>>>
>>> The problem here is what happens if you have multiple high priority
>>> jobs running at the same time?
>>
>>
>> AFAIU, in that case quantum duration will come into effect. The queue
>> arbiter will switch
>>
>> to next high priority active queue once quantum duration expires.
>> This should be similar to what
>>
>> we already have, multiple normal priority jobs sharing GPU resources
>> based on CP_HQD_QUANTUM.
>>
>> QUEUE_DURATION register value.
>
> Yeah, but when the first high priority job completes it will reset
> mmSPI_WCL_PIPE_PERCENT_GFX back to the default value.
>
> Have you considered that?
Yes I need bit of clarity here. Isn't one frame(...pm4(wave_limit),
pm4(IBs), pm4(restore_wave_limit), ..)
executes together as one unit? If that is the case then the next high
prio compute job will set the wave limit
again and will be applied for its dispatch call.
I guess that is not the case because you asked this question. Do you
think we should have only one high priority
queue then?
I tried to test it by running two instances of same vulkan test
application. I can't trace
two applications together using RGP. From the trace of one
application(along with other running together),
I didn't see any throttling down of high priority compute job(yellow bars).
Let me know what do you think. I will work with Alan to change the test
application so that we can verify this
using multiple high priority context.
Regards,
Nirmoy
>
> Thanks,
> Christian.
>
>>
>>
>> Regards,
>>
>> Nirmoy
>>
>>
>>>
>>> Christian
>>>
>>>>
>>>> Signed-off-by: Nirmoy Das <nirmoy.das at amd.com>
>>>> ---
>>>> drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 9 +++++++++
>>>> 1 file changed, 9 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>>>> index 024d0a563a65..ee48989dfb4c 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>>>> @@ -195,6 +195,10 @@ int amdgpu_ib_schedule(struct amdgpu_ring
>>>> *ring, unsigned num_ibs,
>>>> if ((ib->flags & AMDGPU_IB_FLAG_EMIT_MEM_SYNC) &&
>>>> ring->funcs->emit_mem_sync)
>>>> ring->funcs->emit_mem_sync(ring);
>>>> + if (ring->funcs->emit_wave_limit && job &&
>>>> + job->base.s_priority >= DRM_SCHED_PRIORITY_HIGH)
>>>> + ring->funcs->emit_wave_limit(ring, true);
>>>> +
>>>> if (ring->funcs->insert_start)
>>>> ring->funcs->insert_start(ring);
>>>> @@ -295,6 +299,11 @@ int amdgpu_ib_schedule(struct amdgpu_ring
>>>> *ring, unsigned num_ibs,
>>>> ring->current_ctx = fence_ctx;
>>>> if (vm && ring->funcs->emit_switch_buffer)
>>>> amdgpu_ring_emit_switch_buffer(ring);
>>>> +
>>>> + if (ring->funcs->emit_wave_limit && job &&
>>>> + job->base.s_priority >= DRM_SCHED_PRIORITY_HIGH)
>>>> + ring->funcs->emit_wave_limit(ring, false);
>>>> +
>>>> amdgpu_ring_commit(ring);
>>>> return 0;
>>>> }
>>>
>>> _______________________________________________
>>> amd-gfx mailing list
>>> amd-gfx at lists.freedesktop.org
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=04%7C01%7Cnirmoy.das%40amd.com%7C67e903357ee247f9ceb008d8c3a0efdf%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637474443287007930%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=EyouSUvaKjQIIWeKDilVra73iL1eb0rpnaUCDAIDvXA%3D&reserved=0
>>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=04%7C01%7Cnirmoy.das%40amd.com%7C67e903357ee247f9ceb008d8c3a0efdf%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637474443287007930%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=EyouSUvaKjQIIWeKDilVra73iL1eb0rpnaUCDAIDvXA%3D&reserved=0
>>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: multiple_high_prio_jobs.png
Type: image/png
Size: 86069 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20210128/430c9fb4/attachment-0001.png>
More information about the amd-gfx
mailing list