We should consider adding an API to implicitly compile modules the first time they are called. This makes it so the user does not need to manually call tp.compile and should make interop with other frameworks a bit easier.
The API could optionally allow users to specify a shape range to support dynamic shapes.