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

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

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

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

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2012, 18:42
Ответы с готовыми решениями:

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

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

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

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

7
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
07.09.2012, 22:35 2
Цитата Сообщение от Danzel Посмотреть сообщение
C
1
cuComplex( double a, double b) : r(a), i(b) {} //конструктор
это не C
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
07.09.2012, 22:41 3
Цитата Сообщение от 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  [ТС] 4
Спасибо за советы но это не помогло.

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

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

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

щас по инету полазаю ,думаю что исправлю))
0
419 / 381 / 163
Регистрация: 03.01.2013
Сообщений: 966
20.05.2013, 17:34 7
Danzel, а в чем ошибка-то была? Поделитесь найденным решением.
0
419 / 381 / 163
Регистрация: 03.01.2013
Сообщений: 966
09.06.2013, 22:15 8
Кстати, правильнее говорить не "Джулия", а фрактал Жюлиа с ударением на последний слог. Это же фамилия французского математика.
0
09.06.2013, 22:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2013, 22:15
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru