GPU functions¶
Profiling¶
-
hessianfree.gpu.profiling.threshold_calc_G()[source]¶ Compare GPU vs CPU performance on feedforward curvature calculation.
This can use this to determine whether it is better to run some target network on the CPU or GPU.
-
hessianfree.gpu.profiling.threshold_rnn_calc_G()[source]¶ Compare GPU vs CPU performance on recurrent curvature calculation.
This can use this to determine whether it is better to run some target network on the CPU or GPU.
-
hessianfree.gpu.profiling.profile_calc_G(cprofile=True)[source]¶ Run a profiler on the feedforward curvature calculation.
Parameters: cprofile (bool) – use True if profiling on the CPU, False if using the CUDA profiler
Kernels¶
Note: these functions never need to be accessed directly, they will
be swapped in automatically when the use_gpu=True flag is set in
FFNet/RNNet.
-
hessianfree.gpu.kernel_wrappers.debug_wrapper(cpu_func, debug=False)[source]¶ Decorator used to specify an equivalent CPU function that can be used to verify the output of a GPU function (for debugging).
-
hessianfree.gpu.kernel_wrappers.cublas_dot(a, b, out=None, transpose_a=False, transpose_b=False, increment=False, stream=None)[source]¶ Matrix multiplication using CUBLAS.
-
hessianfree.gpu.kernel_wrappers.J_dot(J, v, out=None, transpose_J=False, increment=False, stream=None)[source]¶ Equivalent to
J_dot(), on the GPU.
-
hessianfree.gpu.kernel_wrappers.sum_cols(a, out=None, increment=False, stream=None)[source]¶ Sum a along columns.
-
hessianfree.gpu.kernel_wrappers.iadd(a, b, stream=None)[source]¶ In-place addition of a and b, broadcasting b along columns.
-
hessianfree.gpu.kernel_wrappers.multiply(a, b, out=None, increment=False, stream=None)[source]¶ Element-wise product of a and b.
Matrix multiplication that doesn’t rely on CUBLAS (could be swapped in if scikit-cuda were not available for some reason).