diff options
| author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-05-16 12:47:27 -0400 |
|---|---|---|
| committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-05-16 12:47:27 -0400 |
| commit | 817061bc060265e4682f082eac760c390d378210 (patch) | |
| tree | b9dc0800d4ad64bb5ad453238cf2b0efccdb7a27 /native/src/sharedres.cpp | |
| parent | 403e13383f4b6813d27d4ec4067a29a552893de4 (diff) | |
C++: Break out the C-OMLP code into own file
Part of refactoring sharedres.cpp.
Diffstat (limited to 'native/src/sharedres.cpp')
| -rw-r--r-- | native/src/sharedres.cpp | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/native/src/sharedres.cpp b/native/src/sharedres.cpp index 02815dc..976f94e 100644 --- a/native/src/sharedres.cpp +++ b/native/src/sharedres.cpp | |||
| @@ -554,75 +554,6 @@ static Interference bound_blocking(const LimitedContentionSet &lcs, unsigned int | |||
| 554 | } | 554 | } |
| 555 | 555 | ||
| 556 | 556 | ||
| 557 | BlockingBounds* clustered_omlp_bounds(const ResourceSharingInfo& info, | ||
| 558 | unsigned int procs_per_cluster, | ||
| 559 | int dedicated_irq) | ||
| 560 | { | ||
| 561 | // split everything by partition | ||
| 562 | Clusters clusters; | ||
| 563 | |||
| 564 | split_by_cluster(info, clusters); | ||
| 565 | |||
| 566 | // split each partition by resource | ||
| 567 | ClusterResources resources; | ||
| 568 | |||
| 569 | split_by_resource(clusters, resources); | ||
| 570 | |||
| 571 | // sort each contention set by request length | ||
| 572 | sort_by_request_length(resources); | ||
| 573 | |||
| 574 | // We need for each task the maximum request span. We also need the | ||
| 575 | // maximum direct blocking from remote partitions for each request. We | ||
| 576 | // can determine both in one pass. | ||
| 577 | |||
| 578 | unsigned int i; | ||
| 579 | |||
| 580 | // direct blocking results | ||
| 581 | BlockingBounds* _results = new BlockingBounds(info); | ||
| 582 | BlockingBounds& results = *_results; | ||
| 583 | |||
| 584 | for (i = 0; i < info.get_tasks().size(); i++) | ||
| 585 | { | ||
| 586 | const TaskInfo& tsk = info.get_tasks()[i]; | ||
| 587 | |||
| 588 | Interference bterm; | ||
| 589 | |||
| 590 | foreach(tsk.get_requests(), jt) | ||
| 591 | { | ||
| 592 | const RequestBound& req = *jt; | ||
| 593 | Interference blocking; | ||
| 594 | |||
| 595 | blocking = np_fifo_per_resource( | ||
| 596 | tsk, resources, procs_per_cluster, | ||
| 597 | req.get_resource_id(), | ||
| 598 | req.get_num_requests(), | ||
| 599 | dedicated_irq); | ||
| 600 | |||
| 601 | // add in blocking term | ||
| 602 | bterm += blocking; | ||
| 603 | |||
| 604 | // Keep track of maximum request span. | ||
| 605 | // Is this already a single-issue request? | ||
| 606 | if (req.get_num_requests() != 1) | ||
| 607 | blocking = np_fifo_per_resource( | ||
| 608 | tsk, resources, procs_per_cluster, | ||
| 609 | req.get_resource_id(), 1); | ||
| 610 | |||
| 611 | // The span includes our own request. | ||
| 612 | blocking.total_length += req.get_request_length(); | ||
| 613 | blocking.count += 1; | ||
| 614 | // Update max. request span. | ||
| 615 | results.raise_request_span(i, blocking); | ||
| 616 | } | ||
| 617 | |||
| 618 | results[i] = bterm; | ||
| 619 | } | ||
| 620 | |||
| 621 | // This is the initial delay due to priority donation. | ||
| 622 | charge_arrival_blocking(info, results); | ||
| 623 | |||
| 624 | return _results; | ||
| 625 | } | ||
| 626 | 557 | ||
| 627 | BlockingBounds* clustered_kx_omlp_bounds(const ResourceSharingInfo& info, | 558 | BlockingBounds* clustered_kx_omlp_bounds(const ResourceSharingInfo& info, |
| 628 | const ReplicaInfo& replicaInfo, | 559 | const ReplicaInfo& replicaInfo, |
