Merge remote-tracking branch 'nccl/master' into 2.7.8
Этот коммит содержится в:
@@ -40,23 +40,16 @@ namespace CorrectnessTests
|
||||
hipStream_t stream;
|
||||
HIPCHECK(hipStreamCreateWithFlags(&stream, hipStreamNonBlocking));
|
||||
struct ncclChannel* channel = comm->channels;
|
||||
uint64_t **p_dev_opCount = (uint64_t **)((uint8_t*)(channel->devPeers + channel->ring.next) + offsetof(struct ncclPeer, send.conn.opCountRem));
|
||||
uint64_t **p_dev_head = (uint64_t **)((uint8_t*)(channel->devPeers + channel->ring.next) + offsetof(struct ncclPeer, send.conn.head));
|
||||
uint64_t *real_opCount, *fake_opCount, *fake_o;
|
||||
uint64_t *real_head, *fake_head, *fake_h;
|
||||
|
||||
// get original opCount and head
|
||||
HIPCHECK(hipMemcpy(&real_opCount, p_dev_opCount, sizeof(uint64_t*), hipMemcpyDefault));
|
||||
// get original head
|
||||
HIPCHECK(hipMemcpy(&real_head, p_dev_head, sizeof(uint64_t*), hipMemcpyDefault));
|
||||
// allocate and install fakes
|
||||
HIPCHECK(hipHostMalloc(&fake_opCount, sizeof(uint64_t*), hipHostMallocMapped));
|
||||
HIPCHECK(hipMemcpy(p_dev_opCount, &fake_opCount, sizeof(uint64_t*), hipMemcpyDefault));
|
||||
*fake_opCount = FAKE_OP_COUNT;
|
||||
HIPCHECK(hipHostMalloc(&fake_head, sizeof(uint64_t*), hipHostMallocMapped));
|
||||
HIPCHECK(hipMemcpy(p_dev_head, &fake_head, sizeof(uint64_t*), hipMemcpyDefault));
|
||||
*fake_head = 0;
|
||||
// read back fakes to confirm
|
||||
HIPCHECK(hipMemcpy(&fake_o, p_dev_opCount, sizeof(uint64_t*), hipMemcpyDefault));
|
||||
HIPCHECK(hipMemcpy(&fake_h, p_dev_head, sizeof(uint64_t*), hipMemcpyDefault));
|
||||
//std::cerr << "[ ] replaced gpu " << gpu << " real_opCount = " << real_opCount << " to fake_opCount = " << fake_o << std::endl;
|
||||
//std::cerr << "[ ] replaced gpu " << gpu << " real_head = " << real_head << " to fake_head = " << fake_h << std::endl;
|
||||
@@ -121,7 +114,7 @@ namespace CorrectnessTests
|
||||
if (idle) pthread_yield();
|
||||
}
|
||||
|
||||
HIPCHECK(hipHostFree(fake_opCount));
|
||||
HIPCHECK(hipHostFree(fake_head));
|
||||
HIPCHECK(hipStreamDestroy(stream));
|
||||
dataset.Release();
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user