Jacobi eigenvalue algorithm #461

Merged
ivandev0 merged 5 commits from kylchik/jacobi into dev 2022-02-20 10:18:06 +03:00
Showing only changes of commit a621dd7c5b - Show all commits

View File

@ -15,10 +15,8 @@ import space.kscience.kmath.linear.invoke
import space.kscience.kmath.linear.linearSpace import space.kscience.kmath.linear.linearSpace
import space.kscience.kmath.multik.multikAlgebra import space.kscience.kmath.multik.multikAlgebra
import space.kscience.kmath.operations.DoubleField import space.kscience.kmath.operations.DoubleField
import space.kscience.kmath.operations.invoke
import space.kscience.kmath.structures.Buffer import space.kscience.kmath.structures.Buffer
import space.kscience.kmath.tensorflow.produceWithTF import space.kscience.kmath.tensorflow.produceWithTF
import space.kscience.kmath.tensors.core.DoubleTensorAlgebra
import space.kscience.kmath.tensors.core.tensorAlgebra import space.kscience.kmath.tensors.core.tensorAlgebra
import kotlin.random.Random import kotlin.random.Random
@ -36,9 +34,6 @@ internal class DotBenchmark {
random.nextDouble() random.nextDouble()
} }
val tensor1 = DoubleTensorAlgebra.randomNormal(shape = intArrayOf(dim, dim), 12224)
val tensor2 = DoubleTensorAlgebra.randomNormal(shape = intArrayOf(dim, dim), 12225)
val cmMatrix1 = CMLinearSpace { matrix1.toCM() } val cmMatrix1 = CMLinearSpace { matrix1.toCM() }
val cmMatrix2 = CMLinearSpace { matrix2.toCM() } val cmMatrix2 = CMLinearSpace { matrix2.toCM() }
@ -48,10 +43,10 @@ internal class DotBenchmark {
@Benchmark @Benchmark
fun tfDot(blackhole: Blackhole){ fun tfDot(blackhole: Blackhole) {
blackhole.consume( blackhole.consume(
DoubleField.produceWithTF { DoubleField.produceWithTF {
tensor1 dot tensor2 matrix1 dot matrix1
} }
) )
} }
@ -95,9 +90,4 @@ internal class DotBenchmark {
fun doubleDot(blackhole: Blackhole) = with(DoubleField.linearSpace) { fun doubleDot(blackhole: Blackhole) = with(DoubleField.linearSpace) {
blackhole.consume(matrix1 dot matrix2) blackhole.consume(matrix1 dot matrix2)
} }
@Benchmark
fun doubleTensorDot(blackhole: Blackhole) = DoubleTensorAlgebra.invoke {
blackhole.consume(tensor1 dot tensor2)
}
} }