我目前有一个用C编写的MPI程序,我想使用ScaLAPACK的例程。 我正在研究LDA的并行版本,其中一步是反转矩阵。 我在ScaLAPACK中找到了一个解决这个pdgetri.f的例程(它是用fortran编写的,我不确定是否存在c例程),但是我不确定如何配置它来工作。我正在使用Windows和英特尔双核笔记本电脑。目的是说教而不是表现。
答案 0 :(得分:1)
SCALAPACK依赖BLACS为正在使用的任何消息传递系统提供抽象。如果您的代码中已建立了现有的MPI通信器,则可以使用blacs_gridmap初始化映射到通信器上的BLACS上下文。然后可以使用该上下文创建SCALAPACK分布式数组,然后将这些数组传递给SCALPACK例程,然后对它们进行操作。
如何解决C-Fortran接口问题将在很大程度上取决于您使用的编译器。如果您有一个支持Fortran 2003功能的“现代”编译器,您可以使用C互操作性语言功能为您需要的功能编写接口包装器,然后直接调用它们。在UNIX / LINUX样式系统上,F2C样式接口是从C调用Fortran的实际方法,尽管一些细节通常是编译器特定的。我根本不使用Windows,所以如果你不能使用Fortran 2003互操作性,我真的可以帮到你。