安装并配置oneapi:
测试:
编译:make arch=test
rensize@rensize-virtual-machine:~/hpl/hpl-2.3$ make arch=test
make -f Make.top startup_dir arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
mkdir -p include/test
mkdir -p lib
mkdir -p lib/test
mkdir -p bin
mkdir -p bin/test
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top startup_src arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=src/auxil arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/auxil ; mkdir -p test )
( cd src/auxil/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=src/blas arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/blas ; mkdir -p test )
( cd src/blas/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=src/comm arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/comm ; mkdir -p test )
( cd src/comm/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=src/grid arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/grid ; mkdir -p test )
( cd src/grid/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=src/panel arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/panel ; mkdir -p test )
( cd src/panel/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=src/pauxil arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/pauxil ; mkdir -p test )
( cd src/pauxil/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=src/pfact arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/pfact ; mkdir -p test )
( cd src/pfact/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=src/pgesv arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/pgesv ; mkdir -p test )
( cd src/pgesv/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top startup_tst arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=testing/matgen arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd testing/matgen ; mkdir -p test )
( cd testing/matgen/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=testing/timer arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd testing/timer ; mkdir -p test )
( cd testing/timer/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=testing/pmatgen arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd testing/pmatgen ; mkdir -p test )
( cd testing/pmatgen/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=testing/ptimer arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd testing/ptimer ; mkdir -p test )
( cd testing/ptimer/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top leaf le=testing/ptest arch=test
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd testing/ptest ; mkdir -p test )
( cd testing/ptest/test ; \
ln -fs /home/rensize/hpl/hpl-2.3/Make.test Make.inc )
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3”
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top refresh_src arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
cp makes/Make.auxil src/auxil/test/Makefile
cp makes/Make.blas src/blas/test/Makefile
cp makes/Make.comm src/comm/test/Makefile
cp makes/Make.grid src/grid/test/Makefile
cp makes/Make.panel src/panel/test/Makefile
cp makes/Make.pauxil src/pauxil/test/Makefile
cp makes/Make.pfact src/pfact/test/Makefile
cp makes/Make.pgesv src/pgesv/test/Makefile
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top refresh_tst arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
cp makes/Make.matgen testing/matgen/test/Makefile
cp makes/Make.timer testing/timer/test/Makefile
cp makes/Make.pmatgen testing/pmatgen/test/Makefile
cp makes/Make.ptimer testing/ptimer/test/Makefile
cp makes/Make.ptest testing/ptest/test/Makefile
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top refresh_src arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
cp makes/Make.auxil src/auxil/test/Makefile
cp makes/Make.blas src/blas/test/Makefile
cp makes/Make.comm src/comm/test/Makefile
cp makes/Make.grid src/grid/test/Makefile
cp makes/Make.panel src/panel/test/Makefile
cp makes/Make.pauxil src/pauxil/test/Makefile
cp makes/Make.pfact src/pfact/test/Makefile
cp makes/Make.pgesv src/pgesv/test/Makefile
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top refresh_tst arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
cp makes/Make.matgen testing/matgen/test/Makefile
cp makes/Make.timer testing/timer/test/Makefile
cp makes/Make.pmatgen testing/pmatgen/test/Makefile
cp makes/Make.ptimer testing/ptimer/test/Makefile
cp makes/Make.ptest testing/ptest/test/Makefile
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top build_src arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd src/auxil/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/src/auxil/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/src/auxil/test”
( cd src/blas/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/src/blas/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/src/blas/test”
( cd src/comm/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/src/comm/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/src/comm/test”
( cd src/grid/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/src/grid/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/src/grid/test”
( cd src/panel/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/src/panel/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/src/panel/test”
( cd src/pauxil/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/src/pauxil/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/src/pauxil/test”
( cd src/pfact/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/src/pfact/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/src/pfact/test”
( cd src/pgesv/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/src/pgesv/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/src/pgesv/test”
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
make -f Make.top build_tst arch=test
make[1]: 进入目录“/home/rensize/hpl/hpl-2.3”
( cd testing/matgen/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/testing/matgen/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/testing/matgen/test”
( cd testing/timer/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/testing/timer/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/testing/timer/test”
( cd testing/pmatgen/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/testing/pmatgen/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/testing/pmatgen/test”
( cd testing/ptimer/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/testing/ptimer/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/testing/ptimer/test”
( cd testing/ptest/test; make )
make[2]: 进入目录“/home/rensize/hpl/hpl-2.3/testing/ptest/test”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/rensize/hpl/hpl-2.3/testing/ptest/test”
make[1]: 离开目录“/home/rensize/hpl/hpl-2.3”
运行测试:cd bin/test
rensize@rensize-virtual-machine:~/hpl/hpl-2.3$ cd bin/test
rensize@rensize-virtual-machine:~/hpl/hpl-2.3/bin/test$ ls
HPL.dat xhpl
运行:mpirun ./xhpl
rensize@rensize-virtual-machine:~/hpl/hpl-2.3/bin/test$ mpirun ./xhpl
HPL ERROR from process # 0, on line 419 of function HPL_pdinfo:
>>> Need at least 4 processes for these tests <<<
HPL ERROR from process # 0, on line 621 of function HPL_pdinfo:
>>> Illegal input in file HPL.dat. Exiting ... <<<
跟范例不一样,上网查了一下:
发现自己的目录只到bin/Linux_P||_CBLAS。。。
安装hpcg:
运行测试:cd bin
rensize@rensize-virtual-machine:~/hpcg/setup/build$ cd bin
rensize@rensize-virtual-machine:~/hpcg/setup/build/bin$ ls
hpcg20221009T101518.txt n104-1p-2t_V3.1_2022-10-09_10-16-43.txt xhpcg_avx2
hpcg20221009T102124.txt n104-1p-2t_V3.1_2022-10-09_10-22-48.txt xhpcg_knl
hpcg.dat xhpcg_avx xhpcg_skx
运行:./xhpcg_avx
最近在学归并排序,就简单用C++写了个排序5个数的归并。。。
rensize@rensize-virtual-machine:~$ vim Sort.cpp
rensize@rensize-virtual-machine:~$ g++ -o Sort Sort.cpp
rensize@rensize-virtual-machine:~$ ./Sort
5
2
6
7
1
before sort
5 2 6 7 1
after sort
1 2 5 6 7
代码详见如下:
#include <iostream>
using namespace std;
void mergeArr(int arr[], int low, int mid, int hight) {
int* tempArr = new int[hight - low + 1];
int i = low, j = mid + 1, k = 0;
while (i <= mid && j <= hight) {
if (arr[i] < arr[j]) {
tempArr[k] = arr[i];
i++;
}
else {
tempArr[k] = arr[j];
j++;
}
k++;
}
while (i <= mid) {
tempArr[k] = arr[i];
i++;
k++;
}
while (j <= hight) {
tempArr[k] = arr[j];
j++;
k++;
}
i = low;
for (int tempK = 0; ((tempK < k)&&(i <= hight)); tempK++) {
arr[i] = tempArr[tempK];
i++;
}
delete[] tempArr;
tempArr = NULL;
}
void sortArr(int arr[], int low, int hight) {
if (low < hight) {
int mid = (hight + low) / 2;
sortArr(arr,low,mid);
sortArr(arr, mid + 1, hight);
mergeArr(arr, low, mid, hight);
}
}
int main() {
int arr[5];
for (int i=0; i<5; i++) {
cin >> arr[i];
}
cout << "before sort " << endl;
for (int j=0; j<5; j++) {
cout << arr[j] << " ";
}
sortArr(arr, 0, 4);
cout << endl << "after sort " << endl;
for (int j = 0; j < 5; j++) {
cout << arr[j] << " ";
}
return 0;
}
用shell写文件,那些函数和数组什么的就不写了,简单写了个输出0-10的循环。。。
rensize@rensize-virtual-machine:~$ vim test.sh
rensize@rensize-virtual-machine:~$ bash test.sh
0
1
2
3
4
5
6
7
8
9
10
查看文件内容:
rensize@rensize-virtual-machine:~$ cat test.sh
#!/bin/bash
i=0
while ((i<=10))
do
echo $i
i=`expr $i + 1`
done
又写了个test2.sh
rensize@rensize-virtual-machine:~$ vim test2.sh
rensize@rensize-virtual-machine:~$ bash test2.sh
This is a test
rensize@rensize-virtual-machine:~$ cat test2.sh
#!/bin/bash
echo "This is a test"
合并文件:
rensize@rensize-virtual-machine:~$ vim sum.sh
rensize@rensize-virtual-machine:~$ cat test.sh test2.sh > sum.sh
rensize@rensize-virtual-machine:~$ cat sum.sh
#!/bin/bash
i=0
while ((i<=10))
do
echo $i
i=`expr $i + 1`
done
#!/bin/bash
echo "This is a test"
还有一些花里胡哨的操作就不哗众取宠了。。。
最后把拓展作业的三个内容安装了,浅学了一下。。。
rensize@rensize-virtual-machine:~$ gdb -v
GNU gdb (Ubuntu 12.0.90-0ubuntu1) 12.0.90
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
rensize@rensize-virtual-machine:~$ git config --list
user.name=rensize
user.email=rensize@2105495410@qq.com
rensize@rensize-virtual-machine:~$ docker version
Client: Docker Engine - Community
Version: 20.10.18
API version: 1.41
Go version: go1.18.6
Git commit: b40c2f6
Built: Thu Sep 8 23:11:43 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix /var/run/docker.sock: connect: permission denied
写一下自己的理解,GDB是用来调试程序的,甚至可以分线程调试;git是用来管理文件的,可以让把一个文件写成多个版本,比方说写了一个游戏,如果不用git的话,刚开始写的是适配Windows的版本,想要让Linux、Unix、MacOS、Android、iOS这些系统的用户也用的话就要每次都重新写一次,用git就能省很多事;docker是一个容器,可以把很多应用程序都装进去,可以隔离程序的运行环境,但又能共用同一个操作系统,比虚拟机更轻量化,占用更少资源。
就这些了,最后还要感谢一下前辰和子健两位学长教我配置环境,这一块内容折磨了我好久捏。