Me da bastante pereza instalar maquinas virtuales y sobre todo tener que probar mis ejecutables en linux, que son bastante básicos por ahora, risas, pero espero a ver si voy avanzando.

Lo primero que vemos al ir a la página de Eclipse es que existe una version Parallel Application Developers ( eclipse-parallel-neon-R-win32-x86_64.zip) pero al instarla veo que no es tan fácil como pensaba y necesitamos un compilador, iluso de mí xD.

Para eso siguiendo esta guía he usado Cygwin GCC. En esencia la instalamos seleccionando los paquetes “gcc”, “g++”, “gdb”, y”make” bajo “Devel”, que no vienen por por defecto en la instalación. Otra guía te compila estos paquetes pero no es necesario, salvo que necesites alguna versión que no tengas. Luego es necesario añadir a variables de entorno la ruta: “PATH” ? Edit ? Add “C:\cygwin64\bin. O donde lo hayamos instalado.

Luego si no tenemos instado el paquete anterior de eclipse lo hacemos y debería ir sin problema. Para realizar nuestro primer proyecto hacemos File > C Proyect > OpenMP Empty Proyect y en Toolchain nos debería aparecer ya la posibilidad de Cygwin GCC, que nos permitirá mas adelante seleccionar las distintas configuraciones que antes no podíamos sin instalar Cygwin GCC.

Creamos un archivo en C, y colocamos lo siguiente en honor a PI para probar que todo va como debería:

/*

* Calculate $\pi = 4 \int_0^1 \sqrt{1 – x^2} \, dx$
* using a rectangle rule $\sum_{i=1}^N f(x_0 + i h – h/2) h$
*
* Compile as $> gcc -Wall -Wextra -fopenmp -lm
* Run as $> OMP_NUM_THREADS=2 ./a.out
*/
#include <stdio.h>
#include <math.h>
#include <omp.h>

int main()
{
const int N = 10000000;
const double L = 1.0;
const double h = L / N;
const double x_0 = 0.0;

double pi;
double t_1, t_2;

int i;
double sum = 0.0;

t_1 = omp_get_wtime();

#pragma omp parallel for reduction(+: sum) schedule(static)
for (i = 0; i < N; ++i)
{
double x = x_0 + i * h + h/2;
sum += sqrt(1 – x*x);
}

t_2 = omp_get_wtime();

pi = sum * h * 4.0;

printf(“omp_get_max_threads(): %d\n”, omp_get_max_threads());
printf(“time: %f\n”, t_2 – t_1);
printf(“pi ~ %f\n”, pi);

return 0;
}

Luego Build All y Run según la configuración que hayamos puesto. Y obtenemos por ejemplo:

omp_get_max_threads(): 4
time: 1.145202
pi ~ 3.141593

 

Me quedo con el tamaño de los procesadores de Apple y que para mantener el ritmo hay que mirar al mundo de los servidores donde Intel tiene como competencia a si mismo. A ver si con Zen se anima el asunto. De entrada el anuncio de 6 núcleos para el 2018 con Coffee Lake creo que es mas por competencia interna, casi no vemos i5 de serie 2xxx en adelante a buen precio después de todo este tiempo.

Lo ideal sería ver chips a 20 Ghz hechos con otra tecnología y mismo nivel de integración, o simplemente poner varios chips trabajando a frecuencias moderadas en una misma placa base, que esta fuera mantenida durante al menos 10 años y estuviera pensada para ser ampliada por todos lados.

 

mooreslaw_visualized
Fuente: http://www.dvhardware.net/article64833.html