Rodinia-JS is used for the paper, "Offworker: An Offloading Framework for ParallelWeb Applications," authored by An-Chi Liu and Yi-Ping You.
Rodinia-JS is a manually ported the Rodinia benchmark suite (version 1) from OpenMP into JavaScript, where the computation-intensive parts of the programs (i.e., kernels) were expressed by using the Web Workers API with the proxy pattern. All Rodinia applications have been successfully ported, except "Leukocyte Tracking", "Stream Cluster", and "Similarity Score" due to their large code size (over 3,000 lines of code). We call this new benchmark suite Rodinia-JS.
The Rodinia benchmark suite includes some datasets, but their size is too large for client-side web applications, which fetch external data from the web server rather than from the local file system, since data fetching is likely to become a major task of the applications. We scaled down the datasets to meet the following criteria (the default dataset0
): (1) the total running time of an application on the mobile device takes less than seven seconds while the time spent in data fetching is less than two seconds, which is more reasonable for web applications as more than half of visits are abandoned if a mobile site takes over three seconds to load (ref), and (2) the time spent in computation is greater than the overhead time incurred by creating workers, which makes sense for parallelization to be beneficial.
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 (tested version, but may work for the latest Chrome)
# 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
Modify SERVER_DOMAIN
in exp/main.js
and BASE_URL
in exp/gen.sh
.
$ cd exp
$ bash gen.sh # create datasets for testing.
$ npm install # install modules
Open a web server for this project (listen on port 8081).
$ node tool/http_server.js
Run the benchmark.
$ cd exp; node main.js
The output will be stored in exp/output
.
Once generating datasets by the previous process, there are multiple datasets in exp/tmp/{APP_NAME}/
. dataset0
is the default dataset used by the thesis.
The default dataset had been verified correctness with the original OpenMP's result. If you use other dataset or other input datum, you may need to verify the result.
If you use Rodinia-JS for academical purpose, please cite the followings:
- S. Che, M. Boyer, J. Meng, D. Tarjan, J. W. Sheaffer, S.-H. Lee, and K. Skadron. Rodinia: A Benchmark Suite for Heterogeneous Computing. In Proceedings of the IEEE International Symposium on Workload Characterization (IISWC), pp. 44-54, Oct. 2009.
- 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
The source code of OpenMP Rodinia follows the Rodinia license and Rodinia-JS follows MIT license.