NAS 并行基准测试 D 类的 MPI 分段故障执行 FT 和 MG

发布于 2025-01-09 02:36:35 字数 22063 浏览 2 评论 0原文

我正在尝试在各种平台(AMD、Intel 和 ARM)上运行 NAS Parallel Benchmarks 3.4.2 的 5 个内核(CG、EP、FT、IS、MG)。
我想使用 np=[1,2,4,8,16,32,64] (进程数)执行 MPI 实现中的所有 5 种算法。 CG 和 EP 对于所有 np 值都能正确执行。
我面临的问题是 D 类 - FT(傅里叶变换)和 MG(多网格)算法会抛出 np<=8(进程数)的分段错误。对于较低的类(S、W、A、B、C),这种情况不会发生,而 IS(整数排序)返回一条信息性消息,说明 D 类进程号在范围内 (4-1024) - 这是我的事情对其他两个程序的期望。

用于编译项目的配置基于针对 Intel 和 AMD 提供的模板“make.def.template”,以及针对基于 ARM 的 AMPERE 的“make.def.gcc_mpich_m”。我正在执行的代码没有以任何方式修改,从 https:// 下载和编译www.nas.nasa.gov/software/npb.html

的输出

  • 提供 np=1 FT - MPI、D 类、np=1

n >= 2 可以成功执行,但 n=1 则不行。
问题大小

mpirun --use-hwthread-cpus -n 1 ./NPB3.4.2/NPB3.4-MPI/bin/ft.D.x  
 NAS Parallel Benchmarks 3.4 -- FT Benchmark

 No input file inputft.data. Using compiled defaults
 Size                : 2048x1024x1024  (class D)
 Iterations          :             25
 Number of processes :              1
 Processor array     :         1x   1
 Layout type         :             0D

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x7f7e41206d21 in ???
#1  0x7f7e41205ef5 in ???
#2  0x7f7e40ea420f in ???
#3  0x556771bb530a in compute_indexmap_
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT/ft.f90:694
#4  0x556771bb9eae in ft
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT/ft.f90:111
#5  0x556771bb32ae in main
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT/ft.f90:84
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 0 on node ozmpc2 exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------

ft.90:694

         do i = 1,dims(2,3)
            ii =  mod(i+xstart(3)-2+nx/2, nx) - nx/2
            ii2 = ii*ii
            do j = 1,dims(3,3)
               jj = mod(j+ystart(3)-2+ny/2, ny) - ny/2
               ij2 = jj*jj+ii2
               do k = 1,dims(1,3)
                  kk = mod(k+zstart(3)-2+nz/2, nz) - nz/2
--->              twiddle(k,i,j) = dexp(ap*dfloat(kk*kk+ij2))
               end do
            end do
         end do

发现关于“twiddle”功能的评论

为了减少基准所需的内存量,我们不再存储所有时间步长的整个时间演化数组“EX”,而只是存储第一个时间步长。而且,它仅针对调用处理器负责的网格部分进行存储,以便内存使用变得可扩展。这个新阵列称为“TWIDDLE”(请参阅​​ NPB3.0-SER)。
为了避免通过乘以网格维度(导致变量 Ntotal 中的整数溢出)并随后除以处理器数量来计算的非常大的数组大小的问题,我们更保守地计算数组分区的大小: ((NX*NY)/NP)*NZ,其中 NX、NY 和 NZ 是网格尺寸,NP 是处理器数量,结果存储在“NTDIVNP”中。为了进行性能计算,我们将网格点总数存储在浮点数“NTOTAL_F”中,而不是整数。如果处理器数量较少,此修复将会失败。

  • MG - MPI,D 级,np=1

n >= 8 可以成功执行,但 n=[1,2,4] 则不行。

mpirun --use-hwthread-cpus -n 1 ./NPB3.4.2/NPB3.4-MPI/bin/mg.D.x  
 NAS Parallel Benchmarks 3.4 -- MG Benchmark

 No input file. Using compiled defaults 

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x7f07fe12fd21 in ???
#1  0x7f07fe12eef5 in ???
#2  0x7f07fddf920f in ???
#3  0x7f07fdf41b58 in ???
#4  0x556711256740 in zero3_
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG/mg.f90:2566
#5  0x556711262b8c in mg_mpi
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG/mg.f90:230
#6  0x5567112562fe in main
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG/mg.f90:52
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 0 on node ozmpc2 exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------

mg.f90:2566

!---------------------------------------------------------------------
!---------------------------------------------------------------------
      subroutine zero3(z,n1,n2,n3)
!---------------------------------------------------------------------
!---------------------------------------------------------------------

      use mpinpb
      implicit none

      integer n1, n2, n3
      double precision z(n1,n2,n3)
      integer i1, i2, i3

      do  i3=1,n3
--->     do  i2=1,n2
            do  i1=1,n1
               z(i1,i2,i3)=0.0D0
            enddo
         enddo
      enddo

      return
      end

我不确定这是否是 FT 和 MG 算法的预期行为,如果不是,对于 np=[1,2, 成功执行这些算法的可能解决方案是什么? 4].
包含项目和执行日志的 Github 链接可以在这里找到: https://github.com/victorconka /NAS-并行基准

编译信息

gcc

ozm@ozmpc2:~/c_projects/NAS-Parallel-Benchmarks$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.3.0-17ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-HskZEa/gcc-9-9.3.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) 

mpif90

ozm@ozmpc2:~/c_projects/NAS-Parallel-Benchmarks$ mpif90 -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gfortran
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.3.0-17ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-HskZEa/gcc-9-9.3.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) 

make.def

#---------------------------------------------------------------------------
#
#                SITE- AND/OR PLATFORM-SPECIFIC DEFINITIONS. 
#
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# Items in this file will need to be changed for each platform.
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# Parallel Fortran:
#
# For CG, EP, FT, MG, LU, SP and BT, which are in Fortran, the following must 
# be defined:
#
# MPIFC      - Fortran compiler
# FFLAGS     - Fortran compilation arguments
# FMPI_INC   - any -I arguments required for compiling MPI/Fortran 
# FLINK      - Fortran linker
# FLINKFLAGS - Fortran linker arguments
# FMPI_LIB   - any -L and -l arguments required for linking MPI/Fortran 
# 
# compilations are done with $(MPIFC) $(FMPI_INC) $(FFLAGS) or
#                            $(MPIFC) $(FFLAGS)
# linking is done with       $(FLINK) $(FMPI_LIB) $(FLINKFLAGS)
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# This is the fortran compiler used for MPI programs
#---------------------------------------------------------------------------
MPIFC = mpif90
# This links MPI fortran programs; usually the same as ${MPIFC}
FLINK   = $(MPIFC)

#---------------------------------------------------------------------------
# These macros are passed to the linker to help link with MPI correctly
#---------------------------------------------------------------------------
FMPI_LIB =

#---------------------------------------------------------------------------
# These macros are passed to the compiler to help find 'mpif.h'
#---------------------------------------------------------------------------
FMPI_INC =

#---------------------------------------------------------------------------
# Global *compile time* flags for Fortran programs
#---------------------------------------------------------------------------
FFLAGS  = -O3 -g

#---------------------------------------------------------------------------
# Global *link time* flags. Flags for increasing maximum executable 
# size usually go here. 
#---------------------------------------------------------------------------
FLINKFLAGS = $(FFLAGS)


#---------------------------------------------------------------------------
# Parallel C:
#
# For IS, which is in C, the following must be defined:
#
# MPICC      - C compiler 
# CFLAGS     - C compilation arguments
# CMPI_INC   - any -I arguments required for compiling MPI/C 
# CLINK      - C linker
# CLINKFLAGS - C linker flags
# CMPI_LIB   - any -L and -l arguments required for linking MPI/C 
#
# compilations are done with $(MPICC) $(CMPI_INC) $(CFLAGS) or
#                            $(MPICC) $(CFLAGS)
# linking is done with       $(CLINK) $(CMPI_LIB) $(CLINKFLAGS)
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# This is the C compiler used for MPI programs
#---------------------------------------------------------------------------
MPICC = mpicc
# This links MPI C programs; usually the same as ${MPICC}
CLINK   = $(MPICC)

#---------------------------------------------------------------------------
# These macros are passed to the linker to help link with MPI correctly
#---------------------------------------------------------------------------
CMPI_LIB =

#---------------------------------------------------------------------------
# These macros are passed to the compiler to help find 'mpi.h'
#---------------------------------------------------------------------------
CMPI_INC =

#---------------------------------------------------------------------------
# Global *compile time* flags for C programs
#---------------------------------------------------------------------------
CFLAGS  = -O3 -g

#---------------------------------------------------------------------------
# Global *link time* flags. Flags for increasing maximum executable 
# size usually go here. 
#---------------------------------------------------------------------------
CLINKFLAGS = $(CFLAGS)


#---------------------------------------------------------------------------
# MPI dummy library:
#
# Uncomment if you want to use the MPI dummy library supplied by NAS instead 
# of the true message-passing library. The include file redefines several of
# the above macros. It also invokes make in subdirectory MPI_dummy. Make 
# sure that no spaces or tabs precede include.
#---------------------------------------------------------------------------
# include ../config/make.dummy


#---------------------------------------------------------------------------
# Utilities C:
#
# This is the C compiler used to compile C utilities.  Flags required by 
# this compiler go here also; typically there are few flags required; hence 
# there are no separate macros provided for such flags.
#---------------------------------------------------------------------------
CC  = gcc -g


#---------------------------------------------------------------------------
# Destination of executables, relative to subdirs of the main directory. . 
#---------------------------------------------------------------------------
BINDIR  = ../bin


#---------------------------------------------------------------------------
# Some machines (e.g. Crays) have 128-bit DOUBLE PRECISION numbers, which
# is twice the precision required for the NPB suite. A compiler flag 
# (e.g. -dp) can usually be used to change DOUBLE PRECISION variables to
# 64 bits, but the MPI library may continue to send 128 bits. Short of
# recompiling MPI, the solution is to use MPI_REAL to send these 64-bit
# numbers, and MPI_COMPLEX to send their complex counterparts. Uncomment
# the following line to enable this substitution. 
# 
# NOTE: IF THE I/O BENCHMARK IS BEING BUILT, WE USE CONVERTFLAG TO
#       SPECIFIY THE FORTRAN RECORD LENGTH UNIT. IT IS A SYSTEM-SPECIFIC
#       VALUE (USUALLY 1 OR 4). UNCOMMENT THE SECOND LINE AND SUBSTITUTE
#       THE CORRECT VALUE FOR "length".
#       IF BOTH 128-BIT DOUBLE PRECISION NUMBERS AND I/O ARE TO BE ENABLED,
#       UNCOMMENT THE THIRD LINE AND SUBSTITUTE THE CORRECT VALUE FOR
#       "length"
#---------------------------------------------------------------------------
# CONVERTFLAG   = -DCONVERTDOUBLE
# CONVERTFLAG   = -DFORTRAN_REC_SIZE=length
# CONVERTFLAG   = -DCONVERTDOUBLE -DFORTRAN_REC_SIZE=length
CONVERTFLAG = -DFORTRAN_REC_SIZE=0


#---------------------------------------------------------------------------
# The variable RAND controls which random number generator 
# is used. It is described in detail in README.install. 
# Use "randi8" unless there is a reason to use another one. 
# Other allowed values are "randi8_safe", "randdp" and "randdpvec"
#---------------------------------------------------------------------------
RAND   = randi8
# The following is highly reliable but may be slow:
# RAND   = randdp

suite.def

# config/suite.def
# This file is used to build several benchmarks with a single command. 
# Typing "make suite" in the main directory will build all the benchmarks
# specified in this file. 
# Each line of this file contains a benchmark name, class, and number
# of nodes. The name is one of "cg", "is", "ep", mg", "ft", "sp", "bt", 
# "lu", and "dt". 
# The class is one of "S", "W", "A", "B", "C", "D", and "E"
# (except that no classes C, D and E for DT, and no class E for IS).
# The number of nodes must be a legal number for a particular
# benchmark. The utility which parses this file is primitive, so
# formatting is inflexible. Separate name/class by tabs. 
# Comments start with "#" as the first character on a line. 
# No blank lines. 
# The following example builds sample sizes of all benchmarks. 
ep  D
cg  D
mg  D
ft  D
is  D

编译命令

make suite   

编译输出

ozm@ozmpc2:~/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI$ make suite
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/EP'
rm -f *.o *~ *.mod
rm -f npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/EP'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/EP'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams ep D 
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all ep_data.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mpinpb.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all ep.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all verify.f90
mpif90 -O3 -g -fcheck=all -o ../bin/ep.D.x ep.o ep_data.o verify.o mpinpb.o ../common/print_results.o ../common/randi8.o ../common/timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/EP'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/CG'
rm -f *.o *.mod *~ 
rm -f npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/CG'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/CG'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams cg D 
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mpinpb.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all cg_data.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all cg.f90
mpif90 -O3 -g -fcheck=all -o ../bin/cg.D.x cg.o cg_data.o mpinpb.o ../common/print_results.o ../common/get_active_nprocs.o ../common/randi8.o ../common/timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/CG'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG'
rm -f *.o *.mod *~ 
rm -f npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams mg D 
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mpinpb.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mg_data.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mg.f90
mpif90 -O3 -g -fcheck=all -o ../bin/mg.D.x mg.o mg_data.o mpinpb.o ../common/print_results.o ../common/get_active_nprocs.o ../common/randi8.o ../common/timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT'
rm -f *.o *.mod *~ mputil*
rm -f ft npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams ft D 
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mpinpb.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all ft_data.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all ft.f90
mpif90 -O3 -g -fcheck=all -o ../bin/ft.D.x ft.o ft_data.o mpinpb.o ../common/get_active_nprocs.o ../common/randi8.o ../common/print_results.o ../common/timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/IS'
rm -f *.o *~ mputil*
rm -f is npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/IS'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/IS'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams is D 
mpicc -c  -O3 -g -fcheck=all is.c
cc1: warning: command line option ‘-fcheck=all’ is valid for Fortran but not for C
mpicc -O3 -g -fcheck=all -o ../bin/is.D.x is.o ../common/c_print_results.o ../common/c_timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/IS'

I'm trying to run 5 kernels (CG, EP, FT, IS, MG) of NAS Parallel Benchmarks 3.4.2 on various platforms (AMD, Intel and ARM).
I'd like to execute all 5 algorithms in MPI implementation with np=[1,2,4,8,16,32,64] (number of processes). CG and EP execute correctly for all np values.
Problem I'm facing is that class D - FT (Fourier Transform) and MG (Multi Grid) algoritms throw a segmentation error for np<=8 (number of processes). This does not happen for the lower classes (S, W, A, B, C), whereas IS (Integer Sort) returns an informative message saying that for class D process number is within range (4-1024) - which is something I'd expect from the other two programs.

Configuration used to compile the project is based on provided templates "make.def.template" for Intel and AMD, and "make.def.gcc_mpich_m" for ARM based AMPERE. Code I'm executing is not modified in any manner, donwloaded and compiled from https://www.nas.nasa.gov/software/npb.html .

Providing outputs for np=1

  • FT - MPI, class D, np=1

Can be successfully executed with n >= 2, but not n=1.
Problem sizes

mpirun --use-hwthread-cpus -n 1 ./NPB3.4.2/NPB3.4-MPI/bin/ft.D.x  
 NAS Parallel Benchmarks 3.4 -- FT Benchmark

 No input file inputft.data. Using compiled defaults
 Size                : 2048x1024x1024  (class D)
 Iterations          :             25
 Number of processes :              1
 Processor array     :         1x   1
 Layout type         :             0D

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x7f7e41206d21 in ???
#1  0x7f7e41205ef5 in ???
#2  0x7f7e40ea420f in ???
#3  0x556771bb530a in compute_indexmap_
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT/ft.f90:694
#4  0x556771bb9eae in ft
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT/ft.f90:111
#5  0x556771bb32ae in main
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT/ft.f90:84
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 0 on node ozmpc2 exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------

ft.90:694

         do i = 1,dims(2,3)
            ii =  mod(i+xstart(3)-2+nx/2, nx) - nx/2
            ii2 = ii*ii
            do j = 1,dims(3,3)
               jj = mod(j+ystart(3)-2+ny/2, ny) - ny/2
               ij2 = jj*jj+ii2
               do k = 1,dims(1,3)
                  kk = mod(k+zstart(3)-2+nz/2, nz) - nz/2
--->              twiddle(k,i,j) = dexp(ap*dfloat(kk*kk+ij2))
               end do
            end do
         end do

Found a comment regarding the functionality of "twiddle"

TO REDUCE THE AMOUNT OF MEMORY REQUIRED BY THE BENCHMARK WE NO LONGER STORE THE ENTIRE TIME EVOLUTION ARRAY "EX" FOR ALL TIME STEPS, BUT JUST FOR THE FIRST. ALSO, IT IS STORED ONLY FOR THE PART OF THE GRID FOR WHICH THE CALLING PROCESSOR IS RESPONSIBLE, SO THAT THE MEMORY USAGE BECOMES SCALABLE. THIS NEW ARRAY IS CALLED "TWIDDLE" (SEE NPB3.0-SER).
TO AVOID PROBLEMS WITH VERY LARGE ARRAY SIZES THAT ARE COMPUTED BY MULTIPLYING GRID DIMENSIONS (CAUSING INTEGER OVERFLOW IN THE VARIABLE NTOTAL) AND SUBSEQUENTLY DIVIDING BY THE NUMBER OF PROCESSORS, WE COMPUTE THE SIZE OF ARRAY PARTITIONS MORE CONSERVATIVELY AS ((NX*NY)/NP)*NZ, WHERE NX, NY, AND NZ ARE GRID DIMENSIONS AND NP IS THE NUMBER OF PROCESSORS, THE RESULT IS STORED IN "NTDIVNP". FOR THE PERFORMANCE CALCULATION WE STORE THE TOTAL NUMBER OF GRID POINTS IN A FLOATING POINT NUMBER "NTOTAL_F" INSTEAD OF AN INTEGER. THIS FIX WILL FAIL IF THE NUMBER OF PROCESSORS IS SMALL.

  • MG - MPI, class D, np=1

Can be successfully executed with n >= 8, but not n=[1,2,4].

mpirun --use-hwthread-cpus -n 1 ./NPB3.4.2/NPB3.4-MPI/bin/mg.D.x  
 NAS Parallel Benchmarks 3.4 -- MG Benchmark

 No input file. Using compiled defaults 

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x7f07fe12fd21 in ???
#1  0x7f07fe12eef5 in ???
#2  0x7f07fddf920f in ???
#3  0x7f07fdf41b58 in ???
#4  0x556711256740 in zero3_
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG/mg.f90:2566
#5  0x556711262b8c in mg_mpi
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG/mg.f90:230
#6  0x5567112562fe in main
        at /home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG/mg.f90:52
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 0 on node ozmpc2 exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------

mg.f90:2566

!---------------------------------------------------------------------
!---------------------------------------------------------------------
      subroutine zero3(z,n1,n2,n3)
!---------------------------------------------------------------------
!---------------------------------------------------------------------

      use mpinpb
      implicit none

      integer n1, n2, n3
      double precision z(n1,n2,n3)
      integer i1, i2, i3

      do  i3=1,n3
--->     do  i2=1,n2
            do  i1=1,n1
               z(i1,i2,i3)=0.0D0
            enddo
         enddo
      enddo

      return
      end

I'm not sure whether its an expected behaviour for FT and MG algorithms, if not, what would be a possible solution to successfully execute these algorithms for np=[1,2,4].
Github link with the project and execution logs can be found here: https://github.com/victorconka/NAS-Parallel-Benchmarks.

Compiler information

gcc

ozm@ozmpc2:~/c_projects/NAS-Parallel-Benchmarks$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.3.0-17ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-HskZEa/gcc-9-9.3.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) 

mpif90

ozm@ozmpc2:~/c_projects/NAS-Parallel-Benchmarks$ mpif90 -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gfortran
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.3.0-17ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-HskZEa/gcc-9-9.3.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) 

make.def

#---------------------------------------------------------------------------
#
#                SITE- AND/OR PLATFORM-SPECIFIC DEFINITIONS. 
#
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# Items in this file will need to be changed for each platform.
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# Parallel Fortran:
#
# For CG, EP, FT, MG, LU, SP and BT, which are in Fortran, the following must 
# be defined:
#
# MPIFC      - Fortran compiler
# FFLAGS     - Fortran compilation arguments
# FMPI_INC   - any -I arguments required for compiling MPI/Fortran 
# FLINK      - Fortran linker
# FLINKFLAGS - Fortran linker arguments
# FMPI_LIB   - any -L and -l arguments required for linking MPI/Fortran 
# 
# compilations are done with $(MPIFC) $(FMPI_INC) $(FFLAGS) or
#                            $(MPIFC) $(FFLAGS)
# linking is done with       $(FLINK) $(FMPI_LIB) $(FLINKFLAGS)
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# This is the fortran compiler used for MPI programs
#---------------------------------------------------------------------------
MPIFC = mpif90
# This links MPI fortran programs; usually the same as ${MPIFC}
FLINK   = $(MPIFC)

#---------------------------------------------------------------------------
# These macros are passed to the linker to help link with MPI correctly
#---------------------------------------------------------------------------
FMPI_LIB =

#---------------------------------------------------------------------------
# These macros are passed to the compiler to help find 'mpif.h'
#---------------------------------------------------------------------------
FMPI_INC =

#---------------------------------------------------------------------------
# Global *compile time* flags for Fortran programs
#---------------------------------------------------------------------------
FFLAGS  = -O3 -g

#---------------------------------------------------------------------------
# Global *link time* flags. Flags for increasing maximum executable 
# size usually go here. 
#---------------------------------------------------------------------------
FLINKFLAGS = $(FFLAGS)


#---------------------------------------------------------------------------
# Parallel C:
#
# For IS, which is in C, the following must be defined:
#
# MPICC      - C compiler 
# CFLAGS     - C compilation arguments
# CMPI_INC   - any -I arguments required for compiling MPI/C 
# CLINK      - C linker
# CLINKFLAGS - C linker flags
# CMPI_LIB   - any -L and -l arguments required for linking MPI/C 
#
# compilations are done with $(MPICC) $(CMPI_INC) $(CFLAGS) or
#                            $(MPICC) $(CFLAGS)
# linking is done with       $(CLINK) $(CMPI_LIB) $(CLINKFLAGS)
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# This is the C compiler used for MPI programs
#---------------------------------------------------------------------------
MPICC = mpicc
# This links MPI C programs; usually the same as ${MPICC}
CLINK   = $(MPICC)

#---------------------------------------------------------------------------
# These macros are passed to the linker to help link with MPI correctly
#---------------------------------------------------------------------------
CMPI_LIB =

#---------------------------------------------------------------------------
# These macros are passed to the compiler to help find 'mpi.h'
#---------------------------------------------------------------------------
CMPI_INC =

#---------------------------------------------------------------------------
# Global *compile time* flags for C programs
#---------------------------------------------------------------------------
CFLAGS  = -O3 -g

#---------------------------------------------------------------------------
# Global *link time* flags. Flags for increasing maximum executable 
# size usually go here. 
#---------------------------------------------------------------------------
CLINKFLAGS = $(CFLAGS)


#---------------------------------------------------------------------------
# MPI dummy library:
#
# Uncomment if you want to use the MPI dummy library supplied by NAS instead 
# of the true message-passing library. The include file redefines several of
# the above macros. It also invokes make in subdirectory MPI_dummy. Make 
# sure that no spaces or tabs precede include.
#---------------------------------------------------------------------------
# include ../config/make.dummy


#---------------------------------------------------------------------------
# Utilities C:
#
# This is the C compiler used to compile C utilities.  Flags required by 
# this compiler go here also; typically there are few flags required; hence 
# there are no separate macros provided for such flags.
#---------------------------------------------------------------------------
CC  = gcc -g


#---------------------------------------------------------------------------
# Destination of executables, relative to subdirs of the main directory. . 
#---------------------------------------------------------------------------
BINDIR  = ../bin


#---------------------------------------------------------------------------
# Some machines (e.g. Crays) have 128-bit DOUBLE PRECISION numbers, which
# is twice the precision required for the NPB suite. A compiler flag 
# (e.g. -dp) can usually be used to change DOUBLE PRECISION variables to
# 64 bits, but the MPI library may continue to send 128 bits. Short of
# recompiling MPI, the solution is to use MPI_REAL to send these 64-bit
# numbers, and MPI_COMPLEX to send their complex counterparts. Uncomment
# the following line to enable this substitution. 
# 
# NOTE: IF THE I/O BENCHMARK IS BEING BUILT, WE USE CONVERTFLAG TO
#       SPECIFIY THE FORTRAN RECORD LENGTH UNIT. IT IS A SYSTEM-SPECIFIC
#       VALUE (USUALLY 1 OR 4). UNCOMMENT THE SECOND LINE AND SUBSTITUTE
#       THE CORRECT VALUE FOR "length".
#       IF BOTH 128-BIT DOUBLE PRECISION NUMBERS AND I/O ARE TO BE ENABLED,
#       UNCOMMENT THE THIRD LINE AND SUBSTITUTE THE CORRECT VALUE FOR
#       "length"
#---------------------------------------------------------------------------
# CONVERTFLAG   = -DCONVERTDOUBLE
# CONVERTFLAG   = -DFORTRAN_REC_SIZE=length
# CONVERTFLAG   = -DCONVERTDOUBLE -DFORTRAN_REC_SIZE=length
CONVERTFLAG = -DFORTRAN_REC_SIZE=0


#---------------------------------------------------------------------------
# The variable RAND controls which random number generator 
# is used. It is described in detail in README.install. 
# Use "randi8" unless there is a reason to use another one. 
# Other allowed values are "randi8_safe", "randdp" and "randdpvec"
#---------------------------------------------------------------------------
RAND   = randi8
# The following is highly reliable but may be slow:
# RAND   = randdp

suite.def

# config/suite.def
# This file is used to build several benchmarks with a single command. 
# Typing "make suite" in the main directory will build all the benchmarks
# specified in this file. 
# Each line of this file contains a benchmark name, class, and number
# of nodes. The name is one of "cg", "is", "ep", mg", "ft", "sp", "bt", 
# "lu", and "dt". 
# The class is one of "S", "W", "A", "B", "C", "D", and "E"
# (except that no classes C, D and E for DT, and no class E for IS).
# The number of nodes must be a legal number for a particular
# benchmark. The utility which parses this file is primitive, so
# formatting is inflexible. Separate name/class by tabs. 
# Comments start with "#" as the first character on a line. 
# No blank lines. 
# The following example builds sample sizes of all benchmarks. 
ep  D
cg  D
mg  D
ft  D
is  D

Compilation command

make suite   

Compilation output

ozm@ozmpc2:~/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI$ make suite
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/EP'
rm -f *.o *~ *.mod
rm -f npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/EP'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/EP'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams ep D 
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all ep_data.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mpinpb.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all ep.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all verify.f90
mpif90 -O3 -g -fcheck=all -o ../bin/ep.D.x ep.o ep_data.o verify.o mpinpb.o ../common/print_results.o ../common/randi8.o ../common/timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/EP'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/CG'
rm -f *.o *.mod *~ 
rm -f npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/CG'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/CG'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams cg D 
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mpinpb.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all cg_data.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all cg.f90
mpif90 -O3 -g -fcheck=all -o ../bin/cg.D.x cg.o cg_data.o mpinpb.o ../common/print_results.o ../common/get_active_nprocs.o ../common/randi8.o ../common/timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/CG'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG'
rm -f *.o *.mod *~ 
rm -f npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams mg D 
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mpinpb.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mg_data.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mg.f90
mpif90 -O3 -g -fcheck=all -o ../bin/mg.D.x mg.o mg_data.o mpinpb.o ../common/print_results.o ../common/get_active_nprocs.o ../common/randi8.o ../common/timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/MG'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT'
rm -f *.o *.mod *~ mputil*
rm -f ft npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams ft D 
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all mpinpb.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all ft_data.f90
mpif90 -c -I/usr/local/include -O3 -g -fcheck=all ft.f90
mpif90 -O3 -g -fcheck=all -o ../bin/ft.D.x ft.o ft_data.o mpinpb.o ../common/get_active_nprocs.o ../common/randi8.o ../common/print_results.o ../common/timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/FT'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/IS'
rm -f *.o *~ mputil*
rm -f is npbparams.h core
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/IS'
make[1]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/IS'
make[2]: se entra en el directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
make[2]: No se hace nada para 'all'.
make[2]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/sys'
../sys/setparams is D 
mpicc -c  -O3 -g -fcheck=all is.c
cc1: warning: command line option ‘-fcheck=all’ is valid for Fortran but not for C
mpicc -O3 -g -fcheck=all -o ../bin/is.D.x is.o ../common/c_print_results.o ../common/c_timers.o -L/usr/local/lib -lmpi
make[1]: se sale del directorio '/home/ozm/c_projects/NAS-Parallel-Benchmarks/NPB3.4.2/NPB3.4-MPI/IS'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文