458 lines
15 KiB
HTML
458 lines
15 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta name="generator" content=
|
|
"HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org">
|
|
<meta http-equiv="Content-Type" content=
|
|
"text/html; charset=us-ascii">
|
|
<title>Chapter 31. Configuring SLI and Multi-GPU
|
|
Mosaic</title>
|
|
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
|
|
<link rel="start" href="index.html" title=
|
|
"NVIDIA Accelerated Linux Graphics Driver README and Installation Guide">
|
|
<link rel="up" href="installationandconfiguration.html" title=
|
|
"Part I. Installation and Configuration Instructions">
|
|
<link rel="prev" href="nvidia-persistenced.html" title=
|
|
"Chapter 30. Using the nvidia-persistenced Utility">
|
|
<link rel="next" href="framelock.html" title=
|
|
"Chapter 32. Configuring Frame Lock and Genlock">
|
|
</head>
|
|
<body>
|
|
<div class="navheader">
|
|
<table width="100%" summary="Navigation header">
|
|
<tr>
|
|
<th colspan="3" align="center">Chapter 31. Configuring
|
|
SLI and Multi-GPU Mosaic</th>
|
|
</tr>
|
|
<tr>
|
|
<td width="20%" align="left"><a accesskey="p" href=
|
|
"nvidia-persistenced.html">Prev</a> </td>
|
|
<th width="60%" align="center">Part I. Installation and
|
|
Configuration Instructions</th>
|
|
<td width="20%" align="right"> <a accesskey="n" href=
|
|
"framelock.html">Next</a></td>
|
|
</tr>
|
|
</table>
|
|
<hr></div>
|
|
<div class="chapter" lang="en">
|
|
<div class="titlepage">
|
|
<div>
|
|
<div>
|
|
<h2 class="title"><a name="sli" id=
|
|
"sli"></a>Chapter 31. Configuring SLI and Multi-GPU
|
|
Mosaic</h2>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<p>The NVIDIA Linux driver contains support for NVIDIA SLI and
|
|
Multi-GPU Mosaic. This technology enables you to extend a single X
|
|
screen transparently across all of the available display outputs on
|
|
each GPU. See below for the exact set of configurations which can
|
|
be used with SLI Mosaic Mode.</p>
|
|
<p>The distinction between SLI and Multi-GPU is straightforward.
|
|
SLI is used to leverage the processing power of GPUs across two or
|
|
more graphics cards, while Multi-GPU is used to leverage the
|
|
processing power of two GPUs colocated on the same graphics card.
|
|
If you want to link together separate graphics cards, you should
|
|
use the "SLI" X config option. Likewise, if you want to link
|
|
together GPUs on the same graphics card, you should use the
|
|
"MultiGPU" X config option. If you have two cards, each with two
|
|
GPUs, and you wish to link them all together, you should use the
|
|
"SLI" option.</p>
|
|
<p>If any SLI mode is enabled, applications may override which
|
|
rendering mode is in use by creating an OpenGL context with the
|
|
GLX_CONTEXT_MULTIGPU_ATTRIB_NV attribute. In addition, applications
|
|
may gain explicit control over individual GPU rendering in SLI
|
|
configurations through the GL_NV_gpu_multicast extension by
|
|
creating a context with the
|
|
GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV attribute. Multicast
|
|
rendering in SLI Mosaic configurations requires use of the
|
|
GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV attribute,
|
|
which is only allowed on Quadro GPUs.</p>
|
|
<h3>Enabling Multi-GPU</h3>
|
|
<p>Multi-GPU is enabled by setting the "MultiGPU" option in the X
|
|
configuration file; see <a href="xconfigoptions.html" title=
|
|
"Appendix B. X Config Options">Appendix B, <i>X
|
|
Config Options</i></a> for details about the "MultiGPU" option.</p>
|
|
<p>The nvidia-xconfig utility can be used to set the "MultiGPU"
|
|
option, rather than modifying the X configuration file by hand. For
|
|
example:</p>
|
|
<pre class="screen">
|
|
% nvidia-xconfig --multigpu=mosaic
|
|
</pre>
|
|
<p></p>
|
|
<h3>Enabling SLI</h3>
|
|
<p>SLI is enabled by setting the "SLI" option in the X
|
|
configuration file; see <a href="xconfigoptions.html" title=
|
|
"Appendix B. X Config Options">Appendix B, <i>X
|
|
Config Options</i></a> for details about the SLI option.</p>
|
|
<p>The nvidia-xconfig utility can be used to set the SLI option,
|
|
rather than modifying the X configuration file by hand. For
|
|
example:</p>
|
|
<pre class="screen">
|
|
% nvidia-xconfig --sli=mosaic
|
|
</pre>
|
|
<p></p>
|
|
<h3>Enabling SLI Mosaic Mode</h3>
|
|
<p>The simplest way to configure SLI Mosaic Mode using a grid of
|
|
monitors is to use <span><strong class=
|
|
"command">nvidia-settings</strong></span> (see <a href=
|
|
"nvidiasettings.html" title=
|
|
"Chapter 25. Using the nvidia-settings Utility">Chapter 25,
|
|
<i>Using the nvidia-settings Utility</i></a>). The steps to perform
|
|
this configuration are as follows:</p>
|
|
<div class="orderedlist">
|
|
<ol type="1">
|
|
<li>
|
|
<p>Connect each of the monitors you would like to use to any
|
|
connector from any GPU used for SLI Mosaic Mode. If you are going
|
|
to use fewer monitors than there are connectors, connect one
|
|
monitor to each GPU before adding a second monitor to any GPUs.</p>
|
|
</li>
|
|
<li>
|
|
<p>Install the NVIDIA display driver set.</p>
|
|
</li>
|
|
<li>
|
|
<p>Configure an X screen to use the "nvidia" driver on at least one
|
|
of the GPUs (see <a href="editxconfig.html" title=
|
|
"Chapter 6. Configuring X for the NVIDIA Driver">Chapter 6,
|
|
<i>Configuring X for the NVIDIA Driver</i></a> for more
|
|
information).</p>
|
|
</li>
|
|
<li>
|
|
<p>Start X.</p>
|
|
</li>
|
|
<li>
|
|
<p>Run <span><strong class=
|
|
"command">nvidia-settings</strong></span> and open the "X Server
|
|
Display Configuration" page using the navigation pane on the left
|
|
side of the application.</p>
|
|
</li>
|
|
<li>
|
|
<p>Below the layout window, enable the "Use SLI Mosaic Mode" check
|
|
box if not already enabled. Then click the "Configure SLI Mosaic
|
|
Displays" button. You may need to click the "Advanced..." button
|
|
near the bottom of the page.</p>
|
|
</li>
|
|
<li>
|
|
<p>In the "Configure SLI Mosaic Layout" dialog, select the monitor
|
|
grid configuration you'd like to use from the "Display
|
|
Configuration" dropdown.</p>
|
|
</li>
|
|
<li>
|
|
<p>Choose the resolution and refresh rate at which you would like
|
|
to drive each individual monitor.</p>
|
|
</li>
|
|
<li>
|
|
<p>Set any overlap you would like between the displays.</p>
|
|
</li>
|
|
<li>
|
|
<p>Click the "Apply to Layout" button. The configuration described
|
|
in the dialog will be loaded into the "Display Configuration" page
|
|
and can be adjusted, if needed.</p>
|
|
</li>
|
|
<li>
|
|
<p>Click the "Save to X Configuration File" button. NOTE: If you
|
|
don't have permissions to write to your system's X configuration
|
|
file, you will be prompted to choose a location to save the file.
|
|
After doing so, you <span class="emphasis"><em>must</em></span>
|
|
copy the X configuration file into a location the X server will
|
|
consider upon startup (usually <code class=
|
|
"filename">/etc/X11/xorg.conf</code>).</p>
|
|
</li>
|
|
<li>
|
|
<p>Exit nvidia-settings and restart your X server.</p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
<p>Alternatively, nvidia-xconfig can be used to configure SLI
|
|
Mosaic Mode via a command like <span><strong class=
|
|
"command">nvidia-xconfig --sli=Mosaic
|
|
--metamodes=METAMODES</strong></span> where the METAMODES string
|
|
specifies the desired grid configuration. For example:</p>
|
|
<pre class="screen">
|
|
nvidia-xconfig --sli=Mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"
|
|
</pre>
|
|
<p>will configure four DFPs in a 2x2 configuration, each running at
|
|
1920x1024, with the two DFPs on GPU-0 driving the top two monitors
|
|
of the 2x2 configuration, and the two DFPs on GPU-1 driving the
|
|
bottom two monitors of the 2x2 configuration.</p>
|
|
<p>See the MetaModes X configuration description in details in
|
|
<a href="configtwinview.html" title=
|
|
"Chapter 12. Configuring Multiple Display Devices on One X Screen">
|
|
Chapter 12, <i>Configuring Multiple Display Devices on One X
|
|
Screen</i></a>. See <a href="displaydevicenames.html" title=
|
|
"Appendix C. Display Device Names">Appendix C,
|
|
<i>Display Device Names</i></a> for further details on GPU and
|
|
Display Device Names.</p>
|
|
<h3>Hardware requirements</h3>
|
|
<p>SLI functionality requires:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Identical PCI Express graphics cards</p>
|
|
</li>
|
|
<li>
|
|
<p>A supported motherboard</p>
|
|
</li>
|
|
<li>
|
|
<p>For the displays to be synchronized across GPUs, the GPUs must
|
|
be connected using an SLI video bridge or nvlink bridge.</p>
|
|
</li>
|
|
<li>
|
|
<p>SLI Mosaic Mode requires NVIDIA Quadro GPUs. GeForce GPUs in SLI
|
|
can use Base Mosaic.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
<h3>Other Notes and Requirements</h3>
|
|
<p>The following other requirements apply to SLI and Multi-GPU:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Mobile GPUs are NOT supported</p>
|
|
</li>
|
|
<li>
|
|
<p>GPUs with ECC enabled may not be used in an SLI
|
|
configuration</p>
|
|
</li>
|
|
<li>
|
|
<p>If X is configured to use multiple screens and screen 0 has SLI
|
|
or Multi-GPU enabled, the other screens configured to use the
|
|
nvidia driver will be disabled. Note that if SLI or Multi-GPU is
|
|
enabled, the GPUs used by that configuration will be unavailable
|
|
for single GPU rendering.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
<div class="qandaset">
|
|
<table border="0" summary="Q and A Set">
|
|
<col align="left" width="1%">
|
|
<tbody>
|
|
<tr class="qandadiv">
|
|
<td align="left" valign="top" colspan="2"><a name=
|
|
"FrequentlyAsked4dceb" id="FrequentlyAsked4dceb"></a>
|
|
<h3 class="title">31.1. Frequently Asked SLI and Multi-GPU
|
|
Questions</h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="WhyDoesSliOrMul28671" id=
|
|
"WhyDoesSliOrMul28671"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Why does SLI or MultiGPU fail to initialize?</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>There are several reasons why SLI or MultiGPU may fail to
|
|
initialize. Most of these should be clear from the warning message
|
|
in the X log file; e.g.:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p><code class="computeroutput">Unsupported bus type</code></p>
|
|
</li>
|
|
<li>
|
|
<p><code class="computeroutput">The video link was not
|
|
detected</code></p>
|
|
</li>
|
|
<li>
|
|
<p><code class="computeroutput">GPUs do not match</code></p>
|
|
</li>
|
|
<li>
|
|
<p><code class="computeroutput">Unsupported GPU video
|
|
BIOS</code></p>
|
|
</li>
|
|
<li>
|
|
<p><code class="computeroutput">Insufficient PCIe link
|
|
width</code></p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p>The warning message <code class="computeroutput">'Unsupported
|
|
PCI topology'</code> is likely due to problems with your Linux
|
|
kernel. The NVIDIA driver must have access to the PCI Bridge (often
|
|
called the Root Bridge) that each NVIDIA GPU is connected to in
|
|
order to configure SLI or MultiGPU correctly. There are many
|
|
kernels that do not properly recognize this bridge and, as a
|
|
result, do not allow the NVIDIA driver to access this bridge. See
|
|
the below "How can I determine if my kernel correctly detects my
|
|
PCI Bridge?" FAQ for details.</p>
|
|
<p>Below are some specific troubleshooting steps to help deal with
|
|
SLI and MultiGPU initialization failures.</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Make sure that ACPI is enabled in your kernel. NVIDIA's
|
|
experience has been that ACPI is needed for the kernel to correctly
|
|
recognize the Root Bridge. Note that in some cases, the kernel's
|
|
version of ACPI may still have problems and require an update to a
|
|
newer kernel.</p>
|
|
</li>
|
|
<li>
|
|
<p>Run <span><strong class="command">lspci</strong></span> to check
|
|
that multiple NVIDIA GPUs can be identified by the operating
|
|
system; e.g:</p>
|
|
<pre class="screen">
|
|
% /sbin/lspci | grep -i nvidia
|
|
</pre>
|
|
<p>If <span><strong class="command">lspci</strong></span> does not
|
|
report all the GPUs that are in your system, then this is a problem
|
|
with your Linux kernel, and it is recommended that you use a
|
|
different kernel.</p>
|
|
<p>Please note: the <span><strong class=
|
|
"command">lspci</strong></span> utility may be installed in a
|
|
location other than <code class="filename">/sbin</code> on your
|
|
system. If the above command fails with the error: <code class=
|
|
"computeroutput">'/sbin/lspci: No such file or directory'</code>,
|
|
please try:</p>
|
|
<pre class="screen">
|
|
% lspci | grep -i nvidia
|
|
</pre>
|
|
<p>, instead. You may also need to install your distribution's
|
|
<code class="computeroutput">pciutils</code> package.</p>
|
|
</li>
|
|
<li>
|
|
<p>Make sure you have the most recent SBIOS available for your
|
|
motherboard.</p>
|
|
</li>
|
|
<li>
|
|
<p>The PCI Express slots on the motherboard must provide a minimum
|
|
link width. Please make sure that the PCI Express slot(s) on your
|
|
motherboard meet the following requirements and that you have
|
|
connected the graphics board to the correct PCI Express
|
|
slot(s):</p>
|
|
<div class="itemizedlist">
|
|
<ul type="circle">
|
|
<li>
|
|
<p>A dual-GPU board needs a minimum of 8 lanes (i.e. x8 or x16)</p>
|
|
</li>
|
|
<li>
|
|
<p>A pair of single-GPU boards requires one of the following
|
|
supported link width combinations:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="square">
|
|
<li>
|
|
<p>x16 + x16</p>
|
|
</li>
|
|
<li>
|
|
<p>x16 + x8</p>
|
|
</li>
|
|
<li>
|
|
<p>x16 + x4</p>
|
|
</li>
|
|
<li>
|
|
<p>x8 + x8</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="HowCanIDetermin93bb2" id=
|
|
"HowCanIDetermin93bb2"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>How can I determine if my kernel correctly detects my PCI
|
|
Bridge?</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>As discussed above, the NVIDIA driver must have access to the
|
|
PCI Bridge that each NVIDIA GPU is connected to in order to
|
|
configure SLI or MultiGPU correctly. The following steps will
|
|
identify whether the kernel correctly recognizes the PCI
|
|
Bridge:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Identify both NVIDIA GPUs:</p>
|
|
<pre class="screen">
|
|
% /sbin/lspci | grep -i vga
|
|
|
|
0a:00.0 VGA compatible controller: nVidia Corporation [...]
|
|
81:00.0 VGA compatible controller: nVidia Corporation [...]
|
|
</pre>
|
|
<p></p>
|
|
</li>
|
|
<li>
|
|
<p>Verify that each GPU is connected to a bus connected to the Root
|
|
Bridge (note that the GPUs in the above example are on buses 0a and
|
|
81):</p>
|
|
<pre class="screen">
|
|
% /sbin/lspci -t
|
|
</pre>
|
|
<p>good:</p>
|
|
<pre class="screen">
|
|
-+-[0000:80]-+-00.0
|
|
| +-01.0
|
|
| \-0e.0-[0000:81]----00.0
|
|
...
|
|
\-[0000:00]-+-00.0
|
|
+-01.0
|
|
+-01.1
|
|
+-0e.0-[0000:0a]----00.0
|
|
</pre>
|
|
<p>bad:</p>
|
|
<pre class="screen">
|
|
-+-[0000:81]---00.0
|
|
...
|
|
\-[0000:00]-+-00.0
|
|
+-01.0
|
|
+-01.1
|
|
+-0e.0-[0000:0a]----00.0
|
|
</pre>
|
|
<p>Note that in the first example, bus 81 is connected to Root
|
|
Bridge 80, but that in the second example there is no Root Bridge
|
|
80 and bus 81 is incorrectly connected at the base of the device
|
|
tree. In the bad case, the only solution is to upgrade your kernel
|
|
to one that properly detects your PCI bus layout.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="navfooter">
|
|
<hr>
|
|
<table width="100%" summary="Navigation footer">
|
|
<tr>
|
|
<td width="40%" align="left"><a accesskey="p" href=
|
|
"nvidia-persistenced.html">Prev</a> </td>
|
|
<td width="20%" align="center"><a accesskey="u" href=
|
|
"installationandconfiguration.html">Up</a></td>
|
|
<td width="40%" align="right"> <a accesskey="n" href=
|
|
"framelock.html">Next</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td width="40%" align="left" valign="top">
|
|
Chapter 30. Using the nvidia-persistenced
|
|
Utility </td>
|
|
<td width="20%" align="center"><a accesskey="h" href=
|
|
"index.html">Home</a></td>
|
|
<td width="40%" align="right" valign="top">
|
|
Chapter 32. Configuring Frame Lock and Genlock</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</body>
|
|
</html>
|