Some misc doc for HPC on ARM
yikun / hpc-arm Goto Github PK
View Code? Open in Web Editor NEWSome misc doc for HPC on ARM
Some misc doc for HPC on ARM
The second and third steps at https://github.com/Yikun/hpc-arm/blob/main/CMAQ.md#compiling-and-installing-cmaq are confusing.
In the first step we download ioapi-3.2-2020111.tar.gz in the current folder (unspecified location). Then we cd
to /path/to/CMAQ
and try to extract ioapi-3.2-2020111.tar.gz
but it is not in the current folder, so we need to use an absolute path instead!
What is even more confusing is that later at step 6 we do export HOME=/path/to/CMAQ
, i.e. we override HOME`` for the current user. Why is this needed ? Can't we use
CMAQ_HOME` or similar instead ?
See my comments at https://github.com/Yikun/hpc-arm/pull/2/files#r688400683
It is not clear what `-r 'target_configure' -n 'your_configure'`` are in:
https://github.com/Yikun/hpc-arm/blame/02995b868db8ccadd8666161b23b5510c6a5f6e9/NEMO.md#L286
See my comment at #4 (comment)
Following the steps at https://github.com/Yikun/hpc-arm/blob/main/CMAQ.md#compiling-and-installing-cmaq lead to this error:
[root@c31236451db8 ioapi-3.2]# make BIN=Linux4_aarch64
Makefile:273: warning: overriding recipe for target `/path/to/CMAQ/Linux4_aarch64'
Makefile:270: warning: ignoring old recipe for target `/path/to/CMAQ/Linux4_aarch64'
(cd /WRF/ioapi-3.2/ioapi ; make fixed_src)
make[1]: Entering directory `/WRF/ioapi-3.2/ioapi'
make[1]: Nothing to be done for `fixed_src'.
make[1]: Leaving directory `/WRF/ioapi-3.2/ioapi'
(cd /WRF/ioapi-3.2/ioapi ; sed -e 's|IOAPI_BASE|/WRF/ioapi-3.2|' -e 's|LIBINSTALL|/path/to/CMAQ/Linux4_aarch64|' -e 's|BININSTALL|/path/to/CMAQ/Linux4_aarch64|' -e 's|IOAPI_DEFS|"-DIOAPI_NCF4"|' -e 's|NCFLIBS|-L/path/to/NETCDF/lib -lnetcdff -lnetcdf -L/path/to/HDF5/lib -lhdf5_hl -lhdf5 -lz|' -e 's|MAKEINCLUDE|include /WRF/ioapi-3.2/ioapi/Makeinclude|' -e 's|PVMINCLUDE|include |' < Makefile.nocpl.sed > Makefile )
(cd /WRF/ioapi-3.2/m3tools ; sed -e 's|IOAPI_BASE|/WRF/ioapi-3.2|' -e 's|LIBINSTALL|/path/to/CMAQ/Linux4_aarch64|' -e 's|BININSTALL|/path/to/CMAQ/Linux4_aarch64|' -e 's|IOAPI_DEFS|"-DIOAPI_NCF4"|' -e 's|NCFLIBS|-L/path/to/NETCDF/lib -lnetcdff -lnetcdf -L/path/to/HDF5/lib -lhdf5_hl -lhdf5 -lz|' -e 's|MAKEINCLUDE|include /WRF/ioapi-3.2/ioapi/Makeinclude|' -e 's|PVMINCLUDE|include |' < Makefile.nocpl.sed > Makefile )
(cd /WRF/ioapi-3.2/ioapi ; make BIN=Linux4_aarch64 all)
make[1]: Entering directory `/WRF/ioapi-3.2/ioapi'
cd /WRF/ioapi-3.2/Linux4_aarch64; mpifort -c -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -O3 -ffast-math -funroll-loops -fopenmp -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -I/WRF/ioapi-3.2/ioapi /WRF/ioapi-3.2/ioapi/modwrfio.f90
cd /WRF/ioapi-3.2/Linux4_aarch64; mpifort -c -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -O3 -ffast-math -funroll-loops -fopenmp -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -I/WRF/ioapi-3.2/ioapi /WRF/ioapi-3.2/ioapi/modmpasfio.f90
cd /WRF/ioapi-3.2/Linux4_aarch64; mpifort -c -DF90=1 -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -O3 -ffast-math -funroll-loops -fopenmp -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -I/WRF/ioapi-3.2/ioapi /WRF/ioapi-3.2/ioapi/modpdata.F90
cd /WRF/ioapi-3.2/Linux4_aarch64; mpifort -c -DF90=1 -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -O3 -ffast-math -funroll-loops -fopenmp -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -I/WRF/ioapi-3.2/ioapi /WRF/ioapi-3.2/ioapi/modatts3.F90
cd /WRF/ioapi-3.2/Linux4_aarch64; mpifort -c -DF90=1 -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -O3 -ffast-math -funroll-loops -fopenmp -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -I/WRF/ioapi-3.2/ioapi /WRF/ioapi-3.2/ioapi/modncfio.F90
/WRF/ioapi-3.2/ioapi/modncfio.F90:16601:60:
16601 | ISTAT = NF_PUT_VARA_DOUBLE( FID, VID, DIMS, DELS, GRID )
| 1
......
19612 | ISTAT = NF_PUT_VARA_DOUBLE( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:16493:58:
16493 | ISTAT = NF_PUT_VARA_INT1( FID, VID, DIMS, DELS, GRID )
| 1
......
19436 | ISTAT = NF_PUT_VARA_INT1( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:16385:58:
16385 | ISTAT = NF_PUT_VARA_INT2( FID, VID, DIMS, DELS, GRID )
| 1
......
19260 | ISTAT = NF_PUT_VARA_INT2( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:16277:57:
16277 | ISTAT = NF_PUT_VARA_INT( FID, VID, DIMS, DELS, GRID )
| 1
......
19084 | ISTAT = NF_PUT_VARA_INT( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:16169:58:
16169 | ISTAT = NF_PUT_VARA_REAL( FID, VID, DIMS, DELS, GRID )
| 1
......
18908 | ISTAT = NF_PUT_VARA_REAL( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:11321:60:
11321 | ISTAT = NF_PUT_VARA_DOUBLE( FID, VID, DIMS, DELS, GRID )
| 1
......
19612 | ISTAT = NF_PUT_VARA_DOUBLE( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:11229:58:
11229 | ISTAT = NF_PUT_VARA_INT1( FID, VID, DIMS, DELS, GRID )
| 1
......
19436 | ISTAT = NF_PUT_VARA_INT1( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:11137:58:
11137 | ISTAT = NF_PUT_VARA_INT2( FID, VID, DIMS, DELS, GRID )
| 1
......
19260 | ISTAT = NF_PUT_VARA_INT2( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:11045:57:
11045 | ISTAT = NF_PUT_VARA_INT( FID, VID, DIMS, DELS, GRID )
| 1
......
19084 | ISTAT = NF_PUT_VARA_INT( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:10953:58:
10953 | ISTAT = NF_PUT_VARA_REAL( FID, VID, DIMS, DELS, GRID )
| 1
......
18908 | ISTAT = NF_PUT_VARA_REAL( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:7850:60:
7850 | ISTAT = NF_GET_VARA_DOUBLE( FID, VID, DIMS, DELS, GRID )
| 1
......
10861 | ISTAT = NF_GET_VARA_DOUBLE( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:7742:58:
7742 | ISTAT = NF_GET_VARA_INT1( FID, VID, DIMS, DELS, GRID )
| 1
......
10685 | ISTAT = NF_GET_VARA_INT1( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:7634:58:
7634 | ISTAT = NF_GET_VARA_INT2( FID, VID, DIMS, DELS, GRID )
| 1
......
10509 | ISTAT = NF_GET_VARA_INT2( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:7526:57:
7526 | ISTAT = NF_GET_VARA_INT( FID, VID, DIMS, DELS, GRID )
| 1
......
10333 | ISTAT = NF_GET_VARA_INT( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:7418:58:
7418 | ISTAT = NF_GET_VARA_REAL( FID, VID, DIMS, DELS, GRID )
| 1
......
10157 | ISTAT = NF_GET_VARA_REAL( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:2570:60:
2570 | ISTAT = NF_GET_VARA_DOUBLE( FID, VID, DIMS, DELS, GRID )
| 1
......
10861 | ISTAT = NF_GET_VARA_DOUBLE( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:2478:58:
2478 | ISTAT = NF_GET_VARA_INT1( FID, VID, DIMS, DELS, GRID )
| 1
......
10685 | ISTAT = NF_GET_VARA_INT1( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:2386:58:
2386 | ISTAT = NF_GET_VARA_INT2( FID, VID, DIMS, DELS, GRID )
| 1
......
10509 | ISTAT = NF_GET_VARA_INT2( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:2294:57:
2294 | ISTAT = NF_GET_VARA_INT( FID, VID, DIMS, DELS, GRID )
| 1
......
10333 | ISTAT = NF_GET_VARA_INT( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
/WRF/ioapi-3.2/ioapi/modncfio.F90:2202:58:
2202 | ISTAT = NF_GET_VARA_REAL( FID, VID, DIMS, DELS, GRID )
| 1
......
10157 | ISTAT = NF_GET_VARA_REAL( FID, VID, DIMS, DELS, GRID )
| 2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
make[1]: *** [modncfio.o] Error 1
make[1]: Leaving directory `/WRF/ioapi-3.2/ioapi'
make: *** [all] Error 2
[root@c31236451db8 ioapi-3.2]#
Following the steps at https://github.com/Yikun/hpc-arm/blob/main/WRF.md#compiling-and-installing-wrf the compile (step 7) fails with:
time mpif90 -o real_em.o -c -O3 -ftree-vectorize -funroll-loops -march=armv8.2-a -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 -fopenmp -I../dyn_em -I../dyn_nmm -I/WRF/WRF-4.2/external/esmf_time_f90 -I/WRF/WRF-4.2/main -I/WRF/WRF-4.2/external/io_netcdf -I/WRF/WRF-4.2/external/io_int -I/WRF/WRF-4.2/frame -I/WRF/WRF-4.2/share -I/WRF/WRF-4.2/phys -I/WRF/WRF-4.2/wrftladj -I/WRF/WRF-4.2/chem -I/WRF/WRF-4.2/inc -I/path/to/NETCDF/include real_em.f90
f951: error: unknown value 'armv8.2-a' for -march
0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 6824maxresident)k
0inputs+0outputs (0major+742minor)pagefaults 0swaps
make[1]: [real_em.o] Error 1 (ignored)
ranlib libwrflib.a
ranlib: 'libwrflib.a': No such file
I have tried with -march=native
but again it fails the same way.
$ gcc -march=native -Q --help=target
prints -march= armv8.2-a+crypto+dotprod+fp16fml
but once again it fails the same way.
Finally I've removed -march=...
altogether from CFLAGS_LOCAL
and FCOPTIM
and this helped a bit but the build failed later. See the attachment for the full log.
wrf-compile.log.zip
http://fvcom.smast.umassd.edu/releases/fvcom-4.3.tar.gz returns error 404.
It might be because I am not logged in.
I've created an account with them but in the confirmation email it says:
Attention please: Our staff will check and verify your account. It will take about 7 business days. Your account will not be valid until that.
Thank you for registering with FVCOM @ MEDML!
So, I won't be able to test FVCOM for now.
FVCOM requires registration to download their source code.
So I am not able to test the steps at https://github.com/Yikun/hpc-arm/blob/main/ROMS.md#compiling-and-installing-roms
I've requested an account with them. Hopefully they will approve it!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.