From e8290785844ad014b438998d1e3ab4f4cb900f6b Mon Sep 17 00:00:00 2001 From: Alice Date: Wed, 4 Oct 2023 12:03:31 +0100 Subject: [PATCH] vault backup: 2023-10-04 12:03:31 --- .obsidian/workspace.json | 3 ++- 4a1s/CP/PL - Aula 4.md | 21 +++++++++++++++++---- Images/Pasted image 20231004115725.png | Bin 0 -> 25475 bytes 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 Images/Pasted image 20231004115725.png diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 6e08f88..b05e65f 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -161,11 +161,12 @@ "active": "98e0287d38212615", "lastOpenFiles": [ "Pasted image 20231004115209.png", + "Images/Pasted image 20231004115725.png", + "4a1s/CP/PL - Aula 4.md", "Images", "Images/Pasted image 20231004115135.png", "4a1s/CP/PL - Aula 3.md", "4a1s/CP/PL - Aula 2.md", - "4a1s/CP/PL - Aula 4.md", "4a1s/RAS/Projeto.md", "4a1s/RAS/T - Aula 3.md", "4a1s/index.md", diff --git a/4a1s/CP/PL - Aula 4.md b/4a1s/CP/PL - Aula 4.md index bbff0c1..c3b7703 100644 --- a/4a1s/CP/PL - Aula 4.md +++ b/4a1s/CP/PL - Aula 4.md @@ -24,9 +24,22 @@ Vai ser vetorizável. 8B -> 64b 2 elements +Without vectorization: +![[Pasted image 20231004115725.png]] + +With vectorization: ![[Pasted image 20231004115135.png]] -| N | Version | Time | CPI | \#I | L1_DMiss | Miss/#I | -| --- | ------- | ---- | --- | --- | -------- | ------- | -| 512 | base() | | | | | | -| 51 | | | | | | | \ No newline at end of file +#### c) + +| N | Version | Time | CPI | \#I | +| --- | -------- | ---- | --- | --- | +| 512 | base_v()| 0.492484818 | 0.91 | 1113554887 | +| 512 | vect() | 0.081604350 | 2.88 | 578275097 | + +>[!note]- Commands run +>module load gcc/9.3.0 +>gcc -O2 -ftree-vectorize -msse4 mmult.c +>srun --partition=cpar perf stat -e cycles,instructions ./a.out + + diff --git a/Images/Pasted image 20231004115725.png b/Images/Pasted image 20231004115725.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4477a80de06ed376a79f7e8032c3b65f7c157b GIT binary patch literal 25475 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