[jsdl-wg] (Param Sweep) - Stephen Pickles' public comment
geoff
geoff.williams at comlab.ox.ac.uk
Thu Jan 15 11:51:01 CST 2009
Hi all,
I took a much closer look at Steve's input on the subject of looping
through values ( http://www.ogf.org/gf/docs/comment.php?id=282 ) and,
contrary to what I was saying in the teleconf yesterday (which was based
on not having given it suitable forethought - big sorry! :( ), before
proceding I have the following points relating to Steve's concerns :
I'll use this convention throughout :
Option (A) : start, step and end values (as per current spec.)
Option (B) : start, step and loop count values (Steve's proposal)
Point 1 :
Following a very small survey on a few local users I received roughly
equal preference for each option based on the following principles:
Option (A) : Useful when ranges (e.g. physiological ranges) are known,
so little or no concern for the number of loops to perform. As per
examples (
http://forge.ogf.org/sf/wiki/do/viewPage/projects.jsdl-wg/wiki/ParameterSweepExtensionUseCases
)
Option (B) : Useful when a specific number of iterations are required,
e.g. having 10 values to test.
Note: There was some uncertainty, in that a loop count of "n" would
generate "n+1" values, i.e, a loop count of 0 will still produce a
single loop value! This would require clarification by documentation.
Conclusion : We need to ensure that the specification doesn't prevent
either of these options for job submission data entry.
Point 2 :
After reading up about Fortran the best official-looking (i.e. I'm not a
Fortran user/expert) explanation I could find is :
"3.2 Real & double precision DO variables
This was a feature copied from Algol 60 to Fortran 77 at a time when
there was a move to relax the strict type rules of Fortran 66.
Subsequently it was realized by IFIP that it was a mistake in Algol and
the feature did not appear in Algol 68. The problem is that because of
the nature of real arithmetic it is not possible, without detailed
knowledge of the arithmetic and implementation of a system, to predict
the behaviour of a program using this feature. Thus use contradicts the
first purpose of the standard, the promotion of portability of programs.
Since this deficiency has been known for over twenty years, the feature
has been relatively little used in Fortran and programs are readily
convertible to use an integer control variable. Fortran should
recognize that a mistake was made and the feature should now be deleted
from the language."
( http://www.open-std.org/JTC1/SC22/WG5/436 )
Conclusion : Fortran, no doubt as many other programming languages,
suffers from non-integer accuracy problems. IMHO though this should be
considered a problem solely for implementors to resolve using their own
solutions, but it should not however influence the determination of a
specification by which grid users want to submit their jobs (i.e. our role).
To emphasise the implementation-specific nature Java provides
out-of-the-box ability to perform IEEE 754 standard (
http://en.wikipedia.org/wiki/IEEE_754 ), base 10 / decimal arithmetic by
use of the BigDecimal class (
http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html )
(note: values of which should be initialised using string
representations), which is considerably more accurate than Float or
Double classes which use base 2 arithmetic. (
http://www.ddj.com/java/184405721 ) and could meet the accuracy needs of
the vast majority of users. In another official-looking document I
understand that Fortran has moved towards adopting decimal floating
point arithmetic IEEE 754 (
http://grouper.ieee.org/groups/754/email/msg01921.html )
Point 3 :
I believe that Option (A) delivers a stronger contract for accuracy by
implementations by explicitly specifying three verifiable values, rather
than Option (B) which provides just two, i.e. just start and step.
Conclusion : Option (A) should take precedence over Option (B) as the
former specifies a limit condition (and hence accuracy is explicit)
whereas the latter doesn't.
Point 4 :
We must assume that the user is competent and accurate, although
occasionally distracted.
Conclusion : It's for implementors to worry about determining
suitability of data entered.
Overall conclusion:
I feel we should stick 100% with the current specification and leave the
ability to provide Option (B) input to interface implementations.
I'd be very grateful for feedback to this email, particular from Steve
Pickles, hence I've Cc'd him. Now that I've managed to document my
concerns, and hopefully in a form which is more coherent (and with
accessible references) than the views expressed during teleconfs, it'll
be easier to see why I remain reluctant to change.
Thanks,
gef
More information about the jsdl-wg
mailing list