У меня есть задача, которая включает выполнение множества запросов к фреймворку данных. Я сравнил производительность выполнения этих запросов на процессоре Xeon (Pandas) и RTX 2080 (CUDF). Для кадра данных из 100 тыс. Строк графический процессор работает быстрее, но ненамного. Если посмотреть на вывод nvidia-smi, загрузка графического процессора составляет около 3-4% при выполнении запросов.
У меня вопрос: что я могу сделать, чтобы ускорить задачу cuDF и добиться высокой загрузки графического процессора?
Например, я могу запустить 8 из этих запросов на 8 ядрах ЦП параллельно для варианта использования ЦП.
NUM_ELEMENTS = 100000
df = cudf.DataFrame()
df['value1'] = cp.random.sample(NUM_ELEMENTS)
df['value2'] = cp.random.sample(NUM_ELEMENTS)
df['value3'] = cp.random.sample(NUM_ELEMENTS)
c1 = np.random.random()
c2 = np.random.random()
c3 = np.random.random()
res = df.query('((value1 < @c1) & (value2 > @c2) & (value3 < @c3))')
Вот пример кода, который не занимает много циклов графического процессора, однако я хочу запускать тысячи таких запросов к данным, и я не хочу запускать их последовательно. Есть ли способ запустить несколько вызовов query () в кадре данных cuDF параллельно, чтобы максимизировать использование графического процессора?