我对 CUDA 和 GPU 编程很陌生。我目前有 2 个 CUDA 应用程序(A.cu 和 B.cu),并且希望分别运行它们并计算执行的总时间。但我想同时运行两个应用程序并检查执行时间。有没有办法做到这一点?
换句话说,如何同时从 2 个不同的应用程序同时启动两个内核,以便它们并行运行?
在这方面的任何帮助都是有用的。提前致谢。
早期printf不支持,我们要么使用模拟器运行 CUDA 程序,要么来回复制变量并在主机端打印。
既然 CUDA(arch 2 及更高版本)支持,printf我很想知道这是如何工作的?我的意思printf是屏幕上的GPU 内部如何?计算能力 1 的限制因素是什么?
看着这个事实,我开始想知道寄存器在 GPU 中是如何工作的?在知道这一点之前,我认为在分层内存阶梯之上越来越高,大小不断减小(这是直观的(延迟减少,大小减小))。GPU 中寄存器的用途是什么,为什么它们的大小大于 L2/L1 缓存?谢谢。
我开发了两个 CUDA 内核。一个是受内存限制的内核,另一个是受计算限制的内核。内核,首先在 Tesla K40 上进行了优化,我现在正在对 Tesla K40 和 Tesla K80 进行性能测试,以比较它们的性能结果。然而,我真的很困惑,因为我在两块板上获得了几乎相同的性能,而 K80 提供了几乎两倍宽的理论带宽和 DP 峰值性能。我还对每个块使用不同数量的线程进行了测试,但与 Tesla K40 相比,Tesla K80(大约 2%)没有任何明显的性能改进。
我使用以下标志编译代码:
在特斯拉 K40 上:
nvcc --cudart static --relocatable-device-code=false -gencode arch=compute_35,code=compute_35 -gencode arch=compute_35,code=sm_35 -link -o "test"
Run Code Online (Sandbox Code Playgroud)
在特斯拉 K80 上:
nvcc --cudart static --relocatable-device-code=false -gencode arch=compute_37,code=compute_37 -gencode arch=compute_37,code=sm_37 -link -o "test"
Run Code Online (Sandbox Code Playgroud)
从理论上讲,我应该在 Tesla K80 上获得更高的性能,但我不知道为什么这不起作用。
感谢您的任何回答或评论!
早上好。
我开始学习 cuda 编程,我正在学习性能。我在 CUDA 网站上读到,要获得良好的性能,我们应该考虑四件事:
-每个 SM 的扭曲(系统多处理器) -每个 SM 的块数 -每个 SM 的注册 -每个 SM 的共享内存
所以我要重温第一件事,并且根据 GPU,我根据每个 SM 的最大扭曲和每个 SM 的块定义了内核的尺寸。我的任务是执行一亿次求和来衡量哪种方法更好。
我所做的是一个 for 循环,在该循环中,我在每次迭代时启动一个内核,以最大化占用率。例如,对于 NVidia 1080 GPU,我读到:
int max_blocks = 32; //maximum number of active blocks per SM
int max_threads_per_Block = 64; //maximum number of active threads per SM
int max_threads = 2048;
这为每个 SM 提供总共 2048 个线程并保证最大占用率。这个 GPU 可以有 64 个活动扭曲,每个扭曲有 32 个线程。在这个 GPU 中,一个活动块有 2 个扭曲,这意味着每个块一次可以有 64 个活动线程。有了这个,我按如下方式启动内核:
dim3 threadsPerBlock(max_threads_per_Block);
dim3 numBlocks(max_blocks);
VecAdd<<<numBlocks, threadsPerBlock>>>(d_A, …
我正在编写一个非常基本的 OpenGL C++ 程序(Linux 64 位)。
事实上,我有3个程序:
2 个着色器在运行时编译。我想这个程序是由 GPU 在视频卡上并行运行的。
我的问题是如果我的计算机包含一个没有 GPU 的非常基本的视频卡会发生什么?
我试图在禁用“3d 加速”的情况下在 VirtualBox 上运行我的程序,并且程序可以运行!
这是否意味着如果没有 GPU,opengl 会自动检测显卡并在 CPU 上运行着色器?
我正在尝试按照以下说明安装 xgboost gpu 支持版本。xgboost-gpu-support
我使用 windows 10,visual studio 2017。不支持 GPU 的版本工作正常。但是对于支持 gpu 的版本?当我从 Visual Studio 释放模式时,它输出错误链接:致命错误 LNK1181:无法打开输入文件“Release\gpuxgboost.lib”。
在前面的步骤中,一切都进行得很好。我怎样才能解决这个问题?提前致谢。
(我的项目是D:\Software\xgboost\xgboost\build\ALL_BUILD.vcxproj,没有空间。所以这个解决方案不起作用。lnk1181-error-message-when-you-build-a-manag
我知道 opengl 是一个库,它允许在 GPU 上执行某些任务/调用(如着色)以实现更快的计算(硬件加速)。我一直在互联网上阅读有关它的信息,我想知道对 opengl 的调用是否可以在没有 GPU 的情况下运行。例如,这个论坛上的某个人(https://www.gamedev.net/forums/topic/638883-will-opengl-3d-games-run-in-a-pc-without-a-dedicated-video-card/ ) 提到它可以作为软件仿真运行。任何人都可以谈论这个吗?
有没有办法pytorch在特定(GPU)设备的上下文中运行(无需为每个新张量指定设备,例如.to选项)?
类似于tensorflow with tf.device('/device:GPU:0'):..
似乎默认设备是cpu(除非我做错了):
with torch.cuda.device('0'):
a = torch.zeros(1)
print(a.device)
>>> cpu
Run Code Online (Sandbox Code Playgroud)