data.memory.bank.schedule ≡
template <auto Banks, typename Address, auto Addresses> inline count_t<Addresses>[Banks] read_requests_per_bank( Address[Addresses] addresses, (Address) -> index_t<Banks> address_to_bank_index ) §source
Count the number of unique read requests for each bank. More than 1 request per bank indicates conflict.
Parameters
-
auto Banks -
typename Address -
auto AddressesNumber of addresses processed per call.
Arguments
-
Address[Addresses] addressesInput addresses, duplicates allowed.
-
(Address) -> index_t<Banks> address_to_bank_index
Map
Addressto bank index.
template <auto Banks, typename Address, auto Addresses> inline count_t<Addresses>[Banks] write_requests_per_bank( optional<Address>[Addresses] addresses, (Address) -> index_t<Banks> address_to_bank_index ) §source
Count the number of write requests for each bank. More than 1 request per bank indicates conflict.
Parameters
-
auto Banks -
typename Address -
auto AddressesNumber of addresses processed per call.
template <auto Banks, typename Address, auto Addresses> inline pair<optional<index_t<Addresses>>[Banks], optional<index_t<Banks>>[Addresses]> schedule_read_requests( Address[Addresses] addresses, (Address) -> index_t<Banks> address_to_bank_index, index_t<Addresses> iteration ) §source
For each iteration, calculate the pair:
- The optional address indices for each bank.
- The optional bank index for each address.
Parameters
-
auto Banks -
typename Address -
auto AddressesNumber of addresses processed per call.
template <auto Banks, typename Address, auto Addresses> inline optional<index_t<Addresses>>[Banks] schedule_write_requests( optional<Address>[Addresses] addresses, (Address) -> index_t<Banks> address_to_bank_index, index_t<Addresses> iteration ) §source
Calculate the optional address indices for each bank at specific iteration.
Parameters
-
auto Banks -
typename Address -
auto AddressesNumber of addresses processed per call.