Opened 7 years ago
Closed 7 years ago
#7067 closed feature request (fixed)
Add alignment-restricted ForeignPtr allocation actions
Reported by: | nicolast | Owned by: | simonmar |
---|---|---|---|
Priority: | normal | Milestone: | 7.6.1 |
Component: | libraries/base | Version: | |
Keywords: | Cc: | ||
Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
Type of failure: | None/Unknown | Test Case: | |
Blocked By: | Blocking: | ||
Related Tickets: | Differential Rev(s): | ||
Wiki Page: |
Description
Whilst GHC.ForeignPtr exports some actions to allocate buffers containing an element of some type, or of some specific byte-length efficiently, and there's an implementation of newAlignedPinnedByteArray# used internally, there's no way to request such buffer of a given size and at a given alignment.
The ability to enforce a specific alignment for some memory buffer is important e.g. when working with SIMD instructions (which is my original use-case). My attempts to work-around the lack of this function failed miserably (with a reproducible test-case) as mentioned in [1].
[1] http://www.haskell.org/pipermail/glasgow-haskell-users/2012-July/022579.html
Attachments (1)
Change History (4)
Changed 7 years ago by
Attachment: | 0001-Add-alignment-restricted-ForeignPtr-allocation-actio.patch added |
---|
comment:1 Changed 7 years ago by
Status: | new → patch |
---|
Using attachment:ticket:7067:0001-Add-alignment-restricted-ForeignPtr-allocation-actio.patch and an adapted mallocVector implementation (see mallocVectorMine3 at https://gist.github.com/3084806#LC129) the corruption as found earlier (using mallocVectorMine1 or mallocVectorMine2) no longer occur.
comment:2 Changed 7 years ago by
difficulty: | → Unknown |
---|---|
Milestone: | → 7.6.1 |
Owner: | set to simonmar |
Patch looks good to me.
Add alignment-restricted allocation actions to GHC.ForeignPtr