NVIDIA TV 上的 Ubuntu - CUDA 驱动程序版本对于 CUDA 运行时版本不足
Posted
技术标签:
【中文标题】NVIDIA TV 上的 Ubuntu - CUDA 驱动程序版本对于 CUDA 运行时版本不足【英文标题】:Ubuntu at NVIDIA TV - CUDA driver version is insufficient for CUDA runtime version 【发布时间】:2017-04-14 09:27:01 【问题描述】:我想使用 NVIDIA TV 作为设备来测试一些 CUDA 代码。我曾尝试编写 android + CUDA 代码,但在链接时遇到了与“硬浮动”与“软浮动”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 驱动程序版本对于 CUDA 运行时版本不足”的错误。
我已经在互联网上搜索要安装到此架构的 CUDA / NVIDIA 驱动程序,但我找不到任何驱动程序。
我应该放弃这台机器,买一块 TX1 板吗? 是否可以在其上安装 NVIDIA CUDA/图形驱动程序(如何) 是否需要重建内核 我应该靠运气为这个设备开发 Android+CUDA 吗?【问题讨论】:
【参考方案1】:正如官方 devtalk 论坛上的一位版主所说,Nvidia 并未正式支持 Shield TV:
Ubuntu on Shield 不受正式支持
见:Cuda for Nvidia Shield TV
你应该看看NVIDIA CodeWorks for Android 这是他们官方的Android原生开发工具包:
适用于 Android 1R5 的 NVIDIA CodeWorks 是一款专业级解决方案,提供一整套具有调试、分析和系统跟踪功能的 GPU 和 CPU 工具,以及用于 Android 开发的配套 SDK 和库 - 不仅适用于 Tegra 驱动的设备。
在同一页面上提供完整的操作系统和平台支持。
【讨论】:
您的意思是无法在此设备上安装驱动程序?我看到人们能够在 Ubuntu @NvidiaTv 上运行 CUDA。 我在将 CUDA 代码与 Android / Arm 库链接时遇到了问题。 libcudart.a 是用“硬浮点”构建的,尽管 Android 库需要“软浮点”。你知道用于 aarch64/arm 的带有“软浮点”标志的 CUDA 库版本吗? 我不知道是否 100% 不可能在此设备上安装常规驱动程序,但由于 Nvidia 不完全支持它,我自己认为它是一种 hack。不幸的是,我没有在 Android 上使用 CUDA 的经验,但是如果您有安装问题(而不是编程问题),那么这对于 SO 来说是题外话。您应该尝试 Nvidia devtalk 论坛以获得更多帮助。 我再次尝试,发现 CUDA 附带的示例应用程序在设备上运行良好。我会进一步了解这个问题并在这里更新。【参考方案2】:我再次尝试,发现示例 CUDA 应用程序在 Ubuntu Installed NVIDIA TV 上运行良好。因此,在 NVIDIA TV 上安装 Ubuntu,然后在其上安装 JetPack 后,就可以运行 CUDA 应用程序了。
我发现问题在于我正在针对不同的设备运行时编译 CUDA 代码。当我像这样编译 .cu 文件时,应用程序成功运行,没有任何“不足”错误。
nvcc -arch=sm_52 example.cu -o example
正如所见,我已经指定了与 NVIDIA TV 匹配的架构,并且运行良好。
【讨论】:
以上是关于NVIDIA TV 上的 Ubuntu - CUDA 驱动程序版本对于 CUDA 运行时版本不足的主要内容,如果未能解决你的问题,请参考以下文章