Replies: 4 comments 8 replies
-
Hi @tlunet looks good!
I also changed the way the graph is plotted a bit. Instead of instantiating a PintRun object with a BlockIteration, we can now call a plotGraph(N,K) function of a BlockIteration to plot the graph. I think this makes more sense, and the PintRun class is used completely internally, making it a bit easier for a user. One thing that still confuses me a bit in the code is that we use the BlockOperator class for both a BlockOperator and a BlockCoefficent. On the one hand I understand why, on the other hand it makes the wording in the code a little watery sometimes. But it's probably okay. Thursday 17 Nov 17:30 eu time works for me. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the implementations ! About the confusion BlockOperator / BlockCoefficients, maybe the term BlockCoefficient should not be used itself : we didn't use it in the GFM paper, and this was introduced only by us when trying to implement object representing everything. It appears almost naturally at the end that we don't need it, so maybe we should stick to the term BlockOperator when talking about this ? After all, this is in fact matrices, and arithmetic operations between matrices produce matrices ... also, the Then for how the Block iteration compute runtime, it depends on the BlockProblems : the latter defines the fine block propagator, from which the cost can be extracted. So if a BlockIteration is linked to a block problem, then we can implement the runtime computation through the BlockProblem. But since the block problem also defines everything else (block discretization, time scheme, ...) we may want to have BlockIteration that does not depend on all of that, to allow analysis where we know the cost of each block operators (measured on cluster, for instance). There are many ways to do that:
Not so sure about what's best for now, working on it ... |
Beta Was this translation helpful? Give feedback.
-
Two additional points :
|
Beta Was this translation helpful? Give feedback.
-
I added a new scheduler file to handle different schedulers in the future. This moves this part out of the graph, which makes more sense. Currently, we have two working schedulers, an "optimal" scheduler that accepts infinite processes, and a block-by-block scheduler that can be used to simulate typical PinT scheduling. I also want to implement a window strategy scheduler soon, but that's a bit more complicated. In addition to these typical schedulers, I'd like to look at some strategies for scheduling the task graph for a given number of processes. The speedup now also depends on the schedule, and both the results for a given schedule and the results of an "optimal" schedule are given. Also, I have started the documentation, but there is still a lot for me to do. |
Beta Was this translation helpful? Give feedback.
-
Hi @JensHahne,
tooks me a bit more time to implement the block operators manipulations, but it's done and works at least for Parareal (see testing.py). I did reorganize the code tho, and made some few changes, in particular there is two matrices to represent a block operator now instead of one as before (see doc in the README file).
Two things now :
main.py
: it allows to represent the algorithm and do the performance analysis with Block Operator containing only cost. There is still some bug in the representation with the two other block iteration I added (which represent Approximate Block Jacobi and Approximate Block Gauss-Seidel, but in the same representation as Parareal using F and G).speedUp(N,K)
for theBlockIteration
class, that would eventually use functionalities implemented inrun.py
orgraph.py
? Once we have that, I could combine it with the error analysis implemented in somegetNIter(tolerance)
that would return the number of iterations required to reach a given error tolerance (linked to the solved problem).And last but not least : we didn't set a next meeting, but how is Thursday 17 Nov. at 17h30 (EU time) for you ? I will be traveling on Friday the same time (our usual spot ...).
Beta Was this translation helpful? Give feedback.
All reactions