|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我的问题是这样的:
现在有一个文本文件,3G左右,这个文件共有nr个记录。每个记录分两段,第一段是注释段共9行,接下来是数据段nl行。现在需要读取的数据有:
1)注释段第3行提取一个数据,第三行格式是:"#time: TIME",提取的是整型变量TIME的值;
2)数据段每行格式: ID RX RY RZ IX IY IZ
比如我采用如下数据结构来保存数据:
typedef struct
{
double rx, ry, rz;
int ix, iy, iz;
}DUMPDATA;
DUMPDATA *data, *pdata;
data = (DUMPDATA*)malloc(nr*nl*sizeof(DUMPDATA));
那么第 ir 个记录中第 il 行中读到的数据( id, rx, ry , rz, ix, iy, iz ) 进行如下保存:
pdata = data + nl * ir + id;
pdata->rx = rx;
pdata->ry = ry;
pdata->rz = rz;
pdata->ix = ix;
pdata->iy = iy;
pdata->iz = iz;
(以上id值的范围为0到nl-1, 且不重复)
如果用串行读取或者并行程序中用一个cpu读,然后广播给每个cpu的话,读取的过程大概要七八分钟。如果能用8个cpu并行读取能在一两分钟内读完就好。
并行读取要求:每个cpu最后都有整个data的数据。
因为是文本数据,我也不太理解文件视口概念;如果用共享指针的话,不知道怎么判断读到的位置,第几个记录等相关问题。
|
|