Examen 01 Flashcards
Características del CPU
- Tienen poder
- Son portátiles
- Pocos cores
Características del GPU
- Menos poder
- En general no son portátiles
- Muchos cores
¿Cómo están construidas las GPU?
Las GPU están construidas con la idea de tener muchos cores. Está organizada en múltiples bloques de memoria, conectados a segmentos de cores pequeños. El problema es que el sistema operativo no dirige y segmenta las tareas, se tiene que hacer de forma manual.
¿Cuáles fueron unos de los problemas de las GPUs en el pasado?
- Antes venían soldadas a las computadoras sin posibilidad de actualizarlas o cambiarlas
- Los usuarios comunes no tenían realmente una forma de sacarles provecho
¿Quién inventó los shaders y para qué?
Pixar inventó los shaders como encargados del procesamiento de la iluminación, para poder cambiar la iluminación en tiempo real.
¿Qué hizo NVIDIA alrededor del 2006?
Propuso un lenguaje unificado llamado CUDA hecho para programar en GPU
¿Para procesar qué figuras estaban optimizadas las GPUs y por qué?
Las GPUs solían estar optimizadas para procesar triángulos, ya que las mallas se componen de triángulos, que es la unidad más básica para representar algo.
¿Qué es la Computación Gráfica?
Es la parte de las ciencias de la computación donde se utilizan computadoras tanto para generar imágenes como para la manipulación de las mismas. No está limitada a la generación en tiempo real de imágenes.
¿Qué elementos están involucrados en la Computación Gráfica?
- Modelado / Modelación
- Animación
- Procesamiento de Imágenes
- Rendering
¿Qué es Modelar?
Abstraer algo y representarlo
¿Qué es la Simulación?
Tratar de representar con la mayor precisión posible la realidad. Tiene que haber un sacrificio entre respuesta y gráficos, se suele intentar mantener el tiempo de respuesta
¿Renderman es en tiempo real?
Renderman no es en tiempo real.
¿Qué es la retina?
La retina es el punto final donde se forma la imagen que vemos retina equivale al sensor de la cámara.
¿De qué se compone la retina?
La retina se compone de conos y bastones.
¿Qué son los bastones en la retina?
Los bastones en la retina son los responsables de la visión en condiciones de baja luz y no funcionan en luz brillante, son más numerosos que los conos.
¿Qué son los conos en la retina?
Los conos en la retina son los responsables de la visión de alta resolución y percepción del color, no responden en bajas intensidades de luz.
¿Qué hacemos con toda la información que obtenemos con la vista?
Nosotros promediamos la información que vemos ya que toda se conecta a un solo nervio.
¿Hay latencia entre la CPU y la GPU?
Si, como has comunicación entre la CPU y la GPU también hay latencia.
¿De las decisiones de quién depende la GPU?
La GPU depende de las decisiones de la CPU.
¿Qué es una función?
Una función es el mapeo de X (dominio) a Y (codominio)
¿Qué es un escalar?
Un escalar es un número real denotado por una letra griega.
¿Qué es un vector?
Un vector es un conjunto de ordenados, igual a la cantidad de dimensiones que estemos manejando.
¿Qué es una matriz?
Una matriz es un arreglo bidimensional de números que tiene m renglones y n columnas. Se representan por letras mayúsculas.
¿A qué se refiere la norma de un vector?
La norma de un vector se refiere a la magnitud de un vector, qué tan grande es. Cuando es igual a 1 es un vector unitario.
¿Qué es el producto punto?
El producto punto dice qué tan perpendicular es cada vector con respecto al otro. Cuando son perpendiculares el producto punto es igual a 0. Si tenemos 2 vectores paralelos el producto punto es 1.
¿A qué se refiere la ortogonalidad?
Dos vectores son ortogonales cuando son perpendiculares.
¿Qué es la proyección?
Lo que vemos en la pantalla es una proyección de la realidad.
¿Qué es una línea?
Una línea es un vector unitario que se puede multiplicar por un escalar, haciéndolo crecer hacia cualquier dirección.
¿Qué es un plano?
Un plano puede definirse por dos puntos y en vector que indique su dirección.
¿Cuál es el Sistema Coordenado Euclidiano?
Se refiere a aquel que está definido por 2 o 3 ejes ortogonales igualmente escalados cortonormales).
¿Qué es el Producto Cruz?
El Producto Cruz es la multiplicación cruz de dos vectores. Índice x Medio = Pulgar. El vector resultante siempre va a ser perpendicular a los otros dos.
¿Qué son las rotaciones 2D?
Las rotaciones 2D no son una suma ni resta, es más bien aplicara serie de operaciones para llegar de un punto a otro.
Rotaciones de Euler
Es más natural para los seres humanos, se puede girar en 3 ejes. Rotaciones descritas en 3 ángulos de libertad.
Candado de Gimbald
Se refiere a perder un eje de rotación.
¿Qué es una Matriz Ortogonal?
Una Matriz Ortogonal es aquella cuyo inverso es igual a su transpuesta.
Marco de Referencia
Origen con respecto al cual se ve algo en el espacio.
Coordenadas Homogéneas
Se refiere a una cuarta dimensión de operaciones, un aumento de variable, trabajar en un espacio superior, encapsulando toda la información en una sola matriz grande y trabajando o en ella. Usualmente se denomina W a la coordenada homogénea, usualmente = 1.
Transformaciones Ortogonales
Preservan ángulos y distancias. Las rotaciones tienen que ser ortonormales para preservar las rotaciones.
¿Qué es la Perspectiva?
La perspectiva es un fenómeno en que los objetos se vuelven más pequeños conforme se alejen, esto debido a los rayos de luz.
Perspectiva vs Vista Ortográfica
Uno preserva las diagonales de los “ rayos de luz” (vectores), y el otro a sume que los vectores son en línea recta.
Proceso de Renderizado
- Coordenadas del Mundo
- Coordenadas de la Cámara
- Coordenadas del Plano de Proyección
- Coordenadas del Plano del Dispositivo
Cuando se pasa al Dispositivo empezamos a tener “Resolución”
Pipelines extra: Superior
- Aplicación
- Geometría
- Rasterizado
Pipelines extra: Version Alternativa
- Model y View Transform
- Vertex Shading
- Projection
- Clipping
- Screen Mapping
¿Qué es Rasterizar?
Rasterizar se refiere a formar la imagen
Clipping Space
El Clipping consiste en tratar de eliminar todo aquello que no tenga que ser visualizado. El Clipping Space es el espacio siempre visto por la cámara
Vista Frustrum
La Vista Frustrum se visualiza como una pirámide cortada en la punta.
Está compuesta por el Plano Cercano, Plano Lejano, Plano derecho y el Plano Izquierdo.
Sólo lo que esté dentro de la pirámide es lo que va a ser procesado
Plano de Proyección
Pasar de 2D a 3D. Es el plano donde se proyecta la imagen 3D a 2D
Distancia Focal
La Distancia Focal es la distancia entre el sensor y el lente
Discretizar
Transformar una señal, por lo general de la realidad, y volverla una señal en la pantalla
Z-Buffer
Matriz del mismo tamaño de la imagen final de tamaño infinito. Cada que llega un pixel se coloca la distancia a la que estaba el pixel, revisa si la distancia es mayor o menor al que ya está dibujado para saber si se tiene que dibujar o no
Iluminación
Puede cambiar la percepción de la profundidad.
Es muy compleja y siempre se busca optimizar y mejorar.
Anti-Aliasing
Renderiza varias veces y promedia para suavizar líneas.
Texel
Fragmento de textura en referencia a la posición de un objeto. Unidad con la que se mide la porción de textura con la que se va a rellenar un triángulo.
¿La GPU cuándo asigna/libera memoria?
La GPU asigna/libera memoria antes de los cálculos
Scan Conversion
Dibujar pixeles entre 2 puntos para representar una unión
Componente Ambiente (ka)
Componente que representa la luz producida por el entorno. Dispersión de todos los objetos.
Componente Difuso (kd)
Componente que representa la luz de una fuente que se dispersa por la superficie de los objetos.
Componente Especular (ks)
Componente que representa la luz que es reflejada directo al observador.
¿Cómo se componía la iluminación con el modelo Phong?
Todo se calcula de 0 a 1, donde 0 es nada y 1 es todo. Primero se obtiene el Ambiente, color plano, después se obtiene el Difuso, cierta información de iluminación y profundidad, al final se obtiene la Especular, los brillos.
Modelo de Iluminación Lambert
Es como el modelo Phong pero sin el componente especular para evitar que se vea plastificado el material
¿Cómo se identifica el kernel en código?
Teniendo __ al inicio
Thread de ejecución del kernel
Cada thread tiene un identificador único, empezando en 0, es la ejecución de cada uno de los bloques del kernel sobre el core de la GPU
“Device” es en el código
La GPU
“Host” es en el código
La CPU
Bloque
Empaquetamiento
Menos de cuantos threads no se recomienda mandar
128 threads, procurando que siempre sean potencias de 2
Kernel en código
El kernel es el encapsulamiento de código que se va a ejecutar en la CPU. Es una serie de instrucciones encapsuladas en una especie de función, donde esta es la que se va a ejecutar en paralelo usando threads. Cada threads tomará una copia del código y lo ejecutará.
Las direcciones de memoria
Solo tienen sentido en su respectivo espacio, las direcciones de memoria de Device solo tendrán sentido en ella y viceversa
cudaSetDevice
Establece cuál GPU se va a usar
cudaStatus = cudaMalloc((void**)&dev_c, size * sizeof(int));
Reserva memoria en GPU
cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
Copiamos la memoria. Destino, origen, cantidad (cuánta info.), y la dirección de donde a dónde
addKernel«<1, size»>(dev_c, dev_a, dev_b);
Número de bloques y número de threads