[petsc-users] Use block Jacobi preconditioner with SNES
Matthew Knepley
knepley at gmail.com
Tue Aug 28 12:32:10 CDT 2018
On Tue, Aug 28, 2018 at 10:04 AM Adam Denchfield <adenchfi at hawk.iit.edu>
wrote:
> " PETSc developers - do you think we should put the callback
> functionality into PETSc? It allows doing things that are otherwise not
> doable but is rather ugly (perhaps too specialized)?"
>
> Though I only worked on it over the summer, the functionality you describe
> (using different solvers on different blocks) sounds useful to me. Quantum
> mechanics applications sometimes produce block matrices where the blocks
> have significantly different structure.
>
I don't think we need callbacks, you just need to give different prefixes
to different blocks. I have done this before.
Matt
> On Tue, Aug 28, 2018, 5:37 AM Matthew Knepley <knepley at gmail.com> wrote:
>
>> On Tue, Aug 28, 2018 at 5:34 AM Ali Reza Khaz'ali <arkhazali at cc.iut.ac.ir>
>> wrote:
>>
>>>
>>> > Actually you do not need my new branch to achieve what you
>>> desired. All you need in your main program is something like
>>> >
>>> > ierr = SNESCreate(PETSC_COMM_WORLD,&snes);CHKERRQ(ierr);
>>> > ierr = SNESGetKSP(snes,&ksp);CHKERRQ(ierr);
>>> > ierr = KSPGetPC(ksp,&pc);CHKERRQ(ierr);
>>> > ierr = PCSetType(pc,PCBJACOBI);CHKERRQ(ierr);
>>> > ierr = PCBJacobiSetTotalBlocks(pc,3,lens);CHKERRQ(ierr); /* here
>>> you set your block sizes to whatever you need */
>>> >
>>> > Then simply do not call PCBJacobiGetSubKSP() but use the options
>>> database to set the inner solver with -sub_pc_type lu -sub_ksp_type preonly
>>> >
>>> > I have updated the branch to move the PCBJacobiSetTotalBlocks()
>>> to the main program but left the callback in there for setting the inner
>>> solver types (though as I just said you don't need to use the callback
>>> since you can control the solver from the options database). The callback
>>> is needed, if, for example, you wished to use a different solver on
>>> different blocks (which is not your case).
>>> >
>>> > Barry
>>> >
>>> > PETSc developers - do you think we should put the callback
>>> functionality into PETSc? It allows doing things that are otherwise not
>>> doable but is rather ugly (perhaps too specialized)?
>>> >
>>> >
>>> >
>>>
>>> It works! Thanks a lot. Here is log of a 30x30x10 system (18000 blocks,
>>> with GMRes solver). I like to have variable sized block preconditioners
>>> and solvers in PETSc. Their application is more than it may first
>>> appear. If it is possible, I would like to contribute to PETSc code, to
>>> build a variable sized block Jacobi and block ILU(k) at the first step
>>> (If I can, of course). Where can I start?
>>>
>>
>> Okay, the best place to start I think is to make an example which shows
>> what you want
>> to demonstrate. Then we can offer feedback, and if anything should move
>> to the library,
>> we can do that in a subsequent contribution.
>>
>> The best way, I think, to make an example is to fork the PETSc repository
>> on Bitbucket
>> (or Github), add you example code to the relevant directory, such as
>>
>> $PETSC_DIR/src/snes/examples/tutorials
>>
>> It will build with
>>
>> make ex1001
>>
>> or whatever number you choose, and then you make a Pull Request (there is
>> documentation
>> here:
>> https://bitbucket.org/petsc/petsc/wiki/pull-request-instructions-git).
>> Note there is a
>> Developer's Manual which has things like code structure guidelines.
>>
>> Thanks,
>>
>> Matt
>>
>>
>>> type: newtonls
>>> maximum iterations=2000, maximum function evaluations=2000
>>> tolerances: relative=0.0001, absolute=1e-05, solution=1e-05
>>> total number of linear solver iterations=3
>>> total number of function evaluations=2
>>> norm schedule ALWAYS
>>> SNESLineSearch Object: 1 MPI processes
>>> type: bt
>>> interpolation: cubic
>>> alpha=1.000000e-04
>>> maxstep=1.000000e+08, minlambda=1.000000e-12
>>> tolerances: relative=1.000000e-08, absolute=1.000000e-15,
>>> lambda=1.000000e-08
>>> maximum iterations=40
>>> KSP Object: 1 MPI processes
>>> type: gmres
>>> restart=30, using Classical (unmodified) Gram-Schmidt
>>> Orthogonalization with no iterative refinement
>>> happy breakdown tolerance 1e-30
>>> maximum iterations=5000, initial guess is zero
>>> tolerances: relative=1e-05, absolute=1e-06, divergence=10000.
>>> left preconditioning
>>> using PRECONDITIONED norm type for convergence test
>>> PC Object: 1 MPI processes
>>> type: bjacobi
>>> number of blocks = 18000
>>> Local solve is same for all blocks, in the following KSP and PC
>>> objects:
>>> KSP Object: (sub_) 1 MPI processes
>>> type: preonly
>>> maximum iterations=10000, initial guess is zero
>>> tolerances: relative=1e-05, absolute=1e-50, divergence=10000.
>>> left preconditioning
>>> using NONE norm type for convergence test
>>> PC Object: (sub_) 1 MPI processes
>>> type: lu
>>> out-of-place factorization
>>> tolerance for zero pivot 2.22045e-14
>>> matrix ordering: nd
>>> factor fill ratio given 0., needed 0.
>>> Factored matrix follows:
>>> Mat Object: 1 MPI processes
>>> type: mkl_pardiso
>>> rows=6, cols=6
>>> package used to perform factorization: mkl_pardiso
>>> total: nonzeros=26, allocated nonzeros=26
>>> total number of mallocs used during MatSetValues calls
>>> =0
>>> MKL_PARDISO run parameters:
>>> MKL_PARDISO phase: 33
>>> MKL_PARDISO iparm[1]: 1
>>> MKL_PARDISO iparm[2]: 2
>>> MKL_PARDISO iparm[3]: 1
>>> MKL_PARDISO iparm[4]: 0
>>> MKL_PARDISO iparm[5]: 0
>>> MKL_PARDISO iparm[6]: 0
>>> MKL_PARDISO iparm[7]: 0
>>> MKL_PARDISO iparm[8]: 0
>>> MKL_PARDISO iparm[9]: 0
>>> MKL_PARDISO iparm[10]: 13
>>> MKL_PARDISO iparm[11]: 1
>>> MKL_PARDISO iparm[12]: 0
>>> MKL_PARDISO iparm[13]: 1
>>> MKL_PARDISO iparm[14]: 0
>>> MKL_PARDISO iparm[15]: 144
>>> MKL_PARDISO iparm[16]: 144
>>> MKL_PARDISO iparm[17]: 0
>>> MKL_PARDISO iparm[18]: 37
>>> MKL_PARDISO iparm[19]: 0
>>> MKL_PARDISO iparm[20]: 0
>>> MKL_PARDISO iparm[21]: 0
>>> MKL_PARDISO iparm[22]: 0
>>> MKL_PARDISO iparm[23]: 0
>>> MKL_PARDISO iparm[24]: 0
>>> MKL_PARDISO iparm[25]: 0
>>> MKL_PARDISO iparm[26]: 0
>>> MKL_PARDISO iparm[27]: 0
>>> MKL_PARDISO iparm[28]: 0
>>> MKL_PARDISO iparm[29]: 0
>>> MKL_PARDISO iparm[30]: 0
>>> MKL_PARDISO iparm[31]: 0
>>> MKL_PARDISO iparm[32]: 0
>>> MKL_PARDISO iparm[33]: 0
>>> MKL_PARDISO iparm[34]: -1
>>> MKL_PARDISO iparm[35]: 1
>>> MKL_PARDISO iparm[36]: 0
>>> MKL_PARDISO iparm[37]: 0
>>> MKL_PARDISO iparm[38]: 0
>>> MKL_PARDISO iparm[39]: 0
>>> MKL_PARDISO iparm[40]: 0
>>> MKL_PARDISO iparm[41]: 0
>>> MKL_PARDISO iparm[42]: 0
>>> MKL_PARDISO iparm[43]: 0
>>> MKL_PARDISO iparm[44]: 0
>>> MKL_PARDISO iparm[45]: 0
>>> MKL_PARDISO iparm[46]: 0
>>> MKL_PARDISO iparm[47]: 0
>>> MKL_PARDISO iparm[48]: 0
>>> MKL_PARDISO iparm[49]: 0
>>> MKL_PARDISO iparm[50]: 0
>>> MKL_PARDISO iparm[51]: 0
>>> MKL_PARDISO iparm[52]: 0
>>> MKL_PARDISO iparm[53]: 0
>>> MKL_PARDISO iparm[54]: 0
>>> MKL_PARDISO iparm[55]: 0
>>> MKL_PARDISO iparm[56]: 0
>>> MKL_PARDISO iparm[57]: -1
>>> MKL_PARDISO iparm[58]: 0
>>> MKL_PARDISO iparm[59]: 0
>>> MKL_PARDISO iparm[60]: 0
>>> MKL_PARDISO iparm[61]: 144
>>> MKL_PARDISO iparm[62]: 145
>>> MKL_PARDISO iparm[63]: 21
>>> MKL_PARDISO iparm[64]: 0
>>> MKL_PARDISO maxfct: 1
>>> MKL_PARDISO mnum: 1
>>> MKL_PARDISO mtype: 11
>>> MKL_PARDISO n: 6
>>> MKL_PARDISO nrhs: 1
>>> MKL_PARDISO msglvl: 0
>>> linear system matrix = precond matrix:
>>> Mat Object: 1 MPI processes
>>> type: seqaij
>>> rows=6, cols=6
>>> total: nonzeros=26, allocated nonzeros=26
>>> total number of mallocs used during MatSetValues calls =0
>>> using I-node routines: found 4 nodes, limit used is 5
>>> linear system matrix = precond matrix:
>>> Mat Object: 1 MPI processes
>>> type: seqaij
>>> rows=108000, cols=108000
>>> total: nonzeros=2868000, allocated nonzeros=8640000
>>> total number of mallocs used during MatSetValues calls =0
>>> not using I-node routines
>>>
>>> ************************************************************************************************************************
>>> *** WIDEN YOUR WINDOW TO 120 CHARACTERS. Use 'enscript -r
>>> -fCourier9' to print this document ***
>>>
>>> ************************************************************************************************************************
>>>
>>> ---------------------------------------------- PETSc Performance
>>> Summary: ----------------------------------------------
>>>
>>> E:\Documents\Visual Studio 2015\Projects\compsim\x64\Release\compsim.exe
>>> on a named ALIREZA-PC with 1 processor, by AliReza Tue Aug 28 13:57:09
>>> 2018
>>> Using Petsc Development GIT revision: v3.9.3-1238-gce82fdcfd6 GIT Date:
>>> 2018-08-27 15:47:19 -0500
>>>
>>> Max Max/Min Avg Total
>>> Time (sec): 1.353e+02 1.000 1.353e+02
>>> Objects: 1.980e+05 1.000 1.980e+05
>>> Flop: 2.867e+07 1.000 2.867e+07 2.867e+07
>>> Flop/sec: 2.119e+05 1.000 2.119e+05 2.119e+05
>>> MPI Messages: 0.000e+00 0.000 0.000e+00 0.000e+00
>>> MPI Message Lengths: 0.000e+00 0.000 0.000e+00 0.000e+00
>>> MPI Reductions: 0.000e+00 0.000
>>>
>>> Flop counting convention: 1 flop = 1 real number operation of type
>>> (multiply/divide/add/subtract)
>>> e.g., VecAXPY() for real vectors of length
>>> N --> 2N flop
>>> and VecAXPY() for complex vectors of length
>>> N --> 8N flop
>>>
>>> Summary of Stages: ----- Time ------ ----- Flop ------ --- Messages
>>> --- -- Message Lengths -- -- Reductions --
>>> Avg %Total Avg %Total Count
>>> %Total Avg %Total Count %Total
>>> 0: Main Stage: 1.3529e+02 100.0% 2.8668e+07 100.0% 0.000e+00
>>> 0.0% 0.000e+00 0.0% 0.000e+00 0.0%
>>>
>>>
>>> ------------------------------------------------------------------------------------------------------------------------
>>> See the 'Profiling' chapter of the users' manual for details on
>>> interpreting output.
>>> Phase summary info:
>>> Count: number of times phase was executed
>>> Time and Flop: Max - maximum over all processors
>>> Ratio - ratio of maximum to minimum over all
>>> processors
>>> Mess: number of messages sent
>>> AvgLen: average message length (bytes)
>>> Reduct: number of global reductions
>>> Global: entire computation
>>> Stage: stages of a computation. Set stages with PetscLogStagePush()
>>> and PetscLogStagePop().
>>> %T - percent time in this phase %F - percent flop in this
>>> phase
>>> %M - percent messages in this phase %L - percent message
>>> lengths in this phase
>>> %R - percent reductions in this phase
>>> Total Mflop/s: 10e-6 * (sum of flop over all processors)/(max time
>>> over all processors)
>>>
>>> ------------------------------------------------------------------------------------------------------------------------
>>> Event Count Time (sec)
>>> Flop --- Global --- --- Stage ---- Total
>>> Max Ratio Max Ratio Max Ratio Mess AvgLen
>>> Reduct %T %F %M %L %R %T %F %M %L %R Mflop/s
>>>
>>> ------------------------------------------------------------------------------------------------------------------------
>>>
>>> --- Event Stage 0: Main Stage
>>>
>>> BuildTwoSidedF 2 1.0 1.2701e-04 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> SNESSolve 1 1.0 1.1583e+02 1.0 2.87e+07 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 86100 0 0 0 86100 0 0 0 0
>>> SNESFunctionEval 2 1.0 5.4101e+00 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 4 0 0 0 0 4 0 0 0 0 0
>>> SNESJacobianEval 1 1.0 9.3770e+01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 69 0 0 0 0 69 0 0 0 0 0
>>> SNESLineSearch 1 1.0 3.1033e+00 1.0 6.82e+06 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 2 24 0 0 0 2 24 0 0 0 2
>>> VecDot 1 1.0 1.8688e-04 1.0 2.16e+05 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 1 0 0 0 0 1 0 0 0 1156
>>> VecMDot 3 1.0 9.9299e-04 1.0 1.30e+06 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 5 0 0 0 0 5 0 0 0 1305
>>> VecNorm 7 1.0 6.0845e-03 1.0 1.51e+06 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 5 0 0 0 0 5 0 0 0 248
>>> VecScale 4 1.0 1.4437e+00 1.0 4.32e+05 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 1 2 0 0 0 1 2 0 0 0 0
>>> VecCopy 3 1.0 1.6059e+00 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 1 0 0 0 0 1 0 0 0 0 0
>>> VecSet 90002 1.0 1.3843e-02 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> VecAXPY 1 1.0 3.1733e-01 1.0 2.16e+05 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 1 0 0 0 0 1 0 0 0 1
>>> VecWAXPY 1 1.0 2.2665e-04 1.0 1.08e+05 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 477
>>> VecMAXPY 4 1.0 8.6085e-04 1.0 1.94e+06 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 7 0 0 0 0 7 0 0 0 2258
>>> VecAssemblyBegin 2 1.0 1.6379e-04 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> VecAssemblyEnd 2 1.0 1.4112e-05 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> VecReduceArith 2 1.0 3.1304e-04 1.0 4.32e+05 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 2 0 0 0 0 2 0 0 0 1380
>>> VecReduceComm 1 1.0 2.1382e-06 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> VecNormalize 4 1.0 1.4441e+00 1.0 1.30e+06 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 1 5 0 0 0 1 5 0 0 0 1
>>> MatMult 4 1.0 2.0402e-02 1.0 2.25e+07 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 79 0 0 0 0 79 0 0 0 1103
>>> MatSolve 72000 1.0 5.3514e+00 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 4 0 0 0 0 4 0 0 0 0 0
>>> MatLUFactorSym 18000 1.0 1.9405e+00 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 1 0 0 0 0 1 0 0 0 0 0
>>> MatLUFactorNum 18000 1.0 1.8373e-01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> MatAssemblyBegin 18002 1.0 1.0409e-03 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> MatAssemblyEnd 18002 1.0 3.3879e-02 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> MatGetRowIJ 18000 1.0 3.1819e-02 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> MatCreateSubMats 1 1.0 3.7015e-01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> MatGetOrdering 18000 1.0 3.0787e-01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> MatZeroEntries 1 1.0 2.7952e-02 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> MatView 3 1.0 2.9153e-01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> KSPSetUp 18001 1.0 7.5898e-03 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 0 0 0 0 0 0 0 0 0 0
>>> KSPSolve 1 1.0 1.6244e+01 1.0 2.16e+07 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 12 75 0 0 0 12 75 0 0 0 1
>>> KSPGMRESOrthog 3 1.0 8.4669e-02 1.0 2.59e+06 1.0 0.0e+00 0.0e+00
>>> 0.0e+00 0 9 0 0 0 0 9 0 0 0 31
>>> PCSetUp 18001 1.0 3.3536e+00 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 2 0 0 0 0 2 0 0 0 0 0
>>> PCSetUpOnBlocks 1 1.0 2.5973e+00 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 2 0 0 0 0 2 0 0 0 0 0
>>> PCApply 4 1.0 6.2752e+00 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 5 0 0 0 0 5 0 0 0 0 0
>>> PCApplyOnBlocks 72000 1.0 5.9278e+00 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
>>> 0.0e+00 4 0 0 0 0 4 0 0 0 0 0
>>>
>>> ------------------------------------------------------------------------------------------------------------------------
>>>
>>> Memory usage is given in bytes:
>>>
>>> Object Type Creations Destructions Memory Descendants'
>>> Mem.
>>> Reports information only for process 0.
>>>
>>> --- Event Stage 0: Main Stage
>>>
>>> SNES 1 0 0 0.
>>> DMSNES 1 0 0 0.
>>> SNESLineSearch 1 0 0 0.
>>> Vector 36020 0 0 0.
>>> Matrix 36001 0 0 0.
>>> Distributed Mesh 2 0 0 0.
>>> Index Set 90000 36000 29088000 0.
>>> Star Forest Graph 4 0 0 0.
>>> Discrete System 2 0 0 0.
>>> Krylov Solver 18001 0 0 0.
>>> DMKSP interface 1 0 0 0.
>>> Preconditioner 18001 0 0 0.
>>> Viewer 1 0 0 0.
>>>
>>> ========================================================================================================================
>>> Average time to get PetscTime(): 1.28294e-07
>>> #PETSc Option Table entries:
>>> -ksp_atol 1e-6
>>> -ksp_rtol 1e-5
>>> -snes_rtol 1e-4
>>> -sub_ksp_type preonly
>>> -sub_pc_factor_mat_solver_type mkl_pardiso
>>> -sub_pc_type lu
>>> #End of PETSc Option Table entries
>>> Compiled without FORTRAN kernels
>>> Compiled with full precision matrices (default)
>>> sizeof(short) 2 sizeof(int) 4 sizeof(long) 4 sizeof(void*) 8
>>> sizeof(PetscScalar) 8 sizeof(PetscInt) 4
>>> Configure options: --prefix=/home/alireza/PetscGit
>>> --with-mkl_pardiso-dir=/cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and_libraries/windows/mkl
>>>
>>> --with-hypre-incl
>>> ude=/cygdrive/E/hypre-2.11.2/Builds/Bins/include
>>> --with-hypre-lib=/cygdrive/E/hypre-2.11.2/Builds/Bins/lib/HYPRE.lib
>>> --with-ml-include=/cygdrive/E/Trilinos-master/Bins/in
>>> clude --with-ml-lib=/cygdrive/E/Trilinos-master/Bins/lib/ml.lib
>>> ظ€ôwith-openmp --with-cc="win32fe icl" --with-fc="win32fe ifort"
>>> --with-mpi-include=/cygdrive/E/Program_Fi
>>> les_x86/IntelSWTools/compilers_and_libraries/windows/mpi/intel64/include
>>>
>>> --with-mpi-lib=/cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and_libraries/windows/mpi/int
>>> el64/lib/impi.lib
>>> --with-mpi-mpiexec=/cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and_libraries/windows/mpi/intel64/bin/mpiexec.exe
>>>
>>> --with-debugging=0 --with-blas
>>> -lib=/cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win/mkl_rt.lib
>>>
>>> --with-lapack-lib=/cygdrive/E/Program_Files_x86/IntelSWTool
>>> s/compilers_and_libraries/windows/mkl/lib/intel64_win/mkl_rt.lib
>>> -CFLAGS="-O2 -MT -wd4996 -Qopenmp" -CXXFLAGS="-O2 -MT -wd4996 -Qopenmp"
>>> -FFLAGS="-MT -O2 -Qopenmp"
>>> -----------------------------------------
>>> Libraries compiled on 2018-08-27 22:42:15 on AliReza-PC
>>> Machine characteristics: CYGWIN_NT-6.1-2.10.0-0.325-5-3-x86_64-64bit
>>> Using PETSc directory: /home/alireza/PetscGit
>>> Using PETSc arch:
>>> -----------------------------------------
>>>
>>> Using C compiler: /home/alireza/PETSc/lib/petsc/bin/win32fe/win32fe icl
>>> -O2 -MT -wd4996 -Qopenmp
>>> Using Fortran compiler:
>>> /home/alireza/PETSc/lib/petsc/bin/win32fe/win32fe ifort -MT -O2 -Qopenmp
>>> -fpp
>>> -----------------------------------------
>>>
>>> Using include paths: -I/home/alireza/PetscGit/include
>>> -I/cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and_libraries/windows/mkl/include
>>>
>>> -I/cygdrive/E/hypre-2.11.2/
>>> Builds/Bins/include -I/cygdrive/E/Trilinos-master/Bins/include
>>>
>>> -I/cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and_libraries/windows/mpi/intel64/include
>>> -----------------------------------------
>>>
>>> Using C linker: /home/alireza/PETSc/lib/petsc/bin/win32fe/win32fe icl
>>> Using Fortran linker: /home/alireza/PETSc/lib/petsc/bin/win32fe/win32fe
>>> ifort
>>> Using libraries: -L/home/alireza/PetscGit/lib
>>> -L/home/alireza/PetscGit/lib -lpetsc
>>> /cygdrive/E/hypre-2.11.2/Builds/Bins/lib/HYPRE.lib
>>> /cygdrive/E/Trilinos-master/Bins/lib
>>> /ml.lib
>>> /cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win/mkl_rt.lib
>>>
>>> /cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and
>>> _libraries/windows/mkl/lib/intel64_win/mkl_rt.lib
>>> /cygdrive/E/Program_Files_x86/IntelSWTools/compilers_and_libraries/windows/mpi/intel64/lib/impi.lib
>>>
>>> Gdi32.lib User32.lib
>>> Advapi32.lib Kernel32.lib Ws2_32.lib
>>> -----------------------------------------
>>>
>>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which their
>> experiments lead.
>> -- Norbert Wiener
>>
>> https://www.cse.buffalo.edu/~knepley/
>> <http://www.cse.buffalo.edu/~knepley/>
>>
>
--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180828/b9aa7890/attachment-0001.html>
More information about the petsc-users
mailing list