nvblas for Jetson TX2 or another way to run Armadillo code with cublas

I have the Jetson TX2 running Ubuntu 16. It was hard to find the cuda toolkit package for my platform as all the easy-to-find packages are for x86 or 32-bit arm. Eventually I found cuda_6.5.14_linux_aarch64_native.

But cuda Toolkit is up to version 9, right?
Where is version 9 for 64-bit arm?
Does it contain nvblas or am I out of luck if I want to drop in an accelerator for my existing Armadillo code?

Use JetPack3.2. You can uncheck everything except CUDA on the Jetson and install this way (it uses wired ethernet, you can skip the micro-B USB for package installs…be sure to enter the IP address though where prompted). JetPack has all of the additional packages and some packages also for the Ubuntu host PC.

I followed the install directions and have libnvbas v9. I put it on my system configured as a “production system” along with libcublas and installed my linear algebra app linked to nvblas instead of ubuntu’s bias library.

I set up a config file for nvblas and now my app complains:

[NVBLAS] No Gpu available

The only config setting which seems like it might help it find the GPU is NVBLAS_GPU_LIST which I have set to ALL.

I am guessing some other config file or library is required on my production system and its simply not logging what is missing. I’m not going to blindly install tons of Nvidia packages since I want a minimal production system for which I can carefully control deployment and configuration changes.

What might be missing? I could not find anything obvious in the nvblas and cudablas documents.

EDIT:

The lspci command returns nothing, even on my development system which has all the Nvidia extra packages installed. Maybe the nvblas library assumes the GPU is connected via PCI but on the TX2 it is connected via some other mechanism? (Nvidia architecture documentation says it uses a “proprietary interconnect fabric.” That doesn’t sound like PCI.

I don’t know the answer, but I’m wondering if the software is testing for GPU via PCIe-based queries. These don’t exist on a Jetson because the GPU is wired directly to the memory controller.

Hi,

Not sure if I catch your question correctly.

libcublas.so is included in the CUDA toolkit.
Please use JetPack to install CUDA toolkit since the compatible driver is only available in the JetPack OS image.

For our latest JetPack3.2, CUDA toolkit version is 9.0.

Thanks.

The question is “How can I make nvblas find the GPU on the TX2?” libcublas is installed. NVBLAS reports, “No Gpu Available”

Assuming the “JetPack OS image” is what came pre-installed on the TX2 then it was already installed, right? What is the name of the “compatible driver” so I can look to see if it is installed? Is it a kernel module which can be found with lsmod? There is already a tegra PCI module installed but, as discussed, PCI probably isn’t being used in this hardware.

R27.0.1 was the default L4T shipped originally. Currently it is at R28.2 (these are just Ubuntu 16.04 with hardware accelerated files added). FYI, JetPack itself is never installed to a Jetson…it gets installed to the PC host.

JetPack can act as a front end to flash…but it can also add packages. I think the default is to be without extra packages…these are an end user preference.

Drivers might be integrated, and not always a module (especially in embedded where the direct branch instruction can’t reach as far as on a PC). To see existing config of a Jetson:

zcat /proc/config.gz

You’ll need to use JetPack to install those extra packages. You should flash first to R28.2 (via JetPack3.2). Flash takes place first (if checked) over the micro-B USB cable. Packages are added after flash (if checked) over the wired ethernet cable.

Hi,

Please re-flash your device with our latest JetPack.
https://developer.nvidia.com/embedded/jetpack

The OS version is updated and it may be incompatible to the package installed from newer JetPack.
To make sure all the image/package are in the same pace, please flash/install them from the same JetPack.

NvBlas is part of CUDA toolkit and you can find it in the /usr/local/cuda-[version]/lib64.

Thanks.

I reflashed. It wiped away all my work on the file system. I am recreating the system configuration and will report back once I have attempted to use nvblas.

After the reflash to latest firmware I get the same message:

[NVBLAS] No Gpu available

Hi,

We want to check this issue and need to reproduce this issue internally.
Could you share your sample with us?

Thanks.

It was permissions. You have to add you user to the video group:

sudo usermod --append -G video myuser

Don’t forget that you need “-a” option to append…else it will replace your existing groups. “sudo usermod -a -G video myuser”.