Untitled - Departamento de Ciencias e Ingeniería de la Computación
Untitled - Departamento de Ciencias e Ingeniería de la Computación
Untitled - Departamento de Ciencias e Ingeniería de la Computación
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
3.7.1 Sh<br />
Sh es una librería que utiliza un mecanismo <strong>de</strong> metaprogramación, el cual permite escribir sha<strong>de</strong>rs <strong>de</strong>ntro <strong>de</strong>l<br />
programa principal, en C++. Parte <strong>de</strong>l código es compi<strong>la</strong>do cuando <strong>la</strong> aplicación principal se compi<strong>la</strong>, y el resto (con<br />
ciertas optimizaciones) se compi<strong>la</strong> en tiempo <strong>de</strong> ejecución. Esta es una i<strong>de</strong>a simi<strong>la</strong>r a <strong>la</strong> que usamos cuando<br />
incorporamos consultas SQL en el código <strong>de</strong> nuestra aplicación.<br />
Entre <strong>la</strong>s características que posee po<strong>de</strong>mos nombrar:<br />
Es Open source.<br />
Tiene soporte ya implementado para <strong>la</strong>s p<strong>la</strong>taformas Windows, Linux y Mac OS X. A<strong>de</strong>más, también tiene<br />
soporte en OpenGL y DirectX.<br />
Dado que fue <strong>de</strong>sarrol<strong>la</strong>do por investigadores universitarios, Sh no está altamente ligado a ninguna<br />
p<strong>la</strong>taforma particu<strong>la</strong>r, API gráfica, o fabricante <strong>de</strong> GPU.<br />
Está diseñado para po<strong>de</strong>r usarlo para cálculos <strong>de</strong> propósito general.<br />
Sh es un proyecto investigativo con un enfoque interesante. Aunque, en mi opinión, no tan útil como para usarlo en<br />
<strong>la</strong> práctica. ¿Por qué? Entre otras cosas, porque nos quita <strong>la</strong> gran ventaja <strong>de</strong> po<strong>de</strong>r <strong>de</strong>sarrol<strong>la</strong>r sha<strong>de</strong>rs por separado,<br />
utilizando herramientas que no solo nos permiten <strong>de</strong>sarrol<strong>la</strong>rlos muy cómodamente, sino optimizarlos sin tener en<br />
cuenta a nuestro motor.<br />
3.7.2 Cálculos <strong>de</strong> propósito general sobre GPUs<br />
En el primer capítulo hab<strong>la</strong>mos <strong>de</strong> usar a <strong>la</strong>s GPU para realizar cálculos físicos. En realidad, <strong>la</strong>s GPUs podrían ser<br />
útiles para realizar cualquier tipo <strong>de</strong> cálculos <strong>de</strong> propósito general. De hecho, actualmente es un área que está<br />
l<strong>la</strong>mando mucha <strong>la</strong> atención, dado que el po<strong>de</strong>r <strong>de</strong> cálculo <strong>de</strong> <strong>la</strong>s GPUs es altísimo.<br />
Los lenguajes anteriormente vistos (excepto Sh) reflejan <strong>la</strong> estructura <strong>de</strong> <strong>la</strong> GPU bastante bien. Y es por esto que<br />
necesitamos enfoques totalmente distintos. Actualmente existen dos enfoques interesantes, el CUDA <strong>de</strong> NVIDIA y el<br />
CTM <strong>de</strong> ATI.<br />
Lamentablemente, no continuaremos con este tema, a pesar <strong>de</strong> que es verda<strong>de</strong>ramente muy interesante, y<br />
probablemente consiga repercutir consi<strong>de</strong>rablemente en el mercado en los próximos años.<br />
Página 63