import NVIDIA-FreeBSD-x86-180.29
[nvidia.git] / doc / html / chapter-20.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;20.&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-19.html" title=
16 "Chapter&nbsp;19.&nbsp;Using the nvidia-settings Utility">
17 <link rel="next" href="chapter-21.html" title=
18 "Chapter&nbsp;21.&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;20.&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-19.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-21.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;20.&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 <p>In FreeBSD, with two GPUs SLI and Multi-GPU can both operate in
62 one of three modes: Alternate Frame Rendering (AFR), Split Frame
63 Rendering (SFR), and Antialiasing (AA). When AFR mode is active,
64 one GPU draws the next frame while the other one works on the frame
65 after that. In SFR mode, each frame is split horizontally into two
66 pieces, with one GPU rendering each piece. The split line is
67 adjusted to balance the load between the two GPUs. AA mode splits
68 antialiasing work between the two GPUs. Both GPUs work on the same
69 scene and the result is blended together to produce the final
70 frame. This mode is useful for applications that spend most of
71 their time processing with the CPU and cannot benefit from AFR.</p>
72 <p>With four GPUs, the same options are applicable. AFR mode cycles
73 through all four GPUs, each GPU rendering a frame in turn. SFR mode
74 splits the frame horizontally into four pieces. AA mode splits the
75 work between the four GPUs, allowing antialiasing up to 64x. With
76 four GPUs SLI can also operate in an additional mode, Alternate
77 Frame Rendering of Antialiasing. (AFR of AA). With AFR of AA, pairs
78 of GPUs render alternate frames, each GPU in a pair doing half of
79 the antialiasing work. Note that these scenarios apply whether you
80 have four separate cards or you have two cards, each with two
81 GPUs.</p>
82 <p>Multi-GPU is enabled by setting the "MultiGPU" option in the X
83 configuration file; see <a href="appendix-f.html" title=
84 "Appendix&nbsp;F.&nbsp;X Config Options">Appendix&nbsp;F, <i>X
85 Config Options</i></a> for details about the "MultiGPU" option.</p>
86 <p>The nvidia-xconfig utility can be used to set the "MultiGPU"
87 option, rather than modifying the X configuration file by hand. For
88 example:</p>
89 <pre class="screen">
90     % nvidia-xconfig --multigpu=on
91 </pre>
92 <p></p>
93 <p>SLI is enabled by setting the "SLI" option in the X
94 configuration file; see <a href="appendix-f.html" title=
95 "Appendix&nbsp;F.&nbsp;X Config Options">Appendix&nbsp;F, <i>X
96 Config Options</i></a> for details about the SLI option.</p>
97 <p>The nvidia-xconfig utility can be used to set the SLI option,
98 rather than modifying the X configuration file by hand. For
99 example:</p>
100 <pre class="screen">
101     % nvidia-xconfig --sli=on
102 </pre>
103 <p></p>
104 <h3>Hardware requirements</h3>
105 <p>SLI functionality requires:</p>
106 <div class="itemizedlist">
107 <ul type="disc">
108 <li>
109 <p>Identical PCI-Express graphics cards</p>
110 </li>
111 <li>
112 <p>A supported motherboard</p>
113 </li>
114 <li>
115 <p>In most cases, a video bridge connecting the two graphics
116 cards</p>
117 </li>
118 </ul>
119 </div>
120 <p>For the latest in supported SLI and Multi-GPU configurations,
121 including SLI- and Multi-GPU capable GPUs and SLI-capable
122 motherboards, see <a href="http://www.slizone.com" target=
123 "_top">http://www.slizone.com</a>.</p>
124 <h3>Other Notes and Requirements</h3>
125 <p>The following other requirements apply to SLI and Multi-GPU:</p>
126 <div class="itemizedlist">
127 <ul type="disc">
128 <li>
129 <p>Mobile GPUs are NOT supported</p>
130 </li>
131 <li>
132 <p>SLI on Quadro-based graphics cards always requires a video
133 bridge</p>
134 </li>
135 <li>
136 <p>TwinView is also not supported with SLI or Multi-GPU. Only one
137 display can be used when SLI or Multi-GPU is enabled.</p>
138 </li>
139 <li>
140 <p>If X is configured to use multiple screens and screen 0 has SLI
141 or Multi-GPU enabled, the other screens will be disabled. Note that
142 if SLI or Multi-GPU is enabled, the GPUs used by that configuration
143 will be unavailable for single GPU rendering.</p>
144 </li>
145 </ul>
146 </div>
147 <p></p>
148 <div class="qandaset">
149 <table border="0" summary="Q and A Set">
150 <col align="left" width="1%">
151 <tbody>
152 <tr class="qandadiv">
153 <td align="left" valign="top" colspan="2">
154 <h3 class="title"><a name="id2635078" id="id2635078"></a>20.1.
155 Frequently Asked SLI and Multi-GPU Questions</h3>
156 </td>
157 </tr>
158 <tr class="question">
159 <td align="left" valign="top"><a name="id2635084" id=
160 "id2635084"></a><a name="id2635086" id="id2635086"></a></td>
161 <td align="left" valign="top">
162 <p><b>Why is glxgears slower when SLI or Multi-GPU is
163 enabled?</b></p>
164 </td>
165 </tr>
166 <tr class="answer">
167 <td align="left" valign="top"></td>
168 <td align="left" valign="top">
169 <p>When SLI or Multi-GPU is enabled, the NVIDIA driver must
170 coordinate the operations of all GPUs when each new frame is
171 swapped (made visible). For most applications, this GPU
172 synchronization overhead is negligible. However, because glxgears
173 renders so many frames per second, the GPU synchronization overhead
174 consumes a significant portion of the total time, and the framerate
175 is reduced.</p>
176 </td>
177 </tr>
178 <tr class="question">
179 <td align="left" valign="top"><a name="id2635302" id=
180 "id2635302"></a><a name="id2635304" id="id2635304"></a></td>
181 <td align="left" valign="top">
182 <p><b>Why is Doom 3 slower when SLI or Multi-GPU is
183 enabled?</b></p>
184 </td>
185 </tr>
186 <tr class="answer">
187 <td align="left" valign="top"></td>
188 <td align="left" valign="top">
189 <p>The NVIDIA Accelerated FreeBSD Graphics Driver does not
190 automatically detect the optimal SLI or Multi-GPU settings for
191 games such as Doom 3 and Quake 4. To work around this issue, the
192 environment variable __GL_DOOM3 can be set to tell OpenGL that Doom
193 3's optimal settings should be used. In Bash, this can be done in
194 the same command that launches Doom 3 so the environment variable
195 does not remain set for other OpenGL applications started in the
196 same session:</p>
197 <pre class="screen">
198     % __GL_DOOM3=1 doom3
199 </pre>
200 <p>Doom 3's startup script can also be modified to set this
201 environment variable:</p>
202 <pre class="screen">
203     #!/bin/sh
204     # Needed to make symlinks/shortcuts work.
205     # the binaries must run with correct working directory
206     cd "/usr/local/games/doom3/"
207     export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
208     export __GL_DOOM3=1
209     exec ./doom.x86 "$@"
210 </pre>
211 <p>This environment variable is temporary and will be removed in
212 the future.</p>
213 </td>
214 </tr>
215 </tbody>
216 </table>
217 </div>
218 </div>
219 <div class="navfooter">
220 <hr>
221 <table width="100%" summary="Navigation footer">
222 <tr>
223 <td width="40%" align="left"><a accesskey="p" href=
224 "chapter-19.html">Prev</a>&nbsp;</td>
225 <td width="20%" align="center"><a accesskey="u" href=
226 "part-01.html">Up</a></td>
227 <td width="40%" align="right">&nbsp;<a accesskey="n" href=
228 "chapter-21.html">Next</a></td>
229 </tr>
230 <tr>
231 <td width="40%" align="left" valign="top">
232 Chapter&nbsp;19.&nbsp;Using the nvidia-settings Utility&nbsp;</td>
233 <td width="20%" align="center"><a accesskey="h" href=
234 "index.html">Home</a></td>
235 <td width="40%" align="right" valign="top">
236 &nbsp;Chapter&nbsp;21.&nbsp;Configuring Frame Lock and Genlock</td>
237 </tr>
238 </table>
239 </div>
240 </body>
241 </html>