| 1477 | } |
| 1478 | |
| 1479 | void |
| 1480 | DistributionMapping::SFCProcessorMap (const BoxArray& boxes, int nprocs) |
| 1481 | { |
| 1482 | BL_ASSERT( ! boxes.empty()); |
| 1483 | |
| 1484 | m_ref->clear(); |
| 1485 | m_ref->m_pmap.resize(boxes.size()); |
| 1486 | |
| 1487 | if (boxes.size() < Long(sfc_threshold)*nprocs) |
| 1488 | { |
| 1489 | KnapSackProcessorMap(boxes,nprocs); |
| 1490 | } |
| 1491 | else |
| 1492 | { |
| 1493 | std::vector<Long> wgts; |
| 1494 | |
| 1495 | wgts.reserve(boxes.size()); |
| 1496 | |
| 1497 | for (int i = 0, N = static_cast<int>(boxes.size()); i < N; ++i) |
| 1498 | { |
| 1499 | wgts.push_back(boxes[i].numPts()); |
| 1500 | } |
| 1501 | |
| 1502 | SFCProcessorMapDoIt(boxes,wgts,nprocs); |
| 1503 | } |
| 1504 | } |
| 1505 | |
| 1506 | void |
| 1507 | DistributionMapping::SFCProcessorMap (const BoxArray& boxes, |