import NVIDIA-FreeBSD-x86-190.42
[nvidia.git] / doc / html / chapter-24.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta name="generator" content=
5 "HTML Tidy for FreeBSD (vers 1 September 2005), see www.w3.org">
6 <meta http-equiv="Content-Type" content=
7 "text/html; charset=us-ascii">
8 <title>Chapter&nbsp;24.&nbsp;Configuring SLI and Multi-GPU
9 FrameRendering</title>
10 <meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
11 <link rel="start" href="index.html" title=
12 "NVIDIA Accelerated FreeBSD Graphics Driver README and Installation Guide">
13 <link rel="up" href="part-01.html" title=
14 "Part&nbsp;I.&nbsp;Installation and Configuration Instructions">
15 <link rel="prev" href="chapter-23.html" title=
16 "Chapter&nbsp;23.&nbsp;Using the nvidia-settings Utility">
17 <link rel="next" href="chapter-25.html" title=
18 "Chapter&nbsp;25.&nbsp;Configuring Frame Lock and Genlock">
19 </head>
20 <body>
21 <div class="navheader">
22 <table width="100%" summary="Navigation header">
23 <tr>
24 <th colspan="3" align="center">Chapter&nbsp;24.&nbsp;Configuring
25 SLI and Multi-GPU FrameRendering</th>
26 </tr>
27 <tr>
28 <td width="20%" align="left"><a accesskey="p" href=
29 "chapter-23.html">Prev</a>&nbsp;</td>
30 <th width="60%" align="center">Part&nbsp;I.&nbsp;Installation and
31 Configuration Instructions</th>
32 <td width="20%" align="right">&nbsp;<a accesskey="n" href=
33 "chapter-25.html">Next</a></td>
34 </tr>
35 </table>
36 <hr></div>
37 <div class="chapter" lang="en">
38 <div class="titlepage">
39 <div>
40 <div>
41 <h2 class="title"><a name="sli" id=
42 "sli"></a>Chapter&nbsp;24.&nbsp;Configuring SLI and Multi-GPU
43 FrameRendering</h2>
44 </div>
45 </div>
46 </div>
47 <p>The NVIDIA FreeBSD driver contains support for NVIDIA SLI
48 FrameRendering and NVIDIA Multi-GPU FrameRendering. Both of these
49 technologies allow an OpenGL application to take advantage of
50 multiple GPUs to improve visual performance.</p>
51 <p>The distinction between SLI and Multi-GPU is straightforward.
52 SLI is used to leverage the processing power of GPUs across two or
53 more graphics cards, while Multi-GPU is used to leverage the
54 processing power of two GPUs colocated on the same graphics card.
55 If you want to link together separate graphics cards, you should
56 use the "SLI" X config option. Likewise, if you want to link
57 together GPUs on the same graphics card, you should use the
58 "MultiGPU" X config option. If you have two cards, each with two
59 GPUs, and you wish to link them all together, you should use the
60 "SLI" option.</p>
61 <h3>Rendering Modes</h3>
62 <p>In FreeBSD, with two GPUs SLI and Multi-GPU can both operate in
63 one of three modes: Alternate Frame Rendering (AFR), Split Frame
64 Rendering (SFR), and Antialiasing (AA). When AFR mode is active,
65 one GPU draws the next frame while the other one works on the frame
66 after that. In SFR mode, each frame is split horizontally into two
67 pieces, with one GPU rendering each piece. The split line is
68 adjusted to balance the load between the two GPUs. AA mode splits
69 antialiasing work between the two GPUs. Both GPUs work on the same
70 scene and the result is blended together to produce the final
71 frame. This mode is useful for applications that spend most of
72 their time processing with the CPU and cannot benefit from AFR.</p>
73 <p>With four GPUs, the same options are applicable. AFR mode cycles
74 through all four GPUs, each GPU rendering a frame in turn. SFR mode
75 splits the frame horizontally into four pieces. AA mode splits the
76 work between the four GPUs, allowing antialiasing up to 64x. With
77 four GPUs SLI can also operate in an additional mode, Alternate
78 Frame Rendering of Antialiasing. (AFR of AA). With AFR of AA, pairs
79 of GPUs render alternate frames, each GPU in a pair doing half of
80 the antialiasing work. Note that these scenarios apply whether you
81 have four separate cards or you have two cards, each with two
82 GPUs.</p>
83 <p>With a Quadro Plex Visual Computing System (VCS), the same
84 options as above are available, if your Quadro Plex VCS has two or
85 four GPUs. In addition, there is a special SLI Mosaic Mode to
86 extend a single X screen transparently across all of the available
87 display outputs on the Quadro Plex VCS.</p>
88 <h3>Enabling Multi-GPU</h3>
89 <p>Multi-GPU is enabled by setting the "MultiGPU" option in the X
90 configuration file; see <a href="appendix-b.html" title=
91 "Appendix&nbsp;B.&nbsp;X Config Options">Appendix&nbsp;B, <i>X
92 Config Options</i></a> for details about the "MultiGPU" option.</p>
93 <p>The nvidia-xconfig utility can be used to set the "MultiGPU"
94 option, rather than modifying the X configuration file by hand. For
95 example:</p>
96 <pre class="screen">
97     % nvidia-xconfig --multigpu=on
98 </pre>
99 <p></p>
100 <h3>Enabling SLI</h3>
101 <p>SLI is enabled by setting the "SLI" option in the X
102 configuration file; see <a href="appendix-b.html" title=
103 "Appendix&nbsp;B.&nbsp;X Config Options">Appendix&nbsp;B, <i>X
104 Config Options</i></a> for details about the SLI option.</p>
105 <p>The nvidia-xconfig utility can be used to set the SLI option,
106 rather than modifying the X configuration file by hand. For
107 example:</p>
108 <pre class="screen">
109     % nvidia-xconfig --sli=on
110 </pre>
111 <p></p>
112 <h3>Enabling SLI Mosaic Mode</h3>
113 <p>The simplest way to configure Mosaic Mode using a grid of
114 monitors is to use <span><strong class=
115 "command">nvidia-settings</strong></span> (see <a href=
116 "chapter-23.html" title=
117 "Chapter&nbsp;23.&nbsp;Using the nvidia-settings Utility">Chapter&nbsp;23,
118 <i>Using the nvidia-settings Utility</i></a>). The steps to perform
119 this configuration are as follows:</p>
120 <div class="orderedlist">
121 <ol type="1">
122 <li>
123 <p>Install your Quadro Plex VCS into the system, following the
124 steps provided in the Quadro Plex Installation Guide.</p>
125 </li>
126 <li>
127 <p>Connect all of the monitors you would like to use to the Quadro
128 Plex VCS. If you are going to use fewer monitors than there are
129 connectors, connect one monitor to each GPU before adding a second
130 monitor to any GPUs.</p>
131 </li>
132 <li>
133 <p>Install the NVIDIA display driver set.</p>
134 </li>
135 <li>
136 <p>Configure an X screen to use the "nvidia" driver on at least one
137 of the GPUs in your Quadro Plex VCS (see <a href="chapter-06.html"
138 title=
139 "Chapter&nbsp;6.&nbsp;Configuring X for the NVIDIA Driver">Chapter&nbsp;6,
140 <i>Configuring X for the NVIDIA Driver</i></a> for more
141 information).</p>
142 </li>
143 <li>
144 <p>Start X.</p>
145 </li>
146 <li>
147 <p>Run <span><strong class=
148 "command">nvidia-settings</strong></span>. You should see a tab in
149 the left pane of nvidia-settings labeled "SLI Mosaic Mode
150 Settings". Note that you may need to expand the entry for the X
151 screen you configured earlier.</p>
152 </li>
153 <li>
154 <p>Check the "Use SLI Mosaic Mode" check box.</p>
155 </li>
156 <li>
157 <p>Select the monitor grid configuration you'd like to use from the
158 "display configuration" dropdown.</p>
159 </li>
160 <li>
161 <p>Choose the resolution and refresh rate at which you would like
162 to drive each individual monitor.</p>
163 </li>
164 <li>
165 <p>Set any overlap you would like between the displays.</p>
166 </li>
167 <li>
168 <p>Click the "Save to X Configuration File" button. NOTE: If you
169 don't have permissions to write to your system's X configuration
170 file, you will be prompted to choose a location to save the file.
171 After doing so, you <span class="emphasis"><em>must</em></span>
172 copy the X configuration file into a location the X server will
173 consider upon startup (usually <code class=
174 "filename">/etc/X11/xorg.conf</code> for X.Org servers or
175 <code class="filename">/etc/X11/XF86Config</code> for XFree86
176 servers).</p>
177 </li>
178 <li>
179 <p>Exit nvidia-settings and restart your X server.</p>
180 </li>
181 </ol>
182 </div>
183 <h3>Hardware requirements</h3>
184 <p>SLI functionality requires:</p>
185 <div class="itemizedlist">
186 <ul type="disc">
187 <li>
188 <p>Identical PCI-Express graphics cards</p>
189 </li>
190 <li>
191 <p>A supported motherboard</p>
192 </li>
193 <li>
194 <p>In most cases, a video bridge connecting the two graphics
195 cards</p>
196 </li>
197 <li>
198 <p>A Quadro Plex VCS to use Mosaic Mode</p>
199 </li>
200 </ul>
201 </div>
202 <p>For the latest in supported SLI and Multi-GPU configurations,
203 including SLI- and Multi-GPU capable GPUs and SLI-capable
204 motherboards, see <a href="http://www.slizone.com" target=
205 "_top">http://www.slizone.com</a>.</p>
206 <h3>Other Notes and Requirements</h3>
207 <p>The following other requirements apply to SLI and Multi-GPU:</p>
208 <div class="itemizedlist">
209 <ul type="disc">
210 <li>
211 <p>Mobile GPUs are NOT supported</p>
212 </li>
213 <li>
214 <p>SLI on Quadro-based graphics cards always requires a video
215 bridge</p>
216 </li>
217 <li>
218 <p>TwinView is also not supported with SLI or Multi-GPU. Only one
219 display can be used when SLI or Multi-GPU is enabled, with the
220 exception of Mosaic.</p>
221 </li>
222 <li>
223 <p>If X is configured to use multiple screens and screen 0 has SLI
224 or Multi-GPU enabled, the other screens configured to use the
225 nvidia driver will be disabled. Note that if SLI or Multi-GPU is
226 enabled, the GPUs used by that configuration will be unavailable
227 for single GPU rendering.</p>
228 </li>
229 </ul>
230 </div>
231 <p></p>
232 <div class="qandaset">
233 <table border="0" summary="Q and A Set">
234 <col align="left" width="1%">
235 <tbody>
236 <tr class="qandadiv">
237 <td align="left" valign="top" colspan="2">
238 <h3 class="title"><a name="id2636030" id="id2636030"></a>24.1.
239 Frequently Asked SLI and Multi-GPU Questions</h3>
240 </td>
241 </tr>
242 <tr class="question">
243 <td align="left" valign="top"><a name="id2636037" id=
244 "id2636037"></a><a name="id2636039" id="id2636039"></a></td>
245 <td align="left" valign="top">
246 <p><b>Why is glxgears slower when SLI or Multi-GPU is
247 enabled?</b></p>
248 </td>
249 </tr>
250 <tr class="answer">
251 <td align="left" valign="top"></td>
252 <td align="left" valign="top">
253 <p>When SLI or Multi-GPU is enabled, the NVIDIA driver must
254 coordinate the operations of all GPUs when each new frame is
255 swapped (made visible). For most applications, this GPU
256 synchronization overhead is negligible. However, because glxgears
257 renders so many frames per second, the GPU synchronization overhead
258 consumes a significant portion of the total time, and the framerate
259 is reduced.</p>
260 </td>
261 </tr>
262 <tr class="question">
263 <td align="left" valign="top"><a name="id2636050" id=
264 "id2636050"></a><a name="id2636052" id="id2636052"></a></td>
265 <td align="left" valign="top">
266 <p><b>Why is Doom 3 slower when SLI or Multi-GPU is
267 enabled?</b></p>
268 </td>
269 </tr>
270 <tr class="answer">
271 <td align="left" valign="top"></td>
272 <td align="left" valign="top">
273 <p>The NVIDIA Accelerated FreeBSD Graphics Driver does not
274 automatically detect the optimal SLI or Multi-GPU settings for
275 games such as Doom 3 and Quake 4. To work around this issue, the
276 environment variable __GL_DOOM3 can be set to tell OpenGL that Doom
277 3's optimal settings should be used. In Bash, this can be done in
278 the same command that launches Doom 3 so the environment variable
279 does not remain set for other OpenGL applications started in the
280 same session:</p>
281 <pre class="screen">
282     % __GL_DOOM3=1 doom3
283 </pre>
284 <p>Doom 3's startup script can also be modified to set this
285 environment variable:</p>
286 <pre class="screen">
287     #!/bin/sh
288     # Needed to make symlinks/shortcuts work.
289     # the binaries must run with correct working directory
290     cd "/usr/local/games/doom3/"
291     export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
292     export __GL_DOOM3=1
293     exec ./doom.x86 "$@"
294 </pre>
295 <p>This environment variable is temporary and will be removed in
296 the future.</p>
297 </td>
298 </tr>
299 </tbody>
300 </table>
301 </div>
302 </div>
303 <div class="navfooter">
304 <hr>
305 <table width="100%" summary="Navigation footer">
306 <tr>
307 <td width="40%" align="left"><a accesskey="p" href=
308 "chapter-23.html">Prev</a>&nbsp;</td>
309 <td width="20%" align="center"><a accesskey="u" href=
310 "part-01.html">Up</a></td>
311 <td width="40%" align="right">&nbsp;<a accesskey="n" href=
312 "chapter-25.html">Next</a></td>
313 </tr>
314 <tr>
315 <td width="40%" align="left" valign="top">
316 Chapter&nbsp;23.&nbsp;Using the nvidia-settings Utility&nbsp;</td>
317 <td width="20%" align="center"><a accesskey="h" href=
318 "index.html">Home</a></td>
319 <td width="40%" align="right" valign="top">
320 &nbsp;Chapter&nbsp;25.&nbsp;Configuring Frame Lock and Genlock</td>
321 </tr>
322 </table>
323 </div>
324 </body>
325 </html>