NVIDIA Drive PX2 Hardware - AD-EYE/AD-EYE_Core GitHub Wiki

NVIDIA Drive PX2

There are two releases of the Drive PX2 (DPX2). We posess the DPX2 AutoChauffeur (P2379) version.
Hardware Connectors
NVIDIA DRIVE PX 2 Archive
DriveWorks SDK Reference Documentation
Tegra-AURIX Communication on DRIVE PX 2

General Specification

Computing:

2 Tegra X2 SoCs

2 Pascal GPUs

CPU (Tegra X2):

2 x 4 ARM Cortex A57 cores

2 x 2 Denver cores

GPU:

2 x Parker GPGPU (Tegra X2)

2 x dGPU (descrete GPU)

Memory:

6.3 GB

Storage:

43.2 GB

Connectors:

An overview of the available connectors together with information on how to connect utilities can be found here.

Other information regarding the Drive PX2 platform can be found here.

AURIX Microcontroller

The NVIDIA DRIVE™ PX 2 open AI car computing platform integrates with Elektrobit AUTOSAR 4.x-compliant EB tresos software, which runs on the NVIDIA® Tegra® processor and the AURIX 32-bit TriCore Infineon microcontroller.

Tegra X2 (Parker series)

The board has two Tegra X2 (Parker) System on Chips (SoCs). Each SoC has a coherent multicore processor that has 2 NVIDIA Denver 2 ARM cores and 4 ARM Cortex-A57 cores. The Denver 2 cores each have 128KB Instruction and 64KB Data level 1 cache and 2MB shared level 2 unified cache.

On each SoC is also a GPU implemented which is built on NVIDIA's Pascal architecture. The GPU has 256 CUDA cores and supports all the same features as discrete NVIDIA GPUs.

The SoCs also as other peripherals such as Audio Processing Engine (APE), Always-On Sensor Processing (AON/SPE), Video Decoder and Encoder, Boot and Power Management Processor (BPMP), Safty and Camera Engine (SCE) and more. A functional block diagram and more detailed information could be found in the Technical Reference Manual for the Parker series.

Graphical Processing Units

There are 4 GPUs present on the platform. One in each Tegra X2 SoC and two discrete GPUs both built on NVIDIAs Pascal architecture.

Useful information could be retrieved by running deviceQuery with the following commands in the terminal:

sudo cd /usr/local/cuda/samples/1_Utilities/deviceQuery # go to the folder where src code is
sudo make # compile script
sudo ./deviceQuery # run it

The table below summarizes some of the parameters generated by deviceQuery:

Parameter Discrete GPU Integrated GPU (Tegra X2)
Total amount of global memory 3840 MBytes 6402 MBytes (Shared with CPU)
Multiprocessors (MP) 9 2
CUDA Cores/MP 128 128
CUDA Cores (total) 1152 256
GPU Max Clock rate 1290 MHz (1.29 GHz) 1275 MHz (1.27 GHz)
Memory Clock rate 3003 Mhz 1600 Mhz
Memory Bus Width 128-bit 128-bit
L2 Cache Size 1048576 bytes 524288 bytes
Total amount of constant memory 65536 bytes 65536 bytes
Total amount of shared memory per block: 49152 bytes 49152 bytes
Total number of registers available per block 65536 32768
Warp size 32 32
Maximum number of threads per multiprocessor 2048 2048
Maximum number of threads per block 1024 1024

The full result is stated below:

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 2 CUDA Capable device(s)

Device 0: "DRIVE PX 2 AutoChauffeur"
  CUDA Driver Version / Runtime Version          9.2 / 9.2
  CUDA Capability Major/Minor version number:    6.1
  Total amount of global memory:                 3840 MBytes (4026466304 bytes)
  ( 9) Multiprocessors, (128) CUDA Cores/MP:     1152 CUDA Cores
  GPU Max Clock rate:                            1290 MHz (1.29 GHz)
  Memory Clock rate:                             3003 Mhz
  Memory Bus Width:                              128-bit
  L2 Cache Size:                                 1048576 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     No
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device supports Compute Preemption:            Yes
  Supports Cooperative Kernel Launch:            Yes
  Supports MultiDevice Co-op Kernel Launch:      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 4 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

Device 1: "NVIDIA Tegra X2"
  CUDA Driver Version / Runtime Version          9.2 / 9.2
  CUDA Capability Major/Minor version number:    6.2
  Total amount of global memory:                 6402 MBytes (6712545280 bytes)
  ( 2) Multiprocessors, (128) CUDA Cores/MP:     256 CUDA Cores
  GPU Max Clock rate:                            1275 MHz (1.27 GHz)
  Memory Clock rate:                             1600 Mhz
  Memory Bus Width:                              128-bit
  L2 Cache Size:                                 524288 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 32768
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     No
  Integrated GPU sharing Host Memory:            Yes
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device supports Compute Preemption:            Yes
  Supports Cooperative Kernel Launch:            Yes
  Supports MultiDevice Co-op Kernel Launch:      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 0 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
> Peer access from DRIVE PX 2 AutoChauffeur (GPU0) -> NVIDIA Tegra X2 (GPU1) : No
> Peer access from NVIDIA Tegra X2 (GPU1) -> DRIVE PX 2 AutoChauffeur (GPU0) : No

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.2, CUDA Runtime Version = 9.2, NumDevs = 2
Result = PASS
⚠️ **GitHub.com Fallback** ⚠️