Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions src/api/cpp/nixl_descriptors.h
Original file line number Diff line number Diff line change
Expand Up @@ -247,11 +247,6 @@ class nixlDescList {
* @brief Check if nixlDescList is empty or not
*/
inline bool isEmpty() const { return (descs.size()==0); }
/**
* @brief Check if any two nixlDescs in the internal list of descriptors
* overlap with each other
*/
bool hasOverlaps() const;
/**
* @brief Operator [] overloading, get/set descriptor at [index].
* Can throw std::out_of_range exception.
Expand Down Expand Up @@ -309,13 +304,6 @@ class nixlDescList {
* nixlDescList of nixlBasicDesc elements
*/
nixlDescList<nixlBasicDesc> trim() const;
/**
* @brief Check if input descriptor `desc` overlaps with any descriptor
* within the current object, and returns its index if found.
*
* @param index [out] index of overlapping descriptor
*/
bool overlaps (const T &desc, int &index) const;
/**
* @brief Get the index of a descriptor that matches the `query`
*
Expand Down
13 changes: 0 additions & 13 deletions src/bindings/rust/src/descriptors/reg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -145,19 +145,6 @@ impl<'a> RegDescList<'a> {
}
}

/// Returns true if any descriptors in the list overlap
pub fn has_overlaps(&self) -> Result<bool, NixlError> {
let mut has_overlaps = false;
let status =
unsafe { nixl_capi_reg_dlist_has_overlaps(self.inner.as_ptr(), &mut has_overlaps) };

match status {
NIXL_CAPI_SUCCESS => Ok(has_overlaps),
NIXL_CAPI_ERROR_INVALID_PARAM => Err(NixlError::InvalidParam),
_ => Err(NixlError::BackendError),
}
}

/// Trims the list to the given size
pub fn trim(&mut self) -> Result<(), NixlError> {
let status = unsafe { nixl_capi_reg_dlist_trim(self.inner.as_ptr()) };
Expand Down
13 changes: 0 additions & 13 deletions src/bindings/rust/src/descriptors/xfer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,19 +119,6 @@ impl<'a> XferDescList<'a> {
}
}

/// Returns true if any descriptors in the list overlap
pub fn has_overlaps(&self) -> Result<bool, NixlError> {
let mut has_overlaps = false;
let status =
unsafe { nixl_capi_xfer_dlist_has_overlaps(self.inner.as_ptr(), &mut has_overlaps) };

match status {
NIXL_CAPI_SUCCESS => Ok(has_overlaps),
NIXL_CAPI_ERROR_INVALID_PARAM => Err(NixlError::InvalidParam),
_ => Err(NixlError::BackendError),
}
}

/// Returns true if the list is sorted
pub fn is_sorted(&self) -> Result<bool, NixlError> {
let mut is_sorted = false;
Expand Down
4 changes: 2 additions & 2 deletions src/bindings/rust/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ use bindings::{
nixl_capi_opt_args_set_notif_msg, nixl_capi_opt_args_set_skip_desc_merge,
nixl_capi_params_create_iterator, nixl_capi_params_destroy_iterator, nixl_capi_params_is_empty,
nixl_capi_params_iterator_next, nixl_capi_post_xfer_req, nixl_capi_reg_dlist_add_desc,
nixl_capi_reg_dlist_clear, nixl_capi_reg_dlist_has_overlaps, nixl_capi_reg_dlist_len,
nixl_capi_reg_dlist_clear, nixl_capi_reg_dlist_len,
nixl_capi_reg_dlist_resize, nixl_capi_register_mem, nixl_capi_string_list_get,
nixl_capi_string_list_size, nixl_capi_xfer_dlist_add_desc, nixl_capi_xfer_dlist_clear,
nixl_capi_xfer_dlist_has_overlaps, nixl_capi_xfer_dlist_len, nixl_capi_xfer_dlist_resize,
nixl_capi_xfer_dlist_len, nixl_capi_xfer_dlist_resize,
nixl_capi_agent_make_connection, nixl_capi_reg_dlist_get_type, nixl_capi_reg_dlist_desc_count,
nixl_capi_reg_dlist_verify_sorted, nixl_capi_reg_dlist_trim, nixl_capi_reg_dlist_rem_desc, nixl_capi_reg_dlist_print,
nixl_capi_xfer_dlist_get_type, nixl_capi_xfer_dlist_verify_sorted, nixl_capi_xfer_dlist_desc_count,
Expand Down
12 changes: 0 additions & 12 deletions src/bindings/rust/stubs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -266,12 +266,6 @@ nixl_capi_xfer_dlist_len(nixl_capi_xfer_dlist_t dlist, size_t* len)
return nixl_capi_stub_abort();
}

nixl_capi_status_t
nixl_capi_xfer_dlist_has_overlaps(nixl_capi_xfer_dlist_t dlist, bool* has_overlaps)
{
return nixl_capi_stub_abort();
}

nixl_capi_status_t
nixl_capi_xfer_dlist_clear(nixl_capi_xfer_dlist_t dlist)
{
Expand Down Expand Up @@ -313,12 +307,6 @@ nixl_capi_reg_dlist_len(nixl_capi_reg_dlist_t dlist, size_t* len)
return nixl_capi_stub_abort();
}

nixl_capi_status_t
nixl_capi_reg_dlist_has_overlaps(nixl_capi_reg_dlist_t dlist, bool* has_overlaps)
{
return nixl_capi_stub_abort();
}

nixl_capi_status_t
nixl_capi_reg_dlist_clear(nixl_capi_reg_dlist_t dlist)
{
Expand Down
19 changes: 0 additions & 19 deletions src/bindings/rust/tests/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -216,24 +216,12 @@ fn test_xfer_dlist() {
// Check length
assert_eq!(dlist.len().unwrap(), 2);

// Check overlaps
assert!(!dlist.has_overlaps().unwrap());

// Add overlapping descriptor
dlist.add_desc(0x1050, 0x100, 0).unwrap();
assert!(dlist.has_overlaps().unwrap());

// Clear list
dlist.clear().unwrap();
assert_eq!(dlist.len().unwrap(), 0);

// Resize list
dlist.resize(5).unwrap();

// add descriptors with overlaps
dlist.add_desc(0x1000, 0x100, 0).unwrap();
dlist.add_desc(0x1050, 0x100, 0).unwrap();
assert!(dlist.has_overlaps().unwrap());
}

#[test]
Expand All @@ -247,13 +235,6 @@ fn test_reg_dlist() {
// Check length
assert_eq!(dlist.len().unwrap(), 2);

// Check overlaps
assert!(!dlist.has_overlaps().unwrap());

// Add overlapping descriptor
dlist.add_desc(0x1050, 0x100, 0).unwrap();
assert!(dlist.has_overlaps().unwrap());

// Clear list
dlist.clear().unwrap();
assert_eq!(dlist.len().unwrap(), 0);
Expand Down
32 changes: 0 additions & 32 deletions src/bindings/rust/wrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -957,22 +957,6 @@ nixl_capi_status_t nixl_capi_xfer_dlist_rem_desc(nixl_capi_xfer_dlist_t dlist, i
}
}

nixl_capi_status_t
nixl_capi_xfer_dlist_has_overlaps(nixl_capi_xfer_dlist_t dlist, bool* has_overlaps)
{
if (!dlist || !has_overlaps) {
return NIXL_CAPI_ERROR_INVALID_PARAM;
}

try {
*has_overlaps = dlist->dlist->hasOverlaps();
return NIXL_CAPI_SUCCESS;
}
catch (...) {
return NIXL_CAPI_ERROR_BACKEND;
}
}

nixl_capi_status_t
nixl_capi_xfer_dlist_verify_sorted(nixl_capi_xfer_dlist_t dlist, bool* is_sorted)
{
Expand Down Expand Up @@ -1187,22 +1171,6 @@ nixl_capi_status_t nixl_capi_reg_dlist_is_sorted(nixl_capi_reg_dlist_t dlist, bo
}
}

nixl_capi_status_t
nixl_capi_reg_dlist_has_overlaps(nixl_capi_reg_dlist_t dlist, bool* has_overlaps)
{
if (!dlist || !has_overlaps) {
return NIXL_CAPI_ERROR_INVALID_PARAM;
}

try {
*has_overlaps = dlist->dlist->hasOverlaps();
return NIXL_CAPI_SUCCESS;
}
catch (...) {
return NIXL_CAPI_ERROR_BACKEND;
}
}

nixl_capi_status_t nixl_capi_reg_dlist_trim(nixl_capi_reg_dlist_t dlist)
{
if (!dlist) {
Expand Down
2 changes: 0 additions & 2 deletions src/bindings/rust/wrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,6 @@ nixl_capi_status_t nixl_capi_xfer_dlist_is_empty(nixl_capi_xfer_dlist_t dlist, b
nixl_capi_status_t nixl_capi_xfer_dlist_is_sorted(nixl_capi_xfer_dlist_t dlist, bool* is_sorted);
nixl_capi_status_t nixl_capi_xfer_dlist_trim(nixl_capi_xfer_dlist_t dlist);
nixl_capi_status_t nixl_capi_xfer_dlist_rem_desc(nixl_capi_xfer_dlist_t dlist, int index);
nixl_capi_status_t nixl_capi_xfer_dlist_has_overlaps(nixl_capi_xfer_dlist_t dlist, bool* has_overlaps);
nixl_capi_status_t nixl_capi_xfer_dlist_verify_sorted(nixl_capi_xfer_dlist_t dlist, bool *is_sorted);
nixl_capi_status_t nixl_capi_xfer_dlist_clear(nixl_capi_xfer_dlist_t dlist);
nixl_capi_status_t nixl_capi_xfer_dlist_resize(nixl_capi_xfer_dlist_t dlist, size_t new_size);
Expand All @@ -234,7 +233,6 @@ nixl_capi_status_t nixl_capi_reg_dlist_is_empty(nixl_capi_reg_dlist_t dlist, boo
nixl_capi_status_t nixl_capi_reg_dlist_is_sorted(nixl_capi_reg_dlist_t dlist, bool* is_sorted);
nixl_capi_status_t nixl_capi_reg_dlist_trim(nixl_capi_reg_dlist_t dlist);
nixl_capi_status_t nixl_capi_reg_dlist_rem_desc(nixl_capi_reg_dlist_t dlist, int index);
nixl_capi_status_t nixl_capi_reg_dlist_has_overlaps(nixl_capi_reg_dlist_t dlist, bool* has_overlaps);
nixl_capi_status_t nixl_capi_reg_dlist_clear(nixl_capi_reg_dlist_t dlist);
nixl_capi_status_t nixl_capi_reg_dlist_resize(nixl_capi_reg_dlist_t dlist, size_t new_size);
nixl_capi_status_t nixl_capi_reg_dlist_print(nixl_capi_reg_dlist_t dlist);
Expand Down
44 changes: 0 additions & 44 deletions src/infra/nixl_descriptors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,50 +241,6 @@ void nixlDescList<T>::addDesc (const T &desc) {
}
}

template <class T>
bool nixlDescList<T>::overlaps (const T &desc, int &index) const {
if (!sorted) {
for (size_t i=0; i<descs.size(); ++i) {
if (descs[i].overlaps(desc)) {
index = i;
return true;
}
}
index = descs.size();
return false;
} else {
// Since desc vector is kept sorted, we can use upper_bound
auto itr = std::upper_bound(descs.begin(), descs.end(), desc);
if (itr == descs.end()) {
index = descs.size();
return false;
} else {
index = itr - descs.begin();
// If between 2 descriptors, index can be used for insertion
return ((*itr).overlaps(desc));
}
}
}

template <class T>
bool nixlDescList<T>::hasOverlaps () const {
if ((descs.size()==0) || (descs.size()==1))
return false;

if (!sorted) {
for (size_t i=0; i<descs.size()-1; ++i)
for (size_t j=i+1; j<descs.size(); ++j)
if (descs[i].overlaps(descs[j]))
return true;
} else {
for (size_t i=0; i<descs.size()-1; ++i)
if (descs[i].overlaps(descs[i+1]))
return true;
}

return false;
}

template <class T>
void nixlDescList<T>::remDesc (const int &index){
if (((size_t) index >= descs.size()) || (index < 0))
Expand Down
6 changes: 0 additions & 6 deletions test/nixl/desc_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,29 +163,23 @@ int main()
nixlMetaDesc meta4 (10070, 42, 0);
meta3.metadataP = nullptr;
meta4.metadataP = nullptr;
int dummy;

nixl_meta_dlist_t dlist1 (DRAM_SEG);
dlist1.addDesc(meta1);
assert (dlist1.overlaps(meta2, dummy));
dlist1.addDesc(meta3);

nixl_meta_dlist_t dlist2 (VRAM_SEG, false, false);
dlist2.addDesc(meta3);
dlist2.addDesc(meta2);
assert (dlist2.overlaps(meta1, dummy));

nixl_meta_dlist_t dlist3 (VRAM_SEG, false, true);
dlist3.addDesc(meta3);
dlist3.addDesc(meta2);
assert (dlist3.overlaps(meta1, dummy));

nixl_meta_dlist_t dlist4 (dlist1);
nixl_meta_dlist_t dlist5 (VRAM_SEG);
dlist5 = dlist3;

// TODO: test overlap_check flag

dlist1.print();
dlist2.print();
dlist3.print();
Expand Down