Давайте скажем, что я построил внутри ядро, где я выполнил некоторые вычисления. Затем я хочу вернуть эту переменную, однако они не были отправлены в качестве указателей, когда я инициализировал ядро, поэтому, если я хочу вернуть это значение. Как я могу это сделать? Примеры кодов ниже.Как эффективно вернуть данные ядра malloc обратно в cpu
Я задаю это только как общий вопрос, чтобы не решить приведенный ниже код. У меня есть другие проблемы, когда я сталкиваюсь с этим, и я не знаю, как лучше всего это сделать. Я понимаю, что вы можете просто ввести указатель и скопировать результаты на него. Однако, если размер результата не предопределен, было бы очень сложно сделать это эффективно. Поэтому я спрашиваю, есть ли лучший способ.
__global__ void addKernel()
{
int* c = (int*)malloc(sizeof(int) * 32);
#pragma unroll
for (int i = 0; i < 32; i++){
c[i] += 1;
}
}
Я прочитал эту часть, но не был готов просто отказаться от этой идеи :) Я думал об использовании uva и заголовке, который указывает, были ли данные обработаны gpu и cpu, чтобы проверить, что место нахождения. Будет ли это хорошей идеей? Если вы хотите, чтобы я написал код, я сделаю это после моего дома. –
Я думаю, вам следует предоставить дополнительную информацию о проблеме, которую вы пытаетесь решить. Существует множество различных стратегий, которые можно использовать для обработки ядер, которые выводят переменные объемы данных, для этого вам обычно не требуется malloc на стороне устройства. –