Я пытаюсь реализовать решатель линейного уравнения 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]
Я пытаюсь реализовать решатель линейного уравнения AX=B в GF(256) с использованием исключения Гаусса в Vitis HLS, и я хочу оптимизировать свой код/дизайн для лучшей задержки и производительности. Я новичок в HLS поэтому я пробовал использовать прагмы для развертывания или конвейерных циклов, но задержка, похоже, не сильно изменилась. Может ли кто-нибудь помочь мне найти, как я могу распараллелить определенные вычисления и повысить производительность? Вот мой код: [code]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
Метод исключения Гаусса-Жордана — широко используемый и удобный метод. В матричных вычислениях этот метод находит широкое применение. Однако в библиотеках Python нет встроенной функции для этого метода. Спроектировать такую функцию не сложно....
Я пытаюсь написать функцию gaussian_elim, которая принимает массив A n x n numpy и массив b n x 1 и выполняет исключение по Гауссу для расширенной матрицы . Он должен возвращать матрицу размера n x (n+1) вида M = , где U — верхняя треугольная...
Я пытаюсь написать функцию gaussian_elim, которая принимает массив A n x n numpy и массив b n x 1 и выполняет исключение по Гауссу для расширенной матрицы . Он должен возвращать матрицу размера n x (n+1) вида M = , где U — верхняя треугольная...
Пример изображения
У меня есть 2 изображения с разной интенсивностью, называемыми низкой и высокой. Каковы этапы предварительной обработки для получения комбинированного изображения, как показано на результирующем изображении?
Я попробовал что-то...