Skip to content

Commit

Permalink
Emscripten with O3
Browse files Browse the repository at this point in the history
  • Loading branch information
vorosl committed May 17, 2024
1 parent c2fad63 commit 375d688
Show file tree
Hide file tree
Showing 23 changed files with 329 additions and 118 deletions.
34 changes: 18 additions & 16 deletions test/wasmBenchmarker/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import subprocess
import sys
import time

from pathlib import Path
from os.path import abspath, dirname, join
from markdownTable import markdownTable # pip install py-markdown-table
Expand All @@ -30,31 +31,31 @@
DIFF_TRESHOLD = 1e-7

expectedValues = {
"change": 4,
"factorial": 30,
"fannkuch": 120,
"fibonacci": 1,
"change": 3,
"factorial": 899999994000000000,
"fannkuch": 360,
"fibonacci": 63245986,
"gregory": 3.14159264,
"hanoi": 0,
"heapsort": 0,
"huffman": 0,
"kNucleotide": 1,
"mandelbrotFloat": 775007,
"mandelbrotDouble": 775007,
"kNucleotide": 0, # 1
"mandelbrotFloat": 775014,
"mandelbrotDouble": 775014,
"matrixMultiply": 3920.0,
"miniWalrus": 27449,
"nbody": -0.16910574,
"nqueens": 0,
"prime": 48611,
"nbody": -0.16904405,
"nqueens": 246,
"prime": 70657,
"quickSort": 0,
"redBlack": 4000000,
"redBlack": 13354000,
"rsa": 0,
"salesman": 840,
"simdMandelbrotFloat": 775007,
"simdMandelbrotDouble": 775007,
"simdNbody": -0.16910574,
"salesman": 2520,
"simdMandelbrotFloat": 775014,
"simdMandelbrotDouble": 775014,
"simdNbody": -0.16904405,
"simdMatrixMultiply": 3920.0,
"ticTacToe": 4748900
"ticTacToe": 18995600
}

# https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/simple.html#simple
Expand Down Expand Up @@ -149,6 +150,7 @@ def compile_tests(emcc_path, path, only_game, only_simd, compile_anyway, run, ve
flags = "-msimd128" if file.startswith("simd") else ""
flags += (" -s WASM=1 -s EXPORTED_FUNCTIONS=_runtime"
" -s EXPORTED_RUNTIME_METHODS=ccall,cwrap"
" -O3"
f" -o {path}/wasm/{name}.wasm")
if (verbose): print(f"compiling {name}")
command = f"{emcc_path} {path}/{file} {flags}"
Expand Down
2 changes: 1 addition & 1 deletion test/wasmBenchmarker/ctests/change.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
uint32_t coins[] = {5, 10, 20, 50, 100, 200};

#define COINT_NUMBER sizeof(coins) / sizeof(uint32_t)
#define MONEY 85
#define MONEY 155

/*
* Return the smallest number of coins
Expand Down
12 changes: 7 additions & 5 deletions test/wasmBenchmarker/ctests/factorial.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
#include <stdint.h>
#include <stdio.h>

uint64_t factorial(uint8_t n) {
uint8_t counter = 0;
for (uint8_t i = 0; i < n; i++, counter++) {
uint64_t factorial(uint64_t n) {
uint64_t counter = 0;
for (uint64_t i = 0; i < n; i++, counter++) {
factorial(n - 1);
}

Expand All @@ -29,8 +29,10 @@ uint64_t factorial(uint8_t n) {
uint64_t runtime() {
uint64_t retVal = 0;

for (uint16_t i = 0; i < 3; i++) {
retVal += factorial(10);
for (uint64_t i = 0; i < 6000000000; i++) {
retVal += factorial(150000000);
retVal -= factorial(149999999);
retVal += factorial(149999998);
}

return retVal;
Expand Down
2 changes: 1 addition & 1 deletion test/wasmBenchmarker/ctests/fannkuch.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ uint64_t fannkuch(uint64_t n) {
uint64_t runtime() {
uint64_t retVal = 0;

for (uint8_t i = 0; i < 4; i++) {
for (uint8_t i = 0; i < 12; i++) {
retVal += fannkuch(9);
}

Expand Down
8 changes: 3 additions & 5 deletions test/wasmBenchmarker/ctests/fibonacci.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,15 @@

uint64_t fibonacci(uint64_t n) {
if (n == 0 || n == 1) {
return 1;
return n;
}

fibonacci(n - 1);
fibonacci(n - 2);

return fibonacci(n - 2);
return fibonacci(n-1) + fibonacci(n-2);
}

uint64_t runtime() {
return fibonacci(26);
return fibonacci(39);
}

int main() {
Expand Down
2 changes: 1 addition & 1 deletion test/wasmBenchmarker/ctests/gregory.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ double gregorySeries(uint64_t n) {
}

double runtime() {
return gregorySeries(75000000);
return gregorySeries(300000000);
}

int main() {
Expand Down
2 changes: 1 addition & 1 deletion test/wasmBenchmarker/ctests/hanoi.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

#define DISKS 24
#define DISKS 26

typedef struct {
uint64_t disks[DISKS];
Expand Down
2 changes: 1 addition & 1 deletion test/wasmBenchmarker/ctests/heapsort.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include "include/random.h"

#define ARRAY_LENGTH 15000
#define ITERATIONS 64
#define ITERATIONS 300

#define NO_CHILD 0
#define NO_PARENT 65535
Expand Down
2 changes: 1 addition & 1 deletion test/wasmBenchmarker/ctests/huffman.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ byte runtime();

// TEST PARAMETER

#define ITERATIONS 3
#define ITERATIONS 7

char* message = "Lorem ipsum dolor sit amet, et wisi primis duo."
"In quo erat tritani fuisset, no ullum vivendo "
Expand Down
4 changes: 2 additions & 2 deletions test/wasmBenchmarker/ctests/include/mandelbrot.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
#include <math.h>
#include <stdint.h>

#define WIDTH 1600
#define HIGHT 1400
#define WIDTH 12800
#define HIGHT 11200
#define N 20
#define REAL_AXIS_SHIFT -1.8 // ~ horizontal shift
#define IMAGINARY_AXIS_SHIFT -1.0 // ~ vertical shift
Expand Down
4 changes: 2 additions & 2 deletions test/wasmBenchmarker/ctests/include/simdMandelbrot.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@

#include <wasm_simd128.h>

#define WIDTH 1600
#define HIGHT 1400
#define WIDTH 6400
#define HIGHT 5600
#define N 20
#define REAL_AXIS_SHIFT -1.8 // ~ horizontal shift
#define IMAGINARY_AXIS_SHIFT -1.0 // ~ vertical shift
Expand Down
103 changes: 93 additions & 10 deletions test/wasmBenchmarker/ctests/kNucleotide.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include <stdint.h>
#include <stdbool.h>

extern const char *input_3;
extern const char *input_6;

typedef struct {
char key[50];
Expand Down Expand Up @@ -221,18 +221,17 @@ bool check() {
}

bool runtime() {
frequency(input_3, 1);
frequency(input_3, 2);
count(input_3, "ggt");
count(input_3, "ggta");
count(input_3, "ggtatt");
count(input_3, "ggtattttaatt");
count(input_3, "ggtattttaatttatagt");
frequency(input_6, 1);
frequency(input_6, 2);
count(input_6, "ggt");
count(input_6, "ggta");
count(input_6, "ggtatt");
count(input_6, "ggtattttaatt");
count(input_6, "ggtattttaatttatagt");
return check();
}

const char *input_3 =
/* ">THREE Homo sapiens frequency" */
const char *input_6 =
"aacacttcaccaggtatcgtgaaggctcaagattacccagagaacctttgcaatataaga"
"atatgtatgcagcattaccctaagtaattatattctttttctgactcaaagtgacaagcc"
"ctagtgtatattaaatcggtatatttgggaaattcctcaaactatcctaatcaggtagcc"
Expand Down Expand Up @@ -316,4 +315,88 @@ const char *input_3 =
"tctgtcccagaacagctccacaagtttttttacagccgaaacccctgtgtgaatcttaat"
"atccaagcgcgttatctgattagagtttacaactcagtattttatcagtacgttttgttt"
"ccaacattacccggtatgacaaaatgacgccacgtgtcgaataatggtctgaccaatgta"
"ggaagtgaaaagataaatat"
"aacacttcaccaggtatcgtgaaggctcaagattacccagagaacctttgcaatataaga"
"atatgtatgcagcattaccctaagtaattatattctttttctgactcaaagtgacaagcc"
"ctagtgtatattaaatcggtatatttgggaaattcctcaaactatcctaatcaggtagcc"
"atgaaagtgatcaaaaaagttcgtacttataccatacatgaattctggccaagtaaaaaa"
"tagattgcgcaaaattcgtaccttaagtctctcgccaagatattaggatcctattactca"
"tatcgtgtttttctttattgccgccatccccggagtatctcacccatccttctcttaaag"
"gcctaatattacctatgcaaataaacatatattgttgaaaattgagaacctgatcgtgat"
"tcttatgtgtaccatatgtatagtaatcacgcgactatatagtgctttagtatcgcccgt"
"gggtgagtgaatattctgggctagcgtgagatagtttcttgtcctaatatttttcagatc"
"gaatagcttctatttttgtgtttattgacatatgtcgaaactccttactcagtgaaagtc"
"atgaccagatccacgaacaatcttcggaatcagtctcgttttacggcggaatcttgagtc"
"taacttatatcccgtcgcttactttctaacaccccttatgtatttttaaaattacgttta"
"ttcgaacgtacttggcggaagcgttattttttgaagtaagttacattgggcagactcttg"
"acattttcgatacgactttctttcatccatcacaggactcgttcgtattgatatcagaag"
"ctcgtgatgattagttgtcttctttaccaatactttgaggcctattctgcgaaatttttg"
"ttgccctgcgaacttcacataccaaggaacacctcgcaacatgccttcatatccatcgtt"
"cattgtaattcttacacaatgaatcctaagtaattacatccctgcgtaaaagatggtagg"
"ggcactgaggatatattaccaagcatttagttatgagtaatcagcaatgtttcttgtatt"
"aagttctctaaaatagttacatcgtaatgttatctcgggttccgcgaataaacgagatag"
"attcattatatatggccctaagcaaaaacctcctcgtattctgttggtaattagaatcac"
"acaatacgggttgagatattaattatttgtagtacgaagagatataaaaagatgaacaat"
"tactcaagtcaagatgtatacgggatttataataaaaatcgggtagagatctgctttgca"
"attcagacgtgccactaaatcgtaatatgtcgcgttacatcagaaagggtaactattatt"
"aattaataaagggcttaatcactacatattagatcttatccgatagtcttatctattcgt"
"tgtatttttaagcggttctaattcagtcattatatcagtgctccgagttctttattattg"
"ttttaaggatgacaaaatgcctcttgttataacgctgggagaagcagactaagagtcgga"
"gcagttggtagaatgaggctgcaaaagacggtctcgacgaatggacagactttactaaac"
"caatgaaagacagaagtagagcaaagtctgaagtggtatcagcttaattatgacaaccct"
"taatacttccctttcgccgaatactggcgtggaaaggttttaaaagtcgaagtagttaga"
"ggcatctctcgctcataaataggtagactactcgcaatccaatgtgactatgtaatactg"
"ggaacatcagtccgcgatgcagcgtgtttatcaaccgtccccactcgcctggggagacat"
"gagaccacccccgtggggattattagtccgcagtaatcgactcttgacaatccttttcga"
"ttatgtcatagcaatttacgacagttcagcgaagtgactactcggcgaaatggtattact"
"aaagcattcgaacccacatgaatgtgattcttggcaatttctaatccactaaagcttttc"
"cgttgaatctggttgtagatatttatataagttcactaattaagatcacggtagtatatt"
"gatagtgatgtctttgcaagaggttggccgaggaatttacggattctctattgatacaat"
"ttgtctggcttataactcttaaggctgaaccaggcgtttttagacgacttgatcagctgt"
"tagaatggtttggactccctctttcatgtcagtaacatttcagccgttattgttacgata"
"tgcttgaacaatattgatctaccacacacccatagtatattttataggtcatgctgttac"
"ctacgagcatggtattccacttcccattcaatgagtattcaacatcactagcctcagaga"
"tgatgacccacctctaataacgtcacgttgcggccatgtgaaacctgaacttgagtagac"
"gatatcaagcgctttaaattgcatataacatttgagggtaaagctaagcggatgctttat"
"ataatcaatactcaataataagatttgattgcattttagagttatgacacgacatagttc"
"actaacgagttactattcccagatctagactgaagtactgatcgagacgatccttacgtc"
"gatgatcgttagttatcgacttaggtcgggtctctagcggtattggtacttaaccggaca"
"ctatactaataacccatgatcaaagcataacagaatacagacgataatttcgccaacata"
"tatgtacagaccccaagcatgagaagctcattgaaagctatcattgaagtcccgctcaca"
"atgtgtcttttccagacggtttaactggttcccgggagtcctggagtttcgacttacata"
"aatggaaacaatgtattttgctaatttatctatagcgtcatttggaccaatacagaatat"
"tatgttgcctagtaatccactataacccgcaagtgctgatagaaaatttttagacgattt"
"ataaatgccccaagtatccctcccgtgaatcctccgttatactaattagtattcgttcat"
"acgtataccgcgcatatatgaacatttggcgataaggcgcgtgaattgttacgtgacaga"
"gatagcagtttcttgtgatatggttaacagacgtacatgaagggaaactttatatctata"
"gtgatgcttccgtagaaataccgccactggtctgccaatgatgaagtatgtagctttagg"
"tttgtactatgaggctttcgtttgtttgcagagtataacagttgcgagtgaaaaaccgac"
"gaatttatactaatacgctttcactattggctacaaaatagggaagagtttcaatcatga"
"gagggagtatatggatgctttgtagctaaaggtagaacgtatgtatatgctgccgttcat"
"tcttgaaagatacataagcgataagttacgacaattataagcaacatccctaccttcgta"
"acgatttcactgttactgcgcttgaaatacactatggggctattggcggagagaagcaga"
"tcgcgccgagcatatacgagacctataatgttgatgatagagaaggcgtctgaattgata"
"catcgaagtacactttctttcgtagtatctctcgtcctctttctatctccggacacaaga"
"attaagttatatatatagagtcttaccaatcatgttgaatcctgattctcagagttcttt"
"ggcgggccttgtgatgactgagaaacaatgcaatattgctccaaatttcctaagcaaatt"
"ctcggttatgttatgttatcagcaaagcgttacgttatgttatttaaatctggaatgacg"
"gagcgaagttcttatgtcggtgtgggaataattcttttgaagacagcactccttaaataa"
"tatcgctccgtgtttgtatttatcgaatgggtctgtaaccttgcacaagcaaatcggtgg"
"tgtatatatcggataacaattaatacgatgttcatagtgacagtatactgatcgagtcct"
"ctaaagtcaattacctcacttaacaatctcattgatgttgtgtcattcccggtatcgccc"
"gtagtatgtgctctgattgaccgagtgtgaaccaaggaacatctactaatgcctttgtta"
"ggtaagatctctctgaattccttcgtgccaacttaaaacattatcaaaatttcttctact"
"tggattaactacttttacgagcatggcaaattcccctgtggaagacggttcattattatc"
"ggaaaccttatagaaattgcgtgttgactgaaattagatttttattgtaagagttgcatc"
"tttgcgattcctctggtctagcttccaatgaacagtcctcccttctattcgacatcgggt"
"ccttcgtacatgtctttgcgatgtaataattaggttcggagtgtggccttaatgggtgca"
"actaggaatacaacgcaaatttgctgacatgatagcaaatcggtatgccggcaccaaaac"
"gtgctccttgcttagcttgtgaatgagactcagtagttaaataaatccatatctgcaatc"
"gattccacaggtattgtccactatctttgaactactctaagagatacaagcttagctgag"
"accgaggtgtatatgactacgctgatatctgtaaggtaccaatgcaggcaaagtatgcga"
"gaagctaataccggctgtttccagctttataagattaaaatttggctgtcctggcggcct"
"cagaattgttctatcgtaatcagttggttcattaattagctaagtacgaggtacaactta"
"tctgtcccagaacagctccacaagtttttttacagccgaaacccctgtgtgaatcttaat"
"atccaagcgcgttatctgattagagtttacaactcagtattttatcagtacgttttgttt"
"ccaacattacccggtatgacaaaatgacgccacgtgtcgaataatggtctgaccaatgta"
"ggaagtgaaaagataaatat";
4 changes: 2 additions & 2 deletions test/wasmBenchmarker/ctests/matrixMultiply.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
#include <stdio.h>
#include <stdint.h>

// 4x4 square matrix
#define MATRIX_SIZE 16
// 13x13 square matrix
#define MATRIX_SIZE 169

#define ITERATION 3500000

Expand Down
2 changes: 1 addition & 1 deletion test/wasmBenchmarker/ctests/nbody.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include <stdio.h>
#include <math.h>

#define LOOP 450000
#define LOOP 3000000
#define SOLAR_MASS 39.47841760435743f
#define DAYS_PER_YEAR 365.24f
#define BODIES_COUNT 5
Expand Down
Loading

0 comments on commit 375d688

Please sign in to comment.