Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

e-AIで作成したファイルをビルドすると、エラーになる(E0562300:Duplicate symbol "_add_0_pad" in ".\src\Translator\dnn_compute.obj")

RX72Tを用いてe-AIで作成したCNN処理を行いたいです。

「e-AIトランスレータ V1.4.0 ユーザーズマニュアル」に沿って作業を行っております。

マニュアルのP30に記載の通りe-AIで作成されたファイルをインクルードすると、e-AI出力のファイル内で宣言されたシンボルに対してシンボル重複のエラーが出ます

(E0562300:Duplicate symbol "_add_0_pad" in ".\src\Translator\dnn_compute.obj")

 

どこで重複がおきているか調べようとしたのですが、e-AI出力のファイルでは1か所でしか宣言されておらず、当然私が記述した部分のプログラムでも宣言はしておりません。

念のため上記の1か所で宣言されている部分の名称を変更しましたが、変更後の名称で同じエラーが発生します。

恐らくe-AI出力ファイル内での参照関係によって重複宣言が行われていると推察しているのですが、本現象の解決方法をご教授いただけないでしょうか。

 

回答に際して情報等不足ございましたらご指摘ください。

よろしくお願いいたします。

 

【環境】

・windows10

・e2studio

・GCC for Renesas RX ツールチェーン

・Renesas Sterter Kit for RX72T

【該当ファイル】

//File Name    :dnn_compute.c

#include "layer_shapes.h"
#include "layer_graph.h"
#include "weights.h"

TPrecision* dnn_compute(TPrecision* Reshape_0)
{
convolution(Reshape_0,add_0_pad,add_0_weights,add_0_biases,add_0,layer_shapes.add_0_shape);
relu(add_0,layer_shapes.add_0_activ_shape);

pooling(add_0,MaxPool_0_pad,MaxPool_0,layer_shapes.MaxPool_0_shape);
convolution(MaxPool_0,add_1_0_pad,add_1_0_weights,add_1_0_biases,add_1_0,layer_shapes.add_1_0_shape);
relu(add_1_0,layer_shapes.add_1_0_activ_shape);
pooling(add_1_0,Reshape_1_0_pad,Reshape_1_0,layer_shapes.Reshape_1_0_shape);

innerproduct(Reshape_1_0,add_2_0_weights,add_2_0_biases,add_2_0,layer_shapes.add_2_0_shape);
relu(add_2_0,layer_shapes.add_2_0_activ_shape);

innerproduct(add_2_0,MatMul_1_0_weights,MatMul_1_0_biases,MatMul_1_0,layer_shapes.MatMul_1_0_shape);
return(MatMul_1_0);
}

 

//File Name    : layer_shapes.h

#include "Typedef.h"
#ifndef LAYER_SHAPES_H_
#define LAYER_SHAPES_H_

TPrecision* dnn_compute(TPrecision*);

 

//↓これらのシンボルについて全て重複定義のエラーが出ます

TPrecision add_0_pad[680];
TPrecision add_0_m[960];
TPrecision MaxPool_0_pad_m[1920];
TPrecision MaxPool_0_m[480];
TPrecision add_1_0_pad_m[3040];
TPrecision add_1_0_m[960];
TPrecision Reshape_1_0_pad_m[2048];
TPrecision Reshape_1_0_m[512];
TPrecision add_2_0_m[1024];
TPrecision MatMul_1_0_m[10];


struct shapes{
TsInt add_0_shape_m[16];
TsInt add_0_activ_shape_m;
TsInt MaxPool_0_shape_m[15];
TsInt add_1_0_shape_m[16];
TsInt add_1_0_activ_shape_m;
TsInt Reshape_1_0_shape_m[15];
TsInt add_2_0_shape_m[4];
TsInt add_2_0_activ_shape_m;
TsInt MatMul_1_0_shape_m[4];
};

struct shapes layer_shapes ={
{1,4,1,30,32,4,5,5,1,30,2,2,2,2,1,1},
960,
{1,32,1,30,1,15,0,1,0,0,2,2,2,2,0},
{1,32,1,15,64,32,5,5,1,15,2,2,2,2,1,1},
960,
{1,64,1,15,1,8,0,1,0,1,2,2,2,2,0},
{1,512,512,1024},
1024,
{1,1024,1024,10}
};

#endif

  • In reply to NoMaY:

    map.zip

    NoMaY様

    ご提案いただきありがとうございます。

    mapファイル添付させていただきます。

    ご確認お願いいたします。

  • In reply to panpanpanda:

    panpanpandaさん、こんにちは。NoMaYです。

    mapファイルを有難う御座いました。見て思ったのですが、src/oldの下に何か修正前ソースをバックアップされているようですが、e2 studio(というかEclipse)ではそのやり方はNGです。そのようなことをしますと、src/oldの下に新規ソースが追加されたのだと判断されてしまい、自動的にsrc/oldの下のソースがプロジェクトに追加されてしまいます。(ただ、そういうことを自動的にやってくれるところがe2 studio(というかEclipse)の有難いところではありますが。) もし私の推測の通りにsrc/oldの下のソースがバックアップのソースでしたら、それを削除してみて頂けますか? mapファイ内には以下のように出力されていて、バックアップのソースだと思うのですが。

    *** Options ***

    -subcommand=LinkerTutorial.tmp
    -noprelink
    -input=".\src/Translator\dnn_compute.obj"
    -input=".\src/Translator\network.obj"
    -input=".\src\ascii.obj"
    -input=".\src\main.obj"
    -input=".\src/old\dnn_compute.obj"
    -input=".\src/old\network.obj"
    。。。以後省略。。。
    *** Error information ***

    W0562300:Duplicate symbol "_innerproduct" in ".\src\Translator\network.obj"
    W0562300:Duplicate symbol "_innerproduct" in ".\src\old\network.obj"
    W0562300:Duplicate symbol "_pooling" in ".\src\Translator\network.obj"
    W0562300:Duplicate symbol "_pooling" in ".\src\old\network.obj"
    W0562300:Duplicate symbol "_layer_shapes" in ".\src\Translator\dnn_compute.obj"
    W0562300:Duplicate symbol "_layer_shapes" in ".\src\old\dnn_compute.obj"
    W0562300:Duplicate symbol "_padding" in ".\src\Translator\network.obj"
    W0562300:Duplicate symbol "_padding" in ".\src\old\network.obj"
    W0562300:Duplicate symbol "_average_pooling" in ".\src\Translator\network.obj"
    W0562300:Duplicate symbol "_average_pooling" in ".\src\old\network.obj"
    W0562300:Duplicate symbol "_convolution" in ".\src\Translator\network.obj"
    W0562300:Duplicate symbol "_convolution" in ".\src\old\network.obj"
    W0562300:Duplicate symbol "_relu" in ".\src\Translator\network.obj"
    W0562300:Duplicate symbol "_relu" in ".\src\old\network.obj"
    W0562300:Duplicate symbol "_max_pooling" in ".\src\Translator\network.obj"
    W0562300:Duplicate symbol "_max_pooling" in ".\src\old\network.obj"
    F0563100:Section address overflow out of range : "C"

    それでもまだ今回のエラーが解消されないようであれば、すみませんが、以下のオプションを付けてビルドして、再度、mapファイルをzipファイルに固めて添付して頂けますか。

    e2 studioのプロジェクトのプロパティのコンパイラ設定(というかリンカ設定)の画面コピー

     

  • In reply to NoMaY:

    NoMay様

    大変丁寧にご教授いただきありがとうございます。
    無事ビルドが通り、マイコンに書き込むことができました。
    (別ファイルまで確認してくれるのですね。なんて親切なんでしょう。今後は気を付けようと思います)

    さらに追加の質問で大変申し訳ありません。最後にもう一度ご教授いただけないでしょうか。
    現在書き込んだファイルを実行し、深層学習部分の実行速度を計測しています。
    処理にはブレークポイントのタイマーを使用しているのですが、計測結果がどこに出てくるのか調べても分かりませんでした。

    現在添付ファイルのような状況なのですが、どのようにすれば計測結果を表示することができるのかご教授いただけないでしょうか。

    こちらも初歩的な質問で大変お恥ずかしく、恐縮なのですが、よろしくお願いいたします。

    //以下の「data_convert_list2format」「dnn_compute」の2つの処理時間を計測したいです

  • In reply to panpanpanda:

    panpanpandaさん、こんにちは。NoMaYです。

    諸般の事情で私のPCでオンチップデバッグエミュレータが使えなくてFAQの引用になりますが、以下のFAQのやり方ではどうでしょうか。オンチップデバッガ機能概要のドキュメントによるとRenesas Starter Kit for RX72Tに同梱されているE2 Liteで出来るかと思います。

    FAQ 1011210 : 二点間の実行時間を測定する方法はありますか? (適用製品 e2 studio)
    ja.na4.teamsupport.com/knowledgeBase/17797680

    オンチップデバッガ機能概要
    www.renesas.com/jp/ja/search/keyword-search.html#genre=document&q=r20ut0616
    r20ut0616jj0926-ocd-debug.pdf

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page