Есть ли способ просто вызвать несколько файлов cpp из GPU? - PullRequest
0 голосов
/ 23 октября 2018

Мне было интересно, возможно ли это?Может ли кто-нибудь указать, если я где-то не так?Я - новичок в CUDA.

__global__ void run_multiple_cpp(int *n, int *result){
    int i = blockDim.x*blockIdx.x + threadIdx.x;
    if (i < n){
        result[i] = system("//path to a.out" -parameters[i])
    }
}

int main(void){
    // Get input here,
    // kernel call which splits the input as shown above
    return 0;
}

Мой вопрос заключается в том, возможно ли это без необходимости писать файл CPP, дружественный CUDA. Я пытался использовать __ device__ и __ host __ flags, но мое приложение слишком велико, чтобы его можно было модифицировать для поддержки CUDA.

Вышеуказанная операция всегда основана на различном наборе входных данных - я пробовал многопоточность ЦП, ноМне нужно запустить это приложение для большого набора входов.Поэтому я спросил.

1 Ответ

0 голосов
/ 23 октября 2018

Основная причина, по которой графические процессоры являются быстрыми, состоит в том, что они содержат много небольших и простых процессоров, поэтому могут выполнять множество простых задач параллельно.Операции высокого уровня, такие как вызов system, полностью недоступны на графическом процессоре.Чтобы воспользоваться преимуществами графического процессора, вам необходимо переписать свой код для CUDA / OpenCL / Metal и т. Д.

Если вы не можете изменить свою программу для работы на графическом процессоре, вы можетеВоспользуйтесь преимуществами функций SIMD ЦП и все же достигните (меньшего) ускорения, это также может стать ступенькой к обработке GPU, поскольку дружественный по отношению к SIMD процессор CPU также, вероятно, упростит перенос на GPU.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...