RuntimeError: CUDA エラー: GPU のみで `cublasSgemm( handle)` を呼び出すと CUBLAS_STATUS_EXECUTION_FAILED が発生する 質問する

RuntimeError: CUDA エラー: GPU のみで `cublasSgemm( handle)` を呼び出すと CUBLAS_STATUS_EXECUTION_FAILED が発生する 質問する

私は 1 次元信号で CNN に取り組んでいます。CPU デバイスでは完全に正常に動作します。ただし、GPU でモデルをトレーニングすると、CUDA エラーが発生しました。呼び出し時os.environ['CUDA_LAUNCH_BLOCKING'] = "1"に取得した後にコマンドを設定しました。これを行うと、エラーではなくエラーが発生しました。nvidia のドキュメントではハードウェアの問題が疑われていますが、画像を使用して他の CNN をエラーなしでトレーニングできます。以下は、トレーニング モデルでデータをロードして設定するためのコードです。RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILEDcublasCreate(handle)cublasSgemmcublasCreate

    idx = np.arange(len(dataset))  # dataset & label shuffle in once
    np.random.shuffle(idx)

    dataset = dataset[idx]
    sdnn = np.array(sdnn)[idx.astype(int)]        

    train_data, val_data = dataset[:int(0.8 * len(dataset))], dataset[int(0.8 * len(dataset)):]
    train_label, val_label = sdnn[:int(0.8 * len(sdnn))], sdnn[int(0.8 * len(sdnn)):]
    train_set = DataLoader(dataset=train_data, batch_size=opt.batch_size, num_workers=opt.workers)

    for i, data in enumerate(train_set, 0):  # data.shape = [batch_size, 3000(len(signal)), 1(channel)] tensor

        x = data.transpose(1, 2)
        label = torch.Tensor(train_label[i * opt.batch_size:i * opt.batch_size + opt.batch_size])
        x = x.to(device, non_blocking=True)
        label = label.to(device, non_blocking=True) # [batch size]
        label = label.view([len(label), 1])
        optim.zero_grad()

        # Feature of signal extract
        y_predict = model(x) # [batch size, fc3 output] # Error occurred HERE
        loss = mse(y_predict, label)

以下はこのコードからのエラーメッセージです。

File C:/Users/Me/Desktop/Me/Study/Project/Analysis/Regression/main.py", line 217, in Processing
    y_predict = model(x) # [batch size, fc3 output]
  File "C:\Anaconda\envs\torch\lib\site-packages\torch\nn\modules\module.py", line 722, in _call_impl
    result = self.forward(*input, **kwargs)
  File "C:\Users\ME\Desktop\ME\Study\Project\Analysis\Regression\cnn.py", line 104, in forward
    x = self.fc1(x)
  File "C:\Anaconda\envs\torch\lib\site-packages\torch\nn\modules\module.py", line 722, in _call_impl
    result = self.forward(*input, **kwargs)
  File "C:\Anaconda\envs\torch\lib\site-packages\torch\nn\modules\linear.py", line 91, in forward
    return F.linear(input, self.weight, self.bias)
  File "C:\Anaconda\envs\torch\lib\site-packages\torch\nn\functional.py", line 1674, in linear
    ret = torch.addmm(bias, input, weight.t())
RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)`

何週間もこのエラーを解決しようとしましたが、解決策が見つかりません。何かお気づきの点がありましたら、お知らせください。

ベストアンサー1

入力テンソルの次元と nn.Linear モジュールの次元が一致しない場合にも、このエラーが発生する可能性があることに注意してください。c(ex. input.shape = (a, b) and nn.Linear(c, c, bias=False)が一致しません。

おすすめ記事