Cl aberto em intel

9

Como compilar e executar códigos cl abertos em processadores intel i5 com unidade intel hd 4000 gpu ??? O open cl foi instalado em / opt / intel / opencl e a versão é ubuntu 12.04. Qualquer ajuda seria de grande ajuda ... Obrigado

Piyush Kumar
fonte
Que problema você está encontrando?
Thomas
de modo que este emulador funciona para intel ....
Piyush Kumar
@ Thomas, quando estou executando o arquivo, não está encontrando nenhum dos arquivos ou biblioteca ... erro diz que esse arquivo ou diretório CL / cl.h não foi encontrado. Também existe um arquivo chamado kernelBuilder, quando estou tentando executá-lo, um prompt aparece, mas para e informa que o aviso do GCOnf, o cliente não conseguiu se conectar ao Daemon do barramento D e não recebeu uma resposta ....
Piyush Kumar
@PiyushKumar sudo apt-get install opencl-headerstalvez. Depois disso, ele deve encontrar o libOpenCL.so, mas eu tive grandes problemas no passado com a Intel ao não registrar a biblioteca e causar erros de vinculação.
Thomas
@Thomas, vou tentar isso ... Acho que eu poderia usar ur experiances
Piyush Kumar

Respostas:

10

Primeiro:
sudo apt-get install beignet opencl-headers

Adicione a pasta beignet ao caminho de pesquisa da sua biblioteca:

sudo su
echo "/usr/lib/beignet/" > /etc/ld.so.conf.d/beignet.conf
ldconfig
exit

Obtenha um binário de teste simples:

git clone https://github.com/vpereira/CapsBasic-beignet

Edite o makefile para ficar mais parecido com isto:

all: capsbasic

capsbasic: capsbasic.cpp Makefile
    g++ capsbasic.cpp -lcl -ocapsbasic -I/usr/include -L/usr/lib/beignet

clean:
    rm -f capsbasic

Ai está. OpenCL working-ish para a família intel HD de placas de vídeo ...

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)

./capsbasic

Number of available platforms: 1
Platform names:
    [0] Experiment Intel Gen OCL Driver [Selected]
Number of devices available for each type:
    CL_DEVICE_TYPE_CPU: 0
    CL_DEVICE_TYPE_GPU: 1
    CL_DEVICE_TYPE_ACCELERATOR: 0

*** Detailed information for each device ***

CL_DEVICE_TYPE_GPU[0]
    CL_DEVICE_NAME: Intel HD Graphics Family
    CL_DEVICE_AVAILABLE: 1
    CL_DEVICE_VENDOR: Intel
    CL_DEVICE_PROFILE: FULL_PROFILE
    CL_DEVICE_VERSION: OpenCL 1.1
    CL_DRIVER_VERSION: 0.2
    CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.1
    CL_DEVICE_MAX_COMPUTE_UNITS: 128
    CL_DEVICE_MAX_CLOCK_FREQUENCY: 1000
    CL_DEVICE_MAX_WORK_GROUP_SIZE: 512
    CL_DEVICE_ADDRESS_BITS: 32
    CL_DEVICE_MEM_BASE_ADDR_ALIGN: 32
    CL_DEVICE_MAX_MEM_ALLOC_SIZE: 134217728
    CL_DEVICE_GLOBAL_MEM_SIZE: 4
    CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 65536
    CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 8192
    CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128
    CL_DEVICE_LOCAL_MEM_SIZE: 65536
    CL_DEVICE_PROFILING_TIMER_RESOLUTION: 80
    CL_DEVICE_IMAGE_SUPPORT: 1
    CL_DEVICE_ERROR_CORRECTION_SUPPORT: 0
    CL_DEVICE_HOST_UNIFIED_MEMORY: 0
    CL_DEVICE_EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp64 cl_khr_icd cl_khr_gl_sharing
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 0
    CL_DEVICE_NATIVE_VECTOR_WIDTH_INT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: 16
RobotHumans
fonte
11
Obrigado, mas, de acordo com a Intel, eles não suportam o OpenCL no HD 4000 para Linux: OpenCL SDK 1.2 para Linux, sem o Xeon? . Que tipo de desempenho você está obtendo?
Nealmcb
11
Ah - agora vejo que o README.txt do beignet explica que é uma alternativa ao OpenCL SDK da Intel, que realmente suporta o HD 4000. Obrigado !! Observe que as pessoas também precisam realmente executar make.... A necessidade de executar ldconfigevidências de um problema com o pacote?
Nellmcb
2
O desempenho, como diz o opencl, é muito ruim e muito complicado. Às vezes, o código executado em outras implementações de opencl apenas trava ou falha. Ele permite que você construa coisas triviais de teste sem ir para uma plataforma de computação.
precisa saber é o seguinte
Não acho que a necessidade de adicioná-lo ao caminho de pesquisa da biblioteca seja um problema com a biblioteca. Se você estiver usando o OpenCL, a suposição é que você possui algum conhecimento técnico. Pessoalmente, eu gostaria que os pacotes OpenCL fossem todos instaláveis ​​simultaneamente e você pudesse alternar qual biblioteca foi incluída no seu caminho de pesquisa e executar novamente o ldconfig para apontar para outra. Isso poderia ser útil se você tivesse uma caixa de teste com todas as três "marcas" de chipset de vídeo como ambiente de teste e tivesse desenvolvido uma maneira de fazer benchmark ou apenas testar seu código em todos os destinos possíveis.
precisa saber é o seguinte
11
Isso faz sentido. Eu estaria mais a par de algo como dar um tapa no jockey, atualizar alternativas ou algo assim. Alternar bibliotecas com algo que deveria alternar bibliotecas? Claro, isso parece uma boa ideia para uma situação insustentável.
usar o seguinte comando
0

Para compilar, você precisa de um compilador como o gcc. Você pode baixar o gcc de seu repositório. (escolha o maior número de versão para mais recursos do C ++ 11).

$> sudo apt-get install gcc-4.7

Depois disso, você deve vincular sua biblioteca OpenCL ao aplicativo que está compilando. Digamos que o código do aplicativo Host (main.c) e o código do aplicativo kernel (kernel.cl) residam em uma pasta chamada test. Você deve fazer o seguinte:

$ test> gcc -I / opt / intel / include -L / opt / intel / lib / [x86 ou x86_64] / main.c -o a.out

Deve cuidar da compilação. Você deve executar a saída como:

$ test> ./ a.out

e cuide de qualquer erro de tempo de execução que você possa receber (incluindo a correção do caminho para o kernel.cl etc).

user1855051
fonte