1. Test Modules
  2. Network Diagram
  3. Performance
  4. Results

Target Description: The type Std dev meta layer.

Report Description: The type Basic.

Subreport: Logs for com.simiacryptus.ref.lang.ReferenceCountingBase

Test Modules

Network Diagram

This is a network apply the following layout:

LayerTests.java:307 executed in 10.01 seconds (0.000 gc):

    return Graphviz.fromGraph((Graph) TestUtil.toGraph(((DAGNetwork) layer).addRef())).height(400).width(600)
        .render(Format.PNG).toImage();
java.lang.reflect.InvocationTargetException
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.simiacryptus.util.Util.throwException(Util.java:502)
at com.simiacryptus.notebook.MarkdownNotebookOutput.lambda$eval$dc58be99$1(MarkdownNotebookOutput.java:659)
at com.simiacryptus.util.test.SysOutInterceptor.withOutput(SysOutInterceptor.java:102)
at com.simiacryptus.notebook.MarkdownNotebookOutput.eval(MarkdownNotebookOutput.java:649)
at com.simiacryptus.notebook.NotebookOutput.eval(NotebookOutput.java:125)
at com.simiacryptus.mindseye.test.unit.LayerTests.renderGraph(LayerTests.java:307)
at com.simiacryptus.mindseye.test.unit.LayerTests.run(LayerTests.java:595)
at com.simiacryptus.mindseye.test.LayerTestBase.perfTest(LayerTestBase.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutInvocation.proceed(TimeoutInvocation.java:46)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.util.ArrayList.forEach(Unknown Source)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:141)
at org.junit.platform.runner.JUnitPlatform.run(JUnitPlatform.java:139)
at com.simiacryptus.util.test.MacroTestRunner.runTest(MacroTestRunner.java:94)
at com.simiacryptus.util.test.MacroTestRunner.lambda$null$8bb7732f$1(MacroTestRunner.java:177)
at com.simiacryptus.aws.TendrilControl.lambda$null$0(TendrilControl.java:86)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.simiacryptus.ref.lang.RefUtil$RefWrapperHandler.invoke(RefUtil.java:238)
at com.sun.proxy.$Proxy45.get(Unknown Source)
at com.simiacryptus.notebook.MarkdownNotebookOutput.lambda$eval$dc58be99$1(MarkdownNotebookOutput.java:657)
... 71 more
Caused by: guru.nidi.graphviz.engine.GraphvizException: Engine took too long to respond, try setting a higher timout
at guru.nidi.graphviz.engine.GraphvizServerEngine.execute(GraphvizServerEngine.java:49)
at guru.nidi.graphviz.engine.Graphviz.execute(Graphviz.java:246)
at guru.nidi.graphviz.engine.Renderer.execute(Renderer.java:134)
at guru.nidi.graphviz.engine.Renderer.toImage(Renderer.java:105)
at com.simiacryptus.mindseye.test.unit.LayerTests.lambda$renderGraph$12c65ef7$1(LayerTests.java:309)
... 78 more


Using Seed 5256637723736905728

Performance

Now we execute larger-scale runs to benchmark performance:

PerformanceTester.java:175 executed in 0.12 seconds (0.000 gc):

    test(component == null ? null : component.addRef(), RefUtil.addRef(inputPrototype));
Logging
5 batch length, 5 trials
Input Dimensions:
[100]
Performance:
BACKPROP_AGG_SIZE = 3
THREADS = 64
SINGLE_THREADED = false
Initialized CoreSettings = {
"backpropAggregationSize" : 3,
"jvmThreads" : 64,
"singleThreaded" : false
}
Evaluation performance: 0.022641s +- 0.023424s [0.008622s - 0.068925s]
Learning performance: 0.000853s +- 0.001336s [0.000111s - 0.003524s]

Per-key Performance Metrics:

TestUtil.java:216 executed in 0.00 seconds (0.000 gc):

    @Nonnull final RefMap<CharSequence, MonitoringWrapperLayer> metrics = new RefHashMap<>();
    network.visitNodes(RefUtil.wrapInterface(node -> {
      Layer nodeLayer = node.getLayer();
      if (nodeLayer instanceof MonitoringWrapperLayer) {
        @Nullable final MonitoringWrapperLayer layer = (MonitoringWrapperLayer) nodeLayer.addRef();
        Layer inner = layer.getInner();
        assert inner != null;
        String str = inner.toString();
        str += " class=" + inner.getClass().getName();
        inner.freeRef();
        RefUtil.freeRef(metrics.put(str, layer.addRef()));
        layer.freeRef();
      }
      assert nodeLayer != null;
      nodeLayer.freeRef();
      node.freeRef();
    }, metrics.addRef()));
    RefSet<Map.Entry<CharSequence, MonitoringWrapperLayer>> temp_13_0018 = metrics.entrySet();
    TestUtil.logger.info("Performance: \n\t" + RefUtil.orElse(temp_13_0018.stream()
        .sorted(RefComparator.comparingDouble(new ToDoubleFunction<Map.Entry<CharSequence, MonitoringWrapperLayer>>() {
          @Override
          @RefIgnore
          public double applyAsDouble(Map.Entry<CharSequence, MonitoringWrapperLayer> x) {
            MonitoringWrapperLayer temp_13_0019 = x.getValue();
            double temp_13_0002 = -temp_13_0019.getForwardPerformance().getMean();
            temp_13_0019.freeRef();
            RefUtil.freeRef(x);
            return temp_13_0002;
          }
        })).map(e -> {
          MonitoringWrapperLayer temp_13_0020 = e.getValue();
          @Nonnull final PercentileStatistics performanceF = temp_13_0020.getForwardPerformance();
          temp_13_0020.freeRef();
          MonitoringWrapperLayer temp_13_0021 = e.getValue();
          @Nonnull final PercentileStatistics performanceB = temp_13_0021.getBackwardPerformance();
          temp_13_0021.freeRef();
          String temp_13_0003 = RefString.format("%.6fs +- %.6fs (%d) <- %s", performanceF.getMean(),
              performanceF.getStdDev(), performanceF.getCount(), e.getKey())
              + (performanceB.getCount() == 0 ? ""
              : RefString.format("%n\tBack: %.6fs +- %.6fs (%s)", performanceB.getMean(), performanceB.getStdDev(),
              performanceB.getCount()));
          RefUtil.freeRef(e);
          return temp_13_0003;
        }).reduce((a, b) -> a + "\n\t" + b), "-"));
    temp_13_0018.freeRef();
    metrics.freeRef();
Logging
Performance: 
0.006794s +- 0.009452s (5) <- SqActivationLayer class=com.simiacryptus.mindseye.layers.java.SqActivationLayer
0.003857s +- 0.007356s (5) <- == -1.0e+00 x class=com.simiacryptus.mindseye.layers.java.LinearActivationLayer
0.003587s +- 0.000664s (5) <- AvgMetaLayer class=com.simiacryptus.mindseye.layers.java.AvgMetaLayer
0.001137s +- 0.001289s (5) <- SumInputsLayer class=com.simiacryptus.mindseye.layers.java.SumInputsLayer
0.000280s +- 0.000281s (5) <- NthPowerActivationLayer class=com.simiacryptus.mindseye.layers.java.NthPowerActivationLayer
0.000128s +- 0.000065s (5) <- AvgReducerLayer class=com.simiacryptus.mindseye.layers.java.AvgReducerLayer

LayerTests.java:605 executed in 0.00 seconds (0.000 gc):

    throwException(exceptions.addRef());

Results

classresult
com.simiacryptus.mindseye.test.unit.PerformanceTesterOK
  {
    "result": "OK",
    "performance": {
      "execution_time": "10.347",
      "gc_time": "0.167"
    },
    "created_on": 1587005048977,
    "file_name": "perfTest",
    "report": {
      "simpleName": "Basic",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.StdDevMetaLayerTest.Basic",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/c9a1867488dc7e77a975f095285b5882c0486db6/src/test/java/com/simiacryptus/mindseye/layers/java/StdDevMetaLayerTest.java",
      "javaDoc": "The type Basic."
    },
    "archive": "s3://code.simiacrypt.us/tests/com/simiacryptus/mindseye/layers/java/StdDevMetaLayer/Basic/perfTest/202004164408",
    "id": "80d01b8f-0af3-4c08-b9e4-7d0d9b486723",
    "report_type": "Components",
    "display_name": "Performance",
    "target": {
      "simpleName": "StdDevMetaLayer",
      "canonicalName": "com.simiacryptus.mindseye.layers.java.StdDevMetaLayer",
      "link": "https://github.com/SimiaCryptus/mindseye-java/tree/c9a1867488dc7e77a975f095285b5882c0486db6/src/main/java/com/simiacryptus/mindseye/layers/java/StdDevMetaLayer.java",
      "javaDoc": "The type Std dev meta layer."
    }
  }