Hopscotch-JS is used for the paper, "Offworker: An Offloading Framework for ParallelWeb Applications," authored by An-Chi Liu and Yi-Ping You.
Hopscotch-JS is a manually ported JavaScript version of the Hopscotch micro benchmark suite.
Currently, Hopscotch-JS's purpose is for evaluating the performance of the shared memory (SharedArrayBuffer
) in parallel web workers, which tests different memory access patterns in a different number of web workers used upon the proxy pattern parallelism (the main thread creates a proxy thread and the proxy thread create other worker threads).
It's easy to modify the source code for a different purpose; for example, testing ArrayBuffer
instead of SharedArrayBuffer
, running the code without web workers, or not using the proxy pattern parallelism.
Node.js is required. You can use NVM to install Node.js
# install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# refresh shell
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
# install Node.js
nvm install node
# check Node.js
node -v
Install chrome 91
# install chrome 91
wget http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_91.0.4472.164-1_amd64.deb
sudo apt -y install ./google-chrome-...._amd64.deb
google-chrome-stable --version
Download the corresponding Chrome Driver.
helpful reading: https://unix.stackexchange.com/questions/233185/install-older-versions-of-google-chrome-stable-on-ubuntu-14-10
Open a web server for this project (listen on port 8081).
node tool/http_server.js
Install the node modules.
npm install
Run the benchmark.
# single run
node run_single.js
# batch run and store the output
node run_batch.js
You can modify the parameters in benchmark/web_main_proxy.js
:
{
arr_len: 5000, // shared memory array length
arr_num: 4, // the amount of the shared memory arrays
iter: 1000, // iteration times
thread_num: 4 // the number (<= 4) of thread used
}
If you use Hopscotch-JS for an academic purpose, please cite the followings:
- Alif Ahmed and Kevin Skadron. 2019. Hopscotch: a micro-benchmark suite for memory performance evaluation. In Proceedings of the International Symposium on Memory Systems (MEMSYS '19). Association for Computing Machinery, New York, NY, USA, 167–172. https://doi.org/10.1145/3357526.3357574
- An-Chi Liu and Yi-Ping You, "Offworker: An Offloading Framework for Parallel Web Applications," Proceedings of the 23rd International Conference on Web Information Systems and Engineering (WISE '22), Biarritz, France, October 31-November 3, 2022. [Online]. Available: https://doi.org/10.1007/978-3-031-20891-1_13
- An-Chi Liu and Yi-Ping You, "Offworker: An Offloading Framework for Parallel Web Applications," M.S. thesis, Institute of Computer Science and Engineering, National Yang Ming Chiao Tung University, Hsinchu, Taiwan, 2022. [Online]. Available: https://etd.lib.nctu.edu.tw/cgi-bin/gs32/tugsweb.cgi?o=dnctucdr&s=id=%22GT0708560050%22.&switchlang=en
MIT