Я думаю, что причина того, что введение malloc () замедляет ваш код, заключается в том, что он выделяет память в глобальной памяти.Когда вы используете массив фиксированного размера, компилятор, скорее всего, поместит его в файл реестра, что гораздо быстрее.
Необходимость выполнения malloc внутри вашего ядра может означать, что вы пытаетесь сделать слишком многоработать с одним ядром.Если каждый поток выделяет разный объем памяти, то каждый поток выполняется в цикле for разное количество раз, и вы получаете много расхождений деформации.
Если каждый поток в деформациях запускает циклы одинакового числараз, просто выделить заранее.Даже если они запускаются разное количество раз, вы можете использовать постоянный размер.Но вместо этого, я думаю, вы должны посмотреть, как вы можете реорганизовать свой код, чтобы полностью удалить этот цикл из вашего ядра.