improved #6

Merged
M merged 1 commits from planner into main 2023-12-23 18:36:15 +00:00
2 changed files with 19 additions and 4 deletions
Showing only changes of commit 405b873f8e - Show all commits

View File

@@ -5,6 +5,7 @@
#include <vector> #include <vector>
#include <queue> #include <queue>
#include <math.h> #include <math.h>
#include <thread>
#include "File.h" #include "File.h"
#include "Task.h" #include "Task.h"
#include "Array.h" #include "Array.h"
@@ -107,15 +108,30 @@ public:
map<int, queue<T*>, std::greater<int>> sortedByKernelNeeds; map<int, queue<T*>, std::greater<int>> sortedByKernelNeeds;
size_t activeTasks = 0; size_t activeTasks = 0;
int maxNeededKernels = 0;
for (auto& task : this->getElements()) { for (auto& task : this->getElements()) {
if (task->getState() == WorkspaceReady) { if (task->getState() == WorkspaceReady) {
activeTasks++; activeTasks++;
sortedByKernelNeeds[task->getKernels()].push(task); 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; int busyKernels = 0;
set<T*> activeTaskSet; set<T*> activeTaskSet;
@@ -129,7 +145,6 @@ public:
vector<T*> toDel; vector<T*> toDel;
size_t done = 0; size_t done = 0;
//size_t step = activeTasks * 0.01; // step == 1%
size_t step = ceil(activeTasks * 0.01); // step == 1% size_t step = ceil(activeTasks * 0.01); // step == 1%
const double total = activeTasks; const double total = activeTasks;

View File

@@ -1 +1 @@
1 2