-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OV GPU integration #207
Comments
Openvino branch with the current state: https://github.com/dchigarev/openvino/tree/gc-gpu (semi-working) Current status:
An example of a simple MLIR module that GC receives from openVINOmodule @fragment_name {
func.func @entry(%arg0: memref<64x128xf32>, %arg1: memref<128x128xf32>, %arg2: memref<64x128xf32>) {
%0 = bufferization.to_tensor %arg0 restrict : memref<64x128xf32>
%1 = bufferization.to_tensor %arg1 restrict : memref<128x128xf32>
%2 = tensor.empty() : tensor<64x128xf32>
%cst = arith.constant 0.000000e+00 : f32
%3 = linalg.fill ins(%cst : f32) outs(%2 : tensor<64x128xf32>) -> tensor<64x128xf32>
%4 = linalg.matmul ins(%0, %1 : tensor<64x128xf32>, tensor<128x128xf32>) outs(%3 : tensor<64x128xf32>) -> tensor<64x128xf32>
%5 = tensor.empty() : tensor<64x128xf32>
%6 = linalg.add ins(%4, %0 : tensor<64x128xf32>, tensor<64x128xf32>) outs(%5 : tensor<64x128xf32>) -> tensor<64x128xf32>
bufferization.materialize_in_destination %6 in restrict writable %arg2 : (tensor<64x128xf32>, memref<64x128xf32>) -> ()
return
}
} |
I think we can skip the queue passing (#230) for the time being and create a new one each time we submit a kernel. This should still be functional, queue passing should be a separate problem. |
Current status:
Things left to do:
An example of a simple MLIR module that GC receives from openVINOmodule @fragment_name {
func.func @entry(%arg0: memref<64x128xf32>, %arg1: memref<128x128xf32>, %arg2: memref<64x128xf32>) {
%0 = bufferization.to_tensor %arg0 restrict : memref<64x128xf32>
%1 = bufferization.to_tensor %arg1 restrict : memref<128x128xf32>
%2 = tensor.empty() : tensor<64x128xf32>
%cst = arith.constant 0.000000e+00 : f32
%3 = linalg.fill ins(%cst : f32) outs(%2 : tensor<64x128xf32>) -> tensor<64x128xf32>
%4 = linalg.matmul ins(%0, %1 : tensor<64x128xf32>, tensor<128x128xf32>) outs(%3 : tensor<64x128xf32>) -> tensor<64x128xf32>
%5 = tensor.empty() : tensor<64x128xf32>
%6 = linalg.add ins(%4, %0 : tensor<64x128xf32>, tensor<64x128xf32>) outs(%5 : tensor<64x128xf32>) -> tensor<64x128xf32>
bufferization.materialize_in_destination %6 in restrict writable %arg2 : (tensor<64x128xf32>, memref<64x128xf32>) -> ()
return
}
}
|
The clGetMemAllocInfoINTEL approach seems not reliable. We have agreed on adding additional parameters to MLIR and to pass the buffer types in the params. |
PR to OV with the integration: slyalin/openvino#169 |
Current status:
Things left to do:
|
Closing as completed |
No description provided.
The text was updated successfully, but these errors were encountered: