class TTv2IdealizedPreset(UnitCellRPUConfig): """Configuration using TTv2 with :class:`~aihwkit.simulator.presets.devices.IdealizedPresetDevice`. See :class:`~aihwkit.simulator.configs.devices.BufferedTransferCompound` for details on TTv2-like optimizers. The default peripheral hardware (:class:`~aihwkit.simulator.presets.utils.PresetIOParameters`) and analog update (:class:`~aihwkit.simulator.presets.utils.PresetUpdateParameters`) configuration is used otherwise. """ device: UnitCell = field( default_factory=lambda: BufferedTransferCompound( unit_cell_devices=[IdealizedPresetDevice(), IdealizedPresetDevice()], transfer_forward=PresetIOParameters(), transfer_update=PresetUpdateParameters(), transfer_every=1.0, units_in_mbatch=True, )) forward: IOParameters = field(default_factory=PresetIOParameters) backward: IOParameters = field(default_factory=PresetIOParameters) update: UpdateParameters = field(default_factory=PresetUpdateParameters)
class Idealized4Preset(UnitCellRPUConfig): """Preset configuration using four Idealized devices per cross-point (:class:`~aihwkit.simulator.presets.devices.IdealizedPresetDevice`), where both are updated with random selection policy for update. See :class:`~aihwkit.simulator.configs.devices.VectorUnitCell` for more details on multiple devices per cross-points. The default peripheral hardware (:class:`~aihwkit.simulator.presets.utils.PresetIOParameters`) and analog update (:class:`~aihwkit.simulator.presets.utils.PresetUpdateParameters`) configuration is used otherwise. """ device: UnitCell = field(default_factory=lambda: VectorUnitCell( unit_cell_devices=[ IdealizedPresetDevice(), IdealizedPresetDevice(), IdealizedPresetDevice(), IdealizedPresetDevice() ], update_policy=VectorUnitCellUpdatePolicy.SINGLE_RANDOM)) forward: IOParameters = field(default_factory=PresetIOParameters) backward: IOParameters = field(default_factory=PresetIOParameters) update: UpdateParameters = field(default_factory=PresetUpdateParameters)
class MixedPrecisionIdealizedPreset(DigitalRankUpdateRPUConfig): """Configuration using Mixed-precision with class:`~aihwkit.simulator.presets.devices.IdealizedPresetDevice`. See class:`~aihwkit.simulator.configs.devices.MixedPrecisionCompound` for details on the mixed precision optimizer. The default peripheral hardware (:class:`~aihwkit.simulator.presets.utils.PresetIOParameters`) and analog update (:class:`~aihwkit.simulator.presets.utils.PresetUpdateParameters`) configuration is used otherwise. """ device: DigitalRankUpdateCell = field( default_factory=lambda: MixedPrecisionCompound( device=IdealizedPresetDevice(), )) forward: IOParameters = field(default_factory=PresetIOParameters) backward: IOParameters = field(default_factory=PresetIOParameters) update: UpdateParameters = field(default_factory=PresetUpdateParameters)
from aihwkit.simulator.presets.devices import (ReRamSBPresetDevice, ReRamESPresetDevice, CapacitorPresetDevice, EcRamPresetDevice, IdealizedPresetDevice) plt.ion() # ReRam based on ExpStep plot_device(ReRamESPresetDevice(), n_steps=1000) plot_device_compact(ReRamESPresetDevice(), n_steps=1000) # ReRam based on SoftBounds plot_device(ReRamSBPresetDevice(), n_steps=1000) plot_device_compact(ReRamSBPresetDevice(), n_steps=1000) # Capacitor plot_device(CapacitorPresetDevice(), n_steps=400) plot_device_compact(CapacitorPresetDevice(), n_steps=400) # ECRAM plot_device(EcRamPresetDevice(), n_steps=1000) plot_device_compact(EcRamPresetDevice(), n_steps=1000) # Idealized plot_device(IdealizedPresetDevice(), n_steps=10000) plot_device_compact(IdealizedPresetDevice(), n_steps=10000) plt.show()
ReRamSBPresetDevice, ReRamESPresetDevice, CapacitorPresetDevice, EcRamPresetDevice, IdealizedPresetDevice, EcRamMOPresetDevice, PCMPresetUnitCell, ) plt.ion() # Note alternatively one can use plot_device_compact for a more compact # plot. # Idealized plot_device(IdealizedPresetDevice(), n_steps=10000) # ReRam based on ExpStep plot_device(ReRamESPresetDevice(), n_steps=1000) # ReRam based on SoftBounds plot_device(ReRamSBPresetDevice(), n_steps=1000) # Capacitor plot_device(CapacitorPresetDevice(), n_steps=400) # ECRAM plot_device(EcRamPresetDevice(), n_steps=1000) # Mo-ECRAM plot_device(EcRamMOPresetDevice(), n_steps=8000)