My problem with compiling MAGMA

Open discussion for MAGMA library (Matrix Algebra on GPU and Multicore Architectures)
mbibby
Posts: 10
Joined: Fri Aug 07, 2009 9:07 am

My problem with compiling MAGMA

Post by mbibby » Thu Apr 17, 2014 2:17 pm

I can get the compile to run as far as, and past, the ranlib step. Here is the output from there on.
ranlib ../lib/libmagma.a
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/src'
======================================== control
( cd control && make )
make[1]: Entering directory `/export/home1/scratch/magma-1.4.1/control'
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c zpanel_to_q.cpp -o zpanel_to_q.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c zprint.cpp -o zprint.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c magma_zf77pgi.cpp -o magma_zf77pgi.o
magma_zf77pgi.cpp: In function ‘void magma_zgebrd_(magma_int_t*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:77: error: cannot convert ‘double2*’ to ‘magma_int_t*’ for argument ‘11’ to ‘magma_int_t magma_zgebrd(magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, double*, double*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magma_int_t*)’
magma_zf77pgi.cpp: In function ‘void magma_zgehrd_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:80: error: invalid conversion from ‘magma_int_t*’ to ‘magma_int_t’
magma_zf77pgi.cpp:80: error: initializing argument 8 of ‘magma_int_t magma_zgehrd(magma_int_t, magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magma_int_t*)’
magma_zf77pgi.cpp: In function ‘void magma_zlabrd_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:95: error: ‘magma_zlabrd’ was not declared in this scope
magma_zf77pgi.cpp: In function ‘void magma_zlahru_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double2*, double2*, double2*, double2*, double2*)’:
magma_zf77pgi.cpp:101: error: invalid conversion from ‘double2*’ to ‘magma_int_t’
magma_zf77pgi.cpp:101: error: invalid conversion from ‘int’ to ‘magmaDoubleComplex*’
magma_zf77pgi.cpp:101: error: invalid conversion from ‘double2*’ to ‘magma_int_t’
../include/magma_z.h:134: error: too few arguments to function ‘magma_int_t magma_zlahru(magma_int_t, magma_int_t, magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*)’
magma_zf77pgi.cpp:101: error: at this point in file
magma_zf77pgi.cpp: In function ‘void magma_zhetrd_(char*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:107: error: cannot convert ‘double2*’ to ‘magma_int_t*’ for argument ‘10’ to ‘magma_int_t magma_zhetrd(magma_uplo_t, magma_int_t, magmaDoubleComplex*, magma_int_t, double*, double*, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magma_int_t*)’
make[1]: *** [magma_zf77pgi.o] Error 1
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/control'
make: *** [libmagma] Error 2

The make.inc is:
GPU_TARGET = Fermi

CC = gcc
NVCC = nvcc
FORT = gfortran

ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib

OPTS = -O3 -DADD_ -DMAGMA_SETAFFINITY
F77OPTS = -O3 -DADD_
FOPTS = -O3 -DADD_ -x f95-cpp-input
NVOPTS = -O3 -DADD_ -Xcompiler -fno-strict-aliasing
LDOPTS = -O3 -DADD_


# Depending on how ATLAS and LAPACK were compiled, you may need one or more of:
# -lifcore -ldl -lf2c -lgfortran
# LIB = -llapack -lblas -lf77blas -lcblas -lcublas -lcudart -lstdc++ -lm -lpgfortran -lifcore

# define library directories here or in your environment
CUDADIR = /usr/local/cuda
-include make.check-cuda

LIBDIR = -L/opt/pgi/linux86-64/2014/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -L$(CUDADIR)/lib64

LIB = -lrt -lpgmp -lnuma -lpthread -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lnspgc -lpgc -lm -llapack -lblas -lcudart

INC = -I$(CUDADIR)/include

I would ultimately like to use the PGI compilers. However, if I replace gcc with pgcc the compile process "burps" on the .cpp files. Changing to pgcpp introduces its own set of problems.

So, staying with gcc and gfortran what do I need to do to get this script to run to the end? I will be using the resulting files in a Fortran setting.

Thanks.

mbibby
Posts: 10
Joined: Fri Aug 07, 2009 9:07 am

Re: My problem with compiling MAGMA

Post by mbibby » Fri Apr 18, 2014 11:57 am

To: mgates3. Would you please advise me on what might be wrong with what I am doing?

To: all users. Is anyone out there using MAGMA with PGI compilers? If so, I would appreciate seeing a copy of your make.inc file and learning of any special steps you took to get things working.

Thanks.

mgates3
Posts: 872
Joined: Fri Jan 06, 2012 2:13 pm

Re: My problem with compiling MAGMA

Post by mgates3 » Mon Apr 21, 2014 11:03 am

Did you set PGIFORTRAN somewhere? It isn't shown in your make.inc file. We haven't tested MAGMA with PGI compilers recently. The Fortran wrappers in magma_zf77pgi.cpp are probably out-of-date. For the moment, you may need to compile without PGI, i.e., set PGIFORTRAN = 0. If you don't need Fortran, you can omit compiling the wrappers.

The cpp files are mostly C99, but the way they are currently setup, require a C++ compiler.

-mark

mbibby
Posts: 10
Joined: Fri Aug 07, 2009 9:07 am

Re: My problem with compiling MAGMA

Post by mbibby » Wed Apr 23, 2014 1:49 pm

Hi Mark, I found the PGIFORTRAN setting in Makefile.internal and set it to 0. That helped a lot. "make" runs much furthur now, the tail is shown below:

ranlib liblapacktest.a
make[2]: Leaving directory `/export/home1/scratch/magma-1.4.1/testing/lin'
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_zutil.cpp -o testing_zutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_cutil.cpp -o testing_cutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_dutil.cpp -o testing_dutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_util.cpp -o testing_util.o
ar cr libtest.a testing_zutil.o testing_cutil.o testing_dutil.o testing_sutil.o testing_util.o
ranlib libtest.a
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_z_cublas_v2.cpp -o testing_z_cublas_v2.o
gcc -O3 -DADD_ testing_z_cublas_v2.o -o testing_z_cublas_v2 \
libtest.a lin/liblapacktest.a -L../lib -lmagma \
-L/opt/pgi/linux86-64/2014/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -L/usr/local/cuda/lib64 \
-llapack -lblas -lf77blas -lcblas -lcublas -lcudart -lstdc++ -lm -lpgfortran -lifcore
/usr/bin/ld: cannot find -lf77blas
collect2: ld returned 1 exit status
make[1]: *** [testing_z_cublas_v2] Error 1
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/testing'
make: *** [test] Error 2

So now the issues is finding f77blas. Any suggestions as to where to look? I have tried to locate it on the system, but have come up empty!

Malcolm

mgates3
Posts: 872
Joined: Fri Jan 06, 2012 2:13 pm

Re: My problem with compiling MAGMA

Post by mgates3 » Thu Apr 24, 2014 3:26 pm

The f77blas is part of ATLAS, at least in the version that we have installed:

prompt> ls /mnt/scratch/sw/atlas-gcc/lib/
libatlas.a libcblas.a libf77blas.a liblapack.a libptcblas.a libptf77blas.a

If you use a different BLAS library (such as ACML or MKL), the libraries will be different.

-mark

mbibby
Posts: 10
Joined: Fri Aug 07, 2009 9:07 am

Re: My problem with compiling MAGMA

Post by mbibby » Sat May 31, 2014 1:28 pm

Mark, I think your testing regimen should include the PGI compiler suit. They are obviously very interested in the work you are doing - as evidenced by their continuing development of Cuda Fortran. Also, they are now a part of Nvidia - another reason to test with their compilers. I am suggesting that this is in addition to what you do now, not as a replacement for anything (at least of what I aware of).

Thanks.

Malcolm

roalmar2
Posts: 20
Joined: Thu Jul 03, 2014 6:06 am

Re: My problem with compiling MAGMA

Post by roalmar2 » Thu Jul 03, 2014 12:11 pm

Hello,

I'm new with MAGMA.

Is there any document with the different options to compile testing programs in MAGMA? I am making testing times and improvements with multigpus and I want to know if it is possible take better times changing the compiling options.

Thank you so much.

roalmar2
Posts: 20
Joined: Thu Jul 03, 2014 6:06 am

Re: My problem with compiling MAGMA

Post by roalmar2 » Wed Jul 09, 2014 10:33 am

Hello,

I only changed the variable MagmaMaxGPUs from 8 to 12 value, to see if it's possible use more gpus.

I recompile my code and I have some errors:

======================================== test
( cd testing && make )
make[1]: se ingresa al directorio `xxx/MAGMA_MGPU/MAGMA_SRC/MAGMA/1.4.1/mkl+cuda60/magma-1.4.1/testing'
gcc -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64 -std=c++98 -pedantic -Wno-long-long -DHAVE_CUBLAS -DMIN_CUDA_ARCH=100 -I/nfs/LIBS/LIBS/CUDA/6.0/include -I/nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_cutil.cpp -o testing_cutil.o
gcc -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64 -std=c++98 -pedantic -Wno-long-long -DHAVE_CUBLAS -DMIN_CUDA_ARCH=100 -I/nfs/LIBS/LIBS/CUDA/6.0/include -I/nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:41: error: la declaración de la función C ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:153: error: declaración previa de ‘void magma_smake_hpd(magma_int_t, float*, magma_int_t)’ aquí
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:45: error: no match para ‘operator+’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) + N’
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:24: error: la declaración de la función C ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:146: error: declaración previa de ‘void magma_cmake_hermitian(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:28: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:30: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:41: error: la declaración de la función C ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:151: error: declaración previa de ‘void magma_cmake_hpd(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:45: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)((A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x + (double)N)), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:47: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
make[1]: *** [testing_sutil.o] Error 1
make[1]: *** Se espera a que terminen otras tareas....
make[1]: *** [testing_cutil.o] Error 1
make[1]: se sale del directorio `xxx/MAGMA_MGPU/MAGMA_SRC/MAGMA/1.4.1/mkl+cuda60/magma-1.4.1/testing'
make: *** [test] Error 2

the make.inc is:

CC = gcc
NVCC = nvcc
FORT = gfortran

ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib

# Defining MAGMA_ILP64 or MKL_ILP64 changes magma_int_t to int64_t in include/magma_types.h
# Compiling with -std=c++98 -pedantic finds non-standard things like variable length arrays
OPTS = -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64
OPTS += -std=c++98 -pedantic -Wno-long-long
#OPTS += -Werror # uncomment to ensure all warnings are dealt with
F77OPTS = -O3 -DADD_ -Wall -fdefault-integer-8
FOPTS = -O3 -DADD_ -Wall -fdefault-integer-8 -x f95-cpp-input
NVOPTS = -O3 -DADD_ -Xcompiler -fno-strict-aliasing -DMKL_ILP64
LDOPTS = -fopenmp

# IMPORTANT: this link line is for 64-bit int !!!!
# For regular 64-bit builds using 64-bit pointers and 32-bit int,
# use the lp64 library, not the ilp64 library. See make.inc.mkl-gcc or make.inc.mkl-icc.
# see MKL Link Advisor at http://software.intel.com/sites/products/mkl/
# gcc with MKL 10.3, GNU threads, 64-bit int
# note -DMAGMA_ILP64 or -DMKL_ILP64, and -fdefault-integer-8 in OPTS above
LIB = -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -lpthread -lcublas -lcudart -lstdc++ -lm -lgfortran

# define library directories preferably in your environment, or here.
# for MKL run, e.g.: source /opt/intel/composerxe/mkl/bin/mklvars.sh intel64
#MKLROOT ?= /opt/intel/composerxe/mkl
#CUDADIR ?= /usr/local/cuda


MKLROOT = /nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl

CUDADIR = /nfs/LIBS/LIBS/CUDA/6.0

-include make.check-mkl
-include make.check-cuda

LIBDIR = -L$(MKLROOT)/lib/intel64 \
-L$(CUDADIR)/lib64

INC = -I$(CUDADIR)/include -I$(MKLROOT)/include

Anyone have some idea?

Thanks a lot !!

roalmar2
Posts: 20
Joined: Thu Jul 03, 2014 6:06 am

Re: My problem with compiling MAGMA

Post by roalmar2 » Mon Jul 14, 2014 6:37 am

I made a change in other file

Only a printf to see the values of the matrix and the result, for compare it with different mode executions, but when I want to recompile the code, that error appear:

0/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:41: error: la declaración de la función C ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:153: error: declaración previa de ‘void magma_smake_hpd(magma_int_t, float*, magma_int_t)’ aquí
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:45: error: no match para ‘operator+’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) + N’
make[1]: *** [testing_sutil.o] Error 1
make[1]: *** Se espera a que terminen otras tareas....
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:24: error: la declaración de la función C ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:146: error: declaración previa de ‘void magma_cmake_hermitian(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:28: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:30: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:41: error: la declaración de la función C ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:151: error: declaración previa de ‘void magma_cmake_hpd(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:45: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)((A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x + (double)N)), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:47: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
make[1]: *** [testing_cutil.o] Error 1


I didn't change those files, why that errors?
Any idea ?

The problem always is:

los candidatos son (the candidates are): double2& double2::operator=(const double2&)
... error: se solicitó la conversión desde (conversion request from) ‘double2’ al tipo no escalar ( to no scalar tuype) ‘cuFloatComplex’

If the problem is that we are not authorized to change the code tell me, please

Thank you :)

mgates3
Posts: 872
Joined: Fri Jan 06, 2012 2:13 pm

Re: My problem with compiling MAGMA

Post by mgates3 » Mon Jul 14, 2014 3:05 pm

You may modify the code. It's an open source BSD license.

It's a bit difficult to tell what the problem is, since your error messages are all in French. Something very strange is going on here, though. You have

Code: Select all

testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
but testing_sutil should be single-precision, i.e., float. The function looks like this, with float instead of magmaDoubleComplex:

Code: Select all

void magma_smake_hpd( magma_int_t N, float* A, magma_int_t lda )
Can you please look at exactly what changes you made, and post the exact changes if you still can't figure it out. A diff with a fresh copy of the release would be best (assuming the diff isn't too large).

Code: Select all

diff -r  magma-1.5.0-beta2  magma-1.5.0-beta2-modified

Post Reply