|
1 | 1 | module RandomExt
|
| 2 | + |
| 3 | +@static if Sys.isapple() |
| 4 | + |
2 | 5 | using BFloat16s
|
3 | 6 | using AppleAccelerate: BNNS
|
4 | 7 | using .BNNS: BNNSFilterParameters,
|
|
43 | 46 | BNNS.bnns_rng() = RNG()
|
44 | 47 | BNNS.bnns_rng(seed::Integer) = RNG(seed)
|
45 | 48 |
|
46 |
| -function _get_rng_state(rng::RNG) |
47 |
| - stateSize = BNNSRandomGeneratorStateSize(rng.ptr) |
48 |
| - state = Memory{UInt8}(undef, Int64(stateSize)) |
49 |
| - BNNSRandomGeneratorGetState(rng.ptr, stateSize, state) |
50 |
| - return state |
| 49 | +@static if isdefined(Base, :Memory) #VERSION >= v"1.11" |
| 50 | + function _get_rng_state(rng::RNG) |
| 51 | + stateSize = BNNSRandomGeneratorStateSize(rng.ptr) |
| 52 | + state = Memory{UInt8}(undef, Int64(stateSize)) |
| 53 | + BNNSRandomGeneratorGetState(rng.ptr, stateSize, state) |
| 54 | + return state |
| 55 | + end |
| 56 | +else |
| 57 | + function _get_rng_state(rng::RNG) |
| 58 | + stateSize = BNNSRandomGeneratorStateSize(rng.ptr) |
| 59 | + state = Vector{UInt8}(undef, Int64(stateSize)) |
| 60 | + BNNSRandomGeneratorGetState(rng.ptr, stateSize, state) |
| 61 | + return state |
| 62 | + end |
51 | 63 | end
|
52 | 64 |
|
53 | 65 | function Base.copy!(dest::RNG, src::RNG)
|
@@ -170,5 +182,5 @@ function BNNS.seed!(seed=Base.rand(UInt64))
|
170 | 182 | Random.seed!(BNNS.default_rng(), seed)
|
171 | 183 | end
|
172 | 184 |
|
173 |
| - |
| 185 | +end |
174 | 186 | end # module
|
0 commit comments