improved
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1
|
2
|
||||||
Reference in New Issue
Block a user