Merge pull request 'improved' (#6) from planner into main
Reviewed-on: http://alex-freenas.ddns.net:3000/M/VisualSapfor/pulls/6
This commit was merged in pull request #6.
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <math.h>
|
||||
#include <thread>
|
||||
#include "File.h"
|
||||
#include "Task.h"
|
||||
#include "Array.h"
|
||||
@@ -107,15 +108,30 @@ public:
|
||||
|
||||
map<int, queue<T*>, std::greater<int>> sortedByKernelNeeds;
|
||||
size_t activeTasks = 0;
|
||||
int maxNeededKernels = 0;
|
||||
|
||||
for (auto& task : this->getElements()) {
|
||||
if (task->getState() == WorkspaceReady) {
|
||||
activeTasks++;
|
||||
sortedByKernelNeeds[task->getKernels()].push(task);
|
||||
if (maxNeededKernels < task->getKernels())
|
||||
maxNeededKernels = task->getKernels();
|
||||
}
|
||||
}
|
||||
|
||||
printf("total tasks count = %ld, active task count %ld, maxkernels %d\n", this->getLength(), activeTasks, maxKernels);
|
||||
const int maxThreads = std::thread::hardware_concurrency();
|
||||
printf("total tasks count = %ld, active task count %ld, maxKernels %d, maxNeededKernels %d, maxThreads %d\n",
|
||||
this->getLength(), activeTasks, maxKernels, maxNeededKernels, maxThreads);
|
||||
|
||||
if (maxKernels > maxThreads) {
|
||||
printf("truncated maxKernels to maxThreads: %d -> %d\n", maxKernels, maxThreads);
|
||||
maxKernels = maxThreads;
|
||||
}
|
||||
|
||||
if (maxNeededKernels > maxKernels) {
|
||||
printf("increased maxKernels to maxNeededKernels: %d -> %d\n", maxKernels, maxNeededKernels);
|
||||
maxKernels = maxNeededKernels;
|
||||
}
|
||||
|
||||
int busyKernels = 0;
|
||||
set<T*> activeTaskSet;
|
||||
@@ -129,7 +145,6 @@ public:
|
||||
vector<T*> toDel;
|
||||
|
||||
size_t done = 0;
|
||||
//size_t step = activeTasks * 0.01; // step == 1%
|
||||
size_t step = ceil(activeTasks * 0.01); // step == 1%
|
||||
const double total = activeTasks;
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
1
|
||||
2
|
||||
Reference in New Issue
Block a user