Hello,
overloaded template functions don’t compile.
Example, when i compile :
//… a lot of code …
template< typename ScanType >
static global void CUDA_Scan(ScanType* array, ScanType* ret)
{
//… code …
}
template< typename ScanType >
static global void CUDA_Scan(ScanType* array, ScanType* blockSums, ScanType* ret)
{
//… code …
}
//… a lot of code …
I obtain :
StreamScan.cu:224: erreur: «CUDA_Scan" was not declared in this scope
StreamScan.cu:224: erreur: expected primary-expression before «>" token
StreamScan.cu:224: erreur: expected primary-expression before «)" token
StreamScan.cu:232: erreur: expected primary-expression before «>" token
StreamScan.cu:232: erreur: expected primary-expression before «)" token
StreamScan.cu:238: erreur: expected primary-expression before «>" token
StreamScan.cu:238: erreur: expected primary-expression before «)" token
StreamScan.cu:247: erreur: expected primary-expression before «>" token
StreamScan.cu:247: erreur: expected primary-expression before «)" token
StreamScan.cu:259: erreur: «CUDA_Scan" was not declared in this scope
StreamScan.cu:259: erreur: expected primary-expression before «>" token
StreamScan.cu:259: erreur: expected primary-expression before «)" token
However, when i rename the two CUDA_Scan functions and compile :
//… a lot of code …
template< typename ScanType >
static global void CUDA_Scan1(ScanType* array, ScanType* ret)
{
//… code …
}
template< typename ScanType >
static global void CUDA_Scan2(ScanType* array, ScanType* blockSums, ScanType* ret)
{
//… code …
}
//… a lot of code …
It compiles fine.
I use CUDA 2.1 and the NVidia driver 180.44 on Ubuntu.
Thanks