我们刚刚开始使用slurm来pipe理我们的GPU(目前只有2个)。 我们使用Ubuntu 14.04和slurm-llnl。 我configuration了gres.conf和srun工程。 问题是,如果我用–gres=gpu:1运行两个作业,那么两个GPU成功分配并且作业开始运行; 现在我希望能够在没有–gres=gpu:1情况下运行更多的作业(除了2个GPU作业之外)(即作业比只使用CPU和RAM),但这是不可能的。 该错误消息说,它不能分配所需的资源(即使有24个CPU核心)。 这是我的gres.conf: Name=gpu Type=titanx File=/dev/nvidia0 Name=gpu Type=titanx File=/dev/nvidia1 NodeName=ubuntu Name=gpu Type=titanx File=/dev/nvidia[0-1] 我感谢任何帮助。 谢谢。
我的电脑有两个GPU。 这是我第一次使用两个GPU。 当我有一个GPU时,我只运行Cuda程序,它只在一个GPU上运行。 但是,我不知道如何控制程序使用哪个GPU以及如何在唯一的一个GPU上运行程序。 我search了互联网和post说 导出CUDA_VISIBLE_DEVICES = 0 在运行程序之前必须使用这个。 我有两个程序运行。 一个是火炬脚本,另一个是Cuda脚本。 我打开了两个terminal,在第一个terminal,我使用了上面的命令并运行火炬程序。 之后,在第二个terminal,我也使用了上面的命令,只把数字从0改为1,运行cuda程序。 然而,看到nvidia-smi的图片,它显示了这两个程序分配给了第0个GPU。 我想将火炬程序(PID 19520)分配给第0个,将cuda程序(PID 20351)分配给第1个GPU。 我如何将这两个程序分配给不同的GPU设备? 以下是火炬脚本的设置。 (Ubuntu 14.04,nvidia titan gtx x,cuda-7.5) –[[command line arguments]]– cmd = torch.CmdLine() cmd:text() cmd:text('Train a Recurrent Model for Visual Attention') cmd:text('Example:') cmd:text('$> th rnn-visual-attention.lua > results.txt') cmd:text('Options:') cmd:option('–learningRate', 0.01, 'learning rate at t=0') cmd:option('–minLR', 0.00001, 'minimum learning […]
我需要确定给定的CUDA设备是否连接了显示器。 我不知道这个CUDA函数。 在Windows上,我可以使用NVAPI来获取每个设备的连接显示器数量和PCI总线/插槽ID。 使用后者,我可以find匹配的CUDA设备(通过调用cudaGetDeviceProperties)。 在NVAPI不可用的Linux上,我怎样才能做到这一点? 从技术上讲,我需要的是以下代码的Linux替代scheme: NvAPI_Initialize(); NvPhysicalGpuHandle gpuHandles[64]; NvU32 numOfGPUs; NvAPI_EnumPhysicalGPUs(gpuHandles, &numOfGPUs); for (int i = 0; i < numOfGPUs; i++) { NvU32 connected_displays = 0; NvU32 busId = 0; NvU32 busSlotId = 0; NvAPI_GPU_GetConnectedDisplayIds(gpuHandles[i], NULL, &connected_displays, NULL); NvAPI_GPU_GetBusId(gpuHandles[i], &busId); NvAPI_GPU_GetBusSlotId(gpuHandles[i], &busSlotId); printf("Current device: %d\n", i); printf("Number of connected displays: %u\n", connected_displays); printf("Bus id: […]
我希望能够在Blender中工作,而另一个Blender实例使用GPU(CUDA)渲染场景, 事情是,一旦我运行后台渲染,整个系统变得几乎没有反应。 我尝试通过执行脉冲处理暂停(0.05秒的工作,0.95秒的等待)来限制系统负载,但是并没有使它更好。 我想给后台渲染一个空闲的GPU优先级,以便所有其他进程可以做他们需要的,剩下的所有时间用于渲染。 我听说CUDA 5.5引入了内核优先级,但这样做有没有什么帮助,因为常规gemoetry绘图不是CUDA活动? 我可以做什么(除了获得第二个GPU显示)?
我有一个小的QT应用程序,从本地存储播放video,当我运行它video阻塞和缓慢,我使用gstreamer 0.1 …但是,当我从terminal运行它,明确地说与gstreamer在gpu上运行它工作正常。 我怎样才能调整我的代码,它运行在GPU上的QT …我的代码示例… QApplication app(argc, argv); QGraphicsView *graphicsView = new QGraphicsView; QMediaPlayer *player = new QMediaPlayer; QGraphicsScene *scene = new QGraphicsScene; graphicsView->setScene(scene); graphicsView->setMinimumSize(800,480); QGraphicsVideoItem *item = new QGraphicsVideoItem; player->setVideoOutput(item); graphicsView->scene()->addItem(item); graphicsView->show(); player->setMedia(QUrl::fromLocalFile("/path/to/my/file")); QTransform mirror; mirror.scale(-1,1); item->setTransform(mirror); player->play(); return app.exec(); }
我想知道是否有可能强制英特尔GPU在Linux环境中处于“仅OpenCL”模式,只能使OpenCL正常工作。 我们已经禁用了X服务器和graphics软件,但是我们希望完全禁用此卡上的“video工作”。
我正在构build一个OpenGL应用程序。 OpenGL唯一不便的地方是它使用了几个(5个或更多)相当大(2000×2000或更大)的纹理。 其余的是非常默认的现代OpenGL 3.3的东西(FBO的,VBO的,IBO的,美国之音,着色器等)。 由于这些纹理非常大,需要8位以上的深度,因此我使用GL_R11F_G11F_B10F内部像素格式来减less内存(但是,将其更改为简单的内容并不会帮助(参见下方))。 现在,这里是一个完全相同的代码,运行在Windows,Linux和MacOS上(我使用SDL作为抽象层)。 在同一个硬件(我的2011年末的MacBook Pro 13“,Intel HD Graphics 3000 @ 1280×800),相同的编译器( clang -O3 -mavx )上,Linux和macOS之间的性能差异是巨大的 ,在macOS上,我的帧时间大约是30ms到80ms,但是在Linux上,这是惊人的1ms到4ms,同样的笔记本电脑,只是在不同的操作系统下重新启动,应用程序窗口缩小到600×400,macOS上的帧时间缩短到13ms,看来像素着色器/栅格化是瓶颈(我的着色器确实非常复杂)。 我必须说我过去在macOS上的帧时间(13ms到20ms左右)要好一些。 所以,在发现这个消息之后,我越来越怀疑,苹果可能会通过系统升级“降级”Intel HD Graphics 3000的graphics驱动程序,以推动消费者购买新产品。 我必须说,我一直在考虑购买一台新的笔记本电脑,但是自从我发现这种情况以后,突然间有了一丝厌恶。 现在的问题是:你觉得这里可能会发生什么? 越野车司机? 苹果故意让事情变慢? 包含在驱动程序中的未优化的GLSL编译器? 或者,也许在应用程序中的OpenGL代码中的一些不好的做法? 驱动程序对非8位纹理格式的支持是否很常见? 我只是讨厌在Linux中使用这个应用程序,而在macOS中使用这个应用程序是不太好用的。 硬件能做得更好。 一些testing,如@BDL所要求的: 在每个尺寸上减less4倍的纹理(因此减less16倍的内存,使得我们的纹理大约为500×500)不会影响帧时间。 使用GL_RGB8或GL_SRGB8作为内部格式不影响帧时间。 减less很多着色器的复杂性确实有帮助:当在片段着色器中丢弃大量计算时,我可以将其平均降低到8ms。 我明天会尝试一个glsl着色器优化器: https : //github.com/aras-p/glsl-optimizer希望这会有所帮助。
我使用内存映射I / O(Linux上的mmap调用)访问磁盘上的文件。 是否可以使用CL_MEM_USE_HOST_PTR将此虚拟内存缓冲区传递给OpenCL(仅供读取)。 这可以导致性能提升吗? 我想避免将整个文件复制到主机内存中,而是让OpenCL内核控制文件的哪些部分被操作系统加载/缓冲。
我们有一个opencl应用程序比在一台配有12 GB RAM的机器上运行单个nvidia C2075(6GB Mem)。 我们build立了一台配备12GB内存和AMD W9100 GPU(16GB内存)的新机器(通过运行简单的opencl应用程序确保一切正确)。 现在相同的opencl应用程序在新机器上崩溃。 我们发现在执行过程中,一些内存分配失败了。 将系统内存增加到24GB使应用程序工作。 (该应用程序工作在所有单片机内的GPU内存>系统内存,所有的机器都是SUSE Linux企业服务器64位) 你如何得出这种情况? 我认为GPU正在将其整个16GB映射到系统RAM上,导致内存不足。 但通过/ proc / iomem和lspci -v,我看不到一个16GB的窗口。 GPU真的将内存映射到系统内存吗? 谢谢您的帮助
我想在debian 8上使用OpenCL 。我在这个页面上看到Intel的GPU在linux上不支持。 (这篇文章是从2011年开始的,所以我希望它已经过时了。)我已经安装了OpenCL,并且可以运行编译并运行这里find的代码。 至于我的硬件。 我的处理器是Intel(R) Core(TM) i7-4500 CPU @ 1.80GHz lspci | grep VGA lspci | grep VGA输出 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 09) 所以清除:我想知道,如果有可能在这个设置上使用graphics芯片。 我希望我提供的信息足够了。 提前致谢!