Page 1 of 1

Release 1.60.4 is available

Posted: Thu Oct 02, 2014 11:46 pm
by fgygi
Qbox 1.60.4 is available. It includes minor bug fixes from 1.60.0 and can be built using the FFTW3 library or the ESSL FFT functions.
The USE_FFTW macro should not be used anymore. It should be replaced by one of the following macros, to be defined in the .mk makefile include:
USE_FFTW2, USE_FFTW3, USE_ESSL_FFT, or FFT_NOLIB.

The following is an example of makefile include using make conditionals for the selection of the FFT library:

Code: Select all

#-------------------------------------------------------------------------------
#
# Copyright (c) 2014 The Regents of the University of California
#
# This file is part of Qbox
#
# Qbox is distributed under the terms of the GNU General Public License
# as published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
# See the file COPYING in the root directory of this distribution
# or <http://www.gnu.org/licenses/>.
#
#-------------------------------------------------------------------------------
#
#  pavane.mk
#
#-------------------------------------------------------------------------------
 PLT=Linux_x8664
#-------------------------------------------------------------------------------
 SCALAPACKDIR = $(HOME)/software/scalapack/scalapack-2.0.2
 XERCESCDIR=$(HOME)/software/xerces/xerces-c-src_2_8_0
 ATLASDIR=/usr/lib64/atlas

 PLTOBJECTS = readTSC.o
 SVN_VER :=$(shell svnversion -n)
 DFLAGS += -DSVN_VERSION='"$(SVN_VER)"'

 CXX=mpicxx
 LD=$(CXX)

 PLTFLAGS += -DIA32 -D_LARGEFILE_SOURCE \
             -D_FILE_OFFSET_BITS=64 -DUSE_MPI -DSCALAPACK -DADD_ \
             -DAPP_NO_THREADS -DXML_USE_NO_THREADS -DUSE_XERCES \
             -DMPICH_IGNORE_CXX_SEEK

# FFT must be FFTW2, FFTW3, ESSL or NOLIB
 FFT=FFTW2

ifeq ($(FFT),FFTW2)
 PLTFLAGS += -DUSE_FFTW2
#PLTFLAGS += -DFFTWMEASURE
 FFTWDIR=$(HOME)/software/fftw/Linux_x8664/fftw-2.1.5/fftw
 FFTWINCLUDEDIR=$(FFTWDIR)
 FFTWLIBDIR=$(FFTWDIR)/.libs
 INCLUDE += -I$(FFTWINCLUDEDIR)
 LIBPATH += -L$(FFTWLIBDIR)
 LIBS += -lfftw
endif

ifeq ($(FFT),FFTW3)
 PLTFLAGS += -DUSE_FFTW3
#PLTFLAGS += -DFFTWMEASURE
#PLTFLAGS += -DFFTW_TRANSPOSE
 PLTFLAGS += -DFFTW3_2D
 FFTWDIR=$(HOME)/software/fftw/fftw-3.3.4
 FFTWINCLUDEDIR=$(FFTWDIR)/api
 FFTWLIBDIR=$(FFTWDIR)/.libs
 INCLUDE += -I$(FFTWINCLUDEDIR)
 LIBPATH += -L$(FFTWLIBDIR)
 LIBS += -lfftw3
endif

ifeq ($(FFT),ESSL)
$(error ESSL library not available)
endif

ifeq ($(FFT),NOLIB)
 PLTFLAGS += -DFFT_NOLIB
endif

 INCLUDE += -I$(XERCESCDIR)/include

 CXXFLAGS= -g -O3 -Wunused -D$(PLT) $(INCLUDE) $(PLTFLAGS) $(DFLAGS)

 LIBPATH += -L$(XERCESCDIR)/lib \
            -L$(ATLASDIR) -L$(SCALAPACKDIR) -L/usr/lib64

 LIBS += -lpthread -lxerces-c -lscalapack -llapack -lf77blas -latlas 

 LDFLAGS = $(LIBPATH) $(LIBS)

#-------------------------------------------------------------------------------

Re: Release 1.60.4 is available

Posted: Thu Jan 29, 2015 3:54 pm
by lercole
Hello François,
I am trying to compile the new version of Qbox with FFTW3 and MKL libraries.
I noticed that it is possible to include the flags -DUSE_FFTW3_2D and -DUSE_FFTW3_THREADS. Is there any improvement in doing that? And what is the difference between them?
Thanks

Loris

Re: Release 1.60.4 is available

Posted: Thu Jan 29, 2015 11:52 pm
by fgygi
Hi Loris,
The FFTW3_2D option allows for the use of the fftw3 two-dimensional functions. The FFTW3_THREADS option enables multithreaded transforms. We do not have a lot of experience with these options. In some cases they provide a slight speedup. If you experiment with them, please let us know if you notice a significant performance improvement (this also depends on the system being simulated). There is not really a strong reason to move from FFTW2 to FFTW3 (apart from availability of the library on a given platform). On the other hand, if you use an IBM platform, the USE_ESSL_FFT option is significantly faster.