Current-Driven Magnetic Devices for Non-Volatile Logic and Memory