Более подробно: я запускаю и профилирую (с помощью nvprof) приложение TensorFlow, работающее на графическом процессоре, который в основном выполняет conv2d_transpose:
with tf.device('/GPU:0'):
self.conv1_ = tc.layers.convolution2d_transpose(
z, 32, [4, 4], [2, 2],
weights_initializer=tf.random_normal_initializer(stddev=0.02),
weights_regularizer=tc.layers.l2_regularizer(2.5e-5),
padding = 'VALID',
activation_fn=tf.identity
)
Тем не менее, когда я проверяю события и метрики профилирования, там на самом деле запущено еще несколько ядер: Вот изображение из Visual Profiler всех имен ядер, которые работали
Некоторые из них, как я ожидал, например tensorflow::BiasNCHWKernel
Но другие как fft2d_r2c_32x32
я не ожидал. Я предполагаю, что это оптимизация FFT, сделанная для вызова conv2d_transpose?
Правильно ли мое предположение? Где я могу найти информацию о том, как TensorFlow переводит библиотечные вызовы в библиотечные вызовы CUDA? Я хотел бы лучше понять все ядра на картинке, но трудно точно понять, что они делают