| 29 | #ifdef PADDLE_WITH_DNNL |
| 30 | |
| 31 | void* GetDataFromTensor(const DenseTensor& tensor, |
| 32 | dnnl::memory::data_type type) { |
| 33 | switch (type) { |
| 34 | case dnnl::memory::data_type::f32: |
| 35 | return to_void_cast(tensor.data<float>()); |
| 36 | case dnnl::memory::data_type::s8: |
| 37 | return to_void_cast(tensor.data<int8_t>()); |
| 38 | case dnnl::memory::data_type::u8: |
| 39 | return to_void_cast(tensor.data<unsigned char>()); |
| 40 | case dnnl::memory::data_type::s32: |
| 41 | return to_void_cast(tensor.data<int32_t>()); |
| 42 | case dnnl::memory::data_type::bf16: |
| 43 | return to_void_cast(tensor.data<dtype::bfloat16>()); |
| 44 | default: |
| 45 | PADDLE_THROW(errors::InvalidArgument("Wrong oneDNN type provided.")); |
| 46 | } |
| 47 | } |
| 48 | |
| 49 | // This helper function is used to construct a dnnl memory descriptor from a |
| 50 | // reference dense tensor and a target layout. For 0-D tensor case, we will |