2021-06-15 09:18:40 +03:00
|
|
|
@file:Suppress("UNUSED_VARIABLE")
|
|
|
|
|
2022-08-04 09:54:59 +03:00
|
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
|
2021-06-15 09:18:40 +03:00
|
|
|
import space.kscience.kmath.benchmarks.addBenchmarkProperties
|
|
|
|
|
2021-04-16 22:43:10 +03:00
|
|
|
plugins {
|
|
|
|
kotlin("multiplatform")
|
2022-11-23 13:25:31 +03:00
|
|
|
alias(npmlibs.plugins.kotlin.plugin.allopen)
|
2021-04-16 22:43:10 +03:00
|
|
|
id("org.jetbrains.kotlinx.benchmark")
|
|
|
|
}
|
|
|
|
|
|
|
|
allOpen.annotation("org.openjdk.jmh.annotations.State")
|
|
|
|
sourceSets.register("benchmarks")
|
|
|
|
|
|
|
|
repositories {
|
|
|
|
mavenCentral()
|
|
|
|
}
|
|
|
|
|
2022-08-04 09:54:59 +03:00
|
|
|
val multikVersion: String by rootProject.extra
|
|
|
|
|
2021-04-16 22:43:10 +03:00
|
|
|
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-08-04 09:54:59 +03:00
|
|
|
implementation(project(":kmath-multik"))
|
|
|
|
implementation("org.jetbrains.kotlinx:multik-default:$multikVersion")
|
|
|
|
implementation(npmlibs.kotlinx.benchmark.runtime)
|
2021-04-16 22:43:10 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
val jvmMain by getting {
|
|
|
|
dependencies {
|
2022-11-23 13:25:31 +03:00
|
|
|
implementation("org.openjdk.jmh:jmh-core:1.36")
|
2021-04-16 22:43:10 +03:00
|
|
|
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"))
|
2022-02-17 22:46:17 +03:00
|
|
|
implementation(projects.kmath.kmathTensorflow)
|
|
|
|
implementation("org.tensorflow:tensorflow-core-platform:0.4.0")
|
2021-07-03 13:11:47 +03:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2021-04-20 17:39:45 +03:00
|
|
|
fun kotlinx.benchmark.gradle.BenchmarkConfiguration.commonConfiguration() {
|
2021-11-15 18:42:00 +03:00
|
|
|
warmups = 2
|
2021-04-20 17:39:45 +03:00
|
|
|
iterations = 5
|
2021-11-15 18:42:00 +03:00
|
|
|
iterationTime = 2000
|
2021-04-20 17:39:45 +03:00
|
|
|
iterationTimeUnit = "ms"
|
|
|
|
}
|
|
|
|
|
2021-04-16 22:43:10 +03:00
|
|
|
configurations.register("buffer") {
|
2021-04-20 17:39:45 +03:00
|
|
|
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") {
|
2021-04-20 17:39:45 +03:00
|
|
|
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") {
|
2021-04-20 17:39:45 +03:00
|
|
|
commonConfiguration()
|
2021-04-16 22:43:10 +03:00
|
|
|
include("MatrixInverseBenchmark")
|
|
|
|
}
|
|
|
|
|
|
|
|
configurations.register("bigInt") {
|
2021-04-20 17:39:45 +03:00
|
|
|
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
|
|
|
}
|
|
|
|
|
|
|
|
kotlin.sourceSets.all {
|
|
|
|
with(languageSettings) {
|
2021-11-23 23:48:43 +03:00
|
|
|
optIn("kotlin.contracts.ExperimentalContracts")
|
|
|
|
optIn("kotlin.ExperimentalUnsignedTypes")
|
|
|
|
optIn("space.kscience.kmath.misc.UnstableKMathAPI")
|
2021-04-16 22:43:10 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-04 09:54:59 +03:00
|
|
|
tasks.withType<KotlinJvmCompile> {
|
2021-04-16 22:43:10 +03:00
|
|
|
kotlinOptions {
|
|
|
|
jvmTarget = "11"
|
2021-11-15 18:42:00 +03:00
|
|
|
freeCompilerArgs = freeCompilerArgs + "-Xjvm-default=all" + "-Xlambdas=indy"
|
2021-04-16 22:43:10 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
readme {
|
2022-07-29 15:58:02 +03:00
|
|
|
maturity = space.kscience.gradle.Maturity.EXPERIMENTAL
|
2021-04-16 22:43:10 +03:00
|
|
|
}
|
2021-06-15 09:18:40 +03:00
|
|
|
|
|
|
|
addBenchmarkProperties()
|