Bugfixes for the ipc unit tests

[ROCm/rocshmem commit: f85c46ec0a]
Este commit está contenido en:
Brandon Potter
2024-09-26 13:40:05 -05:00
padre 56c1626df1
commit 325ce3cba7
Se han modificado 4 ficheros con 30 adiciones y 1 borrados
+1 -1
Ver fichero
@@ -64,7 +64,7 @@ class IpcOnImpl {
__device__ void ipcCopy_wave(void *dst, void *src, size_t size);
__device__ void ipcFence() { __threadfence(); }
__device__ void ipcFence() { __threadfence_system(); }
template <typename T>
__device__ T ipcAMOFetchAdd(T *val, T value) {
+8
Ver fichero
@@ -98,6 +98,14 @@ class NotifierProxy {
using ProxyT = DeviceProxy<ALLOCATOR, Notifier<scope>>;
public:
NotifierProxy() {
new (proxy_.get()) Notifier<scope>();
}
~NotifierProxy() {
proxy_.get()->~Notifier<scope>();
}
__host__ __device__ Notifier<scope>* get() { return proxy_.get(); }
private:
@@ -46,6 +46,12 @@ TEST_F(IPCImplSimpleFineTestFixture, golden_1048576_int) {
//=============================================================================
TEST_F(IPCImplSimpleFineTestFixture, write_wg_1x1x1_1x1x1_32_int) {
dim3 grid {1,1,1};
dim3 block {1,1,1};
write_wg(grid, block, 32);
}
TEST_F(IPCImplSimpleFineTestFixture, write_wg_1x1x1_1024x1x1_32_int) {
dim3 grid {1,1,1};
dim3 block {1024,1,1};
@@ -49,6 +49,7 @@ validator(bool *error, int *golden, int *dest, size_t bytes) {
size_t elements {bytes / sizeof(int)};
for (int i {get_flat_id()}; i < elements; i += get_flat_grid_size()) {
if (golden[i] != dest[i]) {
printf("golden[%d] %d != dest[%d] %d\n", i, golden[i], i, dest[i]);
*error = true;
}
}
@@ -171,6 +172,7 @@ class IPCImplSimpleFineTestFixture : public ::testing::Test {
void write(const dim3 grid, const dim3 block, size_t elems) {
iota_golden(elems);
initialize_signal(WRITE);
initialize_src_buffer(WRITE);
copy(WRITE, grid, block);
check_device_validation_errors(WRITE);
@@ -178,6 +180,7 @@ class IPCImplSimpleFineTestFixture : public ::testing::Test {
void write_wg(const dim3 grid, const dim3 block, size_t elems) {
iota_golden(elems);
initialize_signal(WRITE);
initialize_src_buffer(WRITE);
copy_wg(WRITE, grid, block);
check_device_validation_errors(WRITE);
@@ -185,6 +188,7 @@ class IPCImplSimpleFineTestFixture : public ::testing::Test {
void write_wave(const dim3 grid, const dim3 block, size_t elems) {
iota_golden(elems);
initialize_signal(WRITE);
initialize_src_buffer(WRITE);
copy_wave(WRITE, grid, block);
check_device_validation_errors(WRITE);
@@ -192,6 +196,7 @@ class IPCImplSimpleFineTestFixture : public ::testing::Test {
void read(const dim3 grid, const dim3 block, size_t elems) {
iota_golden(elems);
initialize_signal(READ);
initialize_src_buffer(READ);
copy(READ, grid, block);
check_device_validation_errors(READ);
@@ -199,6 +204,7 @@ class IPCImplSimpleFineTestFixture : public ::testing::Test {
void read_wg(const dim3 grid, const dim3 block, size_t elems) {
iota_golden(elems);
initialize_signal(READ);
initialize_src_buffer(READ);
copy_wg(READ, grid, block);
check_device_validation_errors(READ);
@@ -206,6 +212,7 @@ class IPCImplSimpleFineTestFixture : public ::testing::Test {
void read_wave(const dim3 grid, const dim3 block, size_t elems) {
iota_golden(elems);
initialize_signal(READ);
initialize_src_buffer(READ);
copy_wave(READ, grid, block);
check_device_validation_errors(READ);
@@ -228,6 +235,14 @@ class IPCImplSimpleFineTestFixture : public ::testing::Test {
}
}
void initialize_signal(TestType test) {
bool is_write_test = test;
if (is_write_test && mpi_.my_pe() == 0) {
int *dest = reinterpret_cast<int*>(ipc_impl_.ipc_bases[1]);
*(dest + SIGNAL_OFFSET) = 0;
}
}
void initialize_src_buffer(TestType test) {
if (!pe_initializes_src_buffer(test)) {
return;