Giter Site home page Giter Site logo

Comments (8)

hqjenny avatar hqjenny commented on September 28, 2024

Hi @Z-KN, the buffer size calculation follows the eqn:
entries x word-bits x 2 for double buffering = 16384 * 8 * 2 b = 32KB

from cosa.

Z-KN avatar Z-KN commented on September 28, 2024

All right. Thanks!
And I am also curious that what instances mean here? When I want to modify the storage specification, sometimes it will raise an assertion error "inner_instances % curr_instances == 0". Why must inner instances must be multiples of current instances? For example, from Fig. 2 in the paper, an input buffer and a weight buffer are in a juxtaposition rather than a hierarchy, right? So why is there a restriction imposed on the numerical relationship of these two types of instances?

from cosa.

hqjenny avatar hqjenny commented on September 28, 2024

Instance indicates the total number of a specific component in the architecture.

Inner instances are enforced to be multiples of current instances so we know the exact number of spatial fanouts of each current instance in a hierarchical memory abstraction. e.g. 1 parent instance will be communicating with X child instances.

It is a very good point that input and weight buffer are juxtaposition, and there shouldn't be a constraint imposing the relationship between them. However, I believe the constraints are required by the hierarchical memory abstraction that Timeloop implements. If you want to have 1 input and 2 weight instances, you might want to swap their levels.
If you would like to have 3 input and 4 weight buffers both connected to 12 MACs, it is not supported, but 2 input and 6 weight buffers (inner) is allowed.

For more Timeloop specification questions, in case you were not aware, here is a useful resource to look at: https://timeloop.csail.mit.edu/timeloop/input-formats/design/architecture.

from cosa.

Z-KN avatar Z-KN commented on September 28, 2024

Oh I see. Does it mean that you have to restrict the number of instances because you need to follow Timeloop's requirements? But in reality, input buffers and weight buffers are somewhat decoupled, can CoSA deal with that case of scheduling (like 3 input and 4 weight buffers; not considering Timeloop)?

from cosa.

hqjenny avatar hqjenny commented on September 28, 2024

It is a very good question. CoSA formulation should be able to handle the scenario you described. You can add per tensor spatial constraints instead of using the unified spatial constraints for all tensors.

from cosa.

Z-KN avatar Z-KN commented on September 28, 2024

OK, I understand it as currently, CoSA does not support such a configuration.

from cosa.

hqjenny avatar hqjenny commented on September 28, 2024

It is more because the simulator does not support such configurations.
If you have a simulator that supports such configuration, you can make CoSA work by adding the constraints I mentioned above. It should be a relatively straightforward change.

Basically, instead of constraining the spatial factors at a specific level with
Sum (log_spatial_RSPQCKN) < log_hierarchical_fanout

You can sum up certain tensor related utilization and constrain it.
Sum(log_spatial_RSCK) < log_parallel_weight_fanout
Sum(log_spatial_HWCN) < log_parallel_input_fanout
Sum(log_spatial_PQKN) < log_parallel_output_fanout

from cosa.

Z-KN avatar Z-KN commented on September 28, 2024

Thanks a lot! I understand.

from cosa.

Related Issues (8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.