diff --git a/tests/vault/gear/test-chain-load-test.cpp b/tests/vault/gear/test-chain-load-test.cpp index 6a610ba1c..13df1286c 100644 --- a/tests/vault/gear/test-chain-load-test.cpp +++ b/tests/vault/gear/test-chain-load-test.cpp @@ -60,21 +60,43 @@ namespace test { run (Arg) { simpleUsage(); + verify_Node(); + witch_gate(); } /** @test TODO demonstrate simple usage of the test-load + * @todo WIP 11/23 🔁 define ⟶ 🔁 implement */ void simpleUsage() { - UNIMPLEMENTED ("setup of TestChainLoad"); + TestChainLoad testLoad; } /** @test TODO diagnostic blah + * @todo WIP 11/23 🔁 define ⟶ implement + */ + void + verify_Node() + { + using Node = TestChainLoad<>::Node; + + Node n0; + CHECK (n0.hash == 0); + + Node n1{23}, n2{55}; + CHECK (n1.hash == 23); + CHECK (n2.hash == 55); + } + + + + /** @test TODO diagnostic blah + * @todo WIP 11/23 🔁 define ⟶ implement */ void witch_gate() diff --git a/tests/vault/gear/test-chain-load.hpp b/tests/vault/gear/test-chain-load.hpp index d2564e29a..533c9348a 100644 --- a/tests/vault/gear/test-chain-load.hpp +++ b/tests/vault/gear/test-chain-load.hpp @@ -62,6 +62,9 @@ //#include //#include //#include +#include +#include +#include namespace vault{ @@ -91,19 +94,39 @@ namespace test { /** * A Generator for synthetic Render Jobs for Scheduler load testing. + * @tparam maxFan maximal fan-in/out from a node, also limits maximal parallel strands. * @see TestChainLoad_test */ + template class TestChainLoad : util::NonCopyable { public: - TestChainLoad () + struct Node + : util::MoveOnly + { + size_t hash; + + Node(size_t seed =0) + : hash{seed} + { } + }; + + private: + using NodeStorage = std::array; + + std::unique_ptr nodes_; + + public: + TestChainLoad() + : nodes_{new NodeStorage} { } private: }; + }}} // namespace vault::gear::test #endif /*VAULT_GEAR_TEST_TEST_CHAIN_LOAD_H*/ diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 7fc55b701..41e3b7826 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -95600,20 +95600,6 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - - - - - - - - - - - - @@ -95670,6 +95656,240 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + + + + + + + +

+ ....denn sonst könnte sich diese Struktur nicht entfalten, ohne die Wahrscheinlichkeiten gezielt global zu steuern. Zu Beginn muß einmal fest verzweigt werden, und zum Abschluss müssen einmalig alle noch offenen Knoten in einen Endknoten zusammengeführt werden. +

+ + +
+
+ + + + + + +

+ Und das legt auch nahe, die Knoten selber im Block zu allozieren. Die Struktur wird dann sukzessive durch Herstellen von Verknüpfungen aufgebaut, und jeweils neue Knoten werden fortschreitend „belegt“ +

+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ ...und zwar da sie wegen der möglicherweise chaotischen Verknüpfungsstruktur schwierig zu programmieren und maximal aufwendig wäre. Das gilt entsprechend auf das Erzeugen des Schedule +

+ + +
+
+ + + + + + + + + + +

+ ...denn auch die Topologie-Generierung braucht bereits eine Zufallszahl pro Node, und dafür nimmt man sinnvollerweise den berechneten Hash für diese Node, also ruft die Berechnungsfunktion der Node auf. +

+ + +
+
+
+ + + + + + + + + +

+ Wenn man das Scheduling nicht auf einmal macht, bleiben gewisse Querverbindungen undeklariert, auch auf den Nodes, die man schon in den Schedulter übergeben hat. Da jedoch auf jeder »Zeitebene« für jeden parallelen Strang jeweils eine Node sitzt, können maximal die Verknüpfungen zur unmittelbar vorausgehenden Zeitebene fehlen; sofern man das nächste Paket für's Scheduling behandelt, bevor diese unmittelbar vorhergehende Zeitebene tatsächlich schon ihre Aktivierung erreicht hat, können diese Verbindungen noch nachgetragen werden. +

+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+ Begründung: man möchte mit dem Ding heftigen Druck erzeugen können. Daher muß es selbst performant implementiert sein; unkoordinierte Heap-Allokationen für Predecessor/Successor-Tabellen können wir uns da nicht gestatten. +

+ + +
+ + + + + + +

+ weil per Festlegung die letzte Node alles zusammenführen soll, und ich keinen komplizierteren Algorithmus programmieren will +

+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +