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

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

Test Modules

Network Diagram

This is a network apply the following layout:

LayerTests.java:203 executed in 0.09 seconds (0.000 gc):

    return Graphviz.fromGraph((Graph) TestUtil.toGraph(((DAGNetwork) layer).addRef())).height(400).width(600)
        .render(Format.PNG).toImage();
Logging
executing command [/bin/sh, -c, dot -Tsvg /tmp/GraphvizJava/DotEngine4159230679737077438/dotfile.dot -ooutfile.svg]

Returns

Result

Using Seed 2651800224761991168

Performance

Now we execute larger-scale runs to benchmark performance:

PerformanceTester.java:120 executed in 0.98 seconds (0.000 gc):

    test(component == null ? null : component.addRef(), RefUtil.addRef(inputPrototype));
Logging
2 batch length, 5 trials
Input Dimensions:
[600, 600, 6]
Performance:
Evaluation performance: 0.021613s +- 0.004402s [0.017842s - 0.030048s]
Learning performance: 0.174263s +- 0.048105s [0.142219s - 0.270029s]

Per-key Performance Metrics:

TestUtil.java:185 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.018170s +- 0.002406s (5) <- ImgTileSubnetLayer class=com.simiacryptus.mindseye.layers.cudnn.ImgTileSubnetLayer
Back: 0.050233s +- 0.003624s (5)
0.008887s +- 0.000067s (5) <- SimpleConvolutionLayer class=com.simiacryptus.mindseye.layers.cudnn.conv.SimpleConvolutionLayer
Back: 0.049205s +- 0.003413s (5)
0.005566s +- 0.000599s (5) <- ImgZeroPaddingLayer class=com.simiacryptus.mindseye.layers.cudnn.ImgZeroPaddingLayer
0.001640s +- 0.000898s (5) <- ImgConcatLayer class=com.simiacryptus.mindseye.layers.cudnn.ImgConcatLayer
Back: 0.002116s +- 0.000389s (5)

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

    throwException(exceptions.addRef());

Results

classresult
com.simiacryptus.mindseye.test.unit.PerformanceTesterOK
  {
    "result": "OK",
    "performance": {
      "execution_time": "1.434",
      "gc_time": "0.189"
    },
    "created_on": 1586746345530,
    "file_name": "perfTest",
    "report": {
      "simpleName": "BandReduceTest",
      "canonicalName": "com.simiacryptus.mindseye.layers.cudnn.conv.ConvolutionLayerTest.BandReduceTest",
      "link": "https://github.com/SimiaCryptus/mindseye-cudnn/tree/59d5b3318556370acb2d83ee6ec123ce0fc6974f/src/test/java/com/simiacryptus/mindseye/layers/cudnn/conv/ConvolutionLayerTest.java",
      "javaDoc": ""
    },
    "archive": "s3://code.simiacrypt.us/tests/com/simiacryptus/mindseye/layers/cudnn/conv/ConvolutionLayer/BandReduceTest/perfTest/202004135225",
    "id": "96deaf0c-5c76-4939-9df6-0d3f8c79793a",
    "report_type": "Components",
    "display_name": "Performance",
    "target": {
      "simpleName": "ConvolutionLayer",
      "canonicalName": "com.simiacryptus.mindseye.layers.cudnn.conv.ConvolutionLayer",
      "link": "https://github.com/SimiaCryptus/mindseye-cudnn/tree/59d5b3318556370acb2d83ee6ec123ce0fc6974f/src/main/java/com/simiacryptus/mindseye/layers/cudnn/conv/ConvolutionLayer.java",
      "javaDoc": ""
    }
  }