Skip to content

Conversation

@mugamma
Copy link
Contributor

@mugamma mugamma commented Nov 26, 2025

Please and thank you.

@linear
Copy link

linear bot commented Nov 26, 2025

MET-32 Implement `FMB`

Definition of done

  • all methods scoped out in fmb.cuh are implemented

FMB chekclist

  • Basic python tests for quadratic_form
  • bindings
  • quadratic form implementation

FBMs checklist

  • better name
  • C++ tests for iterator contract
  • python tests for subcollectioning
  • iterator contract
  • subcollectioning and slicing primitives

@mugamma mugamma mentioned this pull request Nov 27, 2025
Copy link
Contributor

@horizon-blue horizon-blue left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the great work!

As we discussed in the previous meeting, it'd be great to have some documentations for the classes in fmb.cuh. Other than that, this PR looks great to me!

}
};

class ConstIterator {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is ver thoughtful. I like that we're using const whenever possible :).

One pattern I've seen people using is to make the pointer type generic so you don't have to define the const/non-const version twice... though it might not worth the headache at this point haha.

#include <cuda/std/span>
#include <cuda/std/tuple>
#include <stdexcept>
#include <tuple>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this non-cuda tuple header still being used? ;)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Comment on lines +20 to +22
FMB() : pose_{}, extent_{1.0f, 1.0f, 1.0f} {};

FMB(const Pose& pose, float x_extent, float y_extent, float z_extent) noexcept(false)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👀 are we not going to construct FMB on the device?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As of the current pseudocode, we are initializing it in host, but we could totally make this a CUDA CALLABLE too.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah I think host only should be fine for now.

}

template <>
__host__ FMBScene<MemoryLocation::HOST>::FMBScene(size_t size)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice set of helpers! We should probably do this with all our structs tbh, would be much cleaner

@arijit-dasgupta
Copy link
Contributor

One question regarding the conversion form Covariance --> Quat + Extents (via eigendecomp). how are we thinking about this again? @mugamma

Like is this something that only needs to happen when initializing the FMBs? From the last time we met, I believe that was all that's needed?

@mugamma
Copy link
Contributor Author

mugamma commented Dec 1, 2025

One question regarding the conversion form Covariance --> Quat + Extents (via eigendecomp). how are we thinking about this again? @mugamma

Like is this something that only needs to happen when initializing the FMBs? From the last time we met, I believe that was all that's needed?

It's mainly for higher quality training for now, and yes: if you want to initialize FMBs differently using precision or covariance matrices you will need to do an eigendecomposition.

@horizon-blue horizon-blue merged commit b25bc27 into master Dec 2, 2025
1 check passed
@horizon-blue horizon-blue deleted the mugamma/MET-32-fmb branch December 2, 2025 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants