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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Ninja

NinjaはHTML5 Webアプリケーションを開発するためのオーサリングツールです。 NinjaはChromeウェブストアでインストールできます。

Python

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

Q&A

解決済

1回答

7710閲覧

Ninjaビルドエラー

HiruLow

総合スコア55

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Ninja

NinjaはHTML5 Webアプリケーションを開発するためのオーサリングツールです。 NinjaはChromeウェブストアでインストールできます。

Python

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

0グッド

0クリップ

投稿2021/07/16 21:07

編集2021/07/16 21:18

Ninjaを使ったビルドでエラーが発生しています。

FAILED: fused.pyd "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\bin\Hostx64\x64/link.exe" fused_bias_act.o fused_bias_act_kernel.cuda.o /nologo /DLL c10.lib c10_cuda.lib torch_cpu.lib torch_cuda_cu.lib -INCLUDE:?searchsorted_cuda@native@at@@YA?AVTensor@2@AEBV32@0_N1@Z torch_cuda_cpp.lib -INCLUDE:?warp_size@cuda@at@@YAHXZ torch.lib /LIBPATH:C:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\lib torch_python.lib /LIBPATH:C:\Users\Owner\anaconda3\envs\Python-v38\libs "/LIBPATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib/x64" cudart.lib "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib/x64" /out:fused.pyd LINK : fatal error LNK1181: cannot open input file 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64.obj' ninja: build stopped: subcommand failed.

エラー内容としてはx64.objが存在しないとゆう事なのですが
エラー文章に記載のパスのx64はそもそもファイルではなくフォルダとして存在しています。
なのでおそらくbuild.ninjaに不適切なパスの指定がされているのかと思い3日程調べているのですが、原因がわかりません
対象のbuild.ninja

ninja_required_version = 1.3 cxx = cl nvcc = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin\nvcc cflags = -DTORCH_EXTENSION_NAME=fused -DTORCH_API_INCLUDE_EXTENSION_H -IC:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\include -IC:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\include\torch\csrc\api\include -IC:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\include\TH -IC:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\include\THC "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\include" "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\include" -IC:\Users\Owner\anaconda3\envs\Python-v38\Include -D_GLIBCXX_USE_CXX11_ABI=0 /MD /wd4819 /wd4251 /wd4244 /wd4267 /wd4275 /wd4018 /wd4190 /EHsc post_cflags = cuda_cflags = -Xcudafe --diag_suppress=dll_interface_conflict_dllexport_assumed -Xcudafe --diag_suppress=dll_interface_conflict_none_assumed -Xcudafe --diag_suppress=field_without_dll_interface -Xcudafe --diag_suppress=base_class_has_different_dll_interface -Xcompiler /EHsc -Xcompiler /wd4190 -Xcompiler /wd4018 -Xcompiler /wd4275 -Xcompiler /wd4267 -Xcompiler /wd4244 -Xcompiler /wd4251 -Xcompiler /wd4819 -Xcompiler /MD -DTORCH_EXTENSION_NAME=fused -DTORCH_API_INCLUDE_EXTENSION_H -IC:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\include -IC:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\include\torch\csrc\api\include -IC:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\include\TH -IC:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\include\THC "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\include" "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\include" -IC:\Users\Owner\anaconda3\envs\Python-v38\Include -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_75,code=compute_75 -gencode=arch=compute_75,code=sm_75 cuda_post_cflags = ldflags = /DLL c10.lib c10_cuda.lib torch_cpu.lib torch_cuda_cu.lib -INCLUDE:?searchsorted_cuda@native@at@@YA?AVTensor@2@AEBV32@0_N1@Z torch_cuda_cpp.lib -INCLUDE:?warp_size@cuda@at@@YAHXZ torch.lib /LIBPATH:C:\Users\Owner\anaconda3\envs\Python-v38\lib\site-packages\torch\lib torch_python.lib /LIBPATH:C:\Users\Owner\anaconda3\envs\Python-v38\libs "/LIBPATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib/x64" cudart.lib "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib/x64" rule compile command = cl /showIncludes $cflags -c $in /Fo$out $post_cflags deps = msvc rule cuda_compile depfile = $out.d deps = gcc command = $nvcc --generate-dependencies-with-compile --dependency-output $out.d $cuda_cflags -c $in -o $out $cuda_post_cflags rule link command = "C$:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\bin\Hostx64\x64/link.exe" $in /nologo $ldflags /out:$out build fused_bias_act.o: compile D$:\TensorSpace\AnimeGenerator\StyleGan3\alias-free-gan-pytorch-main\stylegan2\op\fused_bias_act.cpp build fused_bias_act_kernel.cuda.o: cuda_compile D$:\TensorSpace\AnimeGenerator\StyleGan3\alias-free-gan-pytorch-main\stylegan2\op\fused_bias_act_kernel.cu build fused.pyd: link fused_bias_act.o fused_bias_act_kernel.cuda.o default fused.pyd

 

原因となるコードはどれでしょうか?

 そもそも、なぜこんなエラーが出るのか不思議だったので
一度他のcppファイルをビルドしてみたところ正常にビルドは成功しました。
試したコード:https://pytorch.org/tutorials/advanced/cpp_extension.html 

 読み込み方が違うため、torch関連のエラーの可能性もあるので
今回エラーをだしたcpp関連ファイルと読み込みコードを記載させていただきます

 読み込み時
```ここに言語を入力
import os
from torch.utils.cpp_extension import load

module_path = os.path.dirname(file)

fused = load(
"fused",
sources=[
os.path.join(module_path, "fused_bias_act.cpp"),
os.path.join(module_path, "fused_bias_act_kernel.cu"),
],
)

fused_bias_act.cpp

#include <ATen/ATen.h>
#include <torch/extension.h>

torch::Tensor fused_bias_act_op(const torch::Tensor &input,
const torch::Tensor &bias,
const torch::Tensor &refer, int act, int grad,
float alpha, float scale);

#define CHECK_CUDA(x)
TORCH_CHECK(x.type().is_cuda(), #x " must be a CUDA tensor")
#define CHECK_CONTIGUOUS(x)
TORCH_CHECK(x.is_contiguous(), #x " must be contiguous")
#define CHECK_INPUT(x)
CHECK_CUDA(x);
CHECK_CONTIGUOUS(x)

torch::Tensor fused_bias_act(const torch::Tensor &input,
const torch::Tensor &bias,
const torch::Tensor &refer, int act, int grad,
float alpha, float scale) {
CHECK_INPUT(input);
CHECK_INPUT(bias);

at::DeviceGuard guard(input.device());

return fused_bias_act_op(input, bias, refer, act, grad, alpha, scale);
}

PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
m.def("fused_bias_act", &fused_bias_act, "fused bias act (CUDA)");
}

      fused_bias_act_kernel.cu ```ここに言語を入力 // Copyright (c) 2019, NVIDIA Corporation. All rights reserved. // // This work is made available under the Nvidia Source Code License-NC. // To view a copy of this license, visit // https://nvlabs.github.io/stylegan2/license.html #include <torch/types.h> #include <ATen/ATen.h> #include <ATen/AccumulateType.h> #include <ATen/cuda/CUDAApplyUtils.cuh> #include <ATen/cuda/CUDAContext.h> #include <cuda.h> #include <cuda_runtime.h> template <typename scalar_t> static __global__ void fused_bias_act_kernel(scalar_t *out, const scalar_t *p_x, const scalar_t *p_b, const scalar_t *p_ref, int act, int grad, scalar_t alpha, scalar_t scale, int loop_x, int size_x, int step_b, int size_b, int use_bias, int use_ref) { int xi = blockIdx.x * loop_x * blockDim.x + threadIdx.x; scalar_t zero = 0.0; for (int loop_idx = 0; loop_idx < loop_x && xi < size_x; loop_idx++, xi += blockDim.x) { scalar_t x = p_x[xi]; if (use_bias) { x += p_b[(xi / step_b) % size_b]; } scalar_t ref = use_ref ? p_ref[xi] : zero; scalar_t y; switch (act * 10 + grad) { default: case 10: y = x; break; case 11: y = x; break; case 12: y = 0.0; break; case 30: y = (x > 0.0) ? x : x * alpha; break; case 31: y = (ref > 0.0) ? x : x * alpha; break; case 32: y = 0.0; break; } out[xi] = y * scale; } } torch::Tensor fused_bias_act_op(const torch::Tensor &input, const torch::Tensor &bias, const torch::Tensor &refer, int act, int grad, float alpha, float scale) { int curDevice = -1; cudaGetDevice(&curDevice); cudaStream_t stream = at::cuda::getCurrentCUDAStream(); auto x = input.contiguous(); auto b = bias.contiguous(); auto ref = refer.contiguous(); int use_bias = b.numel() ? 1 : 0; int use_ref = ref.numel() ? 1 : 0; int size_x = x.numel(); int size_b = b.numel(); int step_b = 1; for (int i = 1 + 1; i < x.dim(); i++) { step_b *= x.size(i); } int loop_x = 4; int block_size = 4 * 32; int grid_size = (size_x - 1) / (loop_x * block_size) + 1; auto y = torch::empty_like(x); AT_DISPATCH_FLOATING_TYPES_AND_HALF( x.scalar_type(), "fused_bias_act_kernel", [&] { fused_bias_act_kernel<scalar_t><<<grid_size, block_size, 0, stream>>>( y.data_ptr<scalar_t>(), x.data_ptr<scalar_t>(), b.data_ptr<scalar_t>(), ref.data_ptr<scalar_t>(), act, grad, alpha, scale, loop_x, size_x, step_b, size_b, use_bias, use_ref); }); return y; }

読み込み時のコードを単体で実行すると、指定されたモジュールがみつかりません
とゆうエラーが出現しました。
そこでcpp_extensionのキャッシュフォルダを確認した所、ninja.buildのファイルは正常に生成されていたため、該当のディレクトリに移動し直接以下コマンドを入力した結果質問分最初のエラーLINK : fatal error LNK1181が発生致しました。

ninja

読んでいただいてありがとうございます。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/07/16 21:38

build.ninjaの「ldflags」の一番最後の "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib/x64" が要らないのでは??
HiruLow

2021/07/18 00:54 編集

Terateiruにて解決法を記載し、該当の質問を削除させていただきます
guest

回答1

0

自己解決

今一度Pytorchのインストールガイドを読んだところ
VisualStudioC++BuildTool等のシステムを導入した際は再度Cudaのインストールが必要とのことでした。
一度全環境をアンインストールし
以下の順番でインストールしたところ正常に動作いたしました。

おそらくCudaによる環境変数への影響が関与していたと思われます。

Anaconda3(Application)
VisualStudio(C++Build)
Pytorch in Anaconda(conda install)
Cuda
Cudnn

投稿2021/07/18 00:51

HiruLow

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問