The original file’s here: https://github.com/rxwei/cuda-swift/blob/master/Sources/Warp/CollectionOperations.swift
I’m assuming this change has affected Dispatch users as well. It's not a good idea for such high-level APIs to rely on explicit pointers to pass mutating self for struct types. -Richard > On Dec 16, 2016, at 03:05, Richard Wei <[email protected]> wrote: > > It’s not the correct choice here :) > >> On Dec 16, 2016, at 03:04, Rien <[email protected]> wrote: >> >> Just because it is called “Unsafe” does not mean it is unsafe :-) >> It all depends on how you use it. >> >> Regards, >> Rien >> >> Site: http://balancingrock.nl >> Blog: http://swiftrien.blogspot.com >> Github: http://github.com/Swiftrien >> Project: http://swiftfire.nl >> >> >> >> >>> On 16 Dec 2016, at 09:52, Richard Wei <[email protected]> wrote: >>> >>> Zhao, it’s not a class. >>> >>> Rien, unsafe pointers is the last thing I would ever want to introduce in >>> my library… >>> >>> Capturing self was clean, working perfectly, until Swift 3.0.2. >>> >>> -Richard >>> >>>> On Dec 16, 2016, at 02:49, Zhao Xin <[email protected]> wrote: >>>> >>>> What is the type of self? If it is a class, try [unowned self]. >>>> >>>> Zhaoxin >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Fri, Dec 16, 2016 at 4:33 PM, Rien via swift-users >>>> <[email protected]> wrote: >>>> How about using: >>>> >>>> UnsafeMutablePointer<TypeOfSelf> >>>> >>>> ? >>>> >>>> Regards, >>>> Rien >>>> >>>> Site: http://balancingrock.nl >>>> Blog: http://swiftrien.blogspot.com >>>> Github: http://github.com/Swiftrien >>>> Project: http://swiftfire.nl >>>> >>>> >>>> >>>> >>>>> On 16 Dec 2016, at 09:10, Richard Wei via swift-users >>>>> <[email protected]> wrote: >>>>> >>>>> Capturing makes it immutable, which unfortunately can't solve this >>>>> problem. >>>>> >>>>> -Richard >>>>> >>>>>> On Dec 16, 2016, at 02:05, Zhao Xin <[email protected]> wrote: >>>>>> >>>>>> I did not test the code. But if you cannot implicitly capture a mutating >>>>>> self, you should do it explicitly, right? >>>>>> >>>>>> let blockSize = min(512, count) >>>>>> let blockCount = (count+blockSize-1)/blockSize >>>>>> device.sync { [self] () -> () in // Launch CUDA kernel >>>>>> try! fill<<<(blockSize, blockCount)>>>[ >>>>>> .pointer(to: &self), .value(value), .value(Int64(count)) >>>>>> ] >>>>>> } >>>>>> >>>>>> Hope above code works. >>>>>> >>>>>> Zhaoxin >>>>>> >>>>>> On Fri, Dec 16, 2016 at 3:46 PM, Richard Wei via swift-users >>>>>> <[email protected]> wrote: >>>>>> Hi, >>>>>> >>>>>> Swift 3.0.2 seems to have broken my code due to mutating self capture. >>>>>> But I have to pass inout self to the closure. Any workaround? >>>>>> >>>>>> let blockSize = min(512, count) >>>>>> let blockCount = (count+blockSize-1)/blockSize >>>>>> device.sync { // Launch CUDA kernel >>>>>> try! fill<<<(blockSize, blockCount)>>>[ >>>>>> .pointer(to: &self), .value(value), .value(Int64(count)) >>>>>> ] >>>>>> } >>>>>> >>>>>> <PastedGraphic-1.png> >>>>>> >>>>>> -Richard >>>>>> >>>>>> _______________________________________________ >>>>>> swift-users mailing list >>>>>> [email protected] >>>>>> https://lists.swift.org/mailman/listinfo/swift-users >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> swift-users mailing list >>>>> [email protected] >>>>> https://lists.swift.org/mailman/listinfo/swift-users >>>> >>>> _______________________________________________ >>>> swift-users mailing list >>>> [email protected] >>>> https://lists.swift.org/mailman/listinfo/swift-users >>>> >>> >> > _______________________________________________ swift-users mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-users
