Articles of GPU

是否可以在应用程序之间共享Cuda上下文?

我想在两个独立的Linux进程(使用POSIX消息队列,我已经设置)之间传递Cuda环境。 使用cuCtxPopCurrent()和cuCtxPushCurrent() ,我可以得到上下文指针,但是这个指针在我调用该函数的进程的内存中被引用,并且在进程之间传递是没有意义的。 我正在寻找其他解决scheme。 我到目前为止的想法是: 尝试深层复制CUcontext结构,然后传递副本。 看看我能否find一个共享内存的解决scheme,我的Cuda指针都放在那里,这样两个进程都可以访问它们。 将这些stream程合并成一个程序。 在Cuda 4.0中,我可以切换到更好的上下文共享。 我不确定选项(1)是否可能,也不能确定(2)是否可用。 (3)如果我想把东西变成通用的(这是在一个劫持垫片内),它并不是一个真正的select。 (4)我会看Cuda 4.0,但我不确定它是否能在那里工作。 谢谢!

如何在CentOS Linux上检查GPU

build议在Linux上用命令lspci | grep VGAfindGPU lspci | grep VGA 。 它在Ubuntu上工作正常,但是当我尝试在CentOS上使用它时,它说lspci命令没有find。 我怎样才能在CentOS上查看GPU卡。 请注意,我不是机器的pipe理员,我只能从命令行远程使用它。 我打算使用GPU作为该机器上的GPGPU,但首先我需要检查它是否有一个。

如何禁用或更改在Linux下的GPU的超时限制?

有没有人知道如何禁用或更改Ubuntu 12.10下的CUDA内核的超时限制? (使用当前版本的Windows,可以在registry中设置超时限制。) 请告诉我,如果没有可能与Ubuntu做到这一点。 我以前的search唯一的结果如下: 运行没有graphics显示的CUDA内核被连接到GPU 将内核分成较小的内核以避免超出时间限制 这两种解决scheme对我来说都是没有select的,因为我需要为我的应用程序进行graphics显示,并且在内核执行期间,已经没有任何线程依次运行了。 而分裂单线程将花费数月的工作。 请不要进一步询问这些方向的细节。 感谢您的帮助提前。

在Windows中运行时,CUDA性能会受损

当我在Windows 7中运行我的CUDA应用程序(与Linux相比)时,我注意到了一个巨大的性能问题。 我想我可能知道放缓的地方:无论出于何种原因,Windows Nvidia驱动程序(版本331.65)在通过运行时API调用时不会立即派发CUDA内核。 为了说明这个问题,我描述了mergeSort应用程序(来自CUDA 5.5附带的例子)。 首先考虑在Linux中运行时的内核启动时间: 接下来,考虑在Windows中运行时的启动时间: 这篇文章build议,这个问题可能与Windows驱动程序批处理内核启动有关。 有反正我可以禁用这个批处理? 我正在使用GTX 690 GPU,Windows 7和Nvidia驱动程序版本331.65。

如何使用辅助GPU重写Windows上的CUDA内核执行时间限制?

来自Nvidia的网站,它解释了超时问题: 问:最大的内核执行时间是多less? 在Windows上,单个GPU程序启动的最大运行时间约为5秒。 超过这个时间限制通常会导致通过CUDA驱动程序或CUDA运行时报告的启动失败,但在某些情况下可能会挂起整个机器,需要硬重置。 这是由Windows“看门狗”定时器引起的,如果它们的运行时间超过了最大允许时间,则会导致使用主graphics适配器的程序超时。 出于这个原因,build议CUDA在未连接到显示器的GPU上运行,并且没有将Windows桌面扩展到它。 在这种情况下,系统必须至less包含一个用作主要graphics适配器的NVIDIA GPU。 来源: https : //developer.nvidia.com/cuda-faq 那么看起来,nvidia认为,或者至less强烈地暗示,具有多(nvidia)gpus,并且具有适当的configuration,可以防止这种情况发生? 但是,如何? 到目前为止,我尝试了很多方法,但是在GK110 GPU上仍然存在令人讨厌的超时问题:(1)插入次PCIE 16X插槽; (2)没有连接到任何监视器(3)被设置为在驱动器控制面板中使用作为一个独家的PhysX卡(由其他人推荐),但封锁仍然在那里。

在Mingw Nvidia SDK上编译OpenCL

使用Mingw和Nvidia SDK可以编译OpenCL吗? 我知道,它没有正式的支持,但没有任何意义。 不是作为静态链接库提供的库吗? 我的意思是一旦用任何可能的编译器进行编译,并成功链接,那么问题是什么? 我设法编译并成功地将我的代码链接到Nvidia SDK提供的OpenCL库,但是可执行程序在clGetPlatformIDs这是我的代码中第一个OpenCL调用)抛出Segmentation Fault。 这是我的编译命令 x86_64-w64-mingw32-g++ -std=c++11 File.cpp \ -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\x64" \ -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" \ -gcoff -lOpenCL -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 \ -lshell32 -lole32 -loleaut32 \ -luuid -lodbc32 -lodbccp32 -luser32 -lgdi32 -lmingwex -m64 \ -DWIN32 -D_DEBUG -D_CONSOLE 请注意,这些库是从示例OpenCL代码的.sln文件中获取的。 我试过这些库的各种组合,似乎没有任何工作。 还有一种方法可以使用Mingw进行编译并使用别的链接进行链接? 我不确定别的可能是什么。

CUDA错误后重置GPU和驱动程序

有时,我的CUDA程序中的错误会导致桌面graphics中断(在Windows中)。 通常情况下,屏幕保持一定的可读性,但是当graphics发生变化时,例如拖动窗口时,会出现大量半随机彩色像素和小块。 我试图通过更改桌面分辨率来重置GPU和驱动程序,但是这并没有帮助。 我发现的唯一的修复方法是重新启动计算机。 有没有一个程序,或者我可以使用一些技巧,让驱动程序和GPU重置,而无需重新启动? 背景: 我有1.0,1.1,1.3和2.0卡,但现在只有1.1和2.0卡。 我已经看到1.0和1.1的问题。 我很确定我已经看到它在1.3。 我不确定2.0。 内存保护是否在1.3左右增加了一些时间? 我几乎可以肯定,这不是由于硬件不稳定,因为这些问题似乎是由我的代码中的错误触发的,并且在修复错误时消失了。 运行完成的代码时,卡片已经稳定。 在我的1.1卡上看到这个问题之后我写了这个问题,但是在我修正了一个bug之后,它就消失了,现在我没有任何代码可以重现它。 也许我应该试着写在1.1卡的随机位置,看看是否有任何事情发生…

需要TensorFlow依赖关系。 如何在Windows上运行TensorFlow

我有兴趣让TensorFlow在Windows上运行,但是现在我意识到这是不可能的,因为一些依赖不能用于Windows,例如Bazel。 需要出现,因为正如我目前所了解的,从TensorFlow访问GPU的唯一方法是通过Linux的非虚拟安装。 我意识到我可以双启动到Linux安装,但宁愿避免这条路线。 为了解决这个问题,我需要整个依赖链来构buildTensorFlow,因为它想知道它是否已经存在。 我也意识到,从源代码构build固体开始时,我可以捕获构build输出,但是如果它已经知道,则希望避免这样的工作。 有一个testing版的Bazel在Windows上运行 – https://github.com/dslomov/bazel-windows 请参阅相关的GitHub问题在Windows上运行TensorFlow。 – https://github.com/tensorflow/tensorflow/issues/17 在Windows上运行的另一个原因是有可能移植到Xbox One。 我find了一个可能的答案,仍然需要检查它。 这将生成一个依赖图作为点文件。 $ bazel query 'deps(//tensorflow/tools/pip_package:build_pip_package)' –output graph > tensorflow.dependency.dot

TensorFlow 1.0在Windows上看不到GPU(但是Theano)

我在Windows上安装了Keras&Theano(按照本教程 )。 现在我试着将后端切换到Tensorflow ,工作得很好。 我唯一的问题是, Tensorflow没有检测到我的GPU ,Theano相反: from tensorflow.python.client import device_lib def get_available_gpus(): local_device_protos = device_lib.list_local_devices() return [x.name for x in local_device_protos if x.device_type == 'GPU'] 没有结果,但与Theano后端运行时,它工作得很好: C:\Programming\Anaconda3\python.exe D:/cnn_classify_cifar10.py Using Theano backend. DEBUG: nvcc STDOUT nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use […]

我想用C ++在windows操作系统上得到一个Gpu的名字

我想要得到一个Gpu的名字,例如AMD Radeon HD4830,我想要得到像“ATI Radeon HD4830”这样的信息。但是,我读取了注册信息,并得到了像“ATI Radeon HD 4800 Series”这样的信息。而且我使用了D3D或者OPCL界面得到的信息也像“ATI Radeon HD 4800系列”。我怎样才能正确地得到一个Gpu的名字?