Skip to content

Cycle Validation of SCALE-Sim #125

@KelvinYang0320

Description

@KelvinYang0320

Hi @ritikraj7 @AnandS09 , I am attempting to reproduce the experimental results presented in Figure 4 of SCALE-Sim ISPASS paper, but I have encountered some issues with the outcomes.

Taking the first PE array configuration (4x4) as an example, I am using the topology file test_valid_4.csv in ARM-software/SCALE-Sim with the following config file.

[general]
run_name = scale_example_run_4x4_os

[architecture_presets]
ArrayHeight:    4
ArrayWidth:     4
IfmapSramSzkB:   64
FilterSramSzkB:  64
OfmapSramSzkB:   64
IfmapOffset:    0
FilterOffset:   10000000
OfmapOffset:    20000000
Bandwidth : 10
Dataflow : os
MemoryBanks:   1

[run_presets]
InterfaceBandwidth: CALC

With scale-sim-v2, I get 9 cycles instead of 10 cycles.

...
Compute cycles: 9
...

I think the cycle count should be 10 cycles, as illustrated in the figure below.

I traced scale-sim-v2 and found that it seems that these two variables also indicate 10 cycles.

https://github.com/scalesim-project/scale-sim-v2/blob/613b373d0a4c000a23092b3c41e17abb1c4e5470/scalesim/single_layer_sim.py#L180
ofmap_demand_mat:

 [[-1.0000000e+00 -1.0000000e+00 -1.0000000e+00 -1.0000000e+00]
 [-1.0000000e+00 -1.0000000e+00 -1.0000000e+00 -1.0000000e+00]
 [-1.0000000e+00 -1.0000000e+00 -1.0000000e+00 -1.0000000e+00]
 [ 2.0000012e+07 -1.0000000e+00 -1.0000000e+00 -1.0000000e+00]
 [ 2.0000008e+07  2.0000013e+07 -1.0000000e+00 -1.0000000e+00]
 [ 2.0000004e+07  2.0000009e+07  2.0000014e+07 -1.0000000e+00]
 [ 2.0000000e+07  2.0000005e+07  2.0000010e+07  2.0000015e+07]
 [-1.0000000e+00  2.0000001e+07  2.0000006e+07  2.0000011e+07]
 [-1.0000000e+00 -1.0000000e+00  2.0000002e+07  2.0000007e+07]
 [-1.0000000e+00 -1.0000000e+00 -1.0000000e+00  2.0000003e+07]]

https://github.com/scalesim-project/scale-sim-v2/blob/613b373d0a4c000a23092b3c41e17abb1c4e5470/scalesim/memory/double_buffered_scratchpad_mem.py#L207

[[0.]
 [1.]
 [2.]
 [3.]
 [4.]
 [5.]
 [6.]
 [7.]
 [8.]
 [9.]]

However, this line takes the last number which is 9 from ofmap_services_cycles_np as the total cycles
https://github.com/scalesim-project/scale-sim-v2/blob/613b373d0a4c000a23092b3c41e17abb1c4e5470/scalesim/memory/double_buffered_scratchpad_mem.py#L209

Should we modify this line as follows, or did I overlook something? Thank you. 😄

self.total_cycles = int(ofmap_serviced_cycles[-1][0]) + 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions