Как установить CUDA в Google Colab - невозможно инициализировать CUDA без библиотеки ATen_cuda - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь использовать cuda в Goolge Colab, но при запуске моей программы я получаю следующую ошибку:

RuntimeError: Невозможно инициализировать CUDA без библиотеки ATen_cuda.PyTorch разделяет свой бэкэнд на две общие библиотеки: библиотеку ЦП и библиотеку CUDA;эта ошибка произошла из-за того, что вы пытаетесь использовать некоторые функции CUDA, но библиотека CUDA по какой-то причине не была загружена динамическим компоновщиком.НЕОБХОДИМО загрузить библиотеку CUDA, ДАЖЕ ЕСЛИ вы не используете символы из библиотеки CUDA напрямую!Одним из распространенных виновников является отсутствие -Wl, - нет необходимости в аргументах ссылки;многие динамические линкеры удаляют динамические библиотечные зависимости, если вы не зависите ни от одного из их символов.Вы можете проверить, произошло ли это с помощью ldd в вашем двоичном файле, чтобы узнать, есть ли зависимость от библиотеки * _cuda.so.

У меня установлены следующие библиотеки.

from os.path import exists
from wheel.pep425tags import get_abbr_impl, get_impl_ver, get_abi_tag
platform = '{}{}-{}'.format(get_abbr_impl(), get_impl_ver(), get_abi_tag())
cuda_output = !ldconfig -p|grep cudart.so|sed -e 's/.*\.\([0-9]*\)\.\([0-9]*\)$/cu\1\2/'
accelerator = cuda_output[0] if exists('/dev/nvidia0') else 'cpu'

!pip install -q http://download.pytorch.org/whl/{accelerator}/torch-0.4.1-

{platform}-linux_x86_64.whl torchvision
%matplotlib inline
%config InlineBackend.figure_format = 'retina'

import matplotlib.pyplot as plt
import time
import torch
from torch import nn
from torch import optim
import torch.nn.functional as F
from torchvision import datasets, transforms, models
!pip install Pillow==5.3.0
# import the new one
import PIL

И я пытаюсь запустить следующий код.

for device in ['cpu', 'cuda']:

    criterion = nn.NLLLoss()
    # Only train the classifier parameters, feature parameters are frozen
    optimizer = optim.Adam(model.classifier.parameters(), lr=0.001)

    model.to(device)

    for ii, (inputs, labels) in enumerate(trainloader):

        # Move input and label tensors to the GPU
        inputs, labels = inputs.to(device), labels.to(device)

        start = time.time()

        outputs = model.forward(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        if ii==3:
            break

    print(f"Device = {device}; Time per batch: {(time.time() - start)/3:.3f} seconds")

1 Ответ

0 голосов
/ 27 декабря 2018

Вы выбрали среду выполнения в качестве графического процессора?проверить время выполнения> изменить тип времени выполнения> выбрать аппаратный ускоритель в качестве графического процессора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...