virtual void init()
 {
  //   __startAtomicTransaction(__getTransactionEvent());
     size_t current_size = host->getCurrentSize();
     DataSpace<DIM> hostCurrentSize = host->getCurrentDataSpace(current_size);
     if (host->is1D() && device->is1D())
         fastCopy(host->getPointer(), device->getPointer(), hostCurrentSize.getElementCount());
     else
         copy(hostCurrentSize);
     device->setCurrentSize(current_size);
     this->activate();
  //   __setTransactionEvent(__endTransaction());
 }
        virtual void init()
        {
           // __startAtomicTransaction( __getTransactionEvent());
            size_t current_size = source->getCurrentSize();
            destination->setCurrentSize(current_size);
            DataSpace<DIM> devCurrentSize = source->getCurrentDataSpace(current_size);
            if (source->is1D() && destination->is1D())
                fastCopy(source->getPointer(), destination->getPointer(), devCurrentSize.productOfComponents());
            else
                copy(devCurrentSize);

            this->activate();
          //  __setTransactionEvent(__endTransaction());
        }
Esempio n. 3
0
 void gradientAt(double const * p, double * result) const
 {
   TheaArray<double> const & coeffs = getCoefficients();
   if (!coeffs.empty()) fastCopy(&coeffs[0], &coeffs[0] + coeffs.size(), result);
 }