if (o->verify_async || o->io_submit_mode == IO_MODE_OFFLOAD)
td->flags |= TD_F_NEED_LOCK;
+
+ if (o->mem_type == MEM_CUDA_MALLOC)
+ td->flags &= ~TD_F_SCRAMBLE_BUFFERS;
}
static int setup_random_seeds(struct thread_data *td)
populate_verify_io_u(td, io_u);
do_scramble = 0;
}
-#ifdef CONFIG_CUDA
- if (td->o.mem_type == MEM_CUDA_MALLOC)
- do_scramble = 0;
-#endif
} else if (io_u->ddir == DDIR_READ) {
/*
* Reset the buf_filled parameters so next time if the
{
struct thread_options *o = &td->o;
-#ifdef CONFIG_CUDA
- if (o->mem_type == MEM_CUDA_MALLOC) return;
-#endif
+ if (o->mem_type == MEM_CUDA_MALLOC)
+ return;
if (o->compress_percentage || o->dedupe_percentage) {
unsigned int perc = td->o.compress_percentage;
free(td->orig_buffer);
}
-#ifdef CONFIG_CUDA
-
static int alloc_mem_cudamalloc(struct thread_data *td, size_t total_mem)
{
+#ifdef CONFIG_CUDA
CUresult ret;
char name[128];
dprint(FD_MEM, "cudaMalloc %llu %p\n", \
(unsigned long long) total_mem, td->orig_buffer);
return 0;
+#else
+ return -EINVAL;
+#endif
}
static void free_mem_cudamalloc(struct thread_data *td)
{
- if ((void *) td->dev_mem_ptr != NULL)
+#ifdef CONFIG_CUDA
+ if (td->dev_mem_ptr != NULL)
cuMemFree(td->dev_mem_ptr);
if (cuCtxDestroy(td->cu_ctx) != CUDA_SUCCESS)
log_err("fio: failed to destroy cuda context\n");
-}
#endif
+}
/*
* Set up the buffer area we need for io.
else if (td->o.mem_type == MEM_MMAP || td->o.mem_type == MEM_MMAPHUGE ||
td->o.mem_type == MEM_MMAPSHARED)
ret = alloc_mem_mmap(td, total_mem);
-#ifdef CONFIG_CUDA
else if (td->o.mem_type == MEM_CUDA_MALLOC)
ret = alloc_mem_cudamalloc(td, total_mem);
-#endif
else {
log_err("fio: bad mem type: %d\n", td->o.mem_type);
ret = 1;
else if (td->o.mem_type == MEM_MMAP || td->o.mem_type == MEM_MMAPHUGE ||
td->o.mem_type == MEM_MMAPSHARED)
free_mem_mmap(td, total_mem);
-#ifdef CONFIG_CUDA
else if (td->o.mem_type == MEM_CUDA_MALLOC)
free_mem_cudamalloc(td);
-#endif
else
log_err("Bad memory type %u\n", td->o.mem_type);