예제 #1
0
        public void GlobalSetup()
        {
            var getMatrixIndex = new Func <int, int, long>((row, col) => row * MatrixSize + col);

            var matrixSizePow = MatrixSize * MatrixSize;

            A = new float[matrixSizePow];
            B = new float[matrixSizePow];
            C = new float[matrixSizePow];

            for (int i = 0; i < MatrixSize; i++)
            {
                var oneDIndex = getMatrixIndex(i, i);
                A[oneDIndex] = B[oneDIndex] = C[oneDIndex] = 1.0f;
            }

            A_CUDA = CUDAMatrixMultiplicationWrapper
                     .AllockMatrix(
                MatrixSize
                );

            B_CUDA = CUDAMatrixMultiplicationWrapper
                     .AllockMatrix(
                MatrixSize
                );

            C_CUDA = CUDAMatrixMultiplicationWrapper
                     .AllockMatrix(
                MatrixSize
                );
        }
예제 #2
0
 public void CUDASecondMultiply()
 {
     CUDAMatrixMultiplicationWrapper
     .Multiply1d(
         A,
         B,
         C,
         MatrixSize
         );
 }
예제 #3
0
 public void CUDASecondMultiplyWithoutCopy()
 {
     CUDAMatrixMultiplicationWrapper
     .Multiply1dWithoutCopy(
         A_CUDA,
         B_CUDA,
         C_CUDA,
         MatrixSize
         );
 }
예제 #4
0
 public void CUDAFirstMultiply()
 {
     CUDAMatrixMultiplicationWrapper
     .Multiply1d(
         A,
         B,
         C,
         MatrixSize,
         MatrixSize,
         MatrixSize
         );
 }