- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi,
We are currently upgrading from MKL 2017 to MKL 2019. After the upgrade some of our unit tests fail.
What they do is to solve the system Ax = b, where A and X are sparse with known sparsity patterns. To solve this system we use Pardiso and choose to only calculate certain components of X as we know the others are assumed to be zero. We use the iparm[30] = 3 setting to do this and specify the components of x to solve for with the perm array. However after the upgrade this appears not to work anymore - the output is simply equal to the right hand side. If we change to iparm[30] = 0 it works, but then you don't get the speed benefit of solving for certain components only. Can you please help me see if we are somehow invoking Pardiso wrong or whether there is in fact a bug somewhere, in our code or in Pardiso?
I searched the forum and I could not find other reports, though this post does sound similar in that they use some of the same features and also have problems going from 2017 to later versions.
I have made a minimally reproducible example in C++. I source the mklvars.sh from the 2017.2.174/2019.5.281 distribution and compile with GCC 9.2.0 on Ubuntu 16.04. I have provided both source code, Makefile and the output I get with iparm[30] = 0 or 3 with both MKL 2017 (working) and MKL 2019 (not working - weird/no output).
Hope to hear from you, thanks.
Sincerely,
Filip Rasmussen
- Теги:
- pardiso
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Filip,
please try to disable the two-level factorization algorithm by setting
iparm[23] == 0 and check if the problem will exist on your end. I see no problem on my side with the current version of oneMKL 2021.3:
Enter iparm[30] value MKL v. 2021.0.3
Processor optimization: Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors
a = [3, 7, 6, 3, 8, 5, 9, 4, 7, 8, 2, 9, 3, 9, 9, 9, 9, ]
ia = [0, 3, 6, 10, 14, 17, ]
ja = [0, 1, 3, 0, 1, 4, 0, 2, 3, 4, 0, 1, 3, 4, 0, 3, 4, ]
Calling Pardiso with iparm[30]=1
...Pardiso, phase ==12 is passed...
...Pardiso, phase == 33 is passed...
...Pardiso, phase == -1 is passed...
Pardiso calculation done
x =
0.471053,
0.0552632,
0.557237,
-0.3,
-0.171053,
...Test passed...
it might be the work-around the problem which we are planning to fix into one of the future versions.
-Gennady
Ссылка скопирована
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Filip, thanks for the report. We will check this case and get back soon.
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Any news on this question? I can add that the issue is also reproducible in oneAPI 2021.
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
yes, we were able to reproduce the problem with the latest versions of mkl as well. The issue is escalated and we will keep this thread updated.
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Thanks for looking into this. We have disabled the functionality that depends on this for now as it wasn't super critical anyway. In worst case we can properly replace the implementation with one of the other million sparse linear solvers out there, so it's not super urgent anymore - for us at least.
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Filip,
please try to disable the two-level factorization algorithm by setting
iparm[23] == 0 and check if the problem will exist on your end. I see no problem on my side with the current version of oneMKL 2021.3:
Enter iparm[30] value MKL v. 2021.0.3
Processor optimization: Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors
a = [3, 7, 6, 3, 8, 5, 9, 4, 7, 8, 2, 9, 3, 9, 9, 9, 9, ]
ia = [0, 3, 6, 10, 14, 17, ]
ja = [0, 1, 3, 0, 1, 4, 0, 2, 3, 4, 0, 1, 3, 4, 0, 3, 4, ]
Calling Pardiso with iparm[30]=1
...Pardiso, phase ==12 is passed...
...Pardiso, phase == 33 is passed...
...Pardiso, phase == -1 is passed...
Pardiso calculation done
x =
0.471053,
0.0552632,
0.557237,
-0.3,
-0.171053,
...Test passed...
it might be the work-around the problem which we are planning to fix into one of the future versions.
-Gennady
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi Gennady,
Yeah, we will use this as a workaround for now. Thanks for spending time to investigate this.
- Filip
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Filip,
The ticket is closing. We will update this thread when the fix of the issue would available in the official version of MKL.
Gennady
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Dear Filip,
the problem has been fixed into the last version of oneMKL 2024.2.
Please take a look at the outputs with iparm[30]==0 and 1 below:
MKL v. 2024.0.2
Processor optimization: Intel(R) Advanced Vector Extensions 512 (Intel(R) AVX-512) enabled processors
a = [3, 7, 6, 3, 8, 5, 9, 4, 7, 8, 2, 9, 3, 9, 9, 9, 9, ]
ia = [0, 3, 6, 10, 14, 17, ]
ja = [0, 1, 3, 0, 1, 4, 0, 2, 3, 4, 0, 1, 3, 4, 0, 3, 4, ]
>> Calling Pardiso with iparm[30]=0
...Pardiso, phase ==12 is passed...
...Pardiso, phase == 33 is passed...
...Pardiso, phase == -1 is passed...
Pardiso calculation done
x =
0.471053,
0.0552632,
0.557237,
-0.3,
-0.171053,
...Test passed...
>> Calling Pardiso with iparm[30]=1
...Pardiso, phase ==12 is passed...
...Pardiso, phase == 33 is passed...
...Pardiso, phase == -1 is passed...
Pardiso calculation done
x =
0.471053,
0.0552632,
0.557237,
-0.3,
-0.171053,
...Test passed...
- Подписка на RSS-канал
- Отметить тему как новую
- Отметить тему как прочитанную
- Выполнить отслеживание данной Тема для текущего пользователя
- Закладка
- Подписаться
- Страница в формате печати