Tag: mandelbrot

如何修复关于Mandelbrot集的Pthreads代码?

我有以下关于计算和创建Mandelbrot集图片的Pthreads代码。 我在C中的代码工作正常,它很好地打印出结果图片。 关键是使用下面的代码,我能够编译代码并执行它。 之后,如果我尝试在Gimp中查看生成的.ppm文件,则无法打开它。 我想我在代码中做错了。 如果有人可以帮助我,我会很高兴。 // mandpthread.c // to compile: gcc mandpthread.c -o mandpthread -lm -lrt -lpthread // usage: ./mandpthread > output.ppm #include #include #include #include #include #include typedef struct { int r, g, b; } rgb; int NITERATIONS, NTHREADS; rgb **m; void color(rgb **m, int x, int y, int red, int green, int […]

如何将Mandelbrot的每个像素计算划分为不同的节点?

我的问题是我应该使用什么数据结构将工作分配给每个线程并从中获取计算值。 在我看来,第一件事是填充矢量[0] ..矢量[63999](对于800×800像素),其结构包含x,y和iterate_value。 将这些向量传递给每个节点 – >然后将给定向量进一步划分到每个核心(Os-thread) – >然后将给定向量进一步划分到每个线程。 有没有其他可能的方式来发送和接收值? 如果我以矢量方式进行,我应该通过传递值传递矢量还是通过引用传递,在这种情况下哪一个更好?

一些mandelbrot绘制例程从c到sse2

我想重写这样简单的例程到SSE2代码,(最好是在nasm中)我并不完全确定如何做,两件事情不清楚(如何表达计算(内循环和那些来自外循环)以及如何调用c代码函数“SetPixelInDibInt(i,j,palette [n]);”来自staticaly链接的asm代码 void DrawMandelbrotD(double ox, double oy, double lx, int N_ITER) { double ly = lx * double(CLIENT_Y)/double(CLIENT_X); double dx = lx / CLIENT_X; double dy = ly / CLIENT_Y; double ax = ox – lx * 0.5 + dx * 0.5; double ay = oy – ly * 0.5 + dy * 0.5; static […]