org - ¿cómo es posible obtener gccgo producir código vectorizado?
install go centos (1)
¿Por qué no simplemente construir .so o .a con gcc y llamar a la función c desde Go?
Estoy intentando convencer a gccgo sin éxito de vectorizar el siguiente fragmento de código:
package foo
func Sum(v []float32) float32 {
var sum float32 = 0
for _, x := range v {
sum += x
}
return sum
}
Estoy verificando el ensamblado generado por:
$ gccgo -O3 -ffast-math -march=native -S test.go
La versión de gccgo es:
$ gccgo --version
gccgo (Ubuntu 4.9-20140406-0ubuntu1) 4.9.0 20140405 (experimental) [trunk revision 209157]
¿No se supone que gccgo puede vectorizar este código? el código C equivalente con las mismas opciones de gcc está perfectamente vectorizado con las instrucciones AVX ...
ACTUALIZAR
Aquí tienes el ejemplo C correspondiente:
#include <stdlib.h>
float sum(float *v, size_t n) {
size_t i;
float sum = 0;
for(i = 0; i < n; i++) {
sum += v[i];
}
return sum;
}
compilar con:
$ gcc -O3 -ffast-math -march=native -S test.c