Fortran Fortran OpenMP parallelization and writing in multiple files.

Click For Summary
The discussion centers around an issue with writing data to files in a multi-threaded environment using OpenMP. The user encounters an error indicating that a file is already opened in another unit. The code attempts to open individual files for each thread using a unique unit number derived from the thread number. However, the problem arises because the file name does not change with each thread, leading to multiple threads trying to access the same file simultaneously. The suggestion made is to ensure that each thread writes to a distinct file by modifying the file name accordingly, thus preventing conflicts and errors related to file access.
eleteroboltz
Messages
7
Reaction score
0
Hello.

I'm attempting to write some data in different files (each thread write in each file), but I'm getting an error saying: 'File already opened in another unit'. I'm using the function OMP_get_thread_num() from OpenMP library in order to open individual files in individual threads.

Code:
!$OMP PARALLEL DEFAULT(PRIVATE) SHARED(PeVet,num,eta,xi,p) FIRSTPRIVATE(Temp,Told)
!$OMP DO
DO q=1,5
    Pe = PeVet(q)

    LocalThread = 22 +  OMP_get_thread_num()
    WRITE(FileName,'(a,i4.4,a,i4.4,a,i2.1,a)') 'Velocity-Imax',Imax,'Jmax',Jmax,'Kn',p,'.dat'
    OPEN(UNIT=LocalThread,FILE=FileName)

    DO j=1,jmax
        ud(j)= (3.d0/2.d0)*(1.d0+8*Kn*bV-eta(j)**2)/(1.d0+12*Kn*bV)
        Write(LocalThread,*) eta(j), ud(j)
    END DO
    CLOSE(LocalThread)
END DO
!$OMP END DO
!$OMP END PARALLEL

I don't know what I'm doing wrong...
Please, help me guys.
Thank you in advance
 
Last edited:
Technology news on Phys.org
It looks like the error is meaningful, isn't it?

I mean, you may be making sure that the unit number is different in every thread, but it does not look like you are making sure that the file name become different...in other words, it looks like you open the file the first time around from the first thread that gets there...and THEN, you are attempting to open the same file from another thread with a different unit number...follow?

are you trying to write to different files or the same? or what?
 
Gsal, you are totally right.

Thank you
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 5 ·
Replies
5
Views
5K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 8 ·
Replies
8
Views
8K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K