| 151 | } |
| 152 | |
| 153 | af_err af_create_random_engine(af_random_engine *engineHandle, |
| 154 | af_random_engine_type rtype, uintl seed) { |
| 155 | try { |
| 156 | AF_CHECK(af_init()); |
| 157 | validateRandomType(rtype); |
| 158 | |
| 159 | RandomEngine e; |
| 160 | e.type = rtype; |
| 161 | *e.seed = seed; |
| 162 | *e.counter = 0; |
| 163 | |
| 164 | if (rtype == AF_RANDOM_ENGINE_MERSENNE_GP11213) { |
| 165 | e.pos = createHostDataArray<uint>(dim4(MaxBlocks), pos); |
| 166 | e.sh1 = createHostDataArray<uint>(dim4(MaxBlocks), sh1); |
| 167 | e.sh2 = createHostDataArray<uint>(dim4(MaxBlocks), sh2); |
| 168 | e.mask = mask; |
| 169 | |
| 170 | e.recursion_table = |
| 171 | createHostDataArray<uint>(dim4(TableLength), recursion_tbl); |
| 172 | e.temper_table = |
| 173 | createHostDataArray<uint>(dim4(TableLength), temper_tbl); |
| 174 | e.state = createEmptyArray<uint>(dim4(MtStateLength)); |
| 175 | |
| 176 | initMersenneState(e.state, seed, e.recursion_table); |
| 177 | } |
| 178 | |
| 179 | *engineHandle = getRandomEngineHandle(e); |
| 180 | } |
| 181 | CATCHALL; |
| 182 | |
| 183 | return AF_SUCCESS; |
| 184 | } |
| 185 | |
| 186 | af_err af_retain_random_engine(af_random_engine *outHandle, |
| 187 | const af_random_engine engineHandle) { |
no test coverage detected