cuda wolfram-mathematica opencl nvidia

cuda - Número de núcleos en la GPU NVIDIA K20 en Mathematica



wolfram-mathematica opencl (2)

Estoy usando una GPU NVIDIA K20 en Mathematica. El documento técnico para el K20 establece las siguientes especificaciones:

  1. 2496 núcleos de precisión simple (192 por multiprocesador x 13 multiprocesadores)
  2. 832 núcleos de doble precisión (64 por multiprocesador x 13 multiprocesadores)
  3. 416 unidades de función especial (32 por multiprocesador x 13 multiprocesadores)

Sin embargo, cuando lance Mathematica y miro las especificaciones de la GPU después de cargar OpenCL o CUDA, dice que tengo solo 416 núcleos (adjunté una captura de pantalla de los comandos de Mathematica y las especificaciones informadas). ¿Está esto de alguna manera relacionado con el número de núcleos de doble precisión o unidades de funciones especiales? Mathematica informa estas especificaciones antes de decirle qué tipo de código escribiré (por ejemplo, doble precisión, funciones trascendentales).


Es mucho más probable que su Mathematica todavía no conozca la arquitectura de Kepler y, por lo tanto, traduce el recuento de multiprocesadores en el recuento de núcleos incorrectamente.

Dado que los "núcleos" son en su mayoría una invención de marketing de todos modos, puede ignorar ese número de manera segura. Mathematica aún usará toda la GPU (aunque una versión compatible con Kepler aún puede traer cierta aceleración a través de otras optimizaciones).


Este es un artefacto OpenCL, no un problema de Mathematica. Mathematica habla con el dispositivo GPU a través de una API de controlador de proveedor como CUDA o OpenCL. En este caso, la información proviene de una llamada a OpenCL

OpenClGetDeviceInfo (..)

con una solicitud para CL_DEVICE_MAX_COMPUTE_UNITS

El controlador OpenCL dice que hay 13 SMU que pueden ejecutar 32 subprocesos cada una. De ahí el número de 416 unidades de cálculo. La especificación de OpenCL es vaga sobre lo que es una unidad de cálculo. Entonces OpenCl está dando la suma del tamaño de deformación SMU *. OpenCL hace algo similar en AMD que también informa 28 Unidades Compute para un 7950 que tiene 1792 unidades de transmisión. AMD 79xx ejecuta 64 hilos por SMU.