FC2カウンター FPGAの部屋 Vivado HLS 2019.1 の tgamma 関数をテストする
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado HLS 2019.1 の tgamma 関数をテストする

Vivado HLS 2019.1 の tgamma 関数がおかしいというツィートが流れてきたので、自分でもやってみた。

@lp6m2 さんのツィートを示す。


tgamma 関数を知らなかったので、調べてみた。
tgamma, tgammaf, tgammal - 本当のガンマ ... - Ubuntu Manpage
C/C++でガンマ関数tgamma()
どうやら tgamma 関数は階乗を整数から整数以外に拡張したもので、(n-1)! ということのようだ。つまり、tgamma(3) = 2 ということらしい?

コードも一部ツィートから引用した。
テストベンチを示す。

// tgamma_tb.cpp
// 2019/10/27 by marsee

#include <cmath>
#include <hls_math.h>
#include <ap_fixed.h>
using namespace std;

int tgamma_ip(ap_fixed<10,5> x, ap_fixed<10,5> &result);

int main(){
    ap_fixed<10,5> x, result;
    ap_fixed<10,5> x_soft, result_soft;

    x = ap_fixed<10,5>(3.0);
    tgamma_ip(x, result);

    x_soft = ap_fixed<10,5>(3.0);
    result_soft = hls::tgamma(x_soft);

    printf("result = %f\n", (float)result);
    printf("result_soft = %f\n", (float)result_soft);
    printf("%d\n", hls::tgamma((int)3));
    printf("%e\n", hls::tgamma((float)3.0));
    printf("%e\n", hls::tgamma((double)3.0));
    printf("%e\n", hls::tgamma((float)(-3.0)));

}


ソースコードを示す。

// tgamma.cpp
// 2019/10/27 by marsee

#include <cmath>
#include <hls_math.h>
#include <ap_fixed.h>
using namespace std;

int tgamma_ip(ap_fixed<10,5> x, ap_fixed<10,5> &result){
    result = hls::tgamma(x);

    return(0);
}


tgamma_1_191027.png

C シミュレーションを行った。
tgamma_2_191027.png

INFO: [SIM 2] *************** CSIM start ***************
INFO: [SIM 4] CSIM will launch GCC as the compiler.
   Compiling ../../../tgamma_tb.cpp in debug mode
   Compiling ../../../tgamma.cpp in debug mode
   Generating csim.exe
result = 0.000000
result_soft = 0.000000
0
inf
inf
0.000000e+00
INFO: [SIM 1] CSim done with 0 errors.
INFO: [SIM 3] *************** CSIM finish ***************


やはり値がおかしい。

C コードの合成を行ってみた。
tgamma_3_191027.png

Ultra96 では、DSP48E とLUT が 100 % をオーバーしている。相当リソースを消費している。
  1. 2019年10月27日 05:43 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4685-d77bdea5
この記事にトラックバックする(FC2ブログユーザー)