由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - FORTRAN数组越界问题
相关主题
有没有什么轮子可以管理大堆的binary文件啊?关于多线程编程的一个问题
一个关于big data 系统架构的设计问题多线程有什么优化的方法?
一个问题,关于数据存储的选择晕了,多线程,共享内存的问题
拜托推荐多线程和socket的书两个线程异步通信是不是用信号最好?
多线程/进程并发读文件有无开销问题?Java 多线程 的架构如何改进?
多线程下的gdb core dump问题C++多线程写网络服务是不是快退出舞台了?
[合集] 问个多线程的问题单线程一般都是历史原因
怎样提高C#计算程序的performance?请教一个Node.js的疑惑
相关话题的讨论汇总
话题: 数组话题: 内存话题: memory话题: 数据话题: 问题
进入Programming版参与讨论
1 (共1页)
J********9
发帖数: 36508
1
需要处理大量数据
1.把数据写入临时binary文件 需要时读取
不过这样速度大大降低
2.用动态数组 速度大大提高 但是有virtual
memory问题 数组容量超过一定值 无论virtual
memory 设置多大都没法分配数组
请问如何解决?
谢谢
a*w
发帖数: 4495
2
换Python试试?

【在 J********9 的大作中提到】
: 需要处理大量数据
: 1.把数据写入临时binary文件 需要时读取
: 不过这样速度大大降低
: 2.用动态数组 速度大大提高 但是有virtual
: memory问题 数组容量超过一定值 无论virtual
: memory 设置多大都没法分配数组
: 请问如何解决?
: 谢谢

J********9
发帖数: 36508
3
不会 并且代码量非常之大 换语言肯定又有其他问题
我想用Fortran的肯定迟早要遇到类似问题 不知道其他人是如何解决的

换Python试试?

【在 a*w 的大作中提到】
: 换Python试试?
a*****g
发帖数: 19398
4
机器的物理内存
操作系统提供的内存以及虚拟内存
windows 32/64
编译器
编译模式
这些东西可能都有关系

【在 J********9 的大作中提到】
: 不会 并且代码量非常之大 换语言肯定又有其他问题
: 我想用Fortran的肯定迟早要遇到类似问题 不知道其他人是如何解决的
:
: 换Python试试?

J********9
发帖数: 36508
5
谢谢 64-bit的编译器 据说可以用2TB
请问一下VS Intel Fortran 如何选择64bit 编译?

机器的物理内存
操作系统提供的内存以及虚拟内存
windows 32/64
编译器
编译模式
这些东西可能都有关系

【在 a*****g 的大作中提到】
: 机器的物理内存
: 操作系统提供的内存以及虚拟内存
: windows 32/64
: 编译器
: 编译模式
: 这些东西可能都有关系

d***a
发帖数: 13752
6
到底是多大的数组呢?

【在 J********9 的大作中提到】
: 需要处理大量数据
: 1.把数据写入临时binary文件 需要时读取
: 不过这样速度大大降低
: 2.用动态数组 速度大大提高 但是有virtual
: memory问题 数组容量超过一定值 无论virtual
: memory 设置多大都没法分配数组
: 请问如何解决?
: 谢谢

t*****n
发帖数: 4908
7
intel fortan有讨论组,你可以问问。另外数据大了,需要搞算法,不能完全依赖硬件
。难道是有限元/有限差分?

【在 J********9 的大作中提到】
: 谢谢 64-bit的编译器 据说可以用2TB
: 请问一下VS Intel Fortran 如何选择64bit 编译?
:
: 机器的物理内存
: 操作系统提供的内存以及虚拟内存
: windows 32/64
: 编译器
: 编译模式
: 这些东西可能都有关系

J********9
发帖数: 36508
8
要根据输入的raw文件定啊

到底是多大的数组呢?

【在 d***a 的大作中提到】
: 到底是多大的数组呢?
J********9
发帖数: 36508
9
计算其实很简单的 真不需要啥算法
主要过程是把raw文件(一个或多个)处理成(x,y,c) 这一步要么是把x,y,c写入
direct access binary文件;要么是写入数组。然后根据输入的(x,y)寻找相应的c (
简单的插值)
写入binary文件 永远不会有问题,就是慢
如果直接用循环从raw文件里面找相应的x,y,然后得到c 更加慢

intel fortan有讨论组,你可以问问。另外数据大了,需要搞算法,不能完全依赖硬件
。难道是有限元/有限差分?

【在 t*****n 的大作中提到】
: intel fortan有讨论组,你可以问问。另外数据大了,需要搞算法,不能完全依赖硬件
: 。难道是有限元/有限差分?

a*****g
发帖数: 19398
10
我也感觉要考虑一些算法

【在 J********9 的大作中提到】
: 计算其实很简单的 真不需要啥算法
: 主要过程是把raw文件(一个或多个)处理成(x,y,c) 这一步要么是把x,y,c写入
: direct access binary文件;要么是写入数组。然后根据输入的(x,y)寻找相应的c (
: 简单的插值)
: 写入binary文件 永远不会有问题,就是慢
: 如果直接用循环从raw文件里面找相应的x,y,然后得到c 更加慢
:
: intel fortan有讨论组,你可以问问。另外数据大了,需要搞算法,不能完全依赖硬件
: 。难道是有限元/有限差分?

相关主题
多线程下的gdb core dump问题关于多线程编程的一个问题
[合集] 问个多线程的问题多线程有什么优化的方法?
怎样提高C#计算程序的performance?晕了,多线程,共享内存的问题
进入Programming版参与讨论
t*****n
发帖数: 4908
11
多少数据量?排序了吗?直接上数据库吧

【在 J********9 的大作中提到】
: 计算其实很简单的 真不需要啥算法
: 主要过程是把raw文件(一个或多个)处理成(x,y,c) 这一步要么是把x,y,c写入
: direct access binary文件;要么是写入数组。然后根据输入的(x,y)寻找相应的c (
: 简单的插值)
: 写入binary文件 永远不会有问题,就是慢
: 如果直接用循环从raw文件里面找相应的x,y,然后得到c 更加慢
:
: intel fortan有讨论组,你可以问问。另外数据大了,需要搞算法,不能完全依赖硬件
: 。难道是有限元/有限差分?

x*******a
发帖数: 11067
12
io不可能的。直接定义静态数组可不可以?
m*******1
发帖数: 58
13
还是应该考虑算法的改进。
另外,数据量太大时, 可以考虑利用多线程处理建立一个缓冲, 分块处理数据。一个
线程处理当前数据时,另外的线程去读取将要处理的数据到内存。
m*******l
发帖数: 12782
14
静态的不能太大吧

【在 x*******a 的大作中提到】
: io不可能的。直接定义静态数组可不可以?
l*********s
发帖数: 5409
15
agree.

【在 m*******1 的大作中提到】
: 还是应该考虑算法的改进。
: 另外,数据量太大时, 可以考虑利用多线程处理建立一个缓冲, 分块处理数据。一个
: 线程处理当前数据时,另外的线程去读取将要处理的数据到内存。

a*****g
发帖数: 19398
16
把事情搞复杂了,多线程编程都进来了

一个

【在 l*********s 的大作中提到】
: agree.
J********9
发帖数: 36508
17
多的时候有个10G左右 取决于raw文件量
不需要排序 但是必须记住每个(x y c)record的index 然后可以按址寻值
数据库是怎么回事?没用过啊

多少数据量?排序了吗?直接上数据库吧

【在 t*****n 的大作中提到】
: 多少数据量?排序了吗?直接上数据库吧
J********9
发帖数: 36508
18
静态数据可定不成啊 动态的现在都有问题

io不可能的。直接定义静态数组可不可以?

【在 x*******a 的大作中提到】
: io不可能的。直接定义静态数组可不可以?
J********9
发帖数: 36508
19
其实我现在用的就是MPICH2
貌似 用MPICH2用的内存更多 比方说我用8线程做会出现VirtrualMemory问题 4线程就
没有
我现在要考虑的问题是:内存问题 (数据上限);速度问题
1.数据写入文件:多线程同时读取同一个文件 很慢很慢
2. 数据写入数组:可以多线程同时处理 但是有内存问题;如果一个线程处理,另外线
程读取,线程间交互也慢

还是应该考虑算法的改进。
另外,数据量太大时, 可以考虑利用多线程处理建立一个缓冲, 分块处理数据。一个
线程处理当前数据时,另外的线程去读取将要处理的数据到内存。

【在 m*******1 的大作中提到】
: 还是应该考虑算法的改进。
: 另外,数据量太大时, 可以考虑利用多线程处理建立一个缓冲, 分块处理数据。一个
: 线程处理当前数据时,另外的线程去读取将要处理的数据到内存。

l*********s
发帖数: 5409
20
read/write files in chunks to reduce contentions. if you don't want to write
code, you could consider in-task database.

【在 J********9 的大作中提到】
: 其实我现在用的就是MPICH2
: 貌似 用MPICH2用的内存更多 比方说我用8线程做会出现VirtrualMemory问题 4线程就
: 没有
: 我现在要考虑的问题是:内存问题 (数据上限);速度问题
: 1.数据写入文件:多线程同时读取同一个文件 很慢很慢
: 2. 数据写入数组:可以多线程同时处理 但是有内存问题;如果一个线程处理,另外线
: 程读取,线程间交互也慢
:
: 还是应该考虑算法的改进。
: 另外,数据量太大时, 可以考虑利用多线程处理建立一个缓冲, 分块处理数据。一个

相关主题
两个线程异步通信是不是用信号最好?单线程一般都是历史原因
Java 多线程 的架构如何改进?请教一个Node.js的疑惑
C++多线程写网络服务是不是快退出舞台了?c++posix多线程问题请教
进入Programming版参与讨论
f****p
发帖数: 18483
21
这个问题没有简单的解,除非你用64G或更大的内存。
你自己写个分配内存的daemon。处理数据的部分算是client,用统一接口。那个内存
daemon通过IPC和client通信。由这个daemon决定什么部分对换到临时文件,什么样的
内存块给client。不过内存只能作为shared memory分配。所以,当linux启动时,你可
能得告诉kernel预留多大内存作为可用的shared memory。

【在 J********9 的大作中提到】
: 需要处理大量数据
: 1.把数据写入临时binary文件 需要时读取
: 不过这样速度大大降低
: 2.用动态数组 速度大大提高 但是有virtual
: memory问题 数组容量超过一定值 无论virtual
: memory 设置多大都没法分配数组
: 请问如何解决?
: 谢谢

a******1
发帖数: 47
22
1 换大内存机器
2 database

【在 J********9 的大作中提到】
: 其实我现在用的就是MPICH2
: 貌似 用MPICH2用的内存更多 比方说我用8线程做会出现VirtrualMemory问题 4线程就
: 没有
: 我现在要考虑的问题是:内存问题 (数据上限);速度问题
: 1.数据写入文件:多线程同时读取同一个文件 很慢很慢
: 2. 数据写入数组:可以多线程同时处理 但是有内存问题;如果一个线程处理,另外线
: 程读取,线程间交互也慢
:
: 还是应该考虑算法的改进。
: 另外,数据量太大时, 可以考虑利用多线程处理建立一个缓冲, 分块处理数据。一个

t*****n
发帖数: 4908
23
10G的文件切成100份就100M一个吧。如果能排序的话就容易多了。你这个问题拼硬件,
搞多线程是无解的。肯定要对raw data预先处理一下。直接处理太暴力了吧。

【在 J********9 的大作中提到】
: 多的时候有个10G左右 取决于raw文件量
: 不需要排序 但是必须记住每个(x y c)record的index 然后可以按址寻值
: 数据库是怎么回事?没用过啊
:
: 多少数据量?排序了吗?直接上数据库吧

j****x
发帖数: 943
24
用数据库吧,比如sqlite3, 还可以多线程同时读写同一个数据库文件。
b******1
发帖数: 40
25
外行弱弱地问一句,他这个问题主要是大数据量导致的内存和IO问题吧,database怎么
解决这个问题?

【在 a******1 的大作中提到】
: 1 换大内存机器
: 2 database

J********9
发帖数: 36508
26
不错不错 总结的不错
我也是database的解决方案想不明白啊 没用过

外行弱弱地问一句,他这个问题主要是大数据量导致的内存和IO问题吧,database怎么
解决这个问题?

【在 b******1 的大作中提到】
: 外行弱弱地问一句,他这个问题主要是大数据量导致的内存和IO问题吧,database怎么
: 解决这个问题?

a******1
发帖数: 47
27
你如果用的是MPICH2 或者openmpi,那么很多数据库的读写是支持parrallel I/O的(
可能需要HDFS的支持)。至于你提到你用4个线程可以,8个线程就不行,是不是因为你
每个node只有4个CPU,而你的code只支持shared memory,不支持distributed memory?

【在 J********9 的大作中提到】
: 不错不错 总结的不错
: 我也是database的解决方案想不明白啊 没用过
:
: 外行弱弱地问一句,他这个问题主要是大数据量导致的内存和IO问题吧,database怎么
: 解决这个问题?

J********9
发帖数: 36508
28
谢谢回复 关于数据库的 很多问题我还弄不清 我需要做些research
我刚开始只在主机上测试 主机有8个CPU 用4个run的时候可以 8个的时候就有memory问
题了
关于MPICH2如何使用内存 我也不是很清楚:
比如说 没有并行运算 需要内存256M 是不是MPICH2的时候每个CPU都需要256M? 这样4
个就1024M 8个就2048M?

你如果用的是MPICH2 或者openmpi,那么很多数据库的读写是支持parrallel I/O的(
可能需要HDFS的支持)。至于你提到你用4个线程可以,8个线程就不行,是不是因为你
每个node只有4个CPU,而你的code只支持shared memory,不支持distributed memory?

【在 a******1 的大作中提到】
: 你如果用的是MPICH2 或者openmpi,那么很多数据库的读写是支持parrallel I/O的(
: 可能需要HDFS的支持)。至于你提到你用4个线程可以,8个线程就不行,是不是因为你
: 每个node只有4个CPU,而你的code只支持shared memory,不支持distributed memory?

a******1
发帖数: 47
29
你的出错信息是啥?难道是因为编译的时候不支持>2G的数组?

样4
memory?

【在 J********9 的大作中提到】
: 谢谢回复 关于数据库的 很多问题我还弄不清 我需要做些research
: 我刚开始只在主机上测试 主机有8个CPU 用4个run的时候可以 8个的时候就有memory问
: 题了
: 关于MPICH2如何使用内存 我也不是很清楚:
: 比如说 没有并行运算 需要内存256M 是不是MPICH2的时候每个CPU都需要256M? 这样4
: 个就1024M 8个就2048M?
:
: 你如果用的是MPICH2 或者openmpi,那么很多数据库的读写是支持parrallel I/O的(
: 可能需要HDFS的支持)。至于你提到你用4个线程可以,8个线程就不行,是不是因为你
: 每个node只有4个CPU,而你的code只支持shared memory,不支持distributed memory?

J********9
发帖数: 36508
30
编译没有问题
运行的时候显示 insuffient virtual memory
debug的时候 发现是动态数据allocate时出的错

你的出错信息是啥?难道是因为编译的时候不支持>2G的数组?
样4
memory?

【在 a******1 的大作中提到】
: 你的出错信息是啥?难道是因为编译的时候不支持>2G的数组?
:
: 样4
: memory?

相关主题
多线程,异步,并发冲突,fp和其它一个关于big data 系统架构的设计问题
spring 是一个event loop一直在跑么?然后处理各种event?一个问题,关于数据存储的选择
有没有什么轮子可以管理大堆的binary文件啊?拜托推荐多线程和socket的书
进入Programming版参与讨论
t*****n
发帖数: 4908
31
google T级的数据不会都在内存里面吧?

【在 J********9 的大作中提到】
: 不错不错 总结的不错
: 我也是database的解决方案想不明白啊 没用过
:
: 外行弱弱地问一句,他这个问题主要是大数据量导致的内存和IO问题吧,database怎么
: 解决这个问题?

a******1
发帖数: 47
32
memory leakage, 我不熟悉windows,只能冒失地猜一下了
1。如果是fortran95以前的版本,检查一下是不是每次allocate以后都deallocate了
2。32-bit的编译器有可能会对virtual memory的使用有一个2G的限制。

【在 J********9 的大作中提到】
: 编译没有问题
: 运行的时候显示 insuffient virtual memory
: debug的时候 发现是动态数据allocate时出的错
:
: 你的出错信息是啥?难道是因为编译的时候不支持>2G的数组?
: 样4
: memory?

J********9
发帖数: 36508
33
谢谢楼上各位
我先尝试一下64-bit编译器 记录并读取动态数组
然后研究一下多线程记录数据到临时binary文件 多线程读取
最后要是再不行 再弄弄数据库
t*****n
发帖数: 4908
34
能排序先排序吧。老师没讲过?

【在 J********9 的大作中提到】
: 谢谢楼上各位
: 我先尝试一下64-bit编译器 记录并读取动态数组
: 然后研究一下多线程记录数据到临时binary文件 多线程读取
: 最后要是再不行 再弄弄数据库

J********9
发帖数: 36508
35
不是CS科班出身的 google+自己啃 没办法啊
其实无论是用动态数组还是临时文件 每一个数据我都会记录一个index以方便查找
这个不知道是不是类似你说的排序呢

能排序先排序吧。老师没讲过?

【在 t*****n 的大作中提到】
: 能排序先排序吧。老师没讲过?
J********9
发帖数: 36508
36
update一下
32-bit的Fortran编译器最多用4G内存 (还是2G?)
今天用了64-bit Fortran编译(可用内存up to 2 T) +增加RAM+增加Virtual Memory
解决了问题

不是CS科班出身的 google+自己啃 没办法啊
其实无论是用动态数组还是临时文件 每一个数据我都会记录一个index以方便查找
这个不知道是不是类似你说的排序呢
能排序先排序吧。老师没讲过?

【在 J********9 的大作中提到】
: 不是CS科班出身的 google+自己啃 没办法啊
: 其实无论是用动态数组还是临时文件 每一个数据我都会记录一个index以方便查找
: 这个不知道是不是类似你说的排序呢
:
: 能排序先排序吧。老师没讲过?

a*****g
发帖数: 19398
37
哈哈——那应该給我发包子

Memory

【在 J********9 的大作中提到】
: update一下
: 32-bit的Fortran编译器最多用4G内存 (还是2G?)
: 今天用了64-bit Fortran编译(可用内存up to 2 T) +增加RAM+增加Virtual Memory
: 解决了问题
:
: 不是CS科班出身的 google+自己啃 没办法啊
: 其实无论是用动态数组还是临时文件 每一个数据我都会记录一个index以方便查找
: 这个不知道是不是类似你说的排序呢
: 能排序先排序吧。老师没讲过?

J********9
发帖数: 36508
38
恩 好
笨人只能提高硬件了
老板基本同意上 64-bit machine 加内存 弄cluster 开搞了

【在 a*****g 的大作中提到】
: 哈哈——那应该給我发包子
:
: Memory

a*****g
发帖数: 19398
39
包子受到。多谢啦

【在 J********9 的大作中提到】
: 恩 好
: 笨人只能提高硬件了
: 老板基本同意上 64-bit machine 加内存 弄cluster 开搞了

J********9
发帖数: 36508
40
再问个问题
64-bit编译出来的 貌似比 32-bit编译出来的慢一点点 啥原因啊

包子受到。多谢啦

【在 a*****g 的大作中提到】
: 包子受到。多谢啦
相关主题
拜托推荐多线程和socket的书[合集] 问个多线程的问题
多线程/进程并发读文件有无开销问题?怎样提高C#计算程序的performance?
多线程下的gdb core dump问题关于多线程编程的一个问题
进入Programming版参与讨论
a*****g
发帖数: 19398
41
嗳哟大兄弟啊——
别说是 x64 和 x32 编译出来结果不一样
就算你都是 X32,运行的时候如果 CPU 还算了 Pi,那结果也不一样呢
开玩笑拉!
64位的东西,好多东西都大了一倍,速度有变化也是很正常的啊

【在 J********9 的大作中提到】
: 再问个问题
: 64-bit编译出来的 貌似比 32-bit编译出来的慢一点点 啥原因啊
:
: 包子受到。多谢啦

1 (共1页)
进入Programming版参与讨论
相关主题
请教一个Node.js的疑惑多线程/进程并发读文件有无开销问题?
c++posix多线程问题请教多线程下的gdb core dump问题
多线程,异步,并发冲突,fp和其它[合集] 问个多线程的问题
spring 是一个event loop一直在跑么?然后处理各种event?怎样提高C#计算程序的performance?
有没有什么轮子可以管理大堆的binary文件啊?关于多线程编程的一个问题
一个关于big data 系统架构的设计问题多线程有什么优化的方法?
一个问题,关于数据存储的选择晕了,多线程,共享内存的问题
拜托推荐多线程和socket的书两个线程异步通信是不是用信号最好?
相关话题的讨论汇总
话题: 数组话题: 内存话题: memory话题: 数据话题: 问题