Estou tentando criar o OpenFOAM para
Xeon Phi no
CentOS 6.5 (Linux 2.6.32-431.11.2.el6.x86_64)
Usando essas etapas
Instale o Intel Parallel Studio
tar xvfz parallel_studio_xe_2013_sp1_update2.tgz
cd parallel_studio_xe_2013_sp1_update2
./install.sh
Compile flex e zlib
echo '
/opt/intel/bin/iccvars.sh intel64
export PATH=/opt/intel/bin:$PATH
' >> ~/.bashrc
bash
# zlib
wget -c 'http://zlib.net/zlib-1.2.8.tar.gz'
tar xvfz zlib-1.2.8.tar.gz
cd zlib-1.2.8
CC=icc CFLAGS="-mmic" CHOST=x86_64 ./configure --shared
make && make install prefix=/opt/crtdc/micgnu
cd ..
# flex
wget -c 'http://downloads.sourceforge.net/project/flex/flex-2.5.39.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fflex%2Ffiles%2F&ts=1397722559&use_mirror=jaist'
mv flex-2.5.39.tar.gz* flex-2.5.39.tar.gz
tar xvfz flex-2.5.39.tar.gz
cd flex-2.5.39
CC=icc ./configure --prefix=/opt/crtdc/micgnu/ --build=x86_64-k1om-linux
make && make install prefix=/opt/crtdc/micgnu
cd ..
faça o download do OpenFOAM e ThirdParty, extraia, edite o arquivo etc/bashrc
export WM_COMPILER=Icc
export WM_MPLIB=INTEL_MPI
source etc/bashrc
limpe a compilação antiga se houver
wcleanAll ; wcleanLnIncludeAll ; wcleanMachine
adicione -mmic
bandeira
vim wmake/rules/linux64ICC/c
cFLAGS = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC -mmic
vim wmake/rules/linux64ICC/c++
c++FLAGS = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC -mmic
e remover -xHost
flag (conflito com -mmic
)
vim wmake/rules/linux64Icc/c++Opt
c++OPT = -O2 -no-prec-div
build para XeonPhi
source etc/bashrc
./Allwmake
No último passo, mostra algum erro:
icpc -std=c++0x -Dlinux64 -DWM_DP -wd327,654,819,1125,1476,1505,1572 -O2 -no-prec-div -DNoRepository -I/root/OpenFOAM/OpenFOAM-2.2.2/src/finiteVolume/lnInclude -ItractionDisplacementCorrectionStress -I../solidDisplacementFoam -IlnInclude -I. -I/root/OpenFOAM/OpenFOAM-2.2.2/src/OpenFOAM/lnInclude -I/root/OpenFOAM/OpenFOAM-2.2.2/src/OSspecific/POSIX/lnInclude -fPIC -mmic -Xlinker --add-needed -Xlinker --no-as-needed Make/linux64IccDPOpt/tractionDisplacementCorrectionFvPatchVectorField.o Make/linux64IccDPOpt/solidEquilibriumDisplacementFoam.o -L/root/OpenFOAM/OpenFOAM-2.2.2/platforms/linux64IccDPOpt/lib \
-lfiniteVolume -lOpenFOAM -ldl -L/lib -lm -o /root/OpenFOAM/OpenFOAM-2.2.2/platforms/linux64IccDPOpt/bin/solidEquilibriumDisplacementFoam
x86_64-k1om-linux-ld: cannot find -lfiniteVolume
x86_64-k1om-linux-ld: cannot find -lOpenFOAM
make[2]: *** [/root/OpenFOAM/OpenFOAM-2.2.2/platforms/linux64IccDPOpt/bin/solidEquilibriumDisplacementFoam] Error 1
make[2]: Leaving directory '/root/OpenFOAM/OpenFOAM-2.2.2/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam'
make[1]: *** [solidEquilibriumDisplacementFoam] Error 2
make[1]: Target 'application' not remade because of errors.
make[1]: Leaving directory '/root/OpenFOAM/OpenFOAM-2.2.2/applications/solvers/stressAnalysis'
make: *** [stressAnalysis] Error 2
make: Target 'application' not remade because of errors.
no primeiro passo, também mostra:
Note: ignore spurious warnings about missing mpicxx.h headers
wmake libso mpi
SOURCE=UOPwrite.C ; icpc -std=c++0x -Dlinux64 -DWM_DP -wd327,654,819,1125,1476,1505,1572 -O2 -no-prec-div -DNoRepository -IlnInclude -I. -I/root/OpenFOAM/OpenFOAM-2.2.2/src/OpenFOAM/lnInclude -I/root/OpenFOAM/OpenFOAM-2.2.2/src/OSspecific/POSIX/lnInclude -fPIC -mmic -c $SOURCE -o Make/linux64IccDPOptINTEL_MPI/UOPwrite.o
UOPwrite.C(29): catastrophic error: cannot open source file "mpi.h"
#include "mpi.h"
E eu tentei localizar o arquivo mpi.h:
$ locate /mpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/anympi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/deinompi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/lammpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/openmpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/sgimpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/config/deinompi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/config/lammpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/config/openmpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/config/sgimpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/VTK/Utilities/mrmpi/mpistubs/mpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/VTK/Utilities/vtkhdf5/src/H5FDmpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/gcc-4.5.2/libjava/include/jvmpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/openmpi-1.6.3/ompi/contrib/vt/vt/tools/vtunify/mpi/vt_unify_mpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/openmpi-1.6.3/ompi/include/mpi.h.in
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/openmpi-1.6.3/ompi/mpi/f77/prototypes_mpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/platforms/linux64Gcc45/paraview-3.12.0/include/paraview-3.12/mrmpi/mpi.h
/home/ccfd/OpenFOAM/ThirdParty-2.2.2/platforms/linux64Gcc45/paraview-3.12.0/include/paraview-3.12/vtkhdf5/H5FDmpi.h
/opt/intel/composer_xe_2013_sp1.1.106/mkl/benchmarks/mp_linpack/include/hpl_mpi.h
/opt/intel/composer_xe_2013_sp1.1.106/mkl/include/fftw/fftw3-mpi.h
/opt/intel/composer_xe_2013_sp1.1.106/mkl/include/fftw/fftw_mpi.h
/opt/intel/composer_xe_2013_sp1.1.106/mkl/include/fftw/rfftw_mpi.h
/opt/intel/composer_xe_2013_sp1.2.144/mkl/benchmarks/mp_linpack/include/hpl_mpi.h
/opt/intel/composer_xe_2013_sp1.2.144/mkl/include/fftw/fftw3-mpi.h
/opt/intel/composer_xe_2013_sp1.2.144/mkl/include/fftw/fftw_mpi.h
/opt/intel/composer_xe_2013_sp1.2.144/mkl/include/fftw/rfftw_mpi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/anympi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/deinompi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/lammpi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/openmpi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/compat/sgimpi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/config/deinompi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/config/lammpi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/config/openmpi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/Utilities/mpi4py/Library/config/sgimpi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/VTK/Utilities/mrmpi/mpistubs/mpi.h
/root/OpenFOAM/ThirdParty-2.2.2/ParaView-3.12.0/VTK/Utilities/vtkhdf5/src/H5FDmpi.h
/root/OpenFOAM/ThirdParty-2.2.2/gcc-4.5.2/libjava/include/jvmpi.h
/root/OpenFOAM/ThirdParty-2.2.2/openmpi-1.6.3/ompi/contrib/vt/vt/tools/vtunify/mpi/vt_unify_mpi.h
/root/OpenFOAM/ThirdParty-2.2.2/openmpi-1.6.3/ompi/include/mpi.h.in
/root/OpenFOAM/ThirdParty-2.2.2/openmpi-1.6.3/ompi/mpi/f77/prototypes_mpi.h
/root/OpenFOAM/ThirdParty-2.2.2/platforms/linux64Gcc45/paraview-3.12.0/include/paraview-3.12/mrmpi/mpi.h
/root/OpenFOAM/ThirdParty-2.2.2/platforms/linux64Gcc45/paraview-3.12.0/include/paraview-3.12/vtkhdf5/H5FDmpi.h
/usr/include/openmpi-x86_64/mpi.h
/usr/src/kernels/2.6.32-431.11.2.el6.x86_64/include/config/usb/serial/siemens/mpi.h
/usr/src/kernels/2.6.32-431.11.2.el6.x86_64/include/linux/crypto/mpi.h
/usr/src/kernels/2.6.32-431.3.1.el6.x86_64/include/config/usb/serial/siemens/mpi.h
/usr/src/kernels/2.6.32-431.3.1.el6.x86_64/include/linux/crypto/mpi.h
O que há de errado com isso? É porque eu não tenho o Intel MPI? Qualquer maneira de resolver isso sem o Intel MPI?