<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p
        {mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:Arial;
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=white lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Couldn’t you look at the client-server
model like this: The server is the ‘managing’ system that distributes data to
all clients. In that case, it’s not strange to call the rendering system ‘server’.
In fact, this system will also handle user interaction and so on, so it’s
definitely the system that knows most about the process. Perhaps ‘master-slave’
is better, like in OpenMPI.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Data transfer rates: It’s 768KB raw data
indeed, and it gets compressed (using LZO) to about 1/6<sup>th</sup> of that
(lossless, there are quite some black areas in the sample scene I’m using). That’s
still more than 100KB per frame, so at 20fps, it’s 2MB. The network should be
able to handle that, but ENet isn’t: Performance drops to 400ms per frame where
I achieved 200ms or less in the original application (no client-server
rendering), or 240 in my first (buggy) UDP/Winsock implementation with LZO
compression. For comparison: Last night I tried RakNet, which manages to get
270ms frames (also using LZO compression), which isn’t optimal, but pretty
close.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center tabindex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
enet-discuss-bounces@cubik.org [mailto:enet-discuss-bounces@cubik.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Tim Auld<br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, February 02, 2005
7:43 AM<br>
<b><span style='font-weight:bold'>To:</span></b> Discussion of the ENet library<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [ENet-discuss] Large
data packets over ENet</span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<div>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Firstly, if you follow convention, the process that
displays the rendered images is called the client, and the other processes are
the servers. This is because the client asks a server to do some work for
it, no matter the relative number of processes. Really, your client (the
renderer with work it needs done) should connect to multiple servers... not the
other way around.</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Question: do you really mean 650 kilobits per frame, or do
you mean kilobytes? 512*384*4 = 768KB. While it's not impossible to
compress that to 650Kb (about 83KB), using something like
JPEG, it would probably take quite a lot of time to do that
compression. There's a big difference. After doing some
calculation, I think you could only achieve about 20fps on a 100Mbps ethernet
with 650KB frames.</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Tim</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<blockquote style='border:none;border-left:solid black 1.5pt;padding:0in 0in 0in 4.0pt;
margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'>
<div>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>----- Original Message ----- <o:p></o:p></span></font></p>
</div>
<div style='font-color:black'>
<p class=MsoNormal style='background:#E4E4E4'><b><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial;font-weight:bold'>From:</span></font></b><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'> <a
href="mailto:jacco.bikker@overloaded.com" title="jacco.bikker@overloaded.com">Jacco
Bikker</a> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><b><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial;font-weight:bold'>To:</span></font></b><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'> <a
href="mailto:enet-discuss@cubik.org" title="enet-discuss@cubik.org">enet-discuss@cubik.org</a>
<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><b><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial;font-weight:bold'>Sent:</span></font></b><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'> Wednesday,
February 02, 2005 2:44 AM<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><b><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial;font-weight:bold'>Subject:</span></font></b><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'> [ENet-discuss]
Large data packets over ENet<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
</div>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hello,<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>I am writing a ray tracer that renders at interactive frame
rates on a single machine (2Ghz, 5fps). To advance to realtime performance, I
am trying to use several computers to render the image. I tried using
winsock/UDP, but I lack the knowledge to properly implement this, and the
result was disappointing for anything above 2 clients.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>So I tried Enet. Implementation was a breeze, but
performance is somewhat disappointing. Perhaps I am doing something wrong, so
let me explain what I do:<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'>-</span></font><font
size=1><span style='font-size:7.0pt'>
</span></font><font size=2 face=Arial><span style='font-size:10.0pt;font-family:
Arial'>The server accepts incoming clients.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'>-</span></font><font
size=1><span style='font-size:7.0pt'>
</span></font><font size=2 face=Arial><span style='font-size:10.0pt;font-family:
Arial'>Once at least one client is available, the server sends a ‘go’ packet to
each client. This packet contains information about which lines the client
should render.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'><font size=2
face=Arial><span style='font-size:10.0pt;font-family:Arial'>-</span></font><font
size=1><span style='font-size:7.0pt'>
</span></font><font size=2 face=Arial><span style='font-size:10.0pt;font-family:
Arial'>The client receives this information, starts rendering, and returns the
result to the server.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>The maximum amount of returned pixel data is 512x384 pixels
(32bit). This is about 650Kb per frame. Using Enet, performance is
significantly better (but still disappointing) if I compress the data. Does
Enet have problems with large data streams? Is there a way to optimize this?<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>- Jacco.<o:p></o:p></span></font></p>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center>
</span></font></div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>_______________________________________________<br>
ENet-discuss mailing list<br>
ENet-discuss@cubik.org<br>
http://lists.cubik.org/mailman/listinfo/enet-discuss<o:p></o:p></span></font></p>
</blockquote>
</div>
</body>
</html>