nerfstudio-project/nerfstudio

Windows specific stall when generating point clouds - localized it to `parallel_datamanager`

Closed this issue · 0 comments

I'm running into a stall when generating point clouds from a trained nerf on Windows (same setup generates point clouds perfectly on Linux).

I narrowed it down to the parallel_datamanager.py:

    def setup_train(self):
        """Sets up parallel python data processes for training."""
        assert self.train_dataset is not None
        self.train_pixel_sampler = self._get_pixel_sampler(self.train_dataset, self.config.train_num_rays_per_batch)  # type: ignore
        self.data_queue = mp.Queue(maxsize=self.config.queue_size)  # type: ignore
        self.data_procs = [
            DataProcessor(
                out_queue=self.data_queue,  # type: ignore
                config=self.config,
                dataparser_outputs=self.train_dataparser_outputs,
                dataset=self.train_dataset,
                pixel_sampler=self.train_pixel_sampler,
            )
            for i in range(self.config.num_processes)
        ]
        # REACHES HERE
        for proc in self.data_procs:
            proc.start()  # STALLED
        print("Started threads")

The code hits these lines, and then there is no progress. I checked that the num_processes is 1, and the DataProcessor class objects are being instantiated as expected. However, the DataProcessor.run() is never reached, which I think would be called if the queue in data_proc .

Has anyone encountered this when trying it out on Windows? Any known workarounds maybe?