On 3/12/19 8:49 PM, Balay, Satish wrote:

1. You might want to check 'Feature-request: Must use GNU compilers
with CUDA' thread on petsc-maint.

Yes, I see this thread now. Thanks.



2. what does nvcc use internally on summit?

It defaults to the GCC suite but it is supposed to also support the PGI and XLF 
compilers on Summit.



3. On linux - nvcc defaults to using g++ internally (as far as I know)
- so we added that check. But you might want to remove that check - if
things work on summit

4. -ccbin is a wierd option - which I don't undersstand.

--compiler-bindir <path>                   (-ccbin)
        Specify the directory in which the host compiler executable resides.  
The
        host compiler executable name can be also specified to ensure that the 
correct
        host compiler is selected.  In addition, driver prefix options 
('--input-drive-prefix',
        '--dependency-drive-prefix', or '--drive-prefix') may need to be 
specified,
        if nvcc is executed in a Cygwin shell or a MinGW shell on Windows.

i.e you specify a PATH. But what binary does it pick up from that
PATH? The way I understood is - it looks for an alternate 'g++' in the
specified path. [well - again this is based on the usual linux
installs of cuda]

This is a really kludgy option. You can specify a directory (and then I think 
it just looks for g++ in there?) but you can also specify a path to xlc++ or 
another compiler. (There appears to be no way to control this via an 
environment variable, strangely.) I will see if setting '-ccbin' to the path 
for whatever C++ compiler has been specified to configure.py works.

--Richard



Satish


On Wed, 13 Mar 2019, Mills, Richard Tran via petsc-dev wrote:



Fellow PETSc developers,

If I try to configure PETSc with CUDA support on the ORNL Summit system using 
non-GNU compilers, I run into an error due to the following code in 
packages/cuda.py:

  def configureTypes(self):
    import config.setCompilers
    if not config.setCompilers.Configure.isGNU(self.setCompilers.CC, self.log):
      raise RuntimeError('Must use GNU compilers with CUDA')
  ...

Is this just because this code predates support for other host compilers with 
nvcc, or is there perhaps some more subtle reason that I, with my inexperience 
using CUDA, don't know about? I'm guessing that I just need to add support for 
using '-ccbin' appropriately to set the location of the non-GNU host compiler, 
but maybe there is something that I'm missing. I poked around in the petsc-dev 
mailing list archives and can find a few old threads on using non-GNU 
compilers, but I'm not sure what conclusions were reached.

Best regards,
Richard








Reply via email to