Skip to content

Commit 3d2b2f8

Browse files
committed
wip cpy
1 parent 1674b56 commit 3d2b2f8

File tree

1 file changed

+100
-2
lines changed

1 file changed

+100
-2
lines changed

ggml/src/ggml-tp/ggml-tp.cpp

Lines changed: 100 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1696,7 +1696,105 @@ static void do_init(size_t node_index, ggml_tensor * tensor, ggml_tensor_paralle
16961696
set_src_tensor(1, GGML_TP_SPLIT_NONE);
16971697
}
16981698
else {
1699-
GGML_ABORT("Tensor %s has unsupported op %s for tensor parallelism, src0 is split.\n", tensor->name, ggml_op_name(tensor->op));
1699+
// GGML_ABORT("Tensor %s has unsupported op %s for tensor parallelism, src0 is split.\n", tensor->name, ggml_op_name(tensor->op));
1700+
1701+
if (src0_extra->split_tensors == GGML_TP_SPLIT_VIEW) {
1702+
auto view_src = src0;
1703+
while (view_src->view_src) {
1704+
view_src = view_src->view_src;
1705+
}
1706+
auto view_src_extra = (ggml_tensor_parallel_extra *)view_src->extra;
1707+
if (tensor->ne[0] == view_src->ne[0]) {
1708+
if (view_src_extra->split_tensors == GGML_TP_SPLIT_COLUMNS) {
1709+
create_column_split_tensors_for(src0, src0_extra);
1710+
ggml_backend_tp_finish_init_tensor(src0);
1711+
}
1712+
else if (view_src_extra->split_tensors == GGML_TP_SPLIT_ROWS) {
1713+
create_row_split_tensors_for(src0, src0_extra);
1714+
ggml_backend_tp_finish_init_tensor(src0);
1715+
}
1716+
else {
1717+
GGML_ABORT("Tensor %s has unsupported op %s for tensor parallelism, src0 is split as %d but requested to be split as %d.\n", tensor->name, ggml_op_name(tensor->op), src0_extra->split_tensors, GGML_TP_SPLIT_NONE);
1718+
}
1719+
}
1720+
else if (tensor->ne[0] > view_src->ne[0]) {
1721+
create_column_split_tensors_for(src0, src0_extra);
1722+
ggml_backend_tp_finish_init_tensor(src0);
1723+
}
1724+
else {
1725+
create_row_split_tensors_for(src0, src0_extra);
1726+
ggml_backend_tp_finish_init_tensor(src0);
1727+
}
1728+
}
1729+
1730+
// create_column_split_tensors_for(src0, src0_extra);
1731+
// ggml_backend_tp_finish_init_tensor(src0);
1732+
ensure_rejoined(tensor, src0);
1733+
1734+
create_default_tensors();
1735+
set_src_tensor(0, GGML_TP_SPLIT_NONE);
1736+
set_src_tensor(1, GGML_TP_SPLIT_NONE);
1737+
1738+
1739+
1740+
// auto view_src = src0;
1741+
// while (view_src->view_src) {
1742+
// view_src = view_src->view_src;
1743+
// ensure_rejoined(tensor, view_src);
1744+
// }
1745+
// auto view_src_extra = (ggml_tensor_parallel_extra *)view_src->extra;
1746+
1747+
// if (src0_extra->split_tensors == GGML_TP_SPLIT_VIEW) {
1748+
// if (src0->ne[0] == view_src->ne[0]) {
1749+
// if (view_src_extra->split_tensors == GGML_TP_SPLIT_COLUMNS) {
1750+
// create_column_split_tensors_for(src0, src0_extra);
1751+
// // set_src_tensor_for(src0, src0_extra, 0, GGML_TP_SPLIT_COLUMNS);
1752+
// ggml_backend_tp_finish_init_tensor(src0);
1753+
// }
1754+
// else if (view_src_extra->split_tensors == GGML_TP_SPLIT_ROWS) {
1755+
// create_row_split_tensors_for(src0, src0_extra);
1756+
// // set_src_tensor_for(src0, src0_extra, 0, GGML_TP_SPLIT_ROWS);
1757+
// ggml_backend_tp_finish_init_tensor(src0);
1758+
// }
1759+
// else {
1760+
// GGML_ABORT("Tensor %s has unsupported op %s for tensor parallelism, src0 is split as %d but requested to be split as %d.\n", tensor->name, ggml_op_name(tensor->op), view_src_extra->split_tensors, GGML_TP_SPLIT_NONE);
1761+
// }
1762+
// }
1763+
// else
1764+
// if (src0->ne[0] > view_src->ne[0]) {
1765+
// create_column_split_tensors_for(src0, src0_extra);
1766+
// // set_src_tensor_for(src0, src0_extra, 0, GGML_TP_SPLIT_COLUMNS);
1767+
// ggml_backend_tp_finish_init_tensor(src0);
1768+
// }
1769+
// else {
1770+
// create_row_split_tensors_for(src0, src0_extra);
1771+
// // set_src_tensor_for(src0, src0_extra, 0, GGML_TP_SPLIT_ROWS);
1772+
// ggml_backend_tp_finish_init_tensor(src0);
1773+
// }
1774+
// }
1775+
1776+
1777+
// if (tensor->ne[0] == view_src->ne[0]) {
1778+
// if (view_src_extra->split_tensors == GGML_TP_SPLIT_COLUMNS) {
1779+
// create_column_split_tensors();
1780+
// set_src_tensor(0, GGML_TP_SPLIT_COLUMNS);
1781+
// }
1782+
// else if (view_src_extra->split_tensors == GGML_TP_SPLIT_ROWS) {
1783+
// create_row_split_tensors();
1784+
// set_src_tensor(0, GGML_TP_SPLIT_ROWS);
1785+
// }
1786+
// else {
1787+
// GGML_ABORT("Tensor %s has unsupported op %s for tensor parallelism, src0 is split as %d but requested to be split as %d.\n", tensor->name, ggml_op_name(tensor->op), view_src_extra->split_tensors, GGML_TP_SPLIT_NONE);
1788+
// }
1789+
// }
1790+
// else if (tensor->ne[0] > view_src->ne[0]) {
1791+
// create_column_split_tensors();
1792+
// set_src_tensor(0, GGML_TP_SPLIT_COLUMNS);
1793+
// }
1794+
// else {
1795+
// create_row_split_tensors();
1796+
// set_src_tensor(0, GGML_TP_SPLIT_ROWS);
1797+
// }
17001798
}
17011799
break;
17021800
}
@@ -2524,7 +2622,7 @@ static bool ggml_backend_tp_device_supports_op(ggml_backend_dev_t dev, const str
25242622
return true;
25252623
}
25262624

2527-
return src0->ne[1] >= 2048;
2625+
return src0->ne[1] >= 1024;
25282626
return src0->ne[1] >= 8192;
25292627
}
25302628

0 commit comments

Comments
 (0)