Artifact of ICPE 2020 paper : A Fully Structure-Driven Performance Analysis of Sparse Matrix-Vector Multiplication
Notice bibliographique
Résumé
<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>
Récupéré en direct depuis OpenAlex et désinversé. Les résumés ne sont pas conservés dans cette base de données : les index inversés représentent 8,6 Go des 9,3 Go de texte de la base, et le serveur dispose de 13 Go libres.
Comment cette classification a été obtenuedéplier
Prédiction distillée sur la base complète
Imitation des enseignantsNi prévalence calibrée, ni vérité terrain. Validation humaine à venir. Apprise à partir de 10 348 étiquettes directes de Codex et de 10 348 étiquettes directes de Gemma. Le mode candidate est l'union des têtes enseignantes seuillées; le consensus est leur intersection. Ces sorties portent le statut machine_predicted_unvalidated et ne sont ni des étiquettes humaines ni des étiquettes directes de modèles de pointe.
Scores Codex et Gemma par catégorie
| Catégorie | Codex | Gemma |
|---|---|---|
| Métarecherche | 0,000 | 0,000 |
| Méta-épidémiologie (sens strict) | 0,000 | 0,000 |
| Méta-épidémiologie (sens large) | 0,001 | 0,000 |
| Bibliométrie | 0,001 | 0,001 |
| Études des sciences et des technologies | 0,000 | 0,000 |
| Communication savante | 0,000 | 0,000 |
| Science ouverte | 0,000 | 0,000 |
| Intégrité de la recherche | 0,000 | 0,000 |
| Charge utile insuffisante (le modèle a refusé de juger) | 0,064 | 0,001 |
Scores machine (provisoires)
Les deux têtes enseignantes du modèle étudiant, lues sur ce travail. Un score ordonne la base pour la relecture; il n'affirme jamais une catégorie, et le statut de validation accompagne chaque rangée tel quel.
Scores de référence d'un modèle non mature (critères de maturité non atteints, 7 itérations). Un score ordonne; il n'affirme jamais une catégorie.
score_only:v0-immature-baseline · tel quel depuis la passe de notation : score_only signifie que le nombre peut ordonner les travaux, et qu'aucune étiquette de catégorie n'en découleClassification
machine, non validéePrédiction automatique; les deux têtes enseignantes s’accordent sur ce qui est montré ici.
Le détail, modèle par modèle et score par score, se trouve en fin de page sous « Comment cette classification a été obtenue ».