Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Dynamic common allocation error

lccostajr
Débutant
2 039 Visites

Hi,

I am tring to use the /Qdyncom (dynamic common allocation option) but I am getting the following error:

forrtl: Allocate Dynamic Common Error - Allocation Failure
The allocation of dynamic common MY_COMMON of size 288000000 in procedure MY_ROUTINE failed
forrtl: severe (585): array not allocated

The common MY_COMMON is composed by a unique big matrix.

What are the limitations of this option?

If I can allocate this matrix using ALLOCATE, why this option fails?

Thanks in advance,

Luiz

0 Compliments
5 Réponses
jimdempseyatthecove
Contributeur émérite III
2 039 Visites

Is this a 32-bit or 64-bit application?

Jim Dempsey

0 Compliments
lccostajr
Débutant
2 039 Visites

It is a 32-bit application.

However, the matrix I am tring to allocate is 288,000,000 (274 Mb).

Would this be a problem for 32-bits applications?

0 Compliments
jimdempseyatthecove
Contributeur émérite III
2 039 Visites

>>However, the matrix I am tring to allocate is 288,000,000 (274 Mb). Would this be a problem for 32-bits applications?

Not if your heap at that time has a node of at least that size (with header).

Set this array dimensions to small as possible, set a break point (or PAUSE) at start of program (should reach here after all dynamic allocations. Using Task manager, Processes tab, what is the Memory (Private Working Set) for your process? Then click on Task Manager Performance tab, then Resource Monitor button, then Memory tab, what are the values for your process?

Jim Dempsey

0 Compliments
jimdempseyatthecove
Contributeur émérite III
2 039 Visites

Also, does this array have an array constructor (initializing expression) associated with it?

Jim Dempsey

0 Compliments
Steven_L_Intel1
Employé
2 039 Visites

Dynamic common is a feature best avoided, since allocatable arrays provide similar functionality, but it should work if used correctly. Are you supplying your own allocation routine or using the default? Can you show us a small example that demonstrates the problem? I often find that trying to reduce the problem to a small example reveals the cause.

0 Compliments
Répondre