Ubuntu 在 NVIDIA TV - CUDA 驱动程序版本不足以支持 CUDA 运行时版本

Ubuntu at NVIDIA TV - CUDA driver version is insufficient for CUDA runtime version

我想使用 NVIDIA TV 作为测试一些 CUDA 代码的设备。我曾尝试编写 Android + CUDA 代码,但我在链接时遇到了与 "hard float" vs "soft float" arm/android/cuda 库相关的问题。

所以,我已经在 NVIDIA TV 上安装了 Ubuntu Linux。

ubuntu@tegra-ubuntu:~/devel/cuda/hello$ uname -a
Linux tegra-ubuntu 3.10.96 #1 SMP PREEMPT Thu Oct 13 05:30:55 EDT 2016 aarch64 aarch64 aarch64 GNU/Linux

我还使用 JetPack for JX1 设备将 CUDA 推送到设备。

即使我尝试 运行 一个 "Hello, World!" 代码,它只执行 "cudaFree(0)",但我确实得到了 "CUDA driver version is insufficient for CUDA runtime version".

的错误

我在互联网上搜索了 CUDA / NVIDIA 驱动程序来安装到这个架构,但我找不到任何东西。

Shield TV 并未得到 Nvidia 的正式支持,正如官方 devtalk 论坛上的版主所说:

Ubuntu on Shield is not formally supported

参见:Cuda for Nvidia Shield TV

你应该看看 NVIDIA CodeWorks for Android ,这是他们 Android 的官方原生开发工具包:

NVIDIA CodeWorks for Android 1R5 is a professional grade solution providing a comprehensive set of GPU and CPU tools with debugging, profiling and system trace capabilities and accompanying SDKs and libraries for Android development - not only on Tegra powered devices.

完整的 OS 和平台支持可在同一页面上获得。

我又进行了一次尝试,发现示例 CUDA 应用程序在 Ubuntu 安装的 NVIDIA TV 上 运行 运行良好。所以在 NVIDIA TV 上安装 Ubuntu 然后安装 JetPack 后,可以 运行 CUDA 应用程序。

我发现问题是我在 运行 时针对不同的设备编译 CUDA 代码。当我像这样编译 .cu 文件时,应用程序 运行 成功,没有任何 "insufficient" 错误。

nvcc -arch=sm_52 example.cu -o example

正如所见,我已经指定了与 NVIDIA TV 相匹配的架构,并且运行良好。