问题描述
3D 环面互连是具有 Nruns=1e3;
Nxy_max=20;
for i=1:Nruns
if i==round(Nruns/10)
tic(); %discard first 10% of iterations
end
x = linspace(0,1,randi(Nxy_max-1)+1); %randi([2,Nxy_max]) can be a bit slower
[X,Y,Z] = meshgrid(x,x,randn());
mag = hypot(X(:),Y(:));
T = delaunay(X(:),Y(:));
trisurf(T,X(:),Y(:),Z(:),mag,'FaceColor','interp');
view([-90 90]);
end
tmean_trisurf=1e3*toc()/(Nruns-round(Nruns/10)+1),%in [ms]
h=trisurf(T,'interp');
view([-90 90]);
for i=1:Nruns
if i==round(Nruns/10)
tic();
end
x = linspace(0,randi(Nxy_max-1)+1);
[X,Y(:));
set( h,'Faces',T,'XData',X(T).','YData',Y(T).','ZData',Z(T).','CData',mag(T).' );
end
tmean_xyzdata=1e3*toc()/(Nruns-round(Nruns/10)+1),%in [ms]
for i=1:Nruns
if i==round(Nruns/10)
tic();
end
x = linspace(0,'Vertices',[X(:) Y(:) Z(:)],'FaceVertexCData',mag(:) );
end
tmean_vertices=1e3*toc()/(Nruns-round(Nruns/10)+1),%in [ms]
节点的网络拓扑,其中 p^3
。 3D 环面基本上是一个 3D 网格,其链接连接相对面上的节点(我说得对吗?)。
我计算出来的二等分宽度是p > 2
。但是,我对如何为此进行直径计算一无所知。我什至不知道从哪里开始,因为我不明白连接相对面上的节点的链接的目的是什么。对于那些想知道的人来说,直径是将消息从一个节点发送到另一个节点所需的最大跳数。
解决方法
对于一维环面互连,直径为 floor(p/2)
。
因此,对于 3D 环面互连,直径为 floor(p/2) * 3
,因为 Manhattan distance 应用于此基于网格的互连。为了将其可视化,您可以考虑一个小的 4 x 4 x 4
网格以及数据包如何通过网格边缘移动。