This page collects all available pieces of software related to the HD/VSA. First, it points to the avialalbe packages and libraries related to HD/VSA

Next, it points to external collections of HD/VSA projects. 

Finally, it provides links to the code for individual studies,which are sorted in the chronoglical order.

Please let us know if some other code or package should be included in this list.

Software packages

Description: Torchhd is a Python library for HD/VSA. Torchhd makes it painless to develop a wide range of HD/VSA applications and algorithms. For someone new to the field, it provides Pythonic abstractions and examples to get one started fast. For the experienced researchers, the library is made modular by design, giving the endless flexibility to prototype new ideas in no-time. The library is build on top of the high-performance PyTorch library, resulting in optimized tensor execution without the headaches. Moreover, PyTorch makes it effortless to accelerate the code on a GPU.

Implemented in: Python

Link to the package

Link to accompanying paper

hdlib [Cleveland Clinic]

Description: hdlib is a Python library for designing HD/VSA. It is distributed under the MIT license as a Python package through PyPI and Conda on the conda-forge channel.

Implemented in: Python

Link to the package

Link to accompanying paper

Description: A rich research framework for HD/VSA on large boolean vectors supporting program transformation and multiple backends for computation (plain Python, C++, NumPy, PyTorch). Many metrics and utility functions aim to aid the intuitive understanding of this new paradigm, and there are multiple levels of functionality available from the data marshalling and the basic (XOR, MAJ, PERMUTE)-algebra to cryptography support. All vector operations are implemented in C(++) and make use of bit-packing and SIMD, subprograms can be optimized and compiled to these operations in Python or C, and parallelization and pipelining are planned.

Implemented in: Python, C++

Link to the package

Description: Work-in-progress repository for research into HD/VSA models such as Multiply-Add-Permute and Binary Spatter Codes. Can be used dependency-free.

Implemented in: Python and C

Link to the package

Description: The OpenHD framework enables the GPU-based execution of HD/VSA using JIT-like compliation written in Python fo high efficiency. 

Implemented in: Python, C++

Link to the package

Description: HDTorch is PyTorch-based HD/VSA computing library for learning tasks. It includes custom CUDA extensions for speeding up hypervector operations, namely, bit-(un)packing and bit-array summation in the horizontal/vertical dimensions.

Link to the package

Description: SemanticVectors creates semantic WordSpace models from free natural language text. Such models are designed to represent words and documents in terms of underlying concepts. They can be used for many semantic (concept-aware) matching tasks such as automatic thesaurus generation, knowledge representation, and concept matching. 

Implemented in: Java, Python

Link to the package in Java

Link to the package in Python

Description: NengoSPA is an implementation of the Semantic Pointer Architecture for Nengo. The Semantic Pointer Architecture provides an approach to building cognitive models implemented with large-scale spiking neural networks. With respect to HD/VSA, NengoSPA has primitives for Holographic Reduced Representations model.

Implemented in: Python

Link to the package

hdlib [ETH, Zurich]

Description: CPU/GPU Library for Binary Spatter Codes. 

Implemented in: Python, C, Cuda, and Shell

Link to the package

Collections of projects

Collection of Hyperdimensional Computing Projects

Description: The resource aims at providing a comprehensive collection of projects using HD/VSA.

Implemented in: Python, MATLAB, C, C++

Link to the project

Code for individual studies

Authors: J. Wang, S. Huang, M. Imani

Venue: arXiv

Implemented in: Python

Link to the project

Authors: D. Kleyko, M. Davies, E. P. Frady, P. Kanerva, S. Kent, B. A. Olshausen, J. M. Rabaey, E. Osipov, D. A. Rachkovskij, A. Rahimi, F. T. Sommer

Venue: Proceedings of the IEEE, vol. 110, no. 10, pp. 1538-1571, 2022

Implemented in: Python

Link to the project

Authors: D. Kleyko, A. Rahimi, R. W. Gayler, E. Osipov 

Venue: Neural Computing and Applications, vol. 32, pp. 3675-3684, 2020

Implemented in: MATLAB

Link to the project

Authors: M. Schmuck, L. Benini, A. Rahimi

Venue: ACM Journal on Emerging Technologies in Computing, vol. 15, no. 4, pp. 1-25, 2019

Implemented in: VHDL (RTL)

Link to the project

Authors: P. Neubert, S. Schubert, P. Protzel

Venue: KI - Künstliche Intelligenz, vol. 33, pp. 319-330, 2019

Implemented in: Matlab

Link to the project

Authors: A. Mitrokhin, P. Sutor, C. Fermuller, Y. Aloimonos 

Venue: Science Robotics, vol. 4, no. 30, pp. 1-10, 2019

Implemented in: Python

Link to the project

Authors: E. Chang, A. Rahimi, L. Benini, A. Wu

Venue: IEEE International Conference on Artificial Intelligence Circuits and Systems (AICAS), pp. 137-141, 2019

Implemented in: Matlab

Link to the project

Authors: A. Burrello, L. Cavigelli, K. Schindler, L. Benini, A. Rahimi

Venue: Design, Automation Test in Europe Conference Exhibition (DATE), pp. 752-757, 2019

Implemented in: Python, OpenMP, Verilog

Link to the project

Authors: D. Kleyko, A. Rahimi, D. A. Rachkovskij, E. Osipov, J. M. Rabaey 

Venue: IEEE Transactions on Neural Networks and Learning Systems, vol. 29, no. 12, pp. 5880-5898, 2018

Implemented in: MATLAB

Link to the project

Authors: A. Burrello, K. Schindler, L. Benini, A. Rahimi

Venue: IEEE Biomedical Circuits and Systems Conference (BioCAS), pp. 1-4, 2018

Implemented in: Matlab and Python

Link to the project

Authors: F. Montagna, A. Rahimi, S. Benatti, D. Rossi, L. Benini

Venue: IEEE/ACM Design Automation Conference (DAC), pp. 1-6, 2018

Implemented in: C (for ARM Cortex M4 processors) and OpenMP (for multi-core processors)

Link to the project

Authors: A. Moin, A. Zhou, A. Rahimi, S. Benatti, A. Menon, S, Tamakloe, J. Ting, N. Yamamoto, Y. Khan, F. Burghardt, L. Benini, A. C. Arias, J. M. Rabaey

Venue: IEEE International Symposium on Circuits and Systems (ISCAS), pp. 1-5, 2018

Implemented in: Matlab and C

Link to the project

Authors: A. Rahimi, A. Tchouprina, P. Kanerva, J. Millan, J. M. Rabaey

Venue: Mobile Networks and Applications, pp. 1-12, 2017

Implemented in: Matlab

Link to the project

Authors: A. Rahimi, P. Kanerva, J. M. Rabaey 

Venue: IEEE/ACM International Symposium on Low Power Electronics and Design (ISLPED), pp. 64-69, 2016

Implemented in: Matlab and SystemVerilog (RTL)

Link to the project

Authors: A. Rahimi, S. Benatti, P. Kanerva, L. Benini, J. M. Rabaey 

Venue: IEEE International Conference on Rebooting Computing (ICRC), pp. 1-8 2016

Implemented in: Matlab

Link to the project

Authors: S. D. Levy,  C. W. Lowney II, W. Meroney, R. W. Gayler

Venue: Artificial General Intelligence (AGI) LNCS, vol. 8598, pp. 73-84, 2014

Implemented in: Matlab

Link to the project

Authors: S. Levy, S. Bajracharya, R. W. Gayler

Venue: AAAI Conference on Artificial Intelligence (AAAI), pp. 1-4, 2014

Implemented in: C++

Link to the project

Authors: R. W. Gayler, S. D. Levy

Venue: International Conference on the Analogy (ANALOGY), pp. 165-174, 2009

Implemented in: Matlab

Link to the project