Saltar al contenido

¿Cómo compilar OpenCL en Ubuntu?

No busques más por otras webs ya que llegaste al lugar exacto, contamos con la respuesta que necesitas pero sin problemas.

Solución:

Para compilar y ejecutar código OpenCL en Linux, necesitará cuatro cosas:

1) Un controlador NVIDIA que admita 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 seguir con los empaquetados con Ubuntu. Para ser claros, estos son los mismos controladores instalados a través del administrador de controladores restringidos. Las bibliotecas OpenCL se envían con el controlador, por lo que solo ejecutar el controlador de los programas OpenCL debería ser suficiente.

2) El conjunto de herramientas de CUDA. Esto incluye los encabezados necesarios para compilar código OpenCL. Instale esto en la ubicación predeterminada.

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

Estos tres elementos se pueden encontrar en http://developer.nvidia.com/cuda-toolkit-40.

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

Una vez instalados, deberá realizar algunos pasos más para poder compilar y ejecutar OpenCL fuera del SDK de NVIDIA.

1) El kit de herramientas de CUDA habrá incluido 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, puede agregar / usr / local / cuda / include a su C_INCLUDE_PATH y CPLUS_INCLUDE_PATH variables de entorno, pero esto duraría solo para la sesión más actual.

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úrate de incluir CL/cl.h (o CL/cl.hpp si desea utilizar la versión C ++ de la API) en cualquier programa C (++) que realice llamadas a la API OpenCL. Cuando compile, asegúrese de vincular contra la biblioteca OpenCL (pase gcc el -lOpenCL bandera).

En cuanto a su netbook, los gráficos integrados generalmente no son compatibles con OpenCL. En teoría, la aceleración de aplicaciones de AMD admite la ejecución de OpenCL en la CPU, pero no está claro que realmente funcione.

Ubuntu 20.04 con NVIDIA Quadro M1200, Lenovo P51

La integración del software mejoró mucho desde la última vez que lo intenté, así que haré una actualización.

Primero, al menos para los gráficos, necesitaba ajustar algunas configuraciones de BIOS como se menciona en, no estoy seguro de que sea necesario para OpenCL: https://askubuntu.com/questions/973605/ubuntu-17-10-boot-stuck-at-message- iniciado-nvidia-persistence-daemon-after-ins / 976578 # 976578

Luego, busco e instalo el controlador más reciente disponible:

apt-cache search nvidia-driver
sudo apt install nvidia-driver-435 nvidia-opencl-dev

También puede buscar en:

software-properties-gtk

en la pestaña “Controladores adicionales”.

Ahora puedo compilar y ejecutar el siguiente programa de prueba:

C Principal

#include 
#include 
#include 

#define CL_TARGET_OPENCL_VERSION 220
#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
#include 

int main() 
    cl_command_queue command_queue;
    cl_context context;
    cl_device_id device;
    cl_int input = 1;
    cl_int kernel_result = 0;
    cl_kernel kernel;
    cl_mem buffer;
    cl_platform_id platform;
    cl_program program;
    const char *source = "__kernel void increment(int in, __global int* out)  out[0] = in + 1; ";

    clGetPlatformIDs(1, &platform, NULL);
    clGetDeviceIDs(platform, CL_DEVICE_TYPE_ALL, 1, &device, NULL);
    context = clCreateContext(NULL, 1, &device, NULL, NULL, NULL);
    command_queue = clCreateCommandQueue(context, device, 0, NULL);
    buffer = clCreateBuffer(context, CL_MEM_READ_WRITE 

GitHub en sentido ascendente

con:

gcc -ggdb3  -O0 -Wall -Wextra -pthread -std=c11 
  -pedantic-errors -o main.out main.c -lm -pthread -lOpenCL
./main.out

Notas:

  • encuentre su modelo de GPU: https://askubuntu.com/questions/72766/how-do-i-find-out-the-model-of-my-graphics-card
  • prueba que el controlador está funcionando: https://askubuntu.com/questions/68028/how-do-i-check-if-ubuntu-is-using-my-nvidia-graphics-card
  • respuesta similar para CUDA: https://askubuntu.com/questions/917356/how-to-verify-cuda-installation-in-16-04/1215237#1215237

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 compila con:

gcc -o main main.c -lOpenCL

Notas:

  • no instale el nvidia-current paquete. Es viejo. Cualquiera apt-cache search nvidia y obtén el último, o usa software-properties-gtk Pestaña “Controladores adicionales”.

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

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 genéricos 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 compilar código OpenCL (1.2 creo)

Necesario vincular y compilar

sudo apt install ocl-icd-opencl-dev

Para el núcleo Intel GT

Paquete que permite ejecutar openCL en Intel GT, IvyBridge y superiores


sudo apt install beignet

Para CPU Intel SandyBridge 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 en deb

sudo apt-get install -y rpm alien libnuma1

Untar 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/

Convertir archivos rpm en 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

Abre el archivo

sudo vim /etc/ld.so.conf.d/intelOpenCL.conf

y agrega 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 debe listar sus dispositivos. Descargar este archivo

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

Ejecute este código para asegurarse de que todo funcione

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

instale los controladores de nvidia (usé 370), esto debería incluir todos los directorios de tiempo de ejecución

Si te gustó nuestro trabajo, tienes la libertad de dejar una sección acerca de qué le añadirías a esta sección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *