I am using MKL to solve a 2D Cartesian Poisson Problem with fixed Neumann boundary conditions.
I have two questions:
(i) based on experiments, I have noticed that the runtime/complexity depends both on (1) the number of intervals and (2) the magnitude of the domain (ax, bx, ay, by). Is this always the case? I expected (1) to be the main parameter which affects performance. I guess this is because internally the algorithm uses an internal grid. If this is the case is there way to make it more granular to increase performance?
(ii) when profiling my code, most of the execution time is spent on one MKL function dgemm():
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
72.06 564.09 564.09 dgemm_
despite that the number of intervals is small, specifically 196 x 196. Why would that be? Is there a way to speed up my code?
Thanks very much in advance.
Yes, both of these parameters affect the performance. There is only one way to speed up the code in this case, to link with threaded MKL version (mkl_intel_thread.lib).