- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
Why I am getting error when I use dgemm inside offload section?
PROGRAM MAIN IMPLICIT NONE DOUBLE PRECISION ALPHA, BETA INTEGER I, J INTEGER M,K,N PARAMETER (N=10) DOUBLE PRECISION, allocatable:: A(:), B(:) DOUBLE PRECISION, allocatable:: C(:) allocate(A(N*N*4), B(4*N*N), C(4*N*N)) ALPHA=1.0d0 BETA=1.0d0 DO I = 1, N*2 DO J = 1, N*2 A(10*(I-1) + J) = 0.1*(I+J) B(10*(I-1) + J) = 0.1*(I+J) C(10*(I-1) + J) = 0.1*(I+J) END DO END DO call mydgemm_offload(2, A, B, C, ALPHA, BETA) STOP END SUBROUTINE mydgemm_offload(n, a, b, c, alpha, beta) INTEGER n DOUBLE PRECISION a(*), b(*), c(*) target a, b DOUBLE PRECISION alpha, beta DOUBLE PRECISION, pointer :: pa(:), pb(:) C !dir$ attributes offload:mic :: a, b, c !dir$ attributes offload:mic :: DGEMM pa=>a(2:2+n*n-1) pb=>b(2:2+n*n-1) !dir$ offload_transfer target(mic) in(c:length(100) & alloc_if(.TRUE.) free_if(.FALSE.)) !dir$ offload_transfer target(mic) in(pa:length(n*n) & alloc_if(.TRUE.) free_if(.FALSE.)) !dir$ offload_transfer target(mic) in(pb:length(n*n) & alloc_if(.TRUE.) free_if(.FALSE.)) !dir$ offload begin target(mic) nocopy(pa:length(n*n)) nocopy(pb: & length(n*n)) nocopy(c(1:100)) write(*,*) "before dgemm: c:" write(*,*) c(1:10) write(*,*) "pa:", pa write(*,*) "pb:", pb call DGEMM('N','T', n, n, n, alpha, pa, n, pb, n, beta, c(3), n) write(*,*) "after dgemm: c:" write(*,*) c(1:10) write(*,*) "pa:", pa write(*,*) "pb:", pb write(*,*) "bobo1:" !dir$ end offload write(*,*) "before out(c): c:" write(*,*) c(3:n*n+2) !dir$ offload_transfer target(mic) out(c:length(100) & alloc_if(.FALSE.) free_if(.TRUE.)) write(*,*) "after out(c): c:" write(*,*) c(3:n*n+2) RETURN END
ifort -mkl dgemm_example-offload-5.f
./a.out
before dgemm: c:
0.200000002980232 0.300000011920929 0.400000005960464
0.500000000000000 0.600000023841858 0.699999988079071
0.800000011920929 0.900000035762787 1.00000000000000
1.10000002384186
pa: 0.300000011920929 0.400000005960464 0.500000000000000
0.600000023841858
pb: 0.300000011920929 0.400000005960464 0.500000000000000
0.600000023841858
after dgemm: c:
0.200000002980232 0.300000011920929 0.740000013113022
0.920000018477440 1.02000004231930 1.22000002145767
0.800000011920929 0.900000035762787 1.00000000000000
1.10000002384186
pa: 0.300000011920929 0.400000005960464 0.500000000000000
0.600000023841858
pb: 0.300000011920929 0.400000005960464 0.500000000000000
0.600000023841858
bobo1:
offload error: process on the device 0 unexpectedly exited with code 0
The thing is if I do not use DGEMM inside the offload section, the code works fine. But when there is DGEMM, I got offload error.
Anybody can help? Thanks,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Add a in(n) clause to the offload on line 46.
When you call dgemm, the variables alpha, beta and n are referenced in the code and by default become inout.
Alpha and beta are variables passed as parameters, and can be dealt with. "n" is a parameter, in other words, a constant. When a write operation is attempted on it you get an error. The write is caused by the default inout of n.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Add a in(n) clause to the offload on line 46.
When you call dgemm, the variables alpha, beta and n are referenced in the code and by default become inout.
Alpha and beta are variables passed as parameters, and can be dealt with. "n" is a parameter, in other words, a constant. When a write operation is attempted on it you get an error. The write is caused by the default inout of n.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Rajiv,
I see. Thank you very much.
Bobo
![](/skins/images/8B5EA638CA3587CA763EE9EF53643DD4/responsive_peak/images/icon_anonymous_message.png)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page