| 128 | } // namespace |
| 129 | |
| 130 | af_err af_get_default_random_engine(af_random_engine *r) { |
| 131 | try { |
| 132 | AF_CHECK(af_init()); |
| 133 | |
| 134 | // RandomEngine contains device buffers which are dependent on |
| 135 | // context|stream/device. Since nor context or stream are available at |
| 136 | // this level, we will only use the deviceId. |
| 137 | thread_local std::map<int /*deviceId*/, RandomEngine *> |
| 138 | cachedDefaultRandomEngines; |
| 139 | const int dependent = af::getDevice(); |
| 140 | auto it = cachedDefaultRandomEngines.find(dependent); |
| 141 | if (it == cachedDefaultRandomEngines.end()) { |
| 142 | RandomEngine *defaultRandomEngine = new RandomEngine; |
| 143 | cachedDefaultRandomEngines[dependent] = defaultRandomEngine; |
| 144 | *r = static_cast<af_random_engine>(defaultRandomEngine); |
| 145 | } else { |
| 146 | *r = static_cast<af_random_engine>(it->second); |
| 147 | } |
| 148 | return AF_SUCCESS; |
| 149 | } |
| 150 | CATCHALL; |
| 151 | } |
| 152 | |
| 153 | af_err af_create_random_engine(af_random_engine *engineHandle, |
| 154 | af_random_engine_type rtype, uintl seed) { |
no test coverage detected