            s_V = sizeof(double)*nn;
 
     // Malloc
-    R = (double*)malloc(s_V);
     CudaSafeCall(cudaMalloc(&d_elements, s_Elements));
     CudaSafeCall(cudaMalloc(&d_nodes, s_Nodes));
     CudaSafeCall(cudaMalloc(&d_V, s_V));
-    CudaSafeCall(cudaMalloc(&d_R, s_V));
     // Memcpy
     CudaSafeCall(cudaMemcpy(d_elements, elements, s_Elements, cudaMemcpyHostToDevice));
     CudaSafeCall(cudaMemcpy(d_nodes, nodes, s_Nodes, cudaMemcpyHostToDevice));


    double r = 10*alpha, diff;
    while (r > alpha) {
        if (k % 300 == 0) r = 0.0;
        for (i = 0; i < nn; i++) {
            int e;
            double diag_sum = 0.0, right_sum = 0.0, Vi;

                    }
                }
                Vi = diag_sum == 0 ? 0.0 : right_sum/diag_sum;
                diff = fabs(V[Node.i] - Vi);
                r = (diff > r) ? diff : r;
                V[Node.i] = Vi;
            }
        }
