You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The original GPU implementation is slow, which is due to both malloc and operating on global memory for normal random numbers. To make the improvement, we should not use malloc for each thread, instead, we create shared memory within each block to hold random numbers, and let threads within that block read/write random numbers stored in shared memory.
The other potential improvement is instead of copying (no_of_blocks * no_of_threads) EI or grad_EI from GPU to CPU and averaging them, we can average them on GPU and then simply copy a single piece of EI or grad_EI back to CPU. This improvement has been proven to be negligible for reasonable large q and p(q=4, p=4). We might need to look back again to see if this improvement is worth to implement for large q,p.
The text was updated successfully, but these errors were encountered:
The original GPU implementation is slow, which is due to both malloc and operating on global memory for normal random numbers. To make the improvement, we should not use malloc for each thread, instead, we create shared memory within each block to hold random numbers, and let threads within that block read/write random numbers stored in shared memory.
The other potential improvement is instead of copying (no_of_blocks * no_of_threads) EI or grad_EI from GPU to CPU and averaging them, we can average them on GPU and then simply copy a single piece of EI or grad_EI back to CPU. This improvement has been proven to be negligible for reasonable large q and p(q=4, p=4). We might need to look back again to see if this improvement is worth to implement for large q,p.
The text was updated successfully, but these errors were encountered: