pub mod device;
pub mod error;
pub mod event;
pub mod kernel;
pub mod memory;
pub mod module;
pub mod stream;
pub mod utils;
#[allow(warnings)]
pub mod bindings;
pub mod ffi;
#[cfg(feature = "macros")]
pub mod memory_ext;
pub use device::{Device, DeviceProperties, get_device_count, get_device_properties};
pub use error::{Error, Result};
pub use event::{Event, Timer, event_flags};
pub use kernel::{Function, stream_to_rocrand};
pub use memory::{DeviceMemory, MemoryInfo, PinnedMemory, memory_info};
pub use module::{Module, compile_and_load, load_module, load_module_data};
pub use stream::{Stream, stream_flags};
pub use utils::{
Dim3, Version, calculate_grid_1d, calculate_grid_2d, calculate_grid_3d, is_hip_available, print_devices_info,
};
pub fn device_count() -> Result<i32> {
device::get_device_count()
}
pub fn init() -> Result<()> {
let error = unsafe { ffi::hipInit(0) };
Error::from_hip_error(error)
}
pub fn driver_version() -> Result<i32> {
let mut version = 0;
let error = unsafe { ffi::hipDriverGetVersion(&mut version) };
error::Error::from_hip_error_with_value(error, version)
}
pub fn runtime_version() -> Result<i32> {
let mut version = 0;
let error = unsafe { ffi::hipRuntimeGetVersion(&mut version) };
error::Error::from_hip_error_with_value(error, version)
}
pub fn get_last_error() -> Error {
Error::new(unsafe { ffi::hipGetLastError() })
}
pub fn device_synchronize() -> Result<()> {
let error = unsafe { ffi::hipDeviceSynchronize() };
Error::from_hip_error(error)
}
pub fn device_reset() -> Result<()> {
let error = unsafe { ffi::hipDeviceReset() };
Error::from_hip_error(error)
}