Я надеюсь использовать графический процессор на мобильном телефоне для прямого и быстрого доступа и синхронизации данных памяти, которые процессор также будет считывать и изменять в режиме реального времени.
На мобильном телефоне телефон, это простой пример, где результат печати — «1 7» вместо «7 7». Известно, что активная синхронизация может быть достигнута с помощью таких методов, как enqueueReadBuffer или enqueueNDRangeKernel, но есть ли способ добиться автоматической синхронизации? В идеале графический процессор должен иметь возможность считывать обновленные значения данных в реальном времени сразу после модификации.
data = (int*)mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
data[0] = 1;
cl::Buffer inputBuffer = cl::Buffer(context, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR , sizeof(int) * dataSize, data, &err);
cl::Buffer outputBuffer = cl::Buffer(context, CL_MEM_WRITE_ONLY, sizeof(int) * dataSize, NULL, &err);
cl::Program::Sources source(1, std::make_pair(kernelSource2, strlen(kernelSource2) + 1));
cl::Program program(context, source);
err = program.build(devices);
cl::Kernel kernel(program, "square", &err);
kernel.setArg(0, inputBuffer);
kernel.setArg(1, outputBuffer);
data[0] = 7;
size_t globalSize = dataSize;
cl::Event event;
err = queue.enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(globalSize), cl::NullRange, nullptr, &event);
int *result = (int*)malloc(sizeof(int) * dataSize);
queue.enqueueReadBuffer(outputBuffer, CL_TRUE, 0, sizeof(int) * dataSize, result);
printf("%d %d\n", result[0], data[0])
Подробнее здесь: https://stackoverflow.com/questions/793 ... ntaining-r
Как графический процессор может напрямую обращаться к данным памяти, созданным процессором, сохраняя при этом синхрониза ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Tensorflow не может выбрать графический процессор, хотя графический процессор распознан
Anonymous » » в форуме Python - 0 Ответы
- 97 Просмотры
-
Последнее сообщение Anonymous
-