[Paraview] building paraview 3.98.1 with the pgi compiler (13.3.0-12.5.0)
Robert Maynard
robert.maynard at kitware.com
Thu Jul 18 17:19:25 EDT 2013
It really doesn't matter, but no compiler will compile the comparison
of the dereferenced iterator to rend(). Somehow your local copy was
modified, as I can't find any mention of *it in any revision of that
file in git.
On Thu, Jul 18, 2013 at 5:14 PM, Hong Yi <hongyi at renci.org> wrote:
> Just realized gnu compilers used const_reverse_iterator and did not have this "*it" problem as I noted below. Not sure how this "*it" is generated. I did not make any modifications to any other files. The only thing I did is to undefined VTK_CONST_REVERSE_ITERATOR_COMPARISON.
>
> Thanks,
> Hong
>
> -----Original Message-----
> From: paraview-bounces at paraview.org [mailto:paraview-bounces at paraview.org] On Behalf Of Hong Yi
> Sent: Thursday, July 18, 2013 5:06 PM
> To: Robert Maynard
> Cc: paraview at paraview.org
> Subject: Re: [Paraview] building paraview 3.98.1 with the pgi compiler (13.3.0-12.5.0)
>
> OK. On line 167 of vtkAbstractContextItem.cxx, the '*' before 'it' should be removed. That is, to replace " this->Children->rbegin(); *it != this->Children->rend(); ++it" with " this->Children->rbegin(); it != this->Children->rend(); ++it"
> This looks like a bug to me, but it can build with gnu compilers, I guess pgi compiler is still more strict in this case.
>
> I am rebuilding ParaView after making this change. I am positive this is the caveat that generates the error after VTK_CONST_REVERSE_ITERATOR_COMPARISON is undefined.
>
> Thanks,
> Hong
>
> -----Original Message-----
> From: paraview-bounces at paraview.org [mailto:paraview-bounces at paraview.org] On Behalf Of Hong Yi
> Sent: Thursday, July 18, 2013 4:11 PM
> To: Robert Maynard
> Cc: paraview at paraview.org
> Subject: Re: [Paraview] building paraview 3.98.1 with the pgi compiler (13.3.0-12.5.0)
>
> After VTK_CONST_REVERSE_ITERATOR_COMPARISON is undefined, I got the following error:
> ----------------------------------
> "/ccs/proj/nfi010/ParaView/ParaView-3.98.1-source/VTK/Rendering/Context2D/vtkAbstractContextItem.cxx", line 167: error:
> no operator "!=" matches these operands
> operand types are: vtkAbstractContextItem * !=
> std::reverse_iterator<vtkAbstractContextItem **>
> this->Children->rbegin(); *it != this->Children->rend(); ++it)
> ^
> -----------------------------------
>
> so now it complains about reverse_iterator as well. Then I modified my test.cpp to replace const_reverse_iterator with reverse_iterator, this time it compiles successfully with the same pgi compiler. Now I am really puzzled. It looks like pgi compiler works with reverse_iterator, but why it complains on reverse_iterator as well when I built ParaVIew with VTK_CONST_REVERSE_ITERATOR_COMPARISON undefined? Any idea or explanation on this?
>
> Thanks,
> Hong
> ________________________________________
> From: Robert Maynard [robert.maynard at kitware.com]
> Sent: Thursday, July 18, 2013 3:43 PM
> To: Hong Yi
> Cc: Parete-Koon, Suzanne T.; paraview at paraview.org
> Subject: Re: [Paraview] building paraview 3.98.1 with the pgi compiler (13.3.0-12.5.0)
>
> vtkContextScenePrivate.h looks at VTK_CONST_REVERSE_ITERATOR_COMPARISON.
>
> If VTK_CONST_REVERSE_ITERATOR_COMPARISON is defined we set vtkContextScenePrivate::const_reverse_iterator to be a:
> std::vector<vtkAbstractContextItem*>::const_reverse_iterator.
>
> If VTK_CONST_REVERSE_ITERATOR_COMPARISON is not defined we set vtkContextScenePrivate::const_reverse_iterator to be a:
> std::vector<vtkAbstractContextItem*>::reverse_iterator.
>
> When you make sure that VTK_CONST_REVERSE_ITERATOR_COMPARISON is not defined what is the error message you are getting?
>
> On Thu, Jul 18, 2013 at 3:23 PM, Hong Yi <hongyi at renci.org> wrote:
>> Thanks, Robert. It is good to know that VTK can be used with compilers that do not support const_reverse_iterator. I did try and commented out VTK_CONST_REVERSE_ITERATOR_COMPARISON definition in vtkConfigure.h. In fact, I changed the CMakeList.txt in ParaView_Source_Dir/VTK to have it off, so after I reconfigured and regenerated paraview, VTK_CONST_REVERSE_ITERATOR_COMPARISON definition line is commented out in vtkConfigure.h. So I assume this means VTK_CONST_REVERSE_ITERATOR_COMPARISON is not defined. However, the same error got raised in the same reverse iterator operations in vtkAbstractContextItem.cxx. Without understanding how VTK works internally to honor this VTK_CONST_REVERSE_ITERATOR_COMPARISON definition, I am thinking those same reverse iterator operations in vtkAbstractContextItem.cxx should not be called if VTK_CONST_REVERSE_ITERATOR_COMPARISON is not defined in this case. Could you shed some lights on this?
>>
>> Thanks,
>> Hong
>>
>> -----Original Message-----
>> From: Robert Maynard [mailto:robert.maynard at kitware.com]
>> Sent: Thursday, July 18, 2013 3:09 PM
>> To: Hong Yi
>> Cc: Parete-Koon, Suzanne T.; paraview at paraview.org
>> Subject: Re: [Paraview] building paraview 3.98.1 with the pgi compiler
>> (13.3.0-12.5.0)
>>
>> So I misread the header that parses
>> VTK_CONST_REVERSE_ITERATOR_COMPARISON. If VTK_CONST_REVERSE_ITERATOR_COMPARISON is set, we are stating that compiler DOES support const_reverse_iterator comparison, if it is not set the compiler doesn't.
>>
>> I expect due to cross compilation the
>> VTK_CONST_REVERSE_ITERATOR_COMPARISON is being defined in your case, while you actually want it not defined.
>>
>> VTK can be used with compilers like pgi that have a broken const_reverse_iterator implementation.
>>
>> On Thu, Jul 18, 2013 at 2:06 PM, Hong Yi <hongyi at renci.org> wrote:
>>> I did an experiment to use pgi compiler to compile a simple program test.cpp like the following:
>>> -----------------------
>>> #include <vector>
>>> int main()
>>> {
>>> std::vector<int> test;
>>> std::vector<int>::const_reverse_iterator it = test.rbegin();
>>> it != test.rend();
>>> return 0;
>>> }
>>> -------------------------
>>> by running "pgCC test.cpp -o test" then I got the same error below:
>>> --------------------------
>>> "test.cpp", line 6: error: no operator "!=" matches these operands
>>> operand types are: std::reverse_iterator<const int *> !=
>>> std::reverse_iterator<int *>
>>> it != test.rend();
>>> ^
>>> --------------------------
>>>
>>> So I think the pgi compiler included in PrgEnv-pgi/4.1.40 module I am currently using on Titan does not support REVERSE_ITERATOR_COMPARISON. My question is whether VTK/ParaView somehow accommodates this and has logic to get around using this REVERSE_ITERATOR_COMPARISON when the variable VTK_CONST_REVERSE_ITERATOR_COMPARISON is not defined. I did try and undefined VTK_CONST_REVERSE_ITERATOR_COMPARISON, but the same error remains. I checked the file VTK/Rendering/Context2D/vtkAbstractContextItem.cxx where the error is raised and did not find any logic to handle the case where VTK_CONST_REVERSE_ITERATOR_COMPARISON is not defined. Does this mean ParaView cannot be built using a compiler that does not support REVERSE_ITERATOR_COMPARISON?
>>>
>>> Thanks,
>>> Hong
>>>
>>> ________________________________________
>>> From: paraview-bounces at paraview.org [paraview-bounces at paraview.org]
>>> on behalf of Hong Yi [hongyi at renci.org]
>>> Sent: Tuesday, July 16, 2013 1:36 PM
>>> To: Robert Maynard; Parete-Koon, Suzanne T.
>>> Cc: paraview at paraview.org
>>> Subject: Re: [Paraview] building paraview 3.98.1 with the pgi compiler (13.3.0-12.5.0)
>>>
>>> Just a supplemental note to the previous message below: if I don't run ccmake to reconfigure and regenerate, and directly run "make" after changing the line to "#define VTK_CONST_REVERSE_ITERATOR_COMPARISON 1" the same error/issue still remains. Looks like this VTK_CONST_REVERSE_ITERATOR_COMPARISON, although defined in the vtkConfigure.h, is not honored by the pgi compiler on Titan. Any suggestions/workarounds to get around this issue?
>>>
>>> Thanks,
>>> Hong
>>>
>>> -----Original Message-----
>>> From: paraview-bounces at paraview.org
>>> [mailto:paraview-bounces at paraview.org] On Behalf Of Hong Yi
>>> Sent: Monday, July 15, 2013 12:49 PM
>>> To: Robert Maynard; Parete-Koon, Suzanne T.
>>> Cc: paraview at paraview.org
>>> Subject: Re: [Paraview] building paraview 3.98.1 with the pgi
>>> compiler
>>> (13.3.0-12.5.0)
>>>
>>> Thanks, Robert. I have been working with Suzanne on this issue. The line in vtkConfigure.h is:
>>> #define VTK_CONST_REVERSE_ITERATOR_COMPARISON
>>>
>>> We changed it to be
>>> #define VTK_CONST_REVERSE_ITERATOR_COMPARISON 1 but after reconfiguring and regenerating, the line changes back to the original "#define VTK_CONST_REVERSE_ITERATOR_COMPARISON"
>>>
>>> Because of this, rebuilding ParaView on Titan with pgi compiler generates the same error.
>>>
>>> Any further suggestions on this issue?
>>>
>>> Thanks,
>>> Hong
>>>
>>>
>>> ________________________________________
>>> From: paraview-bounces at paraview.org [paraview-bounces at paraview.org]
>>> on behalf of Robert Maynard [robert.maynard at kitware.com]
>>> Sent: Wednesday, July 03, 2013 11:10 AM
>>> To: Parete-Koon, Suzanne T.
>>> Cc: paraview at paraview.org
>>> Subject: Re: [Paraview] building paraview 3.98.1 with the pgi
>>> compiler
>>> (13.3.0-12.5.0)
>>>
>>> We have seen this issue with const_reverse_iterators before on older versions of gcc. What is the value of VTK_CONST_REVERSE_ITERATOR_COMPARISON in the build directory file Common/Core/vtkConfigure.h?
>>>
>>> On Wed, Jul 3, 2013 at 10:26 AM, Parete-Koon, Suzanne T.
>>> <paretekoonst at ornl.gov> wrote:
>>>> We are having difficulty building paraview with the pgi compiler on a large cray system. pgCC does not seem to recognize the "!=" for a certain class of functions. We have tried several versions of the pgi compiler. Has anyone encountered this? Is there a patch or a workaround?
>>>>
>>>> Here is the error.
>>>>
>>>> "/ccs/proj/nfi010/ParaView/ParaView-3.98.1-source/VTK/Rendering/Context2D/vtkAbstractContextItem.cxx", line 167: error:
>>>> no operator "!=" matches these operands operand types are:
>>>> vtkContextScenePrivate::const_reverse_iterator
>>>> != std::reverse_iterator<vtkAbstractContextItem **>
>>>> this->Children->rbegin(); it != this->Children->rend(); ++it)
>>>> ^
>>>> Many thanks,
>>>>
>>>>
>>>> SPK
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the ParaView Wiki at:
>>>> http://paraview.org/Wiki/ParaView
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.paraview.org/mailman/listinfo/paraview
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the ParaView Wiki at:
>>> http://paraview.org/Wiki/ParaView
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.paraview.org/mailman/listinfo/paraview
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the ParaView Wiki at:
>>> http://paraview.org/Wiki/ParaView
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.paraview.org/mailman/listinfo/paraview
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the ParaView Wiki at:
>>> http://paraview.org/Wiki/ParaView
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.paraview.org/mailman/listinfo/paraview
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
More information about the ParaView
mailing list