DARMA-tasking / LB-analysis-framework

Analysis framework for exploring, testing, and comparing load balancing strategies
Other
3 stars 1 forks source link

#305: cleaned up confusing names (e.g. phase_ids for single phase) #307

Closed ppebay closed 1 year ago

marcinwrobel1986 commented 1 year ago

@ppebay does it supposed to fix the problem with Rank instantiation?

ppebay commented 1 year ago

Yes @marcinwrobel1986 the rank is now being instantiated only once per phase, as this piece of code:

            # Instantiante and store rank for current phase
            returned_dict[curr_phase_id] = (
                phase_rank := Rank(node_id, logger=self.__logger))

is outside the for task in p["tasks"]: loop

marcinwrobel1986 commented 1 year ago

Yes @marcinwrobel1986 the rank is now being instantiated only once per phase, as this piece of code:

            # Instantiante and store rank for current phase
            returned_dict[curr_phase_id] = (
                phase_rank := Rank(node_id, logger=self.__logger))

is outside the for task in p["tasks"]: loop

Ok, please give me a while to verify that

marcinwrobel1986 commented 1 year ago

@ppebay how exactly have you verified that the Rank is instantiated only once?

[response by @ppebay]: @marcinwrobel1986 it does not have to be instantiated only once stricto sensu: it has to be instantiated once per phase. In other words if there are 20 phases it has to be instantiated 20 times. But what is incorrect is the current behavior in develop which is to instantiate it once per task because the Rank() instantiator is incorrectly called from inside the for task in tasks loop!

marcinwrobel1986 commented 1 year ago

I perfomed all the checks on the 305-fix-incorrect-rank-instantiation-in-JSON-VT-reader which was pulled before checks.

How I verified Rank instantiation:

Output of print statements:

@@@ 0
@@@@@ 140711768567376
@@@ 0
@@@@@ 140711768566656
@@@ 0
@@@@@ 140711768196960
@@@ 0
@@@@@ 140711768197344
@@@ 0
@@@@@ 140711768197488
@@@ 0
@@@@@ 140711768197248
@@@ 0
@@@@@ 140711768197200
@@@ 0
@@@@@ 140711768197680
@@@ 0
@@@@@ 140711768196864
@@@ 0
@@@@@ 140711768197008
@@@ 0
@@@@@ 140711768197104
@@@ 1
@@@@@ 140711768196912
@@@ 1
@@@@@ 140711768197056
@@@ 1
@@@@@ 140711768199120
@@@ 1
@@@@@ 140711768280416
@@@ 1
@@@@@ 140711768280560
@@@ 1
@@@@@ 140711768280608
@@@ 1
@@@@@ 140711768280512
@@@ 1
@@@@@ 140711768280224
@@@ 1
@@@@@ 140711768279360
@@@ 1
@@@@@ 140711768279936
@@@ 1
@@@@@ 140711768279984
@@@ 2
@@@@@ 140711768197008
@@@ 2
@@@@@ 140711768196864
@@@ 2
@@@@@ 140711768279744
@@@ 2
@@@@@ 140711768278688
@@@ 2
@@@@@ 140711768279072
@@@ 2
@@@@@ 140711768279120
@@@ 2
@@@@@ 140711768279168
@@@ 2
@@@@@ 140711768279216
@@@ 2
@@@@@ 140711768279264
@@@ 2
@@@@@ 140711768278784
@@@ 2
@@@@@ 140711768279024
@@@ 3
@@@@@ 140711768197056
@@@ 3
@@@@@ 140711768197104
@@@ 3
@@@@@ 140711768278592
@@@ 3
@@@@@ 140711768278112
@@@ 3
@@@@@ 140711768278352
@@@ 3
@@@@@ 140711768278208
@@@ 3
@@@@@ 140711768278256
@@@ 3
@@@@@ 140711768278160
@@@ 3
@@@@@ 140711768277056
@@@ 3
@@@@@ 140711768277104
@@@ 3
@@@@@ 140711768277152
@@@ 4
@@@@@ 140711768199120
@@@ 4
@@@@@ 140711768279024
@@@ 4
@@@@@ 140711768277632
@@@ 4
@@@@@ 140711768277776
@@@ 4
@@@@@ 140711768277728
@@@ 4
@@@@@ 140711768277824
@@@ 4
@@@@@ 140711768277872
@@@ 4
@@@@@ 140711768277968
@@@ 4
@@@@@ 140711768278016
@@@ 4
@@@@@ 140711768278064
@@@ 4
@@@@@ 140711768278736
@@@ 5
@@@@@ 140711768196864
@@@ 5
@@@@@ 140711768277152
@@@ 5
@@@@@ 140711768280176
@@@ 5
@@@@@ 140711713651776
@@@ 5
@@@@@ 140711602377872
@@@ 5
@@@@@ 140711602377824
@@@ 5
@@@@@ 140711602377776
@@@ 5
@@@@@ 140711602378016
@@@ 5
@@@@@ 140711602377920
@@@ 5
@@@@@ 140711602377968
@@@ 5
@@@@@ 140711602378064
@@@ 6
@@@@@ 140711768278064
@@@ 6
@@@@@ 140711768278016
@@@ 6
@@@@@ 140711602378448
@@@ 6
@@@@@ 140711602378496
@@@ 6
@@@@@ 140711602378544
@@@ 6
@@@@@ 140711602378592
@@@ 6
@@@@@ 140711602378640
@@@ 6
@@@@@ 140711602378688
@@@ 6
@@@@@ 140711602378736
@@@ 6
@@@@@ 140711602378784
@@@ 6
@@@@@ 140711602378832
@@@ 7
@@@@@ 140711768280176
@@@ 7
@@@@@ 140711768277152
@@@ 7
@@@@@ 140711602379216
@@@ 7
@@@@@ 140711602379264
@@@ 7
@@@@@ 140711602379312
@@@ 7
@@@@@ 140711602379360
@@@ 7
@@@@@ 140711602379408
@@@ 7
@@@@@ 140711602379456
@@@ 7
@@@@@ 140711602379504
@@@ 7
@@@@@ 140711602379552
@@@ 7
@@@@@ 140711602379600
@@@ 8
@@@@@ 140711713651776
@@@ 8
@@@@@ 140711602378832
@@@ 8
@@@@@ 140711602379984
@@@ 8
@@@@@ 140711602380032
@@@ 8
@@@@@ 140711602380080
@@@ 8
@@@@@ 140711602380128
@@@ 8
@@@@@ 140711602380176
@@@ 8
@@@@@ 140711602380224
@@@ 8
@@@@@ 140711602380272
@@@ 8
@@@@@ 140711602380320
@@@ 8
@@@@@ 140711602380368
@@@ 9
@@@@@ 140711768278016
@@@ 9
@@@@@ 140711602379600
@@@ 9
@@@@@ 140711602380752
@@@ 9
@@@@@ 140711598436416
@@@ 9
@@@@@ 140711598436464
@@@ 9
@@@@@ 140711598436512
@@@ 9
@@@@@ 140711598436560
@@@ 9
@@@@@ 140711598436608
@@@ 9
@@@@@ 140711598436656
@@@ 9
@@@@@ 140711598436704
@@@ 9
@@@@@ 140711598436752
@@@ 10
@@@@@ 140711602380320
@@@ 10
@@@@@ 140711602380272
@@@ 10
@@@@@ 140711598437136
@@@ 10
@@@@@ 140711598437184
@@@ 10
@@@@@ 140711598437232
@@@ 10
@@@@@ 140711598437280
@@@ 10
@@@@@ 140711598437328
@@@ 10
@@@@@ 140711598437376
@@@ 10
@@@@@ 140711598437424
@@@ 10
@@@@@ 140711598437472
@@@ 10
@@@@@ 140711598437520
@@@ 11
@@@@@ 140711602379600
@@@ 11
@@@@@ 140711602380368
@@@ 11
@@@@@ 140711598437904
@@@ 11
@@@@@ 140711598437952
@@@ 11
@@@@@ 140711598438000
@@@ 11
@@@@@ 140711598438048
@@@ 11
@@@@@ 140711598438096
@@@ 11
@@@@@ 140711598438144
@@@ 11
@@@@@ 140711598438192
@@@ 11
@@@@@ 140711598438240
@@@ 11
@@@@@ 140711598438288
@@@ 12
@@@@@ 140711602380752
@@@ 12
@@@@@ 140711598437520
@@@ 12
@@@@@ 140711598438672
@@@ 12
@@@@@ 140711598438720
@@@ 12
@@@@@ 140711598438768
@@@ 12
@@@@@ 140711598438816
@@@ 12
@@@@@ 140711598438864
@@@ 12
@@@@@ 140711598438912
@@@ 12
@@@@@ 140711598438960
@@@ 12
@@@@@ 140711598439008
@@@ 12
@@@@@ 140711598439056
@@@ 13
@@@@@ 140711602380272
@@@ 13
@@@@@ 140711598438288
@@@ 13
@@@@@ 140711598439440
@@@ 13
@@@@@ 140711598439488
@@@ 13
@@@@@ 140711598439536
@@@ 13
@@@@@ 140711598439584
@@@ 13
@@@@@ 140711598439632
@@@ 13
@@@@@ 140711598439680
@@@ 13
@@@@@ 140711598439728
@@@ 13
@@@@@ 140711598439776
@@@ 13
@@@@@ 140711598439824
@@@ 14
@@@@@ 140711598439056
@@@ 14
@@@@@ 140711598439008
@@@ 14
@@@@@ 140711598440208
@@@ 14
@@@@@ 140711598440256
@@@ 14
@@@@@ 140711598440304
@@@ 14
@@@@@ 140711598440352
@@@ 14
@@@@@ 140711598440400
@@@ 14
@@@@@ 140711597736000
@@@ 14
@@@@@ 140711597736048
@@@ 14
@@@@@ 140711597736096
@@@ 14
@@@@@ 140711597736144
@@@ 15
@@@@@ 140711598439776
@@@ 15
@@@@@ 140711598439728
@@@ 15
@@@@@ 140711597736528
@@@ 15
@@@@@ 140711597736576
@@@ 15
@@@@@ 140711597736624
@@@ 15
@@@@@ 140711597736672
@@@ 15
@@@@@ 140711597736720
@@@ 15
@@@@@ 140711597736768
@@@ 15
@@@@@ 140711597736816
@@@ 15
@@@@@ 140711597736864
@@@ 15
@@@@@ 140711597736912
@@@ 16
@@@@@ 140711598440352
@@@ 16
@@@@@ 140711598440304
@@@ 16
@@@@@ 140711597737296
@@@ 16
@@@@@ 140711597737344
@@@ 16
@@@@@ 140711597737392
@@@ 16
@@@@@ 140711597737440
@@@ 16
@@@@@ 140711597737488
@@@ 16
@@@@@ 140711597737536
@@@ 16
@@@@@ 140711597737584
@@@ 16
@@@@@ 140711597737632
@@@ 16
@@@@@ 140711597737680
@@@ 17
@@@@@ 140711598440400
@@@ 17
@@@@@ 140711597736912
@@@ 17
@@@@@ 140711597738064
@@@ 17
@@@@@ 140711597738112
@@@ 17
@@@@@ 140711597738160
@@@ 17
@@@@@ 140711597738208
@@@ 17
@@@@@ 140711597738256
@@@ 17
@@@@@ 140711597738304
@@@ 17
@@@@@ 140711597738352
@@@ 17
@@@@@ 140711597738400
@@@ 17
@@@@@ 140711597738448
@@@ 18
@@@@@ 140711598439728
@@@ 18
@@@@@ 140711597737680
@@@ 18
@@@@@ 140711597738832
@@@ 18
@@@@@ 140711597738880
@@@ 18
@@@@@ 140711597738928
@@@ 18
@@@@@ 140711597738976
@@@ 18
@@@@@ 140711597739024
@@@ 18
@@@@@ 140711597739072
@@@ 18
@@@@@ 140711597739120
@@@ 18
@@@@@ 140711597739168
@@@ 18
@@@@@ 140711597739216
@@@ 19
@@@@@ 140711597738448
@@@ 19
@@@@@ 140711597738400
@@@ 19
@@@@@ 140711597739600
@@@ 19
@@@@@ 140711597739648
@@@ 19
@@@@@ 140711597739696
@@@ 19
@@@@@ 140711597739744
@@@ 19
@@@@@ 140711597739792
@@@ 19
@@@@@ 140711597739840
@@@ 19
@@@@@ 140711597739888
@@@ 19
@@@@@ 140711597739936
@@@ 19
@@@@@ 140711597739984
@@@ 20
@@@@@ 140711597739168
@@@ 20
@@@@@ 140711597739120
@@@ 20
@@@@@ 140711597728144
@@@ 20
@@@@@ 140711597728192
@@@ 20
@@@@@ 140711597728240
@@@ 20
@@@@@ 140711597728288
@@@ 20
@@@@@ 140711597728336
@@@ 20
@@@@@ 140711597728384
@@@ 20
@@@@@ 140711597728432
@@@ 20
@@@@@ 140711597728480
@@@ 20
@@@@@ 140711597728528
@@@ 21
@@@@@ 140711597739936
@@@ 21
@@@@@ 140711597739888
@@@ 21
@@@@@ 140711597728912
@@@ 21
@@@@@ 140711597728960
@@@ 21
@@@@@ 140711597729008
@@@ 21
@@@@@ 140711597729056
@@@ 21
@@@@@ 140711597729104
@@@ 21
@@@@@ 140711597729152
@@@ 21
@@@@@ 140711597729200
@@@ 21
@@@@@ 140711597729248
@@@ 21
@@@@@ 140711597729296
@@@ 22
@@@@@ 140711597739984
@@@ 22
@@@@@ 140711597728528
@@@ 22
@@@@@ 140711597729680
@@@ 22
@@@@@ 140711597729728
@@@ 22
@@@@@ 140711597729776
@@@ 22
@@@@@ 140711597729824
@@@ 22
@@@@@ 140711597729872
@@@ 22
@@@@@ 140711597729920
@@@ 22
@@@@@ 140711597729968
@@@ 22
@@@@@ 140711597730016
@@@ 22
@@@@@ 140711597730064
@@@ 23
@@@@@ 140711597739120
@@@ 23
@@@@@ 140711597729296
@@@ 23
@@@@@ 140711597730448
@@@ 23
@@@@@ 140711597730496
@@@ 23
@@@@@ 140711597730544
@@@ 23
@@@@@ 140711597730592
@@@ 23
@@@@@ 140711597730640
@@@ 23
@@@@@ 140711597730688
@@@ 23
@@@@@ 140711597730736
@@@ 23
@@@@@ 140711597730784
@@@ 23
@@@@@ 140711597730832
@@@ 24
@@@@@ 140711597730064
@@@ 24
@@@@@ 140711597730016
@@@ 24
@@@@@ 140711597731216
@@@ 24
@@@@@ 140711597731264
@@@ 24
@@@@@ 140711597731312
@@@ 24
@@@@@ 140711597731360
@@@ 24
@@@@@ 140711597731408
@@@ 24
@@@@@ 140711597731456
@@@ 24
@@@@@ 140711597731504
@@@ 24
@@@@@ 140711597731552
@@@ 24
@@@@@ 140711597731600
@@@ 25
@@@@@ 140711597730832
@@@ 25
@@@@@ 140711597730784
@@@ 25
@@@@@ 140711597408464
@@@ 25
@@@@@ 140711597408512
@@@ 25
@@@@@ 140711597408560
@@@ 25
@@@@@ 140711597408608
@@@ 25
@@@@@ 140711597408656
@@@ 25
@@@@@ 140711597408704
@@@ 25
@@@@@ 140711597408752
@@@ 25
@@@@@ 140711597408800
@@@ 25
@@@@@ 140711597408848
@@@ 26
@@@@@ 140711597731552
@@@ 26
@@@@@ 140711597731504
@@@ 26
@@@@@ 140711597409232
@@@ 26
@@@@@ 140711597409280
@@@ 26
@@@@@ 140711597409328
@@@ 26
@@@@@ 140711597409376
@@@ 26
@@@@@ 140711597409424
@@@ 26
@@@@@ 140711597409472
@@@ 26
@@@@@ 140711597409520
@@@ 26
@@@@@ 140711597409568
@@@ 26
@@@@@ 140711597409616
@@@ 27
@@@@@ 140711597731600
@@@ 27
@@@@@ 140711597408848
@@@ 27
@@@@@ 140711597410000
@@@ 27
@@@@@ 140711597410048
@@@ 27
@@@@@ 140711597410096
@@@ 27
@@@@@ 140711597410144
@@@ 27
@@@@@ 140711597410192
@@@ 27
@@@@@ 140711597410240
@@@ 27
@@@@@ 140711597410288
@@@ 27
@@@@@ 140711597410336
@@@ 27
@@@@@ 140711597410384
@@@ 28
@@@@@ 140711597730784
@@@ 28
@@@@@ 140711597409616
@@@ 28
@@@@@ 140711597410768
@@@ 28
@@@@@ 140711597410816
@@@ 28
@@@@@ 140711597410864
@@@ 28
@@@@@ 140711597410912
@@@ 28
@@@@@ 140711597410960
@@@ 28
@@@@@ 140711597411008
@@@ 28
@@@@@ 140711597411056
@@@ 28
@@@@@ 140711597411104
@@@ 28
@@@@@ 140711597411152
@@@ 29
@@@@@ 140711597410384
@@@ 29
@@@@@ 140711597410336
@@@ 29
@@@@@ 140711597411536
@@@ 29
@@@@@ 140711597411584
@@@ 29
@@@@@ 140711597411632
@@@ 29
@@@@@ 140711597411680
@@@ 29
@@@@@ 140711597411728
@@@ 29
@@@@@ 140711597411776
@@@ 29
@@@@@ 140711597411824
@@@ 29
@@@@@ 140711597411872
@@@ 29
@@@@@ 140711597411920
@@@ 30
@@@@@ 140711597411152
@@@ 30
@@@@@ 140711597411104
@@@ 30
@@@@@ 140711597412304
@@@ 30
@@@@@ 140711594700864
@@@ 30
@@@@@ 140711594700912
@@@ 30
@@@@@ 140711594700960
@@@ 30
@@@@@ 140711594701008
@@@ 30
@@@@@ 140711594701056
@@@ 30
@@@@@ 140711594701104
@@@ 30
@@@@@ 140711594701152
@@@ 30
@@@@@ 140711594701200
@@@ 31
@@@@@ 140711597411872
@@@ 31
@@@@@ 140711597411824
@@@ 31
@@@@@ 140711594701584
@@@ 31
@@@@@ 140711594701632
@@@ 31
@@@@@ 140711594701680
@@@ 31
@@@@@ 140711594701728
@@@ 31
@@@@@ 140711594701776
@@@ 31
@@@@@ 140711594701824
@@@ 31
@@@@@ 140711594701872
@@@ 31
@@@@@ 140711594701920
@@@ 31
@@@@@ 140711594701968

My observations:

@lifflander @nlslatt when you will be reviewing that, please take a look at two of my PR's, which were closed where the problem was explained and solved.

First PR - PR #306

First PR - PR #309

Desired output:

I hope that would help to solve the problem and verify that is actually solved. Thanks

ppebay commented 1 year ago

@marcinwrobel1986 : no, it does not behave as previously. With that line of code:

            # Instantiante and store rank for current phase
            returned_dict[curr_phase_id] = (
                phase_rank := Rank(node_id, logger=self.__logger))

now being outside the for task in p["tasks"]: loop it is impossible to observe the same as before!

The issue here is that you are confusing:

  1. per-phase rank instantiation (which is what you are showing above), which is normal and alright,
  2. per-task rank instantiation (which is correct).

For example, using the conf.yaml case, here is what is happening with the new code in branch 305:

[lbsVTDataReader] Reading /Users/pppebay/Documents/Git/LB-analysis-framework/data/synthetic_lb_data/data.0.json VT object map
[lbsVTDataReader] Reading /Users/pppebay/Documents/Git/LB-analysis-framework/data/synthetic_lb_data/data.1.json VT object map
[lbsVTDataReader] Reading /Users/pppebay/Documents/Git/LB-analysis-framework/data/synthetic_lb_data/data.2.json VT object map
[lbsVTDataReader] Reading /Users/pppebay/Documents/Git/LB-analysis-framework/data/synthetic_lb_data/data.3.json VT object map
Instantiating rank 0
Instantiating rank 1
Instantiating rank 2
Instantiating rank 3

-- one instantiation per rank (as there is only one phase, then we have only 4 instantiations, as should be the case).

In contrast, with the code that is currently in develop, we get:

[lbsVTDataReader] Reading /Users/pppebay/Documents/Git/LB-analysis-framework/data/synthetic_lb_data/data.0.json VT object map
[lbsVTDataReader] Reading /Users/pppebay/Documents/Git/LB-analysis-framework/data/synthetic_lb_data/data.1.json VT object map
[lbsVTDataReader] Reading /Users/pppebay/Documents/Git/LB-analysis-framework/data/synthetic_lb_data/data.3.json VT object map
[lbsVTDataReader] Reading /Users/pppebay/Documents/Git/LB-analysis-framework/data/synthetic_lb_data/data.2.json VT object map
Instantiating rank 0
Instantiating rank 0
Instantiating rank 0
Instantiating rank 0
Instantiating rank 1
Instantiating rank 1
Instantiating rank 1
Instantiating rank 1
Instantiating rank 2
Instantiating rank 3

i.e. one instantiation of each rank per object that belongs to it (4 tasks on rank 0; 4 on rank 1; 2 on rank 2; 1 on rank 3) -- which is INCORRECT.

The new execution logic is correct while the old one is incorrect.

marcinwrobel1986 commented 1 year ago

Hey Philippe @ppebay , please check it once you get a chance with the configuration I used:

# Specify input
from_data:
  data_stem: "../data/nolb-8color-16nodes-11firstphases/data"
  phase_ids:
    - 0
# Specify work model
work_model:
  name: AffineCombination
  parameters:
    alpha: 1.
    beta: 0.
    gamma: 0.

# Specify balancing algorithm
#brute_force_optimization: True
algorithm:
#  name: BruteForce
  name: InformAndTransfer
  parameters:
    n_iterations: 8
    n_rounds: 4
    fanout: 4
    order_strategy: arbitrary
    criterion: Tempered
    max_objects_per_transfer: 8
    deterministic_transfer: True

# Specify output
#logging_level: debug
#overwrite_validator: False
check_schema: False
terminal_background: light
generate_multimedia: True
output_dir: ../../../output
output_file_stem: output_file
n_ranks: 32
generate_meshes:
  x_ranks: 8
  y_ranks: 4
  z_ranks: 1
  object_jitter: 0.5

If you won't notice any anomalies then we could merge that. But as we spoke, there is just on phase in configuration 0, so there should be 32 Ranks instantiated - or please correct me if I am wrong, thanks

ppebay commented 1 year ago

Marcin this another problem: the problem is that the reader is reading all the phases whereas it should be reading only one (phase 0). This is a different issue.

Using the configuration file you sent, if you do:

 python LBAF_app.py --config=test.yaml >& test305.txt

and then

cat test305.txt | grep "Instantiating rank 0" | wc -l
      11

you can see that rank 0 was created 11 times (once per phase).

Now if you perform the same test but in the develop branch:

 python LBAF_app.py --config=test.yaml >& testdevelop.txt

then you can see that

cat testdevelop.txt | grep "Instantiating rank 0" | wc -l 
      15

because there are 15 objects on rank 0!

So the issue is not a problem with the rank creation, but with the phase selection -- do you see my point?

This is another, separate issue with this code (which has several flaws in its execution logic).

But the point of this issue #305 was to fix the fact that the readers is calling the Rank() every time it encounters an object. Now that part is now fixed with this PR #307

If what you are trying to tell me is that there are other flaws in the logic of that reader -- then yes I do agree. But we must resolve them one-by-one.

marcinwrobel1986 commented 1 year ago

Marcin this another problem: the problem is that the reader is reading all the phases whereas it should be reading only one (phase 0). This is a different issue.

Using the configuration file you sent, if you do:

 python LBAF_app.py --config=test.yaml >& test305.txt

and then

cat test305.txt | grep "Instantiating rank 0" | wc -l
      11

you can see that rank 0 was created 11 times (once per phase).

Now if you perform the same test but in the develop branch:

 python LBAF_app.py --config=test.yaml >& testdevelop.txt

then you can see that

cat testdevelop.txt | grep "Instantiating rank 0" | wc -l 
      15

because there are 15 objects on rank 0!

So the issue is not a problem with the rank creation, but with the phase selection -- do you see my point?

This is another, separate issue with this code (which has several flaws in its execution logic).

But the point of this issue #305 was to fix the fact that the readers is calling the Rank() every time it encounters an object.

Ok, I understand. Good, that we are aware of that. Thanks for checking.