Aztec  sparse matrix paralell solver
Has anyone used the Aztec? I am thinking of using it in my 2DFEM NS modeling code. I would like some hints. Is it really practical? Does it use other packages? Thanks, Astrid

Re: Aztec  sparse matrix paralell solver
I've had good experience with Aztec and used it for a variety of NS and other problems in 2D and 3D, where the iterative solver performance is invaluable for illconditioned sparse unstructured systems of equations. It takes a while to get the API set up properly, but once you have done it, then Aztec works very well, including on distributed memory machines. Under the covers, Aztec makes use of parts of LINPACK, LAPACK, blas and y12m, in addition to many of its own preconditioner implementations. 
Re: Aztec  sparse matrix paralell solver
It is good to know it works well! It seems there is really the necessity to invest some time to get it working! The manual doesn't look very clear and neither the installation. During the installation some codes are mailed from Netlib, but mine just don't come in! Is there any other way to get those files?
Another question I have is in how to prepare the matrix for computation. At the moment I use y12m, with indexes for rows and columns. For the Aztec is there any necessity of preparing the matrices for the processors? Thanks for a beginner in paralell processing, Astrid 
Re: Aztec  sparse matrix paralell solver
I agree  the klunky way of retrieving files from netlib as part of the Aztec install is annoying. I haven't done it in a few years. If you examine the retrieval script you can determine the pieces of FORTRAN code you'll need. If that doesn't work, let me know and I can email them to you. With regards to your second question, you'll need to become accustomed to the compressed sparse row format for matrix storage. It's efficient for sparse matrices and basically consists of storing all of the matrix values in a big one dimensional array, which is accessed in conjunction with a second array of row indeces corresponding to the nonzero values. The manual is more complicated and less clear than it could be on this matter, but persistence pays off in the end. The parallel matrix solution is facilitated by the DMSR matrix format. Do the serial implementation first, then you'll be ready to learn the intracacies of the parallel implementation. Aztec purports to make this easier for you, but it's still a challenging task. 
Re: Aztec  sparse matrix paralell solver
Do you think Petsc is more users friendly? Would it be a better choice for me? Once I choose one a lot of time must be invested, it will be dificult to change afterwards.
The files needed for instalation are listed in netlib_mail (wich I canot attach here). They must be renamed and processed, am I correct? About the sparse matrix treatment, I already have my matrix transformed in a vector with pointers for rows and columns. In the manual it seems I must separate this matrix for each processor. Isn't there a code that does that? It is not clear. Anyway it is a good advice to start with serial and after go to paralell. Cheers, Astrid 
Re: Aztec  sparse matrix paralell solver
Do you think Petsc is more users friendly? Would it be a better choice for me? Once I choose one a lot of time must be invested, it will be difficult to change afterwards. <blockquote>I haven't used PetSC, only Aztec. However, the PetSC documentation seems to be friendlier than Aztec's.</blockquote>
The files needed for instalation are listed in netlib_mail (wich I canot attach here). They must be renamed and processed, am I correct? <blockquote>You are correct. To save you some time, I will email you the set of renamed netlib files that are needed to get Aztec to build.</blockquote> About the sparse matrix treatment, I already have my matrix transformed in a vector with pointers for rows and columns. In the manual it seems I must separate this matrix for each processor. Isn't there a code that does that? It is not clear. Anyway it is a good advice to start with serial and after go to paralell. <blockquote>Yes, you'll need to decide how to distribute the rows of the global matrix over the different processors.For simple structured grid problems usually you can do this by inspection.For unstructured grid problems, you'll probably need to use a graph partitioner, such as MeTiS. Unless PetSC includes a graph partitioner, you'll need to learn how to use one, regardless of which of the 2 parallel linear solver packages you end up choosing. Good luck.</blockquote> 
Re: Aztec  sparse matrix paralell solver
Dear Astrid,
I have not used Aztec but use Petsc. So far I am very satisfied by it.I guess, both packages require some time to get through it, since they offer many options. PETSc one can access via fortran and C. The support from the petsc team is also excellent. It runs on all kind of platforms and intended for parallel processing. I am only using the krylov subspace methods from petsc in a serial code. Maybe I would look at both manuals and see what different options both have, that you really need at the end. Petsc takes care about all the data structure you need. No need to worry about sparse matrix data structures. I would also have a look not only what solvers they offer but what preconditioner they offer. That is an important factor. Petsc also has the ability to couple your own preconditioners to it, or if you think of a matrixfree GMRES, one can define your self coded matrixvector product. That are nice features. Frank 
Re: Aztec  sparse matrix paralell solver
Thank you very much for the files. I will try to install the Aztec. But if implementing is so time consuming, I think I will leave it for after my PhD. I I have about 4 months to finish it and the serial code is working well for 2D models. To use 3D I would need more memory than my PC has, using paralelization. But I think I won´t have time enought.
So I must stick to 2D and finish my job! Cheers, Astrid 
All times are GMT 4. The time now is 14:32. 