jlebar added inline comments.

================
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:
> rnk wrote:
> > 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.
> An alternative wrt the flag is to enable it by default.  This would be 
> somewhat consistent with existing behavior, wherein we make most std math 
> functions available without a special flag, even though they're not 
> technically host-device.  The main difference here is that there we're 
> matching nvcc's default behavior, whereas here we're actually going further 
> than nvcc -- nvcc by default doesn't let you touch std::complex from device 
> code at all, and with a flag, you can touch its *constexpr* functions.  Which 
> is not actually very much.
> 
> Nonetheless, since the user-visible effect is consistent with our approach of 
> making std math stuff available, and since this shouldn't make us reject code 
> nvcc accepts, I'd be more OK hiding the flag to turn it off.
> What if we had a catchall nvcc quirks mode flag similar to -fms-compatibility?

I think we midair'ed on this.  See above comment about turning this flag on by 
default -- calling this "nvcc compat" wouldn't quite be right.  We could 
certainly have a broader flag, but I'm not sure at the moment what else would 
reasonably go in with this one.


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