GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - leeoding/MAPSIM

BranchesTags
Open more actions menu

Latest commit

 

History

42 Commits
42 Commits

Folders and files

NameName
Last commit message
Last commit date
OPP
OPP
 
 
lib
lib
 
 
src
src
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
CMakeLists.txt
CMakeLists.txt
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
benchmarks.txt
benchmarks.txt
 
 
build.sh
build.sh
 
 
result.csv
result.csv
 
 

Repository files navigation

MAPSIM

MAPSIM: Efficient Multi-Array Parallel Scheduling for In-Memory SIMD Computations

Download

git clone --recursive https://github.com/leeoding/MAPSIM.git

Build

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

Run

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

Cite

@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      = {}
}

About

No description, website, or topics provided.

Resources

Readme
MIT license
Activity

Stars

0 stars

Watchers

1 watching

Forks

2 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.