Skip to content
Open
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
03b9dd0
[ArrayPartition] 1 dimensional partition tests
josh-anderegg Aug 12, 2026
5ea56e6
[ArrayPartition] 2 dimensional partition tests
josh-anderegg Aug 12, 2026
0419f17
[ArrayPartition] Incorporate integration tests into existing test har…
josh-anderegg Aug 12, 2026
5717ca5
[ArrayPartition] Read and erase pragmas.
josh-anderegg Aug 13, 2026
2b83ab2
[ArrayPartition] Test ensuring the the pragmas is erased after array …
josh-anderegg Aug 13, 2026
5502e04
[ArrayPartition] Enable for reading of String literals from .ll files.
josh-anderegg Aug 13, 2026
f7177ea
Merge branch 'array-partition/integration-tests' into array-partition…
josh-anderegg Aug 13, 2026
2bbea0f
[ArrayPartition] correctly wrap debug output
josh-anderegg Aug 17, 2026
a379789
[ArrayPartition] Minimization of run function
josh-anderegg Aug 17, 2026
5a6b937
[ArrayPartition] Split allocas according to pragma
josh-anderegg Aug 17, 2026
1c58b09
[ArrayPartition] Rewrite all accesses to partitioned array to match p…
josh-anderegg Aug 17, 2026
41948c6
[ArrayPartition] compile.sh complete array-partition pipeline in place
josh-anderegg Aug 17, 2026
c74449f
[ArrayPartition] Include correct 2d tests
josh-anderegg Aug 17, 2026
ef66c81
[ArrayPartition] Move pragma related unit test in correct directory
josh-anderegg Aug 17, 2026
e74dcb9
[ArrayPartition] Formatted test files
josh-anderegg Aug 17, 2026
daae0aa
[ArrayPartition] Test and fix 0 array accesses
josh-anderegg Aug 18, 2026
312dad6
[ArrayPartition] Better comments/documentation
josh-anderegg Aug 18, 2026
b17fd8d
[ArrayPartition] Push memory dependency analysis back after partitioning
josh-anderegg Aug 18, 2026
d20d9f4
[ArrayPartition] Comment formatting correction
josh-anderegg Aug 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include <stdlib.h>
#define N 32
#include "dynamatic/Integration.h"

// NOTE: Simple test for 1d array halve partition
void test_1d_partition(const int A[N], const int B[N], const int C[N],
int result[N]) {
#pragma DYN array_partition array = intermediate dimension = 1 style = \
block factor = 2
int intermediate[N];
for (int i = 0; i < N; ++i) {
intermediate[i] = A[i] * B[i];
}
for (int i = 0; i < N; i++) {
result[i] = intermediate[i] * C[i];
}
}

int main(void) {
int A[N];
int B[N];
int C[N];
int result[N];
for (int i = 0; i < N; ++i) {
A[i] = rand() % 100;
B[i] = rand() % 100;
C[i] = rand() % 100;
}
CALL_KERNEL(test_1d_partition, A, B, C, result);
return 0;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include <stdlib.h>
#define N 32
#include "dynamatic/Integration.h"

// NOTE: Test for testing larger factors
void test_1d_partition_f4(const int A[N], const int B[N], const int C[N],
int result[N]) {
#pragma DYN array_partition array = intermediate dimension = 1 style = \
block factor = 4
int intermediate[N];
for (int i = 0; i < N; ++i) {
intermediate[i] = A[i] * B[i];
}
for (int i = 0; i < N; i++) {
result[i] = intermediate[i] * C[i];
}
}

int main(void) {
int A[N];
int B[N];
int C[N];
int result[N];
for (int i = 0; i < N; ++i) {
A[i] = rand() % 100;
B[i] = rand() % 100;
C[i] = rand() % 100;
}
CALL_KERNEL(test_1d_partition_f4, A, B, C, result);
return 0;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include <stdlib.h>
#define N 67
#include "dynamatic/Integration.h"

// NOTE: Test for division with remainder after doing N / factor
void test_1d_partition_fu(const int A[N], const int B[N], const int C[N],
int result[N]) {
#pragma DYN array_partition array = intermediate dimension = 1 style = \
block factor = 8
int intermediate[N];
for (int i = 0; i < N; ++i) {
intermediate[i] = A[i] * B[i];
}
for (int i = 0; i < N; i++) {
result[i] = intermediate[i] * C[i];
}
}

int main(void) {
int A[N];
int B[N];
int C[N];
int result[N];
for (int i = 0; i < N; ++i) {
A[i] = rand() % 100;
B[i] = rand() % 100;
C[i] = rand() % 100;
}
CALL_KERNEL(test_1d_partition_fu, A, B, C, result);
return 0;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#include <stdlib.h>
#define ROWS 32
#define COLS 64
#include "dynamatic/Integration.h"

// NOTE: Test for outer partition of 2d array, i.e. A[N][M] -> A1[N/2][M],
// A2[N/2][M]
void test_2d_partition(const int A[ROWS][COLS], const int B[ROWS][COLS],
const int C[ROWS][COLS], int result[ROWS][COLS]) {
#pragma DYN array_partition array = intermediate dimension = 1 style = \
block factor = 2
int intermediate[ROWS][COLS];
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
intermediate[i][j] = A[i][j] * B[i][j];
}
}
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
result[i][j] = intermediate[i][j] * C[i][j];
}
}
}

int main(void) {
int A[ROWS][COLS];
int B[ROWS][COLS];
int C[ROWS][COLS];
int result[ROWS][COLS];
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
A[i][j] = rand() % 100;
B[i][j] = rand() % 100;
C[i][j] = rand() % 100;
}
}
CALL_KERNEL(test_2d_partition, A, B, C, result);
return 0;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#include <stdlib.h>
#define ROWS 32
#define COLS 64
#include "dynamatic/Integration.h"

// NOTE: Test for inner partition of 2d array, i.e. A[N][M] -> A1[N][M/2],
// A2[N][M/2]
void test_2d_partition_inner(const int A[ROWS][COLS], const int B[ROWS][COLS],
const int C[ROWS][COLS], int result[ROWS][COLS]) {
#pragma DYN array_partition array = intermediate dimension = 2 style = \
block factor = 2
int intermediate[ROWS][COLS];
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
intermediate[i][j] = A[i][j] * B[i][j];
}
}
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
result[i][j] = intermediate[i][j] * C[i][j];
}
}
}

int main(void) {
int A[ROWS][COLS];
int B[ROWS][COLS];
int C[ROWS][COLS];
int result[ROWS][COLS];
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
A[i][j] = rand() % 100;
B[i][j] = rand() % 100;
C[i][j] = rand() % 100;
}
}
CALL_KERNEL(test_2d_partition_inner, A, B, C, result);
return 0;
}
Loading
Loading