tomMoral / dicodile

Experiments for "Distributed Convolutional Dictionary Learning (DiCoDiLe): Pattern Discovery in Large Images and Signals"
https://tommoral.github.io/dicodile/
BSD 3-Clause "New" or "Revised" License
18 stars 10 forks source link

Failure when computed distributed beta? #52

Open rprimet opened 2 years ago

rprimet commented 2 years ago

Running test_dicodile_greedy (see PR #51 ) with n_workers=2 yields the following error:

    def main_check_beta(comm, workers_segments):
        """Check that beta computed in overlapping workers is identical.

        This check is performed only for workers overlapping with the first one.
        """
        global_test_points = get_global_test_points(workers_segments)
        for i_probe, pt_global in enumerate(global_test_points):
            sum_beta = np.empty(1, 'd')
            value = []
            for i_worker in range(workers_segments.effective_n_seg):

                pt = workers_segments.get_local_coordinate(i_worker, pt_global)
                if workers_segments.is_contained_coordinate(i_worker, pt):
                    comm.Recv([sum_beta, MPI.DOUBLE], source=i_worker,
                              tag=constants.TAG_ROOT + i_probe)
                    value.append(sum_beta[0])
            if len(value) > 1:
                # print("hello", pt_global)
>               assert np.allclose(value[1:], value[0]), value
E               AssertionError: [0.05110520535035923, -0.0016083304582741459]