examples/accel_perf: updates to match the new accel_fw API

No longer allocate accel_tasks or convert to and from application
tasks and accel tasks.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: Id2d598d79bebcef522c76c125e65b100266ced57
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3210
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
paul luse 2020-07-03 10:10:54 -04:00 committed by Jim Harris
parent ee7e31f9ae
commit e8463f873f

View File

@ -84,18 +84,6 @@ struct ap_task {
int expected_status; /* used for compare */
};
inline static struct ap_task *
__ap_task_from_accel_task(struct spdk_accel_task *at)
{
return (struct ap_task *)((uintptr_t)at - sizeof(struct ap_task));
}
inline static struct spdk_accel_task *
__accel_task_from_ap_task(struct ap_task *ap)
{
return (struct spdk_accel_task *)((uintptr_t)ap + sizeof(struct ap_task));
}
static void
dump_user_config(struct spdk_app_opts *opts)
{
@ -210,18 +198,18 @@ _submit_single(void *arg1, void *arg2)
task->worker->current_queue_depth++;
switch (g_workload_selection) {
case ACCEL_COPY:
rc = spdk_accel_submit_copy(worker->ch, task->dst,
task->src, g_xfer_size_bytes, accel_done,
__accel_task_from_ap_task(task));
rc = spdk_accel_submit_copy(worker->ch, task->dst, task->src,
g_xfer_size_bytes, accel_done, task);
break;
case ACCEL_FILL:
/* For fill use the first byte of the task->dst buffer */
rc = spdk_accel_submit_fill(worker->ch, task->dst, *(uint8_t *)task->src,
g_xfer_size_bytes, accel_done, __accel_task_from_ap_task(task));
g_xfer_size_bytes, accel_done, task);
break;
case ACCEL_CRC32C:
rc = spdk_accel_submit_crc32c(worker->ch, (uint32_t *)task->dst, task->src, g_crc32c_seed,
g_xfer_size_bytes, accel_done, __accel_task_from_ap_task(task));
rc = spdk_accel_submit_crc32c(worker->ch, (uint32_t *)task->dst,
task->src, g_crc32c_seed,
g_xfer_size_bytes, accel_done, task);
break;
case ACCEL_COMPARE:
random_num = rand() % 100;
@ -233,12 +221,11 @@ _submit_single(void *arg1, void *arg2)
*(uint8_t *)task->dst = DATA_PATTERN;
}
rc = spdk_accel_submit_compare(worker->ch, task->dst, task->src,
g_xfer_size_bytes, accel_done, __accel_task_from_ap_task(task));
g_xfer_size_bytes, accel_done, task);
break;
case ACCEL_DUALCAST:
rc = spdk_accel_submit_dualcast(worker->ch, task->dst, task->dst2,
task->src, g_xfer_size_bytes, accel_done,
__accel_task_from_ap_task(task));
task->src, g_xfer_size_bytes, accel_done, task);
break;
default:
assert(false);
@ -247,7 +234,7 @@ _submit_single(void *arg1, void *arg2)
}
if (rc) {
accel_done(__accel_task_from_ap_task(task), rc);
accel_done(task, rc);
}
}
@ -325,9 +312,9 @@ _accel_done(void *arg1)
}
static void
batch_done(void *ref, int status)
batch_done(void *cb_arg, int status)
{
struct ap_task *task = __ap_task_from_accel_task(ref);
struct ap_task *task = (struct ap_task *)cb_arg;
struct worker_thread *worker = task->worker;
worker->current_queue_depth--;
@ -468,28 +455,24 @@ _batch_prep_cmd(struct worker_thread *worker, struct ap_task *task, struct spdk_
switch (g_workload_selection) {
case ACCEL_COPY:
rc = spdk_accel_batch_prep_copy(worker->ch, batch, task->dst,
task->src, g_xfer_size_bytes, accel_done,
__accel_task_from_ap_task(task));
task->src, g_xfer_size_bytes, accel_done, task);
break;
case ACCEL_DUALCAST:
rc = spdk_accel_batch_prep_dualcast(worker->ch, batch, task->dst, task->dst2,
task->src, g_xfer_size_bytes, accel_done,
__accel_task_from_ap_task(task));
task->src, g_xfer_size_bytes, accel_done, task);
break;
case ACCEL_COMPARE:
rc = spdk_accel_batch_prep_compare(worker->ch, batch, task->dst, task->src,
g_xfer_size_bytes, accel_done,
__accel_task_from_ap_task(task));
g_xfer_size_bytes, accel_done, task);
break;
case ACCEL_FILL:
rc = spdk_accel_batch_prep_fill(worker->ch, batch, task->dst, *(uint8_t *)task->src,
g_xfer_size_bytes, accel_done,
__accel_task_from_ap_task(task));
rc = spdk_accel_batch_prep_fill(worker->ch, batch, task->dst,
*(uint8_t *)task->src,
g_xfer_size_bytes, accel_done, task);
break;
case ACCEL_CRC32C:
rc = spdk_accel_batch_prep_crc32c(worker->ch, batch, (uint32_t *)task->dst, task->src,
g_crc32c_seed, g_xfer_size_bytes, accel_done,
__accel_task_from_ap_task(task));
rc = spdk_accel_batch_prep_crc32c(worker->ch, batch, (uint32_t *)task->dst,
task->src, g_crc32c_seed, g_xfer_size_bytes, accel_done, task);
break;
default:
assert(false);
@ -523,7 +506,7 @@ _init_thread(void *arg1)
snprintf(task_pool_name, sizeof(task_pool_name), "task_pool_%d", g_num_workers);
worker->task_pool = spdk_mempool_create(task_pool_name,
g_queue_depth * 2,
spdk_accel_task_size() + sizeof(struct ap_task),
sizeof(struct ap_task),
SPDK_MEMPOOL_DEFAULT_CACHE_SIZE,
SPDK_ENV_SOCKET_ID_ANY);
if (!worker->task_pool) {
@ -591,7 +574,7 @@ _init_thread(void *arg1)
task->worker = worker;
task->worker->current_queue_depth++;
rc = spdk_accel_batch_submit(worker->ch, batch, batch_done, __accel_task_from_ap_task(task));
rc = spdk_accel_batch_submit(worker->ch, batch, batch_done, task);
if (rc) {
fprintf(stderr, "error ending batch %d\n", rc);
goto error;
@ -633,9 +616,9 @@ error:
}
static void
accel_done(void *ref, int status)
accel_done(void *cb_arg, int status)
{
struct ap_task *task = __ap_task_from_accel_task(ref);
struct ap_task *task = (struct ap_task *)cb_arg;
struct worker_thread *worker = task->worker;
assert(worker);