CUDA Getting Started Linux PDF
CUDA Getting Started Linux PDF
FOR LINUX
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | ii
Chapter 6. Post-installation Actions........................................................................ 20
6.1. Environment Setup...................................................................................... 20
6.2. (Optional) Install Writable Samples.................................................................. 20
6.3. Verify the Installation.................................................................................. 21
6.3.1. Verify the Driver Version......................................................................... 21
6.3.2. Compiling the Examples.......................................................................... 21
6.3.3. Running the Binaries.............................................................................. 21
Chapter 7. Frequently Asked Questions................................................................... 24
How do I install the Toolkit in a different location?.................................................... 24
Why do I see "nvcc: No such file or directory" when I try to build a CUDA application?........... 25
Why do I see "error while loading shared libraries: <lib name>: cannot open shared object file:
No such file or directory" when I try to run a CUDA application that uses a CUDA library?... 25
How can I extract the contents of the installers?....................................................... 25
How can I tell X to ignore a GPU for compute-only use?.............................................. 25
Why doesn't the cuda-repo package install the CUDA Toolkit and Drivers?.......................... 26
Chapter 8. Additional Considerations...................................................................... 27
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | iii
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | iv
Chapter 1.
INTRODUCTION
1.1. System Requirements
To use CUDA on your system, you will need the following installed:
‣ CUDA-capable GPU
‣ A supported version of Linux with a gcc compiler and toolchain
‣ NVIDIA CUDA Toolkit (available at http://developer.nvidia.com/cuda-downloads)
The CUDA development environment relies on tight integration with the host
development environment, including the host compiler and C runtime libraries, and
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 1
Introduction
is therefore only supported on distribution versions that have been qualified for this
CUDA Toolkit release.
(*) x86 support is limited. See the x86 32-bit Support section for details.
(**) ICC support is limited to x86_64 only
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 2
Introduction
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 3
Chapter 2.
PRE-INSTALLATION ACTIONS
Some actions must be taken before the CUDA Toolkit and Driver can be installed on
Linux:
‣ Verify the system has a CUDA-capable GPU.
‣ Verify the system is running a supported version of Linux.
‣ Verify the system has gcc installed.
‣ Download the NVIDIA CUDA Toolkit.
‣ Handle conflicting installation methods.
You can override the install-time prerequisite checks by running the installer with
the -override flag. Remember that the prerequisites will still be required to use the
NVIDIA CUDA Toolkit.
If you do not see any settings, update the PCI hardware database that Linux maintains
by entering update-pciids (generally found in /sbin) at the command line and rerun
the previous lspci command.
If your graphics card is from NVIDIA and it is listed in http://developer.nvidia.com/
cuda-gpus, your GPU is CUDA-capable.
The Release Notes for the CUDA Toolkit also contain a list of supported products.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 4
Pre-installation Actions
To determine which distribution and release number you're running, type the following
at the command line:
$ uname -m && cat /etc/*release
You should see output similar to the following, modified for your particular system:
x86_64
Red Hat Enterprise Linux Workstation release 6.0 (Santiago)
The x86_64 line indicates you are running on a 64-bit system. The remainder gives
information about your distribution.
If an error message displays, you need to install the development tools from your Linux
distribution or obtain a version of gcc and its accompanying toolchain from the Web.
Distribution-specific packages and repositories are not provided for Redhat 5. For
Redhat 5, the stand-alone installer must be used.
Standalone installers are not provided for the ARMv7 release. For both native ARMv7
as well as cross development, the toolkit must be installed using the distribution-
specific installer. See the Cross-build Environment for ARM installation section for
more details.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 5
Pre-installation Actions
Download Verification
The download can be verified by comparing the MD5 checksum posted at http://
developer.nvidia.com/cuda-downloads/checksums with that of the downloaded
file. If either of the checksums differ, the downloaded file is corrupt and needs to be
downloaded again.
To calculate the MD5 checksum of the downloaded file, run the following:
$ md5sum <file>
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 6
Pre-installation Actions
$ sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 7
Chapter 3.
PACKAGE MANAGER INSTALLATION
3.1. Overview
The Package Manager installation interfaces with your system's package management
system. When using RPM or Deb, the downloaded package is a repository package.
Such a package only informs the package manager where to find the actual installation
packages, but will not install them.
If those packages are available in an online repository, they will be automatically
downloaded in a later step. Otherwise, the repository package also installs a local
repository containing the installation packages on the system. Whether the repository is
available online or installed locally, the installation procedure is identical and made of
several steps.
Distribution-specific instructions detail how to install CUDA:
‣ Redhat/CentOS
‣ Fedora
‣ SLES
‣ OpenSUSE
‣ Ubuntu
‣ L4T
Finally, some helpful package manager capabilities are detailed.
These instructions are for native development only. For cross development, see the
Cross-build environment for ARM section.
3.2. Redhat/CentOS
1. Perform the pre-installation actions.
2. Satisfy DKMS dependency
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 8
Package Manager Installation
The NVIDIA driver RPM packages depend on other external packages, such as
DKMS and libvdpau. Those packages are only available on third-party repositories,
such as EPEL. Any such third-party repositories must be added to the package
manager repository database before installing the NVIDIA driver RPM packages, or
missing dependencies will prevent the installation from proceeding.
3. Address custom xorg.conf, if applicable
The driver relies on an automatically generated xorg.conf file at /etc/X11/xorg.conf.
If a custom-built xorg.conf file is present, this functionality will be disabled and the
driver may not work. You can try removing the existing xorg.conf file, or adding the
contents of /etc/X11/xorg.conf.d/00-nvidia.conf to the xorg.conf file. The xorg.conf
file will most likely need manual tweaking for systems with a non-trivial GPU
configuration.
4. Install repository meta-data
$ sudo rpm --install cuda-repo-<distro>-<version>.<architecture>.rpm
5. Clean Yum repository cache
$ sudo yum clean expire-cache
6. Install CUDA
$ sudo yum install cuda
If the i686 libvdpau package dependency fails to install, try using the following
steps to fix the issue:
$ yumdownloader libvdpau.i686
$ sudo rpm -U --oldpackage libvdpau*.rpm
7. Add libcuda.so symbolic link, if necessary
The libcuda.so library is installed in the /usr/lib{,64}/nvidia directory. For pre-
existing projects which use libcuda.so, it may be useful to add a symbolic link from
libcuda.so in the /usr/lib{,64} directory.
8. Perform the post-installation actions.
3.3. Fedora
1. Perform the pre-installation actions.
2. Address custom xorg.conf, if applicable
The driver relies on an automatically generated xorg.conf file at /etc/X11/xorg.conf.
If a custom-built xorg.conf file is present, this functionality will be disabled and the
driver may not work. You can try removing the existing xorg.conf file, or adding the
contents of /etc/X11/xorg.conf.d/00-nvidia.conf to the xorg.conf file. The xorg.conf
file will most likely need manual tweaking for systems with a non-trivial GPU
configuration.
3. Satisfy Akmods dependency
The NVIDIA driver RPM packages depend on the Akmods framework which is
provided by the RPMFusion free repository. The RPMFusion free repository must
be added to the package manager repository database before installing the NVIDIA
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 9
Package Manager Installation
driver RPM packages, or missing dependencies will prevent the installation from
proceeding.
4. Install repository meta-data
$ sudo rpm --install cuda-repo-<distro>-<version>.<architecture>.rpm
5. Clean Yum repository cache
$ sudo yum clean expire-cache
6. Install CUDA
$ sudo yum install cuda
The CUDA driver installation may fail if the RPMFusion non-free repository is
enabled. In this case, CUDA installations should temporarily disable the RPMFusion
non-free repository:
$ sudo yum --disablerepo="rpmfusion-nonfree*" install cuda
If a system has installed both packages with the same instance of yum, some driver
components may be missing. Such an installation can be corrected by running:
$ sudo yum install cuda-drivers
If the i686 libvdpau package dependency fails to install, try using the following
steps to fix the issue:
$ yumdownloader libvdpau.i686
$ sudo rpm -U --oldpackage libvdpau*.rpm
7. Add libcuda.so symbolic link, if necessary
The libcuda.so library is installed in the /usr/lib{,64}/nvidia directory. For pre-
existing projects which use libcuda.so, it may be useful to add a symbolic link from
libcuda.so in the /usr/lib{,64} directory.
8. Perform the post-installation actions.
3.4. SLES
1. Perform the pre-installation actions.
2. Install repository meta-data
$ sudo rpm --install cuda-repo-<distro>-<version>.<architecture>.rpm
3. Refresh Zypper repository cache
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 10
Package Manager Installation
3.5. OpenSUSE
1. Perform the pre-installation actions.
2. Install repository meta-data
$ sudo rpm --install cuda-repo-<distro>-<version>.<architecture>.rpm
3. Refresh Zypper repository cache
$ sudo zypper refresh
4. Install CUDA
$ sudo zypper install cuda
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 11
Package Manager Installation
3.6. Ubuntu
1. Perform the pre-installation actions.
2. Install repository meta-data
When using a proxy server with aptitude, ensure that wget is set up to use the
same proxy settings before installing the cuda-repo package.
3.7. L4T
1. Perform the pre-installation actions.
2. Install repository meta-data
$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
3. Update the Apt repository cache
$ sudo apt-get update
4. Install CUDA Toolkit
$ sudo apt-get install cuda-toolkit-6-5
5. Add the user to the video group
$ sudo usermod -a -G video <username>
6. Perform the post-installation actions.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 12
Package Manager Installation
3.8.1. Available Packages
The recommended installation package is the cuda package. This package will install the
full set of other CUDA packages required for native development and should cover most
scenarios.
The cuda package installs all the available packages for native developments. That
includes the compiler, the debugger, the profiler, the math libraries,... For x86_64
patforms, this also include NSight Eclipse Edition and the visual profiler It also includes
the NVIDIA driver package.
On supported platforms, the cuda-cross-armhf package installs all the packages
required for cross-platform development on ARMv7. The libraries and header files of
the ARMv7 display driver package are also installed to enable the cross compilation
of ARMv7 applications. The cuda-cross-armhf package does not install the native
display driver.
The packages installed by the packages above can also be installed individually by
specifying their names explicitly. The list of available packages be can obtained with:
$ yum --disablerepo="*" --enablerepo="cuda*" list available # RedHat & Fedora
$ zypper packages -r cuda # OpenSUSE & SLES
$ cat /var/lib/apt/lists/*cuda*Packages | grep "Package:" # Ubuntu
3.8.2. Package Upgrades
The cuda package points to the latest stable release of the CUDA Toolkit. When a new
version is available, use the following commands to upgrade the toolkit and driver:
$ sudo yum install cuda # RedHat & Fedora
$ sudo zypper install cuda # OpenSUSE & SLES
$ sudo apt-get install cuda # Ubuntu
Some desktop environments, such as GNOME or KDE, will display an notification alert
when new packages are available.
To avoid any automatic upgrade, and lock down the toolkit installation to the X.Y
release, install the cuda-X-Y or cuda-cross-armhf-X-Y package.
Side-by-side installations are supported. For instance, to install both the X.Y CUDA
Toolkit and the X.Y+1 CUDA Toolkit, install the cuda-X.Y and cuda-X.Y+1 packages.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 13
Chapter 4.
RUNFILE INSTALLATION
This section describes the installation and configuration of CUDA when using the
standalone installer.
4.1. Pre-installation Setup
Before the stand-alone installation can be run, perform the pre-installation actions.
4.2. Prerequisites
If you have already installed a standalone CUDA driver and desire to keep using it,
you need to make sure it meets the minimum version requirement for the toolkit. This
requirement can be found in the CUDA Toolkit release notes. With many distributions,
the driver version number can be found in the graphical interface menus under
Applications > System Tools > NVIDIA X Server Settings.. On the
command line, the driver version number can be found by running /usr/bin/nvidia-
settings.
4.3. Contents
The standalone installer can install any combination of the NVIDIA Driver (that includes
the CUDA Driver), the CUDA Toolkit, or the CUDA Samples. If needed, each individual
installer can be extracted by using the -extract=/absolute/path/to/extract/
location/. The extraction path must be an absolute path.
The CUDA Toolkit installation includes a read-only copy of the CUDA Samples. The
read-only copy is used to create a writable copy of the CUDA Samples at some other
location at any point in time. To create this writable copy, use the cuda-install-
samples-6.5.sh script provided with the toolkit. It is equivalent to installing the
CUDA Samples with the standalone installer.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 14
Runfile Installation
4.5. Installation
To install any combination of the driver, toolkit, and the samples, simply execute
the .run script. The installation of the driver requires the script to be run with root
privileges. Depending on the target location, the toolkit and samples installations may
also require root privileges.
By default, the toolkit and the samples will install under /usr/local/cuda-6.5 and
$(HOME)/NVIDIA_CUDA-6.5_Samples, respectively. In addition, a symbolic link
is created from /usr/local/cuda to /usr/local/cuda-6.5. The symbolic link is
created in order for existing projects to automatically make use of the newly installed
CUDA Toolkit.
If the target system includes both an integrated GPU (iGPU) and a discrete GPU
(dGPU), the --no-opengl-libs option must be used. Otherwise, the openGL library used
by the graphics driver of the iGPU will be overwritten and the GUI will not work. In
addition, the xorg.conf update at the end of the installation must be declined.
Installing Mesa may overwrite the /usr/lib/libGL.so that was previously installed
by the NVIDIA driver, so a reinstallation of the NVIDIA driver might be required after
installing these libraries.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 15
Runfile Installation
Once this is done, the machine must be rebooted and the installation attempted again.
4.7. Extra Libraries
If you wish to build all the samples, including those with graphical rather than
command-line interfaces, additional system libraries or headers may be required.
While every Linux distribution is slightly different with respect to package names and
package installation procedures, the libraries and headers most likely to be necessary are
OpenGL (e.g., Mesa), GLU, GLUT, and X11 (including Xi, Xmu, and GLX).
On Ubuntu, those can be installed as follows:
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev
libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
4.8. Verifications
Check that the device files/dev/nvidia* exist and have the correct (0666) file
permissions. These files are used by the CUDA Driver to communicate with the kernel-
mode portion of the NVIDIA Driver. Applications that use the NVIDIA driver, such as
a CUDA application or the X server (if any), will normally automatically create these
files if they are missing using the setuid nvidia-modprobe tool that is bundled with the
NVIDIA Driver. Some systems disallow setuid binaries, however, so if these files do not
exist, you can create them manually either by running the command nvidia-smi as
root at boot time or by using a startup script such as the one below:
#!/bin/bash
/sbin/modprobe nvidia
else
exit 1
fi
/sbin/modprobe nvidia-uvm
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 16
Runfile Installation
4.10. Post-installation Setup
Once the stand-alone installation is complete, be sure to perform the post-installation
actions.
4.11. Uninstallation
To uninstall the CUDA Toolkit, run the uninstallation script provided in the bin
directory of the toolkit. By default, it is located in /usr/local/cuda-6.5/bin:
$ sudo /usr/local/cuda-6.5/bin/uninstall_cuda_6.5.pl
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 17
Chapter 5.
CROSS-BUILD ENVIRONMENT FOR ARM
On Ubuntu 14.04,
$ sudo dpkg --add-architecture armhf
$ sudo apt-get update
3. Install repository meta-data
When using a proxy server with aptitude, ensure that wget is set up to use the
same proxy settings before installing the cuda-repo package.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 18
Cross-build Environment for ARM
5.2. Cross Samples
When cross-compiling an ARM CUDA application, nvcc must be able to find any
libraries used, or be told to ignore missing symbols. One of the following methods
should be chosen when cross-compiling the CUDA Samples. Regardless of which option
is chosen, ARMv7=1 should always be used.
TARGET_FS
The most reliable method to cross-compile the CUDA Samples is to use the TARGET_FS
variable. To do so, mount the target's filesystem on the host, say at /mnt/target. This is
typically done using exportfs. In cases where exportfs is unavailable, it is sufficient
to copy the target's filesystem to /mnt/target. To cross-compile a sample, execute:
$ make ARMv7=1 TARGET_FS=/mnt/target
Copying Libraries
If the TARGET_FS option is not available, the libraries used should be copied from the
target system to the host system, say at /opt/target/libs. If the sample uses GL, the
GL headers must also be copied, say at /opt/target/include. The linker must then
be told where the libraries are with the -rpath-link and/or -L options. For samples
which use GL, HEADER_SEARCH_PATH must be set. For example, to cross-compile a
sample which uses GL, execute:
$ make ARMv7=1 \
EXTRA_LDFLAGS="-rpath-link=/opt/target/libs -L/opt/target/libs" \
GLPATH=/opt/target/libs \
HEADER_SEARCH_PATH=/opt/target/include
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 19
Chapter 6.
POST-INSTALLATION ACTIONS
Some actions must be taken after installing the CUDA Toolkit and Driver before they can
be completely used:
‣ Setup evironment variables.
‣ Install a writable copy of the CUDA Samples.
‣ Verify the installation.
6.1. Environment Setup
The PATH variable needs to include /usr/local/cuda-6.5/bin
The LD_LIBRARY_PATH variable needs to contain /usr/local/cuda-6.5/lib64 on a
64-bit system, and /usr/local/cuda-6.5/lib on a 32-bit ARM system
‣ To change the environment variables for 64-bit operating systems:
$ export PATH=/usr/local/cuda-6.5/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH
‣ To change the environment variables for 32-bit ARM operating systems:
$ export PATH=/usr/local/cuda-6.5/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib:$LD_LIBRARY_PATH
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 20
Post-installation Actions
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 21
Post-installation Actions
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 22
Post-installation Actions
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 23
Chapter 7.
FREQUENTLY ASKED QUESTIONS
The RPM packages don't support custom install locations though the package managers
(Yum and Zypper), but it is possible to install the RPM packages in custom locations
using rpm's --relocate parameter:
$ rpm --install --relocate /usr/local/cuda-6.5=/my/new/toolkit rpmpackage.rpm
The Deb packages don't support custom install locations through the package manager
(apt), but it is possible to install the Deb packages in custom locations using dpkg's --
instdir parameter:
$ dpkg --instdir=/my/new/toolkit --install debpackage.deb
For RPM and Deb packages, you will need to install the packages in the correct order
of dependency; normally the package managers take care of this automatically. For
example, if package "foo" has a dependency on package "bar", you should install
package "bar" first, and package "foo" second. You can check the dependencies of a RPM
or Deb package as follows:
$ rpm -qRp rpmpackage.rpm
$ dpkg -I debpackage.deb | grep Depends
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 24
Frequently Asked Questions
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 25
Frequently Asked Questions
Section "Device"
Identifier "Device0"
Driver "driver_name"
VendorName "vendor_name"
BusID "bus_id"
EndSection
The exact details of what you will need to add differ on a case-by-case basis. For
example, if you have two NVIDIA GPUs and you want the first GPU to be used for
display, you would replace "driver_name" with "nvidia", "vendor_name" with "NVIDIA
Corporation" and "bus_id" with the Bus ID of the GPU.
The Bus ID will resemble "PCI:00:02.0" and can be found by running lspci.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 26
Chapter 8.
ADDITIONAL CONSIDERATIONS
Now that you have CUDA-capable hardware and the NVIDIA CUDA Toolkit installed,
you can examine and enjoy the numerous included programs. To begin using CUDA to
accelerate the performance of your own applications, consult the CUDA C Programming
Guide, located in /usr/local/cuda-6.5/doc.
A number of helpful development tools are included in the CUDA Toolkit to assist
you as you develop your CUDA programs, such as NVIDIA® Nsight™ Eclipse Edition,
NVIDIA Visual Profiler, cuda-gdb, and cuda-memcheck.
For technical support on programming questions, consult and participate in the
developer forums at http://developer.nvidia.com/cuda/.
www.nvidia.com
NVIDIA CUDA Getting Started Guide for Linux DU-05347-001_v6.5 | 27
Notice
ALL NVIDIA DESIGN SPECIFICATIONS, REFERENCE BOARDS, FILES, DRAWINGS,
DIAGNOSTICS, LISTS, AND OTHER DOCUMENTS (TOGETHER AND SEPARATELY,
"MATERIALS") ARE BEING PROVIDED "AS IS." NVIDIA MAKES NO WARRANTIES,
EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE
MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF
NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR
PURPOSE.
Information furnished is believed to be accurate and reliable. However, NVIDIA
Corporation assumes no responsibility for the consequences of use of such
information or for any infringement of patents or other rights of third parties
that may result from its use. No license is granted by implication of otherwise
under any patent rights of NVIDIA Corporation. Specifications mentioned in this
publication are subject to change without notice. This publication supersedes and
replaces all other information previously supplied. NVIDIA Corporation products
are not authorized as critical components in life support devices or systems
without express written approval of NVIDIA Corporation.
Trademarks
NVIDIA and the NVIDIA logo are trademarks or registered trademarks of NVIDIA
Corporation in the U.S. and other countries. Other company and product names
may be trademarks of the respective companies with which they are associated.
Copyright
© 2009-2014 NVIDIA Corporation. All rights reserved.
www.nvidia.com