Форум программистов, компьютерный форум, киберфорум
OpenCL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 16.12.2013
Сообщений: 119

Не работает программа типа "hello world"

Вчера, 18:01. Показов 120. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Попытался изучить параллельное программирование и запустить простейшую программу, однако функция kernel вероятно не выполняет свой код, либо ошибка в другом месте. К сожалению, понять где искать ошибку не имею понятия.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <CL/cl.h>
#include <stdio.h>
 
const char* programSource = "__kernel void helloWorld(__global int* results,__global int* iterations) { results[3]=3; }\n";
 
 
int main() {
    cl_platform_id platform_id;
    cl_device_id device_id;
    cl_context context;
    cl_command_queue queue;
    cl_program program;
    cl_kernel kernel;
    cl_int ret;
    cl_mem results_cl, iterations_cl;
    int *results = (int*)malloc(10 * sizeof(int));
    int *iterations = (int*)malloc(10 * sizeof(int));
    // Получаем платформу
    ret = clGetPlatformIDs(1, &platform_id, NULL);
 
    // Получаем устройство
    ret = clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_GPU, 1, &device_id, NULL);
 
    // Создаём контекст
    context = clCreateContext(NULL, 1, &device_id, NULL, NULL, &ret);
 
    // Создаём очередь команд
    queue = clCreateCommandQueue(context, device_id, 0, &ret);
 
    // Создаём программу из исходного кода
    program = clCreateProgramWithSource(context, 1, &programSource, NULL, &ret);
 
    // Компилируем программу
    ret = clBuildProgram(program, 1, &device_id, NULL, NULL, NULL);
 
    // Создаём кернел
    kernel = clCreateKernel(program, "helloWorld", &ret);
    
    //arguments
    results_cl = clCreateBuffer(context, CL_MEM_WRITE_ONLY, 
                                10 * sizeof(int), NULL, NULL);
    iterations_cl = clCreateBuffer(context, CL_MEM_WRITE_ONLY, 
                                   10 * sizeof(int), NULL, NULL);
    clSetKernelArg(kernel, 0, sizeof(cl_mem), &results_cl);
    clSetKernelArg(kernel, 1, sizeof(cl_mem), &iterations_cl);
    
    
    // Запускаем кернел
    size_t global_work_size = 10; // Размер рабочей группы
    ret = clEnqueueNDRangeKernel(queue, kernel, 1, NULL, &global_work_size, NULL, 0, NULL, NULL);
    clFinish(queue);
 
    //вывод результатов
    clEnqueueReadBuffer(queue, results_cl, CL_TRUE, 0, 
                       10 * sizeof(int), results, 0, NULL, NULL);
    clEnqueueReadBuffer(queue, iterations_cl, CL_TRUE, 0, 
                       10 * sizeof(int), iterations, 0, NULL, NULL);    
    for (int i = 0;i<10;i++)
        printf("result1: %d \n",results[i]);
        
    
    // Очищаем ресурсы
    clReleaseKernel(kernel);
    clReleaseProgram(program);
    clReleaseCommandQueue(queue);
    clReleaseContext(context);
 
    printf("return main");
    return 0;
}
А вот выхлоп программы:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
result1: 0 
result1: 0 
result1: 0 
result1: 0 //тут  должно быть другое число по плану или в следующей строке
result1: 0 
result1: 0 
result1: 0 
result1: 0 
result1: 0 
result1: 0 
return main
 
------------------
(program exited with code: 0)
Press return to continue
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
Вчера, 18:01
Ответы с готовыми решениями:

OpenCL "Hello World"
Ув. Программисты ! Подскажите бога ради как начать писать хоть что нибудь на этом openCL . Я...

Большая нагрузка на GPU из-за UI в режиме Space - World
Здравствуйте, столкнулся с проблемой. Я делаю пошаговую игру, и когда я выделяю определенный юнит -...

CUDA VS2010 нету правильного типа элемента
примерыы проекта работают проверяла, когда же создаю свой проект, у меня ничего не работает, уже...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
Вчера, 18:01
Помогаю со студенческими работами здесь

CUDA не работает программа, ошибки памяти
Здравствуйте! Подскажите,пожалуйста,в чём может быть проблема. Ситуация следующая: - есть...

Снова про OpenCL в Delphi + программное измерение загрузки CPU & GPU (работающий пример)
Уже более года назад приводил здесь на форуме пример работы с OpenCL в связке с Delphi - ...

Поменять слова местами то есть Hello World > World Hello C++
Ребят всем привет помогите решить задачку: Имеется предварительно созданный текстовый файл,...

Программа должна работать корректно и вставить слово "Beautiful" перед словом "World" в строке "Hello World"
скажите в чём ошибка вроде код работает верно компилируется и линкуется но когда запускаю то ничего...

Пропатчить Hello World, чтобы выводило Hello %Username%
Есть программа 'Hello world', нужно написать еще одну программу (&quot;патч&quot;), чтобы она заменила слово...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru