def calc_concat(func, in_data, **kwargs):
    """[Concat](https://docs.chainer.org/en/v4.3.0/reference/generated/chainer.functions.concat.html)

    Concatenation is just a memory copy, hense no floating point
    operation will be conducted.
    Depending on concatenation axis, index calculation might be needed
    but chainer-computational-cost ignores such operations.

    | Item   | Value |
    |:-------|:------|
    | FLOPs  | $$ 0 $$ |
    | mread  | $$ \sum_{i} \|x_{i}\|$$ |
    | mwrite | $$ \sum_{i} \|x_{i}\|$$ |
    | params | `axis`: concatenation axis |
    """
    size = sum([x.size for x in in_data])
    return (0, size, size, {'axis': func.axis})