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