headmyshoulder / odeint-v2

odeint - solving ordinary differential equations in c++ v2
http://headmyshoulder.github.com/odeint-v2/
Other
342 stars 101 forks source link

VexCL Example Compilation Errors #105

Closed agerlach closed 11 years ago

agerlach commented 11 years ago

I am having trouble compiling your simple VexCL example using the most current version of VexCL (v0.8.5). I get a long list of errors. All the errors seem to originate from the fact that the number of template argumentsfor vex::multivector has changed at some point. The errors indicate that their should be 2, but 3 are being supplied.

What version of VexCL has odeint been tested on? Is there simply a vexcl tag I could checkout that will fix these errors?

ddemidov commented 11 years ago

Hi,

I am the author of VexCL, so please excuse me for the confusion :). Current version of VexCL does have only two template parameters for multivector. There is a pull request (#98) that should fix the issue. Could you please try and apply the changes to your local clone of odeint, and see if those work?

agerlach commented 11 years ago

I'm sorry but I an new to using git and github. How do I do that?

ddemidov commented 11 years ago

This should do it:

git clone https://github.com/headmyshoulder/odeint-v2.git
cd odeint-v2
git remote add ddemidov https://github.com/ddemidov/odeint-v2.git
git fetch ddemidov
git merge ddemidov/vexcl-0.8-multivector-interface-changed
headmyshoulder commented 11 years ago

Sorry, I forgot to apply Denis pull request. I will do it NOW.

Thank you, agerlach for reporting this problem and thanks you Denis for your support!

On 10/25/2013 08:38 PM, Denis Demidov wrote:

This should do it:

git clone https://github.com/headmyshoulder/odeint-v2.git cd odeint-v2 git remote add ddemidov https://github.com/ddemidov/odeint-v2.git git fetch ddemidov git merge ddemidov/vexcl-0.8-multivector-interface-changed

— Reply to this email directly or view it on GitHub https://github.com/headmyshoulder/odeint-v2/issues/105#issuecomment-27115845.

agerlach commented 11 years ago

Thanks. I was able to update my repo to the latest version and helped eliminate those errors. Unfortunetly, I now have new errors which seem to be coming from the VexCL side of things. Even with an empty main() adding

#include <vexcl/vexcl.hpp>

produces over 200 errors. I don't even know where to start.

I had been using thrust and CUDA to do parallel parameters studies quite successfully but as I started considering more complex ODEs the need to use nested zip_iterators led me to try to find an easier solution. By looking at the odeint examples, it sure seems like using VexCL will be much easier.

Here are a few of the errors: ‘BOOST_PP_REPEAT_FROM_TO_M_1’ has not been declared vexclTry line 54, external location: /usr/local/include/boost/preprocessor/repetition/repeat_from_to.hpp C/C++ Problem

‘vector_expr_grammar’ was not declared in this scope vexclTry line 101, external location: /home/agerlach/git/vexcl/vexcl/vector_view.hpp

ddemidov commented 11 years ago

What version of boost do you use? On Oct 25, 2013 3:05 PM, "agerlach" notifications@github.com wrote:

Thanks. I was able to update my repo to the latest version and helped eliminate those errors. Unfortunetly, I now have new errors which seem to be coming from the VexCL side of things. Even with an empty main() adding

include <vexcl/vexcl.hpp>

produces over 200 errors. I don't even know where to start.

I had been using thrust and CUDA to do parallel parameters studies quite successfully but as I started considering more complex ODEs the need to use nested zip_iterators led me to try to find an easier solution. By looking at the odeint examples, it sure seems like using VexCL will be much easier.

Here are a few of the errors: ‘BOOST_PP_REPEAT_FROM_TO_M_1’ has not been declared vexclTry line 54, external location: /usr/local/include/boost/preprocessor/repetition/repeat_from_to.hpp C/C++ Problem

‘vector_expr_grammar’ was not declared in this scope vexclTry line 101, external location: /home/agerlach/git/vexcl/vexcl/vector_view.hpp

— Reply to this email directly or view it on GitHubhttps://github.com/headmyshoulder/odeint-v2/issues/105#issuecomment-27121627 .

agerlach commented 11 years ago

1.54

ddemidov commented 11 years ago

May be we should move the discussion to vexcl issue list. I am on the road currently, but if you provide more details I'll try to help you on Monday. On Oct 25, 2013 4:06 PM, "agerlach" notifications@github.com wrote:

1.54

— Reply to this email directly or view it on GitHubhttps://github.com/headmyshoulder/odeint-v2/issues/105#issuecomment-27125777 .

ddemidov commented 11 years ago

@agerlach, I can not reproduce the issue with gcc v4.6, 4.7, 4.8 or clang 3.3. What compiler do you use? Could you provide the compilation command line?

agerlach commented 11 years ago

@ddemidov , I think a lot the problems I was having was due to my installation of OpenCL. I did a complete reinstall and I have not seen any issues like those previously reported. I was using the OpenCL libraries supplied with the CUDA drivers. This time I installed the intel SDK for OpenCL.

I am still getting some other errors I cannot explain though. On Ubuntu 12.04 with gcc 4.6.3 I try to compile the devlist.cpp example with

g++ devlist.cpp -std=c++0x -I/home/agerlach/git/vexcl -lOpenCL -o devlist

I get the following errors: /tmp/ccxwLEtG.o: In function __static_initialization_and_destruction_0(int, int)': devlist.cpp:(.text+0xa95): undefined reference toboost::system::generic_category()' devlist.cpp:(.text+0xaa1): undefined reference to boost::system::generic_category()' devlist.cpp:(.text+0xaad): undefined reference toboost::system::system_category()'

Thank you again for your time and patients!

ddemidov commented 11 years ago

You will need to link against libboost_system:

g++ devlist.cpp -std=c++0x -I/home/agerlach/git/vexcl -lOpenCL -lboost_system -o devlist
agerlach commented 11 years ago

Thanks, that fixed that problem.

So, what I did was go back to make sure I could compile a simple OpenCL example and then a VexCL example. Now that I know both OpenCL and VexCL are working I tried to compile the VexCL odeint example lorenz_ensemble.cpp but, even after pulling odeint with Denis's pull request I still have errors regarding the templates arguments for vex::multivector.

Both vexcl_algebra_dispatcher.hpp and vexcl_norm_inf.hpp in $BOOSTHOME/numeric/odeint/external/vexcl need to be modified as well to reflect these changes. Its appears that the pull request only modified vexcl_resize.hpp

After removing the "own" arguments in these two files I was able to compile lorenz_ensemble.cpp

ddemidov commented 11 years ago

Sorry about that, there is a new pull request (#106) that addresses the issue.

agerlach commented 11 years ago

No, thank you for all your help and patients and such awesome opensource tools!