Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
6 / 6 / 5
Регистрация: 21.08.2012
Сообщений: 45

Фрактал Джулия

07.09.2012, 18:42. Показов 5451. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, решил разобраться с примером по куда из книги Сандерса,вот код:

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
71
72
73
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "gl_helper.h"
#include "cpu_bitmap.h"
#include "book.h"
 
#define DIM 1000
 
struct cuComplex 
{
    double r;
    double i;
    cuComplex( double a, double b) : r(a), i(b) {}   //конструктор
    __device__ double magnitude2(void)
    {
        return r*r+i*i;
    }
    __device__ cuComplex operator+(const cuComplex& a)
    {
        return cuComplex(r+a.r, i+a.i);
    }
 
    __device__ cuComplex operator*(const cuComplex& a)
    {
        return cuComplex(r*a.r-i*a.i, i*a.r+r*a.i);
    }
};  
 
 
 __device__ int julia(int x, int y)
{
    const float scale = 1.5;
    double jx=scale*(double)(DIM/2 - x)/(DIM/2);
    double jy=scale*(double)(DIM/2 - x)/(DIM/2);
    cuComplex  c(-0.8, 0.156);
    cuComplex  a(jx , jy);
 
    int i=0;
    for(i=0;i<200;i++){
        a=a*a + c;
        if(a.magnitude2()>1000)
            return 0;
    }
    return 1;
}
 
 
 __global__ void kernel(unsigned char *ptr){
    //отображаем blockIdx на позицию пикселя
    int x=blockIdx.x;
    int y=blockIdx.y;
    int offset = x+y*gridDim.x;
    //вычисления значения в этой позиции
    int juliaValue=julia(x,y);
    ptr[offset*4 + 0]=255*juliaValue;
    ptr[offset*4 + 1]=0;
    ptr[offset*4 + 2]=0;
    ptr[offset*4 + 3]=255;
}
 
int main(void){
    CPUBitmap bitmap(DIM,DIM);
    unsigned char *dev_bitmap;
    cudaMalloc((void**)&dev_bitmap,bitmap.image_size() );
    dim3 grid(DIM,DIM);
    kernel<<<grid,1>>>(dev_bitmap);
    cudaMemcpy(bitmap.get_ptr(),dev_bitmap,bitmap.image_size(),cudaMemcpyDeviceToHost);
    bitmap.display_and_exit();
    cudaFree(dev_bitmap);
    
}


после компелирования выдает 4 ошибки:
1>c:/Users/ъюы*/Documents/Visual Studio 2008/Projects/julia/julia/main.cu(37): error: calling a host function("cuComplex::cuComplex") from a __device__/__global__ function("julia") is not allowed
1>c:/Users/ъюы*/Documents/Visual Studio 2008/Projects/julia/julia/main.cu(38): error: calling a host function("cuComplex::cuComplex") from a __device__/__global__ function("julia") is not allowed
1>c:/Users/ъюы*/Documents/Visual Studio 2008/Projects/julia/julia/main.cu(42): error: calling a host function("cuComplex::cuComplex") from a __device__/__global__ function("julia") is not allowed
1>c:/Users/ъюы*/Documents/Visual Studio 2008/Projects/julia/julia/main.cu(42): error: calling a host function("cuComplex::cuComplex") from a __device__/__global__ function("julia") is not allowed

с одногрупником попробовали исправить ,но наши старания успехов не принесли,помогите пожалуйста,заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.09.2012, 18:42
Ответы с готовыми решениями:

Фрактал
Здравствуйте,дана была задачка. Суть её заключалась в том,чтобы написать программу генерирующую произвольный фрактал,затем переводила в...

Фрактал (множество) Жюлиа
Привет всем! Достаточно срочно ищется реализация фрактала Жюлиа на с++, может есть у кого?) был бы очень благодарен

Фрактал
Построить анимационный фрактальный 3D узор на основе заданного уравнения : y=sqr(x^2-4x+3)

7
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
07.09.2012, 22:35
Цитата Сообщение от Danzel Посмотреть сообщение
C
1
cuComplex( double a, double b) : r(a), i(b) {} //конструктор
это не C
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
07.09.2012, 22:41
Цитата Сообщение от Danzel Посмотреть сообщение
cuComplex( double a, double b) : r(a), i(b) {} //конструктор
попробуй так
C
1
2
3
4
5
cuComplex( double a, double b)
{
 r=a;
 i=b; 
}
хотя не знаю могут ли в С быть конструкторы в структуре в плюсах точно могут
0
6 / 6 / 5
Регистрация: 21.08.2012
Сообщений: 45
08.09.2012, 18:49  [ТС]
Спасибо за советы но это не помогло.

accept - я же писал в начале что это код cuda.

Я уже 3 день ломаю голову как исправить эту ошибку.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
08.09.2012, 19:09
скинь сюда полный проект, покумекаем
0
6 / 6 / 5
Регистрация: 21.08.2012
Сообщений: 45
09.09.2012, 17:21  [ТС]
Все я разобрался с программой,спасибо всем,но только теперь ошибка с выводом на экран,

ссылка на неразрешенный внешний символ __imp____glutCreateWindowWithExit@8 в функции "public: void __thiscall CPUBitmap::display_and_exit(void (__cdecl*)(void *))" (?display_and_exit@CPUBitmap@@QAEXP6AXPA X@Z@Z)

щас по инету полазаю ,думаю что исправлю))
0
 Аватар для monochromer
419 / 381 / 163
Регистрация: 03.01.2013
Сообщений: 966
20.05.2013, 17:34
Danzel, а в чем ошибка-то была? Поделитесь найденным решением.
0
 Аватар для monochromer
419 / 381 / 163
Регистрация: 03.01.2013
Сообщений: 966
09.06.2013, 22:15
Кстати, правильнее говорить не "Джулия", а фрактал Жюлиа с ударением на последний слог. Это же фамилия французского математика.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2013, 22:15
Помогаю со студенческими работами здесь

Фрактал
Написать программу в mathcad для DLA-модели,если зародыш фрактального кластера расположен по окружности и один в центре

Фрактал
Помогите пжл. изменить программу, чтобы получился фрактал показанный на изображении. PROGRAM Zadanie_7b; Uses Crt,Graph; CONST ...

фрактал
Напишите пожалуйста, программу на C# (фрактал), чтобы полегче был.

Фрактал
Хочу написать программу, рисующую фракталы, но пишет что нельзя преобразовать тип real к integer, как это исправить? Программа написана не...

Звездный фрактал
Звездный фрактал В вершинах пятиконечной звезды строятся 5 меньших звезд, далее на свободных концах этих звезд строятся еще меньшие...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
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. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru