libcudart no sistema sem uma GPU

0

Eu tenho código que, baseado na disponibilidade de GPUs, executa um kernel da GPU ou o mesmo código na CPU. Ele faz isso em tempo de execução e o programa está sempre ligado ao CUDA.

No entanto, posso querer rodar em computadores que não tenham quaisquer GPUs. Nós tentamos instalar o CUDA Toolkit no computador, mas libcudart está faltando. Como obtenho isso?

Ambas as máquinas de desktop (que possuem GPUs) e as máquinas de grade (que não) estão executando o RHEL 6.7 e usamos [literalmente] o mesmo instalador CUDA para ambos, mas não selecionamos o driver na grade ( já que não há GPU e provavelmente gritaria com a gente).

    
por iAdjunct 08.04.2016 / 16:19

1 resposta

1

Se o driver nvidia não conseguir acessar um dispositivo nvidia ou se não houver um driver nvidia, o instalador Driver do CUDA falhará. Parte do driver CUDA parece ser a coleção de bibliotecas (como libcudart e libcuda ), que não são instaladas.

No entanto, se você instalar o driver CUDA em outro computador e fizer

cp -r /usr/local/cuda/lib64/ /somewhere/else/cuda_libs
cp /usr/lib64/libcuda.so.1 /somewhere/else/cuda_libs/libcuda.so.1
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/somewhere/else/cuda_libs"

Em seguida, o outro computador pode usar as bibliotecas cuda. Obviamente, isso não cria magicamente um dispositivo e você não deve tentar usar o dito dispositivo inexistente, mas pelo menos seu código que liga a cuda funcionará.

Eu testei isso com sucesso entre os sistemas RHEL 6.7, embora eu não saiba o quão onipresente esta solução funcionará.

    
por 08.04.2016 / 18:48