BookmarkSubscribeRSS Feed
user24feb
Barite | Level 11


I migrated from SAS 9.2 to 9.4 and the very same optimiziation problem (proc optmodel) that worked just fine under 9.2 gives an "out-of-memory"-error under 9.4. The program still works, but can only process problems which are about 75 % (in terms of "basis-datasets") smaller than before. The proc options option=memsize spits out 2 GB which is the same amount as before. Any ideas what I didn´t think of?

4 REPLIES 4
LinusH
Tourmaline | Level 20

In cases like this, one need to ask if there are any other changes in the environment, such as if the HW is the same, OS version/setup/configuration, etc.

If you still have access to 9.2, try to run the exact the same code using the same data set in both versions, using the FULLSTIMER option, that could give you some hints of what's going on.

Data never sleeps
user24feb
Barite | Level 11

Thanks for your answer. Unfortunately the old version and all the settings are gone. (I wanted a "clean" environment for the new version to avoid any interference from the former version and used the uninstall-wizard.) I am pretty sure that the Windows settings were left unchanged during installation (but I have to admid I can´t prove this).

Still, this is a surprise. I thought that - apart from memsize - there is no cure for insufficient memory when using optmodel. Is there a list of additional options either in SAS or Windows that optimize the optmodel-environment?

gergely_batho
SAS Employee

Not sure if this helps: try to specify nothreads option. In 9.2 model generation was singe-threaded.

At which phase do you have the error message? At problem solving? Is it a MILP?

user24feb
Barite | Level 11

I did change some options (including the NoThreads option & changing RealMemSize, MaxMemQuery), but without success.

The model is a simple (dual) Simplex model. No integers. The error occurs right after the "Solve" command.

The log looks like:

325        Proc Optmodel;
1480                                                       The SAS System                          16:32 Thursday, February 27, 2014

326          Set <Str,Str> m_w;
326      !                      Num M{m_w};
327          Read Data Daten.Cost Into m_w=[R S] M=M1;
NOTE: There were 210000 observations read from the data set DATEN.Cost.
328          Num K{m_w};
329          Read Data Daten.Cost Into m_w=[R S] K=Cost_R;
NOTE: There were 210000 observations read from the data set DATEN.Cost.
330          Set R=Setof{<m,w> in m_w} m;
330      !                                        Set S=Setof{<m,w> in m_w} w;
331          Set <Str,Str> j_w;
331      !                      Num NM{j_w};
332          Read Data Daten.NM Into j_w=[W S] NM=M1;
NOTE: There were 1422000 observations read from the data set DATEN.NM.
333          Set N=Setof{<j,w> in j_w} j;
334          Num Demand{N};
335          Read Data Daten.Demand Into Demand=M;
NOTE: 9 non-missing values were discarded due to invalid target indices.
NOTE: There were 246 observations read from the data set DATEN.Demand.
336          Num Supply{R};
337          Read Data Daten.Supply Into Supply=M;
NOTE: 191 non-missing values were discarded due to invalid target indices.
NOTE: There were 226 observations read from the data set DATEN.Supply.
338          Var X{N,S}>=0;
339          Con Cns_S{m in R}:Sum{j in N,w in S}X[j,w]*M[m,w]*NM[j,w]<=Supply;
340          Con Cns_D{j in N}:Sum{m in R,w in S}X[j,w]*M[m,w]*NM[j,w]=Demand;
341          Min Ob=Sum{j in N,m in R,w in S}X[j,w]*M[m,w]*K[m,w]*NM[j,w];
342          *Performance NThreads=4;
343          Solve;
NOTE: Problem generation will use 4 threads.
ERROR: Out of memory during problem generation.
NOTE: Unable to create problem instance due to previous errors.

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 4 replies
  • 1019 views
  • 0 likes
  • 3 in conversation