         float secretElement = secretKey[ty * matrix_dims + k];
         float msgElement = msg[k * matrix_dims + tx];
         
-    //    printf("\nMultiplying %f by %f: \n", secretElement, msgElement);
+        printf("\nMultiplying %f by %f: \n", secretElement, msgElement);
         Pvalue  += secretElement * msgElement;
     }
     

        cudaDeviceSynchronize();
    }

    cudaFree(msgGpu);
    cudaFree(resultGpu);
    cudaFree(secretGpu);

    printf("\n\n5\n\n");
    for (i = 0; i < msg_size/matrix_size; i++) {
    //    printf("%d %f\n\n\n\n", i, results[i]);
        for (j = 0; j < matrix_size; j++) {
            printf("%d %f\n", i, results[i][j]);
        }
    }

    free(results);

    cudaDeviceReset();

    

        results[z] = (float *)malloc(matrix_size * sizeof(float));
        memset(results[z], 0, nBytes);
    }
   printf("3\n");

    cudaDeviceProp deviceProp;
    cudaGetDeviceProperties(&deviceProp, 0);
