问题标签 [cusp-library]
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.
matlab - cusp::io::write_matrix_market_file() 给出访问冲突异常
我正在尝试使用 CUSP 将 272 x 544 双矩阵从 Matlab 读取到 ELLPACK 格式的稀疏矩阵中。到目前为止,我能找到的唯一方法是将数据读入 mxArray,将 mxArray 读入 double* 数组(使用 mxGetPr()),然后将值复制到 cusp::array2d 中。在那里,我需要将 array2d 写入 .mtx 文件,然后将文件读入 coo_matrix,最后将其转换为 ell_matrix。对我来说这听起来很傻,但鉴于 CUSP 的文档很少,这是我能想到的最好的。如果有人推荐一种更好的方法,我将非常感激。
无论如何,我现在面临的问题是,在我读取 array2d 中的数据并尝试使用 cusp::write_matrix_market_file() 将其写入 .mtx 文件后,我收到“未处理的异常:写入位置的访问冲突”错误消息. 在尝试将它们写入文件之前,我尝试从 array2d 打印一些值,只是为了确保一切都到位并且这些值似乎存储在 array2d 中。我也尝试将类型更改为浮动,但错误仍然存在。这是我执行此任务的代码:
在我得到异常时,调用堆栈指向: cusp::io::detail::write_value >,float>(std::basic_ofstream > & output={...}, const float & value=) 行116 + 0x5 字节 C++
编辑:快速更新:我通过修改文件“matrix_market.inl”摆脱了异常,他们有一个奇怪的嵌套循环,通过遍历矩阵 cols 然后再次 cols 将值写入文件(从未考虑过 num_rows)显然因为我的矩阵是不是方形的,代码试图访问不存在的位置。这是修改后的代码:
我不确定从这个 .mtx 文件读取时这会如何影响不同的格式构造函数
cuda - 如何将 COO 矩阵中的 row_indices 复制到 CUSP 中的推力向量
我一直在尝试将 COO 矩阵的行索引、列索引和值复制到单独的推力向量中,但我发现我无法这样做。
下面是代码
Ithe sim_row 是一个推力向量指针,已在之前的一些代码中分配了内存,此处不相关。
代码编译,但在运行时失败并出现错误:
在抛出“thrust::system::system_error”实例后调用终止 what(): invalid argument Aborted (core dumped)
有人可以告诉我我做错了什么吗?
谢谢阿克谢
matlab - 如何将稀疏矩阵从 MEX 中的 CUSP::csr_matrix 返回到 Matlab?
我正在开发我的 MEX 文件,用于使用 CUDA 进行稀疏矩阵计算。我正在使用 CUSP 库。我不知道如何将 cusp::csr_matrix 返回到 Matlab。例如,我有
因此,它是 CSR 格式的 At 矩阵,可以说,我已经计算过了。现在,我必须将它返回给 Matlab。像这样的东西:
但是,当然,它不是那样工作的,首先是因为 At 在 GPU 上。我想我应该使用 At.values 和索引方法。但是,如何将它们分配给主机数据?
有人可以建议如何做这一切吗?:)
output - 无法理解 CUSP 中 CSR 表示的输出
我正在尝试使用 CUSP 库。我正在阅读 .txt 文件,这些文件基本上是稀疏的 COO 表示。我正在使用 CUSP 转换为 CSR 格式。
当我用它打印矩阵时,cusp::print()
它会打印出 COO 表示的正确结果。但是,当我将矩阵转换为 CSR 时,我编写了自己的打印函数,但结果不是我想要的。
这是片段
假设 fill2DCooMatrixFromFile 填充以下矩阵
以下是我使用代码得到的输出
我无法理解作为输出的 RowOffset。
c++ - cusp继承Class和*.cu设备代码编译
如果这不是微不足道的,请原谅我。cusp::csr_matrix<int,float,cusp::device_memory>
我有一个小班,像这样环绕:
到目前为止,我没有做任何我认为需要为设备编译的事情。但是我确实计划在这个特定的类中编写代码,作为一个成员/函数,应该在设备上执行,但是如果我理解正确,cusp
已经为我提供了这个功能?例如:
理想情况下,计算范数或转置应该为设备执行而编译。如果这是类方法的一部分,在这种情况下我该怎么办?
我是否制作*.hpp
类的整个头文件 a*.cu
并添加它以进行nvcc
编译?我是否仅在 a 中标记实际代码(而不是标头声明)*.cu
并将其添加以进行nvcc
编译?或者这些都没有必要?
cuda - CUSP 函数生成具有随机值的矩阵
我想知道 CUSP 库是否提供了一个函数来创建具有特定列数、行数和任何随机值的矩阵?
我找到了 poisson5pt 函数,但它没有返回我指定的维度的矩阵!
提前致谢
cuda - 从设备内核访问尖点变量元素
我在从设备/全局内核访问和分配 cusp array1d 类型的变量时遇到问题。附加代码给出错误
下面的代码
cuda - 访问 cusp::complex 向量的实部和虚部
我需要访问 cusp::complex 类型向量的实部和虚部,以便通过 mex 将其发送到 matlab 变量。如何分别访问类型向量的实部和虚部。
我目前正在制作两个 std::vectors 并循环遍历它。
然后使用推力将其转移到 matlab 变量中。
我想知道如何使用推力访问复数数组的实部和虚部
通过 mxArray 的相应实部和虚部指针来传递它。直接,这样我就可以避免循环。
matrix - CUSP CG收敛
我使用 CUSP 共轭梯度法来求解我的对称稀疏矩阵。而且我不知道为什么它不收敛。我使用的矩阵尺寸并不大(1K 到 100K)。相同的线性系统很容易用 MKL 求解,所以矩阵不是病态的。但是我尝试添加预处理器,但没有结果:
对角线预处理器和 AINV(不完全 Cholesky)给出了残差的无限增长(只要 cg 和 bicgstab)
这是我的代码:
为什么它不能正常工作?
PS 据我了解,CUSP 假设索引从零开始,这就是我减少 csrRowPtr 和 csrColInd 的原因。当我使用 nVidia cuSparse 库时,有一个选项可以设置其他参数,例如矩阵类型和填充模式。我如何确定它们在 CUSP 中设置正确?
c++ - 在 Visual Studio C++ 项目中使用 cusp
我在 VS2012 Ultimate 上使用 cusp v.0.4.0、cuda V5.5。我使用新项目向导创建了一个 CUDA 项目,并将尖点路径添加到它的项目 properties\VC++ Directories\Include Directories中。我在VS2012生成的*.cu文件中编写了我的代码,项目编译构建成功,但执行时出现R6010错误。我通过将project properties\CUDA C/C++\Device\Code Generation的默认值从compute_10,sm_10 更改为compute_30, sm_30 来解决这个问题,这是我的 sm 版本。一切运作良好。
现在我想在 C++ 项目中使用相同的代码。当我将它添加到一个新的 C++ 项目并将尖头路径添加到VC++ Include Directories时,项目构建失败,并在几个文件中出现大量语法错误:
错误 5 错误 C2144: 语法错误: 'void' 应该以 ';' 开头 c:\users\administrator\downloads\android\cusplibrary-master\cusplibrary-master\cusp\detail\device\spmv\coo_flat.h 164
22 IntelliSense:应为“;” c:\Users\Administrator\Downloads\Android\cusplibrary-master\cusplibrary-master\cusp\detail\device\spmv\coo_flat.h 272
...
像这样的错误还有 108 个。如果这些是语法错误,为什么它们没有出现在我的 CUDA 解决方案中?如何在 C++ 项目中成功构建代码?