Opened 4 years ago

Closed 3 years ago

#1377 closed defect (fixed)

Split parallelism is broken in VTM (8a621a2b)

Reported by: adamjw Owned by:
Priority: minor Milestone: VTM-12.1
Component: VTM Version: VTM-10.0
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…


In a recent version of VTM (8a621a2b), the split-parallelism is broken. After enabling the macro ENABLE_SPLIT_PARALLELISM, the encoder would first crash with check on consistency between CodingStructure and Partitioner tree/mode type. After fixing those by properly extending the Partitioner::copyState method, a more problematic issue arises. In EncCU.cpp (1449-1488) chroma search for local dual tree is performed. To start-off this search, the currently best luma candidate is stored in the picture-level CodingStructure (cs) instance. When using split parallelism, multiple threads concurrently perform the RD search for the same area in the picture, meaning, possibly creating a race condition when copying to the picture-level cs.
To solve this problem, one would need to adapt the chroma search to not assume the currently-best luma candidate is stored in the picture-level cs but rather in some cs instance that is local to the thread (i.e. below the split that activates the split-level parallelism). As this might be complicated and no-one noticed so far I would recommend removing the feature.

Change history (2)

comment:1 Changed 4 years ago by ksuehring

  • Version changed from VTM-10.0rc1 to VTM-10.0

comment:2 Changed 3 years ago by fbossen

  • Milestone set to VTM-12.1
  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.