Impact of Architecture and Technology for Extreme Scale on Software and Algorithm Design