Split ihipCtx_t into ihipCtx_t and ihipDevice_t .

Major change to existing code base.
    Ctx holds streams, enables peers, and flags.
    Device holds accelerator, hsa-agent, device props.

Add hipCtx_t.

Add peer APIs that accept hipCtx_t (in addition to deviceId)

Compiles and passes directed tests.

Change-Id: Iddab1eb9edbf90caad2ef5959c6b811d658197f1
Этот коммит содержится в:
Ben Sander
2016-08-08 11:55:57 -05:00
родитель 6aeb2dc8d6
Коммит cfdacab32f
7 изменённых файлов: 687 добавлений и 531 удалений
+18 -12
Просмотреть файл
@@ -31,22 +31,28 @@ THE SOFTWARE.
hipError_t ihipStreamCreate(hipStream_t *stream, unsigned int flags)
{
ihipCtx_t *ctx = ihipGetTlsDefaultCtx();
hc::accelerator acc = ctx->_acc;
// TODO - se try-catch loop to detect memory exception?
//
//
//Note this is an execute_in_order queue, so all kernels submitted will atuomatically wait for prev to complete:
//This matches CUDA stream behavior:
hipError_t e = hipSuccess;
auto istream = new ihipStream_t(ctx, acc.create_view(), flags);
if (ctx) {
hc::accelerator acc = ctx->getWriteableDevice()->_acc;
ctx->locked_addStream(istream);
// TODO - se try-catch loop to detect memory exception?
//
//Note this is an execute_in_order queue, so all kernels submitted will atuomatically wait for prev to complete:
//This matches CUDA stream behavior:
*stream = istream;
tprintf(DB_SYNC, "hipStreamCreate, stream=%p\n", *stream);
auto istream = new ihipStream_t(ctx, acc.create_view(), flags);
return hipSuccess;
ctx->locked_addStream(istream);
*stream = istream;
tprintf(DB_SYNC, "hipStreamCreate, stream=%p\n", *stream);
} else {
e = hipErrorInvalidDevice;
}
return ihipLogStatus(e);
}
@@ -129,7 +135,7 @@ hipError_t hipStreamDestroy(hipStream_t stream)
e = hipSuccess;
}
ihipCtx_t *ctx = stream->getDevice();
ihipCtx_t *ctx = stream->getCtx();
if (ctx) {
ctx->locked_removeStream(stream);