Я пытаюсь реализовать решатель линейного уравнения AX=B в GF(256) с использованием исключения Гаусса в Vitis HLS, и я хочу оптимизировать свой код/дизайн для лучшей задержки и производительности. Я новичок в HLS поэтому я пробовал использовать прагмы для развертывания или конвейерных циклов, но задержка, похоже, не сильно изменилась. Может ли кто-нибудь помочь мне найти, как я могу распараллелить определенные вычисления и повысить производительность?
Вот мой код:
Код: Выделить всё
void gaussian_elimination_solve(gal256 A[N][N], gal256 b[N], gal256 x[N]) {
// Augment matrix A with vector b(b will become the last column of A)
int i,j,k;
gal256 augmented[N][N + 1];
augment:
for (i = 0; i < N; i++) {
#pragma HLS LOOP_TRIPCOUNT min=N max=N
for (j = 0; j < N+1; j++) {
#pragma HLS LOOP_TRIPCOUNT min=N+1 max=N+1
augmented[i][j] = A[i][j];
}
augmented[i][N] = b[i];
}
partial_pivot:
for (i = 0; i < N; i++) {
if (augmented[i][i] == 0) {
for (j = i + 1; j < N; j++) {
#pragma HLS LOOP_TRIPCOUNT min=N max=N
for (int k = i; k
Источник: [url]https://stackoverflow.com/questions/78145950/optimizing-gaussian-elimination-using-high-level-synthesis[/url]
Мобильная версия