当前位置:  开发笔记 > 编程语言 > 正文

将Mandelbrot与OpenMP并行化

如何解决《将Mandelbrot与OpenMP并行化》经验,为你挑选了1个好方法。



1> Z boson..:

我继续清理你的代码,甚至从中制作了一个图像.

#include 
#include 

struct Image {
    unsigned nb_lig;
    unsigned nb_col;
    unsigned *pixels;
};

void calculer (struct Image * im, unsigned nb_iter, double x_min, double x_max, double y_min, double y_max) {
    double pasx = (x_max - x_min) / im -> nb_col;
    double pasy = (y_max - y_min) / im -> nb_lig;
    unsigned l,c;
    #pragma omp parallel for private (c)
    for (l = 0; l < im->nb_lig; l++) {
        for (c = 0; c < im->nb_col; c++) {
            double zx = 0.0, zy = 0.0, new_zx;
            double cx = x_min + c*pasx, cy = y_min + l*pasy;
            unsigned n = 0;
            for(n=0;  (zx*zx + zy*zy < 4.0 ) && ( n < nb_iter ); n++ ) {
                new_zx = zx*zx - zy*zy + cx;
                zy = 2.0*zx*zy + cy;
                zx = new_zx;
            }
            if(n == nb_iter) n = 0;
            im->pixels[l*im->nb_col + c] = n;
        }
    }
}

void draw_image(struct Image *im) {
    const char charset[] = ".,c8M@jawrpogOQEPGJ";
    unsigned l,c;
    for (l = 0; l < im->nb_lig; l++) {
        for (c = 0; c < im->nb_col; c++) {
            unsigned n = im->pixels[l*im->nb_col + c];
            char p = n > 0 ? charset[n % (sizeof(charset)-1)] : ' ';
            putchar(p);
            if(c+1 == im->nb_col) puts("");
        }
    }
    puts("");
}

int main(void) {
    struct Image im;
    im.nb_lig = 40;
    im.nb_col = 80;
    im.pixels = malloc(sizeof *im.pixels * im.nb_lig*im.nb_col);
    unsigned nb_iter = 256;
    calculer(&im, nb_iter, -2.5, 1.5, -2.0, 2.0);
    draw_image(&im);
    return 0;
}

输出是

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccc,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccc,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccccccccccc,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccccccccccccccc,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccccccccccccccccccccc,,,
,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,
,,,,,,,,,,,,,,,,,,,,ccccccccccccccc88888888888cccccccccccccccccccccccccccccccccc
,,,,,,,,,,,,,,,,,,,ccccccccc8888888888888888888888888ccccccccccccccccccccccccccc
,,,,,,,,,,,,,,,,,ccccccc8888888888888888MMMMM@.w@@MMM8888ccccccccccccccccccccccc
,,,,,,,,,,,,,,,,ccccc8888888888888888MMMMMM@@jaoro @MMMM8888cccccccccccccccccccc
,,,,,,,,,,,,,,,ccc8888888888888888MMMMMMM@@@jwrG@owj@@MMMM88888ccccccccccccccccc
,,,,,,,,,,,,,,cc8888888888888888MMMMMMM@@jjawQ    Jwj@@@@MM888888ccccccccccccccc
,,,,,,,,,,,,,cc88888888888888MMMMMM@@jawwwwrpQ    OprwjjjJ@MM88888cccccccccccccc
,,,,,,,,,,,,cc8888888888888MMMM@@@@jjagM Pa          ,gQEPE@M888888ccccccccccccc
,,,,,,,,,,,,c88888888888MM@@@@@@@jjjwQg@                 ,aj@M888888cccccccccccc
,,,,,,,,,,,c8888888MMM@@agaaaaaaaaawo,                   Gr.@MM888888ccccccccccc
,,,,,,,,,,,888MMMMMM@@@japP,gOPOorro@                     EwjMM8888888cccccccccc
,,,,,,,,,,,8MMMMMM@@@@jawoJ       EP                      ga@MMM888888cccccccccc
,,,,,,,,,,,MMMMMjjjjawgOQ8         Q                      wj@MMM888888cccccccccc
,,,,,,,,,,,                                             gwaj@MMM888888cccccccccc
,,,,,,,,,,,MMMMMjjjjawgOQ8         Q                      wj@MMM888888cccccccccc
,,,,,,,,,,,8MMMMMM@@@@jawoJ       EP                      ga@MMM888888cccccccccc
,,,,,,,,,,,888MMMMMM@@@japP,gOPOorro@                     EwjMM8888888cccccccccc
,,,,,,,,,,,c8888888MMM@@agaaaaaaaaawo,                   Gr.@MM888888ccccccccccc
,,,,,,,,,,,,c88888888888MM@@@@@@@jjjwQg@                 ,aj@M888888cccccccccccc
,,,,,,,,,,,,cc8888888888888MMMM@@@@jjagM Pa          ,gQEPE@M888888ccccccccccccc
,,,,,,,,,,,,,cc88888888888888MMMMMM@@jawwwwrpQ    OprwjjjJ@MM88888cccccccccccccc
,,,,,,,,,,,,,,cc8888888888888888MMMMMMM@@jjawQ    Jwj@@@@MM888888ccccccccccccccc
,,,,,,,,,,,,,,,ccc8888888888888888MMMMMMM@@@jwrG@owj@@MMMM88888ccccccccccccccccc
,,,,,,,,,,,,,,,,ccccc8888888888888888MMMMMM@@jaoro @MMMM8888cccccccccccccccccccc
,,,,,,,,,,,,,,,,,ccccccc8888888888888888MMMMM@.w@@MMM8888ccccccccccccccccccccccc
,,,,,,,,,,,,,,,,,,,ccccccccc8888888888888888888888888ccccccccccccccccccccccccccc
,,,,,,,,,,,,,,,,,,,,ccccccccccccccc88888888888cccccccccccccccccccccccccccccccccc
,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,
,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccccccccccccccccccccc,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccccccccccccccc,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccccccccccc,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccccccccccccc,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ccccccccccccccccccccccccc,,,,,,,,,,,,,,,,,

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有