Ticket #27 (closed defect: fixed)

Opened 4 years ago

Last modified 4 years ago

fold, foldSeg and scan fail to compile for tuple types

Reported by: seanl Owned by: tmcdonell
Priority: major Milestone:
Component: CUDA backend Version: 0.8.0.0
Keywords: Cc:

Description (last modified by seanl) (diff)

The fold.inl fails to compile when TyOut is a struct. This is because the shared array s_data is declared with the volatile keyword to enable the warp level programming, and there is no copy constructor and no assignment operator defined for copying or assigning a value of the type TyOut to a variable of type volatile TyOut.

The following error messages are generated by nvcc.

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(71): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(74): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(74): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(75): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(75): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(76): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(76): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(84): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(84): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(85): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(85): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(86): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(86): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(87): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(87): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(88): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(88): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(89): error: class "TyOut" has no suitable copy constructor

$HOME/.cabal/share/accelerate-0.8.0.0/fold.inl(89): error: no operator "=" matches these operands
            operand types are: volatile TyOut = TyOut

Change History

Changed 4 years ago by seanl

  • description modified (diff)

Changed 4 years ago by tmcdonell

I had forgotten about this addition; Fermi architectures require shared memory to be declared volatile, but there is no default copy procedure for volatile types. Scan and segmented reduction will also be affected.

Changed 4 years ago by tmcdonell

  • status changed from new to assigned
  • summary changed from fold.inl fails to work with arrays of structs. to fold, foldSeg and scan fail to compile for tuple types

Changed 4 years ago by tmcdonell

Sun Sep 19 21:25:03 EST 2010  Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>
  * partition shared memory in tuple-of-arrays style

The Fermi device I had access to has been down for a while now, so I haven't been able to test this on that architecture yet.

Changed 4 years ago by tmcdonell

  • status changed from assigned to closed
  • resolution set to fixed
Thu Dec  9 16:04:49 EST 2010  Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>
  * add volatile qualifier to output array types
Note: See TracTickets for help on using tickets.