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 std
Then run:
./build.sh
First you need write row number in benchmarks.txt such as "voter 256"
Then if run l-level method
build/src/MAPSIM l-level
Run po method
build/src/MAPSIM po
Run 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 = {} }