I had success on a similar problem by allocating native buffers for the matrices, then using a basic CUDA call. The actual work was 100x faster than my CPU baseline.
The bottleneck of course was fetching & loading relevant data to memory to start with.
"the remaining 2% were large batch requests", [which made up 50% of the work] .. who really watches that many shows on Netflix? What was in those batches, if someone is watching that much, why bother with serendipity at all? Most serendipitous thing you could do is shut off their subscription.
Note that they likely mean the list of candidates is large not the user history. This is for an API so perhaps 2% of client requests implemented batch requests, providing the opportunity for batch processing of that request.
I had success on a similar problem by allocating native buffers for the matrices, then using a basic CUDA call. The actual work was 100x faster than my CPU baseline.
The bottleneck of course was fetching & loading relevant data to memory to start with.
"the remaining 2% were large batch requests", [which made up 50% of the work] .. who really watches that many shows on Netflix? What was in those batches, if someone is watching that much, why bother with serendipity at all? Most serendipitous thing you could do is shut off their subscription.
Note that they likely mean the list of candidates is large not the user history. This is for an API so perhaps 2% of client requests implemented batch requests, providing the opportunity for batch processing of that request.