问题标签 [cula]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - gputools:安装错误
我正在使用 NVidia Tesla 2050 GPU 卡设置新的 Dell Precision 工作站。我想安装 R 的包 gputools。我的操作系统是带有 KDE 4.4 的 openSuse 11.3。
我下载了 NVidia 的 CUDA Toolkit 3.2 并将其安装在 /usr/local/cuda 中,我还下载了最新版本的 CULA 工具集(版本 R10)并将其安装在 /usr/local/cula 中。
尝试从 R 中安装 gputools 时使用: install.packages("gputools") 我收到以下错误消息:
使用旧版本的 CULA 和 CUDA 工具集也无济于事。
cuda - 对于小型数据集,为什么使用 cula(dgesv) 求解线性方程组比 mkl (dgesv) 慢
我编写了一个 CUDA C 和 C 程序来求解矩阵方程 Ax=b 使用 CULA 例程 dgesv 和 MKL 例程 dgesv。似乎对于一个小数据集,CPU 程序比 GPU 程序快。但是随着数据集增加到超过 500,GPU 克服了 CPU。我正在使用我的戴尔笔记本电脑,它有 i3 CPU 和 Geforce 525M GPU。GPU最初性能缓慢的最佳解释是什么?
我写了另一个程序,它接受两个向量,将它们相乘并相加。这就像点积一样,只是结果是向量和而不是标量。在这个程序中,即使对于小数据集,GPU 也比 CPU 快。我正在使用同一个笔记本。为什么与上面解释的相比,即使对于小数据集,该程序中的 GPU 也更快?是不是因为求和涉及的计算量不多?
matlab - 改进 CUDA GPU 上 A*x=B 的 Matlab + CUSP MEX 解决方案
Matlab 仍然无法在 CUDA GPU 上计算稀疏矩阵。也没有这样的工具箱(夹克已停产)。这就是为什么我使用通过 MEX 文件集成到 Matlab 的 CUSP。但是,我开发的工具有两个问题:
- 对于大型方程系统(实际上仅从 100 个元素开始),它非常不稳定,
- 它比 Matlab CPU 替代品慢几十或几百倍。
我正在求解 A*x=b,其中 A 是稀疏的对称矩阵,b 是向量。
硬件规格:英特尔 i7 3630QM、GT640M 2G、8 GB DDR3。软件:Windows 8 64 位、Matlab R2012b 64 位、CUDA 5.0 64 位、CUSP 0.3.1、Windows SDK v7.0、VS2010 编译器。
墨西哥代码:
使用以下命令在 Matlab 上的 MEX 文件(ex.cu)中编译此代码(如有必要,将第二个命令更改为 32 位):
样本矩阵、向量和编译的 64 位 MEX 函数: http: //www.failai.lt/3fqkhvoslxyt/sampleData.7z.htm
利用:
其中时间 - 单独的执行时间,最后一个元素 - 用于解决方案的迭代计数(bicgstab 监视器),结果 - K*x=F 的解决方案。
结果(http://www.failai.lt/rupaliln7kfb/results.7z.htm):
- K_int_6,F_int_6 - 好的
- K_11, F_11 - x(1) 错误,其他正常
- K_100000, F_100000 - x(1) 错误,其他从一开始还可以,但后来与正确结果相比正在减少。
- K_100000, F_100000 - 在 GPU (MEX) 上执行持续 0.6 秒,而在 CPU ( tic;xcpu=K\F;toc; ) 上持续 0.014 秒。
你能看看那个代码,也许试试 MEX 函数,报告你的结果,建议如何改进这个函数?也许您知道任何可以在 GPU 上进行稀疏计算的替代方案?我希望,在 Matlab 发布对 GPU 上稀疏矩阵的兼容性之前,它对每个人都有用 :)
cuda - 如何在 CUDA 中将矩阵复制到更大的矩阵中
我想在我的 GPU 上设置一个大矩阵来用 CULA 求解相应的方程组。
给你一些数字,以了解问题:
现在我想将(100x100)
小矩阵的每个四分之一复制到第二个矩阵的特定部分。
我发现了两个可能但显然很慢的例子:cublasSetMatrix
并cublasGetMatrix
支持前导维度的规范,因此我可以将零件放在我想要的位置,但必须将矩阵复制回主机。另一个示例是cudaMemcpy
,它不支持前导维度。在这里,我可以手动复制每一行/列(目前我不确定这个例程使用什么,数据来自 Fortran)。但这样一来,我应该得到很大的开销......
有没有比编写自己的内核更好的方法来复制矩阵?
cuda - 如何在 GPU 上通过 CULA 使用 3D 矩阵?
在某些代码的 CPU 版本中,我有很多如下所示的内容:
A[i]
一些大小的二维矩阵在哪里。
我希望能够在使用 CULA 的 GPU 上执行此操作(我不只是在做乘法,所以我需要 CULA 中的线性代数运算),例如:
但是,我想在程序开始时将我的 B 提前存储在 GPU 上,因为它们不会改变,但我不知道如何去做。或者我一般如何存储我的数组以便这是可能的。
我在网上看到了关于在 CUDA 中使用 3D 矩阵的各种内容,但它们似乎不太适用于随后能够对 CULA 函数进行函数调用。
从下面答案中的示例中,我有这个:
我已将 double **GlobalFVecs_d 声明为全局变量。但是当它上线时我得到一个段错误
然而,这似乎正是另一个例子中的内容?
我意识到它不一样,所以我现在有了可以编译的代码:
但是,如果我现在尝试通过以下方式访问它:
它在这里出现了错误,这不是如何获取数据吗?
c++ - 访问指向 GPU 上其他向量的指针向量
所以这是我提出的一个问题的后续,目前在一些代码的 CPU 版本中,我有很多看起来如下所示的东西:
其中 A[i] 将是某个大小的二维矩阵。
我希望能够在使用 CULA 的 GPU 上执行此操作(我不只是在做乘法,所以我需要 CULA 中的线性代数运算),例如:
但是我想在程序开始时将我的 B 提前存储在 GPU 上,因为它们不会改变,所以我需要一个向量,其中包含指向构成我的 B 的向量集的指针。
我目前有以下编译代码:
但如果我现在尝试通过以下方式访问它:
它在这里出现故障,这不是如何获取数据吗?
我正在调用的内核函数只是:
我做错了什么?最后请注意,我还想作为第一个示例,在每个 GlobalFVecs_d[i] 上调用 cula 函数,但现在甚至这都行不通。
你认为这是最好的方法吗?如果可以只传递 CULA 函数的一个大连续向量的切片,我可以这样做,但我不知道它是否支持。
干杯林德利
visual-c++ - GPUMLib unresolved externals at build time
I am trying to build GPUMLib, and I get the following errors
Any ideas what might be causing this ? Please note that this is the only part that is unsuccessfully built from the entire library
r - Rcpp 和 CULA:分段错误
我从gputools R 包中提取了相关位,通过动态加载链接到culatools的共享库,使用Rcpp在我的 GPU 上运行 QR 分解。一切都在我的 Mac 上的终端和R.app中顺利运行。结果与R的qr()函数一致,但问题是退出R.app时出现分段错误(使用终端时不会出现该错误):
我想我将问题缩小到链接到culatools的 .c 文件中的指针“a”和“tau” :
我在我的 Mac 上编译了 .c 文件,使用:
我写了一个 .cpp 文件,它使用Rcpp并动态加载共享库 gpuQR.so:
我使用以下方法在R中编译了 .cpp 文件:
并运行了一个例子:
有人知道如何解决分段错误吗?
c - CULA 中的 culagesvd()
我想使用该culadgesvd()
函数来计算矩阵的 SVD。我不清楚如何使用文档中的信息在 C/C++ 中实际使用它。谁能给我一个完整的小 C 程序,一个模板,以显示该函数的基本使用方式?只需几行(使用 and 之类的东西culaInitialize()
)culaShutdown()
就可以了,我只需要看看这个函数如何运行而不会出错。