由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Computation版 - 转成java和c有帮助嘛?
相关主题
并行计算再请问一个MATLAB 矩阵问题
请教关于matlab benchmark请问一个matlab的矩阵小问题
请问怎么让matlab能在没装matlab的高性能计算机上运行?matlab 思考题
如何让一个嵌套循环程序并行处理?help: how to simplify many many "elseif" loops?
菜鸟急问:两个数组相加,复杂度是否可以降到O(1)简单问题:解方程
MATLAB 并行计算问题有人紧急问一个问题
matlab parallel 编程所需内存太大怎么办???
请问Fortran能比matlab快多少?问个optimization 的问题
相关话题的讨论汇总
话题: nb话题: end话题: 30话题: 1000话题: 800
进入Computation版参与讨论
1 (共1页)
s****1
发帖数: 425
1
我有一个200行的matlab code,由于数据量比较大,有几个百万量级的循环,能不用循
环的我都用矢量替代了。需要迭代上千次,运行时间也比较长(几天),我
32G 内存已经不够用了,不知道转成C或者java是不是有帮助?谢谢
maxepoch=1500;
cmax=1500000;
for nb=1:3
for m=1:30
Qw(:,:,m,nb)=ones(cmax,1)*constant; % 1500000*4*30*3
mu(:,:,m,nb)=
sigma(:,:,m,nb)=
end
end
for g=1:2000

for nb=1:3
x=batchdata(:,:,nb);%20000*800*3
.....
for m=1:30
for i=1:numwits(:,nb)%1000000*3
w(i,m,nb)= normrnd(mu(i,j,m,nb),sigma(i,j,m,nb));% j=one of
[1 2 3 ... 16]
end



h(:,:,m,nb)=; %1000*1000*30*3
hh(:,:,m,nb)=;%1000*800*30*3
hhh(:,:,m,nb)=;%800*500*30*3
hhhh(:,:,m,nb)=;%500*100*30*3

yx(:,:,m,nb)=;%100*500*30*3
yxx(:,:,m,nb)=;%500*800*30*3
yxxx(:,:,m,nb%800*1000*30*3
yxxxx(:,:,m,nb)=;%1000*1000*30*3

clear wx wxx wxxx wxxxx h hh hhh hhhh yx yxx yxxx yxxxx

if err(m,nb)>errbest(m,nb)
num=intersect(numbest{:,m,nb}(:),exist(:)); %几十万

for ii=1:length(num)
for i=1:k

c=bb{num(ii),:,m,nb}(i); %数组

if ...
...
elseif ...
...
else
...
end
...
end
end


else
...
for i=1:1000000

...

end


end

end



if error(nb)>serrbest(nb)
for ii=1:cmax
if ...
elseif ...
else
...
end

end
else
...

end
...
end

end
end
j**u
发帖数: 6059
2
matlab能并行的话要好很多,重新转换成C可能花不少时间写code。

【在 s****1 的大作中提到】
: 我有一个200行的matlab code,由于数据量比较大,有几个百万量级的循环,能不用循
: 环的我都用矢量替代了。需要迭代上千次,运行时间也比较长(几天),我
: 32G 内存已经不够用了,不知道转成C或者java是不是有帮助?谢谢
: maxepoch=1500;
: cmax=1500000;
: for nb=1:3
: for m=1:30
: Qw(:,:,m,nb)=ones(cmax,1)*constant; % 1500000*4*30*3
: mu(:,:,m,nb)=
: sigma(:,:,m,nb)=

m*******1
发帖数: 58
3
转成C会快很多。并行处理当然更好,用C实现并行很方便。

【在 j**u 的大作中提到】
: matlab能并行的话要好很多,重新转换成C可能花不少时间写code。
j**u
发帖数: 6059
4
用C当然效率高多了,不过写code比起matlab要多花不少时间。

【在 m*******1 的大作中提到】
: 转成C会快很多。并行处理当然更好,用C实现并行很方便。
m*******1
发帖数: 58
5
Matlab 运行太慢的情况下,还是值得改写成C,花不了多少时间,除非你调用了复杂的
Matlab 函数。

【在 j**u 的大作中提到】
: 用C当然效率高多了,不过写code比起matlab要多花不少时间。
s****1
发帖数: 425
6
只能转c了,并行总是错误
parfor nb=1:s

b(:,nb)=rand(cmax,1);

exist=find(b(:,nb));

numwits=length(exist(:));

for m=1:L
r=rand(numwits,k);
for i=1:numwits
bnow(exist(i),:,m,nb)=Qw(exist(i),:,m,nb).^2;。Error: The
variable b in a parfor cannot be classified.我把parfor放在m循环前面就提示
bnow错误。这个错误很普遍,也在网上看了一些,不过对parfor里面的变量的限制还是
没深刻理解。
s****1
发帖数: 425
7
我有一个200行的matlab code,由于数据量比较大,有几个百万量级的循环,能不用循
环的我都用矢量替代了。需要迭代上千次,运行时间也比较长(几天),我
32G 内存已经不够用了,不知道转成C或者java是不是有帮助?谢谢
maxepoch=1500;
cmax=1500000;
for nb=1:3
for m=1:30
Qw(:,:,m,nb)=ones(cmax,1)*constant; % 1500000*4*30*3
mu(:,:,m,nb)=
sigma(:,:,m,nb)=
end
end
for g=1:2000

for nb=1:3
x=batchdata(:,:,nb);%20000*800*3
.....
for m=1:30
for i=1:numwits(:,nb)%1000000*3
w(i,m,nb)= normrnd(mu(i,j,m,nb),sigma(i,j,m,nb));% j=one of
[1 2 3 ... 16]
end



h(:,:,m,nb)=; %1000*1000*30*3
hh(:,:,m,nb)=;%1000*800*30*3
hhh(:,:,m,nb)=;%800*500*30*3
hhhh(:,:,m,nb)=;%500*100*30*3

yx(:,:,m,nb)=;%100*500*30*3
yxx(:,:,m,nb)=;%500*800*30*3
yxxx(:,:,m,nb%800*1000*30*3
yxxxx(:,:,m,nb)=;%1000*1000*30*3

clear wx wxx wxxx wxxxx h hh hhh hhhh yx yxx yxxx yxxxx

if err(m,nb)>errbest(m,nb)
num=intersect(numbest{:,m,nb}(:),exist(:)); %几十万

for ii=1:length(num)
for i=1:k

c=bb{num(ii),:,m,nb}(i); %数组

if ...
...
elseif ...
...
else
...
end
...
end
end


else
...
for i=1:1000000

...

end


end

end



if error(nb)>serrbest(nb)
for ii=1:cmax
if ...
elseif ...
else
...
end

end
else
...

end
...
end

end
end
j**u
发帖数: 6059
8
matlab能并行的话要好很多,重新转换成C可能花不少时间写code。

【在 s****1 的大作中提到】
: 我有一个200行的matlab code,由于数据量比较大,有几个百万量级的循环,能不用循
: 环的我都用矢量替代了。需要迭代上千次,运行时间也比较长(几天),我
: 32G 内存已经不够用了,不知道转成C或者java是不是有帮助?谢谢
: maxepoch=1500;
: cmax=1500000;
: for nb=1:3
: for m=1:30
: Qw(:,:,m,nb)=ones(cmax,1)*constant; % 1500000*4*30*3
: mu(:,:,m,nb)=
: sigma(:,:,m,nb)=

m*******1
发帖数: 58
9
转成C会快很多。并行处理当然更好,用C实现并行很方便。

【在 j**u 的大作中提到】
: matlab能并行的话要好很多,重新转换成C可能花不少时间写code。
j**u
发帖数: 6059
10
用C当然效率高多了,不过写code比起matlab要多花不少时间。

【在 m*******1 的大作中提到】
: 转成C会快很多。并行处理当然更好,用C实现并行很方便。
m*******1
发帖数: 58
11
Matlab 运行太慢的情况下,还是值得改写成C,花不了多少时间,除非你调用了复杂的
Matlab 函数。

【在 j**u 的大作中提到】
: 用C当然效率高多了,不过写code比起matlab要多花不少时间。
s****1
发帖数: 425
12
只能转c了,并行总是错误
parfor nb=1:s

b(:,nb)=rand(cmax,1);

exist=find(b(:,nb));

numwits=length(exist(:));

for m=1:L
r=rand(numwits,k);
for i=1:numwits
bnow(exist(i),:,m,nb)=Qw(exist(i),:,m,nb).^2;。Error: The
variable b in a parfor cannot be classified.我把parfor放在m循环前面就提示
bnow错误。这个错误很普遍,也在网上看了一些,不过对parfor里面的变量的限制还是
没深刻理解。
1 (共1页)
进入Computation版参与讨论
相关主题
问个optimization 的问题菜鸟急问:两个数组相加,复杂度是否可以降到O(1)
[合集] 请教一个牛顿迭代的问题MATLAB 并行计算问题
非线性优化的问题matlab parallel 编程
求救,有什么迭代算法不依赖初值的么?请问Fortran能比matlab快多少?
并行计算再请问一个MATLAB 矩阵问题
请教关于matlab benchmark请问一个matlab的矩阵小问题
请问怎么让matlab能在没装matlab的高性能计算机上运行?matlab 思考题
如何让一个嵌套循环程序并行处理?help: how to simplify many many "elseif" loops?
相关话题的讨论汇总
话题: nb话题: end话题: 30话题: 1000话题: 800