rnk added a comment.

In http://reviews.llvm.org/D18328#379824, @rsmith wrote:

> I would much prefer for us to, say, provide a <complex> header that wraps the 
> system one and does something like
>
>   // <complex>
>   #pragma clang cuda_implicit_host_device {
>   #include_next <complex>
>   #pragma clang cuda_implicit_host_device }
>   
>
> or to provide an explicit list of the functions that we're promoting to 
> `__host__` `__device__`, or to require people to use a CUDA-compatible 
> standard library if they want CUDA-compatible standard library behaviour.


I don't really like include_next wrapper headers, but adding a pragma spelling 
of the cuda device attributes might be nice. There would still be issues with 
the streaming operators, though.


================
Comment at: include/clang/Driver/Options.td:383-384
@@ -382,2 +382,4 @@
   HelpText<"Enable device-side debug info generation. Disables ptxas 
optimizations.">;
+def cuda_allow_std_complex : Flag<["--"], "cuda-allow-std-complex">,
+  HelpText<"Allow CUDA device code to use definitions from <complex>, other 
than operator>> and operator<<.">;
 def cuda_path_EQ : Joined<["--"], "cuda-path=">, Group<i_Group>,
----------------
jlebar wrote:
> tra wrote:
> > rsmith wrote:
> > > I don't think it's reasonable to have something this hacky / arbitrary in 
> > > the stable Clang driver interface.
> > What would be a better way to enable this 'feature'? I guess we could live 
> > with -Xclang -fcuda-allow-std-complex for now, but that does not seem to be 
> > particularly good way to give user control, either.
> > 
> > Perhaps we should have some sort of --cuda-enable-extension=foo option to 
> > control CUDA hacks.
> > I don't think it's reasonable to have something this hacky / arbitrary in 
> > the stable Clang driver interface.
> 
> This is an important feature for a lot of projects, including tensorflow and 
> eigen.  No matter how we define the flag, I suspect people are going to use 
> it en masse.  (Most projects I've seen pass the equivalent flag to nvcc.)  At 
> the point that many or even most projects are relying on it, I'd suspect 
> we'll have difficulty changing this flag, regardless of whether or not it is 
> officially part of our stable API.
> 
> There's also the issue of discoverability.  nvcc actually gives a nice error 
> message when you try to use std::complex -- it seems pretty unfriendly not to 
> even list the relevant flag in clang --help.
> 
> I don't feel particularly strongly about this, though -- I'm more concerned 
> about getting something that works.
What if we had a catchall nvcc quirks mode flag similar to -fms-compatibility? 
We probably don't want a super fine grained LangOpt like this.


http://reviews.llvm.org/D18328



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to