New user self-registration is disabled due to spam. Please email eigen-core-team @ lists.tuxfamily.org if you need an account.
Before reporting a bug, please make sure that your Eigen version is up-to-date!
Bug 1324 - Compilation error(s) when compiling 3.3rc1 with CUDA 8 on Windows
Summary: Compilation error(s) when compiling 3.3rc1 with CUDA 8 on Windows
Status: RESOLVED FIXED
Alias: None
Product: Eigen
Classification: Unclassified
Component: Core - general (show other bugs)
Version: 3.3 (current stable)
Hardware: GPU (CUDA) Windows
: Normal Compilation Problem
Assignee: Nobody
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 3.3
  Show dependency treegraph
 
Reported: 2016-10-09 14:07 UTC by Avi Ginsburg
Modified: 2016-10-13 13:12 UTC (History)
3 users (show)



Attachments

Description Avi Ginsburg 2016-10-09 14:07:24 UTC
I was excited when I saw that CUDA 7.5 (with Visual Studio 2013/15) compiled Eigen 3.3rc1 w/o errors (just a bunch of warnings). When testing with CUDA 8.0 and VS2015 my hopes were wiped out. It seems that some of the errors from [bug 735](http://eigen.tuxfamily.org/bz/show_bug.cgi?id=735) are back. I get

  eigen\src/Core/Ref.h(89): error : "operator=" has already been declared in the current scope
  eigen\src/Core/Block.h(111): error : "operator=" has already been declared in the current scope

when compiling 

  // kernel.cu
  #include "Eigen3.3rc1/Eigen/Core"

with VS2015 I get two errors:

eigen3.3rc1\eigen\src/Core/Ref.h(89): error: "operator=" has already been declared in the current scope
          detected during instantiation of class "Eigen::RefBase<Derived> [with
Derived=Eigen::Ref<PlainObjectType, Options, StrideType>]"
(191): here

c:\include\eigen3.3rc1\eigen\src/Core/Block.h(111): error: "operator=" has already been declared in the current scope
          detected during instantiation of class "Eigen::Block<XprType, BlockRow
s, BlockCols, InnerPanel> [with XprType=VectorType, BlockRows=<expression>, Bloc
kCols=<expression>, InnerPanel=false]"
c:\include\eigen3.3rc1\eigen\src/Core/VectorBlock.h(57): here

Compiling the same with VS2013 (CUDA 8) does *not* result in these errors (works fine).
Comment 1 Gael Guennebaud 2016-10-12 12:22:42 UTC
Could you help us finding a workaround?

To this end, have a look at file Eigen/src/Core/util/Macros.h, lines 804-821,

and figure out which version is working for you?

thanks.
Comment 2 Avi Ginsburg 2016-10-13 08:53:47 UTC
I've created a patch that I haven't thoroughly tested (works on my current project), but have submitted as a pull request (https://bitbucket.org/eigen/eigen/pull-requests/236).
Comment 3 Gael Guennebaud 2016-10-13 13:12:04 UTC
Merged: https://bitbucket.org/eigen/eigen/commits/59db0512e12d

Note You need to log in before you can comment on or make changes to this bug.