<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>DLPrimitives Blog :: Benchmarks</title>
	<link>http://blog.dlprimitives.org/</link>
	<description>Development Blog</description>
	<atom:link 
		href="http://blog.dlprimitives.org/rss/cat/1/" 
		rel="self" type="application/rss+xml" />
	

	
	<item>
		<title>Pytorch Training Benchrmarks</title>
		<link>http://blog.dlprimitives.org/post/6</link>
		<guid>http://blog.dlprimitives.org/post/6</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;p&gt;I managed to train some networks in pytorch with opencl/dlprimitives backend and the result is promising.&lt;/p&gt;

&lt;p&gt;Below the results for several nVidia GPUs and comparison to baseline tf2/keras. Unlike previous benchmarks I fixed missing time of Adam optimiser that apparently was significant (it isn&#39;t very efficient in pytorch)&lt;/p&gt;

&lt;p&gt;I also added times for AMD 6600xt, unfortunately there is no baseline I can use since AMD hadn&#39;t released ROCM for RDNA yet.&lt;/p&gt;

&lt;h2&gt;Absolute Performance&lt;/h2&gt;

&lt;p&gt;Batch size: 16 images 224x224, time in ms. Lower is better.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt; Framework     &lt;/th&gt;
&lt;th&gt; Vendor &lt;/th&gt;
&lt;th&gt; GPU       &lt;/th&gt;
&lt;th&gt; alexnet  &lt;/th&gt;
&lt;th&gt; resnet18 &lt;/th&gt;
&lt;th&gt; resnet50 &lt;/th&gt;
&lt;th&gt;  vgg16   &lt;/th&gt;
&lt;th&gt;  mobilenet &lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pytorch/opencl &lt;/td&gt;
&lt;td&gt; AMD    &lt;/td&gt;
&lt;td&gt; rx 6600xt &lt;/td&gt;
&lt;td&gt;  56.846  &lt;/td&gt;
&lt;td&gt; 109.850  &lt;/td&gt;
&lt;td&gt; 258.973  &lt;/td&gt;
&lt;td&gt;  365.305 &lt;/td&gt;
&lt;td&gt; 163.732    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dlprimitives   &lt;/td&gt;
&lt;td&gt; AMD    &lt;/td&gt;
&lt;td&gt; rx 6600xt &lt;/td&gt;
&lt;td&gt;  36.954  &lt;/td&gt;
&lt;td&gt;  65.241  &lt;/td&gt;
&lt;td&gt; 194.398  &lt;/td&gt;
&lt;td&gt;  308.763 &lt;/td&gt;
&lt;td&gt;  99.862    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytorch/cuda   &lt;/td&gt;
&lt;td&gt; Nvidia &lt;/td&gt;
&lt;td&gt; rtx 2060s &lt;/td&gt;
&lt;td&gt;  27.592  &lt;/td&gt;
&lt;td&gt;  38.624  &lt;/td&gt;
&lt;td&gt; 114.074  &lt;/td&gt;
&lt;td&gt;  179.580 &lt;/td&gt;
&lt;td&gt;  49.624    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytorch/opencl &lt;/td&gt;
&lt;td&gt; Nvidia &lt;/td&gt;
&lt;td&gt; rtx 2060s &lt;/td&gt;
&lt;td&gt;  50.108  &lt;/td&gt;
&lt;td&gt;  82.021  &lt;/td&gt;
&lt;td&gt; 223.651  &lt;/td&gt;
&lt;td&gt;  462.964 &lt;/td&gt;
&lt;td&gt; 129.145    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dlprimitives   &lt;/td&gt;
&lt;td&gt; Nvidia &lt;/td&gt;
&lt;td&gt; rtx 2060s &lt;/td&gt;
&lt;td&gt;  39.829  &lt;/td&gt;
&lt;td&gt;  67.960  &lt;/td&gt;
&lt;td&gt; 187.398  &lt;/td&gt;
&lt;td&gt;  439.053 &lt;/td&gt;
&lt;td&gt;  90.229    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tf2/cuda       &lt;/td&gt;
&lt;td&gt; Nvidia &lt;/td&gt;
&lt;td&gt; rtx 2060s &lt;/td&gt;
&lt;td&gt;  29.165  &lt;/td&gt;
&lt;td&gt;  55.523  &lt;/td&gt;
&lt;td&gt; 147.999  &lt;/td&gt;
&lt;td&gt;  156.714 &lt;/td&gt;
&lt;td&gt; 102.596    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytorch/cuda   &lt;/td&gt;
&lt;td&gt; Nvidia &lt;/td&gt;
&lt;td&gt; gtx 1080  &lt;/td&gt;
&lt;td&gt;  38.310  &lt;/td&gt;
&lt;td&gt;  44.382  &lt;/td&gt;
&lt;td&gt; 137.754  &lt;/td&gt;
&lt;td&gt;  232.824 &lt;/td&gt;
&lt;td&gt;  63.324    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytorch/opencl &lt;/td&gt;
&lt;td&gt; Nvidia &lt;/td&gt;
&lt;td&gt; gtx 1080  &lt;/td&gt;
&lt;td&gt;  54.828  &lt;/td&gt;
&lt;td&gt;  85.016  &lt;/td&gt;
&lt;td&gt; 301.898  &lt;/td&gt;
&lt;td&gt;  411.928 &lt;/td&gt;
&lt;td&gt; 173.885    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dlprimitives   &lt;/td&gt;
&lt;td&gt; Nvidia &lt;/td&gt;
&lt;td&gt; gtx 1080  &lt;/td&gt;
&lt;td&gt;  38.804  &lt;/td&gt;
&lt;td&gt;  71.147  &lt;/td&gt;
&lt;td&gt; 264.286  &lt;/td&gt;
&lt;td&gt;  374.168 &lt;/td&gt;
&lt;td&gt; 134.650    &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tf2/cuda       &lt;/td&gt;
&lt;td&gt; Nvidia &lt;/td&gt;
&lt;td&gt; gtx 1080  &lt;/td&gt;
&lt;td&gt;  35.592  &lt;/td&gt;
&lt;td&gt;  69.071  &lt;/td&gt;
&lt;td&gt; 189.994  &lt;/td&gt;
&lt;td&gt;  197.333 &lt;/td&gt;
&lt;td&gt; 128.526    &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;h2&gt;Relative Performance&lt;/h2&gt;

&lt;p&gt;Comparison of TF/Cuda with pytorch + opencl/dlprimitives and dlprimitives alone:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Baseline &lt;/th&gt;
&lt;th&gt; tested       &lt;/th&gt;
&lt;th&gt; GPU       &lt;/th&gt;
&lt;th&gt; alexnet  &lt;/th&gt;
&lt;th&gt; resnet18 &lt;/th&gt;
&lt;th&gt; resnet50 &lt;/th&gt;
&lt;th&gt;  vgg16   &lt;/th&gt;
&lt;th&gt;  mobilenet &lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;tf2/cuda &lt;/td&gt;
&lt;td&gt; dlprimitives &lt;/td&gt;
&lt;td&gt; gtx 1080  &lt;/td&gt;
&lt;td&gt;  92%     &lt;/td&gt;
&lt;td&gt;  97%     &lt;/td&gt;
&lt;td&gt; 72%      &lt;/td&gt;
&lt;td&gt;  53%     &lt;/td&gt;
&lt;td&gt; 95%        &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tf2/cuda &lt;/td&gt;
&lt;td&gt; pt/opencl    &lt;/td&gt;
&lt;td&gt; gtx 1080  &lt;/td&gt;
&lt;td&gt;  65%     &lt;/td&gt;
&lt;td&gt;  81%     &lt;/td&gt;
&lt;td&gt; 63%      &lt;/td&gt;
&lt;td&gt;  48%     &lt;/td&gt;
&lt;td&gt; 74%        &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tf2/cuda &lt;/td&gt;
&lt;td&gt; dlprimitives &lt;/td&gt;
&lt;td&gt; rtx 2060s &lt;/td&gt;
&lt;td&gt;  73%     &lt;/td&gt;
&lt;td&gt;  82%     &lt;/td&gt;
&lt;td&gt; 79%      &lt;/td&gt;
&lt;td&gt;  36%     &lt;/td&gt;
&lt;td&gt; 114%       &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tf2/cuda &lt;/td&gt;
&lt;td&gt; pt/opencl    &lt;/td&gt;
&lt;td&gt; rtx 2060s &lt;/td&gt;
&lt;td&gt;  58%     &lt;/td&gt;
&lt;td&gt;  68%     &lt;/td&gt;
&lt;td&gt; 66%      &lt;/td&gt;
&lt;td&gt;  34%     &lt;/td&gt;
&lt;td&gt; 79%        &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;Besides VGG, most of results are very assuring&lt;/p&gt;

&lt;h2&gt;Notes&lt;/h2&gt;

&lt;p&gt;Why do I compare to TF2/cuda as base line. Pytorch is faster framework. However since TF is good enough for most users I want to show that I get performance that is close enough.&lt;/p&gt;
		
		&lt;/div&gt;
		</description>
	</item>
	
	<item>
		<title>Comparing Green and Red Apples</title>
		<link>http://blog.dlprimitives.org/post/1</link>
		<guid>http://blog.dlprimitives.org/post/1</guid>
		<description>
		&lt;div style=&quot;direction:ltr&quot;&gt;
		&lt;h2&gt;TL;DR&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenCL based DLPrimitives is almost as fast as TF based on cuDNN in inference and close enough in training.&lt;/li&gt;
&lt;li&gt;Framework Matters - TF is much slower than pytorch.&lt;/li&gt;
&lt;li&gt;AMD 6600 XT is faster than NVidia 1080 and 2060S by a margin that is similar to difference in GFlops of these cards&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also dlprimitives isn&#39;t as fast as best cudnn based solutions - pytorch its performance makes it more that useful for platform independent deep learning.&lt;/p&gt;

&lt;h2&gt;How to Compare Different GPUs&lt;/h2&gt;

&lt;p&gt;Comparing deep learning software performance on NVidia and AMD GPU isn&#39;t as simple as you may think of.&lt;/p&gt;

&lt;p&gt;There are two many factors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;No GPUs have identical specs. Major parameters are GFlops and Memroy bandwidth as most DL algorithms are either compute limited (like dense, conv layers) or bandwidth limited - (like batch normalization or activation)&lt;/li&gt;
&lt;li&gt;Both companies provide libraries optimized for their gpus: MIOpen and cuDNN. While they highly optimized and provide similar functionality they aren&#39;t have similar performance.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Now the situation becomes even more complex when it comes to RDNA architecture. &lt;a href=&quot;https://github.com/RadeonOpenCompute/ROCm/issues/819&quot;&gt;AMD hasn&#39;t released support of their DL stack&lt;/a&gt; for these GPUs for more than two years.&lt;/p&gt;

&lt;p&gt;Even though I decided to try to check it using dlprimitives.&lt;/p&gt;

&lt;h2&gt;Base Line&lt;/h2&gt;

&lt;p&gt;Note we compare 3 different GPUs that have similar performance withing reasonable margins.&lt;/p&gt;

&lt;p&gt;AMD RX 6600 XT, NVidia GTX 1080, NVidia RTX 2060 Super.&lt;/p&gt;

&lt;p&gt;The basic flops performance measured using custom kernel.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;gpu        &lt;/th&gt;
&lt;th&gt;GFlops  &lt;/th&gt;
&lt;th&gt;GB/s&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;6600xt     &lt;/td&gt;
&lt;td&gt;9,937   &lt;/td&gt;
&lt;td&gt;216 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1080       &lt;/td&gt;
&lt;td&gt;8,970   &lt;/td&gt;
&lt;td&gt;242 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2060s      &lt;/td&gt;
&lt;td&gt;8,263   &lt;/td&gt;
&lt;td&gt;396 &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;Flops performance of modern GPUs can
be calculated as clock * cores * 2, however clock depends on specific model and thermal
performance so both manual measures used as base line and calculated theoretical expected
flops measured using median clock observed during benchmarks.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;gpu        &lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;Clock Mhz&lt;/th&gt;
&lt;th&gt;Exp GFlops&lt;/th&gt;
&lt;th&gt;Exp GB/s&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;6600xt     &lt;/td&gt;
&lt;td&gt;2048 &lt;/td&gt;
&lt;td&gt;2655     &lt;/td&gt;
&lt;td&gt;10,875    &lt;/td&gt;
&lt;td&gt;256     &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1080       &lt;/td&gt;
&lt;td&gt;2560 &lt;/td&gt;
&lt;td&gt;1809     &lt;/td&gt;
&lt;td&gt; 9,262    &lt;/td&gt;
&lt;td&gt;320     &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2060s      &lt;/td&gt;
&lt;td&gt;2176 &lt;/td&gt;
&lt;td&gt;1905     &lt;/td&gt;
&lt;td&gt; 8,290    &lt;/td&gt;
&lt;td&gt;448     &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;So GPUS performance varies, also 2060s has 17-24% less GFlops that 6600xt it has much higher memory throghtput that helps in bandwidth limited algorithms like batch normalization of depthwise separable convolutions for mobilenet. 1080 has 10-15% lower GFlops but 12% more bandwidth.&lt;/p&gt;

&lt;h2&gt;Testing Methodology&lt;/h2&gt;

&lt;p&gt;Three frameworks were tested using 64 images batch on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;pytorch/1.8 using cuda+cudnn&lt;/li&gt;
&lt;li&gt;keras/tensorflow 2.5 using cuda+cudn&lt;/li&gt;
&lt;li&gt;OpenCL based solution dlprimitives.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Since there is no ROCM version of TF or Pytorch that supports AMD&#39;s RDNA GPU only dlprimitives were tested expecting to get similar results to other GPUs in same class.&lt;/p&gt;

&lt;h2&gt;Training Times&lt;/h2&gt;

&lt;p&gt;Measured in ms per batch, lower is better.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework  &lt;/th&gt;
&lt;th&gt;gpu    &lt;/th&gt;
&lt;th&gt;alexnet&lt;/th&gt;
&lt;th&gt;resnet18 &lt;/th&gt;
&lt;th&gt;resnet50   &lt;/th&gt;
&lt;th&gt;vgg16  &lt;/th&gt;
&lt;th&gt;mobilenet&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;dlprim     &lt;/td&gt;
&lt;td&gt;6600xt &lt;/td&gt;
&lt;td&gt; 83.73 &lt;/td&gt;
&lt;td&gt;231.2    &lt;/td&gt;
&lt;td&gt;716.2      &lt;/td&gt;
&lt;td&gt;1157.2 &lt;/td&gt;
&lt;td&gt;414.35   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dlprim     &lt;/td&gt;
&lt;td&gt;1080   &lt;/td&gt;
&lt;td&gt; 93.03 &lt;/td&gt;
&lt;td&gt;262.1    &lt;/td&gt;
&lt;td&gt;926.6^     &lt;/td&gt;
&lt;td&gt;1348.9 &lt;/td&gt;
&lt;td&gt;614.02   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dlprim     &lt;/td&gt;
&lt;td&gt;2060s  &lt;/td&gt;
&lt;td&gt;116.41 &lt;/td&gt;
&lt;td&gt;252.3    &lt;/td&gt;
&lt;td&gt;705.2^     &lt;/td&gt;
&lt;td&gt;1681.3 &lt;/td&gt;
&lt;td&gt;355.21   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;keras/tf2  &lt;/td&gt;
&lt;td&gt;1080   &lt;/td&gt;
&lt;td&gt; 70.56 &lt;/td&gt;
&lt;td&gt;200.6    &lt;/td&gt;
&lt;td&gt;684.4^     &lt;/td&gt;
&lt;td&gt; 633.1 &lt;/td&gt;
&lt;td&gt;437.84   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;keras/tf2  &lt;/td&gt;
&lt;td&gt;2060s  &lt;/td&gt;
&lt;td&gt; 70.00 &lt;/td&gt;
&lt;td&gt;172.2    &lt;/td&gt;
&lt;td&gt;520.0^     &lt;/td&gt;
&lt;td&gt; 553.1 &lt;/td&gt;
&lt;td&gt;344.55   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytorch    &lt;/td&gt;
&lt;td&gt;1080   &lt;/td&gt;
&lt;td&gt; 62.37 &lt;/td&gt;
&lt;td&gt;151.4    &lt;/td&gt;
&lt;td&gt;518.0      &lt;/td&gt;
&lt;td&gt; 780.9 &lt;/td&gt;
&lt;td&gt;229.20   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytorch    &lt;/td&gt;
&lt;td&gt;2060s  &lt;/td&gt;
&lt;td&gt; 41.11 &lt;/td&gt;
&lt;td&gt;121.2    &lt;/td&gt;
&lt;td&gt;377.8      &lt;/td&gt;
&lt;td&gt; 621.1^&lt;/td&gt;
&lt;td&gt;143.23   &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;^) Using half batch x32 twice, due to GPU memory limits&lt;/p&gt;

&lt;p&gt;Observations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;DLPrimitives has 67% of Tensorflow performance on NVidia GPUs, Biggest difference was in VGG. Comparison without VGG gives 75% of TF performance&lt;/li&gt;
&lt;li&gt;TF has 77% of pytorch. Biggest difference in VGG. Without VGG the difference is increased to 67%.&lt;/li&gt;
&lt;li&gt;DLPrimitives runs faster by 24% on AMD RX 6600 XT in comparison to GTX 1080 also the raw GFlops power differs by 10-17% depending on measurement strategy&lt;/li&gt;
&lt;li&gt;DLPrimitives runs faster by 15% on AMD RX 6600 XT in comparison to RTX 2060S. It is noticeable that major drop happens on mobile-net that is highly dependent on memory bandwidth with its depth-wise separable convolutions.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;Inference Times&lt;/h2&gt;

&lt;p&gt;Measured in ms per batch, lower is better.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework  &lt;/th&gt;
&lt;th&gt;gpu    &lt;/th&gt;
&lt;th&gt;alexnet&lt;/th&gt;
&lt;th&gt;resnet18  &lt;/th&gt;
&lt;th&gt;resnet50   &lt;/th&gt;
&lt;th&gt;vgg16  &lt;/th&gt;
&lt;th&gt;mobilenet&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;dlprim     &lt;/td&gt;
&lt;td&gt;6600xt &lt;/td&gt;
&lt;td&gt;34.28  &lt;/td&gt;
&lt;td&gt;63.57     &lt;/td&gt;
&lt;td&gt;185.72     &lt;/td&gt;
&lt;td&gt;277.97 &lt;/td&gt;
&lt;td&gt;102.84   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dlprim     &lt;/td&gt;
&lt;td&gt;1080   &lt;/td&gt;
&lt;td&gt;28.03  &lt;/td&gt;
&lt;td&gt;63.57     &lt;/td&gt;
&lt;td&gt;274.27     &lt;/td&gt;
&lt;td&gt;309.28 &lt;/td&gt;
&lt;td&gt;131.74   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dlprim     &lt;/td&gt;
&lt;td&gt;2060s  &lt;/td&gt;
&lt;td&gt;47.52  &lt;/td&gt;
&lt;td&gt;81.09     &lt;/td&gt;
&lt;td&gt;210.97     &lt;/td&gt;
&lt;td&gt;428.34 &lt;/td&gt;
&lt;td&gt; 97.80   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;keras/tf2  &lt;/td&gt;
&lt;td&gt;1080   &lt;/td&gt;
&lt;td&gt;40.55  &lt;/td&gt;
&lt;td&gt;80.64     &lt;/td&gt;
&lt;td&gt;199.38     &lt;/td&gt;
&lt;td&gt;189.07 &lt;/td&gt;
&lt;td&gt;109.85   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;keras/tf2  &lt;/td&gt;
&lt;td&gt;2060s  &lt;/td&gt;
&lt;td&gt;47.95  &lt;/td&gt;
&lt;td&gt;75.73     &lt;/td&gt;
&lt;td&gt;165.31     &lt;/td&gt;
&lt;td&gt;174.27 &lt;/td&gt;
&lt;td&gt; 93.01   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytorch    &lt;/td&gt;
&lt;td&gt;1080   &lt;/td&gt;
&lt;td&gt;16.36  &lt;/td&gt;
&lt;td&gt;43.17     &lt;/td&gt;
&lt;td&gt;144.88     &lt;/td&gt;
&lt;td&gt;226.40 &lt;/td&gt;
&lt;td&gt; 60.13   &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytorch    &lt;/td&gt;
&lt;td&gt;2060s  &lt;/td&gt;
&lt;td&gt; 9.65  &lt;/td&gt;
&lt;td&gt;33.27     &lt;/td&gt;
&lt;td&gt;107.56     &lt;/td&gt;
&lt;td&gt;172.47 &lt;/td&gt;
&lt;td&gt; 35.55   &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;Observations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;DLPrimitives has 90% of Tensorflow performance on NVidia GPUs, Biggest difference was in VGG. Comparison without VGG gives 99% of TF performance&lt;/li&gt;
&lt;li&gt;TF has 61% of pytorch performance. Biggest difference in VGG. Without VGG the difference is increased to 49%.&lt;/li&gt;
&lt;li&gt;DLPrimitives runs faster by 14% on AMD RX 6600 XT in comparison to GTX 1080,
and 26% faster in comparison to RTX 2060S. It is somewhat difference in comparison to training.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;Summary and Conclusions&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;There is a huge difference between different DL frameworks. Pytorch is much faster that TensorFlow by large margins.&lt;/li&gt;
&lt;li&gt;DLPrimitives provide decent performance that is comparable to TF (loosing ~25% of performance in training and 10% in inference)&lt;/li&gt;
&lt;li&gt;It  seems that 6600XT gives decent performance for dlprimitives comparable to ones by nVidia 1080/2060s with performance improvement gap that is comparable to difference in GFlops gap.&lt;/li&gt;
&lt;/ol&gt;

		
		&lt;/div&gt;
		</description>
	</item>
	


</channel>
</rss>
