Мелкозернистый (скалярный) параллелизм
При исполнении программы регулярно встречаются ситуации, когда исходные данные для i- операции вырабатываются заранее, например, при выполнении (i - 2)- или (i - 3)- операции. Тогда при соответствующем построении вычислительно системы можно совместить во времени выполнение i- операции с выполнением (i - 1)- , (i - 2)- , ... операций. В таком понимании скалярный параллелизм похож на параллелизм независимых ветве, однако они очень отличаются длино ветвей и требуют разных вычислительных систем. Это представлено на рис.2.2.
Рис. 2.2. Предварительная подготовка операндов для команды i.
Рассмотрим пример. Пусть имеется программа для расчета ширины запрещенной зоны транзистора и в этой программе есть участок — определение энергии примесей по формуле:
Тогда последовательная программа для вычисления Е будет такой:
Fl = m * q *q* q * q * % * %
F2 = 8*e0*eo*e*e*h*h
E = F1/F2
Здесь имеется параллелизм, но при записи на Фортране (показано выше) или Ассемблере у нас нет возможности явно отразить его. Явное представление параллелизма для вычисления Е задается ЯПФ(рис. 2.3.).
Ширина параллелизма первого яруса этой ЯПФ (первый такт) сильно зависит от числа операций, включаемых в состав ЯПФ. Так, в примере для li = 4 параллелизм первого такта равен двум, для li = 12 параллелизм равен пяти.
Поскольку это параллелизм очень коротких ветвей и с помощью операторов FORK и JOIN описан быть не может (вся программа будет состоять в основном из этих операторов), данный вид параллелизма должен автоматически выявляться аппаратуро ЭВМ в процессе выполнения машинно программы.
Для скалярного параллелизма часто используют термин мелкозернистый параллелизм (МЗП), в отличие от крупнозернистого параллелизма (КЗП), к которому относят векторный параллелизм и параллелизм независимых ветве.
Дата добавления: 2015-08-21; просмотров: 1266;