2016-11-11 3 views
0

私はPETMライブラリを使用して、独自のプログラムで大規模な分散処理システムの線形方程式を解きたいと思っています。また、私はこの目的のために利用可能なGPUリソ​​ースに従事したいと思います。 3D計算領域の離散表現のために構造化メッシュを使用しているので、プロセス間の余分なデータ転送を避けるためにPETSc分散配列を使用することが望ましいです。 ./configure --prefix=/usr/local/petsc --with-mpi=1 --with-cuda=1 --with-cusp=1 --with-cusp-include=/usr/local/cuda/include/cusp/ --with-cusp-lib=MPI + CUDAおよびPETSc分散アレイを使用した大規模な1次方程式系の解法

をしてから/usr/local/petsc場所にインストール:

私は、次の文字列でPETScを設定しました。

今、私は簡単なテストプログラムでDMDAオブジェクトを作成しようとしています:

#include <stdio.h> 
#include <math.h> 
#include <string.h> 
#include <stdlib.h> 

#include "cuda.h" 
#include "mpi.h" 

/* PETSc headers */ 
#include "petscsys.h" 
#include "petscksp.h" 
#include "petscdmda.h" 
#include "petscksp.h" 

int main(int argc, char *argv[]) 
{ 
    MPI_Init(&argc, &argv); 

    PetscInitialize(&argc, &argv, NULL, NULL); 

    DM da; 
    Vec x, b;    /* right hand side, exact solution */ 
    Mat A;     /* linear system matrix */ 
    KSP ksp;     /* linear solver context */ 
    KSPType ksptype; 
    PC pc; 
    PCType pctype; 
    PetscErrorCode ierr; 

    PetscInt Nx = 100; 
    PetscInt Ny = 100; 
    PetscInt Nz = 100; 

    PetscInt NPx = 1; 
    PetscInt NPy = 1; 
    PetscInt NPz = 1; 

    ierr = DMDACreate3d(PETSC_COMM_WORLD, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, DMDA_STENCIL_STAR, 
         Nx, Ny, Nz, NPx, NPy, NPz, 1, 1, NULL, NULL, NULL, &da); CHKERRQ(ierr); 

    ierr = DMSetMatType(da, MATMPIAIJ); CHKERRQ(ierr); 

    /* Create distributed matrix object according to DA */ 
    ierr = DMCreateMatrix(da, &A); CHKERRQ(ierr); 

    /* Initialize all matrix entries to zero */ 
    /* 
    ierr = MatZeroEntries(A); CHKERRQ(ierr); 
    */ 

    fprintf(stdout, "All was done.\n"); 

    PetscFinalize(); 
    MPI_Finalize(); 

    return 0; 
} 

しかし、私はそれを実行しているとき、私はエラーを取得する:

[0]PETSC ERROR: --------------------- Error Message -------------------------------------------------------------- 
[0]PETSC ERROR: No support for this operation for this object type 
[0]PETSC ERROR: DM can not create LocalToGlobalMapping 
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting. 
[0]PETSC ERROR: Petsc Development GIT revision: v3.7.4-1919-g73530f8 GIT Date: 2016-11-09 03:25:31 +0000 
[0]PETSC ERROR: Configure options --prefix=/usr/local/petsc --with-mpi=1 --with-cuda=1 --with-cusp=1 --with-cusp-include=/usr/local/cuda/include/cusp/ --with-cusp-lib= 
[0]PETSC ERROR: #1 DMGetLocalToGlobalMapping() line 986 in ~/petsc/src/dm/interface/dm.c 
[0]PETSC ERROR: #2 DMCreateMatrix_DA_3d_MPIAIJ() line 1051 in ~/petsc/src/dm/impls/da/fdda.c 
[0]PETSC ERROR: #3 DMCreateMatrix_DA() line 760 in ~/petsc/src/dm/impls/da/fdda.c 
[0]PETSC ERROR: #4 DMCreateMatrix() line 1201 in ~/petsc/src/dm/interface/dm.c 
[0]PETSC ERROR: #5 main() line 47 in petsc_test.c 
[0]PETSC ERROR: No PETSc Option Table entries 
[0]PETSC ERROR: ----------------End of Error Message -------send entire error message to [email protected] 

これで間違っている可能性がどのような簡単なコード?

更新日: uname -aコマンドの結果: Linux PC 4.4.0-47-generiC#68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

MPI仕様のオープンMPI実装が使用されます。

答えて

0

DMDACreate3d()の後にある程度明示的にDMSetUp()を呼び出す必要があります。詳細については、hereを参照してください。

関連する問題