我们有一个用霍夫曼编码编码的数据库.这里的目的是在GPU上复制它与相关的解码器; 然后在GPU上解码数据库,并在这个解码的数据库上执行操作,而无需将其复制回CPU上.
我远远不是霍夫曼专家,但我知道的少数人表明它似乎是一种基本上基于控制结构的算法.使用基本算法,恐怕会有很多序列化操作.
我的两个问题是:
我看到其他约束,但它们并不重要: - GPU处理树的效率不高:二叉树可以存储在经典数组中 - 工作量很难平衡:我们会看到
好吧,我知道体素基本上只是一个像素的体积版本.
在那之后,我不知道甚至要寻找什么.
谷歌搜索没有显示任何教程,我无法在任何地方找到一本书,我甚至找不到任何与体素真正的基本概念有关的东西.
我对C++库有很多了解,并且掌握了OpenGL的基础知识.
有人能指出我正确的方向吗?
编辑:我想我只是对如何实现它们感到困惑?对不起是一种痛苦,只是因为我无法找到任何我可以轻易关联的内容......我想我想象的是一个体素与一个可以实际存储数据的向量相关.
体素可以表示为任何 3D形状?例如,假设我希望形状为圆柱形.这是可能的,还是他们必须像立方体一样链接?
我正在制作相机应用程序,这个应用程序将为用户提供一些过滤器.目前我的代码是在NDK上,它工作正常,但我想让它更快一点.看来GPU和opengl Es 2.0还有很长的路要走.我唯一担心的是GPU的内存限制.由于现代相机需要5-10 mp的图像,而GPU的内存限制远远低于此.我想知道是否有办法解决这个限制.在我看来唯一合乎逻辑的选择是将图像分成较小的部分,然后在GPU上处理它们,最后将它们分配给最终图像.我的问题是,如果这种方法仍然有利于性能,还有任何其他选项可以在移动GPU上处理高分辨率图像.
编辑:我需要澄清一下,我想使用GPU进行图像处理,所以我的目标不是将结果渲染到屏幕上.我将它渲染到另一个纹理并将其保存到磁盘.
是否可以使用Mingw和Nvidia SDK编译OpenCL?
我知道它没有得到官方支持,但这没有意义.库不是作为静态链接库提供的吗?我的意思是一旦用可能的任何编译器编译,并成功链接,什么应该是问题?
我设法编译并成功将我的代码链接到Nvidia SDK提供的OpenCL库,但是可执行文件抛出了Segmentation Fault,clGetPlatformIDs这是我的代码中的第一个OpenCL调用.
这是我的编译命令
x86_64-w64-mingw32-g++ -std=c++11 File.cpp \
-L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\x64" \
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" \
-gcoff -lOpenCL -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 \
-lshell32 -lole32 -loleaut32 \
-luuid -lodbc32 -lodbccp32 -luser32 -lgdi32 -lmingwex -m64 \
-DWIN32 -D_DEBUG -D_CONSOLE
Run Code Online (Sandbox Code Playgroud)
请注意,这些库来自示例OpenCL代码的.sln文件.
我尝试了这些库的各种组合,似乎没有任何工作.
还有一种方法可以使用Mingw进行编译并使用其他东西进行链接吗?我不确定其他东西是什么.
使用Gensim提供的Word2vec和Doc2vec方法,他们有一个使用BLAS,ATLAS等加速的分布式版本(详情请参见此处).但是,它支持GPU模式吗?如果使用Gensim,是否可以让GPU工作?
我所做的是按照官方 github 站点上的说明进行操作
!git clone https://github.com/NVIDIA/apex
!cd apex
!pip install -v --no-cache-dir ./
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
ERROR: Directory './' is not installable. Neither 'setup.py' nor 'pyproject.toml' found.
Exception information:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/pip/_internal/cli/base_command.py", line 178, in main
status = self.run(options, args)
File "/usr/local/lib/python3.6/dist-packages/pip/_internal/commands/install.py", line 326, in run
self.name, wheel_cache
File "/usr/local/lib/python3.6/dist-packages/pip/_internal/cli/base_command.py", line 268, in populate_requirement_set
wheel_cache=wheel_cache
File "/usr/local/lib/python3.6/dist-packages/pip/_internal/req/constructors.py", line 248, in install_req_from_line
"nor 'pyproject.toml' found." % name
pip._internal.exceptions.InstallationError: Directory './' is not installable. Neither 'setup.py' nor 'pyproject.toml' found.
Run Code Online (Sandbox Code Playgroud) 我必须在使用不同设备的不同类型的 pytorch 模型上堆叠一些我自己的层。
例如,A是cuda模型,B是cpu模型(但在获得设备类型之前我不知道)。那么新模型分别是C和D,其中
class NewModule(torch.nn.Module):
def __init__(self, base):
super(NewModule, self).__init__()
self.base = base
self.extra = my_layer() # e.g. torch.nn.Linear()
def forward(self,x):
y = self.base(x)
z = self.extra(y)
return z
...
C = NewModule(A) # cuda
D = NewModule(B) # cpu
Run Code Online (Sandbox Code Playgroud)
但是我必须继续前进base,并extra在相同的设备,即base和extra的C是CUDA模型和D的是CPU的型号。所以我试过这个__inin__:
def __init__(self, base):
super(NewModule, self).__init__()
self.base = base
self.extra = …Run Code Online (Sandbox Code Playgroud) 我正在GCP使用特斯拉 GPU运行虚拟机。并尝试部署PyTorch基于 的应用程序以使用 GPU 对其进行加速。
我想让 docker 使用这个 GPU,可以从容器访问它。
我设法在主机上安装了所有驱动程序,并且该应用程序在那里运行良好,但是当我尝试在 docker(基于 nvidia/cuda 容器)中运行它时,pytorch 失败了:
File "/usr/local/lib/python3.6/dist-packages/torch/cuda/__init__.py", line 82,
in _check_driver http://www.nvidia.com/Download/index.aspx""")
AssertionError:
Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from
Run Code Online (Sandbox Code Playgroud)
要获取有关容器可见的 nvidia 驱动程序的一些信息,我运行以下命令:
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
但它抱怨: docker: Error response from daemon: Unknown runtime specified nvidia.
在主机上nvidia-smi输出如下所示:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+ …Run Code Online (Sandbox Code Playgroud) 限制之一是我们每次只能连续获得 12 小时。GPU和TPU的使用有限制吗?
我正在尝试按照此处的教程在我的图像集上使用预先训练的模板:https : //pytorch.org/tutorials/beginner/finetuning_torchvision_models_tutorial.html
只有当我运行我的代码并且控制台锁定时,我总是得到这个“错误”:
[W ParallelNative.cpp:206] Warning: Cannot set number of intraop threads after parallel work has started or after set_num_threads call when using native parallel backend (function set_num_threads)
预先感谢您的帮助,