On Mon, Aug 14, 2017 at 7:24 AM, Jeff Layton <layto...@att.net> wrote:
> +SciPy list > > > > On Sat, Aug 5, 2017 at 7:24 AM, Jeff Layton <layto...@att.net> wrote: > >> Good afternoon! >> >> I'm trying to build a Python module using F2PY on a simple Fortran code >> using the PGI 17.4 community compilers. >> >> I'm using Conda 4.3.21 with Python 2.7.13 and F2PY 2. The command line >> I'm using is, >> >> >> f2py --compiler=pg --fcompiler=pg -c -m mdevice mdevice.f90 >> >> >> The output from f2py is at the end of the email. Any suggestions are >> greatly appreciated. >> > > --compiler=pg seems wrong, that specifies the C/C++ compiler to use not > the Fortran compiler. Hence you get the error "don't know how to compile > C/C++ code on platform 'posix' with 'pg' compiler". Try just leaving that > off (thereby using the default C compiler you have installed, probably gcc). > > > Ralf - thanks for the response! I had tried that before and F2PY still > thinks it's using the PGI C compiler: > > > running build > running config_cc > unifing config_cc, config, build_clib, build_ext, build commands > --compiler options > running config_fc > unifing config_fc, config, build_clib, build_ext, build commands > --fcompiler options > running build_src > build_src > building extension "mdevice" sources > f2py options: [] > f2py:> /tmp/tmpkxCUbk/src.linux-x86_64-2.7/mdevicemodule.c > creating /tmp/tmpkxCUbk/src.linux-x86_64-2.7 > Reading fortran codes... > Reading file 'mdevice.f90' (format:free) > Post-processing... > Block: mdevice > Block: devicequery > In: :mdevice:mdevice.f90:devicequery > get_useparameters: no module cudafor info used by devicequery > Post-processing (stage 2)... > Building modules... > Building module "mdevice"... > Constructing wrapper function "devicequery"... > devicequery() > Wrote C/API module "mdevice" to file "/tmp/tmpkxCUbk/src.linux-x86_ > 64-2.7/mdevicemodule.c" > adding '/tmp/tmpkxCUbk/src.linux-x86_64-2.7/fortranobject.c' to sources. > adding '/tmp/tmpkxCUbk/src.linux-x86_64-2.7' to include_dirs. > copying > /home/laytonjb/anaconda2/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.c > -> /tmp/tmpkxCUbk/src.linux-x86_64-2.7 > copying > /home/laytonjb/anaconda2/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.h > -> /tmp/tmpkxCUbk/src.linux-x86_64-2.7 > build_src: building npy-pkg config files > running build_ext > customize UnixCCompiler > customize UnixCCompiler using build_ext > customize PGroupFCompiler > Found executable /opt/pgi/linux86-64/pgidir/pgf90 > Found executable /opt/pgi/linux86-64/pgidir/pgf77 > Found executable /opt/pgi/linux86-64/17.4/bin/pgfortran > customize PGroupFCompiler using build_ext > building 'mdevice' extension > compiling C sources > C compiler: /opt/pgi/linux86-64/pgidir/pgcc -fno-strict-aliasing -g -O2 > -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC > > creating /tmp/tmpkxCUbk/tmp > creating /tmp/tmpkxCUbk/tmp/tmpkxCUbk > creating /tmp/tmpkxCUbk/tmp/tmpkxCUbk/src.linux-x86_64-2.7 > compile options: '-I/tmp/tmpkxCUbk/src.linux-x86_64-2.7 > -I/home/laytonjb/anaconda2/lib/python2.7/site-packages/numpy/core/include > -I/home/laytonjb/anaconda2/include/python2.7 -c' > pgcc: /tmp/tmpkxCUbk/src.linux-x86_64-2.7/mdevicemodule.c > pgcc-Error-Unknown switch: -fno-strict-aliasing > pgcc-Error-Unknown switch: -fwrapv > pgcc-Error-Unknown switch: -Wall > pgcc-Error-Unknown switch: -Wstrict-prototypes > pgcc-Error-Unknown switch: -fno-strict-aliasing > pgcc-Error-Unknown switch: -fwrapv > pgcc-Error-Unknown switch: -Wall > pgcc-Error-Unknown switch: -Wstrict-prototypes > error: Command "/opt/pgi/linux86-64/pgidir/pgcc -fno-strict-aliasing -g > -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC > -I/tmp/tmpkxCUbk/src.linux-x86_64-2.7 -I/home/laytonjb/anaconda2/ > lib/python2.7/site-packages/numpy/core/include > -I/home/laytonjb/anaconda2/include/python2.7 > -c /tmp/tmpkxCUbk/src.linux-x86_64-2.7/mdevicemodule.c -o > /tmp/tmpkxCUbk/tmp/tmpkxCUbk/src.linux-x86_64-2.7/mdevicemodule.o" failed > with exit status 1 > > > > I'm definitely at a lose here. I have no idea how to make F2PY work with > the PGI compilers. I'm beginning to think F2PY is completely borked unless > you use the defaults (gcc). > That's not the case. Here is an example when using the Intel Fortran compiler together with either MSVC or Intel C compilers: https://software.intel.com/en-us/articles/building-numpyscipy-with-intel-mkl-and-intel-fortran-on-windows I notice there that in all cases the C compiler is explicitly specified. Did you also try ``--compiler=gcc --fcompiler=pg``? Also, I'm not sure how often this is done with f2py directly; I've only ever used the --fcompiler flag via ``python setup.py config --fcompiler=..<etc>``, invoking f2py under the hood. It could be that doing this directly is indeed broken (or was never supported in the first place). Ralf > > Thanks! > > Jeff > > > > > > >> Thanks! >> >> Jeff >> >> >> Output from f2py: >> >> >> >> running build >> running config_cc >> unifing config_cc, config, build_clib, build_ext, build commands >> --compiler options >> running config_fc >> unifing config_fc, config, build_clib, build_ext, build commands >> --fcompiler options >> running build_src >> build_src >> building extension "mdevice" sources >> f2py options: [] >> f2py:> /tmp/tmptN1fdp/src.linux-x86_64-2.7/mdevicemodule.c >> creating /tmp/tmptN1fdp/src.linux-x86_64-2.7 >> Reading fortran codes... >> Reading file 'mdevice.f90' (format:free) >> Post-processing... >> Block: mdevice >> Block: devicequery >> In: :mdevice:mdevice.f90:devicequery >> get_useparameters: no module cudafor info used by devicequery >> Post-processing (stage 2)... >> Building modules... >> Building module "mdevice"... >> Constructing wrapper function "devicequery"... >> devicequery() >> Wrote C/API module "mdevice" to file >> "/tmp/tmptN1fdp/src.linux-x86_64-2.7/mdevicemodule.c" >> adding '/tmp/tmptN1fdp/src.linux-x86_64-2.7/fortranobject.c' to >> sources. >> adding '/tmp/tmptN1fdp/src.linux-x86_64-2.7' to include_dirs. >> copying >> /home/laytonjb/anaconda2/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.c >> -> /tmp/tmptN1fdp/src.linux-x86_64-2.7 >> copying >> /home/laytonjb/anaconda2/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.h >> -> /tmp/tmptN1fdp/src.linux-x86_64-2.7 >> build_src: building npy-pkg config files >> running build_ext >> error: don't know how to compile C/C++ code on platform 'posix' with 'pg' >> compiler >> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@python.org >> https://mail.python.org/mailman/listinfo/numpy-discussion >> > > > > _______________________________________________ > NumPy-Discussion mailing > listNumPy-Discussion@python.orghttps://mail.python.org/mailman/listinfo/numpy-discussion > > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion