kmath/benchmarks/build.gradle.kts

175 lines
4.9 KiB
Plaintext
Raw Normal View History

2021-06-15 09:18:40 +03:00
@file:Suppress("UNUSED_VARIABLE")
import space.kscience.kmath.benchmarks.addBenchmarkProperties
2021-04-16 22:43:10 +03:00
plugins {
kotlin("multiplatform")
kotlin("plugin.allopen")
id("org.jetbrains.kotlinx.benchmark")
}
allOpen.annotation("org.openjdk.jmh.annotations.State")
sourceSets.register("benchmarks")
repositories {
mavenCentral()
}
kotlin {
jvm()
2022-01-25 19:02:35 +03:00
js(IR) {
nodejs()
}
2021-04-16 22:43:10 +03:00
sourceSets {
2022-01-25 19:02:35 +03:00
all {
languageSettings {
progressiveMode = true
}
}
2021-04-16 22:43:10 +03:00
val commonMain by getting {
dependencies {
implementation(project(":kmath-ast"))
implementation(project(":kmath-core"))
implementation(project(":kmath-coroutines"))
implementation(project(":kmath-complex"))
implementation(project(":kmath-stat"))
implementation(project(":kmath-dimensions"))
implementation(project(":kmath-for-real"))
2021-10-06 12:25:32 +03:00
implementation(project(":kmath-tensors"))
2022-01-25 19:02:35 +03:00
implementation("org.jetbrains.kotlinx:kotlinx-benchmark-runtime:0.4.2")
2021-04-16 22:43:10 +03:00
}
}
val jvmMain by getting {
dependencies {
implementation(project(":kmath-commons"))
implementation(project(":kmath-ejml"))
implementation(project(":kmath-nd4j"))
implementation(project(":kmath-kotlingrad"))
implementation(project(":kmath-viktor"))
2022-01-25 19:02:35 +03:00
implementation(project(":kmath-jafama"))
implementation(project(":kmath-multik"))
2022-02-17 22:46:17 +03:00
implementation(projects.kmath.kmathTensorflow)
implementation("org.tensorflow:tensorflow-core-platform:0.4.0")
implementation("org.nd4j:nd4j-native:1.0.0-M1")
2021-04-16 22:43:10 +03:00
// uncomment if your system supports AVX2
// val os = System.getProperty("os.name")
//
// if (System.getProperty("os.arch") in arrayOf("x86_64", "amd64")) when {
// os.startsWith("Windows") -> implementation("org.nd4j:nd4j-native:1.0.0-beta7:windows-x86_64-avx2")
// os == "Linux" -> implementation("org.nd4j:nd4j-native:1.0.0-beta7:linux-x86_64-avx2")
// os == "Mac OS X" -> implementation("org.nd4j:nd4j-native:1.0.0-beta7:macosx-x86_64-avx2")
// } else
// implementation("org.nd4j:nd4j-native-platform:1.0.0-beta7")
}
}
}
}
// Configure benchmark
benchmark {
// Setup configurations
targets {
register("jvm")
2022-01-25 19:02:35 +03:00
register("js")
2021-04-16 22:43:10 +03:00
}
fun kotlinx.benchmark.gradle.BenchmarkConfiguration.commonConfiguration() {
warmups = 2
iterations = 5
iterationTime = 2000
iterationTimeUnit = "ms"
}
2022-07-13 18:34:26 +03:00
configurations.register("svd") {
commonConfiguration()
2022-07-13 18:52:58 +03:00
include("SVDBenchmark")
2022-07-13 18:34:26 +03:00
}
2021-04-16 22:43:10 +03:00
configurations.register("buffer") {
commonConfiguration()
2021-04-16 22:43:10 +03:00
include("BufferBenchmark")
}
2021-10-06 12:25:32 +03:00
configurations.register("nd") {
commonConfiguration()
include("NDFieldBenchmark")
}
2021-04-16 22:43:10 +03:00
configurations.register("dot") {
commonConfiguration()
2021-04-16 22:43:10 +03:00
include("DotBenchmark")
}
configurations.register("expressions") {
2022-01-25 19:02:35 +03:00
// Some extra precision
warmups = 2
iterations = 10
2022-01-26 16:33:44 +03:00
iterationTime = 10
iterationTimeUnit = "s"
outputTimeUnit = "s"
2021-04-16 22:43:10 +03:00
include("ExpressionsInterpretersBenchmark")
}
configurations.register("matrixInverse") {
commonConfiguration()
2021-04-16 22:43:10 +03:00
include("MatrixInverseBenchmark")
}
configurations.register("bigInt") {
commonConfiguration()
2021-04-16 22:43:10 +03:00
include("BigIntBenchmark")
}
2021-06-08 16:49:55 +03:00
configurations.register("jafamaDouble") {
commonConfiguration()
include("JafamaBenchmark")
}
2021-09-21 21:24:27 +03:00
2022-02-20 02:21:52 +03:00
configurations.register("tensorAlgebra") {
commonConfiguration()
include("TensorAlgebraBenchmark")
}
2021-09-21 21:24:27 +03:00
configurations.register("viktor") {
commonConfiguration()
include("ViktorBenchmark")
}
configurations.register("viktorLog") {
commonConfiguration()
include("ViktorLogBenchmark")
}
2021-04-16 22:43:10 +03:00
}
// Fix kotlinx-benchmarks bug
afterEvaluate {
val jvmBenchmarkJar by tasks.getting(org.gradle.jvm.tasks.Jar::class) {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
2021-04-16 22:43:10 +03:00
}
}
kotlin.sourceSets.all {
with(languageSettings) {
optIn("kotlin.contracts.ExperimentalContracts")
optIn("kotlin.ExperimentalUnsignedTypes")
optIn("space.kscience.kmath.misc.UnstableKMathAPI")
2021-04-16 22:43:10 +03:00
}
}
tasks.withType<org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile> {
2021-04-16 22:43:10 +03:00
kotlinOptions {
jvmTarget = "11"
freeCompilerArgs = freeCompilerArgs + "-Xjvm-default=all" + "-Xlambdas=indy"
2021-04-16 22:43:10 +03:00
}
}
readme {
maturity = ru.mipt.npm.gradle.Maturity.EXPERIMENTAL
2021-04-16 22:43:10 +03:00
}
2021-06-15 09:18:40 +03:00
addBenchmarkProperties()