Improve stability of DAG when using multiple compilers for the same language
This commit is contained in:
parent
5920d31b25
commit
ddeab9879e
@ -1246,6 +1246,10 @@ error(100, "Cannot propagate the variant '{0}' from the package: {1} because pac
|
|||||||
% 1. The same flag type is not set on this node
|
% 1. The same flag type is not set on this node
|
||||||
% 2. This node has the same compilers as the propagation source
|
% 2. This node has the same compilers as the propagation source
|
||||||
|
|
||||||
|
compiler_penalty(PackageNode, C-1) :-
|
||||||
|
C = #count { CompilerNode : node_compiler(PackageNode, CompilerNode) },
|
||||||
|
node_compiler(PackageNode, _).
|
||||||
|
|
||||||
node_compiler(node(X, Package), node(Y, Compiler)) :-
|
node_compiler(node(X, Package), node(Y, Compiler)) :-
|
||||||
attr("virtual_on_edge", node(X, Package), node(Y, Compiler), Language),
|
attr("virtual_on_edge", node(X, Package), node(Y, Compiler), Language),
|
||||||
attr("version", node(Y, Compiler), Version),
|
attr("version", node(Y, Compiler), Version),
|
||||||
@ -1683,7 +1687,7 @@ opt_criterion(50, "number of non-default variants (non-roots)").
|
|||||||
build_priority(PackageNode, Priority)
|
build_priority(PackageNode, Priority)
|
||||||
}.
|
}.
|
||||||
|
|
||||||
% Minimize the weights of the providers, i.e. use as much as
|
% Minimize the ids of the providers, i.e. use as much as
|
||||||
% possible the first providers
|
% possible the first providers
|
||||||
opt_criterion(48, "number of duplicate virtuals needed").
|
opt_criterion(48, "number of duplicate virtuals needed").
|
||||||
#minimize{ 0@248: #true }.
|
#minimize{ 0@248: #true }.
|
||||||
@ -1694,6 +1698,16 @@ opt_criterion(48, "number of duplicate virtuals needed").
|
|||||||
build_priority(ProviderNode, Priority)
|
build_priority(ProviderNode, Priority)
|
||||||
}.
|
}.
|
||||||
|
|
||||||
|
% Minimize the number of compilers used on nodes
|
||||||
|
opt_criterion(49, "minimize the number of compilers used on the same node").
|
||||||
|
#minimize{ 0@249: #true }.
|
||||||
|
#minimize{ 0@49: #true }.
|
||||||
|
#minimize{
|
||||||
|
Penalty@49+Priority,PackageNode
|
||||||
|
: compiler_penalty(PackageNode, Penalty),
|
||||||
|
build_priority(PackageNode, Priority)
|
||||||
|
}.
|
||||||
|
|
||||||
% Minimize the weights of the providers, i.e. use as much as
|
% Minimize the weights of the providers, i.e. use as much as
|
||||||
% possible the most preferred providers
|
% possible the most preferred providers
|
||||||
opt_criterion(45, "preferred providers (non-roots)").
|
opt_criterion(45, "preferred providers (non-roots)").
|
||||||
@ -1792,6 +1806,7 @@ opt_criterion(1, "edge wiring").
|
|||||||
depends_on(ParentNode, PackageNode)
|
depends_on(ParentNode, PackageNode)
|
||||||
}.
|
}.
|
||||||
|
|
||||||
|
|
||||||
#minimize{ 0@201: #true }.
|
#minimize{ 0@201: #true }.
|
||||||
#minimize{ 0@1: #true }.
|
#minimize{ 0@1: #true }.
|
||||||
#minimize{
|
#minimize{
|
||||||
|
@ -356,8 +356,7 @@ class IntelOneapiCompilers(IntelOneApiPackage, CompilerPackage):
|
|||||||
|
|
||||||
stdcxx_libs = ("-cxxlib",)
|
stdcxx_libs = ("-cxxlib",)
|
||||||
|
|
||||||
provides("c")
|
provides("c", "cxx")
|
||||||
provides("cxx")
|
|
||||||
provides("fortran")
|
provides("fortran")
|
||||||
|
|
||||||
def _standard_flag(self, *, language, standard):
|
def _standard_flag(self, *, language, standard):
|
||||||
|
Loading…
Reference in New Issue
Block a user