Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
7108 Discussions

Compile error fftw3 wrapper using Fortran 2017 on Mac OS 10.12.1

Melissa_H_
Beginner
1,696 Views

Following the instructions given in /opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf/makefile to compile the fftw3 wrapper, the following does not work, instead giving the fatal error "fatal error: 'fftw3.h' file not found":

dhcp-ccc-5977:~ mah$ source /opt/intel/bin/compilervars.sh intel64
dhcp-ccc-5977:~ mah$ cd /opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf 
dhcp-ccc-5977:fftw3xf mah$ sudo make libintel64 compiler=gnu
Password:
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f  makefile lib _IA=intel64
rm -rf ./obj_gnu
mkdir -p ./obj_gnu
gcc -m64 -Wall -Werror  -I../../include -I../../include/fftw     -c ../../interfaces/fftw3xf/wrappers/fftw_alignment_of.c -o obj_gnu/fftw_alignment_of.o
In file included from ../../interfaces/fftw3xf/wrappers/fftw_alignment_of.c:29:
../../interfaces/fftw3xf/wrappers/fftw3_mkl.h:33:10: fatal error: 'fftw3.h' file not found
#include "fftw3.h"
         ^
1 error generated.
make[1]: *** [obj_gnu/fftw_alignment_of.o] Error 1
make: *** [libintel64] Error 2

The header file did exist in the 2016 edition. Any ideas?

Melissa

 

0 Kudos
7 Replies
Steven_L_Intel1
Employee
1,696 Views

There's no Fortran or even Intel here - you're invoking gcc and it can't find a .h file.

I'm going to move this over to the MKL forum.

0 Kudos
McCalpinJohn
Honored Contributor III
1,696 Views

The "sudo make" is likely to fail because (for security reasons) it will not pass all of the environment variables that you set in the first line.

Although it is possible to work around this, it is a much better idea to compile using an ordinary user account and use the root account only if required for the final "install" step.

0 Kudos
Melissa_H_
Beginner
1,696 Views
John,

Thanks for the advice; however, I am still confused. If I try to compile from a regular user account, I generate different errors:

Shadowfax:fftw3xf mah$ cd /opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf 
Shadowfax:fftw3xf mah$ make libintel64 compiler=gnu
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f  makefile lib _IA=intel64
rm -rf ./obj_gnu
rm: ./obj_gnu: Permission denied
make[1]: [clean] Error 1 (ignored)
mkdir -p ./obj_gnu
gcc -m64 -Wall -Werror  -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include/fftw     -c /opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf/wrappers/fftw_alignment_of.c -o obj_gnu/fftw_alignment_of.o
error: unable to open output file 'obj_gnu/fftw_alignment_of.o': 'Permission denied'
1 error generated.
make[1]: *** [obj_gnu/fftw_alignment_of.o] Error 1
make: *** [libintel64] Error 2

On the other hand, if I just copy the source over to my user account and try to compile that way, I am back to the original problem:

Shadowfax:fftw3xf mah$ cd /Users/mah/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf 
Shadowfax:fftw3xf mah$ make libintel64 compiler=gnu
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f  makefile lib _IA=intel64
rm -rf ./obj_gnu
mkdir -p ./obj_gnu
gcc -m64 -Wall -Werror  -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include/fftw     -c /opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf/wrappers/fftw_alignment_of.c -o obj_gnu/fftw_alignment_of.o
In file included from /opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf/wrappers/fftw_alignment_of.c:29:
/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf/wrappers/fftw3_mkl.h:33:10: fatal error: 'fftw3.h' file not found
#include "fftw3.h"
         ^
1 error generated.
make[1]: *** [obj_gnu/fftw_alignment_of.o] Error 1
make: *** [libintel64] Error 2

Clearly, I am not understanding your suggestion. Would you please elaborate?

Thanks,

Melissa

 

0 Kudos
Ying_H_Intel
Employee
1,696 Views

Hi Melissa, 

You mentioned, the fftw3.h  in 2016 edition.  Could you please check if the fftw3.h in 2017 edition ?

for example, >  ls the fftw*.h 

sh-3.2# ls /opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw*.h
/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw.h
/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw3-mpi.h
/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw3-mpi_mkl.h
/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw3.h
/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw3_mkl.h
/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw3_mkl_f77.h
/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw_mpi.h
/opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw_threads.h

and build it  make libintel64 compiler=gnu  with your account and in your copy directory.

As the mkl install directory is under /opt,  it don't allow general user to create new folder.  So you saw the Permission denied. I may suggest the way you did,  copy the directory fftw3xf  to your local directory (please note, only copy the directory, keep original MKL install folder under /opt/intel). 

for example, 

macmini01:~ yhu5$ cp -R /opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf .
macmini01:~ yhu5$ cd fftw3xf/
macmini01:fftw3xf yhu5$ ls
fftw3xf.lst             obj_intel               wrappers
libfftw3xf_gnu.a        readme.txt
makefile                source
macmini01:fftw3xf yhu5$ source /opt/intel/compilers_and_libraries_2017.0.102/mac/mkl/bin/mklvars.sh intel64
macmini01:fftw3xf yhu5$ make libintel64 compiler=gnu
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f  makefile lib _IA=intel64
rm -rf ./obj_gnu
mkdir -p ./obj_gnu
gcc -m64 -Wall -Werror  -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include/fftw     -c /opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf/wrappers/fftw_alignment_of.c -o obj_gnu/fftw_alignment_of.o
gcc -m64 -Wall -Werror  -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include/fftw     -c /opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/interfaces/fftw3xf/wrappers/fftw_alloc_complex.c -o obj_gnu/fftw_alloc_complex.o
gcc -m64 -Wall -Werror  -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include -I/opt/intel//compilers_and_libraries_2017.0.102/mac/mkl/include/fftw 

......

macmini01:fftw3xf yhu5$ ls
fftw3xf.lst             obj_intel               wrappers
libfftw3xf_gnu.a        readme.txt
makefile                source
macmini01:fftw3xf yhu5$ ls -l
total 568
-rw-r--r--    1 yhu5  staff    3992 Oct 29 03:00 fftw3xf.lst
-rw-r--r--    1 yhu5  staff  273584 Oct 29 03:01 libfftw3xf_gnu.a
-rw-r--r--    1 yhu5  staff    5267 Oct 29 03:00 makefile
drwxr-xr-x   13 yhu5  staff     442 Oct 29 03:00 obj_intel
-rw-r--r--    1 yhu5  staff    2864 Dec 31  2013 readme.txt
drwxr-xr-x   42 yhu5  staff    1428 Jul 24  2014 source
drwxr-xr-x  234 yhu5  staff    7956 Oct 29 03:00 wrappers

Best Regards,

Ying 

 

 

0 Kudos
Melissa_H_
Beginner
1,696 Views

Ying,

My apologies — I should have said "2017" in my original post, not 2016. The 2016 version is fine, and I downgraded the Fortran installation back to 2016 because I found many problem with the MKL installed with the Fortran 2017 installer.

I just reinstalled 2017 to answer your question, putting it in intelNew instead of intel (so I can trash it). When I look at the MKL library as you suggest, there are no header files:

dhcp-ccc-1106:mkl mah$ ls /opt/intelNew/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw*.h
ls: /opt/intelNew/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw/fftw*.h: No such file or directory
dhcp-ccc-1106:mkl mah$ ls /opt/intelNew/compilers_and_libraries_2017.0.102/mac/mkl/include/fftw
fftw3-mpi.f03    fftw3.f        fftw3.f03    fftw3_mkl.f    fftw_f77.i
On the other hand, if I go to the MKL installed by Fortran 2016, I get the following:
dhcp-ccc-1106:mkl mah$ ls /opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw*.h
/opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw.h        /opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw3_mkl.h
/opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw3-mpi.h        /opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw3_mkl_f77.h
/opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw3-mpi_mkl.h    /opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw_mpi.h
/opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw3.h        /opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/include/fftw/fftw_threads.h
An even bigger issue, which I didn't know about when I posted my first message, is the loss of the scalapack libraries as shown by the following:

First the 2017 directory:
dhcp-ccc-1106:mkl mah$ ls /opt/intelNew/compilers_and_libraries_2017.0.102/mac/mkl/lib/libmkl_scala*
ls: /opt/intelNew/compilers_and_libraries_2017.0.102/mac/mkl/lib/libmkl_scala*: No such file or directory


And now the 2016 directory:

dhcp-ccc-1106:mkl mah$ ls /opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/lib/libmkl_scala*
/opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/lib/libmkl_scalapack_ilp64.a    /opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/lib/libmkl_scalapack_lp64.a
/opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/lib/libmkl_scalapack_ilp64.dylib    /opt/intel/compilers_and_libraries_2016.1.111/mac/mkl/lib/libmkl_scalapack_lp64.dylib
 

My conclusion was that the MKL libraries installed by the Fortran 2017 installer are incomplete. Whether this is intentional, I cannot tell.

Thank you for looking into this for me.

Melissa

0 Kudos
Ying_H_Intel
Employee
1,696 Views

Hi Melissa, 

Nice comparison! I can tell the reason now.

You are right, the problem is in the Fortran 2017 installer.  the name  is Intel® Parallel Studio XE Composer Edition for Fortran , right?

 In order to reduce the product's size, mot all Intel MKL components are selected for installation by default. the fftw.h seems a C ++ header files, so be missed . It is a bug, i will ask our install team to fix them.

for workaround, you may install standone MKL version and let us know if any issue. (i will send the link address to you by private message). 

Regarding the Scalapack library,  As not all Intel MKL components are selected for installation by default. you choose “Customize installation” option on “Installation summary” dialog, then they will be installed. For more details, please see https://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-2017-install-guide

Best Regards,

Ying

 

0 Kudos
Melissa_H_
Beginner
1,696 Views

Ying,

Thanks a lot! You are correct that I am using 
 Intel® Parallel Studio XE Composer Edition for Fortran. Your solution worked. Instead of using the standalone MKL installer, I was also able to do a custom install with the original installer to install the complete MKL package, which also installed the Scalapack library that I needed. Once the installation was correct and complete, there was no need to move the directory fftw3xf to compile the fftw3 wrapper.

It is unfortunate that this was moved out of the Fortran forum, since this problem is an issue with the Fortran installer.

Melissa
 

 

0 Kudos
Reply