当前位置: 首页>>代码示例>>C++>>正文


C++ command_queue::enqueue_fill_buffer方法代码示例

本文整理汇总了C++中command_queue::enqueue_fill_buffer方法的典型用法代码示例。如果您正苦于以下问题:C++ command_queue::enqueue_fill_buffer方法的具体用法?C++ command_queue::enqueue_fill_buffer怎么用?C++ command_queue::enqueue_fill_buffer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在command_queue的用法示例。


在下文中一共展示了command_queue::enqueue_fill_buffer方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: fill_async_with_copy

inline future<void>
dispatch_fill_async(BufferIterator first,
                    size_t count,
                    const T &value,
                    command_queue &queue,
                    typename boost::enable_if<
                       is_valid_fill_buffer_iterator<BufferIterator>
                    >::type* = 0)
{
    typedef typename std::iterator_traits<BufferIterator>::value_type value_type;

    // check if the device supports OpenCL 1.2 (required for enqueue_fill_buffer)
    if(!queue.check_device_version(1, 2)){
        return fill_async_with_copy(first, count, value, queue);
    }

    value_type pattern = static_cast<value_type>(value);
    size_t offset = static_cast<size_t>(first.get_index());

    event event_ =
        queue.enqueue_fill_buffer(first.get_buffer(),
                                  &pattern,
                                  sizeof(value_type),
                                  offset * sizeof(value_type),
                                  count * sizeof(value_type));

    return future<void>(event_);
}
开发者ID:ASMlover,项目名称:study,代码行数:28,代码来源:fill.hpp

示例2: fill_with_copy

inline void
dispatch_fill(BufferIterator first,
              size_t count,
              const T &value,
              command_queue &queue,
              typename boost::enable_if<
                 is_valid_fill_buffer_iterator<BufferIterator>
              >::type* = 0)
{
    typedef typename std::iterator_traits<BufferIterator>::value_type value_type;

    if(count == 0){
        // nothing to do
        return;
    }

    // check if the device supports OpenCL 1.2 (required for enqueue_fill_buffer)
    if(!queue.check_device_version(1, 2)){
        return fill_with_copy(first, count, value, queue);
    }

    value_type pattern = static_cast<value_type>(value);
    size_t offset = static_cast<size_t>(first.get_index());

    if(count == 1){
        // use clEnqueueWriteBuffer() directly when writing a single value
        // to the device buffer. this is potentially more efficient and also
        // works around a bug in the intel opencl driver.
        queue.enqueue_write_buffer(
            first.get_buffer(),
            offset * sizeof(value_type),
            sizeof(value_type),
            &pattern
        );
    }
    else {
        queue.enqueue_fill_buffer(
            first.get_buffer(),
            &pattern,
            sizeof(value_type),
            offset * sizeof(value_type),
            count * sizeof(value_type)
        );
    }
}
开发者ID:ASMlover,项目名称:study,代码行数:45,代码来源:fill.hpp

示例3: dispatch_fill

void dispatch_fill(BufferIterator first,
                   size_t count,
                   const T &value,
                   command_queue &queue,
                   typename boost::enable_if_c<
                       is_buffer_iterator<BufferIterator>::value
                   >::type* = 0)
{
    typedef typename std::iterator_traits<BufferIterator>::value_type value_type;

    value_type pattern = static_cast<value_type>(value);
    size_t offset = static_cast<size_t>(first.get_index());

    queue.enqueue_fill_buffer(first.get_buffer(),
                              &pattern,
                              sizeof(value_type),
                              offset * sizeof(value_type),
                              count * sizeof(value_type));
}
开发者ID:rickz65,项目名称:compute,代码行数:19,代码来源:fill.hpp

示例4: sizeof

inline future<void>
dispatch_fill_async(BufferIterator first,
                    size_t count,
                    const T &value,
                    command_queue &queue,
                    typename boost::enable_if<
                    is_valid_fill_buffer_iterator<BufferIterator>
                    >::type* = 0)
{
    typedef typename std::iterator_traits<BufferIterator>::value_type value_type;

    value_type pattern = static_cast<value_type>(value);
    size_t offset = static_cast<size_t>(first.get_index());

    event event_ =
        queue.enqueue_fill_buffer(first.get_buffer(),
                                  &pattern,
                                  sizeof(value_type),
                                  offset * sizeof(value_type),
                                  count * sizeof(value_type));

    return future<void>(event_);
}
开发者ID:BeauJoh,项目名称:compute,代码行数:23,代码来源:fill.hpp


注:本文中的command_queue::enqueue_fill_buffer方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。