Artifact of ICPE 2020 paper : A Fully Structure-Driven Performance Analysis of Sparse Matrix-Vector Multiplication
Bibliographic record
Abstract
<strong>Artifact of ICPE 2020 Paper : A Fully Structure-Driven Performance Analysis of Sparse Matrix-Vector Multiplication</strong> Sparse matrix-vector multiplication (SpMV) implementations for each of the four formats -- COO, CSR, DIA and ELL.<em> y = Ax</em> where A is a M x N sparse matrix with nnz number of non-zeros, x is a dense input vector of size N and y is a dense output vector of size M. <em>We provide the artifact as a docker container image for portability.</em> <strong>Docker :</strong> <em>pjots/icpe2020:latest</em> (https://hub.docker.com/r/pjots/icpe2020) <strong><em>Getting Started Guide on how to use the docker to run the artifact</em></strong> <strong>Install Docker</strong> Please follow the instructions at https://docs.docker.com/install/ to install and start the Docker Engine. <strong>Memory and Disk Requirements</strong> The docker image of size ~= 15GB contains benchmarks(~=47GB) in a tarball of size ~=12GB, hence it is suggested that a minimum of 70GB is required to run the artifact. Please adjust the memory(at least 8GB) and disk image size of docker engine accordingly. <strong>Load Artifact Image</strong> Please open your terminal and run the following command to load the artifact image from the given tar file: <pre><code class="language-bash">docker load < icpe2020.tar</code></pre> <strong>Run Artifact</strong> Please run the following command to start running the artifact: <pre><code class="language-bash">docker run pjots/icpe2020:latest</code></pre> In addition to running the artifact, the outputs can be viewed on the host machine using -v flag as follows : <pre><code class="language-bash"> mkdir -p <HOST_DIRECTORY_PATH> docker run -v <HOST_DIRECTORY_PATH>:/ICPE2020/<CONTAINER_DIRECTORY_PATH> pjots/icpe2020:latest</code></pre> The following example is to view the generated RQ1 plots for SpMV C implementation at the desired HOST_DIRECTORY : <pre><code class="language-bash">docker run -v <HOST_DIRECTORY_PATH>:/ICPE2020/analysis/results/RQ1/c pjots/icpe2020:latest</code></pre> <em><strong>Step-by-Step Instruction Guide to evaluate the artifact</strong></em> <strong>Input Matrices</strong> The input matrix is required to be in Matrix Market format (.mtx). We used 1,979 real-life sparse matrices from The SuiteSparse Matrix Collection (formerly the University of Florida Sparse Matrix Collection) at https://sparse.tamu.edu which served as the set of sparse matrix benchmarks for our experiments. We provide these benchmarks in a tarball (.tar.bz2 format). <strong>Target Languages and Runtime</strong> We conducted our experiments on an Intel Core i7-3930K with 6 3.20GHz cores, 32KB L1, 256KB L2, 12MB last-level cache and 16GB memory, running Ubuntu Linux 16.04.2. We compiled our C implementations with gcc-7 at optimization level -O3. For WebAssembly, used the Chrome 74 browser (Official build 74.0.3729.108 with V8 JavaScript engine 7.4.288.25) as the execution environment. We run Chrome with a flag --experimental-wasm-simd to enable the use of SIMD (Single Instruction Multiple Data) instructions for loop vectorization optimizations in some of the SpMV WebAssembly implementations. We also enable two more flags, --wasm-no-bounds-checks and --wasm-no-stack-checks to avoid memory bounds checks and stack guards for performance testing. <strong>Software Requirements</strong> All of the following software requirements are met inside the docker container image. PAPI (Performance API) http://icl.utk.edu/papi/software/ gcc-7 python, pip, matplotlib, pandas chrome browser version 74 (prepacked in the docker image) Add MIME type for wasm inside apache2 config file (check .htaccess file inside wasm src directory) <strong>Step 1 : Run Experiments</strong> In the home directory, shell script named run.sh executes the following implementations to collect the raw data for our experiments which includes MFLOPS for each matrix on each format, and the comma-separated format output is stored in the raw-data directory. Run SpMV C implementation (output : raw-data/float_mflops.csv) Run SpMV C implementation with PAPI (Collecting hardware performance counters) (output : raw-data/float_mflops_with_papi.csv) Run C implementation to collect matrix feature (output : raw-data/features.csv) Run SpMV WASM implementation (output : raw-data/sequential-chrome-single.csv) <strong>Step 2 : Analyze Results</strong> We analyze the results by employing 10%-affinity criteria to obtain the set of matrices for each format category. An input matrix A has an x%-affinity for storage format F, if the performance for F is at least x% better than all other formats and the performance difference is greater than the measurement error. In addition to single-format categories (COO, CSR, DIA and ELL), there exist some cases where more than one format fulfils the x%-affinity metric versus the other formats but the performance between them cannot be distinguished, therefore combination-format categories were introduced. Using scripts at analysis/scripts/RQ1, analysis/scripts/RQ2, analysis/scripts/RQ3, the results are stored at analysis/results/RQ1, analysis/results/RQ2, analysis/results/RQ3 for both c and wasm respectively. <strong>Step 3 : Plot Results</strong> Finally, the plot results are generated via python scripts available at analysis/scripts/RQ1, analysis/scripts/RQ2 and analysis/scripts/RQ3 for each research question for both wasm and C. The plots are stored at analysis/results/RQ1, analysis/results/RQ2 and analysis/results/RQ3. Two shell scripts are provided : run.sh and run_existing.sh where, run.sh : runs the benchmarks from step 1 to step 3. run_existing.sh : uses the raw-data previously generated from step 1 and runs only step 2 and step 3. <strong>Notes</strong> Depending on the hardware, SpMV C implementation with PAPI may not provide the desired output since the PAPI events may not be supported by the given architecture. <br> <strong>How to build and run your own docker image from the given repository</strong> <strong>Build the docker image</strong> <pre><code class="language-bash">docker build -t pjots/my_image .</code></pre> <strong>Run the docker image</strong> <pre><code class="language-bash">docker run pjots/my_image</code></pre>
Fetched live from OpenAlex and de-inverted. Abstracts are not stored in this database: the inverted indexes are 8.6 GB of the frame’s 9.3 GB of text, and the host has 13 GB free.
How this classification was reachedexpand
Full frame distilled prediction
Teacher imitationNot calibrated prevalence, not ground truth. Human validation pending. Learned from the 10,348 direct Codex labels and 10,348 direct Gemma labels. Candidate is the union of thresholded teacher heads; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels or direct frontier model labels.
Codex and Gemma teacher scores by category
| Category | Codex | Gemma |
|---|---|---|
| Metaresearch | 0.000 | 0.000 |
| Meta-epidemiology (narrow) | 0.000 | 0.000 |
| Meta-epidemiology (broad) | 0.001 | 0.000 |
| Bibliometrics | 0.001 | 0.001 |
| Science and technology studies | 0.000 | 0.000 |
| Scholarly communication | 0.000 | 0.000 |
| Open science | 0.000 | 0.000 |
| Research integrity | 0.000 | 0.000 |
| Insufficient payload (model declined to judge) | 0.064 | 0.001 |
Machine scores (provisional)
The two teacher heads of the student model, read on this work. A score orders the frame for review; it never asserts a category, and the validation status ships verbatim with every row.
Baseline scores from an immature model (maturity gate not passed, 7 training rounds). Scores rank; they never assert a category.
score_only:v0-immature-baseline · verbatim from the scoring run: score_only means the number may rank works, and no category label ships from itClassification
machine, unvalidatedMachine predicted; both teacher heads agree on what is shown here.
How this classification was reached, model by model and score by score, is at the end of the page under "How this classification was reached".