草庐IT

pytorch-cuda

全部标签

c++ - 为什么转置 CUDA 网格(但不是它的线程 block )仍然会减慢计算速度?

编辑:似乎,至少在这种情况下,转置网格对L2缓存带宽有负面影响。这是从视觉分析器获得的。原因我还不清楚。我遇到了需要转置CUDA网格的GPU计算情况。因此,如果block_{x,y}最初作用于数据区域d_{x,y},现在它作用于数据区域d_{y,x},因此block_{y,x}将作用于数据区域d_{x,y}。下图给出了一个示例。值得一提的是,线程并不是在每个block内部转置,即一旦block被定位,threadIdx.x和threadIdx.y值以正常方式分别用于它们的x和y偏移。据我所知,理论上这种设计应该不会损害性能,因为仍然保留了内存合并模式,即block内的线程没有被转置,它

c++ - 如何在 CUDA 内核中使用 Eigen

Eigen是一个C++线性代数库http://eigen.tuxfamily.org.使用基本数据类型(如基本float组)很容易,只需将其复制到设备内存并将指针传递给cuda内核。但是Eigen矩阵是复杂类型,如何将其复制到设备内存并让cuda内核读取/写入它? 最佳答案 自2016年11月(Eigen3.3发布)以来,存在一个新选项:在CUDA内核中直接使用Eigen-参见thisquestion.来自链接问题的示例:__global__voidcu_dot(Eigen::Vector3f*v1,Eigen::Vector3f*

python-3.x - pytorch的并行方式和分布式方式是如何工作的?

我不是分布式系统和CUDA方面的专家。但是PyTorch支持一个非常有趣的特性,即nn.DataParallel和nn.DistributedDataParallel。它们是如何实际实现的?它们如何分离常见的嵌入并同步数据?这是DataParallel的基本示例。importtorch.nnasnnfromtorch.autograd.variableimportVariableimportnumpyasnpclassModel(nn.Module):def__init__(self):super().__init__(embedding=nn.Embedding(1000,10),r

c++ - 对 CUDA/openCL 和 C++ AMP 的困惑

我了解到微软正在与Nvidia密切合作以提高AMP性能。但我的问题是:AMP是Microsoft的CUDA替代品吗?或者当NVIDIACUDA显卡可用时,AMP是否使用CUDA驱动程序?AMP是openCL的替代品吗?我还是很困惑.. 最佳答案 C++AMP是一个库(作为它的一部分,还引入了一个关键的语言扩展)。由于C++AMP是一个开放规范,它可以在任何其他低级语言上实现。Microsoft的实现基于DirectCompute(因此也基于HLSL),但是当您使用C++AMP时,这对您完全隐藏(这就是C++AMP可以成为开放规范的原

c++ - 在 cuda 主机代码中使用 openMP?

是否可以在CUDA文件中(不在内核代码中)使用openMPpragma?我将结合gpu和cpu计算。但是如果我将porgram与openmp选项链接(在linux下),nvvc编译器会失败并显示“找不到未知选项'openmp'”一种解决方法是仅在c/c++文件中使用openMP-statments。 最佳答案 我刚刚找到了这个http://www.cse.buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf第25页说:使用gcc:-#includeomp.h添加-fopenmp标

c++ - CUDA C和C++的解释

谁能给我一个关于CUDAC和C++的性质的很好的解释?据我了解,CUDA应该是带有NVIDIAGPU库的C。截至目前,CUDAC支持一些C++特性,但不支持其他特性。NVIDIA的计划是什么?他们是否会在C基础上构建并添加自己的库(例如Thrust与STL)与C++的库平行?他们最终会支持所有的C++吗?在.cu文件中使用C++头文件是不是很糟糕? 最佳答案 CUDA是一个平台(架构、编程模型、汇编虚拟机、编译工具等),而不仅仅是一种单一的编程语言。CUDAC只是在此平台上构建的众多语言系统之一(CUDAC、C++、CUDAFort

c++ - OpenCL 或 CUDA 走哪条路?

我正在研究使用GPU处理流数据的方法。我有两个选择,但无法决定走哪条路?我的标准如下:易于使用(良好的API)社区和文档性能future我将在linux下用C和C++编写代码。 最佳答案 OpenCL从您的生产代码接口(interface)可在不同的图形硬件之间移植操作有限,但已准备好快捷方式CUDA独立语言(CUDAC)仅限nVidia硬件几乎完全控制代码(使用类C语言进行编码)大量分析和调试工具底线——OpenCL是可移植的,CUDA仅适用于nVidia。但是,作为一门独立的语言,CUDA功能更强大,并且有很多非常好的工具。易于

python - PyTorch/Gensim - 如何加载预训练的词嵌入?

我想将使用gensim预训练的word2vec嵌入加载到PyTorch嵌入层中。如何将gensim加载到PyTorch嵌入层中的嵌入权重? 最佳答案 我只是想报告我关于使用PyTorch加载gensim嵌入的发现。PyTorch0.4.0及更高版本的解决方案:v0.4.0有一个新功能from_pretrained()这使得加载嵌入非常舒适。这是文档中的一个示例。importtorchimporttorch.nnasnn#FloatTensorcontainingpretrainedweightsweight=torch.FloatT

python - 使用 PyTorch 生成 LSTM 时间序列

这几天,我正在尝试使用LSTM构建一个简单的正弦波序列生成,但到目前为止还没有看到任何成功。我从timesequencepredictionexample开始我想做的不同之处在于:使用与LBFGS不同的优化器(例如RMSprob)尝试不同的信号(更多正弦波分量)这是mycode的链接.“experiment.py”为主文件我做的是:我生成人工时间序列数据(正弦波)我将这些时间序列数据切成小序列我的模型的输入是时间序列0...T,输出是时间序列1...T+1会发生什么:训练和验证损失平稳下降测试损失非常低但是,当我尝试从种子(来自测试数据的随机序列)开始生成任意长度的序列时,一切都会出错

python - PyTorch 内存模型 : "torch.from_numpy()" vs "torch.Tensor()"

我正在尝试深入了解PyTorch张量内存模型的工作原理。#inputnumpyarrayIn[91]:arr=np.arange(10,dtype=float32).reshape(5,2)#inputtensorsintwodifferentwaysIn[92]:t1,t2=torch.Tensor(arr),torch.from_numpy(arr)#theirtypesIn[93]:type(arr),type(t1),type(t2)Out[93]:(numpy.ndarray,torch.FloatTensor,torch.FloatTensor)#ndarrayIn[94]