2
votes

I can't observe on my AMD-machine parallel execution of any elementary SAS Base procedures namely :proc sort,proc means , etc, which should run multithreading automatically according to the SAS Base documentation.

What did i do:

  1. I've tried to set-up number of my physical cores(of my AMD machine) in SAS Base manually: options threads cpucount=32 MEMSIZE=630621054720; Then I checked with : proc options group=performance; and observed the resulting settings:
Group=PERFORMANCE 
 CPUCOUNT=32       Specifies the number of processors that thread-enabled applications should assume are available for concurrent processing.
MEMSIZE=212697166080 Specifies the limit on the amount of virtual memory that can be used during a SAS session.
SORTSIZE=53687091200 Specifies the amount of memory that is available to the SORT procedure.
  1. Yet on my another Intel Core i7 4790k machine, the same SAS Base installations runs multithreading perfectly.
  2. Also multicore-execution works perfectly on my AMD ryzen 3970x machine with any other programs and IDEs:
    • C#
    • python
    • matlab

My AMD SAS installation specification: ---Operating System: WX64_WKS. ---Base SAS Software
---SAS/STAT
---SAS/GRAPH
---SAS Enterprise Miner
---SAS Enterprise Guide
---SAS/ACCESS Interface to PC Files
---SAS Enterprise Miner for Desktop
---SAS Workspace Server for Local Access
---High Performance Suite
---SAS Add-in for Microsoft Excel

  • Version SAS Enterprise Guide: 7.100.0.2002
  • Version SAS Base: 9402.0.21456.22399
  • Used Memory: 384 372 736 bytes
  • Client procedure: Running on console
  • Working in WOW64 (32-bit subsystrm): NO
  • Operating as 64-bit version: YES

--- Opearating system ---

  • Name: Windows 8

  • Version: 6.2.0.9200

  • .NET Runtime Version: 4.0.30319.42000 (no service pack)

  • AUTOMATIC SYSHOSTINFOLONG X64_7PRO WIN 6.1.7600 Workstation

  • AUTOMATIC SYSNCPU 32

  • AUTOMATIC SYSPROCESSMODE SAS Workspace Server

  • AUTOMATIC SYSPROCESSNAME Object Server

  • AUTOMATIC SYSPROCNAME

  • AUTOMATIC SYSRC 0

  • AUTOMATIC SYSSCP WIN

  • AUTOMATIC SYSSCPL X64_7PRO

2

2 Answers

3
votes

Enable options msglevel=i then run proc means. The log will tell you if multithreading is being used.

options msglevel=i;

proc means data=sashelp.cars;
run;

Log:

NOTE: Multiple concurrent threads will be used to summarize data.
NOTE: There were 428 observations read from the data set SASHELP.CARS.
NOTE: PROCEDURE MEANS used (Total process time):
      real time           0.04 seconds
      cpu time            0.03 seconds
0
votes

So, experimentally I've derived the maximum allowed number of cores glmselect can employ is: 22. If I run options threads cpucount=23 MEMSIZE=80G REALMEMSIZE=80G; proc glmselect data=table *** I see that calculation is done on a single core. If I submit options threads cpucount=22 then all the 22 cores are employed. My hypothesis: maybe SAS glmselect is adjusting the maximum core-number dependent on my physical memory, which is 128 GB. Yet passing options cpucount=23 MEMSIZE=800G REALMEMSIZE=800G still drew one pathetic сore for calculus. Will be getting in touch with SAS support