Каковы параметры для функций __cudaRegisterFatBinary и __cudaRegisterFunction? - PullRequest
4 голосов
/ 18 июня 2011

Я сталкивался с двумя функциями

__cudaRegisterFatBinary()

и

__cudaRegisterFunction()

Я понимаю, что nvcc вставляет его в исходный код, чтобы получитьдескриптор скомпилированного кубина и зарегистрировать программу во время выполнения.

Может кто-нибудь объяснить мне или указать, где я могу найти информацию о каждом из параметров функций?в частности, я хочу узнать больше о __cudafatcudabinaryrec указателе, используемом в первой функции.А о функции хоста и указателях функций устройства во второй функции.

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 июня 2011

Прототипы находятся в cudart.h.

void** __cudaRegisterFatBinary(void *fatCubin);

void __cudaRegisterFunction(void **fatCubinHandle, const char *hostFun, char *deviceFun,
                            const char *deviceName, int thread_limit, uint3 *tid,
                            uint3 *bid, dim3 *bDim, dim3 *gDim, int *wSize);

Но учтите, что эти функции не предназначены для непосредственного вызова из кода пользователя.

1 голос
/ 12 сентября 2016

Я знаю, что это очень старая тема, но я просто хочу поделиться некоторыми своими открытиями. Я пересмотрел некоторые части исполняемого файла, которые производит NVCC. Поэтому я не уверен насчет правильности и пользы на свой страх и риск. Я использую cuda 8.0 RC, поэтому я не уверен, что другие версии изменили что-либо.

__cuRegisterFatBinary принимает void * в качестве ввода. Он указывает на исполняемый файл, и в моем примере я получил следующее.

B1 43 62 46 01 00 00 00 70 15 40 00 00 00 00 00 00 00 00 00 00 00 00 00

Последовательность шестнадцатеричного кода соответствует формату

struct {
    uint32_t magic; // Always 0x466243b1
    uint32_t seq;   // Sequence number of the cubin
    uint64_t ptr;   // The pointer to the real cubin
    uint64_t data_ptr;    // Some pointer related to the data segment
}

Так что если вы будете следовать адресу в поле ptr, вы сможете найти настоящий толстый двоичный файл, который соответствует определению, которое вы можете найти в fatbinary.h, в вашем каталоге cuda include. Есть некоторая информация заголовка. Если вы ищете следующее вхождение 0x7F + 'ELF' (магия эльфов), вы сможете извлечь там файл кубина.

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