Wiki
Clone wikiblopex / TestBLOPEXMatlabInterfaceLinux
Testing Matlab interface to BLOPEX
BLOPEX LOBPCG computes 4th, 5th and 6th smallest eigenpairs of the diagonal n-by-n matrix spdiags((1:n)',0,n,n), n = 10000, given the first 3 eigenvectors as initial constraints. The BLOPEX results are then compared to the Matlab version of lobpcg (lobpcg.m) results.
System configuration:
- Fedora 10 OS, 4 Quad Core Opteron 2.0 Ghz CPUs, 64 GB RAM;
- Open MPI version 1.2.4;
- Compiler version gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7);
- LAPACK version 3.1.1
- Matlab version 7.7.0.471 (R2008b)
Setup Matlab interface with BLOPEX
We need two BLOPEX subdirectories: blopex_abstract
and blopex_matlab
.
Before compiling, add a search path for the Matlab mex
compiler by issuing
PATH=$PATH:/opt/matlab/bin export PATH
blopex_abstract
and modify Makefile.inc
by specifying the mex
compiler (add line CC = mex
):
CFLAGS = AR = ar -rvcu RANLIB = ranlib CC = mex
Makefile.inc
and run make
. This builds blopex_abstract
with mex
compiler.
Now shift to blopex_matlab
and modify the Makefile
to add LAPACK to the linking process (add -llapack
):
........ driver/blopex_matlab_gateway.mexglx: blopex_matlab_gateway.c multivector_for_matlab.h matlab_interface.h \ multivector_for_matlab.o matlab_interface.o $(CC) $(CFLAGS) $(CPPFLAGS) $< matlab_interface/c_files/multivector_for_matlab.o \ matlab_interface/c_files/matlab_interface.o ''-llapack'' $(LIB_DIRS) $(LIBS) -outdir $(@D) ........
Makefile
and run make
. This compiles the Matlab interface to BLOPEX (also with mex
compiler).
Execution of tests for Matlab interface to BLOPEX
Start Matlab and add directories .../blopex/blopex_matlab/driver
and .../blopex/blopex_matlab/matlab_interface/m_files
to Matlab path:
>> addpath('/home/grads/.../blopex/blopex_matlab/driver') >> addpath('/home/grads/.../blopex/blopex_matlab/matlab_interface/m_files')
.../blopex/blopex_matlab/driver/test_blopex_matlab.m
:
test_blopex_matlab The full initial guess with 10000 columns and 3 raws is detected The main operator is detected as a sparse matrix The second operator of the generalized eigenproblem is detected as a sparse matrix The preconditioner is detected as an M-function precond The full matrix of 3 constraints is detected Solving with tolerance 1.000000e-04 and maximum number of iterations 40 Solving generalized eigenvalue problem with preconditioning block size 3 3 constraints ........... Eigenvalue lambda 4.0000000000002425e+00 Eigenvalue lambda 5.0000000000009530e+00 Eigenvalue lambda 6.0000000001127898e+00 Residual 3.0668655987253611e-05 Residual 5.4190180513113715e-05 Residual 8.5218964177237057e-05 15 iterations SOLUTION TIME, blopex_matlab: 0.637745 The full initial guess with 10000 columns and 3 raws is detected ........... Final Eigenvalues lambda 4.0000000000000222e+00 Final Eigenvalues lambda 5.0000000000007034e+00 Final Eigenvalues lambda 6.0000000001121920e+00 Final Residual Norms 2.057962e-06 Final Residual Norms 1.494745e-05 Final Residual Norms 8.521897e-05 SOLUTION TIME, lobpcg.m: 0.433134
Updated