问题标签 [pardiso]
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.
c++ - 使用 GCC 编译 PARDISO 线性求解器测试用例
我正在尝试使用PARDISO编译线性系统求解器。测试用例 (pardiso_sym.c) 也是从上面的同一网站下载的。
我在目录中有以下文件:
然后我尝试使用以下命令编译它:
但它给出了这个错误:
我的编译方法有什么问题?
这是我的系统的附加信息:
更新:
使用 Dave Gamble 的建议来识别该库。但现在它给出了不同的错误:
numerical-methods - 将 ARPACK 与 PARDISO 一起使用
这是一个与此处的问题类似的问题。
我想知道是否已经有与PARDISO 求解器和英特尔 mkl库配合良好的ARPACK Eigensolver的开源实现或示例?
graph - 压缩稀疏行 (CSR) 稀疏矩阵的快速访问元素
我想测试一些较新的稀疏线性求解器,我想知道是否有一种快速填充矩阵的方法。我感兴趣的格式是 CSR (http://goo.gl/hLXYd)。假设 CSR 格式的矩阵由下式给出:
所考虑的稀疏矩阵来自网络。所以,我有数千个节点,其中一些节点通过线连接。因此,矩阵在结构上是对称的。每个连接 (i,j) 向对角项 (i,i) 和 (j,j) 以及非对角项 (i,j) 和 (j,i) 添加一些内容。我可以在相同的节点 (i,j,1)、(i,j,2) 之间有多个连接...因此,我可能需要多次重新访问 2 个对角线和 2 个非对角线元素。
我知道我可以通过执行 rowIndex(i) 来获得行的开头。然后,我必须遍历元素 columns(rowIndex(i):rowIndex(i+1)-1) 才能找到 j 的位置。
问题:
有没有一种方法可以在 CSR 格式中更快地访问元素,而无需每次我想更新元素时都进行搜索?
一些澄清:我只需要从头开始填写矩阵。矩阵在结构上是对称的,并不是真正对称的。保存的值与网络数据(阻抗、电阻等)有关,它们具有真实值。一般来说,价值(i,j)<>价值(j,i)。我有 (name1,i1,j1,value1), (name2,i2,j2,value2) 等形式的元组。这些元组没有排序,2 个元组可以引用相同的 i,j 值,这意味着它们需要被添加
提前致谢!
visual-studio-2010 - 使用 Visual Studio 编译的英特尔 MKL Pardiso 求解器
我正在尝试创建一个简单的示例,以便在 MKL 英特尔库中使用 Pardiso 求解器。我一直在按照提供的示例进行操作,但是如果我将对 Pardiso 的调用放在子例程中,它将不起作用。恐怕这与 INCLUDE 语句或链接方面有关。
所有子程序使用的数组都包含在一个名为 variables 的模块中
包含程序的文件如下:
最后是文件 initpardiso
现在,我还在 Visual Studio 项目配置中添加了 Additional Include Directories(即
如果我评论对 pardiso 的调用,一切正常,否则它将停止编译并出现此错误:
错误 1 错误 #6285:此通用子例程调用没有匹配的特定子例程。[PARDISO_64] ....PardisoFortran\initpardiso.f 144
有什么想法吗?这是顶部的 INCLUDE 语句的问题吗?我应该在哪里包括它?
c++ - BLAS、Lapack、Gomp 库(64 位)的链接问题
我一直在尝试使用以下命令编译我的 C++ 程序:
和
在 Ubuntu 13.04 下,64 位。问题是我仍然不断收到以下错误消息:
它似乎找到了图书馆。我尝试了不同的方法,例如重新安装库、更改库的顺序、检查我是否真的有它们的 64 位版本
以及 http://www.ibm.com/developerworks/aix/library/au-portfortan.html#ur页面上“库的递归引用”中的建议,尽管分组不适用于 g++。还有什么可能是错的?我还尝试为 Theano 安装编译一个优化版本的 openMP(虽然是不同的项目)。难道这会以某种方式弄乱我的openMP吗?我该如何测试呢?我想再次删除该优化版本并从突触包管理器安装一个。我怎样才能做到这一点?
multithreading - intel MKL pardiso 不会在 fortran 中并行运行
我正在尝试让 intel MKL 版本的 pardiso 与多个内核一起工作。mtype=1
我用它来求解具有大约 60K 方程的结构对称系统 ( )。
这些是我的ipram
参数。编译时我有
在调用 pardiso 之前,我还设置了 MKL 和 openmp 可用的线程数
call mkl_set_num_threads(3)
call omp_set_num_threads(3)
据我了解,如果允许或启用“足够”大问题,所有 MKL 函数都将尝试使用多个线程。我已经使用 OMP 实现了一些并行性,并且代码在多个内核上运行。我称之为 pardiso 的地区是连续的。我的问题是,让 pardiso 与多核一起工作还需要什么?
尝试使用默认值iparm
,即iparm(1)=0
没有变化
fortran - Fortran Pardiso 稀疏矩阵格式问题
我目前正在编写一些代码,其中涉及在 Fortran 中构建一个稀疏矩阵并解决一个简单的 AX=b 线性系统。为此,我应项目主管的要求使用 Pardiso 稀疏矩阵库。
代码分为两部分。前半部分构建矩阵和右手边,后半部分调用 Pardiso 解决该系统。我知道前半部分有效,因为将这些数据导出到 Fortran 之外并用 Python 解决系统产生了预期的结果。但是,我无法让 Pardiso 正常工作,主要是因为我误解了它给出的错误消息。该手册解释得很少,互联网论坛上也很少(没有双关语)充斥着与 Pardiso 相关的问题。
我用于 Pardiso 的设置如下:
我得到的错误是:
error PARDISO (sequence_ido,parameters ) error_num= 4 输入检查:
matrix_number_new 22 ido 32675 不兼容
手册或互联网没有说明这意味着什么。pardiso_chkmatrix
并且pardiso_printstats
不要吐出任何错误,所以我不确定发生了什么。
c++ - 如何在 VC++ 中使用 .lib、.dll 和 .exp 文件?
我正在尝试用pardiso求解线性方程组。我已经从网站下载了我可能需要的所有内容(三个文件:.lib、.dll 和 .exp 文件)。
我知道什么是dll和lib,对.exp一无所知。此外,我在互联网上搜索并发现我需要一个头文件。但是pardiso没有提供给我 .h 文件。
更重要的是,pardiso提供了一些我想使用的示例http://www.pardiso-project.org/manual/pardiso_unsym.cpp。
现在我的问题来了。如何在没有头文件的 VC++ 2015 中使用 .lib/.dll/.exp 文件?我知道加载 .dll 文件有两种方法:动态和静态,但不知道如何实现。
也许我的问题很简单,因为我对 C/C++ 和 dll 了解不多。所以请帮助我。
太感谢了!
c++ - 与 Pardsio 5.0.0 和 Intel MKL 链接
我想用 MKL 支持(我使用 Eigen)以及新的Pardiso solver来编译我的代码。问题是 MKL 附带了一个(旧)版本的 Pardiso,其接口功能与 Pardiso 5.0.0 不兼容。
更准确地说,我在编译时收到以下错误:
是否可以在同一个应用程序中编译和链接两者?不幸的是不得不选择,因为我的代码使用 MKL 总体上更快,但 Pardiso 5.0.0 让我成为人群中更快的线性求解器。
c++ - 并行场景中的 Eigen::PardisoLU (MKL)
我正在尝试将 Eigen(3.3.1 或 3.3.2)与 INTEL 的 MKL PardisoLU 求解器一起使用。我正在使用 EIGEN_USE_MKL_ALL 标志并安装了 IntelSWTools 2017。目前仅在带有 VS C++ 的 Win10 上尝试过,但这不是目标平台。
求解器本身看起来比 SparseLU 工作得快得多,这很好(我对使用非常大的矩阵很感兴趣)。但是在并行场景中,它不能正确解决我的问题。SparseLU 没有这样的问题,或者当我删除上层并行性时(评论pragma parallel for
下面)。
PardisoLU 本身应该是线程安全的,那我做错了什么?
该场景非常简短,如下所示