About JEP 338: Vector API
b.lacombe at lug.com
b.lacombe at lug.com
Fri Feb 5 14:19:01 UTC 2021
About JEP 338: Vector API
A) you write :
-----
static final VectorSpecies<Float> SPECIES = FloatVector.SPECIES_256;
void vectorComputation(float[] a, float[] b, float[] c) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
var m = SPECIES.indexInRange(i, a.length);
// FloatVector va, vb, vc;
var va = FloatVector.fromArray(SPECIES, a, i, m);
var vb = FloatVector.fromArray(SPECIES, b, i, m);
var vc = va.mul(va).
add(vb.mul(vb)).
neg();
vc.intoArray(c, i, m);
}
}
-----
It is very complexe source code to write a simple (a*a+b )*-1
It 'll more easy, if we can write :
FloatVector.forAll(a).mul(a).add(b).neg().toArray(c)
Where each operator (mul,add,neg) can make the convertion :
var va=>FloatVector.fromArray(SPECIES, a, i, m) ...
Of course optimisation can be done with a code like :
----
void mul(a, ... buf){
var va = cache.get(a);
if( va==nul ){
va = FloatVector.fromArray(SPECIES, a, i, m);
cache.put(a,va);
}
//here va
.....
}
----
2) A another optimisation can be make by preparing data whith a "width"
operator like :
FloatVector
.width(a,b,c)
.forAll(a)
.mul(a).add(b).neg()
.toArray(c);
then source is more easy to read, and less complex
what did you think ?
3) And if we can upgrade java grammar, a code like this for matrix :
c = FloatVector[[ a*a+b*-1 ]]
would be ecxellent (where a,b,c must be final array) and so easy ....
Cordialement
Bruno LACOMBE
Multimédia SOLUTIONS
Site Technologique de Marticot
33610 Cestas
Tel (33) 05.56.21.51.18
Téléchargez Windex GED : Gestion Electronique de Documents
http://www.lug.com
More information about the panama-dev
mailing list