diff --git a/.gitignore b/.gitignore index bb64d27b235a79219e952b5e38224868ad0075b5..b092bca9a0dec9f884f8b6c2279b6ccdfaa27771 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ bin/* *.su *.bin .DS* +Make_include fdelmodc_cuda.tgz marchenko/fmute marchenko/marchenko diff --git a/Make_include b/Make_include index fedfc8a69b1ef80b25f1cbf7ee9c946fd7c46d58..1d302c531d1799a0cc92cf9b7bccc9f317edd233 100644 --- a/Make_include +++ b/Make_include @@ -6,18 +6,17 @@ # -3- on Solaris system use RANLIB=ranlib which is defined below # the current directory (in vi ":r!pwd") -ROOT=/Users/jan/src/OpenSource +ROOT=/vardim/home/thorbcke/src/OpenSource ######################################################################## # C compiler; change this only if you are using a different C-compiler #GNU +#CC = gcc-mp-5 CC = gcc -#CC = gcc-mp-6 FC = gfortran # Linux gcc version 4.x OPTC = -O3 -ffast-math -#OPTC += -Wunused-but-set-variable -Wunused-variable #to include parallelisation with OpenMP OPTC += -fopenmp @@ -37,13 +36,16 @@ OPTC += -fopenmp #OPTF = -O2 #Intel -#CC = icc -#FC = ifort -# Linux -#OPTC = -O3 -no-prec-div -#OPTF = -O3 -no-prec-div +CC = icc +FC = ifort +## Linux +#OPTC = -O3 -no-prec-div -qopt-report-phase=vec,openmp +#OPTF = -O3 -no-prec-div -qopt-report-phase=vec,openmp +OPTC = -O3 -no-prec-div -xCORE-AVX2 +OPTF = -O3 -no-prec-div -xCORE-AVX2 #to include parallelisation with OpenMP -#OPTC += -qopenmp +OPTC += -qopenmp + # Apple OSX intel 11.1.076 snow leopard 10.6.2 #OPTC = -O3 -msse3 -no-prec-div -vec-report2 -fno-builtin-__sprintf_chk diff --git a/fdelmodc/Makefile b/fdelmodc/Makefile index 483a0588735b740cfd5f02e8885d1fdeec7d83c6..17787f58c11997940f1954f05e321cfceae0040b 100644 --- a/fdelmodc/Makefile +++ b/fdelmodc/Makefile @@ -12,6 +12,7 @@ LIBS += -L$L -lgenfft -lm $(LIBSM) #OPTC := $(subst -O3 -ffast-math, -O1 -g ,$(OPTC)) #PGI options for compiler feedback #OPTC += -Mprof=lines +OPTC += -qopt-report #LDFLAGS += -Mprof=lines all: fdelmodc diff --git a/fdelmodc/acoustic4.c b/fdelmodc/acoustic4.c index 58f282eeb6fb5a2b79affb7705f32fd68960c308..3a46445049fe5adf0477afc434649bb79f455188 100644 --- a/fdelmodc/acoustic4.c +++ b/fdelmodc/acoustic4.c @@ -82,7 +82,7 @@ int acoustic4(modPar mod, srcPar src, wavPar wav, bndPar bnd, int itime, int ixs ioPz=ioPx; */ /* calculate vx for all grid points except on the virtual boundary*/ -#pragma omp for private (ix, iz) nowait schedule(guided,1) +#pragma omp for private (ix, iz) nowait schedule(guided,1) #pragma ivdep for (ix=mod.ioXx; ix<mod.ieXx; ix++) { #pragma ivdep diff --git a/fdelmodc/demo/model.scr b/fdelmodc/demo/model.scr index 1c6d51ee14e904df3857d204496f96eb509d03de..e7702dc877498bea890a1f5fe6908763009152a2 100755 --- a/fdelmodc/demo/model.scr +++ b/fdelmodc/demo/model.scr @@ -1,21 +1,34 @@ #!/bin/bash +#SBATCH -J OpenMP-test +#SBATCH --nodes=1 +#SBATCH --ntasks-per-node=40 +#SBATCH --time=0:15:00 + +cd $SLURM_SUBMIT_DIR cp=2000 rho=1000 dx=2.5 dt=0.0005 -make#mod sizex=6000 sizez=2000 dx=$dx dz=$dx cp0=$cp cs0=$cs ro0=$rho \ +makemod sizex=6000 sizez=2000 dx=$dx dz=$dx cp0=$cp cs0=$cs ro0=$rho \ orig=-3000,0 file_base=syncl.su \ intt=def x=-3000,0,3000 z=400,400,400 poly=0 cp=2050 ro=1500 \ intt=def x=-3000,-2000,-1000,-800,0,800,3000 z=650,650,700,750,900,750,600 poly=2 cp=2100 ro=2000 \ intt=def x=-3000,3000 z=1250,1250 poly=0 cp=2400 ro=1800 \ -export OMP_NUM_THREADS=1 makewave fp=20 dt=$dt file_out=wave.su nt=4096 t0=0.1 +# +export KMP_AFFINITY=verbose,granularity=fine,compact,1,0 + +for threads in 2 4 8 12 16 20 24 +do + +export OMP_NUM_THREADS=$threads +echo "number of threads=$threads" -../fdelmodc \ +time ../fdelmodc \ file_cp=syncl_cp.su ischeme=1 \ file_den=syncl_ro.su \ file_src=wave.su \ @@ -36,3 +49,4 @@ makewave fp=20 dt=$dt file_out=wave.su nt=4096 t0=0.1 ntaper=101 \ left=2 right=2 bottom=2 top=1 +done diff --git a/fdelmodc/demo/modelOilGas.scr b/fdelmodc/demo/modelOilGas.scr index 3ff23e18eb014ff7df15f09fe79fa0ae5d18e55c..89907c0d5c8891a821c3b06d27cdbd1f25b94fdf 100755 --- a/fdelmodc/demo/modelOilGas.scr +++ b/fdelmodc/demo/modelOilGas.scr @@ -7,6 +7,7 @@ rho=2500 dx=2.5 dt=0.0005 + makemod sizex=5000 sizez=2500 dx=$dx dz=$dx cp0=$cp ro0=$rho \ orig=-2500,0 file_base=syncl.su \ intt=def x=-2500,0,2500 z=250,250,250 poly=0 cp=2300 ro=2000 \ @@ -15,39 +16,39 @@ makemod sizex=5000 sizez=2500 dx=$dx dz=$dx cp0=$cp ro0=$rho \ makewave w=g1 fp=20 dt=$dt file_out=wave.su nt=4096 t0=0.1 -export OMP_NUM_THREADS=2 +export OMP_NUM_THREADS=8 zsrc=1100 -zsrc=15 +zsrc=0 -fdelmodc \ +../fdelmodc \ file_cp=syncl_cp.su ischeme=1 iorder=4 \ file_den=syncl_ro.su \ file_src=wave.su \ file_rcv=shot_fd.su \ - src_type=6 \ + src_type=7 \ src_orient=1 \ src_injectionrate=0 \ rec_type_vz=1 \ - rec_type_vx=1 \ rec_type_p=1 \ rec_int_vz=2 \ dtrcv=0.004 \ rec_delay=0.1 \ - verbose=4 \ - tmod=2.0 \ + verbose=2 \ + tmod=2.01 \ dxrcv=10.0 \ xrcv1=-2250 xrcv2=2250 \ zrcv1=0 zrcv2=0 \ xsrc=0 zsrc=$zsrc \ + file_snap=snapF_$zsrc \ + tsnap1=0.1 tsnap2=2.0 dtsnap=0.05 dxsnap=$dx dzsnap=$dx \ ntaper=101 \ snapwithbnd=1 \ - file_snap=snapF_$zsrc \ - tsnap1=0.1 tsnap2=4.0 dtsnap=0.05 dxsnap=$dx dzsnap=$dx \ - left=2 right=2 top=2 bottom=2 + left=2 right=2 top=2 bottom=2 -exit +suxmovie < snapF_${zsrc}_svz.su loop=1 clip=1e-13 +exit makemod sizex=5000 sizez=2500 dx=$dx dz=$dx cp0=$cp ro0=$rho \ orig=-2500,0 file_base=hom.su diff --git a/fdelmodc/demo/modelhom.scr b/fdelmodc/demo/modelhom.scr index f1f00c891c049cd893e3389abaa850e3f6dbef74..4d6585fb283384c173703b162dfa741ae0c36f26 100755 --- a/fdelmodc/demo/modelhom.scr +++ b/fdelmodc/demo/modelhom.scr @@ -8,7 +8,7 @@ export PATH=:$HOME/src/OpenSource/bin:$HOME/bin64:$PATH: -cd /Users/jan/src/OpenSource/fdelmodc/demo +cd /vardim/home/thorbcke/src/OpenSource/fdelmodc/demo dx=2.5 dt=0.0005 @@ -22,7 +22,7 @@ makemod sizex=6000 sizez=900 dx=$dx dz=$dx cp0=1900 ro0=1200 \ makewave w=fw fmin=0 flef=5 frig=80 fmax=100 dt=$dt file_out=wavefw.su nt=4096 t0=0.3 scale=0 scfft=1 -export OMP_NUM_THREADS=2 +export OMP_NUM_THREADS=4 makewave fp=20 dt=$dt file_out=wave.su nt=4096 t0=0.1 scale=1 diff --git a/marchenko/readShotData.c b/marchenko/readShotData.c index 039ededa39f4cd74ddbaa3c9a6403e4f0878a520..6fbb1ec4b23d3a06ef371963bbfd0ec1f9c3faef 100644 --- a/marchenko/readShotData.c +++ b/marchenko/readShotData.c @@ -71,7 +71,13 @@ int readShotData(char *filename, float *xrcv, float *xsrc, float *zsrc, int *xnx if (nread != TRCBYTES) { /* no more data in file */ break; } - +/* ToDo Don't store the traces that are not in the aperture */ +/* + if ( (NINT(sx_shot*scl-fxse) > 0) || (NINT(-fxsb) > 0) ) { + vwarn("source positions are outside synthesis aperture"); + vmess("xsrc = %.2f", xsrc[k], xrcv[k*nx+0], xrcv[k*nx+nx-1]); + } +*/ sx_shot = hdr.sx; fldr_shot = hdr.fldr; xsrc[igath] = sx_shot*scl;