https://github.com/Microsoft/CNTK
Raw File
Tip revision: 5cc66af4ddf6c2ed9574e3e8d7b2ba895cb8da58 authored by Amit Agarwal on 13 December 2016, 06:34:50 UTC
CNTK parallel training: Turned off quantization for gradient matrices where row count is too small to benefit from quantization
Tip revision: 5cc66af
GPURNGHandle.cu
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.
//
// CPUMatrix.cpp : full implementation of all matrix functions on the CPU side
//

#include "GPURNGHandle.h"
#include "GPUMatrix.h"

namespace Microsoft { namespace MSR { namespace CNTK {

GPURNGHandle::GPURNGHandle(int deviceId, unsigned long seed, unsigned long long offset)
    : RNGHandle(deviceId)
{
    unsigned long long cudaSeed = seed;
    if (GetMathLibTraceLevel() > 0)
    {
        fprintf(stderr, "(GPU): creating curand object with seed %llu\n", cudaSeed);
    }

    CURAND_CALL(curandCreateGenerator(&m_generator, CURAND_RNG_PSEUDO_XORWOW));
    CURAND_CALL(curandSetPseudoRandomGeneratorSeed(m_generator, cudaSeed));
    CURAND_CALL(curandSetGeneratorOrdering(m_generator, CURAND_ORDERING_PSEUDO_SEEDED));
    CURAND_CALL(curandSetGeneratorOffset(m_generator, offset));
}

/*virtual*/ GPURNGHandle::~GPURNGHandle()
{
    if (std::uncaught_exception())
        curandDestroyGenerator(m_generator);
    else
        CURAND_CALL(curandDestroyGenerator(m_generator));
}

}}}
back to top