MAPSIM: Efficient Multi-Array Parallel Scheduling for In-Memory SIMD Computations
git clone --recursive https://github.com/leeoding/MAPSIM.git
First, resolve the function name conflict issue. Open MAPSIM/lib/mockturtle/lib/bill/bill/utils/hash.hpp Change this file as:
/*--------------------------------------------------------------------------------------------------
| This file is distributed under the MIT License.
| See accompanying file /LICENSE for details.
*-------------------------------------------------------------------------------------------------*/
#pragma once
#include <set>
#include <utility>
#include <functional>
#include <cstdint>
// 1. 将 hash_combine 放入 bill 命名空间
// 这样可以避免与 Boost 库中的 hash_combine 发生冲突
namespace bill {
template<class T>
inline void hash_combine(std::size_t& seed, T const& v)
{
seed ^= std::hash<T>()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
}
} // namespace bill
// 2. 特化 std::hash 必须在 std 命名空间中进行
namespace std {
// 特化 std::set 的哈希
template<typename T>
struct hash<std::set<T>> {
using argument_type = std::set<T>;
using result_type = size_t;
result_type operator()(argument_type const& in) const
{
result_type seed = 0;
for (auto& element : in) {
// 关键点:显式调用 bill::hash_combine
bill::hash_combine(seed, element);
}
return seed;
}
};
// 特化 std::pair<uint32_t, uint32_t> 的哈希
template<>
struct hash<std::pair<uint32_t, uint32_t>> {
using argument_type = std::pair<uint32_t, uint32_t>;
using result_type = size_t;
result_type operator()(argument_type const& in) const
{
result_type seed = 0;
// 关键点:显式调用 bill::hash_combine
bill::hash_combine(seed, in.first);
bill::hash_combine(seed, in.second);
return seed;
}
};
} // namespace stdThen run:
./build.shFirst you need write row number in benchmarks.txt such as "voter 256"
Then if run l-level method
build/src/MAPSIM l-levelRun po method
build/src/MAPSIM poRun W.O.I.A method
build/src/MAPSIM woia@article{fu2026mapsim,
author = {Fu, Rongliang and Zhang, Ran and Shen, Libo and Xuan, Wei and Lin, Ning and Huang, Junying and Yu, Bei and Ho, Tsung-Yi},
journal = {IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
title = {Efficient Multi-Array Parallel Scheduling for In-Memory Computing},
year = {2026},
volume = {},
number = {},
pages = {},
keywords = {},
doi = {}
}