Build Problem using VS 2013

Open discussion for MAGMA library (Matrix Algebra on GPU and Multicore Architectures)
Post Reply
anyech
Posts: 3
Joined: Mon Sep 15, 2014 1:54 pm

Build Problem using VS 2013

Post by anyech » Tue Sep 16, 2014 2:13 pm

Hi, I am new to MAGMA.
While I am building solution using VS 2013, It keep giving me this error message:

Code: Select all

e:\14_fall\magma\magma-1.5.0\include\magma_mangling.h(32): fatal error C1189: #error :  "One of ADD_, NOCHANGE, or UPCASE must be defined to set how Fortran functions are name mangled. For example, in MAGMA, add -DADD_ to CFLAGS, FFLAGS, etc. in make.inc. If using CMake, it defines MAGMA_GLOBAL instead."
Does anyone have any idea about how to solve it?

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

Re: Build Problem using VS 2013

Post by mgates3 » Tue Sep 16, 2014 4:52 pm

Please give complete details about how you are building.

Are you using CUDA MAGMA 1.5.0 (final)?
Are you compiling using Makefiles or CMake?
If with Makefiles, what is your make.inc file? What tools (cygwin, gnu make, etc.) are you using?
If with CMake, what version? (Although, CMake should not have this issue.)

Otherwise, generally do what the error message says: add one of -DADD_, or -DNOCHANGE, or -DUPCASE (depending on your compiler) to CFLAGS, FFLAGS, etc. in your make.inc file. If you are unsure which to use, try -DADD_ first.

-mark

anyech
Posts: 3
Joined: Mon Sep 15, 2014 1:54 pm

Re: Build Problem using VS 2013

Post by anyech » Tue Sep 16, 2014 6:37 pm

Thank you for your response.

Yes, I am using CUDA MAGMA 1.5.0 (final), and I am using CMake (version 3.0.1).

When I use CMake following the steps in "README-Windows", it gives me the error message

Code: Select all

CMake Error at CMakeLists.txt:4 (project):
  No CMAKE_Fortran_COMPILER could be found.
I am using INTEL Parallel Studio XE 2015 with MKL and Fortran compiler.
And I found some helps on stack overflow http://stackoverflow.com/questions/2225 ... s-7-64-bit
Add

Code: Select all

SET (CMAKE_Fortran_COMPILER_FORCED true)
to CMakeList.txt then manually specify the path for Intel Fortran Compiler (D:/Intel/Composer XE 2015/bin/ia32/ifort.exe)
Then the CMake went through.
But, when I try to build the solution, the error mentioned earlier appears.

Hope this information could help you identify the problem of me.

Thank you!

anyech
Posts: 3
Joined: Mon Sep 15, 2014 1:54 pm

Re: Build Problem using VS 2013

Post by anyech » Tue Sep 16, 2014 7:00 pm

In addition, I have got some other error messages while I was building solution.

Code: Select all

3>  magma_z_no_fortran.c
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2054: expected '(' to follow 'inline'
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2085: 'lapacke_const' : not in formal parameter list
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2143: syntax error : missing ';' before '{'
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(590): error C2054: expected '(' to follow 'inline'
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(590): error C2085: 'lapacke_bool_const' : not in formal parameter list
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(590): error C2143: syntax error : missing ';' before '{'
...

Code: Select all

3>  magma_c_no_fortran.c
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2054: expected '(' to follow 'inline'
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2085: 'lapacke_const' : not in formal parameter list
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2143: syntax error : missing ';' before '{'
...

Code: Select all

4>  Building NVCC (Device) object CMakeFiles/magma.dir/magmablas/Debug/magma_generated_zcaxpycp.cu.obj
3>e:\14_fall\magma\magma-1.5.0\include\magmablas.h(192): error C2054: expected '(' to follow 'inline'
3>e:\14_fall\magma\magma-1.5.0\include\magmablas.h(197): error C2085: 'magma_isetvector_internal' : not in formal parameter list
3>e:\14_fall\magma\magma-1.5.0\include\magmablas.h(197): error C2143: syntax error : missing ';' before '{'
...

Code: Select all

3>  magma_d_no_fortran.c
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2054: expected '(' to follow 'inline'
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2085: 'lapacke_const' : not in formal parameter list
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2143: syntax error : missing ';' before '{'
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(590): error C2054: expected '(' to follow 'inline'
...

Code: Select all

3>  magma_s_no_fortran.c
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2054: expected '(' to follow 'inline'
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2085: 'lapacke_const' : not in formal parameter list
3>e:\14_fall\magma\magma-1.5.0\include\magma_types.h(589): error C2143: syntax error : missing ';' before '{'
...

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

Re: Build Problem using VS 2013

Post by mgates3 » Thu Sep 18, 2014 10:17 am

What does include/mangling.h look like?

CMake should detect your Fortran mangling scheme and generate that file with the appropriate MAGMA_GLOBAL function. I'm guessing in your case it did not do that. mangling.h should look something like this (here, assuming Fortran appends _ ):

Code: Select all

#ifndef MAGMA_HEADER_INCLUDED
#define MAGMA_HEADER_INCLUDED

/* Mangling for Fortran global symbols without underscores. */
#define MAGMA_GLOBAL(name,NAME) name##_

/* Mangling for Fortran global symbols with underscores. */
#define MAGMA_GLOBAL_(name,NAME) name##_

/* Mangling for Fortran module symbols without underscores. */
#define MAGMA_MODULE(mod_name,name, mod_NAME,NAME) __##mod_name##_MOD_##name

/* Mangling for Fortran module symbols with underscores. */
#define MAGMA_MODULE_(mod_name,name, mod_NAME,NAME) __##mod_name##_MOD_##name

#endif
Your other errors seem to indicate your compiler isn't accepting "inline" as a keyword. This could happen if it was configured to compile C89 instead of C99 or C11.

-mark

Post Reply