Cómo comstackr OpenCL en Ubuntu?

Pregunta: ¿Qué encabezados y controladores necesarios se necesitan y dónde los obtendría para comstackr CL abierto en ubuntu usando gcc / g ++?


Información: durante un tiempo he estado tropezando tratando de descubrir cómo instalar CL abierta en mi escritorio y si es posible mi netbook. Hay un par de tutoriales que he intentado pero ninguno parece funcionar. Además, todos simplemente explican paso por paso si realmente explican por qué, o incluso peor, son específicos de un IDE en particular, por lo que debe aprender el IDE para poder hacer cualquier cosa.

Así que tengo una NVIDA GX465 en mi escritorio y gráficos integrados en mi netbook. mi prioridad es, por supuesto, mi escritorio, la netbook es solo una conveniencia para fines de desarrollo (ambos ejecutan Ubuntu 11.04 y estarán ejecutando 11.10 tan pronto como salga a la luz). ¿Puede alguien decirme qué es exactamente lo que se necesita para obtenerlo, así puedo comstackr código y ejecutarlo? y si también pudieras explicar qué hace cada pieza para que pueda entender su importancia.

Para comstackr y ejecutar código OpenCL bajo Linux, necesitará cuatro cosas:

1) Un controlador NVIDIA que admite OpenCL. Los controladores empaquetados con Ubuntu son algo antiguos, pero aún deberían funcionar bien. A menos que tenga una necesidad explícita de controladores actuales, debe quedarse con los que vienen con Ubuntu. Para que quede claro, estos son los mismos controladores instalados a través del administrador de controladores restringido. Las librerías OpenCL se envían con el controlador, por lo que solo ejecutar los progtwigs de OpenCL debe ser suficiente.

2) El juego de herramientas de CUDA. Esto incluye los encabezados necesarios para comstackr el código OpenCL. Instalar esto en la ubicación predeterminada.

3) El GPU Computing SDK (opcional). Esto incluye varias herramientas de soporte específicas de NVIDIA, así como muestras de código OpenCL.

Los tres de estos artículos se pueden encontrar en http://developer.nvidia.com/cuda-toolkit-40 .

4) enlaces de OpenCL C ++ (opcional). Extrañamente, no están incluidos con CUDA Toolkit, pero en caso de que utilice C ++, podrían hacer que su código sea mucho más confiable. Puede descargarlos desde http://www.khronos.org/registry/cl/api/1.1/cl.hpp , y simplemente colocarlos en / usr / local / cuda / include / CL en su escritorio.

Una vez que estén instalados, deberá realizar algunos pasos más para poder comstackr y ejecutar OpenCL fuera del SDK de NVIDIA.

1) El conjunto de herramientas de CUDA incluirá los encabezados de OpenCL (enumerados en http://www.khronos.org/registry/cl/ ), probablemente estén en el directorio / usr / local / cuda / include / CL. Para que estos encabezados estén disponibles en todo el sistema, debe vincular este directorio a / usr / include /, de modo que se pueda acceder a ellos como / usr / include / CL / [headerfilename]. En lugar de crear un enlace simbólico, podría agregar / usr / local / cuda / include a sus variables de entorno C_INCLUDE_PATH y CPLUS_INCLUDE_PATH , pero esto solo duraría para la sesión currest.

2) Asegúrese de que la biblioteca OpenCL (libOpenCL.so) esté presente en / usr / lib. Esto debería haber sido implementado por el conductor, por lo que no debería tener que hacer nada.

Estás listo para escribir código. Asegúrese de incluir CL/cl.h (o CL/cl.hpp si desea utilizar la versión C ++ de la API) en cualquier progtwig C (++) que realice llamadas API OpenCL. Cuando compile, asegúrese de vincularlo con la biblioteca OpenCL (pase gcc el -lOpenCL ).

En cuanto a su netbook, los gráficos integrados generalmente no admiten OpenCL. En teoría, la Aceleración de APP de AMD admite la ejecución de OpenCL en la CPU, pero no está claro si realmente funciona.

Ubuntu 15.10 con NVIDIA NVS 5400M, Lenovo T430

 sudo apt-get install nvidia-352 nvidia-352-dev nvidia-prime nvidia-modprobe sudo ln -s /usr/include/nvidia-352/GL /usr/local/include sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/local/lib/libOpenCL.so 

Luego usa el encabezado como:

 #include  

Y comstackr con:

 gcc -o main main.c -lOpenCL 

Notas:

Realmente recomiendo actualizar a 15.10 para que esto funcione: nunca antes lo había logrado.

Recientemente utilicé un proceso similar en una comstackción limpia en Linux, configurando OpenCL con una tarjeta NVIDIA.

Pasos que tomé:

1 – instala el controlador NVIDIA.

2 – instale el kit de herramientas CUDA – (siguiendo los pasos de la guía, hay muchas maneras de hacerlo, pero utilicé el instalador .deb, la guía se puede encontrar aquí: http://docs.nvidia.com/cuda/ cuda-getting-started-guide-for-linux / )

3 – usando apt-get instala los encabezados OpenCL. Comando: sudo apt-get install opencl-headers

Utilizando el encabezado: CL/opencl.h , pude comstackr el código C / C ++ usando gcc / g ++ y la bandera: -lOpenCL

Explicación de los pasos

1 – Auto explicativo

2 – El kit de herramientas CUDA también instala la biblioteca OpenCL (libOpencl.so) pero no el encabezado (al menos no en mi sistema)

3 – por lo tanto, el encabezado se puede instalar con apt-get. Los archivos de encabezado se almacenan en el directorio / usr / include / CL

Cosas que funcionaron para mí en Ubuntu 16.04

He instalado OpenCL en:

CPU SandyBridge: solo CPU

GPU IvyBridge

Nvidia GTX 950

instalar paquetes

Paquetes generics de ubuntu para OpenCL

Instalación básica sudo apt install ocl-icd-libopencl1 sudo apt install opencl-headers sudo apt install clinfo

Paquete que permite comstackr código OpenCL (1.2 creo)

Necesario para vincular y comstackr sudo apt install ocl-icd-opencl-dev

Para el núcleo Intel GT

Paquete que habilita runnig openCL en Intel GT, IvyBridge y hasta

sudo apt install beignet

Para SandyBridge Intel CPU y otros posibles

Descargue este archivo OpenCL ™ Runtime 16.1.1 para procesadores Intel® Core ™ e Intel® Xeon® para Ubuntu * (64 bits) En https://software.intel.com/en-us/articles/opencl-drivers#latest_linux_SDK_release

Instalar paquetes para convertir rpm a deb sudo apt-get install -y rpm alien libnuma1

Descargue el archivo descargado tar -xvf opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz cd opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25/rpm/ archivos rpm a deb fakeroot alien --to-deb opencl-1.2-base-6.4.0.25-1.x86_64.rpm fakeroot alien --to-deb opencl-1.2-intel-cpu-6.4.0.25-1.x86_64.rpm Instalar paquetes .deb sudo dpkg -i opencl-1.2-base_6.4.0.25-2_amd64.deb sudo dpkg -i opencl-1.2-intel-cpu_6.4.0.25-2_amd64.deb Toque el archivo de configuración local sudo touch /etc/ld.so.conf.d/intelOpenCL.conf Abra el archivo sudo vim /etc/ld.so.conf.d/intelOpenCL.conf y agregue la línea

/opt/intel/opencl-1.2-6.4.0.25/lib64/clinfo

Cree un directorio de proveedores y agregue intel.icd sudo mkdir -p /etc/OpenCL/vendors sudo ln /opt/intel/opencl-1.2-6.4.0.25/etc/intel64.icd /etc/OpenCL/vendors/intel64.icd sudo ldconfig

prueba si esto funcionó

clinfo debería listar sus dispositivos Descargar este archivo

https://codeload.github.com/hpc12/tools/tar.gz/master

Ejecute este código para asegurarse de que todo funciona tar xzvf tools-master.tar.gz cd tools-master make ./print-devices ./cl-demo 1000 10 Esto debería imprimir BUENO al final

Para Nvidia

instalar los controladores de NVIDIA (utilicé 370), esto debería incluir todos los dirvers de tiempo de ejecución