给定包含互相关值的下三角矩阵(100x100),其中条目'ij'是信号'i'和'j'之间的相关值,因此高值意味着这两个信号属于同一类对象,并且知道数据集中最多有四个不同的类,有人知道一种快速有效的方法来对数据进行分类并将所有信号分配给4个不同的类,而不是搜索和交叉检查所有条目. ?以下7x7矩阵可能有助于说明这一点:
1 0 0 0 0 0 0
.2 1 0 0 0 0 0
.8 .15 1 0 0 0 0
.9 .17 .8 1 0 0 0
.23 .8 .15 .14 1 0 0
.7 .13 .77 .83. .11 1 0
.1 .21 .19 .11 .17 .16 1
Run Code Online (Sandbox Code Playgroud)
这个例子中有三个类:
class 1: rows <1 3 4 6>,
class 2: rows <2 5>,
class 3: rows <7>
Run Code Online (Sandbox Code Playgroud) 如果在下面我用 'srun' 替换 'mpirun',我的 mpi+openmp 作业运行速度会慢 3 倍!
#!bin/bash
#
#SBATCH --job-name=locstack4d_mpi
#SBATCH --output=./res_locstack4d_mpi.txt
#
#SBATCH --ntasks=3
#SBATCH --cpus-per-task=16
#SBATCH --ntasks-per-node=1
#SBATCH --time=10:00
#SBATCH --mem-per-cpu=100
#SBATCH --verbose
export OMP_NUM_THREADS=28
mpirun ./locstack4d ./locstack4d_input.dat
Run Code Online (Sandbox Code Playgroud)
mpi 实现细节:
Version: 3.1
Release Date: Thu Feb 20 11:41:13 CST 2014
CC: gcc -m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -Wl,-z,noexecstack
CXX: g++ -m64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -Wl,-z,noexecstack
F77: gfortran -m64 -O2 -g -pipe …Run Code Online (Sandbox Code Playgroud) 我有位置数据的3个载体:x,y和z
x = [0.1524 0.1219 0.0610 0.0914 0.0610 0.1219 0.0305 0.0914 0.2134 0.0610 0.1219
0.0305 0.0610 0.1219 0.0914 0.1524 0.0610 0.1524 0.0610 0.0610 0.0610 0.0610
0.1524 0.0914 0.0610 0.1524 0.0610 0.2134 0.0610 0.0914 0.1524];
y = [0.1219 0.1524 0.0305 0.1219 0.1524 0.1524 0.0610 0.1219 0.1219 0.1524 0.1524
0.0610 0.0914 0.1524 0.1829 0.1829 0.0914 0.1829 0.2134 0.0914 0.2134 0.0914
0.1829 0.0610 0.0914 0.1829 0.0914 0.1829 0.2134 0.1219 0.1829];
z = [0.0305 0.0305 0.0610 0.0610 0.0610 0.0610 …Run Code Online (Sandbox Code Playgroud)