Repository files navigation

HyperMR

All code and data used in the HyperMR paper are open sourced here.

Environment

  • Required system configuration:

    • Ubuntu 18.04.5 LTS, Linux Kernel 4.15.0-167-generic.
  • Required libraries and tools:

    • g++ (>= 9), libboost-all-dev (> 1.69)
  • Based on open-source tools:

Datasets

All data can be found in the test/datasets directory.

The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) is a widely used set of sparse matrix benchmarks collected from a wide range of applications. Since the sparse matrix files are too large, we only upload their compressed files in the github repository, and the sparse matrix files required for the experiment can be generated by the following shell command.

bash decompression.sh

The SDSS astronomical images used in the experiments were obtained by using SQL queries in SkyServer. We use the SQL statement "SELECT TOP 20 specobjid as name, ra, dec FROM SpecObj" to query 20 Spectro objects in SkyServer (SQL Search), and then use the Finding Chart toolbox to export all these Spectro objects as JPEG images. In the Finding Chart toolbox, we set the image to have a height of 4096 and a width of 4096, a scale of 0.5, and use the "Invert Image" option. In order to view all the Spectro objects in bulk, you can input the same SQL statement through Image List toolbox to get the thumbnails of Spectro objects. To save storage space, we upload only the raw astronomical image data, then we use sdss.py to transform the SDSS images into sparse matrices (.mtx files), please use the following command to generate datasets.

python sdss.py

Workloads

  • Matrix-vector multiplication (MVM)
  • Synthetic workloads
  • Real-world workload (Gaussian Smoothing)

Evaluation

Clone this repository, and then update the submodules of KaHyPar:

cd kahypar/external_tools
git clone git@github.com:google/googletest.git
git clone git@github.com:larsgottesbueren/WHFC.git
git clone git@github.com:pybind/pybind11.git

Compile KaHyPar:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE && make -j
sudo make install

Update LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

Build datasets:

cd HyperMR/test/datasets
sh decompression.sh

Compile HyperMR:

cd HyperMR
mkdir build && cd build
cmake .. && make -j

Run tests:

./HyperMR

Then, you can enter the serial number of the type of experiment you want to test. For example, if you enter 1, the MVM evaluation will be performed. Refer to the configuration file in test/config for the configuration of each experiment.

HyperMR:
Experiment 1: MVM.
Experiment 2: Synthetic Workloads.
Experiment 3: Gaussian Smoothing.
Experiment 4: Baselines.
Please enter the experiment ID: 

Note:

  1. Experiment results are saved in test/output and test/log. By default, the experiment results are not saved (config: output-file: No), because test/output directory now holds the reordered row and column order of HyperMR for all experiment datasets.

  2. HyperMR iteratively searches for higher-quality solutions, meaning that extended runtime generally leads to better results. Consequently, a time limit must be imposed to achieve high-quality solutions within a defined period. To reproduce the experimental results, please use the time-limit configuration that can be found at test/config/time_limit_config.txt, the default time-limit is -1.

About

HyperMR: Efficient Hypergraph-enhanced Matrix Storage on Compute-in-Memory Architecture. This work is presented at SIGMOD 2025.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

HyperMR

All code and data used in the HyperMR paper are open sourced here.

Environment

  • Required system configuration:

    • Ubuntu 18.04.5 LTS, Linux Kernel 4.15.0-167-generic.
  • Required libraries and tools:

    • g++ (>= 9), libboost-all-dev (> 1.69)
  • Based on open-source tools:

Datasets

All data can be found in the test/datasets directory.

The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) is a widely used set of sparse matrix benchmarks collected from a wide range of applications. Since the sparse matrix files are too large, we only upload their compressed files in the github repository, and the sparse matrix files required for the experiment can be generated by the following shell command.

bash decompression.sh

The SDSS astronomical images used in the experiments were obtained by using SQL queries in SkyServer. We use the SQL statement "SELECT TOP 20 specobjid as name, ra, dec FROM SpecObj" to query 20 Spectro objects in SkyServer (SQL Search), and then use the Finding Chart toolbox to export all these Spectro objects as JPEG images. In the Finding Chart toolbox, we set the image to have a height of 4096 and a width of 4096, a scale of 0.5, and use the "Invert Image" option. In order to view all the Spectro objects in bulk, you can input the same SQL statement through Image List toolbox to get the thumbnails of Spectro objects. To save storage space, we upload only the raw astronomical image data, then we use sdss.py to transform the SDSS images into sparse matrices (.mtx files), please use the following command to generate datasets.

python sdss.py

Workloads

  • Matrix-vector multiplication (MVM)
  • Synthetic workloads
  • Real-world workload (Gaussian Smoothing)

Evaluation

Clone this repository, and then update the submodules of KaHyPar:

cd kahypar/external_tools
git clone git@github.com:google/googletest.git
git clone git@github.com:larsgottesbueren/WHFC.git
git clone git@github.com:pybind/pybind11.git

Compile KaHyPar:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE && make -j
sudo make install

Update LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

Build datasets:

cd HyperMR/test/datasets
sh decompression.sh

Compile HyperMR:

cd HyperMR
mkdir build && cd build
cmake .. && make -j

Run tests:

./HyperMR

Then, you can enter the serial number of the type of experiment you want to test. For example, if you enter 1, the MVM evaluation will be performed. Refer to the configuration file in test/config for the configuration of each experiment.

HyperMR:
Experiment 1: MVM.
Experiment 2: Synthetic Workloads.
Experiment 3: Gaussian Smoothing.
Experiment 4: Baselines.
Please enter the experiment ID: 

Note:

  1. Experiment results are saved in test/output and test/log. By default, the experiment results are not saved (config: output-file: No), because test/output directory now holds the reordered row and column order of HyperMR for all experiment datasets.

  2. HyperMR iteratively searches for higher-quality solutions, meaning that extended runtime generally leads to better results. Consequently, a time limit must be imposed to achieve high-quality solutions within a defined period. To reproduce the experimental results, please use the time-limit configuration that can be found at test/config/time_limit_config.txt, the default time-limit is -1.

About

HyperMR: Efficient Hypergraph-enhanced Matrix Storage on Compute-in-Memory Architecture. This work is presented at SIGMOD 2025.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

HyperMR

All code and data used in the HyperMR paper are open sourced here.

Environment

  • Required system configuration:

    • Ubuntu 18.04.5 LTS, Linux Kernel 4.15.0-167-generic.
  • Required libraries and tools:

    • g++ (>= 9), libboost-all-dev (> 1.69)
  • Based on open-source tools:

Datasets

All data can be found in the test/datasets directory.

The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) is a widely used set of sparse matrix benchmarks collected from a wide range of applications. Since the sparse matrix files are too large, we only upload their compressed files in the github repository, and the sparse matrix files required for the experiment can be generated by the following shell command.

bash decompression.sh

The SDSS astronomical images used in the experiments were obtained by using SQL queries in SkyServer. We use the SQL statement "SELECT TOP 20 specobjid as name, ra, dec FROM SpecObj" to query 20 Spectro objects in SkyServer (SQL Search), and then use the Finding Chart toolbox to export all these Spectro objects as JPEG images. In the Finding Chart toolbox, we set the image to have a height of 4096 and a width of 4096, a scale of 0.5, and use the "Invert Image" option. In order to view all the Spectro objects in bulk, you can input the same SQL statement through Image List toolbox to get the thumbnails of Spectro objects. To save storage space, we upload only the raw astronomical image data, then we use sdss.py to transform the SDSS images into sparse matrices (.mtx files), please use the following command to generate datasets.

python sdss.py

Workloads

  • Matrix-vector multiplication (MVM)
  • Synthetic workloads
  • Real-world workload (Gaussian Smoothing)

Evaluation

Clone this repository, and then update the submodules of KaHyPar:

cd kahypar/external_tools
git clone git@github.com:google/googletest.git
git clone git@github.com:larsgottesbueren/WHFC.git
git clone git@github.com:pybind/pybind11.git

Compile KaHyPar:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE && make -j
sudo make install

Update LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

Build datasets:

cd HyperMR/test/datasets
sh decompression.sh

Compile HyperMR:

cd HyperMR
mkdir build && cd build
cmake .. && make -j

Run tests:

./HyperMR

Then, you can enter the serial number of the type of experiment you want to test. For example, if you enter 1, the MVM evaluation will be performed. Refer to the configuration file in test/config for the configuration of each experiment.

HyperMR:
Experiment 1: MVM.
Experiment 2: Synthetic Workloads.
Experiment 3: Gaussian Smoothing.
Experiment 4: Baselines.
Please enter the experiment ID: 

Note:

  1. Experiment results are saved in test/output and test/log. By default, the experiment results are not saved (config: output-file: No), because test/output directory now holds the reordered row and column order of HyperMR for all experiment datasets.

  2. HyperMR iteratively searches for higher-quality solutions, meaning that extended runtime generally leads to better results. Consequently, a time limit must be imposed to achieve high-quality solutions within a defined period. To reproduce the experimental results, please use the time-limit configuration that can be found at test/config/time_limit_config.txt, the default time-limit is -1.

About

HyperMR: Efficient Hypergraph-enhanced Matrix Storage on Compute-in-Memory Architecture. This work is presented at SIGMOD 2025.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

HyperMR

All code and data used in the HyperMR paper are open sourced here.

Environment

  • Required system configuration:

    • Ubuntu 18.04.5 LTS, Linux Kernel 4.15.0-167-generic.
  • Required libraries and tools:

    • g++ (>= 9), libboost-all-dev (> 1.69)
  • Based on open-source tools:

Datasets

All data can be found in the test/datasets directory.

The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) is a widely used set of sparse matrix benchmarks collected from a wide range of applications. Since the sparse matrix files are too large, we only upload their compressed files in the github repository, and the sparse matrix files required for the experiment can be generated by the following shell command.

bash decompression.sh

The SDSS astronomical images used in the experiments were obtained by using SQL queries in SkyServer. We use the SQL statement "SELECT TOP 20 specobjid as name, ra, dec FROM SpecObj" to query 20 Spectro objects in SkyServer (SQL Search), and then use the Finding Chart toolbox to export all these Spectro objects as JPEG images. In the Finding Chart toolbox, we set the image to have a height of 4096 and a width of 4096, a scale of 0.5, and use the "Invert Image" option. In order to view all the Spectro objects in bulk, you can input the same SQL statement through Image List toolbox to get the thumbnails of Spectro objects. To save storage space, we upload only the raw astronomical image data, then we use sdss.py to transform the SDSS images into sparse matrices (.mtx files), please use the following command to generate datasets.

python sdss.py

Workloads

  • Matrix-vector multiplication (MVM)
  • Synthetic workloads
  • Real-world workload (Gaussian Smoothing)

Evaluation

Clone this repository, and then update the submodules of KaHyPar:

cd kahypar/external_tools
git clone git@github.com:google/googletest.git
git clone git@github.com:larsgottesbueren/WHFC.git
git clone git@github.com:pybind/pybind11.git

Compile KaHyPar:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE && make -j
sudo make install

Update LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

Build datasets:

cd HyperMR/test/datasets
sh decompression.sh

Compile HyperMR:

cd HyperMR
mkdir build && cd build
cmake .. && make -j

Run tests:

./HyperMR

Then, you can enter the serial number of the type of experiment you want to test. For example, if you enter 1, the MVM evaluation will be performed. Refer to the configuration file in test/config for the configuration of each experiment.

HyperMR:
Experiment 1: MVM.
Experiment 2: Synthetic Workloads.
Experiment 3: Gaussian Smoothing.
Experiment 4: Baselines.
Please enter the experiment ID: 

Note:

  1. Experiment results are saved in test/output and test/log. By default, the experiment results are not saved (config: output-file: No), because test/output directory now holds the reordered row and column order of HyperMR for all experiment datasets.

  2. HyperMR iteratively searches for higher-quality solutions, meaning that extended runtime generally leads to better results. Consequently, a time limit must be imposed to achieve high-quality solutions within a defined period. To reproduce the experimental results, please use the time-limit configuration that can be found at test/config/time_limit_config.txt, the default time-limit is -1.

About

HyperMR: Efficient Hypergraph-enhanced Matrix Storage on Compute-in-Memory Architecture. This work is presented at SIGMOD 2025.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

HyperMR

All code and data used in the HyperMR paper are open sourced here.

Environment

  • Required system configuration:

    • Ubuntu 18.04.5 LTS, Linux Kernel 4.15.0-167-generic.
  • Required libraries and tools:

    • g++ (>= 9), libboost-all-dev (> 1.69)
  • Based on open-source tools:

Datasets

All data can be found in the test/datasets directory.

The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) is a widely used set of sparse matrix benchmarks collected from a wide range of applications. Since the sparse matrix files are too large, we only upload their compressed files in the github repository, and the sparse matrix files required for the experiment can be generated by the following shell command.

bash decompression.sh

The SDSS astronomical images used in the experiments were obtained by using SQL queries in SkyServer. We use the SQL statement "SELECT TOP 20 specobjid as name, ra, dec FROM SpecObj" to query 20 Spectro objects in SkyServer (SQL Search), and then use the Finding Chart toolbox to export all these Spectro objects as JPEG images. In the Finding Chart toolbox, we set the image to have a height of 4096 and a width of 4096, a scale of 0.5, and use the "Invert Image" option. In order to view all the Spectro objects in bulk, you can input the same SQL statement through Image List toolbox to get the thumbnails of Spectro objects. To save storage space, we upload only the raw astronomical image data, then we use sdss.py to transform the SDSS images into sparse matrices (.mtx files), please use the following command to generate datasets.

python sdss.py

Workloads

  • Matrix-vector multiplication (MVM)
  • Synthetic workloads
  • Real-world workload (Gaussian Smoothing)

Evaluation

Clone this repository, and then update the submodules of KaHyPar:

cd kahypar/external_tools
git clone git@github.com:google/googletest.git
git clone git@github.com:larsgottesbueren/WHFC.git
git clone git@github.com:pybind/pybind11.git

Compile KaHyPar:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE && make -j
sudo make install

Update LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

Build datasets:

cd HyperMR/test/datasets
sh decompression.sh

Compile HyperMR:

cd HyperMR
mkdir build && cd build
cmake .. && make -j

Run tests:

./HyperMR

Then, you can enter the serial number of the type of experiment you want to test. For example, if you enter 1, the MVM evaluation will be performed. Refer to the configuration file in test/config for the configuration of each experiment.

HyperMR:
Experiment 1: MVM.
Experiment 2: Synthetic Workloads.
Experiment 3: Gaussian Smoothing.
Experiment 4: Baselines.
Please enter the experiment ID: 

Note:

  1. Experiment results are saved in test/output and test/log. By default, the experiment results are not saved (config: output-file: No), because test/output directory now holds the reordered row and column order of HyperMR for all experiment datasets.

  2. HyperMR iteratively searches for higher-quality solutions, meaning that extended runtime generally leads to better results. Consequently, a time limit must be imposed to achieve high-quality solutions within a defined period. To reproduce the experimental results, please use the time-limit configuration that can be found at test/config/time_limit_config.txt, the default time-limit is -1.

About

HyperMR: Efficient Hypergraph-enhanced Matrix Storage on Compute-in-Memory Architecture. This work is presented at SIGMOD 2025.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

HyperMR

All code and data used in the HyperMR paper are open sourced here.

Environment

  • Required system configuration:

    • Ubuntu 18.04.5 LTS, Linux Kernel 4.15.0-167-generic.
  • Required libraries and tools:

    • g++ (>= 9), libboost-all-dev (> 1.69)
  • Based on open-source tools:

Datasets

All data can be found in the test/datasets directory.

The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) is a widely used set of sparse matrix benchmarks collected from a wide range of applications. Since the sparse matrix files are too large, we only upload their compressed files in the github repository, and the sparse matrix files required for the experiment can be generated by the following shell command.

bash decompression.sh

The SDSS astronomical images used in the experiments were obtained by using SQL queries in SkyServer. We use the SQL statement "SELECT TOP 20 specobjid as name, ra, dec FROM SpecObj" to query 20 Spectro objects in SkyServer (SQL Search), and then use the Finding Chart toolbox to export all these Spectro objects as JPEG images. In the Finding Chart toolbox, we set the image to have a height of 4096 and a width of 4096, a scale of 0.5, and use the "Invert Image" option. In order to view all the Spectro objects in bulk, you can input the same SQL statement through Image List toolbox to get the thumbnails of Spectro objects. To save storage space, we upload only the raw astronomical image data, then we use sdss.py to transform the SDSS images into sparse matrices (.mtx files), please use the following command to generate datasets.

python sdss.py

Workloads

  • Matrix-vector multiplication (MVM)
  • Synthetic workloads
  • Real-world workload (Gaussian Smoothing)

Evaluation

Clone this repository, and then update the submodules of KaHyPar:

cd kahypar/external_tools
git clone git@github.com:google/googletest.git
git clone git@github.com:larsgottesbueren/WHFC.git
git clone git@github.com:pybind/pybind11.git

Compile KaHyPar:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE && make -j
sudo make install

Update LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

Build datasets:

cd HyperMR/test/datasets
sh decompression.sh

Compile HyperMR:

cd HyperMR
mkdir build && cd build
cmake .. && make -j

Run tests:

./HyperMR

Then, you can enter the serial number of the type of experiment you want to test. For example, if you enter 1, the MVM evaluation will be performed. Refer to the configuration file in test/config for the configuration of each experiment.

HyperMR:
Experiment 1: MVM.
Experiment 2: Synthetic Workloads.
Experiment 3: Gaussian Smoothing.
Experiment 4: Baselines.
Please enter the experiment ID: 

Note:

  1. Experiment results are saved in test/output and test/log. By default, the experiment results are not saved (config: output-file: No), because test/output directory now holds the reordered row and column order of HyperMR for all experiment datasets.

  2. HyperMR iteratively searches for higher-quality solutions, meaning that extended runtime generally leads to better results. Consequently, a time limit must be imposed to achieve high-quality solutions within a defined period. To reproduce the experimental results, please use the time-limit configuration that can be found at test/config/time_limit_config.txt, the default time-limit is -1.

About

HyperMR: Efficient Hypergraph-enhanced Matrix Storage on Compute-in-Memory Architecture. This work is presented at SIGMOD 2025.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

HyperMR

All code and data used in the HyperMR paper are open sourced here.

Environment

  • Required system configuration:

    • Ubuntu 18.04.5 LTS, Linux Kernel 4.15.0-167-generic.
  • Required libraries and tools:

    • g++ (>= 9), libboost-all-dev (> 1.69)
  • Based on open-source tools:

Datasets

All data can be found in the test/datasets directory.

The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) is a widely used set of sparse matrix benchmarks collected from a wide range of applications. Since the sparse matrix files are too large, we only upload their compressed files in the github repository, and the sparse matrix files required for the experiment can be generated by the following shell command.

bash decompression.sh

The SDSS astronomical images used in the experiments were obtained by using SQL queries in SkyServer. We use the SQL statement "SELECT TOP 20 specobjid as name, ra, dec FROM SpecObj" to query 20 Spectro objects in SkyServer (SQL Search), and then use the Finding Chart toolbox to export all these Spectro objects as JPEG images. In the Finding Chart toolbox, we set the image to have a height of 4096 and a width of 4096, a scale of 0.5, and use the "Invert Image" option. In order to view all the Spectro objects in bulk, you can input the same SQL statement through Image List toolbox to get the thumbnails of Spectro objects. To save storage space, we upload only the raw astronomical image data, then we use sdss.py to transform the SDSS images into sparse matrices (.mtx files), please use the following command to generate datasets.

python sdss.py

Workloads

  • Matrix-vector multiplication (MVM)
  • Synthetic workloads
  • Real-world workload (Gaussian Smoothing)

Evaluation

Clone this repository, and then update the submodules of KaHyPar:

cd kahypar/external_tools
git clone git@github.com:google/googletest.git
git clone git@github.com:larsgottesbueren/WHFC.git
git clone git@github.com:pybind/pybind11.git

Compile KaHyPar:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE && make -j
sudo make install

Update LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

Build datasets:

cd HyperMR/test/datasets
sh decompression.sh

Compile HyperMR:

cd HyperMR
mkdir build && cd build
cmake .. && make -j

Run tests:

./HyperMR

Then, you can enter the serial number of the type of experiment you want to test. For example, if you enter 1, the MVM evaluation will be performed. Refer to the configuration file in test/config for the configuration of each experiment.

HyperMR:
Experiment 1: MVM.
Experiment 2: Synthetic Workloads.
Experiment 3: Gaussian Smoothing.
Experiment 4: Baselines.
Please enter the experiment ID: 

Note:

  1. Experiment results are saved in test/output and test/log. By default, the experiment results are not saved (config: output-file: No), because test/output directory now holds the reordered row and column order of HyperMR for all experiment datasets.

  2. HyperMR iteratively searches for higher-quality solutions, meaning that extended runtime generally leads to better results. Consequently, a time limit must be imposed to achieve high-quality solutions within a defined period. To reproduce the experimental results, please use the time-limit configuration that can be found at test/config/time_limit_config.txt, the default time-limit is -1.

About

HyperMR: Efficient Hypergraph-enhanced Matrix Storage on Compute-in-Memory Architecture. This work is presented at SIGMOD 2025.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

HyperMR

All code and data used in the HyperMR paper are open sourced here.

Environment

  • Required system configuration:

    • Ubuntu 18.04.5 LTS, Linux Kernel 4.15.0-167-generic.
  • Required libraries and tools:

    • g++ (>= 9), libboost-all-dev (> 1.69)
  • Based on open-source tools:

Datasets

All data can be found in the test/datasets directory.

The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) is a widely used set of sparse matrix benchmarks collected from a wide range of applications. Since the sparse matrix files are too large, we only upload their compressed files in the github repository, and the sparse matrix files required for the experiment can be generated by the following shell command.

bash decompression.sh

The SDSS astronomical images used in the experiments were obtained by using SQL queries in SkyServer. We use the SQL statement "SELECT TOP 20 specobjid as name, ra, dec FROM SpecObj" to query 20 Spectro objects in SkyServer (SQL Search), and then use the Finding Chart toolbox to export all these Spectro objects as JPEG images. In the Finding Chart toolbox, we set the image to have a height of 4096 and a width of 4096, a scale of 0.5, and use the "Invert Image" option. In order to view all the Spectro objects in bulk, you can input the same SQL statement through Image List toolbox to get the thumbnails of Spectro objects. To save storage space, we upload only the raw astronomical image data, then we use sdss.py to transform the SDSS images into sparse matrices (.mtx files), please use the following command to generate datasets.

python sdss.py

Workloads

  • Matrix-vector multiplication (MVM)
  • Synthetic workloads
  • Real-world workload (Gaussian Smoothing)

Evaluation

Clone this repository, and then update the submodules of KaHyPar:

cd kahypar/external_tools
git clone git@github.com:google/googletest.git
git clone git@github.com:larsgottesbueren/WHFC.git
git clone git@github.com:pybind/pybind11.git

Compile KaHyPar:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE && make -j
sudo make install

Update LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

Build datasets:

cd HyperMR/test/datasets
sh decompression.sh

Compile HyperMR:

cd HyperMR
mkdir build && cd build
cmake .. && make -j

Run tests:

./HyperMR

Then, you can enter the serial number of the type of experiment you want to test. For example, if you enter 1, the MVM evaluation will be performed. Refer to the configuration file in test/config for the configuration of each experiment.

HyperMR:
Experiment 1: MVM.
Experiment 2: Synthetic Workloads.
Experiment 3: Gaussian Smoothing.
Experiment 4: Baselines.
Please enter the experiment ID: 

Note:

  1. Experiment results are saved in test/output and test/log. By default, the experiment results are not saved (config: output-file: No), because test/output directory now holds the reordered row and column order of HyperMR for all experiment datasets.

  2. HyperMR iteratively searches for higher-quality solutions, meaning that extended runtime generally leads to better results. Consequently, a time limit must be imposed to achieve high-quality solutions within a defined period. To reproduce the experimental results, please use the time-limit configuration that can be found at test/config/time_limit_config.txt, the default time-limit is -1.

About

HyperMR: Efficient Hypergraph-enhanced Matrix Storage on Compute-in-Memory Architecture. This work is presented at SIGMOD 2025.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages