I want to create some neural network in tensorflow 2.x that trains on a GPU and I want to set up all the necessary infrastructure inside a docker-compose network (assuming that this is actually possible for now). As far as I know, in order to train a tensorflow model on a GPU, I need the CUDA toolkit and the NVIDIA driver. To install these dependencies natively on my computer (OS: Ubuntu 18.04) is always quite a pain, as there are …
我想测量GPU的时间内核,如何在NVIDIA CUDA中测量它?例如
__global__ void kernelSample()
{
some code here
get start time
some code here
get stop time
some code here
}
Run Code Online (Sandbox Code Playgroud) 下载CUDA工具包DMG可以正常工作,但是在选择软件包后,安装程序会因为"软件包清单解析错误"这个错误而失败.
使用二进制内部从命令行运行安装程序失败的方式类似./var/log/cuda_installer.log中的日志文件基本上表示相同:
Apr 28 18:16:10 CUDAMacOSXInstaller[58493] : Awoken from nib!
Apr 28 18:16:10 CUDAMacOSXInstaller[58493] : Switched to local mode.
Apr 28 18:16:24 CUDAMacOSXInstaller[58493] : Package manifest parsing error!
Apr 28 18:16:24 CUDAMacOSXInstaller[58493] : Package manifest parsing error!
Apr 28 18:16:24 CUDAMacOSXInstaller[58493] : Package manifest parsing error!
Run Code Online (Sandbox Code Playgroud)
我安装了cuda 7.5的早期版本,(前一段时间)通过相同的过程完成而没有错误.
(OS X 10.11,GeForce GT750M)
我正在尝试使用OpenCL.我有两个NVidia显卡,我安装了"开发者驱动程序"以及来自NVidia网站的SDK.我编译了演示,但是当我跑步时
./oclDeviceQuery
我知道了:
OpenCL SW信息:
clGetPlatformIDs中的错误-1001调用!!!
我该如何解决?这是否意味着无法检测到我的nvidia卡?我正在运行Ubuntu 10.10和X服务器与nvidia驱动程序正常工作.
我很确定这个问题与文件权限无关,因为它也不能与sudo一起使用.
在当今的大多数nVIDIA GPU上,共享内存的大小(OpenCL术语中的"本地内存")仅为16 KiB.
我有一个应用程序,我需要创建一个具有10,000个整数的数组.所以我需要适应10,000个整数的内存量= 10,000*4b = 40kb.
只是想知道我应该期待什么样的速度,我一直试图在全局内存和着色器之间进行基准测试,而不是依赖于GPU规格表.但是我无法接近理论上的最大值.事实上,我出局了50倍!
我正在使用GTX Titan X,据说它有336.5GB/s.Linux x64驱动程序352.21.
我在这里找到了一个CUDA基准测试,它给了我~240-250GB/s(这更符合我的预期).
我正在尝试将它们与着色器完全匹配.我已经试过顶点着色器,计算着色,经由访问缓冲器对象image_load_store和NV_shader_buffer_store,具有floatS,vec4S,着色器内循环(与工作组内聚结的寻址)和定时的各种方法.我卡在~7GB/s(参见下面的更新).
为什么GL这么慢?我做错了什么,如果是的话,应该怎么做?
这是我的MWE有三种方法(1.顶点着色器与image_load_store,2.顶点着色器与无绑定图形,3.计算着色器与无绑定图形):
//#include <windows.h>
#include <assert.h>
#include <stdio.h>
#include <memory.h>
#include <GL/glew.h>
#include <GL/glut.h>
const char* imageSource =
"#version 440\n"
"uniform layout(r32f) imageBuffer data;\n"
"uniform float val;\n"
"void main() {\n"
" imageStore(data, gl_VertexID, vec4(val, 0.0, 0.0, 0.0));\n"
" gl_Position = vec4(0.0);\n"
"}\n";
const char* bindlessSource =
"#version 440\n"
"#extension GL_NV_gpu_shader5 : enable\n"
"#extension GL_NV_shader_buffer_load : …Run Code Online (Sandbox Code Playgroud) CUDA Runtime API公开了这些功能
cudaRuntimeGetVersion() 和cudaDriverGetVersion() (见这里的详细说明).我有点期待第一个给我"8.0"(对于CUDA 8.0),第二个给我一个字符串,就像我从检查nVIDIA的GPU驱动程序内核模块得到的那样,例如
modinfo nvidia | grep "^version:" | sed 's/^version: *//;'
Run Code Online (Sandbox Code Playgroud)
在我的系统上367.57.
现在,第一个电话给了我8000- 很好,只是一个奇怪的方式说8.0我猜; 但第二个API调用也给了我8000.那么这两个意味着什么?
我链接到的Runtime API文档似乎没有解释这一点.
我在Ubuntu 14.04,CUDA工具包8,驱动程序版本367.48.
当我发出nvidia-smi命令时,它会无限期地挂起.当我再次登录并试图杀死该nvidia-smi进程时,kill -9 <PID>例如,它就没有被杀死.如果我给另一个nvidia-smi命令,我发现两个进程都在运行 - 当然是从另一个shell登录时,因为它像以前一样被卡住了.
它可能是与驱动程序有关的问题吗?这不是最新的,但还是很新的......
我有四块NVIDIA GTX 1080图形卡,当我初始化一个会话时,我看到以下控制台输出:
Adding visible gpu devices: 0, 1, 2, 3
Device interconnect StreamExecutor with strength 1 edge matrix:
0 1 2 3
0: N Y N N
1: Y N N N
2: N N N Y
3: N N Y N
Run Code Online (Sandbox Code Playgroud)
我还有2块NVIDIA M60 Tesla图形卡,初始化如下:
Adding visible gpu devices: 0, 1, 2, 3
Device interconnect StreamExecutor with strength 1 edge matrix:
0 1 2 3
0: N N N N
1: N N N N
2: N N N …Run Code Online (Sandbox Code Playgroud) 昨晚我在我的 Ubuntu 工作站上训练模型,然后今天早上醒来看到了这条消息:
Failed to initialize NVML: Driver/library version mismatch
Run Code Online (Sandbox Code Playgroud)
显然 NVIDIA 系统驱动程序会自动更新,现在我需要重新启动机器才能使用我的 GPU...如何阻止 NVIDIA 自动更新?