1 ответ

Почему целочисленное деление и модуль не оптимизированы в NVRTC

Я собрал ядро ​​в NVRTC: __global__ void kernel_A(/* args */) { unsigned short idx = threadIdx.x; unsigned char warp_id = idx / 32; unsigned char lane_id = idx % 32; /* ... */ } Я знаю, что деление целых чисел и деление по модулю очень дорого на гра…
01 июн '17 в 06:44
1 ответ

Как правильно передавать аргументы как структуры в NVRTC?

let prog = """//Kernel code: extern "C" { #pragma pack(1) typedef struct { int length; float *pointer; } global_array_float; __global__ void kernel_main(global_array_float x){ printf("(on device) x.length=%d\n",x.length); // prints: (on device) x.le…
04 ноя '16 в 13:19
1 ответ

Сериализация объекта CUfunction

Можно ли сериализовать CUfunction объект, сгенерированный NVRTC, и сохранение его в энергонезависимой памяти (диск, SSD и т. д.), чтобы его можно было использовать позже, не проходя процесс компиляции JIT?
29 мар '18 в 17:33
0 ответов

Есть ли список заголовков, которые можно использовать в строке для компиляции с NVRTC?

(Используя компилятор времени выполнения NVRTC) Есть строка функции CUDA: R"( extern "C" __global__ void test1(float * a, float * b, float *c) { int id= blockIdx.x * blockDim.x + threadIdx.x; c[id]=a[id]+b[id]; } )" который успешно компилируется дра…
27 фев '18 в 07:51
2 ответа

Как включить стандартные библиотеки CUDA для связи с кодом NVRTC?

В частности, моя проблема в том, что у меня есть код CUDA, который нуждается в <curand_kernel.h> бежать. Это не включено по умолчанию в NVRTC. Предположительно тогда при создании контекста программы (т.е. при вызове nvrtcCreateProgram), Я долж…
17 окт '16 в 13:13
2 ответа

Включение стандартных заголовков C в код CUDA NVRTC

Я пишу ядро ​​CUDA, которое компилируется во время выполнения с использованием NVRTC (CUDA версия 9.2 с NVRTC версия 7.5), для которого требуется stdint.h заголовок, чтобы иметь int32_t и т. д. Если я пишу исходный код ядра без включения, он работае…
28 май '18 в 11:19
0 ответов

Ошибка неопределенных символов CUDA для образцов, связанных с nvrtc

Следующая ошибка возникает, когда я пытаюсь проверить образцы установки CUDA, которые поставляются вместе с установкой (например, vectorAdd_nvrtc): clang++ -I../../common/inc -I/Developer/NVIDIA/CUDA-9.2/include -arch x86_64 -o vectorAdd.o -c vector…
16 ноя '18 в 23:58
1 ответ

Указатель функции устройства в качестве параметра шаблона

У меня есть шаблон структуры по некоторым причинам (за рамками этого вопроса): template<typename T, __device__ retV (*funcptr)(T)> struct func { __device__ inline retV invoke(T i) { funcptr(i); } }; который можно использовать таким образом: __…
09 ноя '18 в 12:33
1 ответ

cuModuleGetFunction возвращает не найдено

Я хочу скомпилировать ядра CUDA с помощью JIT-компилятора nvrtc, чтобы повысить производительность моего приложения (поэтому у меня увеличено количество выборок команд, но я сохраняю множественный доступ к массиву). Функции выглядят, например, так и…
27 сен '16 в 12:08
1 ответ

NVRTC недоступен для Win32?

Я использую Python27 x32 и получаю эту ошибку: Could not load "nvrtc64_75.dll": %1 is not a valid Win32 application. Я также попробовал с cuda8. Как я понял, документы NVRTC перечисляют x64 как требование: NVRTC требует следующей конфигурации систем…
06 июл '17 в 23:43
1 ответ

Использование CUDA-GDB с NVRTC

У меня есть приложение, которое генерирует исходный код CUDA C++, компилирует его в PTX во время выполнения, используя NVRTC, а затем создает модули CUDA из него с помощью API драйвера CUDA. Если я отлаживаю это приложение, используя cuda-gdb, он от…
13 фев '19 в 12:39
2 ответа

Как правильно использовать include stdio.h в программе, скомпилированной с помощью NVRTC?

Я написал потрясающее ядро, которое принесет мне славу и богатство - если только я смогу собрать его с помощью NVRTC: #include <stdio.h> __global__ void do_stuff() { } Я бы надеялся, что системные заголовки должны распознаваться (исполняемым) …
12 июл '20 в 14:42
1 ответ

Исключение времени выполнения в примере кода optix 6.0.0

После скачивания optix6.0.0 sdk и компилируя включенные образцы проектов, я обнаружил исключение времени выполнения при запуске любого из образцов проектов (например, optixHello, optixWhitted) с сообщением об ошибке: OptiX Error: 'NVRTC Compilation …
12 июн '20 в 03:39
0 ответов

Почему API драйвера позволяет нам обрабатывать PTX так же, как fatbin и cubin через "модули"?

Часть API драйвера CUDA - это обработка "модулей": вы можете, например, загрузить модуль из файла; получить функцию (ядра) из этого модуля, а затем просто запустить ядро. См., Например, пример CUDA "matrixMul_nvrtc". Хотя это кажется вполне разумным…
14 авг '20 в 19:12
2 ответа

Могу ли я получить то, что используется как __nv_nvrtc_builtin_header.h?

Я профилирую ядро, скомпилированное (с отладкой и lineinfo) с помощью библиотеки nvrtc. В результатах профилирования многие образцы указаны как находящиеся в пределах__nv_nvrtc_builtin_header.h. Однако - очевидно, что такого файла на диске нет, и, е…
01 сен '20 в 13:43
0 ответов

Использование функций стандартной библиотеки времени компиляции C++ при компиляции NVRTC

Все мы знаем, что включение заголовков в ядра, скомпилированные с помощью NVRTC, немного сложно. JITify, например, использует некоторые самодостаточные "строки заголовков заглушек" вместо некоторых из стандартных библиотек C, чтобы позволить нам исп…
13 авг '20 в 12:26
0 ответов

Каков точный порядок поиска включаемых файлов во время компиляции NVRTC?

Предположим, вы используете библиотеку NVRTC для компиляции ядра CUDA, а исходный код имеет следующие директивы: #include "foo.h" #include <bar.h> Теперь, если бы это был GCC или NVCC, мы все знаем (вроде), где будут выполняться поис…
1 ответ

Различия между NVCC и NVRTC при компиляции в PTX

Резюме Я портирую простое приложение для трассировки лучей, основанное на версии Scratchapixel, на несколько библиотек графического процессора. Я успешно перенес его на CUDA, используя API среды выполнения и API драйвера, но он выдает ошибкуSegmenta…
01 апр '20 в 06:37
0 ответов

С бионическими машинами Travis CI и CUDA 10.2 CMake не может найти nvrtc

У меня есть эта библиотека, часть которой полагается на nvrtc, для которой я создаю примеры программ. Когда я собираю их на своей собственной машине (Devuan GNU / Linux Beowulf), все в порядке, с CUDA версий 9.x, 10.x и 11.x (в любом случае большинс…
05 июл '21 в 00:04
0 ответов

Могу ли я заставить NVCC использовать фактические имена параметров в PTX?

Когда NVCC компилирует ядро ​​в код PTX, параметры ядра имеют вид: mangled_name_of_kernel_param_0, mangled_name_of_kernel_param_1 и т.п. Есть ли способ заставить NVCC использовать фактические имена параметров? Или, по крайней мере, имена параметров …
11 июл '21 в 17:27