On Oct 27, 2010, at 4:40 PM, Satish Balay wrote:

> petscvec.h:#define VecType char*

hmm, is there any reason we can't/shouldn't use a typedef for our VecType (and 
its many friends)?

   Barry

> 
> Becuase petsc does #define [and not typedef] - the namespace doesn't
> protect the multiple usage of VecType.
> 
> One way to track whats hapenning with compile is to get the preprocessed
> code [and see the order in which includes are used - and how these #defines
> get expanded].
> 
> make CFLAGS=-E source.o
> 
> [and the output file source.o will actually be preprocessed c code -
> that can be checked with emacs]
> 
> Satish
> 
> 
> On Wed, 27 Oct 2010, Barry Smith wrote:
> 
>> 
>>  Sending this to petsc-dev for better brains then mine to look at.
>> 
>>   Barry
>> 
>> 
>> Begin forwarded message:
>> 
>>> From: Victor Minden <victorminden at gmail.com>
>>> Date: October 27, 2010 3:30:29 PM CDT
>>> To: Barry Smith <bsmith at mcs.anl.gov>
>>> Subject: Re: SACUDA - Cannot compile
>>> 
>>> Quick append: I realized that it would make the most sense to see if it 
>>> compiles at all with just smoothed_aggregation.h included, and it does.  
>>> This caused me to look further and see that the first line that kills the 
>>> compiler and the next few ones I looked at were trying to define and then 
>>> use a struct (inside many nested namespaces) called VecType, which rang a 
>>> bell--since vectype is a flag for petsc, I assume we have a 
>>> variable/struct/something somewhere that is causing the compiler to not let 
>>> us use it again--though it should be valid since it's in a namespace.  Is 
>>> this mangling/namespace collision/something of the sort?  What's the best 
>>> way around it?
>>> 
>>> 
>>> ---
>>> Victor L. Minden
>>> 
>>> Tufts University
>>> School of Engineering
>>> Class of 2012
>>> 
>>> 
>>> On Wed, Oct 27, 2010 at 4:21 PM, Victor Minden <victorminden at gmail.com> 
>>> wrote:
>>> I'm having trouble compiling with the new experimental versions of thrust 
>>> and cusp, but only the sacuda preconditioner is affected.  I pulled them 
>>> out of their respective hg repositories and edited the version numbers so 
>>> petsc would take them, and all the aijcuda and veccuda stuff seems to 
>>> compile fine.  However, when the compile gets to sacuda.cu, I get a whole 
>>> bunch of
>>> 
>>> /usr/local/cuda/bin/../include/thrust/detail/device/cuda/detail/b40c/vector_types.h(37):
>>>  error: expected an identifier
>>> 
>>> and similar errors in two different files (make.log attached).
>>> 
>>> I pulled everything out of sacuda.cu except for the include statements (end 
>>> of email[1]), but it still says the same thing.  Looking around online, I 
>>> guess this could be a C/C++ problem, maybe needing some extern magic or 
>>> something?  The internet is not being very helpful.  
>>> 
>>> The files that are affecting things were both added to Thrust *after* the 
>>> last time we've looked at sacuda, vector_types.h [2] and 
>>> radixsort_scanscatter_kernel.h [3].  These appear to be both part of a 
>>> bundled radixsort code from an external source.  The files are protected at 
>>> the top by a #pragma once, but I think we're ignoring pragmas (? or at 
>>> least we have the flag -Wnounknownpragmas) so I tried popping in an if 
>>> !defined and such to no avail.
>>> 
>>> Does anything come to mind as a likely source of this problem?
>>> 
>>> -Victor
>>> 
>>> 
>>> 
>>> 
>>> [1]
>>> #define PETSCKSP_DLL
>>> 
>>> /*  -------------------------------------------------------------------- */
>>> 
>>> /* 
>>>   Include files needed for the CUDA Smoothed Aggregation preconditioner:
>>>     pcimpl.h - private include file intended for use by all preconditioners 
>>> */
>>> 
>>> #include "private/pcimpl.h"   /*I "petscpc.h" I*/
>>> #include "../src/mat/impls/aij/seq/aij.h"
>>> #include <cusp/precond/smoothed_aggregation.h>
>>> #include "../src/vec/vec/impls/dvecimpl.h"
>>> #include "../src/mat/impls/aij/seq/seqcuda/cudamatimpl.h"
>>> 
>>> 
>>> [2]
>>> http://code.google.com/p/thrust/source/browse/thrust/detail/device/cuda/detail/b40c/vector_types.h
>>> 
>>> [3]
>>> http://code.google.com/p/thrust/source/browse/thrust/detail/device/cuda/detail/b40c/radixsort_scanscatter_kernel.h
>>> ---
>>> Victor L. Minden
>>> 
>>> Tufts University
>>> School of Engineering
>>> Class of 2012
>>> 
>> 
>> 
> 


Reply via email to