I am using persistent thread model with threads never exiting. The persistent threads periodically does a handshake with host using host pinned memory. So the execution flow is something like this:
Host threads: Device THreads: launch kernel ------------> start running do foo() keep spinning (polling) ... till device tells it is indicate to host that foo() is done done doing foo() (write to pinned memory) <------------ do bar() keep doing foo()
The issue with above model is that host threads basically need to use polling (spinning). Is there a method to convert this polling to blocking? (Provided persistent threads can’t exit) I am okay with ugly hacks also.