public static void IlGpu(CudaAccelerator gpu, Real[] result, Real[] left, Real[] right, int n) { using (var cudaResult = gpu.Allocate(result)) using (var cudaLeft = gpu.Allocate(left)) using (var cudaRight = gpu.Allocate(right)) { using var blas = new CuBlas(gpu, CuBlasAPIVersion.V11); var timer = Stopwatch.StartNew(); blas.Gemm( CuBlasOperation.NonTranspose, CuBlasOperation.NonTranspose, n, n, n, 1, cudaLeft.View, n, cudaRight.View, n, 0, cudaResult.View, n); gpu.Synchronize(); PrintPerformance(timer, "MatrixMultiplication.IlGpu.cuBLAS", n, n, n); cudaResult.CopyTo(result, 0, 0, result.Length); } }