This commit is contained in:
2023-12-23 18:06:51 +03:00
parent 7684966849
commit 405b873f8e
2 changed files with 19 additions and 4 deletions

View File

@@ -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;