Compare commits

...

7 Commits

Author SHA1 Message Date
Marc Howison b1aa655b22 1.6.3 release 2011-07-25 14:09:43 +00:00
Marc Howison efb1e39233 more fixes to the new libtool build system 2011-07-19 01:31:21 +00:00
Marc Howison 5b611ab155 new build system for both H5hut and H5Part; preparing 1.6.3 release of H5Part 2011-07-16 18:30:25 +00:00
Marc Howison 66449ee44d fixed mismatched function names and uncorrected indices in Fortran API; incorporated bug report for Fortran test 2011-02-01 16:36:00 +00:00
Marc Howison d368a60202 bug fixes in Fortran API for 1.6.2 2010-07-28 21:44:48 +00:00
Marc Howison 6b4b556ff1 removed H5PartSetViewEmpty and enabled 0 as input to H5PartSetNumParticles 2010-06-29 16:39:29 +00:00
Marc Howison 0857443617 fixed spelling errors in NEWS 2010-06-11 17:48:42 +00:00
25 changed files with 1159 additions and 1037 deletions
+3
View File
@@ -18,6 +18,9 @@ doc/Doxyfile -text
doc/H5X_File_Format.txt -text doc/H5X_File_Format.txt -text
doc/Makefile.am -text doc/Makefile.am -text
doc/doxyfooter -text doc/doxyfooter -text
examples/core_vfd.c -text
examples/fields.c -text
examples/particles.c -text
examples/simplef.F90 -text examples/simplef.F90 -text
examples/stridedf.F90 -text examples/stridedf.F90 -text
examples/write_setview.c -text examples/write_setview.c -text
+1 -2
View File
@@ -1,5 +1,6 @@
# Trial by Antino Kim # Trial by Antino Kim
# Top level Makefile.am # Top level Makefile.am
ACLOCAL_AMFLAGS=-I m4
SUBDIRS = \ SUBDIRS = \
doc \ doc \
@@ -7,8 +8,6 @@ SUBDIRS = \
test \ test \
tools tools
EXTRA_DIST = configure-crayxt
MAINTAINERCLEANFILES = \ MAINTAINERCLEANFILES = \
config.h \ config.h \
config.log \ config.log \
+30 -4
View File
@@ -1,3 +1,29 @@
#### H5PART 1.6.3 ############################################################
New build system uses libtool and can build shared libraries.
Fixed a bug that incorrectly identifies the number of selected points in a view
when using H5PartSetViewIndices.
Fixed bug in Fortran test reported by several people, as well as several
incorrect views set in the C test that were causing segfaults.
Fixed name mismatches in the Fortran interface, and an off-by-one indexing
problem.
#### H5PART 1.6.2 ############################################################
Removed H5PartSetViewEmpty
--------------------------
An empty view can now be selected with:
H5PartSetNumParticles(file, 0);
Bug Fixes to Attribute Calls in Fortran API
-------------------------------------------
Fixed a problem where attribute values were reverting to zero.
#### H5PART 1.6.1 ############################################################ #### H5PART 1.6.1 ############################################################
Chunking in the H5Part API Chunking in the H5Part API
@@ -12,7 +38,7 @@ on disk.
All Steps Available on Write All Steps Available on Write
---------------------------- ----------------------------
Previously, existing steps in a file were only accessable in read-only mode. Previously, existing steps in a file were only accessible in read-only mode.
Now, all steps are available in all modes, including write-truncate and Now, all steps are available in all modes, including write-truncate and
write-append. Thus, it is now possible to overwrite existing data in write write-append. Thus, it is now possible to overwrite existing data in write
mode. To help alert the user to this possibility, a warning is issued every mode. To help alert the user to this possibility, a warning is issued every
@@ -23,9 +49,9 @@ New Throttling Routine
---------------------- ----------------------
Previously, a throttle factor of N meant that for P processors, the total Previously, a throttle factor of N meant that for P processors, the total
number of P writes were divided into N batchs of P/N writes. number of P writes were divided into N batches of P/N writes.
To better accomodate round-robin lustre striping, the new policy is to To better accommodate round-robin lustre striping, the new policy is to
execute P/N batches of N writes. Thus, matching N to the number of stripes execute P/N batches of N writes. Thus, matching N to the number of stripes
results in the desirable 1-1 matching of writers to stripes. results in the desirable 1-1 matching of writers to stripes.
@@ -160,7 +186,7 @@ calls.
Previously, a user could overrun internal buffers for dataset names. Now, a Previously, a user could overrun internal buffers for dataset names. Now, a
fixed limit of 64 chars is imposed. Dataset names that are longer than this are fixed limit of 64 chars is imposed. Dataset names that are longer than this are
truncated and a warning is printed. We expect that most users are using truncated and a warning is printed. We expect that most users are using
short canoncical names like x, px, id, etc. short canonical names like x, px, id, etc.
Changes to Existing API Changes to Existing API
----------------------- -----------------------
+9 -1
View File
@@ -15,7 +15,6 @@ aclocal $ACLOCAL_FLAGS || {
echo echo
echo echo
echo echo
echo
echo "+ running autoheader ... " echo "+ running autoheader ... "
autoheader || { autoheader || {
echo echo
@@ -25,6 +24,15 @@ autoheader || {
echo echo
echo echo
echo echo
echo "+ running libtoolize ... "
libtoolize --force || {
echo
echo "libtoolize failed"
exit 1
}
echo
echo
echo
echo "+ running autoconf ... " echo "+ running autoconf ... "
autoconf || { autoconf || {
echo echo
+408 -316
View File
File diff suppressed because it is too large Load Diff
Vendored
+178 -55
View File
@@ -1,9 +1,10 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
# Free Software Foundation, Inc.
timestamp='2005-02-10' timestamp='2009-04-17'
# This file is (in principle) common to ALL GNU software. # This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software # The presence of a machine in this file suggests that SOME GNU software
@@ -21,14 +22,15 @@ timestamp='2005-02-10'
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# Boston, MA 02111-1307, USA. # 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under # configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program. # the same distribution terms that you use for the rest of that program.
# Please send patches to <config-patches@gnu.org>. Submit a context # Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry. # diff and a properly formatted ChangeLog entry.
# #
@@ -70,8 +72,8 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\ version="\
GNU config.sub ($timestamp) GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
Free Software Foundation, Inc. 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -83,11 +85,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do while test $# -gt 0 ; do
case $1 in case $1 in
--time-stamp | --time* | -t ) --time-stamp | --time* | -t )
echo "$timestamp" ; exit 0 ;; echo "$timestamp" ; exit ;;
--version | -v ) --version | -v )
echo "$version" ; exit 0 ;; echo "$version" ; exit ;;
--help | --h* | -h ) --help | --h* | -h )
echo "$usage"; exit 0 ;; echo "$usage"; exit ;;
-- ) # Stop option processing -- ) # Stop option processing
shift; break ;; shift; break ;;
- ) # Use stdin as input. - ) # Use stdin as input.
@@ -99,7 +101,7 @@ while test $# -gt 0 ; do
*local*) *local*)
# First pass through any local machine types. # First pass through any local machine types.
echo $1 echo $1
exit 0;; exit ;;
* ) * )
break ;; break ;;
@@ -118,8 +120,10 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations. # Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;; ;;
@@ -170,6 +174,10 @@ case $os in
-hiux*) -hiux*)
os=-hiuxwe2 os=-hiuxwe2
;; ;;
-sco6)
os=-sco5v6
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5) -sco5)
os=-sco3.2v5 os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -186,6 +194,10 @@ case $os in
# Don't forget version if it is 3.2v4 or newer. # Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*) -sco*)
os=-sco3.2v2 os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@@ -230,22 +242,28 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \ | am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| bfin \
| c4x | clipper \ | c4x | clipper \
| d10v | d30v | dlx | dsp16xx \ | d10v | d30v | dlx | dsp16xx \
| fr30 | frv \ | fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \ | i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \ | ip2k | iq2000 \
| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ | lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \ | mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \ | mips16 \
| mips64 | mips64el \ | mips64 | mips64el \
| mips64vr | mips64vrel \ | mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \ | mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \ | mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \ | mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \ | mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \ | mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \ | mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \ | mipsisa64 | mipsisa64el \
@@ -254,21 +272,26 @@ case $basic_machine in
| mipsisa64sr71k | mipsisa64sr71kel \ | mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \ | mipstx39 | mipstx39el \
| mn10200 | mn10300 \ | mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \ | msp430 \
| nios | nios2 \
| ns16k | ns32k \ | ns16k | ns32k \
| openrisc | or32 \ | or32 \
| pdp10 | pdp11 | pj | pjl \ | pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \ | pyramid \
| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \ | sh64 | sh64le \
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| strongarm \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
| tahoe | thumb | tic4x | tic80 | tron \ | tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \ | v850 | v850e \
| we32k \ | we32k \
| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k) | z8k | z80)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
;; ;;
m6811 | m68hc11 | m6812 | m68hc12) m6811 | m68hc11 | m6812 | m68hc12)
@@ -278,6 +301,9 @@ case $basic_machine in
;; ;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;; ;;
ms1)
basic_machine=mt-unknown
;;
# We use `pc' rather than `unknown' # We use `pc' rather than `unknown'
# because (1) that's what they normally are, and # because (1) that's what they normally are, and
@@ -297,28 +323,32 @@ case $basic_machine in
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \ | avr-* | avr32-* \
| bs2000-* \ | bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
| clipper-* | craynv-* | cydra-* \ | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \ | d10v-* | d30v-* | dlx-* \
| elxsi-* \ | elxsi-* \
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \ | h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \ | i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \ | ip2k-* | iq2000-* \
| m32r-* | m32rle-* \ | lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \ | mips16-* \
| mips64-* | mips64el-* \ | mips64-* | mips64el-* \
| mips64vr-* | mips64vrel-* \ | mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \ | mips64orion-* | mips64orionel-* \
| mips64r5900-* | mips64r5900el-* \
| mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \ | mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \ | mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \ | mips64vr5000-* | mips64vr5000el-* \
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \ | mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \ | mipsisa64-* | mipsisa64el-* \
@@ -327,26 +357,33 @@ case $basic_machine in
| mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \ | mipstx39-* | mipstx39el-* \
| mmix-* \ | mmix-* \
| mt-* \
| msp430-* \ | msp430-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \ | none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \ | orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \ | pyramid-* \
| romp-* | rs6000-* \ | romp-* | rs6000-* \
| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \ | tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
| tron-* \ | tron-* \
| v850-* | v850e-* | vax-* \ | v850-* | v850e-* | vax-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
| xstormy16-* | xtensa-* \ | xstormy16-* | xtensa*-* \
| ymp-* \ | ymp-* \
| z8k-*) | z8k-* | z80-*)
;;
# Recognize the basic CPU types without company name, with glob match.
xtensa*)
basic_machine=$basic_machine-unknown
;; ;;
# Recognize the various machine names and aliases which stand # Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS. # for a CPU type and a company and sometimes even an OS.
@@ -410,6 +447,10 @@ case $basic_machine in
basic_machine=m68k-apollo basic_machine=m68k-apollo
os=-bsd os=-bsd
;; ;;
aros)
basic_machine=i386-pc
os=-aros
;;
aux) aux)
basic_machine=m68k-apple basic_machine=m68k-apple
os=-aux os=-aux
@@ -418,10 +459,22 @@ case $basic_machine in
basic_machine=ns32k-sequent basic_machine=ns32k-sequent
os=-dynix os=-dynix
;; ;;
blackfin)
basic_machine=bfin-unknown
os=-linux
;;
blackfin-*)
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
c90) c90)
basic_machine=c90-cray basic_machine=c90-cray
os=-unicos os=-unicos
;; ;;
cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
convex-c1) convex-c1)
basic_machine=c1-convex basic_machine=c1-convex
os=-bsd os=-bsd
@@ -450,8 +503,8 @@ case $basic_machine in
basic_machine=craynv-cray basic_machine=craynv-cray
os=-unicosmp os=-unicosmp
;; ;;
cr16c) cr16)
basic_machine=cr16c-unknown basic_machine=cr16-unknown
os=-elf os=-elf
;; ;;
crds | unos) crds | unos)
@@ -489,6 +542,10 @@ case $basic_machine in
basic_machine=m88k-motorola basic_machine=m88k-motorola
os=-sysv3 os=-sysv3
;; ;;
dicos)
basic_machine=i686-pc
os=-dicos
;;
djgpp) djgpp)
basic_machine=i586-pc basic_machine=i586-pc
os=-msdosdjgpp os=-msdosdjgpp
@@ -643,6 +700,14 @@ case $basic_machine in
basic_machine=m68k-isi basic_machine=m68k-isi
os=-sysv os=-sysv
;; ;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
;;
m68knommu-*)
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
m88k-omron*) m88k-omron*)
basic_machine=m88k-omron basic_machine=m88k-omron
;; ;;
@@ -658,6 +723,10 @@ case $basic_machine in
basic_machine=i386-pc basic_machine=i386-pc
os=-mingw32 os=-mingw32
;; ;;
mingw32ce)
basic_machine=arm-unknown
os=-mingw32ce
;;
miniframe) miniframe)
basic_machine=m68000-convergent basic_machine=m68000-convergent
;; ;;
@@ -683,6 +752,9 @@ case $basic_machine in
basic_machine=i386-pc basic_machine=i386-pc
os=-msdos os=-msdos
;; ;;
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
mvs) mvs)
basic_machine=i370-ibm basic_machine=i370-ibm
os=-mvs os=-mvs
@@ -758,9 +830,8 @@ case $basic_machine in
basic_machine=hppa1.1-oki basic_machine=hppa1.1-oki
os=-proelf os=-proelf
;; ;;
or32 | or32-*) openrisc | openrisc-*)
basic_machine=or32-unknown basic_machine=or32-unknown
os=-coff
;; ;;
os400) os400)
basic_machine=powerpc-ibm basic_machine=powerpc-ibm
@@ -782,6 +853,14 @@ case $basic_machine in
basic_machine=i860-intel basic_machine=i860-intel
os=-osf os=-osf
;; ;;
parisc)
basic_machine=hppa-unknown
os=-linux
;;
parisc-*)
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
pbd) pbd)
basic_machine=sparc-tti basic_machine=sparc-tti
;; ;;
@@ -791,6 +870,12 @@ case $basic_machine in
pc532 | pc532-*) pc532 | pc532-*)
basic_machine=ns32k-pc532 basic_machine=ns32k-pc532
;; ;;
pc98)
basic_machine=i386-pc
;;
pc98-*)
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3) pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc basic_machine=i586-pc
;; ;;
@@ -847,6 +932,10 @@ case $basic_machine in
basic_machine=i586-unknown basic_machine=i586-unknown
os=-pw32 os=-pw32
;; ;;
rdos)
basic_machine=i386-pc
os=-rdos
;;
rom68k) rom68k)
basic_machine=m68k-rom68k basic_machine=m68k-rom68k
os=-coff os=-coff
@@ -873,6 +962,10 @@ case $basic_machine in
sb1el) sb1el)
basic_machine=mipsisa64sb1el-unknown basic_machine=mipsisa64sb1el-unknown
;; ;;
sde)
basic_machine=mipsisa32-sde
os=-elf
;;
sei) sei)
basic_machine=mips-sei basic_machine=mips-sei
os=-seiux os=-seiux
@@ -884,6 +977,9 @@ case $basic_machine in
basic_machine=sh-hitachi basic_machine=sh-hitachi
os=-hms os=-hms
;; ;;
sh5el)
basic_machine=sh5le-unknown
;;
sh64) sh64)
basic_machine=sh64-unknown basic_machine=sh64-unknown
;; ;;
@@ -973,6 +1069,10 @@ case $basic_machine in
basic_machine=tic6x-unknown basic_machine=tic6x-unknown
os=-coff os=-coff
;; ;;
tile*)
basic_machine=tile-unknown
os=-linux-gnu
;;
tx39) tx39)
basic_machine=mipstx39-unknown basic_machine=mipstx39-unknown
;; ;;
@@ -1048,6 +1148,10 @@ case $basic_machine in
basic_machine=z8k-unknown basic_machine=z8k-unknown
os=-sim os=-sim
;; ;;
z80-*-coff)
basic_machine=z80-unknown
os=-sim
;;
none) none)
basic_machine=none-none basic_machine=none-none
os=-none os=-none
@@ -1086,13 +1190,10 @@ case $basic_machine in
we32k) we32k)
basic_machine=we32k-att basic_machine=we32k-att
;; ;;
sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown basic_machine=sh-unknown
;; ;;
sh64) sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sh64-unknown
;;
sparc | sparcv8 | sparcv9 | sparcv9b)
basic_machine=sparc-sun basic_machine=sparc-sun
;; ;;
cydra) cydra)
@@ -1161,24 +1262,28 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
| -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* \ | -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \ | -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
@@ -1196,7 +1301,7 @@ case $os in
os=`echo $os | sed -e 's|nto|nto-qnx|'` os=`echo $os | sed -e 's|nto|nto-qnx|'`
;; ;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;; ;;
-mac*) -mac*)
@@ -1205,6 +1310,9 @@ case $os in
-linux-dietlibc) -linux-dietlibc)
os=-linux-dietlibc os=-linux-dietlibc
;; ;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*) -sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'` os=`echo $os | sed -e 's|sunos5|solaris2|'`
;; ;;
@@ -1305,6 +1413,9 @@ case $os in
-zvmoe) -zvmoe)
os=-zvmoe os=-zvmoe
;; ;;
-dicos*)
os=-dicos
;;
-none) -none)
;; ;;
*) *)
@@ -1327,6 +1438,12 @@ else
# system, and we'll never get to this point. # system, and we'll never get to this point.
case $basic_machine in case $basic_machine in
score-*)
os=-elf
;;
spu-*)
os=-elf
;;
*-acorn) *-acorn)
os=-riscix1.2 os=-riscix1.2
;; ;;
@@ -1336,9 +1453,9 @@ case $basic_machine in
arm*-semi) arm*-semi)
os=-aout os=-aout
;; ;;
c4x-* | tic4x-*) c4x-* | tic4x-*)
os=-coff os=-coff
;; ;;
# This must come before the *-dec entry. # This must come before the *-dec entry.
pdp10-*) pdp10-*)
os=-tops20 os=-tops20
@@ -1364,6 +1481,9 @@ case $basic_machine in
m68*-cisco) m68*-cisco)
os=-aout os=-aout
;; ;;
mep-*)
os=-elf
;;
mips*-cisco) mips*-cisco)
os=-elf os=-elf
;; ;;
@@ -1382,6 +1502,9 @@ case $basic_machine in
*-be) *-be)
os=-beos os=-beos
;; ;;
*-haiku)
os=-haiku
;;
*-ibm) *-ibm)
os=-aix os=-aix
;; ;;
@@ -1553,7 +1676,7 @@ case $basic_machine in
esac esac
echo $basic_machine$os echo $basic_machine$os
exit 0 exit
# Local variables: # Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp) # eval: (add-hook 'write-file-hooks 'time-stamp)
+7 -5
View File
@@ -1,18 +1,20 @@
#!/bin/sh #!/bin/sh
F90=gfortran
./configure \ ./configure \
$@ \ $@ \
--enable-parallel \ --enable-parallel \
--enable-fortran \ --enable-fortran \
--enable-tools \ --enable-tools \
CC=cc CXX=CC FC=pgf90 \ CC=cc CXX=CC FC=$F90 \
MPICC=cc MPICXX=CC MPIFC=ftn MPICC=cc MPICXX=CC MPIFC=ftn
sed -e 's/pgf90/ftn/g' <Makefile > newMakefile sed -e 's/$F90/ftn/g' <Makefile > newMakefile
mv newMakefile Makefile mv newMakefile Makefile
sed -e 's/pgf90/ftn/g' <src/Makefile > newMakefile sed -e 's/$F90/ftn/g' <src/Makefile > newMakefile
mv newMakefile src/Makefile mv newMakefile src/Makefile
sed -e 's/pgf90/ftn/g' <test/Makefile > newMakefile sed -e 's/$F90/ftn/g' <test/Makefile > newMakefile
mv newMakefile test/Makefile mv newMakefile test/Makefile
sed -e 's/pgf90/ftn/g' <tools/Makefile > newMakefile sed -e 's/$F90/ftn/g' <tools/Makefile > newMakefile
mv newMakefile tools/Makefile mv newMakefile tools/Makefile
+204 -436
View File
@@ -1,18 +1,24 @@
# Every configure script must call AC_INIT before doing anything else. # Every configure script must call AC_INIT before doing anything else.
# AC_INIT (package, version, [bug-report], [tarname]) # AC_INIT (package, version, [bug-report], [tarname])
AC_INIT([H5Part], [1.6.1], [h5part@lists.psi.ch], H5Part) AC_INIT([H5Part], [1.6.3], [h5part@lists.psi.ch], H5Part)
# Ensure that a recent enough version of Autoconf is being used. # Ensure that a recent enough version of Autoconf is being used.
# If the version of Autoconf being used to create configure is earlier than version, # If the version of Autoconf being used to create configure is earlier than version,
# print an error message to the standard error output and do not create configure. # print an error message to the standard error output and do not create configure.
#AC_PREREQ(2.59) AC_PREREQ(2.59)
# should be called right after AC_INIT. # should be called right after AC_INIT.
# configure scripts can create a C header file containing `#define' directives. # configure scripts can create a C header file containing `#define' directives.
# The AC_CONFIG_HEADERS macro selects this kind of output. # The AC_CONFIG_HEADERS macro selects this kind of output.
AC_CONFIG_HEADER(config.h) AC_CONFIG_HEADERS(config.h)
AC_CONFIG_MACRO_DIR([m4])
# AM_INIT_AUTOMAKE is required to use autoconf with automake
AM_INIT_AUTOMAKE
BUILD_LIBS='libH5Part'
BUILD_TESTS='test'
############################################################################### ###############################################################################
################# --enable-xxx and --with-xxx Argument ######################## ################# --enable-xxx and --with-xxx Argument ########################
@@ -21,32 +27,20 @@ AC_CONFIG_HEADER(config.h)
AC_ARG_ENABLE( AC_ARG_ENABLE(
[debug], [debug],
[AC_HELP_STRING([--enable-debug], [AC_HELP_STRING([--enable-debug],
[Compile with debug support [default=no]])], [Compile with debug flags [default=no]])],
[USE_DEBUG=$enableval]) [USE_DEBUG=$enableval])
AC_ARG_ENABLE(
[shared],
[AC_HELP_STRING([--enable-shared],
[Compile with shared library support [default=no]])],
[USE_SHARED=$enableval])
AC_ARG_ENABLE(
[64],
[AC_HELP_STRING([--enable-64],
[Compile using 64-bit flags [default=no]])],
[USE_64=$enableval])
AC_ARG_ENABLE( AC_ARG_ENABLE(
[fortran], [fortran],
[AC_HELP_STRING([--enable-fortran], [AC_HELP_STRING([--enable-fortran],
[Compile the Fortran interface [default=no]])], [Compile the Fortran interface [default=no]])],
[USE_FORTRAN=$enableval]) [USE_FORTRAN=$enableval])
AC_ARG_ENABLE( AC_ARG_ENABLE(
[parallel], [parallel],
[AC_HELP_STRING([--enable-parallel], [AC_HELP_STRING([--enable-parallel],
[Compile the MPI/IO interface [default=no]])], [Compile the MPI/IO interface [default=no]])],
[USE_PARALLEL=$enableval]) [USE_PARALLEL=$enableval])
AC_ARG_ENABLE( AC_ARG_ENABLE(
[tools], [tools],
@@ -55,14 +49,8 @@ AC_ARG_ENABLE(
[USE_TOOLS=$enableval]) [USE_TOOLS=$enableval])
AC_ARG_WITH( AC_ARG_WITH(
[mpipath], [hdf5],
[AC_HELP_STRING([--with-mpipath], [AC_HELP_STRING([--with-hdf5],
[path to MPI installation [default=""]])],
[MPIPATH=$withval], [MPIPATH=""])
AC_ARG_WITH(
[hdf5path],
[AC_HELP_STRING([--with-hdf5path],
[path to HDF5 installation [default=""]])], [path to HDF5 installation [default=""]])],
[HDF5PATH=$withval], [HDF5PATH=""]) [HDF5PATH=$withval], [HDF5PATH=""])
@@ -73,16 +61,12 @@ AC_ARG_WITH(
SAVE_CC=$CC SAVE_CC=$CC
SAVE_CXX=$CXX SAVE_CXX=$CXX
SAVE_FC=$FC SAVE_FC=$FC
SAVE_MPICC=$MPICC
SAVE_MPICXX=$MPICXX
SAVE_MPIFC=$MPIFC
SAVE_MPILIB=$MPILIB
SAVE_MPIINC=$MPIINC
SAVE_CFLAGS=$CFLAGS SAVE_CFLAGS=$CFLAGS
SAVE_CXXFLAGS=$CXXFLAGS
SAVE_FFLAGS=$FFLAGS SAVE_FFLAGS=$FFLAGS
SAVE_MPIROOT=$MPIROOT SAVE_INCLUDES=$INCLUDES
SAVE_HDF5ROOT=$HDF5ROOT
SAVE_LDFLAGS=$LDFLAGS SAVE_LDFLAGS=$LDFLAGS
SAVE_LIBS=$LIBS
############################################################################### ###############################################################################
############### PATH SERACH FUNCTION - to be used later... #################### ############### PATH SERACH FUNCTION - to be used later... ####################
@@ -96,35 +80,26 @@ SAVE_LDFLAGS=$LDFLAGS
# @enddesc # @enddesc
#@@*/ #@@*/
PATH_Search() PATH_Search() {
{ eval $1=""
eval $1="" if test $# -lt 4 ; then
if test $# -lt 4 ; then h5part_basedir=""
h5part_basedir="" else
else h5part_basedir="$4/"
h5part_basedir="$4/" fi
fi for h5part_place in $2; do
for h5part_place in $2 AC_MSG_CHECKING([looking in $h5part_place ... ])
do if test -r "$h5part_basedir$h5part_place/$3" ; then
echo -n "looking in $h5part_place ... $ac_c" #1>&6 AC_MSG_RESULT([found])
if test -r "$h5part_basedir$h5part_place/$3" ; then eval $1="$h5part_place"
echo "$ac_t"" found" #1>&6 break
eval $1="$h5part_place" fi
break AC_MSG_RESULT([no])
fi done
if test -d "$h5part_basedir$h5part_place/$3" ; then return
echo "$ac_t"" found" #1>&6
eval $1="$h5part_place"
break
fi
echo "$ac_t"" no" #1>&6
done
return
} }
############################################################################### ###############################################################################
############# MISC SETTINGS INCLUDING C & C++ COMPILER SETTING ################ ############# MISC SETTINGS INCLUDING C & C++ COMPILER SETTING ################
############################################################################### ###############################################################################
@@ -132,82 +107,37 @@ PATH_Search()
# individual parts host_cpu, host_vendor, and host_os. # individual parts host_cpu, host_vendor, and host_os.
AC_CANONICAL_HOST AC_CANONICAL_HOST
AC_PROG_MAKE_SET
uname=`uname -s` # Determine a C/C++ compiler to use.
if test $uname = "AIX"; then
AC_MSG_CHECKING([if system is AIX])
AC_MSG_RESULT([OK])
# If on AIX, define _ALL_SOURCE. Allows the use of some BSD functions.
# Should be called before any macros that run the C compiler.
AC_AIX
fi
# DAVINCI SPECIFIC!!!
if test `uname -n` = "davinci"; then
echo "DAVINCI SPECIFIC TESTING FOR STDC++ LIBRARY!"
PATH_Search STDCXX_CHECK '/usr/lib64 /usr/lib' libstdc++.a
# if STDCXX_CHECK is set...
if test "$STDCXX_CHECK" = "/usr/lib64"; then
echo "STDCXX setting ..."
echo "STDCXX_CHECK = $STDCXX_CHECK ..."
STDCXX="-L/usr/lib64 -lstdc++"
echo "STDCXX = $STDCXX ..."
elif test "$STDCXX_CHECK" = "/usr/lib"; then
echo "STDCXX setting ..."
echo "STDCXX_CHECK = $STDCXX_CHECK ..."
STDCXX="-L/usr/lib -lstdc++"
echo "STDCXX = $STDCXX ..."
fi
fi
# Determine a C compiler to use.
# If CC is not already set in the environment, check for gcc and cc, then # If CC is not already set in the environment, check for gcc and cc, then
# for other C compilers. # for other C compilers.
# Set output variable CC to the name of the compiler found. # Set output variable CC to the name of the compiler found.
AC_PROG_CC(pgcc pathcc icc cc_r gcc cc) if test "x$USE_PARALLEL" = "xyes"; then
CCOMPILERS="mpicc cc"
# AC_PROG_CC doesn't pick up cc_r in Bassi. The following AC_PATH_PROGS CXXCOMPILERS="mpic++ mpicxx CC"
# is the fix. else
AC_PATH_PROGS([BAS_CC], [cc_r], [], [$PATH]) CCOMPILERS="pgcc pathcc icc gcc cc_r cc"
CXXCOMPILERS="pgCC pathCC icpc g++"
# if BAS_CC not empty
if test -n "$BAS_CC"; then
echo "CC setting for Bassi ..."
CC=$BAS_CC
echo "CC = $CC ..."
fi fi
AC_PROG_CC($CCOMPILERS)
# Determine a C++ compiler to use. # Only need C++ for some of the tools
# Check if the environment variable CXX or CCC (in that order) is set; #if test "x$USE_TOOLS" = "xyes"; then
# if so, then set output variable CXX to its value. AC_PROG_CXX($CXXCOMPILERS)
# Otherwise, if the macro is invoked without an argument, #fi
# then search for a C++ compiler under the likely names (first g++ and c++
# then other names).
# If none of those checks succeed, then as a last resort set CXX to g++.
AC_PROG_CXX(pgCC pathCC icc cc_r g++ gcc cc)
# Set output variable INSTALL to the path of a BSD-compatible install program, # Set output variable INSTALL to the path of a BSD-compatible install program,
# if one is found in the current PATH. # if one is found in the current PATH.
# Otherwise, set INSTALL to `dir/install-sh -c` # Otherwise, set INSTALL to `dir/install-sh -c`
AC_PROG_INSTALL AC_PROG_INSTALL
AC_PROG_AWK
# AM_INIT_AUTOMAKE is required to use autoconf with automake
AM_INIT_AUTOMAKE()
AC_PROG_RANLIB
# Default prefix for bindir, etc... (eg >> ./build/bin) # Default prefix for bindir, etc... (eg >> ./build/bin)
AC_PREFIX_DEFAULT(`pwd`/build) AC_PREFIX_DEFAULT(`pwd`/build)
# AC_DEFINE_UNQUOTED (variable, value, [description]) # AC_DEFINE_UNQUOTED (variable, value, [description])
# Define the C preprocessor variable variable to value # Define the C preprocessor variable variable to value
# Use this macro instead of AC_DEFINE when variable or value is a shell variable. # Use this macro instead of AC_DEFINE when variable or value is a shell variable.
@@ -218,7 +148,6 @@ AC_DEFINE_UNQUOTED(MY_GNUNAME, "${host_cpu}-${host_vendor}-${host_os}", "")
AC_DEFINE_UNQUOTED(MY_UNAME, "$uname", "") AC_DEFINE_UNQUOTED(MY_UNAME, "$uname", "")
############################################################################### ###############################################################################
######################## CONFIGURE LINE OPTIONS ############################### ######################## CONFIGURE LINE OPTIONS ###############################
############################################################################### ###############################################################################
@@ -228,216 +157,92 @@ AC_MSG_CHECKING([if debug is enabled])
if test "X$USE_DEBUG" = "Xyes"; then if test "X$USE_DEBUG" = "Xyes"; then
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS -g" CFLAGS="$CFLAGS -g"
CXXFLAGS="$CXXFLAGS -g"
FFLAGS="$FFLAGS -g"
else else
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
fi fi
# shared library
AC_MSG_CHECKING([if shared libraries are enabled])
if test "X$USE_SHARED" = "Xyes"; then
AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS -fPIC"
FFLAGS="$FFLAGS -fPIC"
else
AC_MSG_RESULT([no])
fi
###################### 64-bit compilation enabled #############################
AC_MSG_CHECKING([if 64-bit compilation is enabled])
# If --enable-64 is set in the configure line
if test "X$USE_64:/f90
" = "Xyes"; then
AC_MSG_RESULT([yes])
if test $uname = "AIX"; then
CFLAGS="$CFLAGS -q64"
FFLAGS="$FFLAGS -q64"
fi
if test $uname = "IRIX64"; then
CFLAGS="$CFLAGS -64"
FFLAGS="$FFLAGS -64 -fPIC -fno-second-underscore"
fi
else
AC_MSG_RESULT([no])
fi
############################ fortran enabled ################################## ############################ fortran enabled ##################################
AC_MSG_CHECKING([if fortran interface enabled]) AC_MSG_CHECKING([if fortran interface enabled])
if test "X$USE_FORTRAN" = "Xyes"; then if test "X$USE_FORTRAN" = "Xyes"; then
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
LIB_FORTRAN="libH5PartF.la"
BUILD_LIBS="$BUILD_LIBS libH5PartF"
BUILD_TESTS="$BUILD_TESTS testf"
AC_PROG_FC(pgf90 ifort xlf_r pathf90 g95 g90 ftn gfortran) if test "X$USE_PARALLEL" = "Xyes"; then
if test -z "$FC" ; then AC_PROG_FC(mpif90 mpif77 ftn)
AC_MSG_ERROR([Cannot find a fortran compiler!!!]) else
exit 1 AC_PROG_FC(pgf90 pathf90 ifort ftn xlf_r g95 g90 gfortran)
fi fi
if test ! $uname = "AIX"; then if test -z "$FC" ; then
FFLAGS="${FFLAGS} -fPIC" AC_MSG_ERROR([Cannot find a Fortran compiler!])
fi exit 1
fi
if test $FC = "g90"; then if test $FC = "g90"; then
FFLAGS="${FFLAGS} -fno-second-underscore" FFLAGS="${FFLAGS} -fno-second-underscore"
fi fi
if test $FC = "g95"; then if test $FC = "g95"; then
FFLAGS="${FFLAGS} -fno-second-underscore" FFLAGS="${FFLAGS} -fno-second-underscore"
fi fi
if test $FC = "gfortran"; then AC_MSG_CHECKING([symbol convention in object files])
FFLAGS="${FFLAGS} -DHAVE_GFORTRAN" `cd src && rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore`
fi `cd src && ${FC} ${FFLAGS} -c TestUnderscore.f`
`cd src && ${CC} ${CFLAGS} -c TestUnderscoreC.c`
`cd src && ${FC} ${FFLAGS} -o TestUnderscore TestUnderscore.o TestUnderscoreC.o`
AC_MSG_CHECKING([symbol convention in object files]) if test -f src/TestUnderscore ; then
`cd src && rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore` UNDERSCORE_H=Underscore.h
`cd src && ${FC} ${FFLAGS} -c TestUnderscore.f` `cd src && ./TestUnderscore > Underscore.h`
`cd src && ${CC} ${CFLAGS} -c TestUnderscoreC.c` AC_MSG_RESULT([ok])
`cd src && ${FC} ${FFLAGS} -o TestUnderscore TestUnderscore.o TestUnderscoreC.o -lc` else
AC_MSG_RESULT([nok])
AC_MSG_ERROR([Cannot determine the symbon convention for Fortran object files!])
exit 1
fi
if test -f src/TestUnderscore ; then
UNDERSCORE_H=Underscore.h
`cd src && ./TestUnderscore > Underscore.h`
AC_MSG_RESULT([ok])
else
AC_MSG_RESULT([nok])
AC_MSG_ERROR([Cannot build fortran executables!!!])
exit 1
fi
else else
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
fi fi
# Disable shared libraries by default: can be enabled with --enable-shared
LT_INIT([disable-shared])
AC_PROG_LIBTOOL
######################## parallel interface enabled ########################### ######################## parallel interface enabled ###########################
AC_MSG_CHECKING([if parallel interface enabled]) AC_MSG_CHECKING([if parallel interface enabled])
if test "X$USE_PARALLEL" = "Xyes"; then if test "X$USE_PARALLEL" = "Xyes"; then
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
CFLAGS="${CFLAGS} -DPARALLEL_IO -DH5_HAVE_PARALLEL -DMPICH_IGNORE_CXX_SEEK" CFLAGS="${CFLAGS} -DPARALLEL_IO -DMPICH_IGNORE_CXX_SEEK"
CXXFLAGS="${CXXFLAGS} -DPARALLEL_IO -DMPICH_IGNORE_CXX_SEEK"
FFLAGS="${FFLAGS} -DPARALLEL_IO"
AC_MSG_CHECKING([if we can compile MPI code without setting flags]) AC_MSG_CHECKING([if we can compile MPI code without setting flags])
AC_TRY_LINK([#include "mpi.h"], [ AC_TRY_LINK([#include "mpi.h"], [
MPI_Comm comm; MPI_Comm comm;
int n; int n;
MPI_Comm_size( comm, &n ); ], MPI_Comm_size( comm, &n ); ],
[echo 'yes'; r='yes'], [echo "no"; r='no'] ) [AC_MSG_RESULT([yes]); r='yes'], [AC_MSG_RESULT([no]); r='no'] )
if test "X$r" = "Xno"; then if test "X$r" = "Xno"; then
AC_PATH_PROGS([MPICC], [mpicc mpcc_r], [], [$PATH]) AC_MSG_ERROR([MPI wrapper can't compile or link MPI program! Please set the INCLUDE and LIBS variables manually.])
AC_PATH_PROGS([MPICXX], [mpicxx mpcc_r], [], [$PATH]) exit 1
if test -z "$MPICC" -o -z "$MPICXX"; then
AC_MSG_CHECKING([for MPI root ])
AC_MSG_RESULT([])
if test -n "$MPIROOT"; then
P=${MPIROOT}
elif test -n "$MPIHOME"; then
P=${MPIHOME}
elif test -n "$MPIPATH"; then
P=${MPIPATH}
else
P=''
P="$P /usr"
P="$P /usr/local"
P="$P /usr/local/mpi"
P="$P /usr/local/packages/mpi"
P="$P /usr/local/mpich2"
P="$P /usr/local/mpich"
P="$P /opt/xt-mpt/default/mpich2-64/P2"
fi
PATH_Search MPIROOT "$P" include/mpi.h
if test ! -n "$MPIROOT"; then
AC_MSG_ERROR([Cannot determine MPI root!!!])
exit 1
fi
if test -e "${MPIROOT}/bin/mpicc"; then
MPICC=${MPIROOT}/bin/mpicc
fi
if test -e "${MPIROOT}/bin/mpicxx"; then
MPICXX=${MPIROOT}/bin/mpicxx
fi
fi fi
if test -z "$MPICC" -o -z "$MPICXX"; then
MPIINC="${MPIINC} -I${MPIROOT}/include"
FFLAGS="${FFLAGS} -I${MPIROOT}/include"
AC_MSG_CHECKING([for name of MPI lib ])
if test -e ${MPIROOT}/lib/libmpi.a; then
MPILIB="-L${MPIROOT}/lib -lmpi"
elif test -e ${MPIROOT}/lib/libmpi.so; then
MPILIB="-L${MPIROOT}/lib -lmpi"
elif test -e ${MPIROOT}/lib/libmpich.a; then
MPILIB="-L${MPIROOT}/lib -lmpich"
elif test -e ${MPIROOT}/lib/libmpich.so; then
MPILIB="-L${MPIROOT}/lib -lmpich"
else
AC_MSG_RESULT([not found])
exit 1
fi
AC_MSG_RESULT([${MPILIB}])
fi
if test -n "$MPICC"; then
CC=${MPICC}
fi
if test -n "$MPICXX"; then
CXX=${MPICXX}
fi
fi
H5P_LIB_NAME="-lpH5Part"
MTARGET="libpH5Part.a"
TTARGET="test"
# parallel + fortran
if test "X$USE_FORTRAN" = "Xyes"; then
AC_PATH_PROGS([MPIFC], [mpxlf_r mpif90], [], [$PATH])
FFLAGS="${FFLAGS} -DPARALLEL_IO"
if test -z "${MPIFC}" ; then
if test -e "${MPIROOT}/bin/mpif90"; then
MPIFC=${MPIROOT}/bin/mpif90
fi
fi
# if MPIFC empty
if test ! -n "$MPIFC"; then
AC_MSG_CHECKING([ No MPIFC detected. Setting MPIFC to FC.])
MPIFC=$FC
echo "MPIFC = $MPIFC ..."
fi
if test -n "$MPIFC"; then
FC=${MPIFC}
fi
H5P_LIB_NAME="-lpH5PartF"
MTARGET="${MTARGET} libpH5PartF.a"
TTARGET="${TTARGET} testf"
fi
else # --enable-parallel=no else # --enable-parallel=no
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
H5P_LIB_NAME="-lH5Part"
MTARGET="libH5Part.a"
TTARGET="test"
if test "X$USE_FORTRAN" = "Xyes"; then
H5P_LIB_NAME="-lH5PartF"
MTARGET="${MTARGET} libH5PartF.a"
TTARGET="${TTARGET} testf"
fi
fi fi
######################## tools enabled ###########################
AC_MSG_CHECKING([whether tools are enabled]) AC_MSG_CHECKING([whether tools are enabled])
if test "X$USE_TOOLS" = "Xyes"; then if test "X$USE_TOOLS" = "Xyes"; then
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
@@ -450,76 +255,67 @@ else
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
fi fi
############################################################################### ###############################################################################
######################### PATH CHECKING & SETTING ############################# ######################### PATH CHECKING & SETTING #############################
############################################################################### ###############################################################################
AC_MSG_CHECKING([for HDF5 root ]) AC_MSG_CHECKING([for HDF5 root ])
AC_MSG_RESULT([]) AC_MSG_RESULT([])
if test -n "${HDF5ROOT}"; then if test -n "${HDF5PATH}" ; then
P=${HDF5ROOT} P=${HDF5PATH}
elif test -n "${HDF5ROOT}"; then
P=${HDF5ROOT}
elif test -n "${HDF5HOME}" ; then elif test -n "${HDF5HOME}" ; then
P=${HDF5HOME} P=${HDF5HOME}
elif test -n "${HDF5PATH}" ; then elif test -n "${HDF5_DIR}" ; then
P=${HDF5PATH} P=${HDF5_DIR}
else else
P='' P=''
P="$P /usr" P="$P /usr"
P="$P /usr/local" P="$P /usr/local"
P="$P /usr/local/hdf5" P="$P /usr/local/hdf5"
P="$P /usr/local/packages/hdf5" P="$P /usr/local/packages/hdf5"
P="$P /apps/hdf5" P="$P /apps/hdf5"
P="$P /opt/hdf5"
if test "X$USE_PARALLEL" = "Xyes"; then
P="$P /usr/local/phdf5"
P="$P /usr/local/hdf5/hdf5_par"
if test "X$USE_64" = "Xyes"; then
P="$P /usr/common/usg/hdf5/64/default/parallel"
else
P="$P /usr/common/usg/hdf5/32/default/parallel"
fi
else
P="$P /usr/local/hdf5/hdf5_serial"
if test "X$USE_64" = "Xyes"; then
P="$P /usr/common/usg/hdf5/64/default/serial"
else
P="$P /usr/common/usg/hdf5/32/default/serial"
fi
fi
fi fi
PATH_Search HDF5ROOT "$P" include/hdf5.h PATH_Search HDF5ROOT "$P" include/hdf5.h
if test -z "$HDF5ROOT"; then if test -z "$HDF5ROOT"; then
AC_MSG_ERROR([Cannot determine HDF5 root!!!]) AC_MSG_ERROR([Cannot find an HDF5 library!])
exit 1 exit 1
fi fi
INCLUDES="$INCLUDES -I$HDF5ROOT/include"
LDFLAGS="$LDFLAGS -L$HDF5ROOT/lib"
LIBS="$LIBS -lhdf5"
AC_MSG_CHECKING([if we need to link to libsz ]) AC_MSG_CHECKING([if we need to link to libsz ])
if test -n "$HDF5ROOT"; then if test -n "$HDF5ROOT"; then
if test -f $HDF5ROOT/lib/libsz.a; then if test -f $HDF5ROOT/lib/libsz.a; then
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
SZLIB="-L$HDF5ROOT/lib/ -lsz" LDFLAGS="$LDFLAGS -L$HDF5ROOT/lib"
else LIBS="$LIBS -lsz"
AC_MSG_RESULT([no]) else
SZLIB="" AC_MSG_RESULT([no])
fi fi
fi fi
AC_MSG_CHECKING([for static zlib root ]) LIBS="$LIBS -lz -lm"
echo
PATH_Search ZLIBROOT '/apps/zlib' lib/libz.a
if test -n "$ZLIBROOT"; then
LDFLAGS="$LDFLAGS -L$ZLIBROOT/lib"
fi
FCFLAGS=${FFLAGS}
CXXFLAGS=${CFLAGS}
############################################################################### # Checks for header files.
#################### MISC SETTINGS - path, flags, etc ######################### AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
###############################################################################
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_TYPE_INT64_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
# Checks for library functions.
AC_FUNC_MALLOC
AC_CHECK_FUNCS([memset pow strchr strdup])
H5P_LIB_LOC=`pwd`/src
############################################################################### ###############################################################################
################# A SIMPLE WORK AROUND TO USE ENV. VARS ####################### ################# A SIMPLE WORK AROUND TO USE ENV. VARS #######################
@@ -527,94 +323,70 @@ H5P_LIB_LOC=`pwd`/src
#if there was an external input for the variable... #if there was an external input for the variable...
if test -n "$SAVE_CC"; then if test -n "$SAVE_CC"; then
CC=$SAVE_CC CC="$SAVE_CC"
fi fi
if test -n "$SAVE_CXX"; then if test -n "$SAVE_CXX"; then
CXX=$SAVE_CXX CXX="$SAVE_CXX"
fi fi
if test -n "$SAVE_FC"; then if test -n "$SAVE_FC"; then
FC=$SAVE_FC FC="$SAVE_FC"
fi
if test -n "$SAVE_MPICC"; then
MPICC=$SAVE_MPICC
fi
if test -n "$SAVE_MPICXX"; then
MPICXX=$SAVE_MPICXX
fi
if test -n "$SAVE_MPIFC"; then
MPIFC=$SAVE_MPIFC
fi
if test -n "$SAVE_MPILIB"; then
MPILIB=$SAVE_MPILIB
fi
if test -n "$SAVE_MPIINC"; then
MPIINC=$SAVE_MPIINC
fi fi
if test -n "$SAVE_CFLAGS"; then if test -n "$SAVE_CFLAGS"; then
CFLAGS="$SAVE_CFLAGS ${CFLAGS}" CFLAGS="$SAVE_CFLAGS"
fi
if test -n "$SAVE_CXXFLAGS"; then
CFLAGS="$SAVE_CXXFLAGS"
fi fi
if test -n "$SAVE_FFLAGS"; then if test -n "$SAVE_FFLAGS"; then
FFLAGS=$SAVE_FFLAGS FFLAGS="$SAVE_FFLAGS"
fi fi
if test -n "$SAVE_MPIROOT"; then if test -n "$SAVE_INCLUDES"; then
MPIROOT=$SAVE_MPIROOT INCLUDES="$SAVE_INCLUDES"
fi
if test -n "$SAVE_HDF5ROOT"; then
HDF5ROOT=$SAVE_HDF5ROOT
fi fi
if test -n "$SAVE_LDFLAGS"; then if test -n "$SAVE_LDFLAGS"; then
LDFLAGS=$SAVE_LDFLAGS LDFLAGS="$SAVE_LDFLAGS"
fi
if test -n "$SAVE_LIBS"; then
LIBS="$SAVE_LIBS"
fi fi
############################################################################### ###############################################################################
############## EXPORTING VARIABLES & CREATING OUTPUT FILES #################### ############## EXPORTING VARIABLES & CREATING OUTPUT FILES ####################
############################################################################### ###############################################################################
# AC_SUBST (variable, [value]) # AC_SUBST (variable, [value])
# Create an output variable from a shell variable. # Create an output variable from a shell variable. Make AC_OUTPUT substitute
# Make AC_OUTPUT substitute the variable variable into output files (typically one or more `Makefile's). # the variable variable into output files (typically one or more `Makefile's).
# This means that AC_OUTPUT will replace instances of `@variable@' in input files with the value that # This means that AC_OUTPUT will replace instances of `@variable@' in input
# the shell variable variable has when AC_OUTPUT is called. # files with the value that the shell variable variable has when AC_OUTPUT is
# This value of variable should not contain literal newlines. # called. This value of variable should not contain literal newlines. If
# If value is given, in addition assign it to variable. # value is given, in addition assign it to variable.
AC_SUBST(MPIROOT)
AC_SUBST(HDF5ROOT)
AC_SUBST(MPIINC)
AC_SUBST(MPILIB)
AC_SUBST(MPICC)
AC_SUBST(MPICXX)
AC_SUBST(MPIFC)
AC_SUBST(MTARGET)
AC_SUBST(TTARGET)
AC_SUBST(SZLIB)
AC_SUBST(CFLAGS) AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
AC_SUBST(FFLAGS) AC_SUBST(FFLAGS)
AC_SUBST(STDCXX) AC_SUBST(INCLUDES)
AC_SUBST(H5P_LIB_LOC)
AC_SUBST(H5P_LIB_NAME)
AC_SUBST(UNDERSCORE_H)
AC_SUBST(BUILD_TOOLS)
AC_SUBST(LDFLAGS) AC_SUBST(LDFLAGS)
AC_SUBST(LIBS)
AC_SUBST(UNDERSCORE_H)
AC_SUBST(LIB_FORTRAN)
AC_SUBST(BUILD_TESTS)
AC_SUBST(BUILD_TOOLS)
# Make AC_OUTPUT create each `file' by copying an input file (by default `file.in'), # Make AC_OUTPUT create each `file' by copying an input file (by default `file.in'),
# substituting the output variable values. # substituting the output variable values.
AC_CONFIG_FILES([ AC_CONFIG_FILES([
Makefile Makefile
doc/Makefile src/Makefile
src/Makefile doc/Makefile
test/Makefile test/Makefile
tools/Makefile tools/Makefile
]) ])
AC_OUTPUT AC_OUTPUT
@@ -622,27 +394,23 @@ AC_OUTPUT
############################################################################### ###############################################################################
########################## PRINTING SUMMARY ################################### ########################## PRINTING SUMMARY ###################################
############################################################################### ###############################################################################
echo AC_MSG_RESULT([ ])
echo AC_MSG_RESULT([Summary:])
echo "Summary for `(hostname || uname -n) 2>/dev/null | sed 1q`:" AC_MSG_RESULT([ ])
echo AC_MSG_RESULT([Host OS: $host_os])
echo "Host OS: $host_os" AC_MSG_RESULT([Host CPU: $host_cpu])
echo "Host CPU: $host_cpu" AC_MSG_RESULT([Host vendor: $host_vendor])
echo "Host vendor: $host_vendor" AC_MSG_RESULT([Build libraries: $BUILD_LIBS])
echo "Build libraries: $MTARGET" AC_MSG_RESULT([Build test programs: $BUILD_TESTS])
echo "Build test programs: $TTARGET" AC_MSG_RESULT([Build tools: $BUILD_TOOLS])
echo "Build tools: $BUILD_TOOLS" AC_MSG_RESULT([CC = $CC])
echo "CC = $CC" AC_MSG_RESULT([CXX = $CXX])
echo "CXX = $CXX" AC_MSG_RESULT([FC = $FC])
echo "FC = $FC" AC_MSG_RESULT([CFLAGS = $CFLAGS])
echo "MPICC = $MPICC" AC_MSG_RESULT([CXXFLAGS = $CXXFLAGS])
echo "MPICXX = $MPICXX" AC_MSG_RESULT([FFLAGS = $FFLAGS])
echo "MPIFC = $MPIFC" AC_MSG_RESULT([INCLUDES = $INCLUDES])
echo "CFLAGS = $CFLAGS" AC_MSG_RESULT([LDFLAGS = $LDFLAGS])
echo "FFLAGS = $FFLAGS" AC_MSG_RESULT([LIBS = $LIBS])
echo "MPILIB = $MPILIB" AC_MSG_RESULT([HDF5ROOT = $HDF5ROOT])
echo "MPIINC = $MPIINC" AC_MSG_RESULT([ ])
echo "MPIROOT = $MPIROOT"
echo "HDF5ROOT = $HDF5ROOT"
echo "LDFLAGS = $LDFLAGS"
echo
+51
View File
@@ -0,0 +1,51 @@
#include <stdlib.h>
#include <assert.h>
#include <mpi.h>
#include <H5Part.h>
#define DATASIZE 32
int main(int argc, char** argv)
{
int i, rank, nprocs;
h5part_int32_t data[DATASIZE];
h5part_int64_t stat;
H5PartFile *file;
// initialize MPI
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
H5PartSetVerbosityLevel(H5PART_VERB_DEBUG);
char filename[8];
sprintf (filename, "%d.h5", rank);
file = H5PartOpenFileParallel(
filename,
H5PART_WRITE | H5PART_VFD_CORE,
MPI_COMM_SELF);
assert (file != NULL);
stat = H5PartSetStep(file, 0);
assert (stat == H5PART_SUCCESS);
stat = H5PartSetNumParticles(file, DATASIZE);
assert (stat == H5PART_SUCCESS);
// create fake data
for (i=0; i<DATASIZE; i++) {
data[i] = i + rank * DATASIZE;
}
// write the data
stat = H5PartWriteDataInt32(file, "data", data);
assert (stat == H5PART_SUCCESS);
H5PartCloseFile(file);
MPI_Finalize();
return EXIT_SUCCESS;
}
+45
View File
@@ -0,0 +1,45 @@
#include <stdlib.h>
#include <assert.h>
#include <mpi.h>
#include <H5Part.h>
#define XSIZE 8
#define YSIZE 8
#define ZSIZE 8
#define DATASIZE XSIZE*YSIZE*ZSIZE
#define H5OpenFileParallel H5PartOpenFileParallel
#define H5SetStep H5PartSetStep
#define H5Block3dSetLayout H5BlockDefine3DFieldLayout
#define H5CloseFile H5PartCloseFile
int main(int argc, char** argv)
{
int rank, nprocs;
h5part_float64_t ex[DATASIZE];
h5part_float64_t ey[DATASIZE];
h5part_float64_t ez[DATASIZE];
h5part_float64_t q[DATASIZE];
h5part_int64_t nparticles = DATASIZE;
H5PartFile *file;
// initialize MPI
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
H5PartSetVerbosityLevel(H5PART_VERB_DEBUG);
file = H5OpenFileParallel("fields.h5", H5PART_WRITE, MPI_COMM_WORLD);
H5SetStep(file, 0);
H5Block3dSetLayout(file,
rank*XSIZE, (rank+1)*XSIZE - 1,
0, YSIZE - 1,
0, ZSIZE - 1);
H5Block3dWriteScalarFieldFloat64(file, "Q", q);
H5Block3dWrite3dVectorFieldFloat64(file, "E", ex, ez, ey);
H5CloseFile(file);
MPI_Finalize();
return EXIT_SUCCESS;
}
+41
View File
@@ -0,0 +1,41 @@
#include <stdlib.h>
#include <assert.h>
#include <mpi.h>
#include <H5Part.h>
#define DATASIZE 32
int main(int argc, char** argv)
{
int rank, nprocs;
h5part_float64_t x[DATASIZE];
h5part_float64_t y[DATASIZE];
h5part_float64_t z[DATASIZE];
h5part_float64_t px[DATASIZE];
h5part_float64_t py[DATASIZE];
h5part_float64_t pz[DATASIZE];
h5part_int64_t nparticles = DATASIZE;
H5PartFile *file;
// initialize MPI
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
H5PartSetVerbosityLevel(H5PART_VERB_DEBUG);
file = H5PartOpenFileParallel("particles.h5", H5PART_WRITE, MPI_COMM_WORLD);
H5PartSetStep(file, 0);
H5PartSetNumParticles(file, nparticles);
H5PartWriteDataFloat64(file, "x", x);
H5PartWriteDataFloat64(file, "y", y);
H5PartWriteDataFloat64(file, "z", z);
H5PartWriteDataFloat64(file, "px", px);
H5PartWriteDataFloat64(file, "py", py);
H5PartWriteDataFloat64(file, "pz", pz);
H5PartCloseFile(file);
MPI_Finalize();
return EXIT_SUCCESS;
}
+7
View File
@@ -8,12 +8,15 @@ program H5PartTest
integer*8 :: file_id, status, npoints, i integer*8 :: file_id, status, npoints, i
real*8, allocatable :: particles(:) real*8, allocatable :: particles(:)
integer*8, allocatable :: id(:) integer*8, allocatable :: id(:)
real*8 :: r8val
integer*8 :: i8val
comm = MPI_COMM_WORLD comm = MPI_COMM_WORLD
call mpi_init(ierr) call mpi_init(ierr)
call mpi_comm_rank(comm, rank, ierr) call mpi_comm_rank(comm, rank, ierr)
! open the a file for parallel writing ! open the a file for parallel writing
file_id = h5pt_set_verbosity_level(5)
file_id = h5pt_openw_par('test.h5', comm) file_id = h5pt_openw_par('test.h5', comm)
! in the Fortran API, time steps start at 1 ! in the Fortran API, time steps start at 1
@@ -22,6 +25,10 @@ program H5PartTest
! write an attribute to the file ! write an attribute to the file
status = h5pt_writefileattrib_string(file_id, 'desc', 'This is a test.') status = h5pt_writefileattrib_string(file_id, 'desc', 'This is a test.')
r8val = 0.5
i8val = 1
status = h5pt_writefileattrib_r8(file_id, 'double', r8val, i8val)
! create fake data ! create fake data
npoints = 99 npoints = 99
allocate(particles(npoints), id(npoints)) allocate(particles(npoints), id(npoints))
+4 -4
View File
@@ -365,7 +365,7 @@ h5bl_has_fielddata (
} }
h5part_int64_t h5part_int64_t
h5b_3d_get_field_spacing ( h5bl_3d_get_field_spacing (
h5part_int64_t *f, h5part_int64_t *f,
const char *field_name, const char *field_name,
h5part_float64_t *x, h5part_float64_t *x,
@@ -386,7 +386,7 @@ h5b_3d_get_field_spacing (
} }
h5part_int64_t h5part_int64_t
h5b_3d_set_field_spacing ( h5bl_3d_set_field_spacing (
h5part_int64_t *f, h5part_int64_t *f,
const char *field_name, const char *field_name,
const h5part_float64_t *x, const h5part_float64_t *x,
@@ -407,7 +407,7 @@ h5b_3d_set_field_spacing (
} }
h5part_int64_t h5part_int64_t
h5b_3d_get_field_origin ( h5bl_3d_get_field_origin (
h5part_int64_t *f, h5part_int64_t *f,
const char *field_name, const char *field_name,
h5part_float64_t *x, h5part_float64_t *x,
@@ -428,7 +428,7 @@ h5b_3d_get_field_origin (
} }
h5part_int64_t h5part_int64_t
h5b_3d_set_field_origin ( h5bl_3d_set_field_origin (
h5part_int64_t *f, h5part_int64_t *f,
const char *field_name, const char *field_name,
const h5part_float64_t *x, const h5part_float64_t *x,
+68 -92
View File
@@ -199,7 +199,7 @@ _H5Part_open_file (
{ {
/* extend the btree size so that metadata pieces are /* extend the btree size so that metadata pieces are
* close to the alignment value */ * close to the alignment value */
if ( align > 0 ) if ( align > 16384 )
{ {
unsigned int btree_ik = (align - 4096) / 96; unsigned int btree_ik = (align - 4096) / 96;
unsigned int btree_bytes = 64 + 96*btree_ik; unsigned int btree_bytes = 64 + 96*btree_ik;
@@ -252,7 +252,7 @@ _H5Part_open_file (
} }
} else if (flags & H5PART_VFD_CORE) { } else if (flags & H5PART_VFD_CORE) {
_H5Part_print_info ( "Selecting CORE VFD" ); _H5Part_print_info ( "Selecting CORE VFD" );
if (H5Pset_fapl_core ( f->access_prop, comm, 0 ) < 0) { if (H5Pset_fapl_core ( f->access_prop, align, 1 ) < 0) {
HANDLE_H5P_SET_FAPL_ERR; HANDLE_H5P_SET_FAPL_ERR;
goto error_cleanup; goto error_cleanup;
} }
@@ -713,7 +713,11 @@ _set_num_particles (
register int i; register int i;
#endif #endif
#ifdef PARALLEL_IO
if ( nparticles < 0 )
#else
if ( nparticles <= 0 ) if ( nparticles <= 0 )
#endif
return HANDLE_H5PART_INVALID_ERR ( "nparticles", nparticles ); return HANDLE_H5PART_INVALID_ERR ( "nparticles", nparticles );
/* prevent invalid stride value */ /* prevent invalid stride value */
@@ -726,6 +730,8 @@ _set_num_particles (
stride = (hsize_t) _stride; stride = (hsize_t) _stride;
} }
if ( nparticles == 0 ) stride = 1;
#ifndef PARALLEL_IO #ifndef PARALLEL_IO
/* /*
if we are not using parallel-IO, there is enough information if we are not using parallel-IO, there is enough information
@@ -751,11 +757,14 @@ _set_num_particles (
f->nparticles = (hsize_t) nparticles; f->nparticles = (hsize_t) nparticles;
/* declare local memory datasize with striding */ if ( f->nparticles > 0 )
count = f->nparticles * stride; {
f->memshape = H5Screate_simple ( 1, &count, &dmax ); /* declare local memory datasize with striding */
if ( f->memshape < 0 ) count = f->nparticles * stride;
return HANDLE_H5S_CREATE_SIMPLE_ERR ( f->nparticles ); f->memshape = H5Screate_simple ( 1, &count, &dmax );
if ( f->memshape < 0 )
return HANDLE_H5S_CREATE_SIMPLE_ERR ( f->nparticles );
}
/* we need a hyperslab selection if there is striding /* we need a hyperslab selection if there is striding
* (otherwise, the default H5S_ALL selection is ok) * (otherwise, the default H5S_ALL selection is ok)
@@ -796,7 +805,7 @@ _set_num_particles (
*/ */
ret = MPI_Allgather ( ret = MPI_Allgather (
&nparticles, 1, MPI_LONG_LONG, (void*)&nparticles, 1, MPI_LONG_LONG,
f->pnparticles, 1, MPI_LONG_LONG, f->pnparticles, 1, MPI_LONG_LONG,
f->comm ); f->comm );
if ( ret != MPI_SUCCESS) return HANDLE_MPI_ALLGATHER_ERR; if ( ret != MPI_SUCCESS) return HANDLE_MPI_ALLGATHER_ERR;
@@ -833,12 +842,16 @@ _set_num_particles (
count = nparticles; count = nparticles;
stride = 1; stride = 1;
herr = H5Sselect_hyperslab ( if ( count > 0 ) {
f->diskshape, herr = H5Sselect_hyperslab (
H5S_SELECT_SET, f->diskshape,
&start, H5S_SELECT_SET,
&stride, &start,
&count, NULL ); &stride,
&count, NULL );
} else {
herr = H5Sselect_none ( f->diskshape );
}
if ( herr < 0 ) return HANDLE_H5S_SELECT_HYPERSLAB_ERR; if ( herr < 0 ) return HANDLE_H5S_SELECT_HYPERSLAB_ERR;
#endif #endif
@@ -1634,9 +1647,9 @@ H5PartWriteStepAttrib (
h5part_int64_t herr = _H5Part_write_step_attrib ( h5part_int64_t herr = _H5Part_write_step_attrib (
f, f,
name, name,
(const hid_t)type, (hid_t)type,
data, data,
nelem ); (hsize_t)nelem );
if ( herr < 0 ) return herr; if ( herr < 0 ) return herr;
return H5PART_SUCCESS; return H5PART_SUCCESS;
@@ -1678,9 +1691,9 @@ H5PartWriteFileAttrib (
h5part_int64_t herr = _H5Part_write_file_attrib ( h5part_int64_t herr = _H5Part_write_file_attrib (
f, f,
name, name,
(const hid_t)type, (hid_t)type,
data, data,
nelem ); (hsize_t)nelem );
if ( herr < 0 ) return herr; if ( herr < 0 ) return herr;
return H5PART_SUCCESS; return H5PART_SUCCESS;
@@ -2269,7 +2282,12 @@ _H5Part_get_num_objects_matching_pattern (
data.pattern = pattern; data.pattern = pattern;
#ifdef H5PART_HAVE_HDF5_18 #ifdef H5PART_HAVE_HDF5_18
hid_t child_id = H5Gopen( group_id, group_name, H5P_DEFAULT ); hid_t child_id = H5Gopen( group_id, group_name
#ifndef H5_USE_16_API
, H5P_DEFAULT
#endif
);
if ( child_id < 0 ) return child_id; if ( child_id < 0 ) return child_id;
herr = H5Literate( child_id, H5_INDEX_NAME, H5_ITER_INC, 0, herr = H5Literate( child_id, H5_INDEX_NAME, H5_ITER_INC, 0,
_H5Part_iteration_operator2, &data ); _H5Part_iteration_operator2, &data );
@@ -2567,7 +2585,30 @@ _H5Part_get_num_particles (
0, 0,
dataset_name, H5PART_DATANAME_LEN ); dataset_name, H5PART_DATANAME_LEN );
if ( herr < 0 ) return herr; if ( herr < 0 ) return herr;
/* returns 0 if there are no datasets on disk */
/* if a view exists, use its size as the number of particles */
if ( _H5Part_has_view ( f ) )
{
nparticles = H5Sget_select_npoints ( f->diskshape );
if ( nparticles < 0 ) return HANDLE_H5S_GET_SELECT_NPOINTS_ERR;
_H5Part_print_debug (
"Found %lld points with H5Sget_select_npoints",
(long long)nparticles );
#if 0 // this does not work for indices
/* double check that the size of the diskshape agrees with
* the size of the view */
if ( nparticles != f->viewend - f->viewstart + 1 ) {
_H5Part_print_warn (
"Number of particles (%lld) does not agree "
"with view range.", (long long)nparticles );
return HANDLE_H5PART_BAD_VIEW_ERR (
f->viewstart, f->viewend);
}
#endif
}
/* herr is 0 if there are no datasets on disk */
else if ( herr == 0 ) else if ( herr == 0 )
{ {
/* try to recover number of particles from a previous /* try to recover number of particles from a previous
@@ -2596,29 +2637,6 @@ _H5Part_get_num_particles (
return 0; return 0;
} }
} }
/* if a view exists, use its size as the number of particles */
if ( _H5Part_has_view ( f ) )
{
nparticles = H5Sget_select_npoints ( f->diskshape );
if ( nparticles < 0 ) return HANDLE_H5S_GET_SELECT_NPOINTS_ERR;
_H5Part_print_debug (
"Found %lld points with H5Sget_select_npoints",
(long long)nparticles );
#if 0 // this does not work for indices
/* double check that the size of the diskshape agrees with
* the size of the view */
if ( nparticles != f->viewend - f->viewstart + 1 ) {
_H5Part_print_warn (
"Number of particles (%lld) does not agree "
"with view range.", (long long)nparticles );
return HANDLE_H5PART_BAD_VIEW_ERR (
f->viewstart, f->viewend);
}
#endif
}
/* otherwise, report all particles on disk in the first dataset /* otherwise, report all particles on disk in the first dataset
* for this timestep */ * for this timestep */
else else
@@ -2772,10 +2790,7 @@ _set_view (
end==-1 to mean end of file end==-1 to mean end of file
*/ */
total = (hsize_t) _H5Part_get_num_particles ( f ); total = (hsize_t) _H5Part_get_num_particles ( f );
if ( total < 0 ) { if ( total == 0 ) {
return HANDLE_H5PART_GET_NUM_PARTICLES_ERR ( total );
}
else if ( total == 0 ) {
/* No datasets have been created yet and no veiws are set. /* No datasets have been created yet and no veiws are set.
* We have to leave the view empty because we don't know how * We have to leave the view empty because we don't know how
* many particles there should be! */ * many particles there should be! */
@@ -2840,9 +2855,9 @@ _set_view_indices (
herr = _reset_view ( f ); herr = _reset_view ( f );
if ( herr < 0 ) return herr; if ( herr < 0 ) return herr;
if ( indices == NULL ) { if ( indices == NULL || nelems <= 0 ) {
_H5Part_print_warn ( _H5Part_print_warn (
"View indices array is null: reseting view." ); "View indices array is null or size is <= 0: reseting view." );
return H5PART_SUCCESS; return H5PART_SUCCESS;
} }
@@ -2854,10 +2869,7 @@ _set_view_indices (
end==-1 to mean end of file end==-1 to mean end of file
*/ */
total = (hsize_t) _H5Part_get_num_particles ( f ); total = (hsize_t) _H5Part_get_num_particles ( f );
if ( total < 0 ) { if ( total == 0 ) {
return HANDLE_H5PART_GET_NUM_PARTICLES_ERR ( total );
}
else if ( total == 0 ) {
/* No datasets have been created yet and no veiws are set. /* No datasets have been created yet and no veiws are set.
* We have to leave the view empty because we don't know how * We have to leave the view empty because we don't know how
* many particles there should be! */ * many particles there should be! */
@@ -2868,15 +2880,7 @@ _set_view_indices (
if ( total == 0 ) return H5PART_SUCCESS; if ( total == 0 ) return H5PART_SUCCESS;
/* check length of list */ f->nparticles = (hsize_t) nelems;
if ( nelems < 0 ) {
_H5Part_print_warn (
"Array of view indices has length < 0: "
"resetting view.");
f->nparticles = 0;
} else {
f->nparticles = (hsize_t) nelems;
}
/* declare overall data size but then will select a subset */ /* declare overall data size but then will select a subset */
f->diskshape = H5Screate_simple ( 1, &total, NULL ); f->diskshape = H5Screate_simple ( 1, &total, NULL );
@@ -2982,34 +2986,6 @@ H5PartSetViewIndices (
return _set_view_indices ( f, indices, nelems ); return _set_view_indices ( f, indices, nelems );
} }
/*!
\ingroup h5part_model
In MPI-IO collective mode, all MPI tasks must participate in I/O
operations. \c H5PartSetViewEmpty() allows a task to participate
but with an empty view of the file, so that it contributes no data
to the I/O operation.
\return \c H5PART_SUCCESS or error code
*/
h5part_int64_t
H5PartSetViewEmpty (
H5PartFile *f /*!< [in] Handle to open file */
) {
SET_FNAME ( "H5PartSetViewEmpty" );
CHECK_FILEHANDLE( f );
if ( f->timegroup < 0 ) {
h5part_int64_t herr = _H5Part_set_step ( f, 0 );
if ( herr < 0 ) return herr;
}
/* using a null indices list will set an empty view */
return _set_view_indices ( f, NULL, 0 );
}
/*! /*!
\ingroup h5part_model \ingroup h5part_model
@@ -3157,7 +3133,7 @@ _read_data (
) { ) {
h5part_int64_t herr; h5part_int64_t herr;
hsize_t ndisk, nread, nmem; hssize_t ndisk, nread, nmem;
hid_t dataset_id; hid_t dataset_id;
hid_t space_id; hid_t space_id;
hid_t memspace_id; hid_t memspace_id;
@@ -3219,7 +3195,7 @@ _read_data (
if ( f->memshape != H5S_ALL ) if ( f->memshape != H5S_ALL )
{ {
nmem = H5Sget_select_npoints ( f->memshape ); nmem = H5Sget_simple_extent_npoints ( f->memshape );
if ( nmem < 0 ) return HANDLE_H5S_GET_SELECT_NPOINTS_ERR; if ( nmem < 0 ) return HANDLE_H5S_GET_SELECT_NPOINTS_ERR;
/* make sure the memory space selected by the view has /* make sure the memory space selected by the view has
-8
View File
@@ -265,14 +265,6 @@ INTEGER*8 FUNCTION h5pt_setview_indices (filehandle,indices,nelem)
INTEGER*8, INTENT(IN) :: nelem !< number of particles in the list INTEGER*8, INTENT(IN) :: nelem !< number of particles in the list
END FUNCTION END FUNCTION
!> \ingroup h5partf_model
!! See \ref H5PartSetViewEmpty
!! \return 0 on success or error code
!<
INTEGER*8 FUNCTION h5pt_setview_empty (filehandle)
INTEGER*8, INTENT(IN) :: filehandle !< the handle returned during file open
END FUNCTION
!> \ingroup h5partf_model !> \ingroup h5partf_model
!! See \ref H5PartResetView !! See \ref H5PartResetView
!! \return 0 on success or error code !! \return 0 on success or error code
+2 -7
View File
@@ -16,10 +16,10 @@ extern "C" {
#include "H5MultiBlock.h" #include "H5MultiBlock.h"
#endif #endif
#define H5PART_VER_STRING "1.6.2" #define H5PART_VER_STRING "1.6.3"
#define H5PART_VER_MAJOR 1 #define H5PART_VER_MAJOR 1
#define H5PART_VER_MINOR 6 #define H5PART_VER_MINOR 6
#define H5PART_VER_RELEASE 2 #define H5PART_VER_RELEASE 3
/* error values */ /* error values */
#define H5PART_SUCCESS 0 #define H5PART_SUCCESS 0
@@ -220,11 +220,6 @@ H5PartSetViewIndices (
h5part_int64_t nelems /*!< [in] Size of list */ h5part_int64_t nelems /*!< [in] Size of list */
); );
h5part_int64_t
H5PartSetViewEmpty (
H5PartFile *f
);
h5part_int64_t h5part_int64_t
H5PartGetView ( H5PartGetView (
H5PartFile *f, H5PartFile *f,
+30 -30
View File
@@ -23,7 +23,7 @@ h5pt_writefileattrib_r8 (
h5part_int64_t *f, h5part_int64_t *f,
const char *name, const char *name,
const h5part_float64_t *data, const h5part_float64_t *data,
const h5part_float64_t *nelem, const h5part_int64_t *nelem,
const int l_name const int l_name
) { ) {
@@ -39,9 +39,9 @@ h5pt_writefileattrib_r8 (
} }
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_writefileattrib_r8 F77NAME ( \ #define h5pt_readfileattrib_r8 F77NAME ( \
h5pt_writefileattrib_r8_, \ h5pt_readfileattrib_r8_, \
H5PT_WRITEFILEATTRIB_R8 ) H5PT_READFILEATTRIB_R8 )
#endif #endif
h5part_int64_t h5part_int64_t
@@ -74,7 +74,7 @@ h5pt_writefileattrib_r4 (
h5part_int64_t *f, h5part_int64_t *f,
const char *name, const char *name,
const h5part_float32_t *data, const h5part_float32_t *data,
const h5part_float32_t *nelem, const h5part_int64_t *nelem,
const int l_name const int l_name
) { ) {
@@ -90,9 +90,9 @@ h5pt_writefileattrib_r4 (
} }
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_writefileattrib_r4 F77NAME ( \ #define h5pt_readfileattrib_r4 F77NAME ( \
h5pt_writefileattrib_r4_, \ h5pt_readfileattrib_r4_, \
H5PT_WRITEFILEATTRIB_R4 ) H5PT_READFILEATTRIB_R4 )
#endif #endif
h5part_int64_t h5part_int64_t
@@ -141,9 +141,9 @@ h5pt_writefileattrib_i8 (
} }
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_writefileattrib_i8 F77NAME ( \ #define h5pt_readfileattrib_i8 F77NAME ( \
h5pt_writefileattrib_i8_, \ h5pt_readfileattrib_i8_, \
H5PT_WRITEFILEATTRIB_I8 ) H5PT_READFILEATTRIB_I8 )
#endif #endif
h5part_int64_t h5part_int64_t
@@ -176,7 +176,7 @@ h5pt_writefileattrib_i4 (
h5part_int64_t *f, h5part_int64_t *f,
const char *name, const char *name,
const h5part_int32_t *data, const h5part_int32_t *data,
const h5part_int32_t *nelem, const h5part_int64_t *nelem,
const int l_name const int l_name
) { ) {
@@ -192,9 +192,9 @@ h5pt_writefileattrib_i4 (
} }
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_writefileattrib_i4 F77NAME ( \ #define h5pt_readfileattrib_i4 F77NAME ( \
h5pt_writefileattrib_i4_, \ h5pt_readfileattrib_i4_, \
H5PT_WRITEFILEATTRIB_I4 ) H5PT_READFILEATTRIB_I4 )
#endif #endif
h5part_int64_t h5part_int64_t
@@ -227,7 +227,7 @@ h5pt_writestepattrib_r8 (
h5part_int64_t *f, h5part_int64_t *f,
const char *name, const char *name,
const h5part_float64_t *data, const h5part_float64_t *data,
const h5part_float64_t *nelem, const h5part_int64_t *nelem,
const int l_name const int l_name
) { ) {
@@ -243,9 +243,9 @@ h5pt_writestepattrib_r8 (
} }
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_writestepattrib_r8 F77NAME ( \ #define h5pt_readstepattrib_r8 F77NAME ( \
h5pt_writestepattrib_r8_, \ h5pt_readstepattrib_r8_, \
H5PT_WRITESTEPATTRIB_R8 ) H5PT_READSTEPATTRIB_R8 )
#endif #endif
h5part_int64_t h5part_int64_t
@@ -278,7 +278,7 @@ h5pt_writestepattrib_r4 (
h5part_int64_t *f, h5part_int64_t *f,
const char *name, const char *name,
const h5part_float32_t *data, const h5part_float32_t *data,
const h5part_float32_t *nelem, const h5part_int64_t *nelem,
const int l_name const int l_name
) { ) {
@@ -294,9 +294,9 @@ h5pt_writestepattrib_r4 (
} }
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_writestepattrib_r4 F77NAME ( \ #define h5pt_readstepattrib_r4 F77NAME ( \
h5pt_writestepattrib_r4_, \ h5pt_readstepattrib_r4_, \
H5PT_WRITESTEPATTRIB_R4 ) H5PT_READSTEPATTRIB_R4 )
#endif #endif
h5part_int64_t h5part_int64_t
@@ -345,9 +345,9 @@ h5pt_writestepattrib_i8 (
} }
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_writestepattrib_i8 F77NAME ( \ #define h5pt_readstepattrib_i8 F77NAME ( \
h5pt_writestepattrib_i8_, \ h5pt_readstepattrib_i8_, \
H5PT_WRITESTEPATTRIB_I8 ) H5PT_READSTEPATTRIB_I8 )
#endif #endif
h5part_int64_t h5part_int64_t
@@ -380,7 +380,7 @@ h5pt_writestepattrib_i4 (
h5part_int64_t *f, h5part_int64_t *f,
const char *name, const char *name,
const h5part_int32_t *data, const h5part_int32_t *data,
const h5part_int32_t *nelem, const h5part_int64_t *nelem,
const int l_name const int l_name
) { ) {
@@ -396,9 +396,9 @@ h5pt_writestepattrib_i4 (
} }
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_writestepattrib_i4 F77NAME ( \ #define h5pt_readstepattrib_i4 F77NAME ( \
h5pt_writestepattrib_i4_, \ h5pt_readstepattrib_i4_, \
H5PT_WRITESTEPATTRIB_I4 ) H5PT_READSTEPATTRIB_I4 )
#endif #endif
h5part_int64_t h5part_int64_t
+1 -14
View File
@@ -100,9 +100,6 @@
#define h5pt_setview_indices F77NAME ( \ #define h5pt_setview_indices F77NAME ( \
h5pt_setview_indices_, \ h5pt_setview_indices_, \
H5PT_SETVIEW_INDICES ) H5PT_SETVIEW_INDICES )
#define h5pt_setview_empty F77NAME ( \
h5pt_setview_empty_, \
H5PT_SETVIEW_EMPTY )
#define h5pt_resetview F77NAME ( \ #define h5pt_resetview F77NAME ( \
h5pt_resetview_, \ h5pt_resetview_, \
H5PT_RESETVIEW ) H5PT_RESETVIEW )
@@ -626,7 +623,7 @@ h5pt_setview (
H5PartFile *filehandle = (H5PartFile*)(size_t)*f; H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
return H5PartSetView ( filehandle, *start, *end ); return H5PartSetView ( filehandle, (*start)-1, (*end)-1 );
} }
h5part_int64_t h5part_int64_t
@@ -641,16 +638,6 @@ h5pt_setview_indices (
return H5PartSetViewIndices ( filehandle, indices, *nelem ); return H5PartSetViewIndices ( filehandle, indices, *nelem );
} }
h5part_int64_t
h5pt_setview_empty (
const h5part_int64_t *f
) {
H5PartFile *filehandle = (H5PartFile*)(size_t)*f;
return H5PartSetViewEmpty ( filehandle );
}
h5part_int64_t h5part_int64_t
h5pt_resetview ( h5pt_resetview (
const h5part_int64_t *f const h5part_int64_t *f
+1 -3
View File
@@ -19,11 +19,9 @@ __attribute__ ((format (printf, 3, 4)))
#endif #endif
; ;
#ifndef MPI_INCLUDED #ifndef PARALLEL_IO
#ifndef OPEN_MPI
typedef unsigned long MPI_Comm; typedef unsigned long MPI_Comm;
#endif #endif
#endif
#define H5PART_STEPNAME_LEN 64 #define H5PART_STEPNAME_LEN 64
#define H5PART_DATANAME_LEN 64 #define H5PART_DATANAME_LEN 64
+13 -14
View File
@@ -2,8 +2,6 @@
OBJEXT=o OBJEXT=o
INCLUDES = -I@HDF5ROOT@/include @MPIINC@
EXTRA_HEADERS = H5PartPrivate.h \ EXTRA_HEADERS = H5PartPrivate.h \
H5BlockPrivate.h \ H5BlockPrivate.h \
H5MultiBlockPrivate.h \ H5MultiBlockPrivate.h \
@@ -25,10 +23,10 @@ EXTRA_DIST = TestUnderscoreC.c \
nodist_include_HEADERS = H5PartF.h @UNDERSCORE_H@ nodist_include_HEADERS = H5PartF.h @UNDERSCORE_H@
# What to build... Will be determined by configure script. # What to build... Will be determined by configure script.
lib_LIBRARIES = @MTARGET@ lib_LTLIBRARIES = libH5Part.la @LIB_FORTRAN@
# Listing of all possible targets that I may build. # Listing of all possible targets that I may build.
EXTRA_LIBRARIES = libH5Part.a libH5PartF.a EXTRA_LTLIBRARIES = libH5PartF.la
# Header files that I wish to install in $(prefix)/include # Header files that I wish to install in $(prefix)/include
include_HEADERS = H5Part.h \ include_HEADERS = H5Part.h \
@@ -47,27 +45,28 @@ include_HEADERS = H5Part.h \
@UNDERSCORE_H@ @UNDERSCORE_H@
# Listing of sources # Listing of sources
libH5Part_a_SOURCES = H5Part.c \ libH5Part_la_SOURCES = H5Part.c \
H5PartAttrib.c \ H5PartAttrib.c \
H5Block.c \ H5Block.c \
H5BlockReadWrite.c \ H5BlockReadWrite.c \
H5MultiBlock.c \ H5MultiBlock.c \
H5MultiBlockReadWrite.c H5MultiBlockReadWrite.c
libH5PartF_a_SOURCES = $(libH5Part_a_SOURCES) \ libH5Part_la_LDFLAGS = -version-info 0:0:0
libH5PartF_la_SOURCES = H5Part.c \
H5PartAttrib.c \
H5Block.c \
H5BlockReadWrite.c \
H5MultiBlock.c \
H5MultiBlockReadWrite.c \
H5PartF.c \ H5PartF.c \
H5PartAttribF.c \ H5PartAttribF.c \
H5BlockF.c \ H5BlockF.c \
H5BlockReadWriteF.c H5BlockReadWriteF.c
libH5PartF_la_LDFLAGS = -version-info 0:0:0 -rpath '$(libdir)'
H5PartF.h: H5Part.f90 H5PartAttrib.f90 H5Block.f90 H5BlockReadWrite.f90 H5PartF.h: H5Part.f90 H5PartAttrib.f90 H5Block.f90 H5BlockReadWrite.f90
awk '/INTEGER\*8 FUNCTION/{print "\t" $$1 " " $$3}' $^ >$@ awk '/INTEGER\*8 FUNCTION/{print "\t" $$1 " " $$3}' $^ >$@
libpH5Part.a: libH5Part.a
$(RM) $@
ln -s $^ $@
libpH5PartF.a: libH5PartF.a
$(RM) $@
ln -s $^ $@
+4 -4
View File
@@ -113,7 +113,7 @@ h5pt_write#LEVELLC#attrib_#TYPE_F90_ABV# (
h5part_int64_t *f, h5part_int64_t *f,
const char *name, const char *name,
const h5part_#TYPE_H5P#_t *data, const h5part_#TYPE_H5P#_t *data,
const h5part_#TYPE_H5P#_t *nelem, const h5part_int64_t *nelem,
const int l_name const int l_name
) { ) {
@@ -143,9 +143,9 @@ END FUNCTION
read_attr_fc = """ read_attr_fc = """
#if ! defined(F77_NO_UNDERSCORE) #if ! defined(F77_NO_UNDERSCORE)
#define h5pt_write#LEVELLC#attrib_#TYPE_F90_ABV# F77NAME ( \\ #define h5pt_read#LEVELLC#attrib_#TYPE_F90_ABV# F77NAME ( \\
h5pt_write#LEVELLC#attrib_#TYPE_F90_ABV#_, \\ h5pt_read#LEVELLC#attrib_#TYPE_F90_ABV#_, \\
H5PT_WRITE#LEVELUC#ATTRIB_#TYPE_F90_ABVC# ) H5PT_READ#LEVELUC#ATTRIB_#TYPE_F90_ABVC# )
#endif #endif
h5part_int64_t h5part_int64_t
+5 -6
View File
@@ -2,15 +2,12 @@
OBJEXT=o OBJEXT=o
HDFLIB = -L@HDF5ROOT@/lib -lhdf5 -lz @SZLIB@ INCLUDES = -I../src @INCLUDES@
LIBS = -L@H5P_LIB_LOC@ @H5P_LIB_NAME@ $(HDFLIB) -lm
INCLUDES = -I@H5P_LIB_LOC@ -I@HDF5ROOT@/include @MPIINC@ noinst_PROGRAMS = @BUILD_TESTS@
noinst_PROGRAMS = @TTARGET@
TESTS_ENVIRONMENT = env LD_LIBRARY_PATH=@HDF5ROOT@/lib:$(LD_LIBRARY_PATH) TESTS_ENVIRONMENT = env LD_LIBRARY_PATH=@HDF5ROOT@/lib:$(LD_LIBRARY_PATH)
TESTS = @TTARGET@ TESTS = @BUILD_TESTS@
EXTRA_PROGRAMS = test testf EXTRA_PROGRAMS = test testf
@@ -20,8 +17,10 @@ test_SOURCES = test.c \
read.c \ read.c \
testframe.h \ testframe.h \
params.h params.h
test_LDADD = ../src/libH5Part.la
testf_SOURCES = testf.F90 testf_SOURCES = testf.F90
testf_LDADD = ../src/libH5PartF.la
clean: clean-am clean: clean-am
rm -f *.h5 rm -f *.h5
+27 -22
View File
@@ -175,10 +175,6 @@ test_read_data64(H5PartFile *file, int nparticles, int step)
status = H5PartSetView(file, start, end); status = H5PartSetView(file, start, end);
RETURN(status, H5PART_SUCCESS, "H5PartSetView"); RETURN(status, H5PART_SUCCESS, "H5PartSetView");
status = H5PartReadDataFloat64(file, "x", x);
RETURN(status, H5PART_SUCCESS, "H5PartReadDataFloat64");
FVALUE(x[rank], (double)(start+rank+nparticles*t), "x data");
val = H5PartGetView(file, &start, &end); val = H5PartGetView(file, &start, &end);
IVALUE(val, nprocs*nparticles-start, "particle count"); IVALUE(val, nprocs*nparticles-start, "particle count");
IVALUE(start, rank, "view start"); IVALUE(start, rank, "view start");
@@ -187,51 +183,60 @@ test_read_data64(H5PartFile *file, int nparticles, int step)
status = H5PartSetView(file, -1, -1); status = H5PartSetView(file, -1, -1);
RETURN(status, H5PART_SUCCESS, "H5PartSetView"); RETURN(status, H5PART_SUCCESS, "H5PartSetView");
status = H5PartSetView(file, 0, nparticles-1);
RETURN(status, H5PART_SUCCESS, "H5PartSetView");
val = H5PartGetNumParticles(file);
IVALUE(val, nparticles, "particle count");
status = H5PartReadDataFloat64(file, "x", x); status = H5PartReadDataFloat64(file, "x", x);
RETURN(status, H5PART_SUCCESS, "H5PartReadDataFloat64"); RETURN(status, H5PART_SUCCESS, "H5PartReadDataFloat64");
IVALUE(x[rank], (double)(rank+nparticles*t), "x data"); IVALUE(x[rank], (double)(rank+nparticles*t), "x data");
status = H5PartResetView(file);
RETURN(status, H5PART_SUCCESS, "H5PartResetView");
val = H5PartGetNumParticles(file);
IVALUE(val, nprocs*nparticles, "particle count");
indices[0] = rank*2 + 0; indices[0] = rank*2 + 0;
indices[1] = rank*2 + 3; indices[1] = rank*2 + 3;
indices[2] = rank*2 + 9; indices[2] = rank*2 + 9;
indices[3] = rank*2 + 7; indices[3] = rank*2 + 7;
status = H5PartSetViewIndices(file, indices, -1);
RETURN(status, H5PART_SUCCESS, "H5PartSetViewIndices");
status = H5PartReadDataFloat64(file, "x", x);
RETURN(status, H5PART_SUCCESS, "H5PartReadDataFloat64");
FVALUE(x[2*rank], (double)(2*rank+nparticles*t), "x data");
status = H5PartResetView(file);
RETURN(status, H5PART_SUCCESS, "H5PartResetView");
status = H5PartSetViewIndices(file, indices, 4); status = H5PartSetViewIndices(file, indices, 4);
RETURN(status, H5PART_SUCCESS, "H5PartSetViewIndices"); RETURN(status, H5PART_SUCCESS, "H5PartSetViewIndices");
val = H5PartGetNumParticles(file); val = H5PartGetNumParticles(file);
IVALUE(val, 4, "particle count"); IVALUE(val, 4, "particle count");
status = H5PartReadDataFloat64(file, "x", x); double x2[4];
status = H5PartReadDataFloat64(file, "x", x2);
RETURN(status, H5PART_SUCCESS, "H5PartReadDataFloat64"); RETURN(status, H5PART_SUCCESS, "H5PartReadDataFloat64");
FVALUE(x[2], (double)(rank*2+9+nparticles*t), "x data"); FVALUE(x2[0], (double)(2*rank+0+nparticles*t), "x data");
FVALUE(x2[1], (double)(2*rank+3+nparticles*t), "x data");
FVALUE(x2[2], (double)(2*rank+9+nparticles*t), "x data");
FVALUE(x2[3], (double)(2*rank+7+nparticles*t), "x data");
val = H5PartGetNumParticles(file); status = H5PartSetViewIndices(file, indices, -1);
IVALUE(val, 4, "particle count");
status = H5PartSetViewIndices(file, NULL, 4);
RETURN(status, H5PART_SUCCESS, "H5PartSetViewIndices"); RETURN(status, H5PART_SUCCESS, "H5PartSetViewIndices");
status = H5PartReadDataFloat64(file, "x", x); val = H5PartGetNumParticles(file);
RETURN(status, H5PART_SUCCESS, "H5PartReadDataFloat64"); IVALUE(val, nprocs*nparticles, "particle count");
status = H5PartSetCanonicalView(file); status = H5PartSetCanonicalView(file);
RETURN(status, H5PART_SUCCESS, "H5PartSetCanonicalView"); RETURN(status, H5PART_SUCCESS, "H5PartSetCanonicalView");
val = H5PartGetNumParticles(file);
IVALUE(val, nparticles, "particle count");
status = H5PartReadParticleStep ( status = H5PartReadParticleStep (
file, t, x, y, z, px, py, pz, id); file, t, x, y, z, px, py, pz, id);
RETURN(status, H5PART_SUCCESS, "H5PartReadParticleStep"); RETURN(status, H5PART_SUCCESS, "H5PartReadParticleStep");
status = H5PartSetViewIndices(file, NULL, 4);
RETURN(status, H5PART_SUCCESS, "H5PartSetViewIndices");
for (i=0; i<nparticles; i++) for (i=0; i<nparticles; i++)
{ {
FVALUE(x[i] , 0.0 + (double)(i+nparticles*t), " x data"); FVALUE(x[i] , 0.0 + (double)(i+nparticles*t), " x data");
+5 -5
View File
@@ -7,9 +7,9 @@ program H5PartTest
include 'H5PartF.h' include 'H5PartF.h'
#ifdef PARALLEL_IO #ifdef PARALLEL_IO
integer :: comm, ierr, i integer :: comm, ierr
integer*8 :: file_id, status, npoints
#endif #endif
integer*8 :: file_id, status, npoints, i
real*8, allocatable :: x(:),y(:),z(:),px(:),py(:),pz(:) real*8, allocatable :: x(:),y(:),z(:),px(:),py(:),pz(:)
integer*8, allocatable :: id(:) integer*8, allocatable :: id(:)
@@ -18,10 +18,10 @@ program H5PartTest
comm = MPI_COMM_WORLD comm = MPI_COMM_WORLD
#endif #endif
! this enables level 3 ("info") messages to be ! this enables level 4 ("debug") messages to be
! printed by the H5Part library ! printed by the H5Part library
! (3_8 is the literal for an integer*8 with value 3) ! (4_8 is the literal for an integer*8 with value 4)
status = h5pt_set_verbosity_level (3_8) status = h5pt_set_verbosity_level (4_8)
! open the a file called 'test.h5' in parallel for writing ! open the a file called 'test.h5' in parallel for writing
#ifdef PARALLEL_IO #ifdef PARALLEL_IO
+14 -8
View File
@@ -2,10 +2,7 @@
OBJEXT=o OBJEXT=o
HDFLIB = -L@HDF5ROOT@/lib -lhdf5 -lz @SZLIB@ INCLUDES = -I../src @INCLUDES@
LIBS = -L@H5P_LIB_LOC@ @H5P_LIB_NAME@ $(HDFLIB) -lm @STDCXX@
INCLUDES = -I@H5P_LIB_LOC@ -I@HDF5ROOT@/include @MPIINC@
# What to build... make install will place these files in the $(prefix)/bin directory. # What to build... make install will place these files in the $(prefix)/bin directory.
bin_PROGRAMS = @BUILD_TOOLS@ bin_PROGRAMS = @BUILD_TOOLS@
@@ -19,8 +16,17 @@ EXTRA_PROGRAMS = h5pAttrib \
# Listing of sources # Listing of sources
h5pAttrib_SOURCES = h5pAttrib.cc h5pAttrib_SOURCES = h5pAttrib.cc
h5pToGNUplot_SOURCES = h5pToGNUplot.cc h5pAttrib_LDADD = ../src/libH5Part.la
homdynToH5p_SOURCES = homdynToH5p.cc
H5PartBench_SOURCES = H5PartBench.c h5pToGNUplot_SOURCES = h5pToGNUplot.cc
H5BlockBench_SOURCES = H5BlockBench.c h5pToGNUplot_LDADD = ../src/libH5Part.la
homdynToH5p_SOURCES = homdynToH5p.cc
homdynToH5p_LDADD = ../src/libH5Part.la
H5PartBench_SOURCES = H5PartBench.c
H5PartBench_LDADD = ../src/libH5Part.la
H5BlockBench_SOURCES = H5BlockBench.c
H5BlockBench_LDADD = ../src/libH5Part.la