<br><br><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
balay@bb30:~/ex&gt;cat <a href="http://ex1.cu" target="_blank">ex1.cu</a><br>
#include &quot;petsc.h&quot;<br>
#undef VecType<br>
<br>
#include&lt;iostream&gt;<br>
#include &lt;cusp/krylov/cg.h&gt;<br>
<br>
int main(int argc,char **argv)<br>
{<br>
  PetscErrorCode ierr;<br>
  ierr = PetscInitialize(&amp;argc,&amp;argv,(char *)0,(char*)0);CHKERRQ(ierr);<br>
<div class="im">  std::cout&lt;&lt;&quot;Hello World!&quot;&lt;&lt;std::endl;<br>
</div>  ierr = PetscFinalize();<br>
  return 0;<br>
}<br>
<br></blockquote><div> </div><div>That almost works except that petsc.h doesn&#39;t include all definitions/declarations.  I have a function which cannot be compiled by just adding petsc.h with errors like:<br>error: identifier &quot;CUSPARRAY&quot; is undefined<br>
error: identifier &quot;Mat_SeqAIJ&quot; is undefined<br>error: identifier &quot;Mat_SeqAIJCUSP&quot; is undefined<br>ect. <br>But it can be compiled if I add the following in addition to petsc.h<br><br>PETSC_CUDA_EXTERN_C_BEGIN<br>
#include &quot;../src/mat/impls/aij/seq/aij.h&quot;          /*I &quot;petscmat.h&quot; I*/<br>#include &quot;petscbt.h&quot;<br>#include &quot;../src/vec/vec/impls/dvecimpl.h&quot;<br>#include &quot;private/vecimpl.h&quot;<br>
PETSC_CUDA_EXTERN_C_END<br>#undef VecType<br>#include &quot;../src/mat/impls/aij/seq/seqcusp/cuspmatimpl.h&quot;<br><br>What&#39;s the minimal set of headers I can add to petsc.h such that I can call alll petsc functions and use all petsc type?<br>
Thanks.<br><br><br>Shiyuan <br><br><br><br><br><br><br><br> </div><br></div><br>