Julia曲线的生成
来源:互联网 发布:聚客网络 编辑:程序博客网 时间:2024/04/25 21:50
/*
生成Julia曲线,与GPU高性能编程CUDA实战这本书相对应,
其中用到了作者提供的与书配合的库:book.h,cpu_bitmap.h
本程序是在cuda3.0上调通的。
*/
#include "book.h"
#include "cpu_bitmap.h"
#define DIM 1000
struct cuComplex{
float r;
float i;
cuComplex(float a,float b):r(a),i(b){}
__device__ float magnitude2(void)
{
return r*r+i*i;
}
__device__ cuComplex operator*(const cuComplex& a)
{
return cuComplex(r*a.r-i*a.i,i*a.r+r*a.i);
}
__device__ cuComplex operator+(const cuComplex& a)
{
return cuComplex(r+a.r,i+a.i);
}
};
__device__ int julia(int x,int y)
{
const float scale=1.5;
float jx=scale*(float)(DIM/2-x)/(DIM/2);
float jy=scale*(float)(DIM/2-y)/(DIM/2);
cuComplex c(-0.8,0.156); //Zc为复数
//cuComplex c(-0.8,0); //Zc为实数
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)
{
//将threadIdx/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; //确定图像的颜色的Red分量
ptr[offset*4+1]=0; //确定图像的颜色的Green分量
ptr[offset*4+2]=0; //确定图像的颜色的Blue分量
ptr[offset*4+3]=255;
}
int main(void)
{
CPUBitmap bitmap(DIM,DIM);
unsigned char *dev_bitmap;
HANDLE_ERROR(cudaMalloc((void**)&dev_bitmap,bitmap.image_size()));
dim3 grid(DIM,DIM);
kernel<<<grid,1>>>(dev_bitmap);
HANDLE_ERROR(cudaMemcpy(bitmap.get_ptr(),dev_bitmap,bitmap.image_size(),cudaMemcpyDeviceToHost));
bitmap.display_and_exit();
HANDLE_ERROR(cudaFree(dev_bitmap));
}
- Julia曲线的生成
- GPU实现julia集曲线
- GPU高性能编程CUDA实战——Julia曲线生成错误
- 绘制julia集的曲线--GPU高性能编程CUDA实战4.2.2
- Julia: Gadfly画三条曲线,打上Label!
- 生成曲线
- 利用zedGraph实现不定曲线数曲线的生成
- Julia:Datetime的用法
- 最好的Julia语言
- Julia :PyPlot的plot_date
- Julia语言的介绍
- 【计算机图形学】三、bezier曲线的生成
- 步进电机S曲线的生成
- Julia : 如何生成一个水仙花数?
- Julia:关于split的用法
- Julia之BloomFilters的使用
- Julia : “;”和[] 引发的差别
- Julia :迎接0.6的到来
- TestNG 并发运行相关的核心概念
- HEVC中的CU结构
- 适配器模式
- 驱动学习站点
- android 发送短信
- Julia曲线的生成
- 二叉树非递归遍历
- 字符串排序
- 小结linux框架下函数如何可以使其被其他文件调用
- U-Boot中Linux的image文件头的定义(启动时间优化)
- 图像处理之图像梯度效果
- 将整数转换为字符串和将字符串转换为整数
- 工作是有计划的学习
- OSPF之五种报文协议