Сколько накладных расходов приходится на раздел при загрузке разделов dask_cudf в память графического процессора?

Задержки пропускной способности шины PCIE накладывают ограничения на то, как и когда приложения должны копировать данные в и из графических процессоров.

При непосредственной работе с cuDF я могу эффективно перемещать один большой кусок данных в один DataFrame.

При использовании dask_cudf для разделения моих DataFrames копирует ли Dask разделы в память графического процессора по одному? Пачками? Если да, то есть ли значительные накладные расходы из-за нескольких операций копирования вместо одной более крупной копии?


person Randy Gelhausen    schedule 14.02.2019    source источник


Ответы (1)


Вероятно, это зависит от используемого вами планировщика. По состоянию на 19.02.2019 dask-cudf по умолчанию использует однопоточный планировщик (cudf segfaolated на некоторое время, если используется в нескольких потоках), поэтому любые передачи будут последовательными, если вы не используете какой-либо кластер dask.distributed. Если вы используете распределенный кластер dask.distributed, то предположительно это будет происходить на каждом из ваших графических процессоров одновременно.

Стоит отметить, что dask.dataframe + cudf не делает ничего особенного помимо того, что делал бы cudf. Это как если бы вы вызвали много вызовов cudf в цикле for или в одном цикле for для каждого графического процессора, в зависимости от выбора планировщика выше.

Отказ от ответственности: cudf и dask-cudf находятся в постоянном движении. Будущим читателям, вероятно, следует свериться с текущей документацией, прежде чем доверять этому ответу.

person MRocklin    schedule 20.02.2019