source: DCWoRMS/branches/coolemall/src/test/appProfConverter/dcworms/HardwareProfile.java @ 1334

Revision 1334, 4.2 KB checked in by wojtekp, 11 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package test.appProfConverter.dcworms;
2import java.util.HashMap;
3import java.util.Map;
4
5import schedframe.resources.computing.ComputingResource;
6import schedframe.resources.computing.Core;
7import schedframe.resources.computing.Node;
8import schedframe.resources.computing.profiles.energy.power.PState;
9import schedframe.resources.units.PEUnit;
10import schedframe.resources.units.ProcessingElements;
11import schedframe.resources.units.ResourceUnit;
12import schedframe.resources.units.ResourceUnitName;
13import schedframe.resources.units.StandardResourceUnitName;
14
15public class HardwareProfile {
16
17        public String componentId;
18        public Processor proc;
19        public Memory mem;
20        public Network net;
21
22        public HardwareProfile(Map<ResourceUnitName, ResourceUnit> resources) {
23               
24                PEUnit peUnit = (PEUnit) resources.get(StandardResourceUnitName.PE);
25                schedframe.resources.computing.Processor processor = null;
26                Node node = null;
27                int cores = 0;
28                if(peUnit instanceof ProcessingElements){
29                        ProcessingElements pes = (ProcessingElements) peUnit;
30                        for (ComputingResource compResource : pes) {
31                                if(compResource instanceof Core) {
32                                        Core core = (Core) compResource;
33                                        processor = core.getProcessor();
34                                        node = processor.getNode();
35                                        cores = pes.getAmount();
36                                        break;
37                                } else if (compResource instanceof schedframe.resources.computing.Processor) {
38                                        processor = (schedframe.resources.computing.Processor) compResource;
39                                        node = processor.getNode();
40                                        cores = processor.getCores().size();
41                                        break;
42                                }
43                        }
44                }
45                this.componentId = node.getResourceCharacteristic().getParameters().get("product").get(0).getContent();
46
47                double maxClockSpeed = Double.valueOf(processor.getResourceCharacteristic().getParameters().get("speed").get(0).getContent());
48                PhaseState pstates[] = new PhaseState[processor.getPowerInterface().getSupportedPStates().size()];
49                Map<Double, PhaseState> pstate_map = new HashMap<Double, PhaseState>();
50                int i = 0;
51                for (String pStateName: processor.getPowerInterface().getSupportedPStates().keySet()) {
52                        PState pState =  processor.getPowerInterface().getSupportedPStates().get(pStateName);
53                        PhaseState ps = new PhaseState(i, pState.getFrequency(), pState.getVoltage(), pState.getLoadPowerUsage().get(25.0), pState.getLoadPowerUsage().get(100.0));
54                        pstates[i] = ps;
55                        pstate_map.put(ps.frequency, ps);
56                }
57                this.proc = new Processor(maxClockSpeed, cores, pstates, pstate_map);
58               
59                int capacity = 0;
60                schedframe.resources.units.Memory memory;
61                try {
62                        memory = (schedframe.resources.units.Memory) resources.get(StandardResourceUnitName.PE);
63                        capacity = memory.getAmount();
64                } catch (Exception e) {
65                        try {
66                                memory = node.getMemory();
67                                capacity = memory.getAmount();
68                        } catch (NoSuchFieldException e2) {
69                                // TODO Auto-generated catch block
70                                e2.printStackTrace();
71                        }
72                }
73                this.mem = new Memory(capacity);
74               
75                this.net = new Network(1000);
76               
77        }
78       
79        public HardwareProfile(Node node) {
80               
81                this.componentId = node.getResourceCharacteristic().getParameters().get("product").get(0).getContent();
82               
83                schedframe.resources.computing.Processor processor = node.getProcessors().get(0);
84                double maxClockSpeed = Double.valueOf(processor.getResourceCharacteristic().getParameters().get("speed").get(0).getContent());
85                int cores = processor.getCores().size();
86                PhaseState pstates[] = new PhaseState[processor.getPowerInterface().getSupportedPStates().size()];
87                Map<Double, PhaseState> pstate_map = new HashMap<Double, PhaseState>();
88                int i = 0;
89                for (String pStateName: processor.getPowerInterface().getSupportedPStates().keySet()) {
90                        PState pState =  processor.getPowerInterface().getSupportedPStates().get(pStateName);
91                        PhaseState ps = new PhaseState(i, pState.getFrequency(), pState.getVoltage(), pState.getLoadPowerUsage().get(25.0), pState.getLoadPowerUsage().get(100.0));
92                        pstates[i] = ps;
93                        pstate_map.put(ps.frequency, ps);
94                }
95               
96                this.proc = new Processor(maxClockSpeed, cores, pstates, pstate_map);
97               
98                int capacity = 0;
99                schedframe.resources.units.Memory memory;
100                try {
101                        memory = node.getMemory();
102                        capacity = memory.getAmount();
103                } catch (NoSuchFieldException e) {
104                        // TODO Auto-generated catch block
105                        e.printStackTrace();
106                }
107                this.mem = new Memory(capacity);
108               
109                this.net = new Network(1000);
110        }
111
112
113}
Note: See TracBrowser for help on using the repository browser.