예제 #1
0
파일: copy.hpp 프로젝트: jb--/cuda-wrapper
typename boost::enable_if<boost::is_same<T, typename U::value_type>, void>::type
copy(U const& src, symbol<T[]> const& dst)
{
    function_requires<RandomAccessContainerConcept<U> >();
    assert((src.end() - src.begin()) == typename U::difference_type(dst.size()));
    CUDA_CALL(cudaMemcpyToSymbol(reinterpret_cast<char const*>(dst.data()), &*src.begin(), (src.end() - src.begin()) * sizeof(T), 0, cudaMemcpyHostToDevice));
}
예제 #2
0
파일: copy.hpp 프로젝트: jb--/cuda-wrapper
typename boost::enable_if<boost::is_same<T, typename U::value_type>, void>::type
copy(symbol<T[]> const& src, U& dst)
{
    function_requires<RandomAccessContainerConcept<U> >();
    assert(typename U::difference_type(src.size()) == (dst.end() - dst.begin()));
    CUDA_CALL(cudaMemcpyFromSymbol(&*dst.begin(), reinterpret_cast<char const*>(src.data()), src.size() * sizeof(T), 0, cudaMemcpyDeviceToHost));
}
예제 #3
0
파일: copy.hpp 프로젝트: jb--/cuda-wrapper
void copy(vector<T> const& src, symbol<T[]>& dst, stream& stream)
{
    assert(src.size() == dst.size());
    CUDA_CALL(cudaMemcpyToSymbolAsync(reinterpret_cast<char const*>(dst.data()), src.data(), src.size() * sizeof(T), 0, cudaMemcpyDeviceToDevice, stream.data()));
}
예제 #4
0
파일: copy.hpp 프로젝트: jb--/cuda-wrapper
void copy(symbol<T[]> const& src, host::vector<T>& dst, stream& stream)
{
    assert(src.size() == dst.size());
    CUDA_CALL(cudaMemcpyFromSymbolAsync(dst.data(), reinterpret_cast<char const*>(src.data()), src.size() * sizeof(T), 0, cudaMemcpyDeviceToHost, stream.data()));
}
예제 #5
0
파일: copy.hpp 프로젝트: jb--/cuda-wrapper
typename boost::enable_if<boost::is_convertible<T_, T>, void>::type
copy(T_ const& src, symbol<T> const& dst)
{
    assert(1 == dst.size());
    CUDA_CALL(cudaMemcpyToSymbol(reinterpret_cast<char const*>(dst.data()), &static_cast<T const&>(src), sizeof(T), 0, cudaMemcpyHostToDevice));
}
예제 #6
0
파일: copy.hpp 프로젝트: jb--/cuda-wrapper
void copy(symbol<T[]> const& src, vector<T>& dst)
{
    assert(src.size() == dst.size());
    CUDA_CALL(cudaMemcpyFromSymbol(dst.data(), reinterpret_cast<char const*>(src.data()), src.size() * sizeof(T), 0, cudaMemcpyDeviceToDevice));
}
예제 #7
0
파일: copy.hpp 프로젝트: jb--/cuda-wrapper
void copy(symbol<T> const& src, T& dst)
{
    assert(src.size() == 1);
    CUDA_CALL(cudaMemcpyFromSymbol(&dst, reinterpret_cast<char const*>(src.data()), src.size() * sizeof(T), 0, cudaMemcpyDeviceToHost));
}