View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0031763 | Open CASCADE | OCCT:Foundation Classes | public | 2020-09-13 08:46 | 2020-12-02 17:13 |
Reporter | Assigned To | bugmaster | |||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Target Version | 7.5.0 | Fixed in Version | 7.5.0 | ||
Summary | 0031763: Foundation Classes - reporting of progress within parallel algorithms | ||||
Description | Current version of progress indicator tools supporting parallel algorithms developed within 0025748 cannot report properly progress within the scope which is executed by paralleled algorithm (and more generally - in the situation when range is not advanced immediately at the call of the method Next()). The problem is that method Message_ProgressScope::Value() returns field myValue which is incremented when Next() is called. If actual progress advancement is deferred, this does not match actual state of the progress. In parallel scenario scope gets fully discharged by instantiating array of Range objects before actual execution of the algorithm, so its method Value() will return Max(), which is incorrect. Note that this problem was corrected in intermediate variant of the fix for 0025748 (see CR25748_4), but lost with changes conected with introduction of the Range class. | ||||
Steps To Reproduce | See log of test perf fclasses progr_par: Draw[]> test perf fclasses progr_par -echo ... Progress: 0% Progress: 1% Parallel processing: 10000 / 10000 Progress: 2% Parallel processing: 10000 / 10000 ... Progress: 100% Parallel processing: 10000 / 10000 | ||||
Tags | No tags attached. | ||||
Test case number | Not required | ||||
child of | 0025748 | closed | Foundation Classes - Parallel version of progress indicator |
|
Branch CR31763 has been created by abv. SHA-1: 97d29f31d7f0b5e277b96fb64600336777f31dc4 Detailed log of new commits: Author: abv Date: Sun Sep 13 19:48:30 2020 +0300 0031763: Foundation Classes - reporting of progress within parallel algorithms Classes Message_ProgressRange and Message_ProgressScope are improved to store start point of the range. Method Message_ProgressScope::Value() is improved to compute the value in the current scope from the actual current value of the global progress. Description of Message_ProgressScope class is improved. |
|
The fix is provided in branch CR31763 and tested, see Jenkins job CR31763-abv. Please review |
|
Branch CR31763 has been updated forcibly by abv. SHA-1: 3068e63eb1de640eda2b019bc70d53ef6b6237fa |
|
Branch CR31763 has been updated forcibly by abv. SHA-1: 2989179d598c4d4d66c45e3dd639a796eb16478d |
|
Branch CR31763 has been updated forcibly by abv. SHA-1: d7abc02ced510742486df8df27e40db28dc78cac |
|
The last variant of the commit (force-pushed) contain corrections in comments only |
|
+previous design (leading implementation mistakes). leading to implementation mistakes +Note however, that multi-threaded algorithm should pre-allocate per-thread +progress ranges in advance to ensure thread-safety - per-task progress ranges +method More() of Message_ProgressScope should be used to know if the cancel event has come. methods More() and UserBreak() of Message_ProgressScope or Message_ProgressRange should be used to know if the cancel event has come. + Message_ProgressRange (const Message_ProgressScope& theParent, Standard_Real theStart, Standard_Real theDelta) wrap the line +//! process (theTask.Data, aPS); aPS.Next() |
|
Branch CR31763 has been updated forcibly by abv. SHA-1: d29a46b0edec57f85d5ff6efee6a40913edcbf84 |
|
The corrections are force-pushed in the same branch, please review |
|
Test results http://jenkins-test-12.nnov.opencascade.com/view/CR31763-abv/view/COMPARE/ |
|
For integration: occt - CR31763 |
|
Combination - OCCT branch : IR-2020-09-18 master SHA - b0b766826118f74b9857a932b8cec8c52a25c492 a206de37fbfa0bf71bd534ae47192bbec23b8522 Products branch : IR-2020-09-18 SHA - a6486d839da1ba1383ef6cc1a1a446a172f494c7 was compiled on Linux, MacOS and Windows platforms and tested in optimize mode. Number of compiler warnings: No new/fixed warnings Regressions/Differences/Improvements: No regressions/differences CPU differences: Debian80-64: OCCT Total CPU difference: 17528.97000000011 / 17378.390000000145 [+0.87%] Products Total CPU difference: 12127.32000000009 / 12079.540000000095 [+0.40%] Windows-64-VC14: OCCT Total CPU difference: 18862.703125 / 18898.921875 [-0.19%] Products Total CPU difference: 13314.828125 / 13329.21875 [-0.11%] Image differences : No differences that require special attention Memory differences : No differences that require special attention |
|
Branch CR31763 has been deleted by inv. SHA-1: d29a46b0edec57f85d5ff6efee6a40913edcbf84 |
occt: master 7a3e8aad 2020-09-13 16:48:30
Committer: bugmaster Details Diff |
0031763: Foundation Classes - reporting of progress within parallel algorithms Classes Message_ProgressRange and Message_ProgressScope are improved to store start point of the range. Method Message_ProgressScope::Value() is improved to compute the value in the current scope from the actual current value of the global progress. Description of Message_ProgressScope class is improved. Off-topic: - method Message_ProgressScope::Relieve() is renamed to Close() for semantic consistency - article in Upgrade Guide is revised and corrected |
Affected Issues 0031763 |
|
mod - dox/dev_guides/upgrade/upgrade.md | Diff File | ||
mod - src/Draw/Draw_ProgressIndicator.cxx | Diff File | ||
mod - src/Message/Message_ProgressIndicator.hxx | Diff File | ||
mod - src/Message/Message_ProgressRange.hxx | Diff File | ||
mod - src/Message/Message_ProgressScope.hxx | Diff File | ||
mod - src/Message/Message_ProgressSentry.hxx | Diff File | ||
mod - src/QABugs/QABugs_11.cxx | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2020-09-13 08:46 |
|
New Issue | |
2020-09-13 08:46 |
|
Assigned To | => abv |
2020-09-13 08:46 |
|
Relationship added | child of 0025748 |
2020-09-13 08:50 |
|
Description Updated | |
2020-09-13 19:46 | git | Note Added: 0094686 | |
2020-09-13 22:02 |
|
Note Added: 0094688 | |
2020-09-13 22:02 |
|
Assigned To | abv => msv |
2020-09-13 22:02 |
|
Status | new => resolved |
2020-09-14 07:55 | git | Note Added: 0094690 | |
2020-09-14 08:22 | git | Note Added: 0094692 | |
2020-09-14 11:17 | git | Note Added: 0094702 | |
2020-09-14 11:20 |
|
Note Added: 0094704 | |
2020-09-14 12:42 |
|
Note Added: 0094712 | |
2020-09-14 12:43 |
|
Assigned To | msv => abv |
2020-09-14 12:43 |
|
Status | resolved => assigned |
2020-09-14 13:20 | git | Note Added: 0094715 | |
2020-09-14 13:23 |
|
Note Added: 0094716 | |
2020-09-14 13:23 |
|
Status | assigned => resolved |
2020-09-14 13:23 |
|
Assigned To | abv => msv |
2020-09-14 16:08 |
|
Note Added: 0094748 | |
2020-09-14 16:09 |
|
Note Added: 0094749 | |
2020-09-14 16:09 |
|
Assigned To | msv => bugmaster |
2020-09-14 16:09 |
|
Status | resolved => reviewed |
2020-09-19 15:38 | bugmaster | Test case number | => Not required |
2020-09-19 17:19 | bugmaster | Note Added: 0095062 | |
2020-09-19 17:19 | bugmaster | Status | reviewed => tested |
2020-09-20 10:55 | bugmaster | Changeset attached | => occt master 7a3e8aad |
2020-09-20 10:55 | bugmaster | Status | tested => verified |
2020-09-20 10:55 | bugmaster | Resolution | open => fixed |
2020-09-20 11:14 | git | Note Added: 0095128 | |
2020-12-02 16:43 |
|
Fixed in Version | => 7.5.0 |
2020-12-02 17:13 |
|
Status | verified => closed |