Update CNTK.Cpp.props to CUDA8;
Add atomicAdd fix by DanielMerget
This commit is contained in:
Родитель
7e82e9b89a
Коммит
002e920bc5
|
@ -24,6 +24,7 @@
|
|||
<NvmlLibPath>"c:\Program Files\NVIDIA Corporation\GDK\gdk_win7_amd64_release\nvml\lib"</NvmlLibPath>
|
||||
|
||||
<CudaVersion/>
|
||||
<CudaVersion Condition="Exists('$(CUDA_PATH_V8_0)') And '$(CudaVersion)' == ''">8.0</CudaVersion>
|
||||
<CudaVersion Condition="Exists('$(CUDA_PATH_V7_5)') And '$(CudaVersion)' == ''">7.5</CudaVersion>
|
||||
<CudaVersion Condition="Exists('$(CUDA_PATH_V7_0)') And '$(CudaVersion)' == ''">7.0</CudaVersion>
|
||||
|
||||
|
@ -87,6 +88,12 @@
|
|||
<OpenCvBinPath>$(OpenCvPath)\x64\vc12\bin</OpenCvBinPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(CudaVersion)' == '8.0'">
|
||||
<CudaPath>$(CUDA_PATH_V8_0)</CudaPath>
|
||||
<CudaRuntimeDll>cudart64_80.dll</CudaRuntimeDll>
|
||||
<CudaDlls>cublas64_80.dll;cusparse64_80.dll;curand64_80.dll;$(CudaRuntimeDll)</CudaDlls>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(CudaVersion)' == '7.5'">
|
||||
<CudaPath>$(CUDA_PATH_V7_5)</CudaPath>
|
||||
<CudaRuntimeDll>cudart64_75.dll</CudaRuntimeDll>
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
#define IDX2C(i, j, ld) (((j) * (ld)) + (i)) // 0 based indexing
|
||||
|
||||
// CUDA atomicAdd() only exists for 'float'. This is the 'double' version.
|
||||
// TODO: This may need to be guarded by CUDA version; newer devices may support this.
|
||||
#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ < 600
|
||||
static __inline__ __device__ double atomicAdd(double* address, double val)
|
||||
{
|
||||
unsigned long long int* address_as_ull = (unsigned long long int*) address;
|
||||
|
@ -55,6 +55,7 @@ static __inline__ __device__ double atomicAdd(double* address, double val)
|
|||
} while (assumed != old);
|
||||
return __longlong_as_double(old);
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO: replace this with TensorOps.h LogAdd(). It differs in using ElemType throughout, while this one seems to use 'double' versions of exp() and log().
|
||||
// The 'k' in the name is to avoid naming conflicts with various versions of logadd() that are defined throughout the codebase.
|
||||
|
|
Загрузка…
Ссылка в новой задаче