Здравствуйте, shadows_s, Вы писали:
WM>>Здравствуйте, shadows_s, Вы писали:
_>На одном из этапов, нужно вычыслить функцию при всемозможных входных параметрах.
_>в опщем, нужно получить что-нибуть вида:
_>_>__global__ void integral_kernel ( float * result_array )
_>{
_> // ...код
_> value = ФУНКЦИЯ_ВВЕДЕНАЯ_ПОЛЬЗОВАТЕЛЕМ( x, y );
_>}
_>
_>Вся проблема, в том как ефективно реализовать эту функцию.
Эффективно — это отдать эту задачу на откуп CUDA. Там уже внутри реализован один компилятор для PTX. Сложно (и даже вредно) пытаться писать при этом свой.
А вот PTX код уже можно получать или через nvcc или генерировать самостоятельно — вот тут есть свобода выбора.
_>А использование интерпретатора, заметно снижает производительность, что воопще ставит под сомнение целесообразность использовать CUDA...
Ну это не совсем правильная идея.
Если код может быть эффективно распараллелен, то CUDA позволяет его значительно ускорить. При этом будет ускоряться как изначально медленный, так и изначально быстрый код.
Просто иногда дешевле переписать исходный код. А иногда дешевле запустить медленный код на GPU. А вот одновременно оптимизировать код и переписывать его на CUDA нужно реже. Хотя, конечно, выигрыш в производительности в последнем случае получается самым большим, с этим не поспоришь.