¿Qué son CUDA y OpenCL? ¿Cómo y por qué se utilizan para PoW Mining?

A menudo se sugiere que, para participar prácticamente en la minería, se debe obtener una tarjeta gráfica e instalar las bibliotecas CUDA y/u OpenCL.

De sus definiciones de wikipeda:

CUDA es una plataforma informática paralela y un modelo de interfaz de programación de aplicaciones (API) creado por Nvidia. Permite que los desarrolladores de software y los ingenieros de software utilicen una unidad de procesamiento de gráficos (GPU) habilitada para CUDA para el procesamiento de propósito general, un enfoque denominado GPGPU (Computación de propósito general en unidades de procesamiento de gráficos). La plataforma CUDA es una capa de software que brinda acceso directo al conjunto de instrucciones virtuales de la GPU y elementos computacionales paralelos, para la ejecución de núcleos de cómputo.

Open Computing Language (OpenCL) es un marco para escribir programas que se ejecutan en plataformas heterogéneas que consisten en unidades de procesamiento central (CPU), unidades de procesamiento de gráficos (GPU), procesadores de señales digitales (DSP), arreglos de puertas programables en campo (FPGA) y otros procesadores o aceleradores de hardware. OpenCL especifica lenguajes de programación (basados ​​en C99 y C++11) para programar estos dispositivos e interfaces de programación de aplicaciones (API) para controlar la plataforma y ejecutar programas en los dispositivos informáticos. OpenCL proporciona una interfaz estándar para computación paralela utilizando paralelismo basado en tareas y datos.

¿Cómo y por qué se usan CUDA y OpenCL en PoW Mining?

¿Cuánto depende, en todo caso, la plataforma Ethereum de estos?

¿Cuáles son las alternativas?

Respuestas (2)

  • Cuda y OpenCL se utilizan para programar procesadores altamente paralelos. Cuda fue creado por Nvidia para sus GPU. OpenCL fue propuesto por Apple, pero está respaldado por los principales actores de la industria como AMD, Intel, etc. Se puede usar para programar desde GPU hasta supercomputadoras con miles de millones de procesadores.
  • Ethash es el algoritmo utilizado para Ethereum PoW. Desde su fundamento de diseño , puede leer que fue diseñado para ser compatible con GPU .
  • Dado que AMD y Nvidia son las empresas dominantes en el mercado de GPU, la programación en Cuda (Nvidia) y OpenCL (AMD) debería cubrir la mayoría de las GPU disponibles en la actualidad.
  • Ethereum no requiere una GPU para minar, hay mineros de CPU. Pero desde un punto de vista económico no es muy conveniente. Para obtener una tasa de hash similar, necesita más CPU que consuman más electricidad.
  • Ethereum tiene planes de cambiar de PoW a PoS, por lo que a largo plazo no hay dependencia de las GPU y Cuda/OpenCL.

Fondo

Para extraer un bloque, uno debe realizar cálculos. No hay nada mágico en las computadoras: puedes hacer lo mismo con lápiz y papel, solo que mucho más lentamente. Normalmente, los cálculos en su computadora se realizan usando una CPU que es capaz de realizar una gran variedad de cálculos en rápida sucesión. Una tarjeta gráfica tiene una GPU (unidad de procesamiento de gráficos) que está optimizada para realizar rápidamente un conjunto más limitado de operaciones en diferentes datos al mismo tiempo. En lugar de sumar un solo par de números a la vez, ahora puede sumar miles de pares de números al mismo tiempo. Ahora imagine tratar de sumar pares aleatorios de números y detenerse si alguno de los pares suma 100. Incluso si una GPU tarda 10 veces más en hacer una suma que una CPU, si puede hacer más de 10 veces más sumas al mismo tiempo como CPU, es s aún más rápido en esta tarea. Esta es una gran simplificación de lo que es la minería, pero muestra cómo las GPU pueden ser mucho más rápidas que las CPU. Esta es una de las razones por las que las personas usan GPU en lugar de CPU. Otras razones incluyen la eficiencia energética (para esta tarea especializada), el costo por cómputo por segundo y el espacio físico.

CUDA y OpenCL

Entonces, ¿cómo encajan CUDA y OpenCL? Son un lenguaje común para programar tarjetas gráficas (nVidia solo en el primer caso en este momento, AFAIK). Al igual que un teléfono inteligente y su computadora de escritorio típica son muy diferentes pero ambos pueden mostrar páginas web escritas en el mismo idioma, CUDA y OpenCL permiten que diferentes GPU reciban instrucciones para llevar a cabo un conjunto particular de operaciones. Estos simplemente son los estándares que los fabricantes de tarjetas gráficas han establecido y no tienen relación directa con Ethereum.

Alternativas

Las alternativas al uso de CUDA y OpenCL incluyen la minería en una CPU, la creación personalizada de un chip para realizar los cálculos de Ethereum, un chip integrado específico de la aplicación (ASIC), como se usa ahora para Bitcoin, el uso de lápiz y papel, o el desarrollo de un Nuevo lenguaje de programación para GPU.

Como estoy seguro de que una de sus próximas preguntas es por qué los ASIC no se usan para minar Ethereum sino para Bitcoin, me adelantaré: los ASIC cuestan mucho dinero para construir y, debido a que hay un gran costo para producir incluso un solo ASIC, no tiene sentido económico diseñar/construir algo para aplicaciones de bajo volumen. Pero si un ASIC es tan caro, ¿por qué se usa para Bitcoin? Los ASIC se pueden optimizar para realizar secuencias particulares de operaciones o hacer ciertas cosas. Pero la parte costosa de las tarjetas gráficas utilizadas para la minería que es relevante para Ethereum es la memoria de la tarjeta (no la GPU, que es parte de la tarjeta en sí). La memoria es costosa de fabricar; como tal, los ahorros de costos y las ganancias de eficiencia del diseño personalizado de un ASIC no son tan buenos como lo son para el algoritmo hash que Bitcoin usa para extraer bloques.