質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • Python

    7972questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Visual Studio

    1832questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

visual stadio 2017でpythonを動かすときにGPUを使いたいのですがエラーが出てしまいます。どなたか解決方法を教えていただけないでしょうか?

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 323

SioRyu

score 3

大学のゼミで一か月ほど前からpythonの勉強を始めました。
研究室のパソコンでは動いたのですが自宅のPCで試したところCPUを使う動作では動いてくれたのですがGPUを使うと

 エラーメッセージ

RuntimeError: CUDA environment is not correctly set up
(see https://github.com/chainer/chainer#installation).No module named 'cupy'

というエラーが出ます
自分でいろいろ試して
イメージ説明
この二つをPCにインストールしたのですがやはり同じエラーが出ます
どうやって直せばいいのでしょうか?
ちなみに今回実行しているプログラムはすでに完成しているものをコピペしたものです。

# coding: utf-8
# A feedforward neural network for the MNIST problem.
# Copyright (C) 2016 Atsumi Laboratory. All rights reserved.

import numpy as np
from numpy.core.multiarray import dtype
import chainer
from chainer import optimizers, cuda, datasets, Variable, Chain
import chainer.functions as F
import chainer.links as L
import time

class Fnn(Chain):
    """3層フィードフォワードネットワーク
    """
    def __init__(self, num_of_input_units, num_of_hidden_units, num_of_output_units):
        """3層フィードフォワードネットワークの生成
           Args:
            num_of_input_units (int): 入力層ユニット数
            num_of_hidden_units (int): 隠れ層ユニット数
            num_of_output_units (int): 出力層ユニット数
        """
        super().__init__(
            l1 = L.Linear(num_of_input_units, num_of_hidden_units),
            l2 = L.Linear(num_of_hidden_units, num_of_hidden_units),
            l3 = L.Linear(num_of_hidden_units, num_of_output_units),
        )
    #
    def __call__(self, x, t):
        """順伝播による誤差計算
           Args:
            x (a variable of variables of floats): 入力ミニバッチ
            t (a variable of variables of int): 入力ミニバッチに対する教師出力
           Returns:
            loss (float): 誤差(損失)
        """
        y = self.forward(x)
        loss = F.softmax_cross_entropy(y, t) # softmax function & cross entropy error function
        return loss
    #
    def forward(self, x):
        """順伝播
           Args:
            x (a variable of variables of floats): 入力ミニバッチ
           Returns:
            y (a variable of variables of floats): 入力ミニバッチに対する出力
        """
        h1 = F.relu(self.l1(x))  # Rectified linear function
        h2 = F.relu(self.l2(h1)) # Rectified linear function
        y = self.l3(h2)          # Identity mapping    
        return y
#
def dataset():
    """MNISTデータセット設定
       Returns:
        train_data_i (a list of lists of floats): 訓練データの入力配列
        train_data_t (a list of ints): 訓練データの教師配列
        test_data_i (a list of lists of floats): テストデータの入力配列
        test_data_t (a list of ints): テストデータの教師配列
        size_of_train_data (int): 訓練データ数
        size_of_test_data (int): テストデータ数
    """
    train_data, test_data = datasets.get_mnist()
    size_of_train_data = len(train_data)
    size_of_test_data = len(test_data)

    train_data_i = [train_data[i][0] for i in range(size_of_train_data)]
    train_data_t = [train_data[i][1] for i in range(size_of_train_data)]
    print(train_data[0][0].dtype)
    print(train_data[0][1].dtype)
    test_data_i = [test_data[i][0] for i in range(size_of_test_data)]
    test_data_t = [test_data[i][1] for i in range(size_of_test_data)]
    return train_data_i, train_data_t, test_data_i, test_data_t, size_of_train_data, size_of_test_data
#
def learn(model, optimizer, num_of_epoch, size_of_minibatch, train_data_i, train_data_t, size_of_train_data, xp):
    """学習
       Args:
        model (Fnn): FNNモデル
        optimizer (Optimizer): オプティマイザ
        num_of_epoch (int): エポック数
        size_of_minibatch (int): ミニバッチサイズ
        train_data_i (a list of lists of floats): 訓練データの入力配列
        train_data_t (a list of ints): 訓練データの教師配列
        size_of_train_data (int): 訓練データ数
        xp (numpy or cuda.cupy): numpy or cuda.cupy
    """
    for epoch in range(num_of_epoch):
        print(' epoch='+str(epoch), end=' ')
        indexes = np.random.permutation(size_of_train_data)
        sum_loss = 0
        for i in range(0, size_of_train_data, size_of_minibatch):
            x = Variable(xp.array([train_data_i[ind] for ind in indexes[i:i+size_of_minibatch]], dtype=xp.float32))
            t = Variable(xp.array([train_data_t[ind] for ind in indexes[i:i+size_of_minibatch]], dtype=xp.int32))
            model.zerograds()
            loss = model(x, t)
            loss.backward()
            optimizer.update()
            sum_loss += loss.data * len(x.data)
        print(', mean_loss='+str(sum_loss/size_of_train_data))
#
def test(model, size_of_minibatch, test_data_i, test_data_t, size_of_test_data, xp):
    """テスト
       Args:
        model (Fnn): FNNモデル
        size_of_minibatch (int): ミニバッチサイズ
        test_data_i (a list of lists of floats): テストデータの入力配列
        test_data_t (a list of ints): テストデータの教師配列
        size_of_test_data (int): テストデータ数
        xp (numpy or cuda.cupy): numpy or cuda.cupy
       Returns:
        mean_loss (float): 平均誤差(損失)
        accuracy (float): アキュラシー
    """
    sum_loss, sum_accuracy = 0, 0
    for i in range(0, size_of_test_data, size_of_minibatch):
        x = Variable(xp.array(test_data_i[i:i+size_of_minibatch], dtype=xp.float32))
        t = Variable(xp.array(test_data_t[i:i+size_of_minibatch], dtype=xp.int32))
        with chainer.no_backprop_mode():
            y = model.forward(x)
        sum_loss += F.softmax_cross_entropy(y, t).data * len(x.data)
        sum_accuracy += F.accuracy(y, t).data * len(x.data)
    mean_loss = sum_loss/size_of_test_data
    accuracy = sum_accuracy/size_of_test_data
    return mean_loss, accuracy
#
if __name__ == '__main__':
    # パラメータ設定
    num_of_input_units = 784
    num_of_hidden_units = 1000
    num_of_output_units = 10
    num_of_epoch = 20
    size_of_minibatch = 100
    use_gpu = True
    # GPUの準備
    if use_gpu:
        cuda.get_device(0).use()
        xp = cuda.cupy
    else:
        xp = np
    # 訓練データとテストデータの準備
    print('MNIST dataset preparation')
    train_data_i, train_data_t, test_data_i, test_data_t, size_of_train_data, size_of_test_data = dataset()
    print(' size of train data = '+str(size_of_train_data))
    print(' size of test data = '+str(size_of_test_data))
    # モデルの作成
    print('Model configuration')
    model = Fnn(num_of_input_units, num_of_hidden_units, num_of_output_units)
    if use_gpu:
        model.to_gpu()
    optimizer = optimizers.SGD()
    optimizer.setup(model)
    # 学習
    print('Learning')
    start_time = time.time()
    learn(model, optimizer, num_of_epoch, size_of_minibatch, train_data_i, train_data_t, size_of_train_data, xp)
    elapsed_time = time.time() - start_time
    print(' elapsed time for learning: {} [sec]'.format(elapsed_time))
    # テスト
    print('Test')
    mean_loss, accuracy = test(model, size_of_minibatch, test_data_i, test_data_t, size_of_test_data, xp)
    print(' mean_loss='+str(mean_loss)+'\n accuracy='+str(accuracy))


こちらになります
GPUの準備と書かれているところのすぐ上にあるuse_gpu = TrueとなっているところをFalseと直すとCPUで処理されます

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • キャンセル

  • wakame

    2018/06/14 17:48

    cupyのドキュメントを見る限りcuda 9.2は対応しているようには見えません。

    キャンセル

回答 3

+2

この内容を見るとサポートしていそうです。
https://www.geforce.com/hardware/technology/cuda/supported-gpus

いったん、cuda関連のモジュールをアンインストールして、マニュアルの記載通りにすればうまくいくかもしれません

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/16 15:01

    cuda関連を全部アンインストールした後に再びcuda9.2をインストールしようとすると今度は
    Nvidiaインストーラーが失敗しました
    と表示されます
    これの治し方もいろいろ調べて試しているのですがなかなか治ってくれません。
    もし可能であれば教えていただけると嬉しいです
    ちなみに、9.0をインストールしようとしても同じように
    Nvidiaインストーラーが失敗しました
    と表示されます

    キャンセル

check解決した方法

0

回答してくださったR.Shigemoriさんの言う通りcuda関連のソフトをすべてアンインストールするというのは部分的にあっていました
実際に解決した手順は
NVidia関連のドライバーすべてのアンインストールでした。
すべてのすでに入っているドライバー(グラフィックスドライバーも含めて)
すべてアンインストール後パソコンの再起動が必要になります。
その際一度再起動してみると、原因はわからないのですが、また三つほどNVIDIAのがアンインストールできていないのがwindows10の場合設定→アプリと機能のところで確認できます。
もう一度すべてアンインストールしますが、今度はすぐには再起動せずにcuda9.0のインストールを始めると今度はうまくいきました。
cuda9.0のインストール完了後
再びプログラムを起動すると今度はまた違うエラーが出ますがこのエラーはcudnn7.0をインストールすることで解決します

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

エラーメッセージによると「cupyというモジュールがない」ためです。cupyはcuda上でnumpyの処理を行うモジュールでおそらくchainerが裏側で使用しているのではないでしょうか。
よって、このcupyを自身の環境に合わせてインストールすれば解決するかと思います。エラーメッセージによると、「https://github.com/chainer/chainer#installationを参照」となっているので、詳しいことはそちらを見るといいかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/13 19:45

    いろいろと試したのですがどれもダメで、試しにcupyをインストールしようとすると

    ----- 'cupy==4.1.0' をインストールしています -----
    Collecting cupy==4.1.0
    Using cached https://files.pythonhosted.org/packages/8f/89/bba5b25c8139f483dd3e3bdafb95e84b6cb1f9babbcdd230c7231c395171/cupy-4.1.0.tar.gz
    Complete output from command python setup.py egg_info:
    Options: {'package_name': 'cupy', 'long_description': None, 'wheel_libs': [], 'no_rpath': False, 'profile': False, 'linetrace': False, 'annotate': False, 'no_cuda': False}
    **************************************************
    *** WARNING: nvcc not in path.
    *** WARNING: Please set path to nvcc.
    **************************************************

    -------- Configuring Module: cuda --------
    a.cpp
    C:\Users\frank\AppData\Local\Temp\tmpwydqhw_2\a.cpp(1): fatal error C1083: include ファイルを開けません。'cublas_v2.h':No such file or directory
    command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

    ************************************************************
    * CuPy Configuration Summary *
    ************************************************************

    Build Environment:
    Include directories: []
    Library directories: []
    nvcc command : (not found)

    Environment Variables:
    CFLAGS : (none)
    LDFLAGS : (none)
    LIBRARY_PATH : (none)
    CUDA_PATH : (none)
    NVTOOLSEXT_PATH : C:\Program Files\NVIDIA Corporation\NvToolsExt\
    NVCC : (none)

    Modules:
    cuda : No
    -> Include files not found: ['cublas_v2.h', 'cuda.h', 'cuda_profiler_api.h', 'cuda_runtime.h', 'cufft.h', 'curand.h', 'cusparse.h', 'nvrtc.h']
    -> Check your CFLAGS environment variable.

    ERROR: CUDA could not be found on your system.
    Please refer to the Installation Guide for details:
    https://docs-cupy.chainer.org/en/stable/install.html

    ************************************************************

    Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "C:\Users\frank\AppData\Local\Temp\pip-install-e59378vm\cupy\setup.py", line 65, in <module>
    ext_modules = cupy_setup_build.get_ext_modules()
    File "C:\Users\frank\AppData\Local\Temp\pip-install-e59378vm\cupy\cupy_setup_build.py", line 560, in get_ext_modules
    extensions = make_extensions(arg_options, compiler, use_cython)
    File "C:\Users\frank\AppData\Local\Temp\pip-install-e59378vm\cupy\cupy_setup_build.py", line 373, in make_extensions
    raise Exception('Your CUDA environment is invalid. '
    Exception: Your CUDA environment is invalid. Please check above error log.

    ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in C:\Users\frank\AppData\Local\Temp\pip-install-e59378vm\cupy\
    ----- 'cupy==4.1.0' をインストールできませんでした -----
    と出ます。
    今度は試しにCUDAを9.0を入れようとするとインストーラーが失敗します。
    いろいろ調べてみるとcudaに対応しているGPUのリストの中に今使用している1050tiが見当たりません。
    1050tiではCUDA使えないのでしょうか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    7972questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Visual Studio

    1832questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • トップ
  • Pythonに関する質問
  • visual stadio 2017でpythonを動かすときにGPUを使いたいのですがエラーが出てしまいます。どなたか解決方法を教えていただけないでしょうか?