<HTML>
<HEAD>
<TITLE>Re: [Paraview] PV &amp; multiple video cards</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>I have two comments. &nbsp;First, I think Burlen&#8217;s original idea should be implemented before and potentially added independently of the Windows solution. &nbsp;Setting the display screen based on process id is pretty trivial. &nbsp;In my experience, solutions involving OpenGL extensions tend to be harder to implement than you think and fraught with difficulties to support.<BR>
<BR>
Second, I&#8217;m disheartened by how labyrinthine it is to control which GPU an OpenGL context uses. &nbsp;I&#8217;ll refrain from starting a Windows rant (and for what it&#8217;s worth, I understand Mac is just as bad). &nbsp;Instead, I&#8217;d like to point out that Kitware has been working with Microsoft&#8217;s HPC development to support visualization, and perhaps they could encourage Microsoft to provide a better solution. &nbsp;After all, HPC visualization is not really supported if you cannot make use of every GPU available.<BR>
<BR>
-Ken<BR>
<BR>
<BR>
On 6/22/10 6:49 PM, &quot;luc Renambot&quot; &lt;<a href="renambot@gmail.com">renambot@gmail.com</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>That would be cleanest solution, but Nvidia provides it only for Windows and only for Quadro cards.<BR>
<BR>
Luc<BR>
<BR>
On Jun 22, 2010, at 2:37 PM, Berk Geveci wrote:<BR>
<BR>
&gt; By the way, if we wanted to go all the way on this, we would also<BR>
&gt; support Windows. I was told that there is an nvidia-specific function<BR>
&gt; that controls the GPU a context uses. I believe that it is this:<BR>
&gt;<BR>
&gt; <a href="http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt">http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt</a><BR>
&gt;<BR>
&gt; I have no idea if ATI supports this.<BR>
&gt;<BR>
&gt; -berk<BR>
&gt;<BR>
&gt;<BR>
&gt; On Tue, Jun 22, 2010 at 4:16 PM, Moreland, Kenneth &lt;<a href="kmorel@sandia.gov">kmorel@sandia.gov</a>&gt; wrote:<BR>
&gt;&gt; I think this is a good suggestion. &nbsp;I don&#8217;t think the fact that it relies on<BR>
&gt;&gt; processes being assigned in a particular order is a big deal. &nbsp;The default<BR>
&gt;&gt; allocation is usually to place contiguous ranks in the same node anyway.<BR>
&gt;&gt; &nbsp;The tiled display options also have heavy reliance on the order in which<BR>
&gt;&gt; processes are assigned, and I don&#8217;t recall complaints about that.<BR>
&gt;&gt;<BR>
&gt;&gt; The only change I would suggest is to not have an option named<BR>
&gt;&gt; --number-of-gpu-per-host change the display parameter. &nbsp;The option name<BR>
&gt;&gt; should reflect the fact that it is going to override the display environment<BR>
&gt;&gt; variable. &nbsp;Offhand, I cannot think of a single option name that reflects<BR>
&gt;&gt; both the fact that you are changing the display and providing the number of<BR>
&gt;&gt; screen ids to use. &nbsp;Perhaps you would have two options, the<BR>
&gt;&gt; --number-of-gpu-per-host as you described and a something like<BR>
&gt;&gt; --set-display-server-id-by-process-id. &nbsp;Since one does not make sense<BR>
&gt;&gt; without the other, you could give an error if one is used independently.<BR>
&gt;&gt;<BR>
&gt;&gt; -Ken<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt; On 6/22/10 12:31 PM, &quot;burlen&quot; &lt;<a href="burlen.loring@gmail.com">burlen.loring@gmail.com</a>&gt; wrote:<BR>
&gt;&gt;<BR>
&gt;&gt; Hi,<BR>
&gt;&gt;<BR>
&gt;&gt; I realized that my suggestion relies on processes being assigned in a<BR>
&gt;&gt; particular order. So something slightly more complicated would need to<BR>
&gt;&gt; be done to determine the number of processes running on each host. Still<BR>
&gt;&gt; it would be pretty simple way to make folks lives easier. Let me know<BR>
&gt;&gt; what you think.<BR>
&gt;&gt;<BR>
&gt;&gt; Burlen<BR>
&gt;&gt;<BR>
&gt;&gt; burlen wrote:<BR>
&gt;&gt;&gt; Hi,<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; currently we suggest users rely on details particular to specific MPI<BR>
&gt;&gt;&gt; implementations<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; (<a href="http://paraview.org/Wiki/Setting_up_a_ParaView_Server#Multiple_GPUs_Per_Node">http://paraview.org/Wiki/Setting_up_a_ParaView_Server#Multiple_GPUs_Per_Node</a>)<BR>
&gt;&gt;&gt; to set up PV server on clusters with multiple graphics cards per node.<BR>
&gt;&gt;&gt; It seems to me that this reliance on non standard implementation<BR>
&gt;&gt;&gt; details isn't necessary for the most common case and it can introduce<BR>
&gt;&gt;&gt; some complication to get PV running on various installations.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; There is something simple that we could do to make users life easier.<BR>
&gt;&gt;&gt; ParaView could handle a common configuration of multiple graphics<BR>
&gt;&gt;&gt; cards seamlessly with very little effort via an additional command<BR>
&gt;&gt;&gt; line option.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; Two common ways to address multiple video devices in X11 via the<BR>
&gt;&gt;&gt; DISPLAY variable are, 1) by server id (&quot;:[server].0&quot;) or 2) by screen<BR>
&gt;&gt;&gt; id (&quot;:0.[screen]&quot;). &nbsp;It depends on how X11 is setup, but I think the<BR>
&gt;&gt;&gt; latter is the most common.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; If the user were to tell PV how many video devices are available on<BR>
&gt;&gt;&gt; each node via the following command line variable, PV could assign<BR>
&gt;&gt;&gt; rendering contexts cyclically across the available devices by setting<BR>
&gt;&gt;&gt; the DISPLAY variable for the user.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; --number-of-gpu-per-host=N<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; as each server starts he will make the computation to set the DISPLAY<BR>
&gt;&gt;&gt; variable so that render contexts are cycled across the available devices.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; For example, something like the folowing could be added to<BR>
&gt;&gt;&gt; Filters/vtkPVMain.cxx<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; if (numGpuPerHost)<BR>
&gt;&gt;&gt; &nbsp;{<BR>
&gt;&gt;&gt; &nbsp;int screenId=LocalProcId%numGpuPerHost<BR>
&gt;&gt;&gt; &nbsp;setenv(&quot;DISPALY=:0.%i&quot;,screenId)<BR>
&gt;&gt;&gt; &nbsp;}<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; This would conflict with the &quot;-display&quot; option, if both are present PV<BR>
&gt;&gt;&gt; would exit and print some error message.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; Do you guys think this would be a reasonable approach to handle a<BR>
&gt;&gt;&gt; common use case?<BR>
&gt;&gt;&gt; Burlen<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt; _______________________________________________<BR>
&gt;&gt; Powered by www.kitware.com<BR>
&gt;&gt;<BR>
&gt;&gt; Visit other Kitware open-source projects at<BR>
&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
&gt;&gt;<BR>
&gt;&gt; Please keep messages on-topic and check the ParaView Wiki at:<BR>
&gt;&gt; <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
&gt;&gt;<BR>
&gt;&gt; Follow this link to subscribe/unsubscribe:<BR>
&gt;&gt; <a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt; &nbsp;&nbsp;&nbsp;**** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kenneth Moreland<BR>
&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sandia National Laboratories<BR>
&gt;&gt; ***********<BR>
&gt;&gt; *** *** *** &nbsp;email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
&gt;&gt; ** &nbsp;*** &nbsp;** &nbsp;phone: (505) 844-8919<BR>
&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;web: &nbsp;&nbsp;<a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt; _______________________________________________<BR>
&gt;&gt; Powered by www.kitware.com<BR>
&gt;&gt;<BR>
&gt;&gt; Visit other Kitware open-source projects at<BR>
&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
&gt;&gt;<BR>
&gt;&gt; Please keep messages on-topic and check the ParaView Wiki at:<BR>
&gt;&gt; <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
&gt;&gt;<BR>
&gt;&gt; Follow this link to subscribe/unsubscribe:<BR>
&gt;&gt; <a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt; _______________________________________________<BR>
&gt; Powered by www.kitware.com<BR>
&gt;<BR>
&gt; Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
&gt;<BR>
&gt; Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
&gt;<BR>
&gt; Follow this link to subscribe/unsubscribe:<BR>
&gt; <a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
<BR>
_______________________________________________<BR>
Powered by www.kitware.com<BR>
<BR>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
<BR>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
<BR>
Follow this link to subscribe/unsubscribe:<BR>
<a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
<BR>
<BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'><BR>
&nbsp;&nbsp;&nbsp;**** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kenneth Moreland<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sandia National Laboratories<BR>
*********** &nbsp;<BR>
*** *** *** &nbsp;email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
** &nbsp;*** &nbsp;** &nbsp;phone: (505) 844-8919<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;web: &nbsp;&nbsp;<a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT>
</BODY>
</HTML>