Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add visitor_init benchmark #1755

Merged
merged 1 commit into from Mar 26, 2021

Conversation

lkeegan
Copy link
Member

@lkeegan lkeegan commented Mar 23, 2021

benchmark init() for

  • LambdaRealDoubleVisitor
  • LLVMDoubleVisitor
  • LLVMFloatVisitor

also refactor visitor benchmarks

  • move expressions to visitor_expressions.h
  • add SYMENGINE_BENCHMARK_VISITORS macro to generate benchmarks for all expressions

and add more expressions

  - LambdaRealDoubleVisitor
  - LLVMDoubleVisitor
  - LLVMFloatVisitor

refactor visitor benchmarks
  - move expressions to visitor_expressions.h
  - add SYMENGINE_BENCHMARK_VISITORS macro to generate benchmarks for all expressions

add more expressions
  - two large expressions based on symengine#1612
  - one expression with many intrinsic functions copied from test_lambda_double.cpp
@lkeegan
Copy link
Member Author

lkeegan commented Mar 23, 2021

sample ./benchmarks/visitor_init output:

-------------------------------------------------------------------------------------------
Benchmark                                                 Time             CPU   Iterations
-------------------------------------------------------------------------------------------
Init<LambdaRealDoubleVisitor, Expr1, double>/0/0      27503 ns        27496 ns        25448 O0
Init<LambdaRealDoubleVisitor, Expr1, double>/1/0      18530 ns        18526 ns        37542 cse_O0
Init<LLVMDoubleVisitor, Expr1, double>/0/0           850197 ns       849896 ns          822 O0
Init<LLVMDoubleVisitor, Expr1, double>/1/0           710286 ns       710054 ns          988 cse_O0
Init<LLVMDoubleVisitor, Expr1, double>/0/1          1564301 ns      1563683 ns          447 O1
Init<LLVMDoubleVisitor, Expr1, double>/1/1          1575303 ns      1574771 ns          444 cse_O1
Init<LLVMDoubleVisitor, Expr1, double>/0/2          1583935 ns      1583366 ns          441 O2
Init<LLVMDoubleVisitor, Expr1, double>/1/2          1584714 ns      1584161 ns          443 cse_O2
Init<LLVMDoubleVisitor, Expr1, double>/0/3          1622451 ns      1621871 ns          432 O3
Init<LLVMDoubleVisitor, Expr1, double>/1/3          1619807 ns      1619228 ns          433 cse_O3
Init<LLVMFloatVisitor, Expr1, float>/0/0             857108 ns       856823 ns          815 O0
Init<LLVMFloatVisitor, Expr1, float>/1/0             718156 ns       717890 ns          976 cse_O0
Init<LLVMFloatVisitor, Expr1, float>/0/1            1562121 ns      1561598 ns          448 O1
Init<LLVMFloatVisitor, Expr1, float>/1/1            1571366 ns      1570802 ns          445 cse_O1
Init<LLVMFloatVisitor, Expr1, float>/0/2            1584981 ns      1584379 ns          442 O2
Init<LLVMFloatVisitor, Expr1, float>/1/2            1582870 ns      1582309 ns          443 cse_O2
Init<LLVMFloatVisitor, Expr1, float>/0/3            1620705 ns      1620120 ns          431 O3
Init<LLVMFloatVisitor, Expr1, float>/1/3            1617577 ns      1617040 ns          433 cse_O3
Init<LambdaRealDoubleVisitor, Expr2, double>/0/0       3713 ns         3712 ns       188379 O0
Init<LambdaRealDoubleVisitor, Expr2, double>/1/0      10817 ns        10814 ns        64762 cse_O0
Init<LLVMDoubleVisitor, Expr2, double>/0/0           559300 ns       559086 ns         1247 O0
Init<LLVMDoubleVisitor, Expr2, double>/1/0           564632 ns       564428 ns         1241 cse_O0
Init<LLVMDoubleVisitor, Expr2, double>/0/1          1326954 ns      1326447 ns          528 O1
Init<LLVMDoubleVisitor, Expr2, double>/1/1          1385220 ns      1384759 ns          506 cse_O1
Init<LLVMDoubleVisitor, Expr2, double>/0/2          1340649 ns      1340199 ns          523 O2
Init<LLVMDoubleVisitor, Expr2, double>/1/2          1392672 ns      1392146 ns          502 cse_O2
Init<LLVMDoubleVisitor, Expr2, double>/0/3          1395368 ns      1394884 ns          502 O3
Init<LLVMDoubleVisitor, Expr2, double>/1/3          1448634 ns      1448056 ns          484 cse_O3
Init<LLVMFloatVisitor, Expr2, float>/0/0             560539 ns       560323 ns         1247 O0
Init<LLVMFloatVisitor, Expr2, float>/1/0             566023 ns       565837 ns         1236 cse_O0
Init<LLVMFloatVisitor, Expr2, float>/0/1            1329876 ns      1329305 ns          527 O1
Init<LLVMFloatVisitor, Expr2, float>/1/1            1391144 ns      1390627 ns          504 cse_O1
Init<LLVMFloatVisitor, Expr2, float>/0/2            1340717 ns      1340223 ns          522 O2
Init<LLVMFloatVisitor, Expr2, float>/1/2            1400879 ns      1400390 ns          501 cse_O2
Init<LLVMFloatVisitor, Expr2, float>/0/3            1393317 ns      1392838 ns          503 O3
Init<LLVMFloatVisitor, Expr2, float>/1/3            1451253 ns      1450740 ns          483 cse_O3
Init<LambdaRealDoubleVisitor, Expr3, double>/0/0     781183 ns       781005 ns          894 O0
Init<LambdaRealDoubleVisitor, Expr3, double>/1/0      90519 ns        90488 ns         7704 cse_O0
Init<LLVMDoubleVisitor, Expr3, double>/0/0         12341704 ns     12337071 ns           57 O0
Init<LLVMDoubleVisitor, Expr3, double>/1/0          1433403 ns      1432816 ns          488 cse_O0
Init<LLVMDoubleVisitor, Expr3, double>/0/1         17159266 ns     17152743 ns           39 O1
Init<LLVMDoubleVisitor, Expr3, double>/1/1          2787761 ns      2786637 ns          253 cse_O1
Init<LLVMDoubleVisitor, Expr3, double>/0/2         17454515 ns     17448122 ns           39 O2
Init<LLVMDoubleVisitor, Expr3, double>/1/2          2784619 ns      2783676 ns          251 cse_O2
Init<LLVMDoubleVisitor, Expr3, double>/0/3         17544725 ns     17537427 ns           40 O3
Init<LLVMDoubleVisitor, Expr3, double>/1/3          2829024 ns      2828034 ns          248 cse_O3
Init<LLVMFloatVisitor, Expr3, float>/0/0           12299605 ns     12295185 ns           57 O0
Init<LLVMFloatVisitor, Expr3, float>/1/0            1435680 ns      1435157 ns          486 cse_O0
Init<LLVMFloatVisitor, Expr3, float>/0/1           17111584 ns     17104559 ns           41 O1
Init<LLVMFloatVisitor, Expr3, float>/1/1            2763708 ns      2762723 ns          253 cse_O1
Init<LLVMFloatVisitor, Expr3, float>/0/2           17398627 ns     17391534 ns           40 O2
Init<LLVMFloatVisitor, Expr3, float>/1/2            2873716 ns      2872615 ns          250 cse_O2
Init<LLVMFloatVisitor, Expr3, float>/0/3           17700135 ns     17692947 ns           40 O3
Init<LLVMFloatVisitor, Expr3, float>/1/3            2829212 ns      2828164 ns          247 cse_O3
Init<LambdaRealDoubleVisitor, Expr4, double>/0/0   42600581 ns     42588674 ns           17 O0
Init<LambdaRealDoubleVisitor, Expr4, double>/1/0     820665 ns       820381 ns          848 cse_O0
Init<LLVMDoubleVisitor, Expr4, double>/0/0       3208331736 ns   3207173523 ns            1 O0
Init<LLVMDoubleVisitor, Expr4, double>/1/0          3807436 ns      3806114 ns          184 cse_O0
Init<LLVMDoubleVisitor, Expr4, double>/0/1         43765262 ns     43751903 ns           16 O1
Init<LLVMDoubleVisitor, Expr4, double>/1/1          7661319 ns      7658637 ns           91 cse_O1
Init<LLVMDoubleVisitor, Expr4, double>/0/2         77250445 ns     77225528 ns            9 O2
Init<LLVMDoubleVisitor, Expr4, double>/1/2          8510657 ns      8507557 ns           82 cse_O2
Init<LLVMDoubleVisitor, Expr4, double>/0/3         78668388 ns     78638852 ns            9 O3
Init<LLVMDoubleVisitor, Expr4, double>/1/3          8714388 ns      8710364 ns           80 cse_O3
Init<LLVMFloatVisitor, Expr4, float>/0/0         3193856650 ns   3192801522 ns            1 O0
Init<LLVMFloatVisitor, Expr4, float>/1/0            3839352 ns      3837986 ns          179 cse_O0
Init<LLVMFloatVisitor, Expr4, float>/0/1           44006211 ns     43990446 ns           16 O1
Init<LLVMFloatVisitor, Expr4, float>/1/1            7781089 ns      7777966 ns           91 cse_O1
Init<LLVMFloatVisitor, Expr4, float>/0/2           77362777 ns     77339771 ns            9 O2
Init<LLVMFloatVisitor, Expr4, float>/1/2            8602316 ns      8598898 ns           82 cse_O2
Init<LLVMFloatVisitor, Expr4, float>/0/3           77921735 ns     77898062 ns            9 O3
Init<LLVMFloatVisitor, Expr4, float>/1/3            8741149 ns      8737195 ns           81 cse_O3
Init<LambdaRealDoubleVisitor, Expr5, double>/0/0     409651 ns       409538 ns         1703 O0
Init<LambdaRealDoubleVisitor, Expr5, double>/1/0     353990 ns       353874 ns         1918 cse_O0
Init<LLVMDoubleVisitor, Expr5, double>/0/0         19364684 ns     19358041 ns           36 O0
Init<LLVMDoubleVisitor, Expr5, double>/1/0          3114131 ns      3113070 ns          225 cse_O0
Init<LLVMDoubleVisitor, Expr5, double>/0/1          7116066 ns      7113014 ns          100 O1
Init<LLVMDoubleVisitor, Expr5, double>/1/1          5760457 ns      5758331 ns          122 cse_O1
Init<LLVMDoubleVisitor, Expr5, double>/0/2          8482509 ns      8479553 ns           83 O2
Init<LLVMDoubleVisitor, Expr5, double>/1/2          6588244 ns      6585962 ns          107 cse_O2
Init<LLVMDoubleVisitor, Expr5, double>/0/3          8602705 ns      8599393 ns           82 O3
Init<LLVMDoubleVisitor, Expr5, double>/1/3          6719043 ns      6716664 ns          105 cse_O3
Init<LLVMFloatVisitor, Expr5, float>/0/0           19861553 ns     19853857 ns           36 O0
Init<LLVMFloatVisitor, Expr5, float>/1/0            3150013 ns      3148749 ns          222 cse_O0
Init<LLVMFloatVisitor, Expr5, float>/0/1            6947373 ns      6944861 ns          100 O1
Init<LLVMFloatVisitor, Expr5, float>/1/1            5770714 ns      5768518 ns          121 cse_O1
Init<LLVMFloatVisitor, Expr5, float>/0/2            8561460 ns      8558157 ns           82 O2
Init<LLVMFloatVisitor, Expr5, float>/1/2            6627722 ns      6625391 ns          106 cse_O2
Init<LLVMFloatVisitor, Expr5, float>/0/3            8651402 ns      8648259 ns           81 O3
Init<LLVMFloatVisitor, Expr5, float>/1/3            6729288 ns      6726693 ns          104 cse_O3

@isuruf
Copy link
Member

isuruf commented Mar 26, 2021

Thanks

@isuruf isuruf merged commit 0df82e7 into symengine:master Mar 26, 2021
@lkeegan lkeegan deleted the add_visitor_init_benchmarks branch April 11, 2021 08:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants