Subject: Re: [boost] Synchronization (RE: [compute] review)
From: Thomas M (firespot71_at_[hidden])
Date: 2014-12-29 04:21:24


On 29/12/2014 03:23, Kyle Lutz wrote:
> On Sun, Dec 28, 2014 at 6:16 PM, Gruenke,Matt <mgruenke_at_[hidden]> wrote:
>> -----Original Message-----
>> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of Kyle Lutz
>> Sent: Sunday, December 28, 2014 20:36
>> To: boost_at_[hidden] List
>> Subject: Re: [boost] Synchronization (RE: [compute] review)
>>
>>> On Sun, Dec 28, 2014 at 4:46 PM, Gruenke,Matt wrote:
>>
>>>> My understanding, based on comments you've made to other reviewers, is
>>>> that functions like boost::compute::transform() are asynchronous when
>>>> the result is on the device, but block when the result is on the host.
>>>> This is what I'm concerned about. Is it true?
>>
>>> Yes this is correct. In general, algorithms like transform() are asynchronous
>>> when the input/output ranges are both on the device and synchronous when one
>>> of the ranges is on the host. I'll work on better ways to allow asynchrony in
>>> the latter case. One of my current ideas is add asynchronous memory-mapping
>>> support to the mapped_view class [1] which can then be used with any of the
>>> algorithms in an asynchronous fashion.

When you speak of input/output ranges on the host, to what kinds of
iterators do you refer to? Any input/output iterator kind (e.g.
iterators from a std:: container -> just tried a std::vector on
boost::compute::transform, didn't compile if provided as input range),
or iterators that are part of your library?

Thomas