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

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

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

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

Q&A

解決済

1回答

1864閲覧

tensorflow v1 で segmentation fault

masawakabayashi

総合スコア5

Python

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

0グッド

0クリップ

投稿2021/04/01 12:30

編集2021/04/01 12:57

tensorflow v1でGPUを使って計算をさせていて、とコードAを入れて走らせたところsegmentation fault とでてとまってしまいました。
同じコードをCPUで走らせたらエラーなく動きました。

codeA
V = tf.Variable([batch_size, 7], dtype=tf.float32)
for b in range(B):
xxxxxxxx
for i, num in enumerate(nums):
A = tf.where(tf.equal(A[b], num), tf.broadcast_to(V[b,i], [224, 224]), tf.broadcast_to(0., [224, 224]))
yyyyyyy
zzzzzzz

グーグルで調べて

gdb

file python
run train2.py

と打ってみましたところ以下のような表示が出ました。

linux

1Program received signal SIGSEGV, Segmentation fault. 2[Switching to Thread 0x2aaba360a700 (LWP 54151)] 30x00002aaad02a46b0 in tensorflow::functor::BroadcastTo<Eigen::GpuDevice, float>::operator()(Eigen::GpuDevice const&, tensorflow::OpKernelContext*, tensorflow::Tensor&, tensorflow::TensorShape const&, tensorflow::Tensor const&, tensorflow::TensorShape const&) () 4 from /home/acc13114oa/venv/urfo/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so 5Missing separate debuginfos, use: debuginfo-install bzip2-libs-1.0.6-13.el7.x86_64 expat-2.1.0-10.el7_3.x86_64 glib2-2.54.2-2.el7.x86_64 glibc-2.17-222.el7.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-19.el7.x86_64 libX11-1.6.5-1.el7.x86_64 libXau-1.0.8-2.1.el7.x86_64 libXdamage-1.1.4-4.1.el7.x86_64 libXext-1.3.3-3.el7.x86_64 libXfixes-5.0.3-1.el7.x86_64 libXxf86vm-1.1.4-1.el7.x86_64 libcom_err-1.42.9-11.el7.x86_64 libdrm-2.4.83-2.el7.x86_64 libgcc-4.8.5-28.el7.x86_64 libgomp-4.8.5-28.el7.x86_64 libselinux-2.5-12.el7.x86_64 libstdc++-4.8.5-28.el7.x86_64 libuuid-2.23.2-52.el7.x86_64 libxcb-1.12-1.el7.x86_64 libxshmfence-1.2-1.el7.x86_64 libyaml-0.1.4-11.el7_0.x86_64 mesa-libGL-17.2.3-8.20171019.el7.x86_64 mesa-libglapi-17.2.3-8.20171019.el7.x86_64 openssl-libs-1.0.2k-12.el7.x86_64 pcre-8.32-17.el7.x86_64 xz-libs-5.2.2-1.el7.x86_64 zlib-1.2.7-17.el7.x86_64

さらにもう一度

file python
run train2.py

と入れると以下の表示

linux

10x00002aaad02a46b0 in tensorflow::functor::BroadcastTo<Eigen::GpuDevice, float>::operator()(Eigen::GpuDevice const&, tensorflow::OpKernelContext*, tensorflow::Tensor&, tensorflow::TensorShape const&, tensorflow::Tensor const&, tensorflow::TensorShape const&) () 2 from /home/xxxxx/yyyyy/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so 3

コードAには tf.broadcast_toを使っています。でその対象は一つはtf.Variable(float32), もう一つは 0. です。
やっぱりそこが原因なのでしょうか?
CPUでは動いたのに。。。

原因特定方法や原因がわかる方がいらっしゃればご教授お願いします。

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

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

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

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

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

jbpb0

2021/04/01 13:20

pythonのコード(コードA)の一番最初の行のすぐ上に ```python だけの行を追加してください また、pythonのコード(コードA)の一番最後の行のすぐ下に ``` だけの行を追加してください 現状、コードがとても読み辛いです 質問にコードを載せる際に上記をやってくれたら、他人がコードを読みやすくなり、コードの実行による現象確認もやりやすくなるので、回答されやすくなります
退会済みユーザー

退会済みユーザー

2021/04/02 04:47 編集

・ nvidia-smiか何かでGPUのメモリ消費量の比率の変化  (残りが少なくなってきたらsegmentation faultが起きた)等、  何かしらのGPUのひっ迫具合をコードを走らせながら確認できますか? ・ もしコードAが掲載のものより長かったら、その中に  allow_growth (tfv1)がソースコードに挟まっているか確認できますか?  ※今回は関係ないと思いますが、tfv2ならset_per_process_memory_growth(tfv2alpha)か   set_memory_growth(tfv2beta)です。
jbpb0

2021/04/06 09:47

変数の定義を追加する等して、他人が実行できるようにコードが提示されたら、現象が再現するか他人が確認できるので、回答されやすくなると思います
guest

回答1

0

自己解決

broadcastを使わないでいけることに気がついて取り除いたらいけました。ありがとうございました。

投稿2021/04/22 04:10

masawakabayashi

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問