我正在为CUBLAS寻找一个非常简单的骨骼矩阵乘法示例,它可以将M乘以N并将结果放在P中,用于以下代码,使用高性能GPU操作:
float M[500][500], N[500][500], P[500][500];
for(int i = 0; i < Width; i++){
for(int j = 0; j < Width; j++)
{
M[i][j] = 500;
N[i][j] = 500;
P[i][j] = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现使用CUBLAS进行任何类型的矩阵乘法的大多数代码(看似?)过于复杂.
我正在尝试设计一个基础实验室,学生可以在其中比较GPU上的矩阵乘法与CPU上的矩阵乘法的性能,可能是GPU上的性能提升.
我试图了解OpenGL和DirectX如何使用图形卡.
如果我在OpenGL中编写一个执行三角形的程序,而在DirectX中编写另一个执行相同操作的程序,那么GPU端究竟会发生什么?
当我们运行程序时,每次调用OpenGL库以及每次调用DirectX库都会产生GPU代码,并且从两个程序生成的GPU机器代码是相同的吗?(就像DirectX和OpenGL就像Java Bytecode一样,预编译,然后当它实际运行时,它产生相同的东西)
或者GPU有两个不同的指令集,每个指令集一个.我的意思是,对于GPU来说,什么是exaclty OpenGL和DirectX,它如何区分2 API?
这只是程序员的观点吗?
使用CUDA,我想用非线性最小二乘求解器求解一个方程组.这些方法在一本优秀的小册子中讨论,可以在这里下载.
我的问题中的雅可比矩阵是稀疏的,下三角形.是否有可以使用这些方法的CUDA库,或者我是否必须自己从小册子中编写这些方法?
高斯 - 牛顿非线性最小二乘求解器,Levenberg-Marquardt或Powell的方法求解器是否可用于CUDA库(免费或非免费)?
cuda gpu linear-algebra mathematical-optimization hessian-matrix
我想以最快的方式绘制大量使用图形.如果我使用标准的C#图形回调(es.graphics.drawline),我做得对吗?还是我要使用不同的库?
默认情况下,Bazel以并行方式运行测试以加快速度.但是,由于GPU内存限制,我有一个无法处理并行作业的资源(GPU).有没有办法强制Bazel以串行方式运行测试,即非并行方式?
谢谢.
我拥有MacBook Pro 15'2014年中期,我正在考虑购买Titan X GPU来加速我的神经网络的训练.Titan将通过Thunderbolt 2作为外部GPU连接.
我可以从这种设置中获得什么样的性能 - 它是否与连接到主板相同?霹雳是否会限制GPU的速度?
在我的OpenGL渲染引擎中,当我按下一个开始发出一些新的OpenGL调用的键后,我正在崩溃1帧.
以下是崩溃的调用堆栈,它是一个CVDisplayLink线程.
0 libsystem_kernel.dylib 0x00007fff94d89f06 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff88d3e4ec pthread_kill + 90
2 libsystem_c.dylib 0x00007fff980246e7 abort + 129
3 libGPUSupportMercury.dylib 0x00007fff983a3e5c gpusGenerateCrashLog + 158
4 com.apple.driver.AppleIntelHD5000GraphicsGLDriver 0x000000010f750d4b gpusKillClientExt + 9
5 libGPUSupportMercury.dylib 0x00007fff983a5204 gpusSubmitDataBuffers + 162
6 com.apple.driver.AppleIntelHD5000GraphicsGLDriver 0x000000010f2ac3f2 IntelCommandBuffer::getNew(GLDContextRec*) + 48
7 com.apple.driver.AppleIntelHD5000GraphicsGLDriver 0x000000010f399849 intelSubmitCommands + 171
8 com.apple.driver.AppleIntelHD5000GraphicsGLDriver 0x000000010f3996c2 gldPresentFramebufferData + 142
9 GLEngine 0x000000010f0ddc81 glSwap_Exec + 97
10 com.apple.GLEngineProfiler 0x000000010d759265 0x10d60b000 + 1368677
11 com.apple.opengl 0x00007fff8ed15ffe CGLFlushDrawable + 66
12 com.apple.AppKit 0x00007fff8846509f -[NSOpenGLContext flushBuffer] + …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Ubuntu Ubuntu Server 16.04让opengl在亚马逊p2实例上进行无头屏幕渲染.
实例创建后,我根据这篇亚马逊文章安装了相应的nvidia驱动程序,它们似乎按预期工作:
$ lsmod | grep nvidia
nvidia_drm 53248 0
nvidia_modeset 790528 1 nvidia_drm
nvidia 11911168 1 nvidia_modeset
drm_kms_helper 155648 3 cirrus,nouveau,nvidia_drm
drm 364544 7 ttm,drm_kms_helper,cirrus,nouveau,nvidia_drm
$ nvidia-smi -q | head
==============NVSMI LOG==============
Timestamp : Thu Jan 19 11:22:38 2017
Driver Version : 375.20
Attached GPUs : 1
GPU 0000:00:1E.0
Product Name : Tesla K80
Product Brand : Tesla
Run Code Online (Sandbox Code Playgroud)
我正在尝试这个相关问题的步骤:
sudo apt-get install xserver-xorg libglu1-mesa-dev freeglut3-dev mesa-common-dev libxmu-dev libxi-dev
sudo nvidia-xconfig -a --use-display-device=None …Run Code Online (Sandbox Code Playgroud) 我有某种高级代码,因此模型训练等由pipeline_network课程来包装。我的主要目标是每折一次训练新模型。
for train_idx, valid_idx in cv.split(meta_train[DEPTH_COLUMN].values.reshape(-1)):
meta_train_split, meta_valid_split = meta_train.iloc[train_idx], meta_train.iloc[valid_idx]
pipeline_network = unet(config=CONFIG, suffix = 'fold' + str(fold), train_mode=True)
Run Code Online (Sandbox Code Playgroud)
但是然后我继续进行第二次折叠,所有故障都出自gpu内存:
RuntimeError: cuda runtime error (2) : out of memory at /pytorch/torch/lib/THC/generic/THCStorage.cu:58
Run Code Online (Sandbox Code Playgroud)
在纪元结束时,我尝试手动删除该管道,但没有运气:
def clean_object_from_memory(obj): #definition
del obj
gc.collect()
torch.cuda.empty_cache()
clean_object_from_memory( clean_object_from_memory) # calling
Run Code Online (Sandbox Code Playgroud)
调用它也没有帮助:
def dump_tensors(gpu_only=True):
torch.cuda.empty_cache()
total_size = 0
for obj in gc.get_objects():
try:
if torch.is_tensor(obj):
if not gpu_only or obj.is_cuda:
del obj
gc.collect()
elif hasattr(obj, "data") and torch.is_tensor(obj.data):
if not gpu_only or obj.is_cuda:
del obj …Run Code Online (Sandbox Code Playgroud) 我有一个用PyTorch编写的神经网络,它a在GPU上输出一些Tensor .我想继续a使用高效的TensorFlow层进行处理.
据我所知,唯一的方法是a从GPU内存转移到CPU内存,转换为numpy,然后将其输入TensorFlow.一个简化的例子:
import torch
import tensorflow as tf
# output of some neural network written in PyTorch
a = torch.ones((10, 10), dtype=torch.float32).cuda()
# move to CPU / pinned memory
c = a.to('cpu', non_blocking=True)
# setup TensorFlow stuff (only needs to happen once)
sess = tf.Session()
c_ph = tf.placeholder(tf.float32, shape=c.shape)
c_mean = tf.reduce_mean(c_ph)
# run TensorFlow
print(sess.run(c_mean, feed_dict={c_ph: c.numpy()}))
Run Code Online (Sandbox Code Playgroud)
这可能有点牵强,但有没有一种方法可以做到这一点
a 永远不会留下GPU内存,或者a 从GPU内存到固定内存到GPU内存.我尝试2.在上面使用的代码中使用,non_blocking=True但我不确定它是否符合我的预期(即将其移至固定内存).
理想情况下,我的TensorFlow图将直接在PyTorch张量占用的内存上运行,但我认为这是不可能的?