[1334] | 1 | package test.appProfConverter.dcworms; |
---|
| 2 | import java.util.HashMap; |
---|
| 3 | import java.util.Map; |
---|
| 4 | |
---|
| 5 | import schedframe.resources.computing.ComputingResource; |
---|
| 6 | import schedframe.resources.computing.Core; |
---|
| 7 | import schedframe.resources.computing.Node; |
---|
| 8 | import schedframe.resources.computing.profiles.energy.power.PState; |
---|
| 9 | import schedframe.resources.units.PEUnit; |
---|
| 10 | import schedframe.resources.units.ProcessingElements; |
---|
| 11 | import schedframe.resources.units.ResourceUnit; |
---|
| 12 | import schedframe.resources.units.ResourceUnitName; |
---|
| 13 | import schedframe.resources.units.StandardResourceUnitName; |
---|
| 14 | |
---|
| 15 | public 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 | } |
---|