如何做照片ppt模板下载网站,北京贸易公司网站制作,石家庄教育学会网站建设,微网站怎么做百度关键词rapidmind.net提供了免费的计算库下载#xff0c;目的是使用C metaprogramming将计算与硬件平台隔离开来#xff0c;它提供一套运行库做底层的优化工作。为了测试其真正的性能#xff0c;以便于在未来的渲染器中使用#xff0c;我做了一个简单的性能测试程序#xff0c;将… rapidmind.net提供了免费的计算库下载目的是使用C metaprogramming将计算与硬件平台隔离开来它提供一套运行库做底层的优化工作。为了测试其真正的性能以便于在未来的渲染器中使用我做了一个简单的性能测试程序将一张1920x1080尺寸的TIF从RGB转换为CIE XYZ。 测试平台为我的acer 5572ANWXCi笔记本Core Duo T2250、945、1.5G DDR2、geforce 7300go 64bit 128M。GPUCPUGPU*CPU*Joky.tif1.80944428.30651036.92707512.229953 HDTV.tif7.248393179.199637465.021794173.764878单位为毫秒millisecond加“*”表示回读GPU数据到内存。Joky.tif大小为300x400120000 pixels。HDTV.tif大小为1920x10802073600 pixels。 测试结果表明如果不回读那么可以放心大胆的使用GPU计算。但是如果回读那么速度将急剧下降。总线是一个原因但估计更深层次的是GPU的工作机制以及设计。但是可以肯定的是如果使用RM开发基于多核心的CPU比如CELL BE处理器的计算程序那么带来的好处是及其明显的避免了硬件编码优化工作节省了人力物力最重要的是可以获得相当不错的性能。 测试代码如下其中CPU部分没有优化但是打开了VC71的SSE2开关。#include TCHAR.h#include cstdio#include rapidmind/platform.hpp#include cximage/ximage.h#pragma comment(lib,rmplatform-vc7-md.lib)#pragma comment(lib,cximagecrt.lib)using namespace rapidmind;int main(){ float Time; CxImage Image(C:\\HDTV.tif,CXIMAGE_FORMAT_TIF); long size Image.GetWidth()*Image.GetHeight()*sizeof(BYTE)*4; BYTE* DataPtr NULL; if( !Image.Encode2RGBA(DataPtr,size) ) printf(Shit!\n); rapidmind::init();/**//*const mat3 RGBtoCIEmat mat3(0.412453, 0.212671, 0.019334, 0.357580, 0.715160, 0.119193, 0.180423, 0.072169, 0.950227);*/ Value3f C0(0.412453f,0.357580f,0.180423f); Value3f C1(0.212671f,0.715160f,0.072169f); Value3f C2(0.019334f,0.119193f,0.950227f); Program Prog RM_BEGIN_PROGRAM(stream){ InValue4ub rgb; OutValue4ub cie; cie(0) dot(rgb(0,1,2),C0); cie(1) dot(rgb(0,1,2),C1); cie(2) dot(rgb(0,1,2),C2); cie(3) 255; }RM_END Array1,Value4ub Input(Image.GetWidth()*Image.GetHeight()); DataPtr Input.write_data(); Array1,Value4ub Output; rapidmind::compile(Output,Prog(Input)); Output Prog(Input); DataPtr[0] 255; rapidmind::Timer Start rapidmind::Timer::now(); Output Prog(Input); rapidmind::finish(); //const BYTE* RMResultPtr Output.read_data(); rapidmind::Timer End rapidmind::Timer::now(); rapidmind::finish(); Time End.milliseconds() - Start.milliseconds(); printf(Use RM : %f milliseconds\n,Time); int Width Image.GetWidth(),Height Image.GetHeight(); Start rapidmind::Timer::now(); for(int i0;iWidth*Height;i){ float r DataPtr[i*40],gDataPtr[i*41],bDataPtr[i*42]; float x r*0.412453f g*0.357580f b*0.180423f; float y r*0.212671f g*0.715160f b*0.072169f; float z r*0.019334f g*0.119193f b*0.950227f; DataPtr[i*40] x; DataPtr[i*41] y; DataPtr[i*42] z; DataPtr[i*42] 255; } End rapidmind::Timer::now(); Time End.milliseconds() - Start.milliseconds(); printf(Use CPU: %f milliseconds\n,Time); system(PAUSE); return 0;} 转载于:https://www.cnblogs.com/Jedimaster/archive/2007/10/02/912882.html