-
Notifications
You must be signed in to change notification settings - Fork 371
Ubuntu - Documentation for Intel compiler build #396
Comments
Build with GCC? :-) But seriously, I assume that you have a specific reason for using the Intel compiler, but it looks like you are the first to try that particular combination and have hit some elements in our code (or its dependencies) which the Intel compiler doesn't like. The "no suitable conversion ones" are happening for boost types, ie ... using u256 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void>>; So you'll have to either work out for yourself what is happening there or seek help from the Boost team or Intel compiler team. We're just using Boost, and it works on multiple platforms with multiple compilers, but maybe there is some shortfall for the Intel compiler? I am afraid I must plead ignorance there. Just spotted this in the log :-) Which is quite true. I'm afraid that the Intel compiler isn't something which we're claiming to support, but if you can get it to work, we'd be happy to take back pull-requests to add that support. CMake Warning at webthree-helpers/cmake/EthCompilerSettings.cmake:93 (message): There are a few more warnings in your log too, which it is hard to tell whether are serious or not. I've just gone through the effort of fixing all our warnings and enabling warnings-as-errors, so we would want to get to the bottom of them all, and ensure we could build warning-free with the Intel compiler before pulling back changes. Are you up for battling through them? I'll do what I can to help, but that will mainly be cheerleading, I am afraid. Good luck! |
I will systematically resolve all issues to enable compilation with ICPC16. root@coast77:/home# /home/webthree-umbrella/build/libethereum/ethminer/ethminer --list-devices |
Excellent. All power to you! Thanks. |
Greetings, got most of the errors resolved using defines and convert_to.
Regarding \libweb3core\libdevcore\Base64.h: Do you have any advice for resolution of this particular case?
I tried convert_to, but got an error.
Regarding the template with toBigEndian, just enumerated like this, definitely requires rework.
In order to minize build for ethminer binary, is it safe to disable Eth::evm and Eth::lll?
Base64Error_libethereum-build_bot-20160327024444.txt |
Hey @mancoast! I would ignore ethminer binary if I were you. For the time being at least. Why don't you do a fork-and-clone and create some PRs for the changes in process which we can discuss? |
For the type conversion issues, perhaps @chriseth will know a little better than me? |
Oh, this looks quite horrible. I have seen the following in the boost documentation, perhaps that helps: |
Yikes to that syntax! Did it get you further on? |
Yea, all the requirements have been fulfilled with the single exception of Base64.h. After completion of toBase36 I will fork using this username for a cleaner, single commit, pull request.
Thanks! |
"Please advise fulfillment of the following requirement:" Sorry - I don't know what exactly you mean. Please could you rephrase? There would need to be some working expression inside the Intel #ifdef, wouldn't there? Or the code would be broken. |
Restored dev::toBase36 to vanilla && resolved, via ICAP modification.
|
Have you still got outstanding breaks, or have you got to the link step yet? |
ICC issue is resolved, on to the next one: Xeon PHI x100 Co-Processor |
Accidentally clicked the close button. Looks like dual E5-2603 are hashing at ~.25 to .30 Mhs. |
Great - getting there, eh! |
Greetings! Questions: Please advise this decision point: How to proceed: a.) or b.)? Thanks, |
Just keep making further commits on those branches until we are both happy with the content. Like http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html |
Alrighty, most of the defines have been removed. |
Just adding links to the two PRs: |
Just a few more questions.
Beyond that I would just want to check with @chriseth on the test run results we are seeing for these 2 PRs, which I think are issues in our automation, and nothing to do with your changes, and then I think we would be good to go. No doubt further breaks will pop up in the future which we would be blind to, but obviously feel free to submit PRs as we go. Did you get the performance improvements you were hoping for? |
Oh - and the squashes will still need doing, but we would defer that until we're 100% happy with the content. Thanks again for your persistence! |
toBigEndian: T=u256 || T=u160
toBigEndian: T=bigint
toBigEndian: T=cpp_int_backend<512U>
toBigEndian: T=cpp_int_backend<64U>
toBigEndian: T=cpp_int_backend<128U>
toBase36: initial error
toBase36: member function fail
I would prefer to use an template "override". What is the exact signature required for the additional toBase36 function? I have tried using 20UL, but the function remains uncalled and icpc throws an error: no suitable conversion.
|
The baseline native performance for mic, requires all the libraries recompiled for mic. After establishing a baseline, it will be interesting to tune the ethminer binary. |
If you are only on boost 55, it might be worth your while updating that. 1.60 is the latest version. There might be a case for sending them some patches too, eh? |
I'm still not clear on where toBigEndian() comes from. Is that boost API? |
I tested with boost 1-60 release, but there was no resolution. My guess is that the Intel compiler has more strict lexi. I would not consider that unexpected from Intel platform. As for additional boost patch, yes the "using bigint =.." causes another error. That is separate scope, but will be analysed later. ToBigEndian is a template core function of libweb3core, not related to boost. The error occurs when this libweb3core template function is instantiated with boost's wide types. |
confirmed resolved |
Thanks for clearing that up John @jzmaddock |
Thanks for your magnificently detailed reply, @jzmaddock! Much appreciated. And thanks indeed for your long and noble work on getting this going, @mancoast! I am going to reopen this issue, though, because we aren't quite done yet. After all of this work, I want to ensure that other people are able to build Our CMake compiler settings don't have any flows for Intel compiler. Did you just have some local edits for this, @mancoast? Or command-line overrides? What settings did you use? I would like us to have instructions for Intel compiler builds to add to http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/building-from-source/index.html. What elements of your local setup are we missing, @mancoast? What instructions do we need to add to get random people in a position where they can replicate your results? Also, in terms of the specific version requirements, etc. we should get those encoded into the CMake files as well, within that new "if Intel" conditional. |
Oh yes, one more thing. If we don't need the More generally, it looks like our codebase is a pretty horrible mess of C-style casts in general, but that is another story entirely :-) |
So I think that would mean reverting the following:
It is probably best if YOU actually create PRs for these, eh, @mancoast, because you can verify that we don't over-strip in the process, and re-break your Intel builds. BTW - Are you able to build ALL the executables now? |
Revert convert_to usage: |
Intel x64 cmake command line:
CFLAGS="-02 -g" \ <-- incorrect? webthree-umbrella\CMakeLists.txt: |
Can this be closed? |
everything functions on my end. |
I've not closed it yet because it still needs documentation. On my plate! Will get to it soon. |
Hey @mancoast! Just doing release notes for cpp-ethereum-v1.2.6. Would you like to be credited with a real name? Also, whether or not you stay pseudonymous, please can you add an e-mail address which you can be contacted at to http://piratepad.net/g9A0NTQjcI? Thanks! That is for #530 |
all updated, thanks |
Hello ROBERT! Thanks :-) |
Moved to ethereum/aleth#3219, but not all comments came across cleanly. |
@bobsummerwill Hello ,i tried to do same thing to compilie to my Xeon Phi. but the intel compiler is not free to student (the XE not include ICC)..... so could you pelease give me a binary code to me? Thank you very much... My email :1919962626@qq.com 感激不尽 |
Build System based on Ubuntu 14.04 and Intel Compiler 16.
Using these exact commits of the develop branches:
fa1943c144121ae78b3f390a6a6fcdbeef59d953
cf112efa34baa01a9cf60ec699537c840d34e9dd
34b7273f69e98b789257dc03ad4fa6d89ba9b39c
Build with GNU compiler generates valid binaries.
Build with Intel Compiler generates boost::multiprecision Error
/home/libweb3core/libdevcore/CommonData.h(120): error: no suitable conversion function from "dev::u256" to "uint8_t={unsigned char}" exists o_out[i - 1] = (typename Out::value_type)(uint8_t)v; detected during instantiation of "void dev::toBigEndian(T, Out &) [with T=dev::u256, Out=std::string]" at line 137
The build logs are attached.
Any suggestions?
Ubuntu14.04_GNU_libethereum-build_bot-20160325182012.txt
Ubuntu14.04_INTEL_libethereum-build_bot-20160325183854.txt
The text was updated successfully, but these errors were encountered: