Jia3Xu
New Contributor
2 years agousing HLS generated code with oneAPI in fpga
Hi,
I am developing a fpga project using oneAPI, and I want to use the code which is written by intel HLS. (Migrating to oneAPI is the least thing I want to do becasue the code in HLS is huge)
so I use fpga_crossgen to compile the hls code to a library. and it generate a lot lines of error:
In file included from /home/myname/workspace/fpga/toe/arp_intel/toe/toe.cpp:29:
In file included from /home/myname/workspace/fpga/toe/arp_intel/toe/toe.hpp:31:
In file included from /home/myname/workspace/fpga/toe/arp_intel/toe/../axi_utils.hpp:33:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/iostream:39:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/ostream:38:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/ios:42:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/ios_base.h:41:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/locale_classes.h:40:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/string:49:
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/ext/numeric_traits.h:130:58: error: __int128 is not supported on this target
__extension__ template<> struct __is_integer_nonstrict<__int128> { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = 128 }; }; __extension__ template<> struct __is_integer_nonstrict<unsigned __int128> { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = 128 }; };
^
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/ext/numeric_traits.h:130:216: error: __int128 is not supported on this target
__extension__ template<> struct __is_integer_nonstrict<__int128> { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = 128 }; }; __extension__ template<> struct __is_integer_nonstrict<unsigned __int128> { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = 128 }; };
^
In file included from /home/myname/workspace/fpga/toe/arp_intel/toe/toe.cpp:29:
In file included from /home/myname/workspace/fpga/toe/arp_intel/toe/toe.hpp:31:
In file included from /home/myname/workspace/fpga/toe/arp_intel/toe/../axi_utils.hpp:41:
In file included from /media/myname/oneapi/2023.2.0/compiler/2023.2.0/linux/lib/oclfpga/include/HLS/ac_int.h:112:
In file included from /media/myname/oneapi/2023.2.0/compiler/2023.2.0/linux/lib/oclfpga/include/HLS/math.h:108:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/math.h:36:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/cmath:1935:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/specfun.h:46:
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/limits:1658:50: error: __int128 is not supported on this target
__extension__ template<> struct numeric_limits<__int128> { static constexpr bool is_specialized = true; static constexpr __int128 min() noexcept { return (((__int128)(-1) < 0) ? -(((__int128)(-1) < 0) ? (((((__int128)1 << ((128 - ((__int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(__int128)0) - 1 : (__int128)0); } static constexpr __int128 max() noexcept { return (((__int128)(-1) < 0) ? (((((__int128)1 << ((128 - ((__int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(__int128)0); } static constexpr int digits = 128 - 1; static constexpr int digits10 = (128 - 1) * 643L / 2136; static constexpr bool is_signed = true; static constexpr bool is_integer = true; static constexpr bool is_exact = true; static constexpr int radix = 2; static constexpr __int128 epsilon() noexcept { return 0; } static constexpr __int128 round_error() noexcept { return 0; } static constexpr __int128 lowest() noexcept { return min(); } static constexpr int max_digits10 = 0; static constexpr int min_exponent = 0; static constexpr int min_exponent10 = 0; static constexpr int max_exponent = 0; static constexpr int max_exponent10 = 0; static constexpr bool has_infinity = false; static constexpr bool has_quiet_NaN = false; static constexpr bool has_signaling_NaN = false; static constexpr float_denorm_style has_denorm = denorm_absent; static constexpr bool has_denorm_loss = false; static constexpr __int128 infinity() noexcept { return static_cast<__int128>(0); } static constexpr __int128 quiet_NaN() noexcept { return static_cast<__int128>(0); } static constexpr __int128 signaling_NaN() noexcept { return static_cast<__int128>(0); } static constexpr __int128 denorm_min() noexcept { return static_cast<__int128>(0); } static constexpr bool is_iec559 = false; static constexpr bool is_bounded = true; static constexpr bool is_modulo = false; static constexpr bool traps = true; static constexpr bool tinyness_before = false; static constexpr float_round_style round_style = round_toward_zero; }; __extension__ template<> struct numeric_limits<unsigned __int128> { static constexpr bool is_specialized = true; static constexpr unsigned __int128 min() noexcept { return 0; } static constexpr unsigned __int128 max() noexcept { return (((unsigned __int128)(-1) < 0) ? (((((unsigned __int128)1 << ((128 - ((unsigned __int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(unsigned __int128)0); } static constexpr unsigned __int128 lowest() noexcept { return min(); } static constexpr int max_digits10 = 0; static constexpr int digits = 128; static constexpr int digits10 = 128 * 643L / 2136; static constexpr bool is_signed = false; static constexpr bool is_integer = true; static constexpr bool is_exact = true; static constexpr int radix = 2; static constexpr unsigned __int128 epsilon() noexcept { return 0; } static constexpr unsigned __int128 round_error() noexcept { return 0; } static constexpr int min_exponent = 0; static constexpr int min_exponent10 = 0; static constexpr int max_exponent = 0; static constexpr int max_exponent10 = 0; static constexpr bool has_infinity = false; static constexpr bool has_quiet_NaN = false; static constexpr bool has_signaling_NaN = false; static constexpr float_denorm_style has_denorm = denorm_absent; static constexpr bool has_denorm_loss = false; static constexpr unsigned __int128 infinity() noexcept { return static_cast<unsigned __int128>(0); } static constexpr unsigned __int128 quiet_NaN() noexcept { return static_cast<unsigned __int128>(0); } static constexpr unsigned __int128 signaling_NaN() noexcept { return static_cast<unsigned __int128>(0); } static constexpr unsigned __int128 denorm_min() noexcept { return static_cast<unsigned __int128>(0); } static constexpr bool is_iec559 = false; static constexpr bool is_bounded = true; static constexpr bool is_modulo = true; static constexpr bool traps = true; static constexpr bool tinyness_before = false; static constexpr float_round_style round_style = round_toward_zero; };
44 errors generated.
Error: OpenCL parser FAILED
seems the error occurs when include ac_int.h which is necessary for the code to use.
any ideas on this problem?
B.R.&thanks
Jia