Removing IREE_HAL_BUFFER_USAGE_ALL and tightening up host visibility.
diff --git a/bindings/python/iree/runtime/array_interop.py b/bindings/python/iree/runtime/array_interop.py index fd4a1e6..d761274 100644 --- a/bindings/python/iree/runtime/array_interop.py +++ b/bindings/python/iree/runtime/array_interop.py
@@ -185,9 +185,9 @@ dtype=None, *, implicit_host_transfer: bool = False, - memory_type=MemoryType.DEVICE_LOCAL | - MemoryType.DEVICE_VISIBLE, - allowed_usage=BufferUsage.ALL, + memory_type=MemoryType.DEVICE_LOCAL, + allowed_usage=(BufferUsage.DISPATCH | BufferUsage.TRANSFER | + BufferUsage.MAPPING), element_type: Optional[HalElementType] = None) -> DeviceArray: """Helper to create a DeviceArray from an arbitrary array like.
diff --git a/bindings/python/iree/runtime/function.py b/bindings/python/iree/runtime/function.py index 9c39845..40eb89c 100644 --- a/bindings/python/iree/runtime/function.py +++ b/bindings/python/iree/runtime/function.py
@@ -295,9 +295,9 @@ # When we get an ndarray as an argument and are implicitly mapping it to a # buffer view, flags for doing so. -IMPLICIT_BUFFER_ARG_MEMORY_TYPE = (MemoryType.DEVICE_LOCAL | - MemoryType.DEVICE_VISIBLE) -IMPLICIT_BUFFER_ARG_USAGE = BufferUsage.ALL +IMPLICIT_BUFFER_ARG_MEMORY_TYPE = MemoryType.DEVICE_LOCAL +IMPLICIT_BUFFER_ARG_USAGE = (BufferUsage.DISPATCH | BufferUsage.TRANSFER | + BufferUsage.MAPPING) def _is_ndarray_descriptor(desc):
diff --git a/bindings/python/iree/runtime/hal.cc b/bindings/python/iree/runtime/hal.cc index 66633e1..653c8a8 100644 --- a/bindings/python/iree/runtime/hal.cc +++ b/bindings/python/iree/runtime/hal.cc
@@ -347,14 +347,15 @@ .value("TRANSFER", IREE_HAL_BUFFER_USAGE_TRANSFER) .value("MAPPING", IREE_HAL_BUFFER_USAGE_MAPPING) .value("DISPATCH", IREE_HAL_BUFFER_USAGE_DISPATCH) - .value("ALL", IREE_HAL_BUFFER_USAGE_ALL) .export_values() .def("__or__", [](enum iree_hal_buffer_usage_bits_t self, - enum iree_hal_buffer_usage_bits_t other) { return self | other; }) + enum iree_hal_buffer_usage_bits_t other) { + return (enum iree_hal_buffer_usage_bits_t)(self | other); + }) .def("__and__", [](enum iree_hal_buffer_usage_bits_t self, enum iree_hal_buffer_usage_bits_t other) { - return self & other; + return (enum iree_hal_buffer_usage_bits_t)(self & other); }); py::enum_<enum iree_hal_memory_access_bits_t>(m, "MemoryAccess")
diff --git a/bindings/python/iree/runtime/invoke.cc b/bindings/python/iree/runtime/invoke.cc index 3f08b49..8e8c4a9 100644 --- a/bindings/python/iree/runtime/invoke.cc +++ b/bindings/python/iree/runtime/invoke.cc
@@ -194,9 +194,11 @@ } retained_bv = c.allocator().AllocateBufferCopy( - IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - IREE_HAL_BUFFER_USAGE_ALL, host_array, hal_element_type); + IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING, + host_array, hal_element_type); bv = py::cast<HalBufferView *>(retained_bv); } @@ -399,9 +401,10 @@ // Put it on the device. py::object retained_bv = c.allocator().AllocateBufferCopy( - IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - IREE_HAL_BUFFER_USAGE_ALL, host_array, hal_element_type); + IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING, + host_array, hal_element_type); HalBufferView *bv = py::cast<HalBufferView *>(retained_bv); // TODO: If adding further manipulation here, please make this common
diff --git a/bindings/python/iree/runtime/vm_test.py b/bindings/python/iree/runtime/vm_test.py index cca3383..d730442 100644 --- a/bindings/python/iree/runtime/vm_test.py +++ b/bindings/python/iree/runtime/vm_test.py
@@ -95,9 +95,10 @@ lst = iree.runtime.VmVariantList(5) ary1 = np.asarray([1, 2, 3, 4], dtype=dt) bv1 = self.device.allocator.allocate_buffer_copy( - memory_type=iree.runtime.MemoryType.DEVICE_LOCAL | - iree.runtime.MemoryType.DEVICE_VISIBLE, - allowed_usage=iree.runtime.BufferUsage.ALL, + memory_type=iree.runtime.MemoryType.DEVICE_LOCAL, + allowed_usage=(iree.runtime.BufferUsage.DISPATCH | + iree.runtime.BufferUsage.TRANSFER | + iree.runtime.BufferUsage.MAPPING), buffer=ary1, element_type=et) lst.push_buffer_view(bv1)
diff --git a/bindings/tflite/tensor.c b/bindings/tflite/tensor.c index 3f52322..9debd88 100644 --- a/bindings/tflite/tensor.c +++ b/bindings/tflite/tensor.c
@@ -141,7 +141,9 @@ (iree_hal_buffer_params_t){ .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | IREE_HAL_MEMORY_TYPE_HOST_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING, }, allocation_size, iree_const_byte_span_empty(), &tensor->buffer));
diff --git a/experimental/web/sample_static/main.c b/experimental/web/sample_static/main.c index 04985af..8bba555 100644 --- a/experimental/web/sample_static/main.c +++ b/experimental/web/sample_static/main.c
@@ -124,8 +124,7 @@ IREE_ARRAYSIZE(buffer_shape), IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, },
diff --git a/iree/compiler/Dialect/HAL/Conversion/HALToVM/test/allocator_ops.mlir b/iree/compiler/Dialect/HAL/Conversion/HALToVM/test/allocator_ops.mlir index 7ebec15..48619c0 100644 --- a/iree/compiler/Dialect/HAL/Conversion/HALToVM/test/allocator_ops.mlir +++ b/iree/compiler/Dialect/HAL/Conversion/HALToVM/test/allocator_ops.mlir
@@ -3,8 +3,8 @@ // CHECK-LABEL: vm.func private @allocatorAllocate func.func @allocatorAllocate(%arg0 : !hal.allocator) -> !hal.buffer { %c1024 = arith.constant 1024 : index - // CHECK: %ref = vm.call @hal.allocator.allocate(%arg0, %c6, %c14, %c1024) : (!vm.ref<!hal.allocator>, i32, i32, i32) -> !vm.ref<!hal.buffer> - %0 = hal.allocator.allocate<%arg0 : !hal.allocator> type("HostLocal") usage("All") : !hal.buffer{%c1024} + // CHECK: %ref = vm.call @hal.allocator.allocate(%arg0, %c6, %c10, %c1024) : (!vm.ref<!hal.allocator>, i32, i32, i32) -> !vm.ref<!hal.buffer> + %0 = hal.allocator.allocate<%arg0 : !hal.allocator> type("HostLocal") usage("Dispatch|Transfer") : !hal.buffer{%c1024} return %0 : !hal.buffer }
diff --git a/iree/compiler/Dialect/HAL/IR/HALBase.td b/iree/compiler/Dialect/HAL/IR/HALBase.td index 4e89a05..dc1df3c 100644 --- a/iree/compiler/Dialect/HAL/IR/HALBase.td +++ b/iree/compiler/Dialect/HAL/IR/HALBase.td
@@ -52,7 +52,6 @@ def HAL_BufferUsage_Transfer : BitEnumAttrCase<"Transfer", 0x0002>; // T def HAL_BufferUsage_Mapping : BitEnumAttrCase<"Mapping", 0x0004>; // M def HAL_BufferUsage_Dispatch : BitEnumAttrCase<"Dispatch", 0x0008>; // D -def HAL_BufferUsage_All : BitEnumAttrCase<"All", 0x000E>; def HAL_BufferUsageBitfieldAttr : BitEnumAttr<"BufferUsageBitfield", "valid BufferUsage", [ HAL_BufferUsage_None, @@ -60,7 +59,6 @@ HAL_BufferUsage_Transfer, HAL_BufferUsage_Mapping, HAL_BufferUsage_Dispatch, - HAL_BufferUsage_All, ]> { let cppNamespace = "mlir::iree_compiler::IREE::HAL"; }
diff --git a/iree/compiler/Dialect/HAL/Transforms/test/convert_to_hal.mlir b/iree/compiler/Dialect/HAL/Transforms/test/convert_to_hal.mlir index 546ccb2..93e3c90 100644 --- a/iree/compiler/Dialect/HAL/Transforms/test/convert_to_hal.mlir +++ b/iree/compiler/Dialect/HAL/Transforms/test/convert_to_hal.mlir
@@ -67,7 +67,7 @@ // CHECK: %[[RESULT_BUFFER:.+]] = hal.allocator.allocate<%[[ALLOCATOR]] : !hal.allocator> // CHECK-SAME: type("HostVisible|DeviceVisible|DeviceLocal") - // CHECK-SAME: usage("Transfer|Mapping|Dispatch|All") + // CHECK-SAME: usage("Transfer|Mapping|Dispatch") // CHECK-SAME: : !hal.buffer{%c16} %result_resource = stream.resource.alloc uninitialized : !stream.resource<external>{%c16}
diff --git a/iree/hal/allocator.h b/iree/hal/allocator.h index 71a1583..92c11df 100644 --- a/iree/hal/allocator.h +++ b/iree/hal/allocator.h
@@ -53,7 +53,7 @@ // limit the allowed usage bits to precisely what the actual usage will be to // avoid additional copies, synchronization, and expensive emulation. // - // If 0 then the usage will be set as IREE_HAL_BUFFER_USAGE_ALL. + // If 0 then the usage will default to all usage modes. iree_hal_buffer_usage_t usage; // Specifies the access allowed to the memory via the HAL APIs. @@ -95,8 +95,13 @@ // Canonicalizes |params| fields when zero initialization is used. static inline void iree_hal_buffer_params_canonicalize( iree_hal_buffer_params_t* params) { - if (!params->usage) params->usage = IREE_HAL_BUFFER_USAGE_ALL; - if (!params->access) params->access = IREE_HAL_MEMORY_ACCESS_ALL; + if (!params->usage) { + params->usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER; + } + if (!params->access) { + params->access = IREE_HAL_MEMORY_ACCESS_ALL; + } if (!params->queue_affinity) { params->queue_affinity = IREE_HAL_QUEUE_AFFINITY_ANY; } @@ -106,7 +111,10 @@ static inline iree_hal_buffer_params_t iree_hal_buffer_params_with_usage( const iree_hal_buffer_params_t params, iree_hal_buffer_usage_t usage) { iree_hal_buffer_params_t result = params; - if (!result.usage) result.usage = IREE_HAL_BUFFER_USAGE_ALL; + if (!result.usage) { + result.usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER; + } result.usage |= usage; return result; }
diff --git a/iree/hal/buffer.c b/iree/hal/buffer.c index 77b64f6..ceb0b2f 100644 --- a/iree/hal/buffer.c +++ b/iree/hal/buffer.c
@@ -59,7 +59,6 @@ iree_hal_buffer_usage_t value, iree_bitfield_string_temp_t* out_temp) { static const iree_bitfield_string_mapping_t mappings[] = { // Combined: - {IREE_HAL_BUFFER_USAGE_ALL, IREE_SVL("ALL")}, // Separate: {IREE_HAL_BUFFER_USAGE_CONSTANT, IREE_SVL("CONSTANT")}, {IREE_HAL_BUFFER_USAGE_TRANSFER, IREE_SVL("TRANSFER")},
diff --git a/iree/hal/buffer.h b/iree/hal/buffer.h index 9ff8bdc..7057ecb 100644 --- a/iree/hal/buffer.h +++ b/iree/hal/buffer.h
@@ -152,11 +152,6 @@ // The buffer can be provided as an input or output to an executable. // Buffers of this type may be directly used by drivers during dispatch. IREE_HAL_BUFFER_USAGE_DISPATCH = 1u << 3, - - // Buffer may be used for any operation. - IREE_HAL_BUFFER_USAGE_ALL = IREE_HAL_BUFFER_USAGE_TRANSFER | - IREE_HAL_BUFFER_USAGE_MAPPING | - IREE_HAL_BUFFER_USAGE_DISPATCH, }; typedef uint32_t iree_hal_buffer_usage_t;
diff --git a/iree/hal/cts/allocator_test.h b/iree/hal/cts/allocator_test.h index 5e0347c..4a1103c 100644 --- a/iree/hal/cts/allocator_test.h +++ b/iree/hal/cts/allocator_test.h
@@ -73,7 +73,7 @@ TEST_P(allocator_test, AllocateBuffer) { iree_hal_buffer_params_t params = {0}; - params.type = IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; + params.type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL; params.usage = IREE_HAL_BUFFER_USAGE_TRANSFER; iree_hal_buffer_t* buffer = NULL; IREE_ASSERT_OK(iree_hal_allocator_allocate_buffer( @@ -96,7 +96,7 @@ // practice so we should at least be able to create them without errors. TEST_P(allocator_test, AllocateEmptyBuffer) { iree_hal_buffer_params_t params = {0}; - params.type = IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; + params.type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL; params.usage = IREE_HAL_BUFFER_USAGE_TRANSFER; iree_hal_buffer_t* buffer = NULL; IREE_ASSERT_OK(iree_hal_allocator_allocate_buffer(
diff --git a/iree/hal/cts/command_buffer_dispatch_test.h b/iree/hal/cts/command_buffer_dispatch_test.h index cb36055..ef09f0c 100644 --- a/iree/hal/cts/command_buffer_dispatch_test.h +++ b/iree/hal/cts/command_buffer_dispatch_test.h
@@ -80,8 +80,7 @@ // Create input and output buffers. iree_hal_buffer_params_t input_params = {0}; - input_params.type = - IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | IREE_HAL_MEMORY_TYPE_HOST_VISIBLE; + input_params.type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL; input_params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER; iree_hal_buffer_view_t* input_buffer_view = NULL; @@ -95,8 +94,9 @@ iree_hal_buffer_params_t output_params = {0}; output_params.type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | IREE_HAL_MEMORY_TYPE_HOST_VISIBLE; - output_params.usage = - IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_MAPPING; + output_params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; iree_hal_buffer_t* output_buffer = NULL; IREE_ASSERT_OK(iree_hal_allocator_allocate_buffer( device_allocator_, output_params, sizeof(float),
diff --git a/iree/hal/cts/command_buffer_test.h b/iree/hal/cts/command_buffer_test.h index 3c31e03..2327197 100644 --- a/iree/hal/cts/command_buffer_test.h +++ b/iree/hal/cts/command_buffer_test.h
@@ -33,7 +33,9 @@ iree_hal_buffer_params_t params = {0}; params.type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | IREE_HAL_MEMORY_TYPE_HOST_VISIBLE; - params.usage = IREE_HAL_BUFFER_USAGE_ALL; + params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; iree_hal_buffer_t* device_buffer = NULL; IREE_CHECK_OK(iree_hal_allocator_allocate_buffer( iree_hal_device_allocator(device_), params, buffer_size, @@ -139,7 +141,9 @@ iree_hal_buffer_params_t host_params = {0}; host_params.type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; - host_params.usage = IREE_HAL_BUFFER_USAGE_ALL; + host_params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; iree_hal_buffer_t* host_buffer = nullptr; IREE_ASSERT_OK(iree_hal_allocator_allocate_buffer( device_allocator_, host_params, kDefaultAllocationSize, @@ -151,7 +155,9 @@ iree_hal_buffer_params_t device_params = {0}; device_params.type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | IREE_HAL_MEMORY_TYPE_HOST_VISIBLE; - device_params.usage = IREE_HAL_BUFFER_USAGE_ALL; + device_params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; iree_hal_buffer_t* device_buffer = nullptr; IREE_ASSERT_OK(iree_hal_allocator_allocate_buffer( device_allocator_, device_params, kDefaultAllocationSize, @@ -193,7 +199,9 @@ iree_hal_buffer_params_t device_params = {0}; device_params.type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | IREE_HAL_MEMORY_TYPE_HOST_VISIBLE; - device_params.usage = IREE_HAL_BUFFER_USAGE_ALL; + device_params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; iree_hal_buffer_t* device_buffer = NULL; IREE_ASSERT_OK(iree_hal_allocator_allocate_buffer( device_allocator_, device_params, kDefaultAllocationSize, @@ -208,7 +216,9 @@ iree_hal_buffer_params_t host_params = {0}; host_params.type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; - host_params.usage = IREE_HAL_BUFFER_USAGE_ALL; + host_params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; std::vector<uint8_t> host_buffer_data(kDefaultAllocationSize, i8_val); iree_hal_buffer_t* host_buffer = NULL; IREE_ASSERT_OK(iree_hal_allocator_allocate_buffer(
diff --git a/iree/modules/check/check_test.cc b/iree/modules/check/check_test.cc index 3b6cab6..0fbc635 100644 --- a/iree/modules/check/check_test.cc +++ b/iree/modules/check/check_test.cc
@@ -83,7 +83,9 @@ iree_hal_buffer_params_t params = {0}; params.type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - params.usage = IREE_HAL_BUFFER_USAGE_ALL; + params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; IREE_ASSERT_OK(iree_hal_buffer_view_allocate_buffer( allocator_, shape.data(), shape.size(), IREE_HAL_ELEMENT_TYPE_INT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, params, @@ -103,7 +105,9 @@ iree_hal_buffer_params_t params = {0}; params.type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; - params.usage = IREE_HAL_BUFFER_USAGE_ALL; + params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; IREE_ASSERT_OK(iree_hal_buffer_view_allocate_buffer( allocator_, shape.data(), shape.size(), IREE_HAL_ELEMENT_TYPE_FLOAT_16, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, params, @@ -123,7 +127,9 @@ iree_hal_buffer_params_t params = {0}; params.type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; - params.usage = IREE_HAL_BUFFER_USAGE_ALL; + params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; IREE_ASSERT_OK(iree_hal_buffer_view_allocate_buffer( allocator_, shape.data(), shape.size(), IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, params, @@ -143,7 +149,9 @@ iree_hal_buffer_params_t params = {0}; params.type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; - params.usage = IREE_HAL_BUFFER_USAGE_ALL; + params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING; IREE_ASSERT_OK(iree_hal_buffer_view_allocate_buffer( allocator_, shape.data(), shape.size(), IREE_HAL_ELEMENT_TYPE_FLOAT_64, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, params,
diff --git a/iree/runtime/demo/hello_world_explained.c b/iree/runtime/demo/hello_world_explained.c index ca2a8a0..3abaca0 100644 --- a/iree/runtime/demo/hello_world_explained.c +++ b/iree/runtime/demo/hello_world_explained.c
@@ -203,12 +203,12 @@ IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ // Where to allocate (host or device): - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, // Access to allow to this memory (this is .rodata so READ only): .access = IREE_HAL_MEMORY_ACCESS_READ, // Intended usage of the buffer (transfers, dispatches, etc): - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER, }, // The actual heap buffer to wrap or clone and its allocator: iree_make_const_byte_span(arg0_data, sizeof(arg0_data)), @@ -236,10 +236,10 @@ IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, .access = IREE_HAL_MEMORY_ACCESS_READ, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span(arg1_data, sizeof(arg1_data)), &arg1); }
diff --git a/iree/runtime/demo/hello_world_terse.c b/iree/runtime/demo/hello_world_terse.c index ba67ae3..35ca476 100644 --- a/iree/runtime/demo/hello_world_terse.c +++ b/iree/runtime/demo/hello_world_terse.c
@@ -85,10 +85,10 @@ IREE_ARRAYSIZE(arg0_shape), IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, .access = IREE_HAL_MEMORY_ACCESS_READ, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span(arg0_data, sizeof(arg0_data)), &arg0)); IREE_CHECK_OK(iree_hal_buffer_view_fprint( @@ -108,10 +108,10 @@ IREE_ARRAYSIZE(arg1_shape), IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, .access = IREE_HAL_MEMORY_ACCESS_READ, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span(arg1_data, sizeof(arg1_data)), &arg1)); IREE_CHECK_OK(iree_hal_buffer_view_fprint(
diff --git a/iree/samples/custom_modules/custom_modules_test.cc b/iree/samples/custom_modules/custom_modules_test.cc index ec5ac19..0f024ad 100644 --- a/iree/samples/custom_modules/custom_modules_test.cc +++ b/iree/samples/custom_modules/custom_modules_test.cc
@@ -136,7 +136,8 @@ iree_hal_buffer_params_t params = {0}; params.type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; - params.usage = IREE_HAL_BUFFER_USAGE_ALL; + params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | IREE_HAL_BUFFER_USAGE_MAPPING; iree_hal_buffer_view_t* buffer_view = nullptr; IREE_ASSERT_OK(iree_hal_buffer_view_allocate_buffer( hal_allocator_, kShape, IREE_ARRAYSIZE(kShape), @@ -184,7 +185,8 @@ iree_hal_buffer_params_t params = {0}; params.type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE; - params.usage = IREE_HAL_BUFFER_USAGE_ALL; + params.usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | IREE_HAL_BUFFER_USAGE_MAPPING; iree_hal_buffer_view_t* buffer_view = nullptr; IREE_ASSERT_OK(iree_hal_buffer_view_allocate_buffer( hal_allocator_, kShape, IREE_ARRAYSIZE(kShape),
diff --git a/iree/samples/dynamic_shapes/main.c b/iree/samples/dynamic_shapes/main.c index c75c6c3..291f561 100644 --- a/iree/samples/dynamic_shapes/main.c +++ b/iree/samples/dynamic_shapes/main.c
@@ -24,9 +24,9 @@ IREE_ARRAYSIZE(arg0_shape), IREE_HAL_ELEMENT_TYPE_SINT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span((void*)values, sizeof(int) * values_length), &arg0); @@ -74,9 +74,9 @@ IREE_ARRAYSIZE(arg0_shape), IREE_HAL_ELEMENT_TYPE_SINT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span((void*)values, sizeof(int) * values_length), &arg0); @@ -115,9 +115,9 @@ IREE_ARRAYSIZE(arg0_shape), IREE_HAL_ELEMENT_TYPE_SINT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span((void*)values, sizeof(int) * values_length), &arg0);
diff --git a/iree/samples/simple_embedding/simple_embedding.c b/iree/samples/simple_embedding/simple_embedding.c index cce2143..69be569 100644 --- a/iree/samples/simple_embedding/simple_embedding.c +++ b/iree/samples/simple_embedding/simple_embedding.c
@@ -83,22 +83,18 @@ iree_hal_device_allocator(device), shape, IREE_ARRAYSIZE(shape), IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | - IREE_HAL_MEMORY_TYPE_HOST_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | - IREE_HAL_BUFFER_USAGE_TRANSFER | - IREE_HAL_BUFFER_USAGE_MAPPING, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span(kFloat4, sizeof(kFloat4)), &arg0_buffer_view)); IREE_RETURN_IF_ERROR(iree_hal_buffer_view_allocate_buffer( iree_hal_device_allocator(device), shape, IREE_ARRAYSIZE(shape), IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | - IREE_HAL_MEMORY_TYPE_HOST_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | - IREE_HAL_BUFFER_USAGE_TRANSFER | - IREE_HAL_BUFFER_USAGE_MAPPING, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span(kFloat2, sizeof(kFloat2)), &arg1_buffer_view));
diff --git a/iree/samples/static_library/static_library_demo.c b/iree/samples/static_library/static_library_demo.c index 1497de7..6a08f72 100644 --- a/iree/samples/static_library/static_library_demo.c +++ b/iree/samples/static_library/static_library_demo.c
@@ -124,9 +124,9 @@ iree_hal_device_allocator(device), shape, IREE_ARRAYSIZE(shape), IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span((void*)kFloat4, sizeof(float) * kElementCount), @@ -137,9 +137,9 @@ iree_hal_device_allocator(device), shape, IREE_ARRAYSIZE(shape), IREE_HAL_ELEMENT_TYPE_FLOAT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span((void*)kFloat2, sizeof(float) * kElementCount),
diff --git a/iree/samples/variables_and_state/main.c b/iree/samples/variables_and_state/main.c index 45c8f9c..9e1204e 100644 --- a/iree/samples/variables_and_state/main.c +++ b/iree/samples/variables_and_state/main.c
@@ -52,9 +52,9 @@ /*shape_rank=*/0, IREE_HAL_ELEMENT_TYPE_SINT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span((void*)arg0_data, sizeof(arg0_data)), &arg0); } @@ -85,9 +85,9 @@ /*shape_rank=*/0, IREE_HAL_ELEMENT_TYPE_SINT_32, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span((void*)arg0_data, sizeof(arg0_data)), &arg0); }
diff --git a/iree/samples/vulkan/vulkan_inference_gui.cc b/iree/samples/vulkan/vulkan_inference_gui.cc index 8888e16..b250e55 100644 --- a/iree/samples/vulkan/vulkan_inference_gui.cc +++ b/iree/samples/vulkan/vulkan_inference_gui.cc
@@ -361,7 +361,9 @@ IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE); iree_hal_buffer_usage_t input_buffer_usage = static_cast<iree_hal_buffer_usage_t>( - IREE_HAL_BUFFER_USAGE_ALL | IREE_HAL_BUFFER_USAGE_CONSTANT); + IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | IREE_HAL_BUFFER_USAGE_MAPPING | + IREE_HAL_BUFFER_USAGE_CONSTANT); iree_hal_buffer_params_t buffer_params; buffer_params.type = input_memory_type; buffer_params.usage = input_buffer_usage;
diff --git a/iree/tools/iree-e2e-matmul-test.c b/iree/tools/iree-e2e-matmul-test.c index 08d8add..9a0b660 100644 --- a/iree/tools/iree-e2e-matmul-test.c +++ b/iree/tools/iree-e2e-matmul-test.c
@@ -517,7 +517,9 @@ (iree_hal_buffer_params_t){ .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING, }, iree_const_byte_span_empty(), dst); } @@ -543,7 +545,9 @@ (iree_hal_buffer_params_t){ .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | + IREE_HAL_BUFFER_USAGE_TRANSFER | + IREE_HAL_BUFFER_USAGE_MAPPING, }, src_span, dst); }
diff --git a/iree/tools/utils/image_util.c b/iree/tools/utils/image_util.c index bba193f..adb83db 100644 --- a/iree/tools/utils/image_util.c +++ b/iree/tools/utils/image_util.c
@@ -139,10 +139,10 @@ allocator, shape, shape_rank, element_type, IREE_HAL_ENCODING_TYPE_DENSE_ROW_MAJOR, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_HOST_LOCAL | - IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, .access = IREE_HAL_MEMORY_ACCESS_READ, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_make_const_byte_span(pixel_data, element_byte * buffer_length), out_buffer_view);
diff --git a/iree/tools/utils/trace_replay.c b/iree/tools/utils/trace_replay.c index 34d5c75..27e7a77 100644 --- a/iree/tools/utils/trace_replay.c +++ b/iree/tools/utils/trace_replay.c
@@ -713,9 +713,9 @@ IREE_RETURN_IF_ERROR(iree_hal_allocator_allocate_buffer( iree_hal_device_allocator(replay->device), (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | - IREE_HAL_MEMORY_TYPE_HOST_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_ALL, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, allocation_size, iree_const_byte_span_empty(), &buffer)); @@ -792,11 +792,9 @@ iree_hal_device_allocator(replay->device), shape, shape_rank, element_type, encoding_type, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | - IREE_HAL_MEMORY_TYPE_HOST_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | - IREE_HAL_BUFFER_USAGE_TRANSFER | - IREE_HAL_BUFFER_USAGE_MAPPING, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_trace_replay_generate_hal_buffer_callback, ¶ms, &buffer_view)); } else { @@ -804,11 +802,9 @@ iree_hal_device_allocator(replay->device), shape, shape_rank, element_type, encoding_type, (iree_hal_buffer_params_t){ - .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL | - IREE_HAL_MEMORY_TYPE_HOST_VISIBLE, - .usage = IREE_HAL_BUFFER_USAGE_DISPATCH | - IREE_HAL_BUFFER_USAGE_TRANSFER | - IREE_HAL_BUFFER_USAGE_MAPPING, + .type = IREE_HAL_MEMORY_TYPE_DEVICE_LOCAL, + .usage = + IREE_HAL_BUFFER_USAGE_DISPATCH | IREE_HAL_BUFFER_USAGE_TRANSFER, }, iree_const_byte_span_empty(), &buffer_view)); }