CNTK icon indicating copy to clipboard operation
CNTK copied to clipboard

cub 1.8.0 compatibility issues

Open petronny opened this issue 7 years ago • 2 comments

1.8.0    02/15/2018
    - API change: change to the interfaces of cub::ShuffleIndex, cub::ShuffleUp, and 
      cub::ShuffleDown to better compute the PTX shfl control constant for 
      logical warps smaller than 32 threads 
    - Bug fixes: 
        - Issue #112: Bug in WarpScan's broadcast of warp-wide aggregate for 
          logical warps < 32 threads 
        
          		  
//-----------------------------------------------------------------------------

1.7.5    02/08/2018
    - Added radix-sorting support for __half keys
    - Updated sorting policies for improved 8b-key performance 
    - Bug fixes: 
        - Syntax tweaks to mollify Clang
        - Issue #127: DeviceRunLengthEncode::Encode returns wrong results 
        - Issue #128: 7-bit sorting passes fail for sm61 w/ large-values

I get errors about the cub::Shuffle stuffs when compiling cntk.

Source/Math/CntkBatchNormalization.cuh(120): error: no instance of function template "cub::ShuffleIndex" matches the argument list
            argument types are: (int, int, int, unsigned int)
          detected during:
            instantiation of "T Microsoft::MSR::CNTK::Shuffle(T, int, unsigned int) [with T=int]"
(497): here
            instantiation of "void Microsoft::MSR::CNTK::kComputeSpatialBatchMeanAndInvStdDev<BlockDimX,BlockDimY,U,ElemType,StatType>(int, int, int, const ElemType *, double, double, StatType *, StatType *, double, StatType *, StatType *) [with BlockDimX=8, BlockDimY=16
, U=4, ElemType=float, StatType=float]"
(634): here
            instantiation of "void Microsoft::MSR::CNTK::ComputeSpatialBatchMeanAndInvStdDev<U>::Call(size_t, size_t, size_t, const ElemType *, double, double, StatType *, StatType *, double, StatType *, StatType *, cudaStream_t) [with U=4, ElemType=float, StatType=float
]"
(175): here
            instantiation of "void Microsoft::MSR::CNTK::Call2<Func,T1,T2,Targs...>(size_t, Targs...) [with Func=Microsoft::MSR::CNTK::ComputeSpatialBatchMeanAndInvStdDev, T1=float, T2=float, Targs=<size_t, size_t, size_t, float *, double, double, float *, float *, doubl
e, float *, float *, cudaStream_t>]"
Source/Math/GPUMatrix.cu(3449): here
            instantiation of "void Microsoft::MSR::CNTK::GPUMatrix<ElemType>::BatchNormalizationForward(const Microsoft::MSR::CNTK::GPUMatrix<StatType> &, const Microsoft::MSR::CNTK::GPUMatrix<StatType> &, __nv_bool, double, double, Microsoft::MSR::CNTK::GPUMatrix<StatTy
pe> &, Microsoft::MSR::CNTK::GPUMatrix<StatType> &, Microsoft::MSR::CNTK::GPUMatrix<ElemType> &, double, Microsoft::MSR::CNTK::GPUMatrix<StatType> &, Microsoft::MSR::CNTK::GPUMatrix<StatType> &) const [with ElemType=float, StatType=float]"
Source/Math/GPUMatrix.cu(4979): here

Source/Math/CntkBatchNormalization.cuh(120): error: no instance of function template "cub::ShuffleIndex" matches the argument list
            argument types are: (float, int, int, unsigned int)
          detected during:
            instantiation of "T Microsoft::MSR::CNTK::Shuffle(T, int, unsigned int) [with T=float]"
(503): here
            instantiation of "void Microsoft::MSR::CNTK::kComputeSpatialBatchMeanAndInvStdDev<BlockDimX,BlockDimY,U,ElemType,StatType>(int, int, int, const ElemType *, double, double, StatType *, StatType *, double, StatType *, StatType *) [with BlockDimX=8, BlockDimY=16
, U=4, ElemType=float, StatType=float]"
(634): here
            instantiation of "void Microsoft::MSR::CNTK::ComputeSpatialBatchMeanAndInvStdDev<U>::Call(size_t, size_t, size_t, const ElemType *, double, double, StatType *, StatType *, double, StatType *, StatType *, cudaStream_t) [with U=4, ElemType=float, StatType=float
]"
(175): here
            instantiation of "void Microsoft::MSR::CNTK::Call2<Func,T1,T2,Targs...>(size_t, Targs...) [with Func=Microsoft::MSR::CNTK::ComputeSpatialBatchMeanAndInvStdDev, T1=float, T2=float, Targs=<size_t, size_t, size_t, float *, double, double, float *, float *, doubl
e, float *, float *, cudaStream_t>]"
Source/Math/GPUMatrix.cu(3449): here
            instantiation of "void Microsoft::MSR::CNTK::GPUMatrix<ElemType>::BatchNormalizationForward(const Microsoft::MSR::CNTK::GPUMatrix<StatType> &, const Microsoft::MSR::CNTK::GPUMatrix<StatType> &, __nv_bool, double, double, Microsoft::MSR::CNTK::GPUMatrix<StatTy
pe> &, Microsoft::MSR::CNTK::GPUMatrix<StatType> &, Microsoft::MSR::CNTK::GPUMatrix<ElemType> &, double, Microsoft::MSR::CNTK::GPUMatrix<StatType> &, Microsoft::MSR::CNTK::GPUMatrix<StatType> &) const [with ElemType=float, StatType=float]"
Source/Math/GPUMatrix.cu(4979): here

Source/Math/CntkBatchNormalization.cuh(120): error: no instance of function template "cub::ShuffleIndex" matches the argument list
            argument types are: (double, int, int, unsigned int)
          detected during:
            instantiation of "T Microsoft::MSR::CNTK::Shuffle(T, int, unsigned int) [with T=double]"
(503): here
            instantiation of "void Microsoft::MSR::CNTK::kComputeSpatialBatchMeanAndInvStdDev<BlockDimX,BlockDimY,U,ElemType,StatType>(int, int, int, const ElemType *, double, double, StatType *, StatType *, double, StatType *, StatType *) [with BlockDimX=8, BlockDimY=16
, U=4, ElemType=double, StatType=double]"
(634): here
            instantiation of "void Microsoft::MSR::CNTK::ComputeSpatialBatchMeanAndInvStdDev<U>::Call(size_t, size_t, size_t, const ElemType *, double, double, StatType *, StatType *, double, StatType *, StatType *, cudaStream_t) [with U=4, ElemType=double, StatType=doub
le]"
(175): here
            instantiation of "void Microsoft::MSR::CNTK::Call2<Func,T1,T2,Targs...>(size_t, Targs...) [with Func=Microsoft::MSR::CNTK::ComputeSpatialBatchMeanAndInvStdDev, T1=double, T2=double, Targs=<size_t, size_t, size_t, double *, double, double, double *, double *,
double, double *, double *, cudaStream_t>]"
Source/Math/GPUMatrix.cu(3449): here
            instantiation of "void Microsoft::MSR::CNTK::GPUMatrix<ElemType>::BatchNormalizationForward(const Microsoft::MSR::CNTK::GPUMatrix<StatType> &, const Microsoft::MSR::CNTK::GPUMatrix<StatType> &, __nv_bool, double, double, Microsoft::MSR::CNTK::GPUMatrix<StatTy
pe> &, Microsoft::MSR::CNTK::GPUMatrix<StatType> &, Microsoft::MSR::CNTK::GPUMatrix<ElemType> &, double, Microsoft::MSR::CNTK::GPUMatrix<StatType> &, Microsoft::MSR::CNTK::GPUMatrix<StatType> &) const [with ElemType=double, StatType=double]"
Source/Math/GPUMatrix.cu(4980): here

cub 1.7.4 works fine. So I post the changelog since 1.7.5 here. Please adapt these changes.

petronny avatar May 08 '18 18:05 petronny

Thanks for the feedback, we'll look into upgrading to cub 1.8.0.

ke1337 avatar May 16 '18 18:05 ke1337

#3206 for this

FDecaYed avatar May 17 '18 20:05 FDecaYed