| 122 | |
| 123 | template<typename T> |
| 124 | void memAllocPtrScopeTest(int elements) { |
| 125 | SUPPORTED_TYPE_CHECK(T); |
| 126 | |
| 127 | size_t alloc_bytes, alloc_buffers; |
| 128 | size_t lock_bytes, lock_buffers; |
| 129 | |
| 130 | cleanSlate(); // Clean up everything done so far |
| 131 | { |
| 132 | #pragma GCC diagnostic push |
| 133 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations" |
| 134 | T *ptr = alloc<T>(elements); |
| 135 | |
| 136 | deviceMemInfo(&alloc_bytes, &alloc_buffers, &lock_bytes, &lock_buffers); |
| 137 | |
| 138 | ASSERT_EQ(alloc_buffers, 1u); |
| 139 | ASSERT_EQ(lock_buffers, 1u); |
| 140 | |
| 141 | ASSERT_EQ(alloc_bytes, roundUpToStep(elements * sizeof(T))); |
| 142 | ASSERT_EQ(lock_bytes, roundUpToStep(elements * sizeof(T))); |
| 143 | |
| 144 | af::free(ptr); |
| 145 | #pragma GCC diagnostic pop |
| 146 | } |
| 147 | |
| 148 | deviceMemInfo(&alloc_bytes, &alloc_buffers, &lock_bytes, &lock_buffers); |
| 149 | |
| 150 | ASSERT_EQ(alloc_buffers, 1u); |
| 151 | ASSERT_EQ(lock_buffers, 0u); // 0 because a is out of scope |
| 152 | |
| 153 | ASSERT_EQ(alloc_bytes, roundUpToStep(elements * sizeof(T))); |
| 154 | ASSERT_EQ(lock_bytes, 0u); |
| 155 | |
| 156 | // Do without using templated alloc |
| 157 | cleanSlate(); // Clean up everything done so far |
| 158 | |
| 159 | { |
| 160 | void *ptr = allocV2(elements * sizeof(T)); |
| 161 | |
| 162 | deviceMemInfo(&alloc_bytes, &alloc_buffers, &lock_bytes, &lock_buffers); |
| 163 | |
| 164 | ASSERT_EQ(alloc_buffers, 1u); |
| 165 | ASSERT_EQ(lock_buffers, 1u); |
| 166 | |
| 167 | ASSERT_EQ(alloc_bytes, roundUpToStep(elements * sizeof(T))); |
| 168 | ASSERT_EQ(lock_bytes, roundUpToStep(elements * sizeof(T))); |
| 169 | |
| 170 | af::freeV2(ptr); |
| 171 | } |
| 172 | |
| 173 | deviceMemInfo(&alloc_bytes, &alloc_buffers, &lock_bytes, &lock_buffers); |
| 174 | |
| 175 | ASSERT_EQ(alloc_buffers, 1u); |
| 176 | ASSERT_EQ(lock_buffers, 0u); // 0 because a is out of scope |
| 177 | |
| 178 | ASSERT_EQ(alloc_bytes, roundUpToStep(elements * sizeof(T))); |
| 179 | ASSERT_EQ(lock_bytes, 0u); |
| 180 | } |
| 181 |
nothing calls this directly
no test coverage detected