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

Make mapreduce(..., withprogress(...)) etc. work without transducers #72

Merged
merged 3 commits into from
Jun 23, 2020

Conversation

tkf
Copy link
Member

@tkf tkf commented Oct 31, 2019

It also makes sum(withprogress(...)) etc. work.

Originally a part of #66. Not sure if it is worth doing it (esp. disambiguation).

Commit Message

Make mapreduce(..., withprogress(...)) etc. work without transducers (#72)

@codecov-io
Copy link

codecov-io commented Oct 31, 2019

Codecov Report

Merging #72 into master will increase coverage by 0.28%.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #72      +/-   ##
==========================================
+ Coverage   90.03%   90.31%   +0.28%     
==========================================
  Files          24       24              
  Lines        1455     1456       +1     
==========================================
+ Hits         1310     1315       +5     
+ Misses        145      141       -4     
Impacted Files Coverage Δ
src/processes.jl 87.50% <100.00%> (+0.14%) ⬆️
src/progress.jl 89.79% <0.00%> (+3.93%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2c49b79...0f4bd2c. Read the comment docs.

@tkf tkf changed the title Make sum(withprogress(...)) work Make mapreduce(..., withprogress(...)) etc. work Oct 31, 2019
@tkf tkf changed the title Make mapreduce(..., withprogress(...)) etc. work Make mapreduce(..., withprogress(...)) etc. work without transducers Oct 31, 2019
@tkf tkf removed the no changelog label Nov 20, 2019
@tkf tkf removed the no changelog label Nov 21, 2019
@tkf
Copy link
Member Author

tkf commented Nov 21, 2019

(Hopefully no changelog is fixed by 57fc96e...)

@tkf
Copy link
Member Author

tkf commented Jun 23, 2020

Merging this in preparation to #67

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmarks:
    • Target: 23 Jun 2020 - 23:31
    • Baseline: 23 Jun 2020 - 23:35
  • Package commits:
    • Target: 971686
    • Baseline: 2c49b7
  • Julia commits:
    • Target: 44fa15
    • Baseline: 44fa15
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1
    • Baseline: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["filter_map_map!", "man"] 1.20 (5%) ❌ 1.00 (1%)
["gemm", "fusedmul", "blas", "8"] 0.91 (5%) ✅ 1.00 (1%)
["gemm", "fusedmul", "xf", "16"] 1.09 (5%) ❌ 1.00 (1%)
["gemm", "fusedmul", "xf", "2"] 0.93 (5%) ✅ 1.00 (1%)
["gemm", "fusedmul", "xf", "32"] 0.93 (5%) ✅ 1.00 (1%)
["gemm", "fusedmul", "xf", "8"] 0.84 (5%) ✅ 1.00 (1%)
["gemm", "mul", "linalg", "256"] 1.08 (5%) ❌ 1.00 (1%)
["gemm", "mul", "linalg", "8"] 0.78 (5%) ✅ 1.00 (1%)
["gemm", "mul", "man", "false", "8"] 0.92 (5%) ✅ 1.00 (1%)
["gemm", "mul", "man", "ivdep", "32"] 1.06 (5%) ❌ 1.00 (1%)
["gemm", "mul", "man", "ivdep", "8"] 1.09 (5%) ❌ 1.00 (1%)
["gemm", "mul", "man", "true", "256"] 0.93 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "false", "256"] 0.92 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "false", "32"] 0.91 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "false", "8"] 0.91 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "ivdep", "32"] 1.06 (5%) ❌ 1.00 (1%)
["gemm", "mul", "xf", "ivdep", "8"] 1.16 (5%) ❌ 1.00 (1%)
["gemm", "mul", "xf", "true", "256"] 0.91 (5%) ✅ 1.00 (1%)
["gemm", "mul", "xf", "true", "8"] 0.92 (5%) ✅ 1.00 (1%)
["groupby", "sum", "xf-with-init"] 1.16 (5%) ❌ 1.00 (1%)
["groupby", "sum", "xf-without-init"] 1.22 (5%) ❌ 1.00 (1%)
["missing_dot", "equiv"] 0.81 (5%) ✅ 1.00 (1%)
["overhead", "foldl"] 0.93 (5%) ✅ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Target

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz      13771 s          0 s       1204 s      45312 s          0 s
       #2  2095 MHz      44026 s          0 s       1717 s      15240 s          0 s
       
  Memory: 6.764884948730469 GB (3071.203125 MB free)
  Uptime: 624.0 sec
  Load Avg:  1.0087890625  1.0048828125  0.6708984375
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Baseline

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz      19696 s          0 s       1323 s      63378 s          0 s
       #2  2095 MHz      62264 s          0 s       1847 s      20974 s          0 s
       
  Memory: 6.764884948730469 GB (3045.65234375 MB free)
  Uptime: 866.0 sec
  Load Avg:  1.02490234375  1.01025390625  0.76220703125
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Target result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 23 Jun 2020 - 23:31
  • Package commit: 971686
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["cat", "base"] 1.680 μs (5%)
["cat", "xf"] 1.780 μs (5%) 80 bytes (1%) 3
["collect", "filter-missing"] 106.401 μs (5%) 345.36 KiB (1%) 10018
["collect", "identity-float"] 84.001 μs (5%) 569.20 KiB (1%) 10018
["collect", "identity-union"] 301.603 μs (5%) 705.39 KiB (1%) 16682
["dot", "blas"] 1.230 μs (5%)
["dot", "man"] 1.180 μs (5%)
["dot", "rf"] 2.078 μs (5%)
["dot", "xf"] 2.089 μs (5%)
["filter_map_map!", "man"] 72.903 μs (5%)
["filter_map_map!", "xf"] 681.625 μs (5%) 304 bytes (1%) 17
["filter_map_reduce", "man"] 222.916 μs (5%)
["filter_map_reduce", "xf"] 222.916 μs (5%)
["findall", "base"] 813.709 μs (5%) 2.00 MiB (1%) 21
["findall", "xf-array"] 785.108 μs (5%) 3.04 MiB (1%) 99566
["findall", "xf-iter"] 3.348 ms (5%) 9.63 MiB (1%) 299924
["gemm", "fusedmul", "blas", "16"] 4.490 ms (5%)
["gemm", "fusedmul", "blas", "2"] 3.348 ms (5%)
["gemm", "fusedmul", "blas", "32"] 6.720 ms (5%)
["gemm", "fusedmul", "blas", "8"] 3.469 ms (5%)
["gemm", "fusedmul", "xf", "16"] 4.189 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "2"] 483.319 μs (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "32"] 8.623 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "8"] 1.872 ms (5%) 160 bytes (1%) 6
["gemm", "mul", "linalg", "256"] 874.655 μs (5%)
["gemm", "mul", "linalg", "32"] 2.911 μs (5%)
["gemm", "mul", "linalg", "8"] 235.445 ns (5%)
["gemm", "mul", "man", "false", "256"] 1.494 ms (5%)
["gemm", "mul", "man", "false", "32"] 4.472 μs (5%)
["gemm", "mul", "man", "false", "8"] 368.466 ns (5%)
["gemm", "mul", "man", "ivdep", "256"] 1.529 ms (5%)
["gemm", "mul", "man", "ivdep", "32"] 3.938 μs (5%)
["gemm", "mul", "man", "ivdep", "8"] 436.245 ns (5%)
["gemm", "mul", "man", "true", "256"] 1.507 ms (5%)
["gemm", "mul", "man", "true", "32"] 4.343 μs (5%)
["gemm", "mul", "man", "true", "8"] 386.649 ns (5%)
["gemm", "mul", "xf", "false", "256"] 1.498 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "32"] 4.372 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "8"] 365.885 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "256"] 1.549 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "32"] 3.800 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "8"] 348.617 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "256"] 1.488 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "32"] 4.543 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "8"] 367.169 ns (5%) 48 bytes (1%) 2
["groupby", "sum", "sac"] 245.808 μs (5%) 313.14 KiB (1%) 10007
["groupby", "sum", "xf-with-init"] 184.206 μs (5%) 157.44 KiB (1%) 10008
["groupby", "sum", "xf-without-init"] 191.707 μs (5%) 157.44 KiB (1%) 10008
["missing_argmax", "man"] 2.600 μs (5%) 32 bytes (1%) 1
["missing_argmax", "rf"] 2.400 μs (5%) 32 bytes (1%) 1
["missing_argmax", "xf"] 2.511 μs (5%) 32 bytes (1%) 1
["missing_dot", "equiv"] 1.370 μs (5%) 16 bytes (1%) 1
["missing_dot", "man"] 1.320 μs (5%) 16 bytes (1%) 1
["missing_dot", "naive"] 4.600 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf"] 1.320 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf_nota"] 1.400 μs (5%) 16 bytes (1%) 1
["missing_dot", "xf"] 199.013 μs (5%) 72.22 KiB (1%) 3745
["missing_dot", "xf_nota"] 200.814 μs (5%) 72.14 KiB (1%) 3743
["overhead", "foldl"] 4.200 ns (5%)
["overhead", "reduce_basecase"] 178.444 ns (5%) 416 bytes (1%) 7
["partition_by", "man"] 1.916 ms (5%) 352 bytes (1%) 4
["partition_by", "xf"] 2.937 ms (5%) 6.10 MiB (1%) 200007

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz      13771 s          0 s       1204 s      45312 s          0 s
       #2  2095 MHz      44026 s          0 s       1717 s      15240 s          0 s
       
  Memory: 6.764884948730469 GB (3071.203125 MB free)
  Uptime: 624.0 sec
  Load Avg:  1.0087890625  1.0048828125  0.6708984375
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Baseline result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 23 Jun 2020 - 23:35
  • Package commit: 2c49b7
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: OMP_NUM_THREADS => 1 JULIA_NUM_THREADS => 1

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["cat", "base"] 1.680 μs (5%)
["cat", "xf"] 1.740 μs (5%) 80 bytes (1%) 3
["collect", "filter-missing"] 106.402 μs (5%) 345.36 KiB (1%) 10018
["collect", "identity-float"] 80.302 μs (5%) 569.20 KiB (1%) 10018
["collect", "identity-union"] 299.507 μs (5%) 705.44 KiB (1%) 16685
["dot", "blas"] 1.210 μs (5%)
["dot", "man"] 1.150 μs (5%)
["dot", "rf"] 2.067 μs (5%)
["dot", "xf"] 2.100 μs (5%)
["filter_map_map!", "man"] 60.701 μs (5%)
["filter_map_map!", "xf"] 676.912 μs (5%) 304 bytes (1%) 17
["filter_map_reduce", "man"] 222.806 μs (5%)
["filter_map_reduce", "xf"] 222.705 μs (5%)
["findall", "base"] 809.820 μs (5%) 2.00 MiB (1%) 21
["findall", "xf-array"] 778.619 μs (5%) 3.03 MiB (1%) 99365
["findall", "xf-iter"] 3.249 ms (5%) 9.63 MiB (1%) 299907
["gemm", "fusedmul", "blas", "16"] 4.439 ms (5%)
["gemm", "fusedmul", "blas", "2"] 3.318 ms (5%)
["gemm", "fusedmul", "blas", "32"] 6.560 ms (5%)
["gemm", "fusedmul", "blas", "8"] 3.802 ms (5%)
["gemm", "fusedmul", "xf", "16"] 3.831 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "2"] 519.710 μs (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "32"] 9.289 ms (5%) 160 bytes (1%) 6
["gemm", "fusedmul", "xf", "8"] 2.231 ms (5%) 160 bytes (1%) 6
["gemm", "mul", "linalg", "256"] 811.418 μs (5%)
["gemm", "mul", "linalg", "32"] 3.000 μs (5%)
["gemm", "mul", "linalg", "8"] 300.000 ns (5%)
["gemm", "mul", "man", "false", "256"] 1.442 ms (5%)
["gemm", "mul", "man", "false", "32"] 4.500 μs (5%)
["gemm", "mul", "man", "false", "8"] 400.000 ns (5%)
["gemm", "mul", "man", "ivdep", "256"] 1.605 ms (5%)
["gemm", "mul", "man", "ivdep", "32"] 3.700 μs (5%)
["gemm", "mul", "man", "ivdep", "8"] 400.000 ns (5%)
["gemm", "mul", "man", "true", "256"] 1.615 ms (5%)
["gemm", "mul", "man", "true", "32"] 4.500 μs (5%)
["gemm", "mul", "man", "true", "8"] 400.000 ns (5%)
["gemm", "mul", "xf", "false", "256"] 1.626 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "32"] 4.800 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "false", "8"] 400.000 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "256"] 1.600 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "32"] 3.600 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "ivdep", "8"] 300.000 ns (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "256"] 1.632 ms (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "32"] 4.600 μs (5%) 48 bytes (1%) 2
["gemm", "mul", "xf", "true", "8"] 400.000 ns (5%) 48 bytes (1%) 2
["groupby", "sum", "sac"] 248.405 μs (5%) 313.14 KiB (1%) 10007
["groupby", "sum", "xf-with-init"] 158.903 μs (5%) 157.44 KiB (1%) 10008
["groupby", "sum", "xf-without-init"] 157.203 μs (5%) 157.44 KiB (1%) 10008
["missing_argmax", "man"] 2.600 μs (5%) 32 bytes (1%) 1
["missing_argmax", "rf"] 2.422 μs (5%) 32 bytes (1%) 1
["missing_argmax", "xf"] 2.411 μs (5%) 32 bytes (1%) 1
["missing_dot", "equiv"] 1.690 μs (5%) 16 bytes (1%) 1
["missing_dot", "man"] 1.320 μs (5%) 16 bytes (1%) 1
["missing_dot", "naive"] 4.586 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf"] 1.320 μs (5%) 16 bytes (1%) 1
["missing_dot", "rf_nota"] 1.410 μs (5%) 16 bytes (1%) 1
["missing_dot", "xf"] 195.905 μs (5%) 72.11 KiB (1%) 3743
["missing_dot", "xf_nota"] 196.005 μs (5%) 72.30 KiB (1%) 3747
["overhead", "foldl"] 4.500 ns (5%)
["overhead", "reduce_basecase"] 177.474 ns (5%) 416 bytes (1%) 7
["partition_by", "man"] 1.924 ms (5%) 352 bytes (1%) 4
["partition_by", "xf"] 2.942 ms (5%) 6.10 MiB (1%) 200007

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["cat"]
  • ["collect"]
  • ["dot"]
  • ["filter_map_map!"]
  • ["filter_map_reduce"]
  • ["findall"]
  • ["gemm", "fusedmul", "blas"]
  • ["gemm", "fusedmul", "xf"]
  • ["gemm", "mul", "linalg"]
  • ["gemm", "mul", "man", "false"]
  • ["gemm", "mul", "man", "ivdep"]
  • ["gemm", "mul", "man", "true"]
  • ["gemm", "mul", "xf", "false"]
  • ["gemm", "mul", "xf", "ivdep"]
  • ["gemm", "mul", "xf", "true"]
  • ["groupby", "sum"]
  • ["missing_argmax"]
  • ["missing_dot"]
  • ["overhead"]
  • ["partition_by"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz      19696 s          0 s       1323 s      63378 s          0 s
       #2  2095 MHz      62264 s          0 s       1847 s      20974 s          0 s
       
  Memory: 6.764884948730469 GB (3045.65234375 MB free)
  Uptime: 866.0 sec
  Load Avg:  1.02490234375  1.01025390625  0.76220703125
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() openblas64
Sys.CPU_THREADS 2

lscpu output:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               85
Model name:          Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
Stepping:            4
CPU MHz:             2095.146
BogoMIPS:            4190.29
Hypervisor vendor:   Microsoft
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            1024K
L3 cache:            36608K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xsaves
Cpu Property Value
Brand Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
Vendor :Intel
Architecture :Skylake
Model Family: 0x06, Model: 0x55, Stepping: 0x04, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 1024, 36608) kbytes
64 byte cache line size
Address Size 48 bits virtual, 44 bits physical
SIMD 512 bit = 64 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

@github-actions
Copy link
Contributor

Multi-thread benchmark result

Judge result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmarks:
    • Target: 23 Jun 2020 - 23:32
    • Baseline: 23 Jun 2020 - 23:37
  • Package commits:
    • Target: 971686
    • Baseline: 2c49b7
  • Julia commits:
    • Target: 44fa15
    • Baseline: 44fa15
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: JULIA_NUM_THREADS => 2
    • Baseline: JULIA_NUM_THREADS => 2

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["collect", "unordered", "basesize=1"] 0.85 (5%) ✅ 1.00 (1%)
["collect", "unordered", "basesize=1024"] 0.97 (5%) 0.93 (1%) ✅
["findfirst", "n=1000", "reduce", "basesize=128"] 1.08 (5%) ❌ 1.00 (1%)
["findfirst", "n=400", "reduce", "basesize=128"] 0.94 (5%) ✅ 1.00 (1%)
["findfirst", "n=400", "reduce", "basesize=256"] 0.91 (5%) ✅ 1.00 (1%)
["findfirst", "n=500", "reduce", "basesize=256"] 0.94 (5%) ✅ 1.00 (1%)
["findfirst", "n=500", "reduce", "basesize=512"] 0.87 (5%) ✅ 1.00 (1%)
["overhead", "stoppable=false"] 0.94 (5%) ✅ 1.00 (1%)
["overhead", "stoppable=true"] 0.94 (5%) ✅ 1.00 (1%)
["parallel_histogram", "assoc", "basesize=4096"] 1.00 (5%) 1.15 (1%) ❌
["parallel_histogram", "comm", "basesize=16384"] 1.08 (5%) ❌ 1.00 (1%)
["parallel_histogram", "comm", "basesize=4096"] 1.01 (5%) 0.98 (1%) ✅
["sum", "random", "reduce", "basesize=128"] 0.90 (5%) ✅ 1.00 (1%)
["words", "nthreads=1"] 1.12 (5%) ❌ 1.00 (1%)
["words", "nthreads=2"] 1.17 (5%) ❌ 1.00 (1%)
["words", "nthreads=4"] 1.14 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Target

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      46254 s          0 s       2502 s      20824 s          0 s
       #2  2294 MHz      52303 s          0 s       2693 s      14608 s          0 s
       
  Memory: 6.764884948730469 GB (3149.73828125 MB free)
  Uptime: 715.0 sec
  Load Avg:  1.77392578125  1.55224609375  0.92822265625
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)

Baseline

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      68581 s          0 s       3159 s      27353 s          0 s
       #2  2294 MHz      75073 s          0 s       3357 s      20650 s          0 s
       
  Memory: 6.764884948730469 GB (3124.33203125 MB free)
  Uptime: 1012.0 sec
  Load Avg:  1.74072265625  1.642578125  1.138671875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)

Target result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 23 Jun 2020 - 23:32
  • Package commit: 971686
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: JULIA_NUM_THREADS => 2

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["collect", "assoc", "basesize=1"] 302.500 ms (5%) 11.888 ms 87.55 MiB (1%) 1590713
["collect", "assoc", "basesize=1024"] 158.686 ms (5%) 1.84 MiB (1%) 1812
["collect", "assoc", "basesize=32"] 163.832 ms (5%) 5.64 MiB (1%) 54004
["collect", "seq"] 304.825 ms (5%) 1.50 MiB (1%) 32787
["collect", "unordered", "basesize=1"] 376.881 ms (5%) 29.16 MiB (1%) 403159
["collect", "unordered", "basesize=1024"] 233.103 ms (5%) 823.14 KiB (1%) 5728
["collect", "unordered", "basesize=32"] 191.171 ms (5%) 1.50 MiB (1%) 18484
["findfirst", "n=1000", "foldl"] 536.461 ms (5%)
["findfirst", "n=1000", "reduce", "basesize=128"] 285.340 ms (5%) 564.09 KiB (1%) 10233
["findfirst", "n=1000", "reduce", "basesize=256"] 272.760 ms (5%) 287.16 KiB (1%) 5220
["findfirst", "n=1000", "reduce", "basesize=512"] 288.151 ms (5%) 149.25 KiB (1%) 2721
["findfirst", "n=400", "foldl"] 394.090 ms (5%)
["findfirst", "n=400", "reduce", "basesize=128"] 204.091 ms (5%) 1.02 MiB (1%) 18971
["findfirst", "n=400", "reduce", "basesize=256"] 195.033 ms (5%) 526.17 KiB (1%) 9575
["findfirst", "n=400", "reduce", "basesize=512"] 204.476 ms (5%) 267.23 KiB (1%) 4880
["findfirst", "n=500", "foldl"] 62.207 ms (5%)
["findfirst", "n=500", "reduce", "basesize=128"] 33.351 ms (5%) 157.36 KiB (1%) 2852
["findfirst", "n=500", "reduce", "basesize=256"] 31.811 ms (5%) 84.45 KiB (1%) 1531
["findfirst", "n=500", "reduce", "basesize=512"] 33.646 ms (5%) 48.17 KiB (1%) 874
["overhead", "default"] 171.301 μs (5%) 146.16 KiB (1%) 2629
["overhead", "stoppable=false"] 164.000 μs (5%) 146.16 KiB (1%) 2629
["overhead", "stoppable=true"] 294.001 μs (5%) 146.39 KiB (1%) 2644
["parallel_histogram", "assoc", "basesize=16384"] 3.537 ms (5%) 732.02 KiB (1%) 101
["parallel_histogram", "assoc", "basesize=4096"] 4.095 ms (5%) 2.07 MiB (1%) 501
["parallel_histogram", "assoc", "basesize=8192"] 3.681 ms (5%) 1.43 MiB (1%) 240
["parallel_histogram", "comm", "basesize=16384"] 13.538 ms (5%) 1.22 MiB (1%) 160
["parallel_histogram", "comm", "basesize=4096"] 18.608 ms (5%) 1.04 MiB (1%) 2942
["parallel_histogram", "comm", "basesize=8192"] 17.481 ms (5%) 1.23 MiB (1%) 949
["parallel_histogram", "seq"] 6.493 ms (5%) 364.64 KiB (1%) 26
["sum", "random", "foldl"] 11.877 ms (5%)
["sum", "random", "reduce", "basesize=128"] 6.082 ms (5%) 313.33 KiB (1%) 6067
["sum", "random", "reduce", "basesize=256"] 6.322 ms (5%) 155.11 KiB (1%) 3012
["sum", "random", "reduce", "basesize=512"] 5.975 ms (5%) 76.28 KiB (1%) 1486
["sum", "uniform", "foldl"] 11.586 ms (5%)
["sum", "uniform", "reduce", "basesize=128"] 5.962 ms (5%) 313.36 KiB (1%) 6069
["sum", "uniform", "reduce", "basesize=256"] 5.951 ms (5%) 155.09 KiB (1%) 3011
["sum", "uniform", "reduce", "basesize=512"] 6.076 ms (5%) 76.27 KiB (1%) 1485
["sum", "valley", "foldl"] 11.792 ms (5%)
["sum", "valley", "reduce", "basesize=128"] 6.153 ms (5%) 313.22 KiB (1%) 6060
["sum", "valley", "reduce", "basesize=256"] 6.303 ms (5%) 155.08 KiB (1%) 3010
["sum", "valley", "reduce", "basesize=512"] 5.792 ms (5%) 76.28 KiB (1%) 1486
["words", "nthreads=1"] 39.268 ms (5%) 8.164 ms 64.77 MiB (1%) 2095971
["words", "nthreads=2"] 22.086 ms (5%) 65.48 MiB (1%) 2096125
["words", "nthreads=4"] 22.665 ms (5%) 66.12 MiB (1%) 2096415

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      46254 s          0 s       2502 s      20824 s          0 s
       #2  2294 MHz      52303 s          0 s       2693 s      14608 s          0 s
       
  Memory: 6.764884948730469 GB (3149.73828125 MB free)
  Uptime: 715.0 sec
  Load Avg:  1.77392578125  1.55224609375  0.92822265625
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)

Baseline result

Benchmark Report for /home/runner/work/Transducers.jl/Transducers.jl

Job Properties

  • Time of benchmark: 23 Jun 2020 - 23:37
  • Package commit: 2c49b7
  • Julia commit: 44fa15
  • Julia command flags: None
  • Environment variables: JULIA_NUM_THREADS => 2

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["collect", "assoc", "basesize=1"] 317.864 ms (5%) 14.580 ms 87.55 MiB (1%) 1590694
["collect", "assoc", "basesize=1024"] 158.368 ms (5%) 1.84 MiB (1%) 1812
["collect", "assoc", "basesize=32"] 164.609 ms (5%) 5.64 MiB (1%) 54011
["collect", "seq"] 303.110 ms (5%) 1.50 MiB (1%) 32787
["collect", "unordered", "basesize=1"] 445.353 ms (5%) 29.18 MiB (1%) 404351
["collect", "unordered", "basesize=1024"] 240.854 ms (5%) 887.55 KiB (1%) 9895
["collect", "unordered", "basesize=32"] 190.841 ms (5%) 1.48 MiB (1%) 17600
["findfirst", "n=1000", "foldl"] 554.343 ms (5%)
["findfirst", "n=1000", "reduce", "basesize=128"] 265.191 ms (5%) 564.02 KiB (1%) 10228
["findfirst", "n=1000", "reduce", "basesize=256"] 283.245 ms (5%) 287.27 KiB (1%) 5227
["findfirst", "n=1000", "reduce", "basesize=512"] 277.726 ms (5%) 149.25 KiB (1%) 2721
["findfirst", "n=400", "foldl"] 393.893 ms (5%)
["findfirst", "n=400", "reduce", "basesize=128"] 217.612 ms (5%) 1.02 MiB (1%) 18972
["findfirst", "n=400", "reduce", "basesize=256"] 213.406 ms (5%) 526.22 KiB (1%) 9578
["findfirst", "n=400", "reduce", "basesize=512"] 209.310 ms (5%) 267.16 KiB (1%) 4875
["findfirst", "n=500", "foldl"] 62.812 ms (5%)
["findfirst", "n=500", "reduce", "basesize=128"] 34.367 ms (5%) 157.36 KiB (1%) 2852
["findfirst", "n=500", "reduce", "basesize=256"] 33.732 ms (5%) 84.45 KiB (1%) 1531
["findfirst", "n=500", "reduce", "basesize=512"] 38.782 ms (5%) 48.19 KiB (1%) 875
["overhead", "default"] 167.702 μs (5%) 146.14 KiB (1%) 2628
["overhead", "stoppable=false"] 174.202 μs (5%) 146.16 KiB (1%) 2629
["overhead", "stoppable=true"] 311.503 μs (5%) 146.44 KiB (1%) 2647
["parallel_histogram", "assoc", "basesize=16384"] 3.381 ms (5%) 732.02 KiB (1%) 101
["parallel_histogram", "assoc", "basesize=4096"] 4.081 ms (5%) 1.80 MiB (1%) 495
["parallel_histogram", "assoc", "basesize=8192"] 3.809 ms (5%) 1.43 MiB (1%) 241
["parallel_histogram", "comm", "basesize=16384"] 12.550 ms (5%) 1.22 MiB (1%) 160
["parallel_histogram", "comm", "basesize=4096"] 18.426 ms (5%) 1.06 MiB (1%) 2961
["parallel_histogram", "comm", "basesize=8192"] 17.323 ms (5%) 1.22 MiB (1%) 182
["parallel_histogram", "seq"] 6.186 ms (5%) 364.64 KiB (1%) 26
["sum", "random", "foldl"] 11.843 ms (5%)
["sum", "random", "reduce", "basesize=128"] 6.761 ms (5%) 313.31 KiB (1%) 6066
["sum", "random", "reduce", "basesize=256"] 6.279 ms (5%) 155.09 KiB (1%) 3011
["sum", "random", "reduce", "basesize=512"] 6.053 ms (5%) 76.23 KiB (1%) 1483
["sum", "uniform", "foldl"] 11.364 ms (5%)
["sum", "uniform", "reduce", "basesize=128"] 6.067 ms (5%) 313.34 KiB (1%) 6068
["sum", "uniform", "reduce", "basesize=256"] 6.220 ms (5%) 155.09 KiB (1%) 3011
["sum", "uniform", "reduce", "basesize=512"] 5.791 ms (5%) 76.25 KiB (1%) 1484
["sum", "valley", "foldl"] 12.279 ms (5%)
["sum", "valley", "reduce", "basesize=128"] 6.183 ms (5%) 313.17 KiB (1%) 6057
["sum", "valley", "reduce", "basesize=256"] 6.307 ms (5%) 155.09 KiB (1%) 3011
["sum", "valley", "reduce", "basesize=512"] 6.024 ms (5%) 76.25 KiB (1%) 1484
["words", "nthreads=1"] 34.966 ms (5%) 6.722 ms 65.04 MiB (1%) 2104972
["words", "nthreads=2"] 18.933 ms (5%) 65.40 MiB (1%) 2105049
["words", "nthreads=4"] 19.878 ms (5%) 66.30 MiB (1%) 2105347

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["collect", "assoc"]
  • ["collect"]
  • ["collect", "unordered"]
  • ["findfirst", "n=1000"]
  • ["findfirst", "n=1000", "reduce"]
  • ["findfirst", "n=400"]
  • ["findfirst", "n=400", "reduce"]
  • ["findfirst", "n=500"]
  • ["findfirst", "n=500", "reduce"]
  • ["overhead"]
  • ["parallel_histogram", "assoc"]
  • ["parallel_histogram", "comm"]
  • ["parallel_histogram"]
  • ["sum", "random"]
  • ["sum", "random", "reduce"]
  • ["sum", "uniform"]
  • ["sum", "uniform", "reduce"]
  • ["sum", "valley"]
  • ["sum", "valley", "reduce"]
  • ["words"]

Julia versioninfo

Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 18.04.4 LTS
  uname: Linux 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      68581 s          0 s       3159 s      27353 s          0 s
       #2  2294 MHz      75073 s          0 s       3357 s      20650 s          0 s
       
  Memory: 6.764884948730469 GB (3124.33203125 MB free)
  Uptime: 1012.0 sec
  Load Avg:  1.74072265625  1.642578125  1.138671875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, broadwell)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() openblas64
Sys.CPU_THREADS 2

lscpu output:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               79
Model name:          Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
Stepping:            1
CPU MHz:             2294.685
BogoMIPS:            4589.37
Hypervisor vendor:   Microsoft
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            51200K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
Vendor :Intel
Architecture :Broadwell
Model Family: 0x06, Model: 0x4f, Stepping: 0x01, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 51200) kbytes
64 byte cache line size
Address Size 48 bits virtual, 44 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

@mergify mergify bot merged commit 9094cfc into master Jun 23, 2020
@mergify mergify bot deleted the progress branch June 23, 2020 23:43
mergify bot pushed a commit that referenced this pull request Jul 25, 2020
This PR adds `foldxl`, `foldxt` and `foldxd` as the new (experimental)
entry points for calling the extended folds defined in Transducers.jl.
The plan is to deprecate `reduce` and `dreduce` in favor of `foldxt`
and `foldxd`.

* Motivation for dedicated entry points

Often times I need to add `Map(identity)` just to dispatch to the
fold defined in Transducers.jl (e.g,
`foldl(TeeRF(min, max), Map(identity), xs)`).  Adding
Transducers.jl-specific entry points like `foldxd` makes
`Map(identity)` unnecessary.  Furthermore, decoupling entry point
from `Base.foldl` let us have a curried version
`itr |> xf |> foldxl(+)` which is quite useful with the new `|>`
pattern.

* Motivation for deprecating `reduce`

* As of #72, `sum(foldable)` calls `foldl(add_sum, foldable)` and
not `reduce(add_sum, foldable)`.  This could be a bit surprising
since `sum` usually calls `reduce`.

* The `Base` implementation of `reduce` is not threaded.  So, using
it for calling multi-threaded implementation can be confusing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants