Opened 4 years ago
Closed 4 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@… |
Description
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 4 years ago by fbossen
- Milestone set to VTM-12.1
- Resolution set to fixed
- Status changed from new to closed
See https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/merge_requests/2031