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
Beginner
921 Views

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 Kudos
5 Replies
jimdempseyatthecove
Honored Contributor III
921 Views

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

Jim Dempsey

0 Kudos
lccostajr
Beginner
921 Views

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 Kudos
jimdempseyatthecove
Honored Contributor III
921 Views

>>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 Kudos
jimdempseyatthecove
Honored Contributor III
921 Views

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

Jim Dempsey

0 Kudos
Steven_L_Intel1
Employee
921 Views

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 Kudos
Reply