我正在查看CUDA的粒子示例,但找不到它们在顶点数组和着色器中的变量之间建立链接的位置。从我读过的和实际上我一直在做的方式来看
...
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData( ... )
glEnableVertexAttribArray(0);
glVertexAttribPointer( ... );
...
Run Code Online (Sandbox Code Playgroud)
然而我在 Nvidia 的例子中发现的看起来像
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vbo);
glVertexPointer(4, GL_FLOAT, 0, 0);
glEnableClientState(GL_VERTEX_ARRAY);
if (m_colorVBO)
{
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_colorVBO);
glColorPointer(4, GL_FLOAT, 0, 0);
glEnableClientState(GL_COLOR_ARRAY);
}
glDrawArrays(GL_POINTS, 0, m_numParticles);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
Run Code Online (Sandbox Code Playgroud)
我相信这与我所做的类似。所以我的问题是
我正在尝试使用 Nivida Profiler 分析我的代码,但我在时间线中出现了奇怪的差距,如下所示:
注意:间隙边缘的两个内核都是 CudaMemCpyAsync(主机到设备)
我在 Ubuntu 14.04 上运行最新版本的 CUDA、8.0.61 和最新的 Nvidia 显示驱动程序。
Intel 集成显卡用于显示器而不是 Nvidia。因此,Nvidia 显卡只运行代码,而不运行其他任何东西。
我也启用了 CPU Profiling 来检查这些差距,但没有显示任何内容!
此外,没有启用调试选项(-G 或 -g),这是一个“发布版本”
我的笔记本电脑规格:
有没有办法追踪这些空时隙中发生的事情?
谢谢,
拥有一个多显示器扩展显示器,显示器位于两个相同的 GPU 上。
测试了每个 GPU 及其所有显示端口。(成功)
注意:每个 GPU 有 1 个显示器、1 个 HDMI 和 2 个 DVI 端口。
cudaMemcpy 允许程序员明确指定内存传输的方向。
有手动指定存储器传输方向上的任何优点(cudaMemcpyDeviceToHost/ cudaMemcpyHostToDevice/ cudaMemcpyDeviceToDevice,而不是让CUDA自动推断()cudaMemcpyDefault从指针值)?
我想在 Visual Studio 2017 中用 NVIDIA OpenCL 编写应用程序,但不知道如何为此创建项目。
我有来自 NVIDIA (GeForce 940M) 和 Intel (HD Graphics 5500) 的 GPU,并且已经设法为 OpenCL 打开和运行 Intel 示例程序,但它们有近一千行代码,所以我决定尝试 NVIDIA OpenCL 但不知道如何。在一些论坛上,他们说我应该下载 CUDA 工具包并安装 OpenCL,其他人说我应该下载支持 OpenCL 的驱动程序,但我不知道哪个驱动程序合适。我已经从https://www.nvidia.pl/Download/index.aspx?lang=pl安装了 CUDA 和驱动程序,但我仍然无法在 Visual Studio 的 OpenCL 中创建 NVIDIA 项目。
我目前正在尝试将 Jetson TX1 与 jetson NANO 进行基准测试,根据https://elinux.org/Jetson,它们都具有 maxwell 架构,其中 NANO 有 128 个 cuda 内核,TX1 有 256 个 cuda 内核。这意味着通常 Jetson NANO 的性能是 TX1 的一半。
为了测试这一点,我创建了一个单(浮点)运算乘法内核,如下所示:
__global__ void matrixMultiply(float* mat1, float* mat2, int nx, int ny)
{
unsigned int ix = threadIdx.x + blockDim.x*blockIdx.x;
unsigned int iy = threadIdx.y + blockDim.y*blockIdx.y;
int idx = iy*nx + ix;
mat1[idx] = mat1[idx]*mat2[idx] ;
}
Run Code Online (Sandbox Code Playgroud)
测试: TX1 = 130 ms 和 Jetson NANO = 150 ms 乘以 2“大小为 15000*15000 的浮点数组”。结果看起来很奇怪,就好像我没有使用 TX1 …
多年来,我一直以这种方式安装各种版本的 CUDA:
sudo apt-get update
sudo apt-get purge cuda --yes
# eg for 9.0:
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt-get install cuda=9.0.176-1 --yes
Run Code Online (Sandbox Code Playgroud)
这一直很有效,我在一个脚本中可以自动设置我的 CI 机器。但是今天我注意到事情不再起作用了:
sudo apt-get install cuda=9.0.176-1 --yes
E: Unable to locate package cuda
Run Code Online (Sandbox Code Playgroud)
显然,GPG 密钥已过期: https : //github.com/NVIDIA/nvidia-docker/issues/1081#issuecomment-533717708
要解决此问题,您现在需要执行以下操作:
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)
但是,同样的错误!我也尝试过 CUDA 10.0 版,但它以同样的方式失败。
当我尝试nvprof在命令提示符中运行命令时,系统错误会弹出并显示“代码执行无法继续,因为未找到 cupti64_102.dll。重新安装程序可能会解决此问题。”
我已经安装了 CUDA Toolkit 10.2 但cupti64_102.dll不在/bin.
系统:Windows 10、Quadro K4200、CUDA10.2、CUDA Toolkit 10.2
我正在尝试在 Google Colab 上运行 stylegan2,但使用我的 Drive 上的所有文件,并避免使用 !git clone 来自stylegan2的github。这是我在特定单元格上的代码:
%tensorflow_version 1.x
%cd /content/drive/My Drive/stylegan2-master/
!nvcc test_nvcc.cu -o test_nvcc -run
print('Tensorflow version: {}'.format(tf.__version__) )
!nvidia-smi -L
print('GPU Identified at: {}'.format(tf.test.gpu_device_name()))
Run Code Online (Sandbox Code Playgroud)
结果:
/content/drive/My Drive/stylegan2-master CPU 打招呼。cudaErrorNoDevice:未检测到支持 CUDA 的设备 Tensorflow 版本:1.15.2 NVIDIA-SMI 失败,因为它无法与 NVIDIA 驱动程序通信。确保安装并运行了最新的 NVIDIA 驱动程序。
GPU 标识于:
为什么我无法获得 GPU?我是该领域的新手,所以我可能会遗漏一些非常简单的东西,但仍然无法在互联网上找到答案。
使用以下命令运行最新的 docker:
docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter jupyter notebook --notebook-dir=/tf --ip 0.0.0.0 --no-browser --allow-root --NotebookApp.allow_origin='https://colab.research.google.com'
Run Code Online (Sandbox Code Playgroud)
代码:
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
Run Code Online (Sandbox Code Playgroud)
给我:
2020-07-27 19:44:03.826149: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1
2020-07-27 19:44:03.826179: E tensorflow/stream_executor/cuda/cuda_driver.cc:313] failed call to cuInit: UNKNOWN ERROR (-1)
2020-07-27 19:44:03.826201: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:163] no NVIDIA GPU device is present: /dev/nvidia0 does not exist
Run Code Online (Sandbox Code Playgroud)
我在 Pop_OS 20.04 上,尝试从 Pop 存储库和 NVidia 安装 CUDA 驱动程序。没有骰子。任何帮助表示赞赏。
跑步
docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
Run Code Online (Sandbox Code Playgroud)
给我:
+-----------------------------------------------------------------------------+ …Run Code Online (Sandbox Code Playgroud)