|
| 1 | +--- |
| 2 | +layout: mainpost |
| 3 | +projectname: Renaissance Suite |
| 4 | +title: "Renaissance 0.12 Released" |
| 5 | +author: Lubomír Bulej |
| 6 | +--- |
| 7 | + |
| 8 | +We are pleased to announce a new release of the Renaissance benchmark |
| 9 | +suite. |
| 10 | + |
| 11 | +Apart from a number of internal cleanups, most changes in this release |
| 12 | +focused on improving compatibility with modern platforms. Most notably, |
| 13 | +we have moved away from Scala 2.11, Scala 2.12, and Spark 2 towards |
| 14 | +Scala 2.12, Scala 2.13 and Spark 3. Some benchmarks were unaffected, |
| 15 | +some needed just dependency updates, and some needed a bit more work. |
| 16 | + |
| 17 | +The workloads, as implemented by the benchmarks, are largely unchanged, |
| 18 | +but the code being executed as a result of the benchmark workload may |
| 19 | +differ substantially from previous version of Renaissance, mainly due to |
| 20 | +substantial dependency updates in some of the benchmarks. See the |
| 21 | +sections below for more details. |
| 22 | + |
| 23 | +On the platform compatibility front, the suite supports JDK8 and JDK11 |
| 24 | +on Linux, MacOS X, and Windows. While most benchmarks also run on more |
| 25 | +recent JDK versions, some of them have dependencies that limit their |
| 26 | +compatibility to a particular range of JDK versions. |
| 27 | + |
| 28 | + |
| 29 | +We welcome any comments and contributions. |
| 30 | + |
| 31 | +Happy benchmarking! |
| 32 | + |
| 33 | + |
| 34 | +### Harness changes |
| 35 | + |
| 36 | +The harness now automatically excludes benchmarks that are known to be |
| 37 | +incompatible with the JVM on which it executes. This can be disabled |
| 38 | +using the `--no-jvm-check` option on the command line. |
| 39 | + |
| 40 | +The harness now allows using a specific base directory for scratch |
| 41 | +files. The current directory is still the default, but it can be changed |
| 42 | +using the `--scratch-base` option on the command line. For debugging |
| 43 | +purposes, the `--keep-scratch` option disables deleting the scratch |
| 44 | +directories when the harness terminates. |
| 45 | + |
| 46 | +Finally, to make experimentation with benchmarks a bit easier, the |
| 47 | +harness allows overriding benchmark parameters using the `--override` |
| 48 | +command line option. |
| 49 | + |
| 50 | + |
| 51 | +### Spark benchmark changes |
| 52 | + |
| 53 | +The Spark benchmarks moved from Spark 2.0.0 on Scala 2.11.8 to Spark |
| 54 | +3.1.2 on Scala 2.12.14, which is a major change in the underlying |
| 55 | +libraries. In addition to various cleanups and compatibility fixes for |
| 56 | +Windows, there have been several changes that may influence the overall |
| 57 | +performance. |
| 58 | + |
| 59 | +- The number of threads used by the Spark local executor is now |
| 60 | + [limited](https://github.com/renaissance-benchmarks/renaissance/pull/284) |
| 61 | + to reflect the parallelism of a particular workload, which prevents |
| 62 | + scalability issues on huge machines with tens of cores. The limit is |
| 63 | + configured using the `spark_thread_limit` parameter. - All workloads |
| 64 | + use the default partitioning of input data and limit the storage level |
| 65 | + of input data to memory only. |
| 66 | +- `als` and `movie-lens` also limit the storage level of intermediate |
| 67 | + data sets to memory only to avoid benchmarking storage IO. |
| 68 | +- `log-regression` now avoids repeated conversion from an RDD to |
| 69 | + DataFrame. |
| 70 | +- `naive-bayes` now uses ML classes from the `org.apache.spark.ml` |
| 71 | + package because classes from the `org.apache.spark.mllib` package only |
| 72 | + served as wrappers, introducing unnecessary conversion from RDD to |
| 73 | + DataFrame. |
| 74 | + |
| 75 | + |
| 76 | +### Benchmarks using Scala 2.13.6 |
| 77 | + |
| 78 | +The following lists Java bencharks with a simple Scala wrapper or Scala |
| 79 | +benchmarks that have been updated to use Scala 2.13.6, along with |
| 80 | +notable changes in some of them: |
| 81 | + |
| 82 | +- `akka-uct` (previously Scala 2.11.8) |
| 83 | + - Updated `akka-actor` dependency (2.3.11 -> 2.6.12) |
| 84 | + - Very minor benchmark update for the 2.6.x API. |
| 85 | +- `db-shootout` (Java) |
| 86 | + - Maximum supported JVM version set to 11. |
| 87 | +- `dotty` (previously Scala 2.12.8) |
| 88 | + - Updated Dotty compiler (0.12.0 -> 3.0.0) |
| 89 | + - Compiles `scalap` sources instead of "type-system puzzles". |
| 90 | + - Adds hash-based validation of generated Tasty files. |
| 91 | +- `fj-kmeans`, `future-genetic` (Java) |
| 92 | +- `mnemonics`, `par-mnemonics`, `scrabble` (Java) |
| 93 | +- `rx-scrabble` (Java) |
| 94 | +- `scala-kmeans` (previously Scala 2.12.8) |
| 95 | +- `scala-doku` (previously Scala 2.11.7) |
| 96 | + - Bundled `cafesat` dependency updated (0.01 -> (0.01-28-gd0edeaa)[https://github.com/renaissance-benchmarks/dependency-cafesat/tree/renaissance/export]) and cleaned up for Scala 2.13 |
| 97 | + - Bundled `scala-smtlib` dependency updated (0.1 -> (0.2.1-52-ga71d6b0)[https://github.com/renaissance-benchmarks/dependency-scala-smtlib/tree/renaissance/export]) and cleaned up for Scala 2.13 |
| 98 | + |
| 99 | + |
| 100 | +### Benchmarks using Scala 2.12.14 |
| 101 | + |
| 102 | +The following lists benchmarks that use Scala 2.12.14, along with |
| 103 | +notable changes in some them: |
| 104 | + |
| 105 | +- `finagle-chirper`, `finagle-http` (previously Scala 2.11.8) |
| 106 | +- `neo4j-analytics` (previously Scala 2.12.8) |
| 107 | + - Benchmark ported to Neo4J 4.x API |
| 108 | + - Updated `org.neo4j.neo4j` dependency (3.5.12 -> 4.2.4) |
| 109 | + - Updated `net.liftweb.lift-json` dependency (3.2.0 -> 3.4.3) |
| 110 | + - Requires JVM versions between 11 and 15, inclusive (Neo4J requirements). |
| 111 | +- `philosophers`, `scala-stm-bench7` (previously Scala 2.12.3) |
| 112 | +- `reactors` (previously Scala 2.11.8) |
| 113 | + - `io.reactors.reactors-core` updated (0.7 -> (0.9-e605e145-60-g9838414)[https://github.com/renaissance-benchmarks/dependency-reactors/tree/renaissance/export]) and cleaned up for Scala 2.12 |
| 114 | +- Spark workloads (previously Scala 2.11.8) |
| 115 | + - See **Spark benchmark changes** above. |
0 commit comments